hoauth2-providers-0.3.0: test/Network/OIDC/WellKnownSpec.hs
{-# LANGUAGE QuasiQuotes #-}
module Network.OIDC.WellKnownSpec where
import Data.Aeson qualified as Aeson
import Network.OIDC.WellKnown (OpenIDConfiguration (..))
import Test.Hspec
import URI.ByteString.QQ
spec :: Spec
spec = do
describe "parseJSON OpenIDConfiguration" $ do
it "parse openidConfiguration response" $ do
let response =
"{"
<> "\"issuer\": \"https://foo.com\","
<> "\"authorization_endpoint\": \"https://foo.com/auth\","
<> "\"token_endpoint\": \"https://foo.com/token\","
<> "\"userinfo_endpoint\": \"https://foo.com/userinfo\","
<> "\"jwks_uri\": \"https://foo.com/jwks\","
<> "\"device_authorization_endpoint\": \"https://foo.com/device-code\""
<> "}"
let expected =
OpenIDConfiguration
{ issuer = [uri|https://foo.com|]
, authorizationEndpoint = [uri|https://foo.com/auth|]
, tokenEndpoint = [uri|https://foo.com/token|]
, userinfoEndpoint = [uri|https://foo.com/userinfo|]
, jwksUri = [uri|https://foo.com/jwks|]
, deviceAuthorizationEndpoint = [uri|https://foo.com/device-code|]
}
Aeson.eitherDecode response `shouldBe` Right expected