From 48de1813cdd721204d781e2371d67096cd6e169b Mon Sep 17 00:00:00 2001 From: Maycon Mello Date: Tue, 21 Jul 2026 11:40:13 -0300 Subject: [PATCH 1/3] fixing presentation issues for re-delegated credentials --- .../delegated-credential.json | 193 ++++++++++++++++++ .../delegatable-verification.test.ts | 88 ++++++++ .../wasm/src/services/credential/service.ts | 16 +- 3 files changed, 290 insertions(+), 7 deletions(-) create mode 100644 integration-tests/data/default-presentation-tests/delegated-credential.json create mode 100644 integration-tests/verification-flow/delegatable-verification.test.ts diff --git a/integration-tests/data/default-presentation-tests/delegated-credential.json b/integration-tests/data/default-presentation-tests/delegated-credential.json new file mode 100644 index 00000000..aafb7e4a --- /dev/null +++ b/integration-tests/data/default-presentation-tests/delegated-credential.json @@ -0,0 +1,193 @@ +{ + "delegationPolicyId": "data:application/json,%7B%22id%22%3A%22urn%3Auuid%3A87a2c001-6a90-4fb6-a27f-5ae673071bae%22%2C%22type%22%3A%22DelegationPolicy%22%2C%22ruleset%22%3A%7B%22roles%22%3A%5B%7B%22label%22%3A%22CFO%22%2C%22roleId%22%3A%22e752c45e-6e4e-4b4d-ab68-b920a1860670%22%2C%22attributes%22%3A%5B%22*%22%5D%2C%22parentRoleId%22%3Anull%2C%22capabilityGrants%22%3A%5B%7B%22capability%22%3A%22Authorized%20Actions%22%2C%22schema%22%3A%7B%22type%22%3A%22array%22%2C%22items%22%3A%7B%22enum%22%3A%5B%22purchase%3Aoffice_supplies%22%2C%22reorder%3Arecurring_items%22%2C%22request%3Aquote%22%2C%22submit%3Aorder%22%2C%22cancel%3Aorder%22%2C%22download%3Ainvoice%5C%22%22%5D%2C%22type%22%3A%22string%22%7D%2C%22minItems%22%3A1%2C%22uniqueItems%22%3Atrue%7D%7D%2C%7B%22capability%22%3A%22Authorized%20Relying%20Parties%22%2C%22schema%22%3A%7B%22type%22%3A%22array%22%2C%22items%22%3A%7B%22enum%22%3A%5B%22name%3AStockwell%22%2C%22did%3Adid%3Acheqd%3Atestnet%3Ae1ad16b4-7eca-42fd-a3ac-c5f23e76665c%22%5D%2C%22type%22%3A%22string%22%7D%2C%22minItems%22%3A1%2C%22uniqueItems%22%3Atrue%7D%7D%2C%7B%22capability%22%3A%22Product%20Categories%22%2C%22schema%22%3A%7B%22type%22%3A%22array%22%2C%22items%22%3A%7B%22enum%22%3A%5B%22office_supplies%22%2C%22it_peripherals%22%2C%22furniture%22%2C%22electronics%22%5D%2C%22type%22%3A%22string%22%7D%2C%22minItems%22%3A1%2C%22uniqueItems%22%3Atrue%7D%7D%2C%7B%22capability%22%3A%22Max%20Spend%22%2C%22schema%22%3A%7B%22type%22%3A%22integer%22%2C%22maximum%22%3A5000%7D%7D%5D%7D%2C%7B%22label%22%3A%22Office%20Manager%22%2C%22roleId%22%3A%224816542c-ffdd-41ba-98bd-bbdb9719f7b8%22%2C%22attributes%22%3A%5B%22*%22%5D%2C%22parentRoleId%22%3A%22e752c45e-6e4e-4b4d-ab68-b920a1860670%22%2C%22capabilityGrants%22%3A%5B%7B%22schema%22%3A%7B%22type%22%3A%22array%22%2C%22items%22%3A%7B%22enum%22%3A%5B%22purchase%3Aoffice_supplies%22%2C%22reorder%3Arecurring_items%22%2C%22request%3Aquote%22%2C%22submit%3Aorder%22%2C%22cancel%3Aorder%22%2C%22download%3Ainvoice%5C%22%22%5D%2C%22type%22%3A%22string%22%7D%2C%22minItems%22%3A1%2C%22uniqueItems%22%3Atrue%7D%2C%22capability%22%3A%22Authorized%20Actions%22%7D%2C%7B%22schema%22%3A%7B%22type%22%3A%22array%22%2C%22items%22%3A%7B%22enum%22%3A%5B%22name%3AStockwell%22%2C%22did%3Adid%3Acheqd%3Atestnet%3Ae1ad16b4-7eca-42fd-a3ac-c5f23e76665c%22%5D%2C%22type%22%3A%22string%22%7D%2C%22minItems%22%3A1%2C%22uniqueItems%22%3Atrue%7D%2C%22capability%22%3A%22Authorized%20Relying%20Parties%22%7D%2C%7B%22schema%22%3A%7B%22type%22%3A%22array%22%2C%22items%22%3A%7B%22enum%22%3A%5B%22office_supplies%22%2C%22it_peripherals%22%2C%22electronics%22%5D%2C%22type%22%3A%22string%22%7D%2C%22minItems%22%3A1%2C%22uniqueItems%22%3Atrue%7D%2C%22capability%22%3A%22Product%20Categories%22%7D%2C%7B%22schema%22%3A%7B%22type%22%3A%22integer%22%2C%22maximum%22%3A2000%7D%2C%22capability%22%3A%22Max%20Spend%22%7D%5D%7D%2C%7B%22label%22%3A%22AI%20Agent%22%2C%22roleId%22%3A%22f8e48738-9373-4019-9138-d63edc31a9d2%22%2C%22attributes%22%3A%5B%22*%22%5D%2C%22parentRoleId%22%3A%224816542c-ffdd-41ba-98bd-bbdb9719f7b8%22%2C%22capabilityGrants%22%3A%5B%7B%22schema%22%3A%7B%22type%22%3A%22array%22%2C%22items%22%3A%7B%22enum%22%3A%5B%22purchase%3Aoffice_supplies%22%2C%22reorder%3Arecurring_items%22%2C%22request%3Aquote%22%2C%22submit%3Aorder%22%2C%22cancel%3Aorder%22%2C%22download%3Ainvoice%5C%22%22%5D%2C%22type%22%3A%22string%22%7D%2C%22minItems%22%3A1%2C%22uniqueItems%22%3Atrue%7D%2C%22capability%22%3A%22Authorized%20Actions%22%7D%2C%7B%22schema%22%3A%7B%22type%22%3A%22array%22%2C%22items%22%3A%7B%22enum%22%3A%5B%22name%3AStockwell%22%2C%22did%3Adid%3Acheqd%3Atestnet%3Ae1ad16b4-7eca-42fd-a3ac-c5f23e76665c%22%5D%2C%22type%22%3A%22string%22%7D%2C%22minItems%22%3A1%2C%22uniqueItems%22%3Atrue%7D%2C%22capability%22%3A%22Authorized%20Relying%20Parties%22%7D%2C%7B%22schema%22%3A%7B%22type%22%3A%22array%22%2C%22items%22%3A%7B%22enum%22%3A%5B%22office_supplies%22%2C%22it_peripherals%22%5D%2C%22type%22%3A%22string%22%7D%2C%22minItems%22%3A1%2C%22uniqueItems%22%3Atrue%7D%2C%22capability%22%3A%22Product%20Categories%22%7D%2C%7B%22schema%22%3A%7B%22type%22%3A%22integer%22%2C%22maximum%22%3A2000%7D%2C%22capability%22%3A%22Max%20Spend%22%7D%5D%7D%5D%2C%22capabilities%22%3A%5B%7B%22name%22%3A%22Authorized%20Actions%22%2C%22schema%22%3A%7B%22type%22%3A%22array%22%2C%22items%22%3A%7B%22enum%22%3A%5B%22purchase%3Aoffice_supplies%22%2C%22reorder%3Arecurring_items%22%2C%22request%3Aquote%22%2C%22submit%3Aorder%22%2C%22cancel%3Aorder%22%2C%22download%3Ainvoice%5C%22%22%5D%2C%22type%22%3A%22string%22%7D%2C%22minItems%22%3A1%2C%22uniqueItems%22%3Atrue%7D%7D%2C%7B%22name%22%3A%22Authorized%20Relying%20Parties%22%2C%22schema%22%3A%7B%22type%22%3A%22array%22%2C%22items%22%3A%7B%22enum%22%3A%5B%22name%3AStockwell%22%2C%22did%3Adid%3Acheqd%3Atestnet%3Ae1ad16b4-7eca-42fd-a3ac-c5f23e76665c%22%5D%2C%22type%22%3A%22string%22%7D%2C%22minItems%22%3A1%2C%22uniqueItems%22%3Atrue%7D%7D%2C%7B%22name%22%3A%22Product%20Categories%22%2C%22schema%22%3A%7B%22type%22%3A%22array%22%2C%22items%22%3A%7B%22enum%22%3A%5B%22office_supplies%22%2C%22it_peripherals%22%2C%22furniture%22%2C%22electronics%22%5D%2C%22type%22%3A%22string%22%7D%2C%22minItems%22%3A1%2C%22uniqueItems%22%3Atrue%7D%7D%2C%7B%22name%22%3A%22Max%20Spend%22%2C%22schema%22%3A%7B%22type%22%3A%22integer%22%2C%22maximum%22%3A5000%7D%7D%5D%2C%22delegationTarget%22%3A%22single-credential%22%2C%22overallConstraints%22%3A%7B%22maxDelegationDepth%22%3A3%2C%22delegatedCredentialLifetime%22%3A%7B%22unit%22%3A%22years%22%2C%22value%22%3A1%7D%7D%7D%2C%22createdAt%22%3A%222026-06-19%22%7D", + "delegationPolicyDigest": "aee30e7e6ae905704ab5d2913ce8e774ddaf3b4cc8ad450caef358af87c7d775", + "@context": [ + "https://www.w3.org/2018/credentials/v1", + "https://ld.truvera.io/credentials/extensions-v1", + "https://ld.truvera.io/security/bbs23/v1", + "https://ld.truvera.io/credentials/delegation", + { + "PurchasingAuthority": "dk:PurchasingAuthority", + "dk": "https://ld.truvera.io/credentials#", + "employeeID": "dk:employeeID", + "jobRole": "dk:jobRole", + "onBehalfOf": "dk:onBehalfOf" + } + ], + "id": "urn:uuid:15f9d8eb-e684-45ee-bcd6-bdcbcad97a3a", + "delegationRoleId": "f8e48738-9373-4019-9138-d63edc31a9d2", + "rootCredentialId": "https://creds-testnet.truvera.io/1827550559454ef5d32c21ad4a1c5fb6b90beccfbc057a1263e46a9711ba4181", + "type": [ + "VerifiableCredential", + "PurchasingAuthority" + ], + "issuer": { + "id": "did:key:z6MkgR93FdicvoPTnvZ8z9RHVfEWCNrpaHEGmYSJ3pyFdiyk", + "name": "CFO" + }, + "issuanceDate": "2026-07-21T12:03:58.360Z", + "credentialSubject": { + "id": "did:key:z6MkgR93FdicvoPTnvZ8z9RHVfEWCNrpaHEGmYSJ3pyFdiyk", + "jobRole": "CFO", + "employeeID": "AG12345", + "onBehalfOf": "Quotient" + }, + "credentialSchema": { + "id": "https://schema.truvera.io/PurchasingAuthority-V4-1781869267904.json", + "type": "JsonSchemaValidator2018", + "details": "{\"jsonSchema\":{\"$id\":\"https://schema.truvera.io/PurchasingAuthority-V4-1781869267904.json\",\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"additionalProperties\":true,\"description\":\"Credential to confirm purchasing authority for Quotient employees.\",\"name\":\"Purchasing Authority\",\"properties\":{\"@context\":{\"type\":\"string\"},\"credentialSchema\":{\"properties\":{\"details\":{\"type\":\"string\"},\"id\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"version\":{\"type\":\"string\"}},\"type\":\"object\"},\"credentialStatus\":{\"properties\":{\"id\":{\"type\":\"string\"},\"revocationCheck\":{\"type\":\"string\"},\"revocationId\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"}},\"type\":\"object\"},\"credentialSubject\":{\"properties\":{\"employeeID\":{\"description\":\"\",\"title\":\"Employee ID\",\"type\":\"string\"},\"id\":{\"description\":\"A unique identifier of the recipient. Example: DID, email address, national ID number, employee ID, student ID etc.\",\"title\":\"ID\",\"type\":\"string\"},\"jobRole\":{\"title\":\"Job Role\",\"type\":\"string\"},\"onBehalfOf\":{\"title\":\"On Behalf Of\",\"type\":\"string\"}},\"required\":[],\"type\":\"object\"},\"cryptoVersion\":{\"type\":\"string\"},\"delegationPolicyId\":{\"type\":\"string\"},\"delegationRoleId\":{\"type\":\"string\"},\"id\":{\"type\":\"string\"},\"issuanceDate\":{\"format\":\"date-time\",\"type\":\"string\"},\"issuer\":{\"properties\":{\"id\":{\"type\":\"string\"},\"logo\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"}},\"type\":\"object\"},\"name\":{\"type\":\"string\"},\"proof\":{\"properties\":{\"@context\":{\"items\":[{\"properties\":{\"proof\":{\"properties\":{\"@container\":{\"type\":\"string\"},\"@id\":{\"type\":\"string\"},\"@type\":{\"type\":\"string\"}},\"type\":\"object\"},\"sec\":{\"type\":\"string\"}},\"type\":\"object\"},{\"type\":\"string\"}],\"type\":\"array\"},\"created\":{\"format\":\"date-time\",\"type\":\"string\"},\"proofPurpose\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"verificationMethod\":{\"type\":\"string\"}},\"type\":\"object\"},\"type\":{\"type\":\"string\"}},\"type\":\"object\"},\"parsingOptions\":{\"defaultDecimalPlaces\":4,\"defaultMinimumDate\":-17592186044415,\"defaultMinimumInteger\":-4294967295,\"useDefaults\":true}}", + "version": "0.4.0" + }, + "proof": { + "type": "Ed25519Signature2018", + "created": "2026-07-21T12:03:58Z", + "verificationMethod": "did:key:z6MkgR93FdicvoPTnvZ8z9RHVfEWCNrpaHEGmYSJ3pyFdiyk#z6MkgR93FdicvoPTnvZ8z9RHVfEWCNrpaHEGmYSJ3pyFdiyk", + "proofPurpose": "assertionMethod", + "jws": "eyJhbGciOiJFZERTQSIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19..RpPiJQEJP6ivagnDWUNiMBFhhnS5-bEVKz4ONawfH6NV-SPyksbbxytY6lCpp3LVMzxBrcXJwDYaHACOunaXDA" + }, + "formattedData": { + "credential": { + "delegationPolicyId": "data:application/json,%7B%22id%22%3A%22urn%3Auuid%3A87a2c001-6a90-4fb6-a27f-5ae673071bae%22%2C%22type%22%3A%22DelegationPolicy%22%2C%22ruleset%22%3A%7B%22roles%22%3A%5B%7B%22label%22%3A%22CFO%22%2C%22roleId%22%3A%22e752c45e-6e4e-4b4d-ab68-b920a1860670%22%2C%22attributes%22%3A%5B%22*%22%5D%2C%22parentRoleId%22%3Anull%2C%22capabilityGrants%22%3A%5B%7B%22capability%22%3A%22Authorized%20Actions%22%2C%22schema%22%3A%7B%22type%22%3A%22array%22%2C%22items%22%3A%7B%22enum%22%3A%5B%22purchase%3Aoffice_supplies%22%2C%22reorder%3Arecurring_items%22%2C%22request%3Aquote%22%2C%22submit%3Aorder%22%2C%22cancel%3Aorder%22%2C%22download%3Ainvoice%5C%22%22%5D%2C%22type%22%3A%22string%22%7D%2C%22minItems%22%3A1%2C%22uniqueItems%22%3Atrue%7D%7D%2C%7B%22capability%22%3A%22Authorized%20Relying%20Parties%22%2C%22schema%22%3A%7B%22type%22%3A%22array%22%2C%22items%22%3A%7B%22enum%22%3A%5B%22name%3AStockwell%22%2C%22did%3Adid%3Acheqd%3Atestnet%3Ae1ad16b4-7eca-42fd-a3ac-c5f23e76665c%22%5D%2C%22type%22%3A%22string%22%7D%2C%22minItems%22%3A1%2C%22uniqueItems%22%3Atrue%7D%7D%2C%7B%22capability%22%3A%22Product%20Categories%22%2C%22schema%22%3A%7B%22type%22%3A%22array%22%2C%22items%22%3A%7B%22enum%22%3A%5B%22office_supplies%22%2C%22it_peripherals%22%2C%22furniture%22%2C%22electronics%22%5D%2C%22type%22%3A%22string%22%7D%2C%22minItems%22%3A1%2C%22uniqueItems%22%3Atrue%7D%7D%2C%7B%22capability%22%3A%22Max%20Spend%22%2C%22schema%22%3A%7B%22type%22%3A%22integer%22%2C%22maximum%22%3A5000%7D%7D%5D%7D%2C%7B%22label%22%3A%22Office%20Manager%22%2C%22roleId%22%3A%224816542c-ffdd-41ba-98bd-bbdb9719f7b8%22%2C%22attributes%22%3A%5B%22*%22%5D%2C%22parentRoleId%22%3A%22e752c45e-6e4e-4b4d-ab68-b920a1860670%22%2C%22capabilityGrants%22%3A%5B%7B%22schema%22%3A%7B%22type%22%3A%22array%22%2C%22items%22%3A%7B%22enum%22%3A%5B%22purchase%3Aoffice_supplies%22%2C%22reorder%3Arecurring_items%22%2C%22request%3Aquote%22%2C%22submit%3Aorder%22%2C%22cancel%3Aorder%22%2C%22download%3Ainvoice%5C%22%22%5D%2C%22type%22%3A%22string%22%7D%2C%22minItems%22%3A1%2C%22uniqueItems%22%3Atrue%7D%2C%22capability%22%3A%22Authorized%20Actions%22%7D%2C%7B%22schema%22%3A%7B%22type%22%3A%22array%22%2C%22items%22%3A%7B%22enum%22%3A%5B%22name%3AStockwell%22%2C%22did%3Adid%3Acheqd%3Atestnet%3Ae1ad16b4-7eca-42fd-a3ac-c5f23e76665c%22%5D%2C%22type%22%3A%22string%22%7D%2C%22minItems%22%3A1%2C%22uniqueItems%22%3Atrue%7D%2C%22capability%22%3A%22Authorized%20Relying%20Parties%22%7D%2C%7B%22schema%22%3A%7B%22type%22%3A%22array%22%2C%22items%22%3A%7B%22enum%22%3A%5B%22office_supplies%22%2C%22it_peripherals%22%2C%22electronics%22%5D%2C%22type%22%3A%22string%22%7D%2C%22minItems%22%3A1%2C%22uniqueItems%22%3Atrue%7D%2C%22capability%22%3A%22Product%20Categories%22%7D%2C%7B%22schema%22%3A%7B%22type%22%3A%22integer%22%2C%22maximum%22%3A2000%7D%2C%22capability%22%3A%22Max%20Spend%22%7D%5D%7D%2C%7B%22label%22%3A%22AI%20Agent%22%2C%22roleId%22%3A%22f8e48738-9373-4019-9138-d63edc31a9d2%22%2C%22attributes%22%3A%5B%22*%22%5D%2C%22parentRoleId%22%3A%224816542c-ffdd-41ba-98bd-bbdb9719f7b8%22%2C%22capabilityGrants%22%3A%5B%7B%22schema%22%3A%7B%22type%22%3A%22array%22%2C%22items%22%3A%7B%22enum%22%3A%5B%22purchase%3Aoffice_supplies%22%2C%22reorder%3Arecurring_items%22%2C%22request%3Aquote%22%2C%22submit%3Aorder%22%2C%22cancel%3Aorder%22%2C%22download%3Ainvoice%5C%22%22%5D%2C%22type%22%3A%22string%22%7D%2C%22minItems%22%3A1%2C%22uniqueItems%22%3Atrue%7D%2C%22capability%22%3A%22Authorized%20Actions%22%7D%2C%7B%22schema%22%3A%7B%22type%22%3A%22array%22%2C%22items%22%3A%7B%22enum%22%3A%5B%22name%3AStockwell%22%2C%22did%3Adid%3Acheqd%3Atestnet%3Ae1ad16b4-7eca-42fd-a3ac-c5f23e76665c%22%5D%2C%22type%22%3A%22string%22%7D%2C%22minItems%22%3A1%2C%22uniqueItems%22%3Atrue%7D%2C%22capability%22%3A%22Authorized%20Relying%20Parties%22%7D%2C%7B%22schema%22%3A%7B%22type%22%3A%22array%22%2C%22items%22%3A%7B%22enum%22%3A%5B%22office_supplies%22%2C%22it_peripherals%22%5D%2C%22type%22%3A%22string%22%7D%2C%22minItems%22%3A1%2C%22uniqueItems%22%3Atrue%7D%2C%22capability%22%3A%22Product%20Categories%22%7D%2C%7B%22schema%22%3A%7B%22type%22%3A%22integer%22%2C%22maximum%22%3A2000%7D%2C%22capability%22%3A%22Max%20Spend%22%7D%5D%7D%5D%2C%22capabilities%22%3A%5B%7B%22name%22%3A%22Authorized%20Actions%22%2C%22schema%22%3A%7B%22type%22%3A%22array%22%2C%22items%22%3A%7B%22enum%22%3A%5B%22purchase%3Aoffice_supplies%22%2C%22reorder%3Arecurring_items%22%2C%22request%3Aquote%22%2C%22submit%3Aorder%22%2C%22cancel%3Aorder%22%2C%22download%3Ainvoice%5C%22%22%5D%2C%22type%22%3A%22string%22%7D%2C%22minItems%22%3A1%2C%22uniqueItems%22%3Atrue%7D%7D%2C%7B%22name%22%3A%22Authorized%20Relying%20Parties%22%2C%22schema%22%3A%7B%22type%22%3A%22array%22%2C%22items%22%3A%7B%22enum%22%3A%5B%22name%3AStockwell%22%2C%22did%3Adid%3Acheqd%3Atestnet%3Ae1ad16b4-7eca-42fd-a3ac-c5f23e76665c%22%5D%2C%22type%22%3A%22string%22%7D%2C%22minItems%22%3A1%2C%22uniqueItems%22%3Atrue%7D%7D%2C%7B%22name%22%3A%22Product%20Categories%22%2C%22schema%22%3A%7B%22type%22%3A%22array%22%2C%22items%22%3A%7B%22enum%22%3A%5B%22office_supplies%22%2C%22it_peripherals%22%2C%22furniture%22%2C%22electronics%22%5D%2C%22type%22%3A%22string%22%7D%2C%22minItems%22%3A1%2C%22uniqueItems%22%3Atrue%7D%7D%2C%7B%22name%22%3A%22Max%20Spend%22%2C%22schema%22%3A%7B%22type%22%3A%22integer%22%2C%22maximum%22%3A5000%7D%7D%5D%2C%22delegationTarget%22%3A%22single-credential%22%2C%22overallConstraints%22%3A%7B%22maxDelegationDepth%22%3A3%2C%22delegatedCredentialLifetime%22%3A%7B%22unit%22%3A%22years%22%2C%22value%22%3A1%7D%7D%7D%2C%22createdAt%22%3A%222026-06-19%22%7D", + "delegationPolicyDigest": "aee30e7e6ae905704ab5d2913ce8e774ddaf3b4cc8ad450caef358af87c7d775", + "@context": [ + "https://www.w3.org/2018/credentials/v1", + "https://ld.truvera.io/credentials/extensions-v1", + "https://ld.truvera.io/security/bbs23/v1", + "https://ld.truvera.io/credentials/delegation", + { + "PurchasingAuthority": "dk:PurchasingAuthority", + "dk": "https://ld.truvera.io/credentials#", + "employeeID": "dk:employeeID", + "jobRole": "dk:jobRole", + "onBehalfOf": "dk:onBehalfOf" + } + ], + "id": "urn:uuid:15f9d8eb-e684-45ee-bcd6-bdcbcad97a3a", + "delegationRoleId": "f8e48738-9373-4019-9138-d63edc31a9d2", + "rootCredentialId": "https://creds-testnet.truvera.io/1827550559454ef5d32c21ad4a1c5fb6b90beccfbc057a1263e46a9711ba4181", + "type": [ + "VerifiableCredential", + "PurchasingAuthority" + ], + "issuer": { + "id": "did:key:z6MkgR93FdicvoPTnvZ8z9RHVfEWCNrpaHEGmYSJ3pyFdiyk", + "name": "CFO" + }, + "issuanceDate": "2026-07-21T12:03:58.360Z", + "credentialSubject": { + "id": "did:key:z6MkgR93FdicvoPTnvZ8z9RHVfEWCNrpaHEGmYSJ3pyFdiyk", + "jobRole": "CFO", + "employeeID": "AG12345", + "onBehalfOf": "Quotient" + }, + "credentialSchema": { + "id": "https://schema.truvera.io/PurchasingAuthority-V4-1781869267904.json", + "type": "JsonSchemaValidator2018", + "details": "{\"jsonSchema\":{\"$id\":\"https://schema.truvera.io/PurchasingAuthority-V4-1781869267904.json\",\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"additionalProperties\":true,\"description\":\"Credential to confirm purchasing authority for Quotient employees.\",\"name\":\"Purchasing Authority\",\"properties\":{\"@context\":{\"type\":\"string\"},\"credentialSchema\":{\"properties\":{\"details\":{\"type\":\"string\"},\"id\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"version\":{\"type\":\"string\"}},\"type\":\"object\"},\"credentialStatus\":{\"properties\":{\"id\":{\"type\":\"string\"},\"revocationCheck\":{\"type\":\"string\"},\"revocationId\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"}},\"type\":\"object\"},\"credentialSubject\":{\"properties\":{\"employeeID\":{\"description\":\"\",\"title\":\"Employee ID\",\"type\":\"string\"},\"id\":{\"description\":\"A unique identifier of the recipient. Example: DID, email address, national ID number, employee ID, student ID etc.\",\"title\":\"ID\",\"type\":\"string\"},\"jobRole\":{\"title\":\"Job Role\",\"type\":\"string\"},\"onBehalfOf\":{\"title\":\"On Behalf Of\",\"type\":\"string\"}},\"required\":[],\"type\":\"object\"},\"cryptoVersion\":{\"type\":\"string\"},\"delegationPolicyId\":{\"type\":\"string\"},\"delegationRoleId\":{\"type\":\"string\"},\"id\":{\"type\":\"string\"},\"issuanceDate\":{\"format\":\"date-time\",\"type\":\"string\"},\"issuer\":{\"properties\":{\"id\":{\"type\":\"string\"},\"logo\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"}},\"type\":\"object\"},\"name\":{\"type\":\"string\"},\"proof\":{\"properties\":{\"@context\":{\"items\":[{\"properties\":{\"proof\":{\"properties\":{\"@container\":{\"type\":\"string\"},\"@id\":{\"type\":\"string\"},\"@type\":{\"type\":\"string\"}},\"type\":\"object\"},\"sec\":{\"type\":\"string\"}},\"type\":\"object\"},{\"type\":\"string\"}],\"type\":\"array\"},\"created\":{\"format\":\"date-time\",\"type\":\"string\"},\"proofPurpose\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"verificationMethod\":{\"type\":\"string\"}},\"type\":\"object\"},\"type\":{\"type\":\"string\"}},\"type\":\"object\"},\"parsingOptions\":{\"defaultDecimalPlaces\":4,\"defaultMinimumDate\":-17592186044415,\"defaultMinimumInteger\":-4294967295,\"useDefaults\":true}}", + "version": "0.4.0" + }, + "proof": { + "type": "Ed25519Signature2018", + "created": "2026-07-21T12:03:58Z", + "verificationMethod": "did:key:z6MkgR93FdicvoPTnvZ8z9RHVfEWCNrpaHEGmYSJ3pyFdiyk#z6MkgR93FdicvoPTnvZ8z9RHVfEWCNrpaHEGmYSJ3pyFdiyk", + "proofPurpose": "assertionMethod", + "jws": "eyJhbGciOiJFZERTQSIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19..RpPiJQEJP6ivagnDWUNiMBFhhnS5-bEVKz4ONawfH6NV-SPyksbbxytY6lCpp3LVMzxBrcXJwDYaHACOunaXDA" + } + }, + "delegationPolicyId": "data:application/json,%7B%22id%22%3A%22urn%3Auuid%3A87a2c001-6a90-4fb6-a27f-5ae673071bae%22%2C%22type%22%3A%22DelegationPolicy%22%2C%22ruleset%22%3A%7B%22roles%22%3A%5B%7B%22label%22%3A%22CFO%22%2C%22roleId%22%3A%22e752c45e-6e4e-4b4d-ab68-b920a1860670%22%2C%22attributes%22%3A%5B%22*%22%5D%2C%22parentRoleId%22%3Anull%2C%22capabilityGrants%22%3A%5B%7B%22capability%22%3A%22Authorized%20Actions%22%2C%22schema%22%3A%7B%22type%22%3A%22array%22%2C%22items%22%3A%7B%22enum%22%3A%5B%22purchase%3Aoffice_supplies%22%2C%22reorder%3Arecurring_items%22%2C%22request%3Aquote%22%2C%22submit%3Aorder%22%2C%22cancel%3Aorder%22%2C%22download%3Ainvoice%5C%22%22%5D%2C%22type%22%3A%22string%22%7D%2C%22minItems%22%3A1%2C%22uniqueItems%22%3Atrue%7D%7D%2C%7B%22capability%22%3A%22Authorized%20Relying%20Parties%22%2C%22schema%22%3A%7B%22type%22%3A%22array%22%2C%22items%22%3A%7B%22enum%22%3A%5B%22name%3AStockwell%22%2C%22did%3Adid%3Acheqd%3Atestnet%3Ae1ad16b4-7eca-42fd-a3ac-c5f23e76665c%22%5D%2C%22type%22%3A%22string%22%7D%2C%22minItems%22%3A1%2C%22uniqueItems%22%3Atrue%7D%7D%2C%7B%22capability%22%3A%22Product%20Categories%22%2C%22schema%22%3A%7B%22type%22%3A%22array%22%2C%22items%22%3A%7B%22enum%22%3A%5B%22office_supplies%22%2C%22it_peripherals%22%2C%22furniture%22%2C%22electronics%22%5D%2C%22type%22%3A%22string%22%7D%2C%22minItems%22%3A1%2C%22uniqueItems%22%3Atrue%7D%7D%2C%7B%22capability%22%3A%22Max%20Spend%22%2C%22schema%22%3A%7B%22type%22%3A%22integer%22%2C%22maximum%22%3A5000%7D%7D%5D%7D%2C%7B%22label%22%3A%22Office%20Manager%22%2C%22roleId%22%3A%224816542c-ffdd-41ba-98bd-bbdb9719f7b8%22%2C%22attributes%22%3A%5B%22*%22%5D%2C%22parentRoleId%22%3A%22e752c45e-6e4e-4b4d-ab68-b920a1860670%22%2C%22capabilityGrants%22%3A%5B%7B%22schema%22%3A%7B%22type%22%3A%22array%22%2C%22items%22%3A%7B%22enum%22%3A%5B%22purchase%3Aoffice_supplies%22%2C%22reorder%3Arecurring_items%22%2C%22request%3Aquote%22%2C%22submit%3Aorder%22%2C%22cancel%3Aorder%22%2C%22download%3Ainvoice%5C%22%22%5D%2C%22type%22%3A%22string%22%7D%2C%22minItems%22%3A1%2C%22uniqueItems%22%3Atrue%7D%2C%22capability%22%3A%22Authorized%20Actions%22%7D%2C%7B%22schema%22%3A%7B%22type%22%3A%22array%22%2C%22items%22%3A%7B%22enum%22%3A%5B%22name%3AStockwell%22%2C%22did%3Adid%3Acheqd%3Atestnet%3Ae1ad16b4-7eca-42fd-a3ac-c5f23e76665c%22%5D%2C%22type%22%3A%22string%22%7D%2C%22minItems%22%3A1%2C%22uniqueItems%22%3Atrue%7D%2C%22capability%22%3A%22Authorized%20Relying%20Parties%22%7D%2C%7B%22schema%22%3A%7B%22type%22%3A%22array%22%2C%22items%22%3A%7B%22enum%22%3A%5B%22office_supplies%22%2C%22it_peripherals%22%2C%22electronics%22%5D%2C%22type%22%3A%22string%22%7D%2C%22minItems%22%3A1%2C%22uniqueItems%22%3Atrue%7D%2C%22capability%22%3A%22Product%20Categories%22%7D%2C%7B%22schema%22%3A%7B%22type%22%3A%22integer%22%2C%22maximum%22%3A2000%7D%2C%22capability%22%3A%22Max%20Spend%22%7D%5D%7D%2C%7B%22label%22%3A%22AI%20Agent%22%2C%22roleId%22%3A%22f8e48738-9373-4019-9138-d63edc31a9d2%22%2C%22attributes%22%3A%5B%22*%22%5D%2C%22parentRoleId%22%3A%224816542c-ffdd-41ba-98bd-bbdb9719f7b8%22%2C%22capabilityGrants%22%3A%5B%7B%22schema%22%3A%7B%22type%22%3A%22array%22%2C%22items%22%3A%7B%22enum%22%3A%5B%22purchase%3Aoffice_supplies%22%2C%22reorder%3Arecurring_items%22%2C%22request%3Aquote%22%2C%22submit%3Aorder%22%2C%22cancel%3Aorder%22%2C%22download%3Ainvoice%5C%22%22%5D%2C%22type%22%3A%22string%22%7D%2C%22minItems%22%3A1%2C%22uniqueItems%22%3Atrue%7D%2C%22capability%22%3A%22Authorized%20Actions%22%7D%2C%7B%22schema%22%3A%7B%22type%22%3A%22array%22%2C%22items%22%3A%7B%22enum%22%3A%5B%22name%3AStockwell%22%2C%22did%3Adid%3Acheqd%3Atestnet%3Ae1ad16b4-7eca-42fd-a3ac-c5f23e76665c%22%5D%2C%22type%22%3A%22string%22%7D%2C%22minItems%22%3A1%2C%22uniqueItems%22%3Atrue%7D%2C%22capability%22%3A%22Authorized%20Relying%20Parties%22%7D%2C%7B%22schema%22%3A%7B%22type%22%3A%22array%22%2C%22items%22%3A%7B%22enum%22%3A%5B%22office_supplies%22%2C%22it_peripherals%22%5D%2C%22type%22%3A%22string%22%7D%2C%22minItems%22%3A1%2C%22uniqueItems%22%3Atrue%7D%2C%22capability%22%3A%22Product%20Categories%22%7D%2C%7B%22schema%22%3A%7B%22type%22%3A%22integer%22%2C%22maximum%22%3A2000%7D%2C%22capability%22%3A%22Max%20Spend%22%7D%5D%7D%5D%2C%22capabilities%22%3A%5B%7B%22name%22%3A%22Authorized%20Actions%22%2C%22schema%22%3A%7B%22type%22%3A%22array%22%2C%22items%22%3A%7B%22enum%22%3A%5B%22purchase%3Aoffice_supplies%22%2C%22reorder%3Arecurring_items%22%2C%22request%3Aquote%22%2C%22submit%3Aorder%22%2C%22cancel%3Aorder%22%2C%22download%3Ainvoice%5C%22%22%5D%2C%22type%22%3A%22string%22%7D%2C%22minItems%22%3A1%2C%22uniqueItems%22%3Atrue%7D%7D%2C%7B%22name%22%3A%22Authorized%20Relying%20Parties%22%2C%22schema%22%3A%7B%22type%22%3A%22array%22%2C%22items%22%3A%7B%22enum%22%3A%5B%22name%3AStockwell%22%2C%22did%3Adid%3Acheqd%3Atestnet%3Ae1ad16b4-7eca-42fd-a3ac-c5f23e76665c%22%5D%2C%22type%22%3A%22string%22%7D%2C%22minItems%22%3A1%2C%22uniqueItems%22%3Atrue%7D%7D%2C%7B%22name%22%3A%22Product%20Categories%22%2C%22schema%22%3A%7B%22type%22%3A%22array%22%2C%22items%22%3A%7B%22enum%22%3A%5B%22office_supplies%22%2C%22it_peripherals%22%2C%22furniture%22%2C%22electronics%22%5D%2C%22type%22%3A%22string%22%7D%2C%22minItems%22%3A1%2C%22uniqueItems%22%3Atrue%7D%7D%2C%7B%22name%22%3A%22Max%20Spend%22%2C%22schema%22%3A%7B%22type%22%3A%22integer%22%2C%22maximum%22%3A5000%7D%7D%5D%2C%22delegationTarget%22%3A%22single-credential%22%2C%22overallConstraints%22%3A%7B%22maxDelegationDepth%22%3A3%2C%22delegatedCredentialLifetime%22%3A%7B%22unit%22%3A%22years%22%2C%22value%22%3A1%7D%7D%7D%2C%22createdAt%22%3A%222026-06-19%22%7D", + "delegationPolicyDigest": "aee30e7e6ae905704ab5d2913ce8e774ddaf3b4cc8ad450caef358af87c7d775", + "@context": [ + "https://www.w3.org/2018/credentials/v1", + "https://ld.truvera.io/credentials/extensions-v1", + "https://ld.truvera.io/security/bbs23/v1", + "https://ld.truvera.io/credentials/delegation", + { + "PurchasingAuthority": "dk:PurchasingAuthority", + "dk": "https://ld.truvera.io/credentials#", + "employeeID": "dk:employeeID", + "jobRole": "dk:jobRole", + "onBehalfOf": "dk:onBehalfOf" + } + ], + "id": "urn:uuid:15f9d8eb-e684-45ee-bcd6-bdcbcad97a3a", + "delegationRoleId": "f8e48738-9373-4019-9138-d63edc31a9d2", + "rootCredentialId": "https://creds-testnet.truvera.io/1827550559454ef5d32c21ad4a1c5fb6b90beccfbc057a1263e46a9711ba4181", + "type": [ + "VerifiableCredential", + "PurchasingAuthority" + ], + "issuer": { + "id": "did:key:z6MkgR93FdicvoPTnvZ8z9RHVfEWCNrpaHEGmYSJ3pyFdiyk", + "name": "CFO" + }, + "issuanceDate": "2026-07-21T15:03:58.360Z", + "credentialSubject": { + "id": "did:key:z6MkgR93FdicvoPTnvZ8z9RHVfEWCNrpaHEGmYSJ3pyFdiyk", + "jobRole": "CFO", + "employeeID": "AG12345", + "onBehalfOf": "Quotient" + }, + "credentialSchema": { + "id": "https://schema.truvera.io/PurchasingAuthority-V4-1781869267904.json", + "type": "JsonSchemaValidator2018", + "details": "{\"jsonSchema\":{\"$id\":\"https://schema.truvera.io/PurchasingAuthority-V4-1781869267904.json\",\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"additionalProperties\":true,\"description\":\"Credential to confirm purchasing authority for Quotient employees.\",\"name\":\"Purchasing Authority\",\"properties\":{\"@context\":{\"type\":\"string\"},\"credentialSchema\":{\"properties\":{\"details\":{\"type\":\"string\"},\"id\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"version\":{\"type\":\"string\"}},\"type\":\"object\"},\"credentialStatus\":{\"properties\":{\"id\":{\"type\":\"string\"},\"revocationCheck\":{\"type\":\"string\"},\"revocationId\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"}},\"type\":\"object\"},\"credentialSubject\":{\"properties\":{\"employeeID\":{\"description\":\"\",\"title\":\"Employee ID\",\"type\":\"string\"},\"id\":{\"description\":\"A unique identifier of the recipient. Example: DID, email address, national ID number, employee ID, student ID etc.\",\"title\":\"ID\",\"type\":\"string\"},\"jobRole\":{\"title\":\"Job Role\",\"type\":\"string\"},\"onBehalfOf\":{\"title\":\"On Behalf Of\",\"type\":\"string\"}},\"required\":[],\"type\":\"object\"},\"cryptoVersion\":{\"type\":\"string\"},\"delegationPolicyId\":{\"type\":\"string\"},\"delegationRoleId\":{\"type\":\"string\"},\"id\":{\"type\":\"string\"},\"issuanceDate\":{\"format\":\"date-time\",\"type\":\"string\"},\"issuer\":{\"properties\":{\"id\":{\"type\":\"string\"},\"logo\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"}},\"type\":\"object\"},\"name\":{\"type\":\"string\"},\"proof\":{\"properties\":{\"@context\":{\"items\":[{\"properties\":{\"proof\":{\"properties\":{\"@container\":{\"type\":\"string\"},\"@id\":{\"type\":\"string\"},\"@type\":{\"type\":\"string\"}},\"type\":\"object\"},\"sec\":{\"type\":\"string\"}},\"type\":\"object\"},{\"type\":\"string\"}],\"type\":\"array\"},\"created\":{\"format\":\"date-time\",\"type\":\"string\"},\"proofPurpose\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"verificationMethod\":{\"type\":\"string\"}},\"type\":\"object\"},\"type\":{\"type\":\"string\"}},\"type\":\"object\"},\"parsingOptions\":{\"defaultDecimalPlaces\":4,\"defaultMinimumDate\":-17592186044415,\"defaultMinimumInteger\":-4294967295,\"useDefaults\":true}}", + "version": "0.4.0" + }, + "proof": null, + "humanizedType": "Purchasing Authority", + "title": "Purchasing Authority", + "subjectName": "did:key:z6MkgR93FdicvoPTnvZ8z9RHVfEWCNrpaHEGmYSJ3pyFdiyk", + "issuerName": "CFO", + "date": "July 21, 2026", + "image": null, + "images": { + "issuerImage": null, + "subjectImage": null, + "mainImage": null, + "imagesList": [] + }, + "documents": [ + [] + ], + "template": "credential", + "qrImage": false, + "attributes": [ + { + "name": "Id", + "property": "id", + "value": "did:key:z6MkgR93FdicvoPTnvZ8z9RHVfEWCNrpaHEGmYSJ3pyFdiyk" + }, + { + "name": "Job Role", + "property": "jobRole", + "value": "CFO" + }, + { + "name": "Employee I D", + "property": "employeeID", + "value": "AG12345" + }, + { + "name": "On Behalf Of", + "property": "onBehalfOf", + "value": "Quotient" + } + ], + "subjects": [ + { + "id": "did:key:z6MkgR93FdicvoPTnvZ8z9RHVfEWCNrpaHEGmYSJ3pyFdiyk", + "jobRole": "CFO", + "employeeID": "AG12345", + "onBehalfOf": "Quotient" + } + ], + "subject": { + "id": "did:key:z6MkgR93FdicvoPTnvZ8z9RHVfEWCNrpaHEGmYSJ3pyFdiyk", + "jobRole": "CFO", + "employeeID": "AG12345", + "onBehalfOf": "Quotient" + }, + "expirationDateStr": "", + "dateStr": "July 21, 2026" + } +} \ No newline at end of file diff --git a/integration-tests/verification-flow/delegatable-verification.test.ts b/integration-tests/verification-flow/delegatable-verification.test.ts new file mode 100644 index 00000000..8ecd2743 --- /dev/null +++ b/integration-tests/verification-flow/delegatable-verification.test.ts @@ -0,0 +1,88 @@ +import {IWallet} from '@docknetwork/wallet-sdk-core/lib/types'; +import { + closeWallet, + getWallet, + getDIDProvider, + getCredentialProvider, +} from '../helpers/wallet-helpers'; +import {createVerificationController} from '@docknetwork/wallet-sdk-core/src/verification-controller'; +import delegatedCredential from '../data/default-presentation-tests/delegated-credential.json'; +import {setWitnessCacheTTL} from '@docknetwork/wallet-sdk-wasm/src/services/credential/bbs-revocation'; +import { CredentialStatus } from '@docknetwork/wallet-sdk-core/src/credential-provider'; + +jest.retryTimes(0); + +let wallet: IWallet; +let didProvider; + +describe('Default presentation', () => { + beforeAll(async () => { + setWitnessCacheTTL(0); + + wallet = await getWallet(); + didProvider = getDIDProvider(); + const credentialProvider = getCredentialProvider(); + + await didProvider.ensureDID(); + await credentialProvider.addCredential(delegatedCredential); + await new Promise(resolve => setTimeout(resolve, 3000)); + }); + + afterAll(() => closeWallet()); + + it('should create a default presentation for university degree', async () => { + const credentialProvider = getCredentialProvider(); + credentialProvider.getCredentialStatus = jest.fn().mockResolvedValue({ + status: CredentialStatus.Verified, + }); + + const controller = createVerificationController({ + wallet, + didProvider, + credentialProvider, + }); + + await controller.start({ + template: { + signature: null, + qr: 'https://creds-testnet.truvera.io/proof/d51365ef-f3ae-4ce6-8cf7-5afc8ecd44dd', + id: 'd51365ef-f3ae-4ce6-8cf7-5afc8ecd44dd', + name: 'Test agent verification', + nonce: '0e67edff8c51605ab3f4b25381f7a863', + created: '2026-07-21T12:16:55.309Z', + response_url: + 'https://api-testnet.truvera.io/proof-requests/d51365ef-f3ae-4ce6-8cf7-5afc8ecd44dd/send-presentation', + request: { + id: 'd51365ef-f3ae-4ce6-8cf7-5afc8ecd44dd', + input_descriptors: [ + { + id: 'Credential 1', + name: 'Test agent verification', + purpose: 'Test agent verification', + constraints: { + fields: [ + { + path: ['$.credentialSchema.id'], + filter: { + const: + 'https://schema.truvera.io/PurchasingAuthority-V4-1781869267904.json', + }, + }, + {path: ['$.credentialSubject.jobRole']}, + ], + }, + }, + ], + }, + type: 'proof-request', + }, + }); + + const presentation = await controller.createDefaultPresentation(); + + expect(presentation).toBeDefined(); + expect(presentation.type).toEqual(['VerifiablePresentation']); + expect(presentation.verifiableCredential).toBeDefined(); + expect(presentation.verifiableCredential.length).toBe(1); + }); +}); diff --git a/packages/wasm/src/services/credential/service.ts b/packages/wasm/src/services/credential/service.ts index c2be42b3..8d5a5a64 100644 --- a/packages/wasm/src/services/credential/service.ts +++ b/packages/wasm/src/services/credential/service.ts @@ -140,12 +140,8 @@ function createProvingKeyLoader(boundCheckSnarkKey) { */ export function isBBSPlusCredential(credential) { return ( - (typeof credential?.proof?.type === 'string' && - credential.proof.type.includes('BBS+SignatureDock')) || - (Array.isArray(credential['@context']) && - credential['@context'].find( - context => typeof context === 'string' && context.indexOf('bbs') > -1, - )) + typeof credential?.proof?.type === 'string' && + credential.proof.type.toLowerCase().includes('bbs') ); } @@ -331,7 +327,13 @@ class CredentialService { return result; } - return vp.sign(suite, challenge, domain, blockchainService.resolver); + const signed = await vp.sign( + suite, + challenge, + domain, + blockchainService.resolver, + ); + return signed.toJSON(); } /** From ba7f0d6a103b3f65dbfeeeb3db302018260921c3 Mon Sep 17 00:00:00 2001 From: Maycon Mello Date: Tue, 21 Jul 2026 13:47:57 -0300 Subject: [PATCH 2/3] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- .../verification-flow/delegatable-verification.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/integration-tests/verification-flow/delegatable-verification.test.ts b/integration-tests/verification-flow/delegatable-verification.test.ts index 8ecd2743..a2785b26 100644 --- a/integration-tests/verification-flow/delegatable-verification.test.ts +++ b/integration-tests/verification-flow/delegatable-verification.test.ts @@ -15,7 +15,7 @@ jest.retryTimes(0); let wallet: IWallet; let didProvider; -describe('Default presentation', () => { +describe('Delegatable credential verification', () => { beforeAll(async () => { setWitnessCacheTTL(0); From 09da089d44e1a1e4cdbddb9f476070e7c88f74ab Mon Sep 17 00:00:00 2001 From: Maycon Mello Date: Tue, 21 Jul 2026 13:48:09 -0300 Subject: [PATCH 3/3] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- .../verification-flow/delegatable-verification.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/integration-tests/verification-flow/delegatable-verification.test.ts b/integration-tests/verification-flow/delegatable-verification.test.ts index a2785b26..dc7837d1 100644 --- a/integration-tests/verification-flow/delegatable-verification.test.ts +++ b/integration-tests/verification-flow/delegatable-verification.test.ts @@ -30,7 +30,7 @@ describe('Delegatable credential verification', () => { afterAll(() => closeWallet()); - it('should create a default presentation for university degree', async () => { + it('should create a default presentation for a delegated credential', async () => { const credentialProvider = getCredentialProvider(); credentialProvider.getCredentialStatus = jest.fn().mockResolvedValue({ status: CredentialStatus.Verified,