@@ -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