diff --git a/test/SpecHelper.hs b/test/SpecHelper.hs new file mode 100644 index 0000000..ca266e9 --- /dev/null +++ b/test/SpecHelper.hs @@ -0,0 +1,43 @@ +{-# LANGUAGE OverloadedStrings #-} +{-# LANGUAGE QuasiQuotes #-} +{-# LANGUAGE TemplateHaskell #-} +{-# LANGUAGE TypeFamilies #-} +{-# LANGUAGE MultiParamTypeClasses #-} +module SpecHelper + ( App(..) + , Widget + , resourcesApp + , module Test.Hspec + , module Yesod + , module Yesod.Auth + , module Yesod.Auth.OAuth2 + ) where + +import Test.Hspec + +import Data.Text (Text) + +import Yesod +import Yesod.Auth +import Yesod.Auth.OAuth2 + +data App = App + +mkYesod "App" [parseRoutes| / R GET |] + +instance Yesod App +instance YesodAuth App where + type AuthId App = Text + + authHttpManager = undefined + authPlugins = undefined + authenticate = undefined + loginDest = undefined + logoutDest = undefined + maybeAuthId = undefined + +instance RenderMessage App FormMessage where + renderMessage _ _ = defaultFormMessage + +getR :: Handler () +getR = return () diff --git a/test/Yesod/Auth/OAuth2Spec.hs b/test/Yesod/Auth/OAuth2Spec.hs index b0c5ca9..c3c1e93 100644 --- a/test/Yesod/Auth/OAuth2Spec.hs +++ b/test/Yesod/Auth/OAuth2Spec.hs @@ -3,13 +3,38 @@ module Yesod.Auth.OAuth2Spec , spec ) where -import Test.Hspec -import Yesod.Auth.OAuth2 +import SpecHelper main :: IO () main = hspec spec spec :: Spec spec = describe "authOAuth2" $ - it "works" $ + it "works" $ do + -- If I could somehow get this dispatch to execute, I could assert on the + -- response; at least enough to verify the state parameter that prompted + -- this track of work... + -- + -- Currently, the blocker is that apDispatch is: + -- + -- > HandlerT Auth (HandlerT App IO) TypedContent + -- + -- but I really need a: + -- + -- > HandlerT App IO TypedContent + -- + -- to be able to use runFakeHandler, as is sort of shown below: + -- + -- > let app = App + -- > plugin = authOAuth2 "example" undefined undefined + -- > + -- > x <- runFakeHandler + -- > M.empty undefined (getAuth app) $ + -- > apDispatch plugin "GET" ["callback"] + -- > + -- > liftIO $ print (x :: TypedContent) + -- + -- I basically need to peel one layer off the transformer stack, but I can't + -- find the right run-handler anywhere. + True `shouldBe` True diff --git a/yesod-auth-oauth2.cabal b/yesod-auth-oauth2.cabal index 8a1a333..005fe98 100644 --- a/yesod-auth-oauth2.cabal +++ b/yesod-auth-oauth2.cabal @@ -58,6 +58,9 @@ test-suite test build-depends: base , yesod-auth-oauth2 , hspec + , text + , yesod + , yesod-auth source-repository head type: git