Skip to content

Commit 5c9449c

Browse files
committed
test(wallet2): validate proofs in extended issuer fixture
1 parent a5f10fa commit 5c9449c

1 file changed

Lines changed: 22 additions & 8 deletions

File tree

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

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -338,6 +338,7 @@ class Wallet2ExtendedIntegrationTest {
338338
credentialEndpointHandlers = CredentialEndpointHandlers()
339339
)
340340
)
341+
val proofSupport = TestIssuerProofSupport(issuerBase, accessTokenKey)
341342
val session = DefaultSession(subject = "holder-isolated")
342343
runBlocking {
343344
preAuthRepo.save(
@@ -387,6 +388,14 @@ class Wallet2ExtendedIntegrationTest {
387388
)
388389
}
389390
get("/credential-offer") { call.respond(offer) }
391+
post("/nonce") {
392+
val nonce = proofSupport.issueNonce()
393+
call.response.header(HttpHeaders.CacheControl, "no-store")
394+
call.respond(buildJsonObject {
395+
put("c_nonce", nonce.nonce)
396+
put("c_nonce_expires_in", nonce.expiresInSeconds)
397+
})
398+
}
390399
post("/token") {
391400
val params = call.receiveParameters()
392401
val code = params["pre-authorized_code"] ?: return@post call.respond(
@@ -406,11 +415,12 @@ class Wallet2ExtendedIntegrationTest {
406415
if (tokenResponse !is AccessTokenResponseResult.Success) return@post call.respond(
407416
HttpStatusCode.InternalServerError, buildJsonObject { put("error", "server_error") }
408417
)
418+
val nonce = proofSupport.issueNonce()
409419
call.respond(buildJsonObject {
410420
put("access_token", tokenResponse.response.accessToken)
411421
put("token_type", "Bearer")
412-
put("c_nonce", "isolated-nonce")
413-
put("c_nonce_expires_in", 300)
422+
put("c_nonce", nonce.nonce)
423+
put("c_nonce_expires_in", nonce.expiresInSeconds)
414424
})
415425
}
416426
post("/credential") {
@@ -430,22 +440,26 @@ class Wallet2ExtendedIntegrationTest {
430440
if (credentialRequest !is CredentialRequestResult.Success) return@post call.respond(
431441
HttpStatusCode.BadRequest, buildJsonObject { put("error", "invalid_proof") }
432442
)
443+
val request = credentialRequest.request.withIssuer(issuerBase)
433444
val credentialResponse = provider.createCredentialResponse(
434-
request = credentialRequest.request.withIssuer(issuerBase),
445+
request = request,
435446
configuration = configuration,
436447
issuerKey = issuerKey,
437448
issuerId = issuerBase,
438449
credentialData = buildJsonObject {
439450
put("given_name", "Alice"); put("family_name", "Wonder")
440451
put("issuing_country", "DE")
441452
},
442-
selectiveDisclosure = null
443-
)
444-
if (credentialResponse !is CredentialResponseResult.Success) return@post call.respond(
445-
HttpStatusCode.InternalServerError, buildJsonObject { put("error", "server_error") }
453+
selectiveDisclosure = null,
454+
proofValidationContext = proofSupport.validationContext(request)
446455
)
456+
if (credentialResponse !is CredentialResponseResult.Success) {
457+
val failure = credentialResponse as CredentialResponseResult.Failure
458+
val httpResp = provider.writeCredentialError(request, failure.error)
459+
return@post call.respond(HttpStatusCode.fromValue(httpResp.status), httpResp.payload)
460+
}
447461
val httpResp = provider.writeCredentialResponse(
448-
credentialRequest.request.withIssuer(issuerBase), credentialResponse.response
462+
request, credentialResponse.response
449463
)
450464
call.respond(HttpStatusCode.fromValue(httpResp.status), httpResp.payload)
451465
}

0 commit comments

Comments
 (0)