@@ -7,14 +7,17 @@ import com.nimbusds.jwt.JWTClaimsSet
7
7
import com.nimbusds.jwt.SignedJWT
8
8
import com.nimbusds.oauth2.sdk.GrantType
9
9
import com.nimbusds.oauth2.sdk.id.Issuer
10
+ import io.kotest.matchers.maps.shouldContainAll
10
11
import io.kotest.matchers.shouldBe
11
12
import io.kotest.matchers.string.shouldStartWith
12
13
import java.net.URLEncoder
14
+ import java.time.Duration
13
15
import no.nav.security.mock.oauth2.extensions.verifySignatureAndIssuer
14
16
import no.nav.security.mock.oauth2.http.OAuth2HttpResponse
15
17
import no.nav.security.mock.oauth2.http.OAuth2TokenResponse
16
18
import no.nav.security.mock.oauth2.http.WellKnown
17
19
import no.nav.security.mock.oauth2.http.route
20
+ import no.nav.security.mock.oauth2.testutils.claims
18
21
import no.nav.security.mock.oauth2.testutils.get
19
22
import no.nav.security.mock.oauth2.testutils.post
20
23
import no.nav.security.mock.oauth2.token.DefaultOAuth2TokenCallback
@@ -388,6 +391,29 @@ class MockOAuth2ServerTest {
388
391
assertThat(jwtClaimsSet.getClaim(" someclaim" )).isEqualTo(" claimvalue" )
389
392
}
390
393
394
+ @Test
395
+ fun `anyToken should issue token with claims from input and be verifyable by servers keys` () {
396
+ val issuerId = " issuer1"
397
+ val token = server.anyToken(
398
+ server.issuerUrl(issuerId),
399
+ mutableMapOf (
400
+ " sub" to " yolo" ,
401
+ " aud" to listOf (" myapp" ),
402
+ " customInt" to 123 ,
403
+ " customList" to listOf (1 , 2 , 3 )
404
+ ),
405
+ Duration .ofSeconds(10 )
406
+ )
407
+ val jwkSet: JWKSet = retrieveJwks(server.jwksUrl(issuerId).toString())
408
+ token.verifySignatureAndIssuer(Issuer (server.issuerUrl(" issuer1" ).toString()), jwkSet)
409
+ token.claims shouldContainAll mutableMapOf (
410
+ " sub" to " yolo" ,
411
+ " aud" to listOf (" myapp" ),
412
+ " customInt" to 123 ,
413
+ " customList" to listOf (1 , 2 , 3 )
414
+ )
415
+ }
416
+
391
417
private fun retrieveJwks (jwksUri : String ): JWKSet {
392
418
return client.newCall(
393
419
Request .Builder ()
0 commit comments