@@ -213,37 +213,26 @@ final class MobileWalletIntegrationTests: XCTestCase {
213213 try await TestHelpers . waitForVerifierSuccess ( transactionID: transaction. transactionId, timeoutSeconds: verifierPollingTimeout)
214214 }
215215
216- func testReceiveAndPresentEudiPidSdJwtAgainstDemoIssuer2AndVerifier2( ) async throws {
217- try await receiveAndPresentDemoCredential ( scenarioID: " eudi-pid-sdjwt " )
218- }
219-
220- func testReceiveAndPresentEudiPidMdocAgainstDemoIssuer2AndVerifier2( ) async throws {
221- try await receiveAndPresentDemoCredential ( scenarioID: " eudi-pid-mdoc " )
222- }
223-
224- func testPreviewAndSubmitEudiPidMdocAgainstDemoIssuer2AndVerifier2( ) async throws {
225- let scenario = try demoPresentationScenario ( " eudi-pid-mdoc " )
226- let walletId = " ios-demo-preview-submit- \( scenario. id) - \( UUID ( ) . uuidString) "
216+ func testPreviewAndSubmitFullFlowAgainstEudi( ) async throws {
217+ let walletId = " ios-eudi-preview-submit- \( UUID ( ) . uuidString) "
227218 await clearTestData ( walletId: walletId)
228219
229220 let wallet = try await makeWallet ( walletId: walletId)
230221 let bootstrapResult = try await wallet. bootstrap ( )
231222 let did = bootstrapResult. did
232223
233- let offer = try await DemoBackend . shared. createOffer ( scenario : scenario )
224+ let offer = try await EudiTestBackend . shared. generateOffer ( )
234225 let offerURL = try XCTUnwrap ( URL ( string: offer. offerUrl) )
235226 let credentialIDs = try await wallet. receive ( offer: offerURL)
236- XCTAssertFalse (
237- credentialIDs. isEmpty,
238- " Should receive \( scenario. displayName) from public demo issuer2 "
239- )
227+ XCTAssertFalse ( credentialIDs. isEmpty, " Should receive at least one EUDI credential " )
240228
241- let session = try await DemoBackend . shared. createVerifierSession ( scenario: scenario)
242- let presentationURL = try XCTUnwrap ( URL ( string: session. authorizationRequestUri) )
229+ let credentialId = await EudiTestBackend . shared. extractCredentialIdFromOfferUrl ( offerUrl: offer. offerUrl)
230+ let transaction = try await EudiTestBackend . shared. createVerifierTransaction ( credentialId: credentialId)
231+ let presentationURL = try XCTUnwrap ( URL ( string: transaction. authorizationRequestUri) )
243232 let preview = try await wallet. previewPresentation ( request: presentationURL)
244233 XCTAssertFalse (
245234 preview. credentialOptions. isEmpty,
246- " Should preview at least one matching credential for \( scenario . displayName ) : \( preview) "
235+ " Should preview at least one matching EUDI credential : \( preview) "
247236 )
248237 XCTAssertTrue (
249238 preview. credentialOptions. allSatisfy { credentialIDs. contains ( $0. credentialID) } ,
@@ -255,16 +244,28 @@ final class MobileWalletIntegrationTests: XCTestCase {
255244 selectedCredentialOptions: preview. credentialOptions. map ( \. selection) ,
256245 did: did
257246 )
258-
259247 XCTAssertTrue (
260248 result. success,
261- " public demo verifier2 stepwise presentation should succeed for \( scenario . displayName ) . Preview: \( preview) , Result: \( result) "
249+ " EUDI stepwise presentation should succeed. Preview: \( preview) , Result: \( result) "
262250 )
263251
264- try await DemoBackend . shared. waitForVerifierSuccess (
265- sessionID: session. sessionID,
266- timeoutSeconds: verifierPollingTimeout
267- )
252+ try await TestHelpers . waitForVerifierSuccess ( transactionID: transaction. transactionId, timeoutSeconds: verifierPollingTimeout)
253+ }
254+
255+ func testReceiveAndPresentEudiPidSdJwtAgainstDemoIssuer2AndVerifier2( ) async throws {
256+ try await receiveAndPresentDemoCredential ( scenarioID: " eudi-pid-sdjwt " )
257+ }
258+
259+ func testReceiveAndPresentEudiPidMdocAgainstDemoIssuer2AndVerifier2( ) async throws {
260+ try await receiveAndPresentDemoCredential ( scenarioID: " eudi-pid-mdoc " )
261+ }
262+
263+ func testPreviewAndSubmitEudiPidSdJwtAgainstDemoIssuer2AndVerifier2( ) async throws {
264+ try await previewAndSubmitDemoCredential ( scenarioID: " eudi-pid-sdjwt " )
265+ }
266+
267+ func testPreviewAndSubmitEudiPidMdocAgainstDemoIssuer2AndVerifier2( ) async throws {
268+ try await previewAndSubmitDemoCredential ( scenarioID: " eudi-pid-mdoc " )
268269 }
269270
270271 func testReceiveAndPresentIsoMdlAgainstDemoIssuer2AndVerifier2( ) async throws {
@@ -347,6 +348,52 @@ final class MobileWalletIntegrationTests: XCTestCase {
347348 )
348349 }
349350
351+ private func previewAndSubmitDemoCredential( scenarioID: String ) async throws {
352+ let scenario = try demoPresentationScenario ( scenarioID)
353+ let walletId = " ios-demo-preview-submit- \( scenario. id) - \( UUID ( ) . uuidString) "
354+ await clearTestData ( walletId: walletId)
355+
356+ let wallet = try await makeWallet ( walletId: walletId)
357+ let bootstrapResult = try await wallet. bootstrap ( )
358+ let did = bootstrapResult. did
359+
360+ let offer = try await DemoBackend . shared. createOffer ( scenario: scenario)
361+ let offerURL = try XCTUnwrap ( URL ( string: offer. offerUrl) )
362+ let credentialIDs = try await wallet. receive ( offer: offerURL)
363+ XCTAssertFalse (
364+ credentialIDs. isEmpty,
365+ " Should receive \( scenario. displayName) from public demo issuer2 "
366+ )
367+
368+ let session = try await DemoBackend . shared. createVerifierSession ( scenario: scenario)
369+ let presentationURL = try XCTUnwrap ( URL ( string: session. authorizationRequestUri) )
370+ let preview = try await wallet. previewPresentation ( request: presentationURL)
371+ XCTAssertFalse (
372+ preview. credentialOptions. isEmpty,
373+ " Should preview at least one matching credential for \( scenario. displayName) : \( preview) "
374+ )
375+ XCTAssertTrue (
376+ preview. credentialOptions. allSatisfy { credentialIDs. contains ( $0. credentialID) } ,
377+ " Preview should only offer credentials received in this test. Received: \( credentialIDs) , Preview: \( preview) "
378+ )
379+
380+ let result = try await wallet. submitPresentation (
381+ request: presentationURL,
382+ selectedCredentialOptions: preview. credentialOptions. map ( \. selection) ,
383+ did: did
384+ )
385+
386+ XCTAssertTrue (
387+ result. success,
388+ " public demo verifier2 stepwise presentation should succeed for \( scenario. displayName) . Preview: \( preview) , Result: \( result) "
389+ )
390+
391+ try await DemoBackend . shared. waitForVerifierSuccess (
392+ sessionID: session. sessionID,
393+ timeoutSeconds: verifierPollingTimeout
394+ )
395+ }
396+
350397 private func receiveCredentialFromDemoIssuer2( scenarioID: String ) async throws {
351398 let scenario = try demoScenario ( scenarioID)
352399 let walletId = " ios-demo-receive- \( scenario. id) - \( UUID ( ) . uuidString) "
0 commit comments