Group configuration by component ownership
This commit is contained in:
parent
48a5b8a433
commit
67cc0cb802
1 changed files with 486 additions and 258 deletions
|
|
@ -31,7 +31,7 @@ import Data.Text (Text)
|
|||
import qualified Data.Text as T
|
||||
import qualified Data.Text.Encoding as TE
|
||||
import Data.Time.Clock (UTCTime, addUTCTime, getCurrentTime)
|
||||
import Nuthatch.Config (Config (..))
|
||||
import Nuthatch.Config (Config (..), OidcConfig (..))
|
||||
import Nuthatch.Oidc (OidcIdentity (..), verifyIdToken)
|
||||
import Nuthatch.Test.Config (testConfig)
|
||||
import Test.Tasty (TestTree, testGroup)
|
||||
|
|
@ -47,6 +47,9 @@ tests = testGroup "OIDC validation"
|
|||
testIdTokenTimeAndSerializationRejections
|
||||
]
|
||||
|
||||
oidcConfig :: OidcConfig
|
||||
oidcConfig = cfgOidc testConfig
|
||||
|
||||
data TestIdTokenClaims = TestIdTokenClaims
|
||||
{ testIdTokenRegistered :: ClaimsSet
|
||||
, testIdTokenNonce :: Text
|
||||
|
|
@ -98,7 +101,7 @@ testValidIdToken = do
|
|||
compact <- signTestIdToken key RS256
|
||||
(testIdClaims now "https://issuer.example" ["nuthatch"] "nonce")
|
||||
result <- verifyIdToken
|
||||
testConfig
|
||||
oidcConfig
|
||||
(JWKSet [key])
|
||||
now
|
||||
"nonce"
|
||||
|
|
@ -119,13 +122,13 @@ testConfiguredAudiences = do
|
|||
missingAuthorizedParty <- signTestIdToken key RS256
|
||||
(testIdClaims now "https://issuer.example" ["project", "nuthatch"] "nonce")
|
||||
result <- verifyIdToken
|
||||
testConfig { cfgOidcAdditionalAudiences = ["project"] }
|
||||
oidcConfig { cfgOidcAdditionalAudiences = ["project"] }
|
||||
(JWKSet [key])
|
||||
now
|
||||
"nonce"
|
||||
compact
|
||||
rejected <- verifyIdToken
|
||||
testConfig { cfgOidcAdditionalAudiences = ["project"] }
|
||||
oidcConfig { cfgOidcAdditionalAudiences = ["project"] }
|
||||
(JWKSet [key])
|
||||
now
|
||||
"nonce"
|
||||
|
|
@ -151,12 +154,12 @@ testIdTokenCryptographicRejections = do
|
|||
multipleAudience <- signTestIdToken key RS256
|
||||
(testIdClaims now "https://issuer.example" ["nuthatch", "other"] "nonce")
|
||||
let rejected =
|
||||
[ verifyIdToken testConfig (JWKSet [key]) now "other-nonce" valid
|
||||
, verifyIdToken testConfig (JWKSet [key]) now "nonce" wrongAlgorithm
|
||||
, verifyIdToken testConfig (JWKSet [key]) now "nonce" wrongIssuer
|
||||
, verifyIdToken testConfig (JWKSet [key]) now "nonce" wrongSignature
|
||||
, verifyIdToken testConfig (JWKSet [key]) now "nonce" wrongAudience
|
||||
, verifyIdToken testConfig (JWKSet [key]) now "nonce" multipleAudience
|
||||
[ verifyIdToken oidcConfig (JWKSet [key]) now "other-nonce" valid
|
||||
, verifyIdToken oidcConfig (JWKSet [key]) now "nonce" wrongAlgorithm
|
||||
, verifyIdToken oidcConfig (JWKSet [key]) now "nonce" wrongIssuer
|
||||
, verifyIdToken oidcConfig (JWKSet [key]) now "nonce" wrongSignature
|
||||
, verifyIdToken oidcConfig (JWKSet [key]) now "nonce" wrongAudience
|
||||
, verifyIdToken oidcConfig (JWKSet [key]) now "nonce" multipleAudience
|
||||
]
|
||||
results <- sequence rejected
|
||||
assertBool "every invalid cryptographic or binding case is rejected"
|
||||
|
|
@ -197,11 +200,11 @@ testIdTokenTimeAndSerializationRejections = do
|
|||
["nuthatch"]
|
||||
"nonce")
|
||||
results <- sequence
|
||||
[ verifyIdToken testConfig (JWKSet [key]) now "nonce" "not.compact"
|
||||
, verifyIdToken testConfig (JWKSet [key]) now "nonce" missingIssuedAt
|
||||
, verifyIdToken testConfig (JWKSet [key]) now "nonce" future
|
||||
, verifyIdToken testConfig (JWKSet [key]) now "nonce" expired
|
||||
, verifyIdToken testConfig (JWKSet [key]) now "nonce" overlong
|
||||
[ verifyIdToken oidcConfig (JWKSet [key]) now "nonce" "not.compact"
|
||||
, verifyIdToken oidcConfig (JWKSet [key]) now "nonce" missingIssuedAt
|
||||
, verifyIdToken oidcConfig (JWKSet [key]) now "nonce" future
|
||||
, verifyIdToken oidcConfig (JWKSet [key]) now "nonce" expired
|
||||
, verifyIdToken oidcConfig (JWKSet [key]) now "nonce" overlong
|
||||
]
|
||||
assertBool "every invalid serialization or time case is rejected"
|
||||
(all isLeft results)
|
||||
|
|
|
|||
Loading…
Reference in a new issue