Skip to content

Commit 6de6cd0

Browse files
committed
test(wallet2): validate proofs in verifier issuer fixture
1 parent 5c9449c commit 6de6cd0

1 file changed

Lines changed: 19 additions & 12 deletions

File tree

waltid-services/waltid-wallet-api2/src/test/kotlin/id/walt/wallet2/Wallet2IssuerVerifier2IntegrationTest.kt

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,7 @@ class Wallet2IssuerVerifier2IntegrationTest {
281281
credentialEndpointHandlers = CredentialEndpointHandlers()
282282
)
283283
)
284+
val proofSupport = TestIssuerProofSupport(issuerBase, accessTokenKey)
284285

285286
// Seed the pre-authorized code directly into the repository
286287
val session = DefaultSession(subject = "holder-${Uuid.random()}")
@@ -350,6 +351,14 @@ class Wallet2IssuerVerifier2IntegrationTest {
350351
get("/credential-offer") {
351352
call.respond(offer)
352353
}
354+
post("/nonce") {
355+
val nonce = proofSupport.issueNonce()
356+
call.response.header(HttpHeaders.CacheControl, "no-store")
357+
call.respond(buildJsonObject {
358+
put("c_nonce", nonce.nonce)
359+
put("c_nonce_expires_in", nonce.expiresInSeconds)
360+
})
361+
}
353362
post("/token") {
354363
val params = call.receiveParameters()
355364
val code = params["pre-authorized_code"]
@@ -378,11 +387,12 @@ class Wallet2IssuerVerifier2IntegrationTest {
378387
buildJsonObject { put("error", "server_error") }
379388
)
380389
}
390+
val nonce = proofSupport.issueNonce()
381391
call.respond(buildJsonObject {
382392
put("access_token", tokenResponse.response.accessToken)
383393
put("token_type", "Bearer")
384-
put("c_nonce", "test-nonce")
385-
put("c_nonce_expires_in", 300)
394+
put("c_nonce", nonce.nonce)
395+
put("c_nonce_expires_in", nonce.expiresInSeconds)
386396
})
387397
}
388398
post("/credential") {
@@ -425,26 +435,23 @@ class Wallet2IssuerVerifier2IntegrationTest {
425435
buildJsonObject { put("error", "invalid_proof") }
426436
)
427437
}
438+
val request = credentialRequestResult.request.withIssuer(issuerBase)
428439
val credentialResponse = provider.createCredentialResponse(
429-
request = credentialRequestResult.request.withIssuer(issuerBase),
440+
request = request,
430441
configuration = configuration,
431442
issuerKey = issuerKey,
432443
issuerId = issuerBase,
433444
credentialData = credentialData,
434-
selectiveDisclosure = selectiveDisclosure
445+
selectiveDisclosure = selectiveDisclosure,
446+
proofValidationContext = proofSupport.validationContext(request)
435447
)
436448
if (credentialResponse !is CredentialResponseResult.Success) {
437449
val failure = credentialResponse as CredentialResponseResult.Failure
438-
return@post call.respond(
439-
HttpStatusCode.InternalServerError,
440-
buildJsonObject {
441-
put("error", failure.error.error)
442-
put("error_description", failure.error.description ?: "no description")
443-
}
444-
)
450+
val httpResponse = provider.writeCredentialError(request, failure.error)
451+
return@post call.respond(HttpStatusCode.fromValue(httpResponse.status), httpResponse.payload)
445452
}
446453
val httpResponse = provider.writeCredentialResponse(
447-
credentialRequestResult.request.withIssuer(issuerBase),
454+
request,
448455
credentialResponse.response
449456
)
450457
call.respond(HttpStatusCode.fromValue(httpResponse.status), httpResponse.payload)

0 commit comments

Comments
 (0)