diff --git a/index.html b/index.html index 9fd84d9..689a962 100644 --- a/index.html +++ b/index.html @@ -167,22 +167,22 @@

Conformance Testing Results

- Tests passed 345/396 87% + Tests passed 376/424 88%

- Tests failed 53/396 14% + Tests failed 48/424 12%

- Failures 53 + Failures 48

Tests skipped 0

- Total tests 396 + Total tests 424

- These tests were run on + These tests were run on

Key

@@ -286,13 +286,9 @@

Data Integrity (issuer)

- -
🚫
+ +
-
- Test skipped.: -

-                      
@@ -309,7 +305,7 @@

Data Integrity (issuer)

- If present (proof), its value MUST be either a single object, or an unordered set of objects + If present (proof), its value MUST be either a single object, or an unordered set of objects. @@ -337,13 +333,9 @@

Data Integrity (issuer)

- -
🚫
+ +
-
- Test skipped.: -

-                      
@@ -388,13 +380,9 @@

Data Integrity (issuer)

- -
🚫
+ +
-
- Test skipped.: -

-                      
@@ -411,7 +399,7 @@

Data Integrity (issuer)

- The specific proof type used for the cryptographic proof MUST be specified as a string that maps to a URL. + The specific type of proof MUST be specified as a string that maps to a URL. @@ -448,13 +436,9 @@

Data Integrity (issuer)

- -
🚫
+ +
-
- Test skipped.: -

-                      
@@ -511,13 +495,9 @@

Data Integrity (issuer)

- -
🚫
+ +
-
- Test skipped.: -

-                      
@@ -534,7 +514,7 @@

Data Integrity (issuer)

- If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified. If specified, its value MUST be a string. + If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified. @@ -562,13 +542,9 @@

Data Integrity (issuer)

- -
🚫
+ +
-
- Test skipped.: -

-                      
@@ -585,7 +561,7 @@

Data Integrity (issuer)

- A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL] + If specified (proof.cryptosuite), its value MUST be a string. @@ -613,13 +589,9 @@

Data Integrity (issuer)

- -
🚫
+ +
-
- Test skipped.: -

-                      
@@ -636,7 +608,7 @@

Data Integrity (issuer)

- The reason the proof was created ("proof.proofPurpose") MUST be specified as a string that maps to a URL + A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL]. @@ -664,13 +636,9 @@

Data Integrity (issuer)

- -
🚫
+ +
-
- Test skipped.: -

-                      
@@ -687,7 +655,54 @@

Data Integrity (issuer)

- ("proof.proofValue") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification. + The reason the proof was created ("proof.proofPurpose") MUST be specified as a string that maps to a URL. + + + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + + + + + ("proof.proofValue") A string value that expresses base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The value MUST use a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification to express the binary data. @@ -712,8 +727,8 @@

Data Integrity (issuer)

Expected proofValue to exist.: expected undefined to exist:
AssertionError: Expected proofValue to exist.: expected undefined to exist
                         at should.exist (node_modules/chai/lib/chai/interface/should.js:144:34)
-                        at shouldHaveProofValue (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:245:10)
-                        at Context.<anonymous> (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:209:9)
+                        at shouldHaveProofValue (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:260:10)
+                        at Context.<anonymous> (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:221:9)
                         at process.processImmediate (node:internal/timers:483:21)
@@ -723,13 +738,9 @@

Data Integrity (issuer)

- -
🚫
+ +
-
- Test skipped.: -

-                      
@@ -774,13 +785,9 @@

Data Integrity (issuer)

- -
🚫
+ +
-
- Test skipped.: -

-                      
@@ -825,13 +832,9 @@

Data Integrity (issuer)

- -
🚫
+ +
-
- Test skipped.: -

-                      
@@ -874,7 +877,7 @@

Data Integrity (issuer)

AssertionError: Expected "proof.proofValue" to exist.: expected undefined to exist
                         at should.exist (node_modules/chai/lib/chai/interface/should.js:144:34)
                         at shouldBeProof (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:206:10)
-                        at Context.<anonymous> (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:235:9)
+                        at Context.<anonymous> (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:247:9)
                         at process.processImmediate (node:internal/timers:483:21)
@@ -884,13 +887,9 @@

Data Integrity (issuer)

- -
🚫
+ +
-
- Test skipped.: -

-                      
@@ -914,12 +913,12 @@

Data Integrity (issuer)

- Expected issuer to error when VC has an undefined type.: expected Response { status: 201, statusText: 'Created', headers: Headers { 'content-type': 'application/ld+json', 'x-cloud-trace-context': '71d6eda8a8928408b848cca9d858f744', date: 'Sun, 25 Aug 2024 05:01:38 GMT', server: 'Google Frontend', 'content-length': '745', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist: -
AssertionError: Expected issuer to error when VC has an undefined type.: expected Response { status: 201, statusText: 'Created', headers: Headers { 'content-type': 'application/ld+json', 'x-cloud-trace-context': '71d6eda8a8928408b848cca9d858f744', date: 'Sun, 25 Aug 2024 05:01:38 GMT', server: 'Google Frontend', 'content-length': '745', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist
+                        Expected issuer to error when VC has an undefined type.: expected Response { status: 201, statusText: 'Created', headers: Headers { 'content-type': 'application/ld+json', 'x-cloud-trace-context': '2c4817b1e968039ec75a476affe0d1c9', date: 'Sun, 01 Sep 2024 05:01:38 GMT', server: 'Google Frontend', 'content-length': '745', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist:
+                        
AssertionError: Expected issuer to error when VC has an undefined type.: expected Response { status: 201, statusText: 'Created', headers: Headers { 'content-type': 'application/ld+json', 'x-cloud-trace-context': '2c4817b1e968039ec75a476affe0d1c9', date: 'Sun, 01 Sep 2024 05:01:38 GMT', server: 'Google Frontend', 'content-length': '745', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist
                         at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)
                         at shouldFailIssuance (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:71:14)
                         at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
-                        at async Context.<anonymous> (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:246:7)
+ at async Context.<anonymous> (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:258:7)
@@ -937,12 +936,12 @@

Data Integrity (issuer)

- Expected issuer to error when VC has an undefined type.: expected Response { status: 201, statusText: 'Created', headers: Headers { date: 'Sun, 25 Aug 2024 05:01:42 GMT', 'content-type': 'application/json; charset=utf-8', 'content-length': '742', connection: 'keep-alive', 'x-powered-by': 'Express', vary: 'Origin', etag: 'W/"2e6-8sRIl1nTTSg3azeBFW45WsljG+M"', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist: -
AssertionError: Expected issuer to error when VC has an undefined type.: expected Response { status: 201, statusText: 'Created', headers: Headers { date: 'Sun, 25 Aug 2024 05:01:42 GMT', 'content-type': 'application/json; charset=utf-8', 'content-length': '742', connection: 'keep-alive', 'x-powered-by': 'Express', vary: 'Origin', etag: 'W/"2e6-8sRIl1nTTSg3azeBFW45WsljG+M"', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist
+                        Expected issuer to error when VC has an undefined type.: expected Response { status: 201, statusText: 'Created', headers: Headers { date: 'Sun, 01 Sep 2024 05:01:41 GMT', 'content-type': 'application/json; charset=utf-8', 'content-length': '742', connection: 'keep-alive', 'x-powered-by': 'Express', vary: 'Origin', etag: 'W/"2e6-D2MtB7A9tOV5YwDjeakleFyH4Z8"', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist:
+                        
AssertionError: Expected issuer to error when VC has an undefined type.: expected Response { status: 201, statusText: 'Created', headers: Headers { date: 'Sun, 01 Sep 2024 05:01:41 GMT', 'content-type': 'application/json; charset=utf-8', 'content-length': '742', connection: 'keep-alive', 'x-powered-by': 'Express', vary: 'Origin', etag: 'W/"2e6-D2MtB7A9tOV5YwDjeakleFyH4Z8"', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist
                         at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)
                         at shouldFailIssuance (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:71:14)
                         at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
-                        at async Context.<anonymous> (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:246:7)
+ at async Context.<anonymous> (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:258:7)
@@ -950,21 +949,25 @@

Data Integrity (issuer)

- Expected issuer to error when VC has an undefined type.: expected Response { status: 201, statusText: 'Created', headers: Headers { date: 'Sun, 25 Aug 2024 05:01:42 GMT', 'content-type': 'application/json; charset=utf-8', 'content-length': '757', connection: 'keep-alive', etag: 'W/"2f5-6ffEum/jkWv5eo1N1f6p3YMCxQQ"', 'x-powered-by': 'Express', 'apigw-requestid': 'dDIcih6NIAMEPfQ=', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist: -
AssertionError: Expected issuer to error when VC has an undefined type.: expected Response { status: 201, statusText: 'Created', headers: Headers { date: 'Sun, 25 Aug 2024 05:01:42 GMT', 'content-type': 'application/json; charset=utf-8', 'content-length': '757', connection: 'keep-alive', etag: 'W/"2f5-6ffEum/jkWv5eo1N1f6p3YMCxQQ"', 'x-powered-by': 'Express', 'apigw-requestid': 'dDIcih6NIAMEPfQ=', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist
+                        Expected issuer to error when VC has an undefined type.: expected Response { status: 201, statusText: 'Created', headers: Headers { date: 'Sun, 01 Sep 2024 05:01:41 GMT', 'content-type': 'application/json; charset=utf-8', 'content-length': '758', connection: 'keep-alive', etag: 'W/"2f6-XIBDOwkbup9zd49/uujr0glIeIo"', 'x-powered-by': 'Express', 'apigw-requestid': 'daNAcgLZIAMEaRw=', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist:
+                        
AssertionError: Expected issuer to error when VC has an undefined type.: expected Response { status: 201, statusText: 'Created', headers: Headers { date: 'Sun, 01 Sep 2024 05:01:41 GMT', 'content-type': 'application/json; charset=utf-8', 'content-length': '758', connection: 'keep-alive', etag: 'W/"2f6-XIBDOwkbup9zd49/uujr0glIeIo"', 'x-powered-by': 'Express', 'apigw-requestid': 'daNAcgLZIAMEaRw=', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist
                         at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)
                         at shouldFailIssuance (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:71:14)
                         at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
-                        at async Context.<anonymous> (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:246:7)
+ at async Context.<anonymous> (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:258:7)
- -
🚫
+ +
- Test skipped.: -

+                        Expected issuer to error when VC has an undefined type.: expected Response { status: 201, statusText: 'Created', headers: Headers { 'content-length': '796', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 01 Sep 2024 05:01:42 GMT', server: 'Python/3.12 aiohttp/3.10.5', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist:
+                        
AssertionError: Expected issuer to error when VC has an undefined type.: expected Response { status: 201, statusText: 'Created', headers: Headers { 'content-length': '796', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 01 Sep 2024 05:01:42 GMT', server: 'Python/3.12 aiohttp/3.10.5', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist
+                        at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)
+                        at shouldFailIssuance (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:71:14)
+                        at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+                        at async Context.<anonymous> (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:258:7)
@@ -977,12 +980,12 @@

Data Integrity (issuer)

- Expected issuer to error when VC has an undefined type.: expected Response { status: 200, statusText: 'OK', headers: Headers { date: 'Sun, 25 Aug 2024 05:01:43 GMT', 'content-type': 'text/html; charset=utf-8', 'transfer-encoding': 'chunked', connection: 'keep-alive', 'cache-control': 'no-cache,no-store', expires: '-1', pragma: 'no-cache', 'x-envoy-upstream-service-time': '96', 'cf-cache-status': 'DYNAMIC', 'report-to': '{"endpoints":[{"url":"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=TpxXtTFkI63v%2Bx8JNSIM15l2jI8JHDqVYGBjFOPWQ7QpdnUlz6mgEElTPZy6UPjSGdEoSe6WOAzeGXH3H099hfMXRgg3zfVRYdpugLWSc6hsYZ0sxvx4lABjqnqCvwsJPXKFcX9KSOaeniMzdQGk"}],"group":"cf-nel","max_age":604800}', nel: '{"success_fraction":0,"report_to":"cf-nel","max_age":604800}', server: 'cloudflare', 'cf-ray': '8b8906999a919c42-IAD', 'content-encoding': 'br', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: null, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist: -
AssertionError: Expected issuer to error when VC has an undefined type.: expected Response { status: 200, statusText: 'OK', headers: Headers { date: 'Sun, 25 Aug 2024 05:01:43 GMT', 'content-type': 'text/html; charset=utf-8', 'transfer-encoding': 'chunked', connection: 'keep-alive', 'cache-control': 'no-cache,no-store', expires: '-1', pragma: 'no-cache', 'x-envoy-upstream-service-time': '96', 'cf-cache-status': 'DYNAMIC', 'report-to': '{"endpoints":[{"url":"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=TpxXtTFkI63v%2Bx8JNSIM15l2jI8JHDqVYGBjFOPWQ7QpdnUlz6mgEElTPZy6UPjSGdEoSe6WOAzeGXH3H099hfMXRgg3zfVRYdpugLWSc6hsYZ0sxvx4lABjqnqCvwsJPXKFcX9KSOaeniMzdQGk"}],"group":"cf-nel","max_age":604800}', nel: '{"success_fraction":0,"report_to":"cf-nel","max_age":604800}', server: 'cloudflare', 'cf-ray': '8b8906999a919c42-IAD', 'content-encoding': 'br', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: null, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist
+                        Expected issuer to error when VC has an undefined type.: expected Response { status: 200, statusText: 'OK', headers: Headers { date: 'Sun, 01 Sep 2024 05:01:43 GMT', 'content-type': 'text/html; charset=utf-8', 'transfer-encoding': 'chunked', connection: 'keep-alive', 'cache-control': 'no-cache,no-store', expires: '-1', pragma: 'no-cache', 'x-envoy-upstream-service-time': '66', 'cf-cache-status': 'DYNAMIC', 'report-to': '{"endpoints":[{"url":"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=w6sjM6VoQhrr8EpU0l9oNyiMc%2FJv%2BpjQUGdevet5W9Soe6jTtCY14LE5X2DtQE4QNLLJnnt46Z%2B%2BwJD8dUm3BF3TEtTMsVvO6FyW2S9FElFrAMDGAL6nIdsoEqlUMkX15gUbnT%2F%2B9%2BbWQe6fuKNf"}],"group":"cf-nel","max_age":604800}', nel: '{"success_fraction":0,"report_to":"cf-nel","max_age":604800}', server: 'cloudflare', 'cf-ray': '8bc2b438bfbc1316-IAD', 'content-encoding': 'br', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: null, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist:
+                        
AssertionError: Expected issuer to error when VC has an undefined type.: expected Response { status: 200, statusText: 'OK', headers: Headers { date: 'Sun, 01 Sep 2024 05:01:43 GMT', 'content-type': 'text/html; charset=utf-8', 'transfer-encoding': 'chunked', connection: 'keep-alive', 'cache-control': 'no-cache,no-store', expires: '-1', pragma: 'no-cache', 'x-envoy-upstream-service-time': '66', 'cf-cache-status': 'DYNAMIC', 'report-to': '{"endpoints":[{"url":"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=w6sjM6VoQhrr8EpU0l9oNyiMc%2FJv%2BpjQUGdevet5W9Soe6jTtCY14LE5X2DtQE4QNLLJnnt46Z%2B%2BwJD8dUm3BF3TEtTMsVvO6FyW2S9FElFrAMDGAL6nIdsoEqlUMkX15gUbnT%2F%2B9%2BbWQe6fuKNf"}],"group":"cf-nel","max_age":604800}', nel: '{"success_fraction":0,"report_to":"cf-nel","max_age":604800}', server: 'cloudflare', 'cf-ray': '8bc2b438bfbc1316-IAD', 'content-encoding': 'br', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: null, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist
                         at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)
                         at shouldFailIssuance (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:71:14)
                         at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
-                        at async Context.<anonymous> (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:246:7)
+ at async Context.<anonymous> (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:258:7)
@@ -1000,7 +1003,7 @@

Data Integrity (issuer)

Expected issuer apicatalog.com to perform context injection on a VC with out an "@context" property: expected HTTPError: Request failed with status cod… { …(6) } to not exist:
AssertionError: Expected issuer apicatalog.com to perform context injection on a VC with out an "@context" property: expected HTTPError: Request failed with status cod… { …(6) } to not exist
                         at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)
-                        at Context.<anonymous> (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:442:18)
+                        at Context.<anonymous> (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:454:18)
                         at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
@@ -1012,7 +1015,7 @@

Data Integrity (issuer)

Expected issuer Danube Tech to perform context injection on a VC with out an "@context" property: expected HTTPError: Request failed with status cod… { …(6) } to not exist:
AssertionError: Expected issuer Danube Tech to perform context injection on a VC with out an "@context" property: expected HTTPError: Request failed with status cod… { …(6) } to not exist
                         at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)
-                        at Context.<anonymous> (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:442:18)
+                        at Context.<anonymous> (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:454:18)
                         at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
@@ -1024,7 +1027,7 @@

Data Integrity (issuer)

Expected issuer Digital Bazaar to perform context injection on a VC with out an "@context" property: expected HTTPError: A validation error occured in … { …(6) } to not exist:
AssertionError: Expected issuer Digital Bazaar to perform context injection on a VC with out an "@context" property: expected HTTPError: A validation error occured in … { …(6) } to not exist
                         at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)
-                        at Context.<anonymous> (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:442:18)
+                        at Context.<anonymous> (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:454:18)
                         at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
@@ -1036,7 +1039,7 @@

Data Integrity (issuer)

Expected issuer EWF to perform context injection on a VC with out an "@context" property: expected HTTPError { …(7) } to not exist:
AssertionError: Expected issuer EWF to perform context injection on a VC with out an "@context" property: expected HTTPError { …(7) } to not exist
                         at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)
-                        at Context.<anonymous> (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:442:18)
+                        at Context.<anonymous> (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:454:18)
                         at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
@@ -1048,17 +1051,20 @@

Data Integrity (issuer)

Expected issuer LearnCard to perform context injection on a VC with out an "@context" property: expected HTTPError: Request failed with status cod… { …(6) } to not exist:
AssertionError: Expected issuer LearnCard to perform context injection on a VC with out an "@context" property: expected HTTPError: Request failed with status cod… { …(6) } to not exist
                         at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)
-                        at Context.<anonymous> (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:442:18)
+                        at Context.<anonymous> (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:454:18)
                         at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
- -
🚫
+ +
- Test skipped.: -

+                        Expected issuer OpSecId to perform context injection on a VC with out an "@context" property: expected HTTPError: Request failed with status cod… { …(6) } to not exist:
+                        
AssertionError: Expected issuer OpSecId to perform context injection on a VC with out an "@context" property: expected HTTPError: Request failed with status cod… { …(6) } to not exist
+                        at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)
+                        at Context.<anonymous> (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:454:18)
+                        at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
@@ -1069,7 +1075,7 @@

Data Integrity (issuer)

Expected issuer SpruceID to perform context injection on a VC with out an "@context" property: expected HTTPError: Request failed with status cod… { …(5) } to not exist:
AssertionError: Expected issuer SpruceID to perform context injection on a VC with out an "@context" property: expected HTTPError: Request failed with status cod… { …(5) } to not exist
                         at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)
-                        at Context.<anonymous> (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:442:18)
+                        at Context.<anonymous> (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:454:18)
                         at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
@@ -1081,7 +1087,7 @@

Data Integrity (issuer)

Expected issuer Trinsic to perform context injection on a VC with out an "@context" property: expected HTTPError: Request failed with status cod… { …(6) } to not exist:
AssertionError: Expected issuer Trinsic to perform context injection on a VC with out an "@context" property: expected HTTPError: Request failed with status cod… { …(6) } to not exist
                         at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)
-                        at Context.<anonymous> (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:442:18)
+                        at Context.<anonymous> (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:454:18)
                         at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
@@ -1118,13 +1124,9 @@

Data Integrity (issuer)

- -
🚫
+ +
-
- Test skipped.: -

-                      
@@ -1169,13 +1171,9 @@

Data Integrity (issuer)

- -
🚫
+ +
-
- Test skipped.: -

-                      
@@ -1220,13 +1218,9 @@

Data Integrity (issuer)

- -
🚫
+ +
-
- Test skipped.: -

-                      
@@ -1271,13 +1265,9 @@

Data Integrity (issuer)

- -
🚫
+ +
-
- Test skipped.: -

-                      
@@ -1363,13 +1353,9 @@

Ed25519Signature2020 (issuer)

- -
🚫
+ +
-
- Test skipped.: -

-                      
@@ -1421,13 +1407,9 @@

Ed25519Signature2020 (issuer)

- -
🚫
+ +
-
- Test skipped.: -

-                      
@@ -1776,7 +1758,7 @@

Data Integrity (verifier)

Expected "response.status" to exist.: expected undefined to exist:
AssertionError: Expected "response.status" to exist.: expected undefined to exist
                         at should.exist (node_modules/chai/lib/chai/interface/should.js:144:34)
-                        at shouldBeErrorResponse (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:228:10)
+                        at shouldBeErrorResponse (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:240:10)
                         at verificationFail (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:51:3)
                         at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
                         at async Context.<anonymous> (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/verify.js:81:7)
@@ -2542,8 +2524,8 @@

Ed25519Signature2020 (verifier)

- Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'content-length': '638', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 25 Aug 2024 05:02:18 GMT', server: 'Python/3.12 aiohttp/3.10.5', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist: -
AssertionError: Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'content-length': '638', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 25 Aug 2024 05:02:18 GMT', server: 'Python/3.12 aiohttp/3.10.5', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist
+                        Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'content-length': '638', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 01 Sep 2024 05:02:20 GMT', server: 'Python/3.12 aiohttp/3.10.5', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist:
+                        
AssertionError: Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'content-length': '638', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 01 Sep 2024 05:02:20 GMT', server: 'Python/3.12 aiohttp/3.10.5', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist
                         at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)
                         at verificationFail (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/assertions.js:49:14)
                         at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
@@ -2597,8 +2579,8 @@ 

Ed25519Signature2020 (verifier)

- Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'content-length': '638', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 25 Aug 2024 05:02:18 GMT', server: 'Python/3.12 aiohttp/3.10.5', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist: -
AssertionError: Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'content-length': '638', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 25 Aug 2024 05:02:18 GMT', server: 'Python/3.12 aiohttp/3.10.5', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist
+                        Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'content-length': '638', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 01 Sep 2024 05:02:20 GMT', server: 'Python/3.12 aiohttp/3.10.5', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist:
+                        
AssertionError: Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'content-length': '638', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 01 Sep 2024 05:02:20 GMT', server: 'Python/3.12 aiohttp/3.10.5', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist
                         at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)
                         at verificationFail (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/assertions.js:49:14)
                         at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
@@ -2652,8 +2634,8 @@ 

Ed25519Signature2020 (verifier)

- Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'content-length': '638', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 25 Aug 2024 05:02:18 GMT', server: 'Python/3.12 aiohttp/3.10.5', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist: -
AssertionError: Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'content-length': '638', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 25 Aug 2024 05:02:18 GMT', server: 'Python/3.12 aiohttp/3.10.5', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist
+                        Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'content-length': '638', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 01 Sep 2024 05:02:20 GMT', server: 'Python/3.12 aiohttp/3.10.5', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist:
+                        
AssertionError: Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'content-length': '638', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 01 Sep 2024 05:02:20 GMT', server: 'Python/3.12 aiohttp/3.10.5', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist
                         at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)
                         at verificationFail (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/assertions.js:49:14)
                         at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
@@ -3046,51 +3028,30 @@ 

Ed25519Signature2020 (interop)

OpSecId - -
+ +
-
- Expected issuer: OpSecId to not error: expected HTTPError: DID not found: did:key:z6MksCe… { …(6) } to not exist: -
AssertionError: Expected issuer: OpSecId to not error: expected HTTPError: DID not found: did:key:z6MksCe… { …(6) } to not exist
-                        at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)
-                        at Context.<anonymous> (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js:54:20)
-                        at process.processImmediate (node:internal/timers:483:21)
-
- -
+ +
-
- Expected issuer: OpSecId to not error: expected HTTPError: DID not found: did:key:z6MksCe… { …(6) } to not exist: -
AssertionError: Expected issuer: OpSecId to not error: expected HTTPError: DID not found: did:key:z6MksCe… { …(6) } to not exist
-                        at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)
-                        at Context.<anonymous> (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js:54:20)
-                        at process.processImmediate (node:internal/timers:483:21)
-
- -
+ +
-
- Expected issuer: OpSecId to not error: expected HTTPError: DID not found: did:key:z6MksCe… { …(6) } to not exist: -
AssertionError: Expected issuer: OpSecId to not error: expected HTTPError: DID not found: did:key:z6MksCe… { …(6) } to not exist
-                        at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)
-                        at Context.<anonymous> (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js:54:20)
-                        at process.processImmediate (node:internal/timers:483:21)
-
- Expected issuer: OpSecId to not error: expected HTTPError: DID not found: did:key:z6MksCe… { …(6) } to not exist: -
AssertionError: Expected issuer: OpSecId to not error: expected HTTPError: DID not found: did:key:z6MksCe… { …(6) } to not exist
+                        Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist:
+                        
AssertionError: Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist
                         at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)
-                        at Context.<anonymous> (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js:54:20)
-                        at process.processImmediate (node:internal/timers:483:21)
+ at Context.<anonymous> (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js:66:20) + at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
@@ -3098,48 +3059,34 @@

Ed25519Signature2020 (interop)

- Expected issuer: OpSecId to not error: expected HTTPError: DID not found: did:key:z6MksCe… { …(6) } to not exist: -
AssertionError: Expected issuer: OpSecId to not error: expected HTTPError: DID not found: did:key:z6MksCe… { …(6) } to not exist
+                        Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist:
+                        
AssertionError: Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist
                         at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)
-                        at Context.<anonymous> (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js:54:20)
-                        at process.processImmediate (node:internal/timers:483:21)
+ at Context.<anonymous> (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js:66:20) + at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
- -
+ +
-
- Expected issuer: OpSecId to not error: expected HTTPError: DID not found: did:key:z6MksCe… { …(6) } to not exist: -
AssertionError: Expected issuer: OpSecId to not error: expected HTTPError: DID not found: did:key:z6MksCe… { …(6) } to not exist
-                        at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)
-                        at Context.<anonymous> (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js:54:20)
-                        at process.processImmediate (node:internal/timers:483:21)
-
- Expected issuer: OpSecId to not error: expected HTTPError: DID not found: did:key:z6MksCe… { …(6) } to not exist: -
AssertionError: Expected issuer: OpSecId to not error: expected HTTPError: DID not found: did:key:z6MksCe… { …(6) } to not exist
+                        Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(5) } to not exist:
+                        
AssertionError: Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(5) } to not exist
                         at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)
-                        at Context.<anonymous> (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js:54:20)
-                        at process.processImmediate (node:internal/timers:483:21)
+ at Context.<anonymous> (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js:66:20) + at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
- -
+ +
-
- Expected issuer: OpSecId to not error: expected HTTPError: DID not found: did:key:z6MksCe… { …(6) } to not exist: -
AssertionError: Expected issuer: OpSecId to not error: expected HTTPError: DID not found: did:key:z6MksCe… { …(6) } to not exist
-                        at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)
-                        at Context.<anonymous> (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js:54:20)
-                        at process.processImmediate (node:internal/timers:483:21)
-
diff --git a/index.json b/index.json index 2ff8441..b40f627 100644 --- a/index.json +++ b/index.json @@ -22,9 +22,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Q-Y1cYh4G8cDll4bwtBlR", + "parent": "yxhpYILOcqbki3FDec94S", "ctx": null, - "_testId": "urn:uuid:b581ea26-07de-4f6a-9810-9c33ba0264fd", + "_testId": "urn:uuid:6cfa91a8-4845-4d72-afc8-77da0d04f5ef", "cell": { "columnId": "apicatalog.com", "rowId": "When expressing a data integrity proof on an object, a proof property MUST be used." @@ -32,13 +32,13 @@ "_events": {}, "_eventsCount": 1, "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=When%20expressing%20a%20data%20integrity%20proof%20on%20an%20object%2C%20a%20proof%20property%20MUST%20be%20used", - "duration": 1, + "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "If present (proof), its value MUST be either a single object, or an unordered set of objects", + "title": "If present (proof), its value MUST be either a single object, or an unordered set of objects.", "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=If%20present%2C%20its%20value%20MUST%20be%20either%20a%20single%20object%2C%20or%20an%20unordered%20set%20of%20objects';\n shouldHaveProof({vc: data});\n const {proof} = data;\n const validType = isObjectOrArrayOfObjects(proof);\n validType.should.equal(true, 'Expected proof to be' +\n 'either an object or an unordered set of objects.');\n }", "async": 0, "sync": true, @@ -49,17 +49,17 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Q-Y1cYh4G8cDll4bwtBlR", + "parent": "yxhpYILOcqbki3FDec94S", "ctx": null, - "_testId": "urn:uuid:bebc1b78-6c43-4869-b759-d6362a426e26", + "_testId": "urn:uuid:d18a1acc-d31d-4370-9a54-4f3f3a8ab575", "cell": { "columnId": "apicatalog.com", - "rowId": "If present (proof), its value MUST be either a single object, or an unordered set of objects" + "rowId": "If present (proof), its value MUST be either a single object, or an unordered set of objects." }, "_events": {}, "_eventsCount": 1, "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=If%20present%2C%20its%20value%20MUST%20be%20either%20a%20single%20object%2C%20or%20an%20unordered%20set%20of%20objects", - "duration": 1, + "duration": 0, "state": "passed", "speed": "fast" }, @@ -76,9 +76,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Q-Y1cYh4G8cDll4bwtBlR", + "parent": "yxhpYILOcqbki3FDec94S", "ctx": null, - "_testId": "urn:uuid:369390c3-6db2-4d3e-9bb9-6b82f6243b3b", + "_testId": "urn:uuid:52f304e0-0d9c-4d96-9a5b-dc0061f9be30", "cell": { "columnId": "apicatalog.com", "rowId": "(\"proof.id\") An optional identifier for the proof, which MUST be a URL." @@ -92,8 +92,8 @@ }, { "type": "test", - "title": "The specific proof type used for the cryptographic proof MUST be specified as a string that maps to a URL.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20specific%20proof%20type%20used%20for%20the%20cryptographic%20proof%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL';\n const prop = '@type';\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string', 'Expected \"proof.type\" to be a string.');\n const expanded = await jsonld.expand({\n '@context': data['@context'],\n type: proof.type\n }, {documentLoader});\n for(const term of expanded) {\n const types = term[prop];\n should.exist(types, 'Expected @type to exist.');\n types.every(url => shouldBeUrl({url, prop}));\n }\n }\n }", + "title": "The specific type of proof MUST be specified as a string that maps to a URL.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#:~:text=The%20specific%20type%20of%20proof%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL';\n const prop = '@type';\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string', 'Expected \"proof.type\" to be a string.');\n const expanded = await jsonld.expand({\n '@context': data['@context'],\n type: proof.type\n }, {documentLoader});\n for(const term of expanded) {\n const types = term[prop];\n should.exist(types, 'Expected @type to exist.');\n types.every(url => shouldBeUrl({url, prop}));\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -103,26 +103,26 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Q-Y1cYh4G8cDll4bwtBlR", + "parent": "yxhpYILOcqbki3FDec94S", "ctx": null, - "_testId": "urn:uuid:aacef930-4add-4964-bbae-6da69e7a17ce", + "_testId": "urn:uuid:ec357a73-e4d5-40ad-a4bf-7276d04e1098", "cell": { "columnId": "apicatalog.com", - "rowId": "The specific proof type used for the cryptographic proof MUST be specified as a string that maps to a URL." + "rowId": "The specific type of proof MUST be specified as a string that maps to a URL." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20specific%20proof%20type%20used%20for%20the%20cryptographic%20proof%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL", + "link": "https://w3c.github.io/vc-data-integrity/#:~:text=The%20specific%20type%20of%20proof%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 5539, + "_idleStart": 6183, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 2, + "duration": 1, "state": "passed", "speed": "fast" }, @@ -139,9 +139,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Q-Y1cYh4G8cDll4bwtBlR", + "parent": "yxhpYILOcqbki3FDec94S", "ctx": null, - "_testId": "urn:uuid:67fae0e0-c7b2-4b9d-9d2f-4d41c921fc79", + "_testId": "urn:uuid:5e34e5d0-cf1d-4203-b14f-3220eadf8314", "cell": { "columnId": "apicatalog.com", "rowId": "\"proof.type\" field MUST be \"Ed25519Signature2020\" and the associated document MUST include expected contexts." @@ -154,8 +154,35 @@ }, { "type": "test", - "title": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified. If specified, its value MUST be a string.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.';\n for(const proof of proofs) {\n if(proof.type && proof.type === 'DataIntegrityProof') {\n should.exist(\n proof.cryptosuite,\n 'If the proof type is DataIntegrityProof, cryptosuite MUST ' +\n 'be specified');\n proof.cryptosuite.should.be.a(\n 'string',\n 'cryptosuite value MUST be a string.');\n }\n }\n }", + "title": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.';\n for(const proof of proofs) {\n if(proof.type && proof.type === 'DataIntegrityProof') {\n should.exist(\n proof.cryptosuite,\n 'If the proof type is DataIntegrityProof, cryptosuite MUST ' +\n 'be specified');\n }\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "parent": "yxhpYILOcqbki3FDec94S", + "ctx": null, + "_testId": "urn:uuid:bd878300-cfcc-4be0-9eda-1613527883f5", + "cell": { + "columnId": "apicatalog.com", + "rowId": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified." + }, + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.", + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "If specified (proof.cryptosuite), its value MUST be a string.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.';\n for(const proof of proofs) {\n if(proof.cryptosuite) {\n proof.cryptosuite.should.be.a(\n 'string',\n 'cryptosuite value MUST be a string.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -165,12 +192,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Q-Y1cYh4G8cDll4bwtBlR", + "parent": "yxhpYILOcqbki3FDec94S", "ctx": null, - "_testId": "urn:uuid:2c502991-b561-4315-a5bf-5b0fb09c4e30", + "_testId": "urn:uuid:84721b3d-a2cc-4227-956f-704e69a5ae04", "cell": { "columnId": "apicatalog.com", - "rowId": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified. If specified, its value MUST be a string." + "rowId": "If specified (proof.cryptosuite), its value MUST be a string." }, "_events": {}, "_eventsCount": 1, @@ -181,8 +208,8 @@ }, { "type": "test", - "title": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL]", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=A%20verification%20method%20is%20the%20means%20and%20information%20needed%20to%20verify%20the%20proof.%20If%20included%2C%20the%20value%20MUST%20be%20a%20string%20that%20maps%20to%20a%20%5BURL%5D.';\n for(const proof of proofs) {\n await shouldMapToUrl({\n doc: {\n '@context': data['@context'],\n ...proof\n },\n term: 'https://w3id.org/security#verificationMethod',\n prop: '@id',\n documentLoader\n });\n }\n }", + "title": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL].", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=A%20verification%20method%20is%20the%20means%20and%20information%20needed%20to%20verify%20the%20proof.%20If%20included%2C%20the%20value%20MUST%20be%20a%20string%20that%20maps%20to%20a%20%5BURL%5D.';\n for(const proof of proofs) {\n if(!data || !data?.['@context']) {\n throw new Error(`Expected ${vendorName} to issue a VC.`);\n }\n await shouldMapToUrl({\n doc: {\n '@context': data['@context'],\n ...proof\n },\n term: 'https://w3id.org/security#verificationMethod',\n prop: '@id',\n documentLoader\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -192,12 +219,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Q-Y1cYh4G8cDll4bwtBlR", + "parent": "yxhpYILOcqbki3FDec94S", "ctx": null, - "_testId": "urn:uuid:cdfe8d3d-d94d-4442-a34f-2542902d7f9b", + "_testId": "urn:uuid:4302fb38-3338-4e48-b1ee-3481d3c53b0b", "cell": { "columnId": "apicatalog.com", - "rowId": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL]" + "rowId": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL]." }, "_events": {}, "_eventsCount": 1, @@ -206,7 +233,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 5541, + "_idleStart": 6186, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -217,7 +244,7 @@ }, { "type": "test", - "title": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL", + "title": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL.", "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20reason%20the%20proof%20was%20created%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL';\n for(const proof of proofs) {\n proof.should.have.property('proofPurpose');\n proof.proofPurpose.should.be.a('string');\n await shouldMapToUrl({\n doc: {\n '@context': data['@context'],\n ...proof\n },\n term: 'https://w3id.org/security#proofPurpose',\n prop: '@id',\n documentLoader\n });\n }\n }", "async": 0, "sync": true, @@ -228,12 +255,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Q-Y1cYh4G8cDll4bwtBlR", + "parent": "yxhpYILOcqbki3FDec94S", "ctx": null, - "_testId": "urn:uuid:ecbb0b2a-7692-4aa2-ba6b-0b31582c9385", + "_testId": "urn:uuid:52945fee-5cb7-4369-bc84-9aeeccb1b3ce", "cell": { "columnId": "apicatalog.com", - "rowId": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL" + "rowId": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL." }, "_events": {}, "_eventsCount": 1, @@ -242,7 +269,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 5543, + "_idleStart": 6187, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -253,8 +280,8 @@ }, { "type": "test", - "title": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof';\n for(const proof of proofs) {\n should.exist(proof, 'Expected proof to exist.');\n const {\n prefix: expectedPrefix,\n name: encodingName\n } = expectedMultibasePrefix(proof.cryptosuite);\n shouldHaveProofValue({proof, expectedPrefix, encodingName});\n }\n }", + "title": "(\"proof.proofValue\") A string value that expresses base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The value MUST use a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification to express the binary data.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#:~:text=A%20string%20value%20that%20expresses%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof%20using%20the%20verificationMethod%20specified.%20The%20value%20MUST%20use%20a%20header%20and%20encoding%20as%20described%20in%20Section%202.4%20Multibase%20of%20the%20Controller%20Documents%201.0%20specification%20to%20express%20the%20binary%20data.';\n for(const proof of proofs) {\n should.exist(proof, 'Expected proof to exist.');\n //FIXME the suite should pass in the expectedPrefix and\n //encodingName or type\n const {\n prefix: expectedPrefix,\n name: encodingName\n } = expectedMultibasePrefix(proof.cryptosuite);\n shouldHaveProofValue({proof, expectedPrefix, encodingName});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -264,16 +291,16 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Q-Y1cYh4G8cDll4bwtBlR", + "parent": "yxhpYILOcqbki3FDec94S", "ctx": null, - "_testId": "urn:uuid:e944b721-bbe2-42ec-8664-c6a0b2ad318c", + "_testId": "urn:uuid:1df282c4-46ae-4ce4-9d96-a03ba336ab17", "cell": { "columnId": "apicatalog.com", - "rowId": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification." + "rowId": "(\"proof.proofValue\") A string value that expresses base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The value MUST use a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification to express the binary data." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof", + "link": "https://w3c.github.io/vc-data-integrity/#:~:text=A%20string%20value%20that%20expresses%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof%20using%20the%20verificationMethod%20specified.%20The%20value%20MUST%20use%20a%20header%20and%20encoding%20as%20described%20in%20Section%202.4%20Multibase%20of%20the%20Controller%20Documents%201.0%20specification%20to%20express%20the%20binary%20data.", "duration": 0, "state": "passed", "speed": "fast" @@ -291,9 +318,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Q-Y1cYh4G8cDll4bwtBlR", + "parent": "yxhpYILOcqbki3FDec94S", "ctx": null, - "_testId": "urn:uuid:38cbefe9-19a8-4a76-a5ac-2810e14824a2", + "_testId": "urn:uuid:3fe4eccd-cc23-4f54-a3ec-a5f59931edb7", "cell": { "columnId": "apicatalog.com", "rowId": "if \"proof.previousProof\" field exists, it MUST be a string." @@ -317,9 +344,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Q-Y1cYh4G8cDll4bwtBlR", + "parent": "yxhpYILOcqbki3FDec94S", "ctx": null, - "_testId": "urn:uuid:fdaa56bb-c6a2-42e4-a999-57c0f250a926", + "_testId": "urn:uuid:3086ee79-24c1-4dfd-a6ff-064200133b46", "cell": { "columnId": "apicatalog.com", "rowId": "if \"proof.nonce\" field exists, it MUST be a string." @@ -343,9 +370,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Q-Y1cYh4G8cDll4bwtBlR", + "parent": "yxhpYILOcqbki3FDec94S", "ctx": null, - "_testId": "urn:uuid:5976c606-bfe3-43be-bd92-f9784e996b1b", + "_testId": "urn:uuid:109c53a8-3abd-48cb-8412-26079c308227", "cell": { "columnId": "apicatalog.com", "rowId": "Cryptographic suite designers MUST use mandatory proof value properties defined in Section 2.1 Proofs, and MAY define other properties specific to their cryptographic suite." @@ -357,12 +384,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 5545, + "_idleStart": 6189, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 1, "state": "passed", "speed": "fast" }, @@ -379,9 +406,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Q-Y1cYh4G8cDll4bwtBlR", + "parent": "yxhpYILOcqbki3FDec94S", "ctx": null, - "_testId": "urn:uuid:3cfb7fe7-5064-4644-8110-5f9ff069d5f4", + "_testId": "urn:uuid:dd3b75d0-ed7a-4301-ba50-9fd272512be8", "cell": { "columnId": "apicatalog.com", "rowId": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document." @@ -393,20 +420,20 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 5545, + "_idleStart": 6190, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 124, + "duration": 110, "state": "failed", "err": { "name": "AssertionError", - "message": "Expected issuer to error when VC has an undefined type.: expected Response { status: 201, statusText: 'Created', headers: Headers { 'content-type': 'application/ld+json', 'x-cloud-trace-context': '71d6eda8a8928408b848cca9d858f744', date: 'Sun, 25 Aug 2024 05:01:38 GMT', server: 'Google Frontend', 'content-length': '745', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist", + "message": "Expected issuer to error when VC has an undefined type.: expected Response { status: 201, statusText: 'Created', headers: Headers { 'content-type': 'application/ld+json', 'x-cloud-trace-context': '2c4817b1e968039ec75a476affe0d1c9', date: 'Sun, 01 Sep 2024 05:01:38 GMT', server: 'Google Frontend', 'content-length': '745', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist", "showDiff": false, "actual": {}, "operator": "notStrictEqual", - "stack": "AssertionError: Expected issuer to error when VC has an undefined type.: expected Response { status: 201, statusText: 'Created', headers: Headers { 'content-type': 'application/ld+json', 'x-cloud-trace-context': '71d6eda8a8928408b848cca9d858f744', date: 'Sun, 25 Aug 2024 05:01:38 GMT', server: 'Google Frontend', 'content-length': '745', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at shouldFailIssuance (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:71:14)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:246:7)" + "stack": "AssertionError: Expected issuer to error when VC has an undefined type.: expected Response { status: 201, statusText: 'Created', headers: Headers { 'content-type': 'application/ld+json', 'x-cloud-trace-context': '2c4817b1e968039ec75a476affe0d1c9', date: 'Sun, 01 Sep 2024 05:01:38 GMT', server: 'Google Frontend', 'content-length': '745', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at shouldFailIssuance (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:71:14)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:258:7)" } }, { @@ -422,9 +449,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Q-Y1cYh4G8cDll4bwtBlR", + "parent": "yxhpYILOcqbki3FDec94S", "ctx": null, - "_testId": "urn:uuid:39f1712b-2eea-4c9b-9440-289ae5c0a83f", + "_testId": "urn:uuid:76a817d9-ea10-47db-8f85-c66ffaa7726d", "cell": { "columnId": "apicatalog.com", "rowId": "When an application is securing a document, if an @context property is not provided in the document or the Data Integrity terms used in the document are not mapped by existing values in the @context property, implementations SHOULD inject or append an @context property with a value of https://w3id.org/security/data-integrity/v2 or one or more contexts with at least the same declarations, such as the Verifiable Credential Data Model v2.0 context (https://www.w3.org/ns/credentials/v2)." @@ -436,12 +463,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 5672, + "_idleStart": 6302, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 54, + "duration": 57, "state": "failed", "err": { "name": "AssertionError", @@ -453,11 +480,11 @@ "options": { "credentials": "same-origin", "headers": {}, - "body": "{\"credential\":{\"id\":\"urn:uuid:5b94ea23-bd69-4087-9905-5cf9e398b18e\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"}},\"options\":{}}", + "body": "{\"credential\":{\"id\":\"urn:uuid:d51d51c6-6f38-468c-b8d5-c78d687acac6\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"}},\"options\":{}}", "method": "POST", "json": { "credential": { - "id": "urn:uuid:5b94ea23-bd69-4087-9905-5cf9e398b18e", + "id": "urn:uuid:d51d51c6-6f38-468c-b8d5-c78d687acac6", "type": [ "VerifiableCredential" ], @@ -544,7 +571,7 @@ } }, "operator": "notStrictEqual", - "stack": "AssertionError: Expected issuer apicatalog.com to perform context injection on a VC with out an \"@context\" property: expected HTTPError: Request failed with status cod… { …(6) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:442:18)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" + "stack": "AssertionError: Expected issuer apicatalog.com to perform context injection on a VC with out an \"@context\" property: expected HTTPError: Request failed with status cod… { …(6) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:454:18)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" } }, { @@ -560,9 +587,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Q-Y1cYh4G8cDll4bwtBlR", + "parent": "yxhpYILOcqbki3FDec94S", "ctx": null, - "_testId": "urn:uuid:77ceed75-c16d-40bd-8958-7f448091cb2a", + "_testId": "urn:uuid:6ee7125a-564e-4ea5-abea-5c9ed69080d6", "cell": { "columnId": "apicatalog.com", "rowId": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." @@ -587,9 +614,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Q-Y1cYh4G8cDll4bwtBlR", + "parent": "yxhpYILOcqbki3FDec94S", "ctx": null, - "_testId": "urn:uuid:7f327cfc-14cc-473d-b759-ff5dcbe13dda", + "_testId": "urn:uuid:01a28f8c-f256-42fa-ab05-a4c5e088c1d0", "cell": { "columnId": "apicatalog.com", "rowId": "The expires property is OPTIONAL and, if present, specifies when the proof expires. If present, it MUST be an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." @@ -597,7 +624,7 @@ "_events": {}, "_eventsCount": 1, "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time", - "duration": 1, + "duration": 0, "state": "passed", "speed": "fast" }, @@ -614,9 +641,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Q-Y1cYh4G8cDll4bwtBlR", + "parent": "yxhpYILOcqbki3FDec94S", "ctx": null, - "_testId": "urn:uuid:58b7f65a-aa88-4013-892d-9ece8f96fd4e", + "_testId": "urn:uuid:d2ffacde-e943-40ac-9a82-d1f2352b5d23", "cell": { "columnId": "apicatalog.com", "rowId": "The domain property is OPTIONAL. It conveys one or more security domains in which the proof is meant to be used. If specified, the associated value MUST be either a string, or an unordered set of strings. A verifier SHOULD use the value to ensure that the proof was intended to be used in the security domain in which the verifier is operating." @@ -641,9 +668,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Q-Y1cYh4G8cDll4bwtBlR", + "parent": "yxhpYILOcqbki3FDec94S", "ctx": null, - "_testId": "urn:uuid:42c7d848-b085-4dcb-9a03-a1a5f0f17555", + "_testId": "urn:uuid:b52f1e3c-4e9c-4c09-8c28-4bc562922897", "cell": { "columnId": "apicatalog.com", "rowId": "(challenge) A string value that SHOULD be included in a proof if a domain is specified." @@ -672,7 +699,7 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "Q-Y1cYh4G8cDll4bwtBlR", + "parent": "yxhpYILOcqbki3FDec94S", "ctx": null, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", "originalTitle": "\"before each\" hook", @@ -695,7 +722,7 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "Q-Y1cYh4G8cDll4bwtBlR", + "parent": "yxhpYILOcqbki3FDec94S", "ctx": null, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", "originalTitle": "\"before all\" hook", @@ -705,12 +732,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 887, + "_idleStart": 954, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 4649, + "duration": 5226, "_error": null } ], @@ -722,9 +749,9 @@ "_onlyTests": [], "_onlySuites": [], "delayed": false, - "parent": "5ehVpLQZCJPyIRT62GRLd", + "parent": "5m5Na48WUMMJzYMJrPbce", "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "_testId": "urn:uuid:6fb6078c-92e0-4d40-9994-e265a6253337" + "_testId": "urn:uuid:91fdedd9-0207-469c-a61c-09249ec7d5fd" }, { "title": "Danube Tech", @@ -744,9 +771,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "inrDQx7FuP3tRBmfKO9Ff", + "parent": "QHK1IypTjZvkcHZsBOX_g", "ctx": null, - "_testId": "urn:uuid:2c901ada-3da8-4c32-bd52-52b0bfda832d", + "_testId": "urn:uuid:74a92a1e-f1d4-4a77-8e3a-fd92ec85916a", "cell": { "columnId": "Danube Tech", "rowId": "When expressing a data integrity proof on an object, a proof property MUST be used." @@ -754,13 +781,13 @@ "_events": {}, "_eventsCount": 1, "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=When%20expressing%20a%20data%20integrity%20proof%20on%20an%20object%2C%20a%20proof%20property%20MUST%20be%20used", - "duration": 1, + "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "If present (proof), its value MUST be either a single object, or an unordered set of objects", + "title": "If present (proof), its value MUST be either a single object, or an unordered set of objects.", "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=If%20present%2C%20its%20value%20MUST%20be%20either%20a%20single%20object%2C%20or%20an%20unordered%20set%20of%20objects';\n shouldHaveProof({vc: data});\n const {proof} = data;\n const validType = isObjectOrArrayOfObjects(proof);\n validType.should.equal(true, 'Expected proof to be' +\n 'either an object or an unordered set of objects.');\n }", "async": 0, "sync": true, @@ -771,17 +798,17 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "inrDQx7FuP3tRBmfKO9Ff", + "parent": "QHK1IypTjZvkcHZsBOX_g", "ctx": null, - "_testId": "urn:uuid:cfe1db85-162c-4764-b548-5fb0a9311f7b", + "_testId": "urn:uuid:f1c4ddc9-7429-4bb0-a072-551218861dd9", "cell": { "columnId": "Danube Tech", - "rowId": "If present (proof), its value MUST be either a single object, or an unordered set of objects" + "rowId": "If present (proof), its value MUST be either a single object, or an unordered set of objects." }, "_events": {}, "_eventsCount": 1, "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=If%20present%2C%20its%20value%20MUST%20be%20either%20a%20single%20object%2C%20or%20an%20unordered%20set%20of%20objects", - "duration": 0, + "duration": 1, "state": "passed", "speed": "fast" }, @@ -798,9 +825,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "inrDQx7FuP3tRBmfKO9Ff", + "parent": "QHK1IypTjZvkcHZsBOX_g", "ctx": null, - "_testId": "urn:uuid:5de7b797-06c3-4939-becb-aa1d119472b2", + "_testId": "urn:uuid:f4126920-b06c-4578-a8ff-653cc0ce50db", "cell": { "columnId": "Danube Tech", "rowId": "(\"proof.id\") An optional identifier for the proof, which MUST be a URL." @@ -814,8 +841,8 @@ }, { "type": "test", - "title": "The specific proof type used for the cryptographic proof MUST be specified as a string that maps to a URL.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20specific%20proof%20type%20used%20for%20the%20cryptographic%20proof%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL';\n const prop = '@type';\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string', 'Expected \"proof.type\" to be a string.');\n const expanded = await jsonld.expand({\n '@context': data['@context'],\n type: proof.type\n }, {documentLoader});\n for(const term of expanded) {\n const types = term[prop];\n should.exist(types, 'Expected @type to exist.');\n types.every(url => shouldBeUrl({url, prop}));\n }\n }\n }", + "title": "The specific type of proof MUST be specified as a string that maps to a URL.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#:~:text=The%20specific%20type%20of%20proof%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL';\n const prop = '@type';\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string', 'Expected \"proof.type\" to be a string.');\n const expanded = await jsonld.expand({\n '@context': data['@context'],\n type: proof.type\n }, {documentLoader});\n for(const term of expanded) {\n const types = term[prop];\n should.exist(types, 'Expected @type to exist.');\n types.every(url => shouldBeUrl({url, prop}));\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -825,21 +852,21 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "inrDQx7FuP3tRBmfKO9Ff", + "parent": "QHK1IypTjZvkcHZsBOX_g", "ctx": null, - "_testId": "urn:uuid:e917d976-e88b-471d-b0d9-eedd5f39699c", + "_testId": "urn:uuid:5da7ddc6-f535-4842-a461-b631968f4367", "cell": { "columnId": "Danube Tech", - "rowId": "The specific proof type used for the cryptographic proof MUST be specified as a string that maps to a URL." + "rowId": "The specific type of proof MUST be specified as a string that maps to a URL." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20specific%20proof%20type%20used%20for%20the%20cryptographic%20proof%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL", + "link": "https://w3c.github.io/vc-data-integrity/#:~:text=The%20specific%20type%20of%20proof%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 6440, + "_idleStart": 7010, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -861,9 +888,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "inrDQx7FuP3tRBmfKO9Ff", + "parent": "QHK1IypTjZvkcHZsBOX_g", "ctx": null, - "_testId": "urn:uuid:46495a5b-b72a-4020-8ac9-12d1b8e4da8a", + "_testId": "urn:uuid:054b54ab-b1af-4f85-9f5b-3b94eefd178d", "cell": { "columnId": "Danube Tech", "rowId": "\"proof.type\" field MUST be \"Ed25519Signature2020\" and the associated document MUST include expected contexts." @@ -876,8 +903,35 @@ }, { "type": "test", - "title": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified. If specified, its value MUST be a string.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.';\n for(const proof of proofs) {\n if(proof.type && proof.type === 'DataIntegrityProof') {\n should.exist(\n proof.cryptosuite,\n 'If the proof type is DataIntegrityProof, cryptosuite MUST ' +\n 'be specified');\n proof.cryptosuite.should.be.a(\n 'string',\n 'cryptosuite value MUST be a string.');\n }\n }\n }", + "title": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.';\n for(const proof of proofs) {\n if(proof.type && proof.type === 'DataIntegrityProof') {\n should.exist(\n proof.cryptosuite,\n 'If the proof type is DataIntegrityProof, cryptosuite MUST ' +\n 'be specified');\n }\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "parent": "QHK1IypTjZvkcHZsBOX_g", + "ctx": null, + "_testId": "urn:uuid:e99b0a32-e1f4-4f11-8eb7-54b21df0f0d3", + "cell": { + "columnId": "Danube Tech", + "rowId": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified." + }, + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.", + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "If specified (proof.cryptosuite), its value MUST be a string.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.';\n for(const proof of proofs) {\n if(proof.cryptosuite) {\n proof.cryptosuite.should.be.a(\n 'string',\n 'cryptosuite value MUST be a string.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -887,12 +941,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "inrDQx7FuP3tRBmfKO9Ff", + "parent": "QHK1IypTjZvkcHZsBOX_g", "ctx": null, - "_testId": "urn:uuid:5538d877-9dee-43a5-8b58-0d67208d9bab", + "_testId": "urn:uuid:d43590f6-2ba7-4731-907b-7dfaef4fb172", "cell": { "columnId": "Danube Tech", - "rowId": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified. If specified, its value MUST be a string." + "rowId": "If specified (proof.cryptosuite), its value MUST be a string." }, "_events": {}, "_eventsCount": 1, @@ -903,8 +957,8 @@ }, { "type": "test", - "title": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL]", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=A%20verification%20method%20is%20the%20means%20and%20information%20needed%20to%20verify%20the%20proof.%20If%20included%2C%20the%20value%20MUST%20be%20a%20string%20that%20maps%20to%20a%20%5BURL%5D.';\n for(const proof of proofs) {\n await shouldMapToUrl({\n doc: {\n '@context': data['@context'],\n ...proof\n },\n term: 'https://w3id.org/security#verificationMethod',\n prop: '@id',\n documentLoader\n });\n }\n }", + "title": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL].", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=A%20verification%20method%20is%20the%20means%20and%20information%20needed%20to%20verify%20the%20proof.%20If%20included%2C%20the%20value%20MUST%20be%20a%20string%20that%20maps%20to%20a%20%5BURL%5D.';\n for(const proof of proofs) {\n if(!data || !data?.['@context']) {\n throw new Error(`Expected ${vendorName} to issue a VC.`);\n }\n await shouldMapToUrl({\n doc: {\n '@context': data['@context'],\n ...proof\n },\n term: 'https://w3id.org/security#verificationMethod',\n prop: '@id',\n documentLoader\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -914,12 +968,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "inrDQx7FuP3tRBmfKO9Ff", + "parent": "QHK1IypTjZvkcHZsBOX_g", "ctx": null, - "_testId": "urn:uuid:83a0a4ed-9feb-4759-8d97-21bbf0e278c3", + "_testId": "urn:uuid:f13938a7-84c4-41a5-8c6d-a092703ed48b", "cell": { "columnId": "Danube Tech", - "rowId": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL]" + "rowId": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL]." }, "_events": {}, "_eventsCount": 1, @@ -928,7 +982,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 6441, + "_idleStart": 7011, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -939,7 +993,7 @@ }, { "type": "test", - "title": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL", + "title": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL.", "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20reason%20the%20proof%20was%20created%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL';\n for(const proof of proofs) {\n proof.should.have.property('proofPurpose');\n proof.proofPurpose.should.be.a('string');\n await shouldMapToUrl({\n doc: {\n '@context': data['@context'],\n ...proof\n },\n term: 'https://w3id.org/security#proofPurpose',\n prop: '@id',\n documentLoader\n });\n }\n }", "async": 0, "sync": true, @@ -950,12 +1004,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "inrDQx7FuP3tRBmfKO9Ff", + "parent": "QHK1IypTjZvkcHZsBOX_g", "ctx": null, - "_testId": "urn:uuid:81b9909d-3a2c-4153-ab66-a0ab7c7b5b45", + "_testId": "urn:uuid:05157cdc-78fc-459e-9c1a-7da32758334e", "cell": { "columnId": "Danube Tech", - "rowId": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL" + "rowId": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL." }, "_events": {}, "_eventsCount": 1, @@ -964,7 +1018,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 6442, + "_idleStart": 7013, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -975,8 +1029,8 @@ }, { "type": "test", - "title": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof';\n for(const proof of proofs) {\n should.exist(proof, 'Expected proof to exist.');\n const {\n prefix: expectedPrefix,\n name: encodingName\n } = expectedMultibasePrefix(proof.cryptosuite);\n shouldHaveProofValue({proof, expectedPrefix, encodingName});\n }\n }", + "title": "(\"proof.proofValue\") A string value that expresses base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The value MUST use a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification to express the binary data.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#:~:text=A%20string%20value%20that%20expresses%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof%20using%20the%20verificationMethod%20specified.%20The%20value%20MUST%20use%20a%20header%20and%20encoding%20as%20described%20in%20Section%202.4%20Multibase%20of%20the%20Controller%20Documents%201.0%20specification%20to%20express%20the%20binary%20data.';\n for(const proof of proofs) {\n should.exist(proof, 'Expected proof to exist.');\n //FIXME the suite should pass in the expectedPrefix and\n //encodingName or type\n const {\n prefix: expectedPrefix,\n name: encodingName\n } = expectedMultibasePrefix(proof.cryptosuite);\n shouldHaveProofValue({proof, expectedPrefix, encodingName});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -986,16 +1040,16 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "inrDQx7FuP3tRBmfKO9Ff", + "parent": "QHK1IypTjZvkcHZsBOX_g", "ctx": null, - "_testId": "urn:uuid:53f08919-b056-40ca-94b0-674b05a30015", + "_testId": "urn:uuid:8c8271f2-a827-48b6-ba31-4971cef9ba1a", "cell": { "columnId": "Danube Tech", - "rowId": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification." + "rowId": "(\"proof.proofValue\") A string value that expresses base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The value MUST use a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification to express the binary data." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof", + "link": "https://w3c.github.io/vc-data-integrity/#:~:text=A%20string%20value%20that%20expresses%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof%20using%20the%20verificationMethod%20specified.%20The%20value%20MUST%20use%20a%20header%20and%20encoding%20as%20described%20in%20Section%202.4%20Multibase%20of%20the%20Controller%20Documents%201.0%20specification%20to%20express%20the%20binary%20data.", "duration": 0, "state": "passed", "speed": "fast" @@ -1013,9 +1067,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "inrDQx7FuP3tRBmfKO9Ff", + "parent": "QHK1IypTjZvkcHZsBOX_g", "ctx": null, - "_testId": "urn:uuid:65e4620a-9be8-4239-8167-35589a9bb3d8", + "_testId": "urn:uuid:acb10bbc-35e1-4205-be7f-49e1dd39d022", "cell": { "columnId": "Danube Tech", "rowId": "if \"proof.previousProof\" field exists, it MUST be a string." @@ -1039,9 +1093,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "inrDQx7FuP3tRBmfKO9Ff", + "parent": "QHK1IypTjZvkcHZsBOX_g", "ctx": null, - "_testId": "urn:uuid:78242c8a-e120-45b3-a26a-ef4e809adf01", + "_testId": "urn:uuid:31d8e168-177a-442d-a835-7042212bf740", "cell": { "columnId": "Danube Tech", "rowId": "if \"proof.nonce\" field exists, it MUST be a string." @@ -1065,9 +1119,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "inrDQx7FuP3tRBmfKO9Ff", + "parent": "QHK1IypTjZvkcHZsBOX_g", "ctx": null, - "_testId": "urn:uuid:e4b9bafd-1c1b-408d-8197-fa9974cdc5d2", + "_testId": "urn:uuid:24880f6d-b85b-402a-8859-6efeeee84bfb", "cell": { "columnId": "Danube Tech", "rowId": "Cryptographic suite designers MUST use mandatory proof value properties defined in Section 2.1 Proofs, and MAY define other properties specific to their cryptographic suite." @@ -1079,7 +1133,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 6444, + "_idleStart": 7015, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -1101,9 +1155,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "inrDQx7FuP3tRBmfKO9Ff", + "parent": "QHK1IypTjZvkcHZsBOX_g", "ctx": null, - "_testId": "urn:uuid:a3737447-48cd-444e-83a9-90cfc73775e3", + "_testId": "urn:uuid:63556c25-db38-4b4d-a77b-21ce26482d69", "cell": { "columnId": "Danube Tech", "rowId": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document." @@ -1115,12 +1169,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 6445, + "_idleStart": 7015, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 638, + "duration": 643, "state": "passed", "speed": "slow" }, @@ -1137,9 +1191,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "inrDQx7FuP3tRBmfKO9Ff", + "parent": "QHK1IypTjZvkcHZsBOX_g", "ctx": null, - "_testId": "urn:uuid:8369cf07-a5e3-45aa-be85-a65633ab39df", + "_testId": "urn:uuid:71b2261c-6df8-4a5d-ab8a-7cee06c94634", "cell": { "columnId": "Danube Tech", "rowId": "When an application is securing a document, if an @context property is not provided in the document or the Data Integrity terms used in the document are not mapped by existing values in the @context property, implementations SHOULD inject or append an @context property with a value of https://w3id.org/security/data-integrity/v2 or one or more contexts with at least the same declarations, such as the Verifiable Credential Data Model v2.0 context (https://www.w3.org/ns/credentials/v2)." @@ -1151,12 +1205,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7083, + "_idleStart": 7658, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 111, + "duration": 108, "state": "failed", "err": { "name": "AssertionError", @@ -1168,11 +1222,11 @@ "options": { "credentials": "same-origin", "headers": {}, - "body": "{\"credential\":{\"id\":\"urn:uuid:76fdc040-c10c-4df0-a371-4e364ed1a17f\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MksvTdeczd92YQ5W2V2gL9kXdRvD2AEiyJPoWieP95HUDo\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"}},\"options\":{\"type\":\"Ed25519Signature2020\"}}", + "body": "{\"credential\":{\"id\":\"urn:uuid:76308318-91f0-4a20-811e-de38e4736060\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MksvTdeczd92YQ5W2V2gL9kXdRvD2AEiyJPoWieP95HUDo\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"}},\"options\":{\"type\":\"Ed25519Signature2020\"}}", "method": "POST", "json": { "credential": { - "id": "urn:uuid:76fdc040-c10c-4df0-a371-4e364ed1a17f", + "id": "urn:uuid:76308318-91f0-4a20-811e-de38e4736060", "type": [ "VerifiableCredential" ], @@ -1261,7 +1315,7 @@ ] }, "operator": "notStrictEqual", - "stack": "AssertionError: Expected issuer Danube Tech to perform context injection on a VC with out an \"@context\" property: expected HTTPError: Request failed with status cod… { …(6) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:442:18)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" + "stack": "AssertionError: Expected issuer Danube Tech to perform context injection on a VC with out an \"@context\" property: expected HTTPError: Request failed with status cod… { …(6) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:454:18)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" } }, { @@ -1277,9 +1331,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "inrDQx7FuP3tRBmfKO9Ff", + "parent": "QHK1IypTjZvkcHZsBOX_g", "ctx": null, - "_testId": "urn:uuid:1344a5b7-cab9-4f55-bb17-ec88e38a7634", + "_testId": "urn:uuid:f4cfac53-0376-4dab-a16a-6f00272fa310", "cell": { "columnId": "Danube Tech", "rowId": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." @@ -1304,9 +1358,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "inrDQx7FuP3tRBmfKO9Ff", + "parent": "QHK1IypTjZvkcHZsBOX_g", "ctx": null, - "_testId": "urn:uuid:a0f0b975-2b72-478b-b845-5ce6c82f18b5", + "_testId": "urn:uuid:9c56030f-b81f-4e09-83f6-5b0f69418693", "cell": { "columnId": "Danube Tech", "rowId": "The expires property is OPTIONAL and, if present, specifies when the proof expires. If present, it MUST be an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." @@ -1331,9 +1385,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "inrDQx7FuP3tRBmfKO9Ff", + "parent": "QHK1IypTjZvkcHZsBOX_g", "ctx": null, - "_testId": "urn:uuid:75c63d27-fa17-413a-af43-ea7e0b1182bb", + "_testId": "urn:uuid:68c7679f-3d96-4da6-8ba2-3b8417dd9006", "cell": { "columnId": "Danube Tech", "rowId": "The domain property is OPTIONAL. It conveys one or more security domains in which the proof is meant to be used. If specified, the associated value MUST be either a string, or an unordered set of strings. A verifier SHOULD use the value to ensure that the proof was intended to be used in the security domain in which the verifier is operating." @@ -1358,9 +1412,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "inrDQx7FuP3tRBmfKO9Ff", + "parent": "QHK1IypTjZvkcHZsBOX_g", "ctx": null, - "_testId": "urn:uuid:db001d9a-7477-422a-b6d4-09b5c6734638", + "_testId": "urn:uuid:694f29ed-483f-4e20-822a-5f6f41712b99", "cell": { "columnId": "Danube Tech", "rowId": "(challenge) A string value that SHOULD be included in a proof if a domain is specified." @@ -1368,7 +1422,7 @@ "_events": {}, "_eventsCount": 1, "link": "https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=A%20string%20value%20that%20SHOULD%20be%20included%20in%20a%20proof%20if%20a%20domain%20is%20specified.", - "duration": 1, + "duration": 0, "state": "passed", "speed": "fast" } @@ -1389,7 +1443,7 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "inrDQx7FuP3tRBmfKO9Ff", + "parent": "QHK1IypTjZvkcHZsBOX_g", "ctx": null, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", "originalTitle": "\"before each\" hook", @@ -1412,7 +1466,7 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "inrDQx7FuP3tRBmfKO9Ff", + "parent": "QHK1IypTjZvkcHZsBOX_g", "ctx": null, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", "originalTitle": "\"before all\" hook", @@ -1422,12 +1476,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 5729, + "_idleStart": 6362, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 710, + "duration": 646, "_error": null } ], @@ -1439,9 +1493,9 @@ "_onlyTests": [], "_onlySuites": [], "delayed": false, - "parent": "5ehVpLQZCJPyIRT62GRLd", + "parent": "5m5Na48WUMMJzYMJrPbce", "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "_testId": "urn:uuid:3b964bb4-cd71-401d-9feb-9e261f1014e1" + "_testId": "urn:uuid:945bbc2d-f3f7-4d61-af05-42cd945efecd" }, { "title": "Digital Bazaar", @@ -1461,9 +1515,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "rrzz3mWjDHnKXxRkUzYAu", + "parent": "3oybt7im9lmDGUjG_T3ge", "ctx": null, - "_testId": "urn:uuid:6f8a3ee1-ee60-48b0-8751-ba0214677d4e", + "_testId": "urn:uuid:47eea56a-0f8f-4ee1-ac7a-e227452d1ab3", "cell": { "columnId": "Digital Bazaar", "rowId": "When expressing a data integrity proof on an object, a proof property MUST be used." @@ -1471,13 +1525,13 @@ "_events": {}, "_eventsCount": 1, "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=When%20expressing%20a%20data%20integrity%20proof%20on%20an%20object%2C%20a%20proof%20property%20MUST%20be%20used", - "duration": 0, + "duration": 1, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "If present (proof), its value MUST be either a single object, or an unordered set of objects", + "title": "If present (proof), its value MUST be either a single object, or an unordered set of objects.", "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=If%20present%2C%20its%20value%20MUST%20be%20either%20a%20single%20object%2C%20or%20an%20unordered%20set%20of%20objects';\n shouldHaveProof({vc: data});\n const {proof} = data;\n const validType = isObjectOrArrayOfObjects(proof);\n validType.should.equal(true, 'Expected proof to be' +\n 'either an object or an unordered set of objects.');\n }", "async": 0, "sync": true, @@ -1488,12 +1542,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "rrzz3mWjDHnKXxRkUzYAu", + "parent": "3oybt7im9lmDGUjG_T3ge", "ctx": null, - "_testId": "urn:uuid:cbb5397f-2ea3-4238-8a63-8bc0fbdba487", + "_testId": "urn:uuid:2f40a98b-ca6d-40c4-9b23-12dafb21ab43", "cell": { "columnId": "Digital Bazaar", - "rowId": "If present (proof), its value MUST be either a single object, or an unordered set of objects" + "rowId": "If present (proof), its value MUST be either a single object, or an unordered set of objects." }, "_events": {}, "_eventsCount": 1, @@ -1515,9 +1569,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "rrzz3mWjDHnKXxRkUzYAu", + "parent": "3oybt7im9lmDGUjG_T3ge", "ctx": null, - "_testId": "urn:uuid:bb40066d-7ab0-4f58-a4f1-7ae1e9be6a0f", + "_testId": "urn:uuid:54834b59-6225-4863-b7a3-6de82a90ad01", "cell": { "columnId": "Digital Bazaar", "rowId": "(\"proof.id\") An optional identifier for the proof, which MUST be a URL." @@ -1531,8 +1585,8 @@ }, { "type": "test", - "title": "The specific proof type used for the cryptographic proof MUST be specified as a string that maps to a URL.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20specific%20proof%20type%20used%20for%20the%20cryptographic%20proof%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL';\n const prop = '@type';\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string', 'Expected \"proof.type\" to be a string.');\n const expanded = await jsonld.expand({\n '@context': data['@context'],\n type: proof.type\n }, {documentLoader});\n for(const term of expanded) {\n const types = term[prop];\n should.exist(types, 'Expected @type to exist.');\n types.every(url => shouldBeUrl({url, prop}));\n }\n }\n }", + "title": "The specific type of proof MUST be specified as a string that maps to a URL.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#:~:text=The%20specific%20type%20of%20proof%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL';\n const prop = '@type';\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string', 'Expected \"proof.type\" to be a string.');\n const expanded = await jsonld.expand({\n '@context': data['@context'],\n type: proof.type\n }, {documentLoader});\n for(const term of expanded) {\n const types = term[prop];\n should.exist(types, 'Expected @type to exist.');\n types.every(url => shouldBeUrl({url, prop}));\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -1542,26 +1596,26 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "rrzz3mWjDHnKXxRkUzYAu", + "parent": "3oybt7im9lmDGUjG_T3ge", "ctx": null, - "_testId": "urn:uuid:5131ec24-74a5-4149-8142-05e11b0072e1", + "_testId": "urn:uuid:4f7dd69e-519d-4860-b877-247a84a1b5be", "cell": { "columnId": "Digital Bazaar", - "rowId": "The specific proof type used for the cryptographic proof MUST be specified as a string that maps to a URL." + "rowId": "The specific type of proof MUST be specified as a string that maps to a URL." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20specific%20proof%20type%20used%20for%20the%20cryptographic%20proof%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL", + "link": "https://w3c.github.io/vc-data-integrity/#:~:text=The%20specific%20type%20of%20proof%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7765, + "_idleStart": 8510, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 1, "state": "passed", "speed": "fast" }, @@ -1578,23 +1632,50 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "rrzz3mWjDHnKXxRkUzYAu", + "parent": "3oybt7im9lmDGUjG_T3ge", "ctx": null, - "_testId": "urn:uuid:b882a79d-a70a-4c06-925c-2dde9ec2e031", + "_testId": "urn:uuid:6f90bfc6-c495-4ed7-8589-23573285daa4", "cell": { "columnId": "Digital Bazaar", "rowId": "\"proof.type\" field MUST be \"Ed25519Signature2020\" and the associated document MUST include expected contexts." }, "_events": {}, "_eventsCount": 1, + "duration": 1, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.';\n for(const proof of proofs) {\n if(proof.type && proof.type === 'DataIntegrityProof') {\n should.exist(\n proof.cryptosuite,\n 'If the proof type is DataIntegrityProof, cryptosuite MUST ' +\n 'be specified');\n }\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "parent": "3oybt7im9lmDGUjG_T3ge", + "ctx": null, + "_testId": "urn:uuid:63002620-7b09-4ae4-94b6-df8d7e9bc30e", + "cell": { + "columnId": "Digital Bazaar", + "rowId": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified." + }, + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.", "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified. If specified, its value MUST be a string.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.';\n for(const proof of proofs) {\n if(proof.type && proof.type === 'DataIntegrityProof') {\n should.exist(\n proof.cryptosuite,\n 'If the proof type is DataIntegrityProof, cryptosuite MUST ' +\n 'be specified');\n proof.cryptosuite.should.be.a(\n 'string',\n 'cryptosuite value MUST be a string.');\n }\n }\n }", + "title": "If specified (proof.cryptosuite), its value MUST be a string.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.';\n for(const proof of proofs) {\n if(proof.cryptosuite) {\n proof.cryptosuite.should.be.a(\n 'string',\n 'cryptosuite value MUST be a string.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -1604,12 +1685,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "rrzz3mWjDHnKXxRkUzYAu", + "parent": "3oybt7im9lmDGUjG_T3ge", "ctx": null, - "_testId": "urn:uuid:b8577dfe-60ca-42e4-b1e3-6b5c89333e7d", + "_testId": "urn:uuid:d017b08e-a296-46a5-910f-9f6929d31689", "cell": { "columnId": "Digital Bazaar", - "rowId": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified. If specified, its value MUST be a string." + "rowId": "If specified (proof.cryptosuite), its value MUST be a string." }, "_events": {}, "_eventsCount": 1, @@ -1620,8 +1701,8 @@ }, { "type": "test", - "title": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL]", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=A%20verification%20method%20is%20the%20means%20and%20information%20needed%20to%20verify%20the%20proof.%20If%20included%2C%20the%20value%20MUST%20be%20a%20string%20that%20maps%20to%20a%20%5BURL%5D.';\n for(const proof of proofs) {\n await shouldMapToUrl({\n doc: {\n '@context': data['@context'],\n ...proof\n },\n term: 'https://w3id.org/security#verificationMethod',\n prop: '@id',\n documentLoader\n });\n }\n }", + "title": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL].", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=A%20verification%20method%20is%20the%20means%20and%20information%20needed%20to%20verify%20the%20proof.%20If%20included%2C%20the%20value%20MUST%20be%20a%20string%20that%20maps%20to%20a%20%5BURL%5D.';\n for(const proof of proofs) {\n if(!data || !data?.['@context']) {\n throw new Error(`Expected ${vendorName} to issue a VC.`);\n }\n await shouldMapToUrl({\n doc: {\n '@context': data['@context'],\n ...proof\n },\n term: 'https://w3id.org/security#verificationMethod',\n prop: '@id',\n documentLoader\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -1631,12 +1712,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "rrzz3mWjDHnKXxRkUzYAu", + "parent": "3oybt7im9lmDGUjG_T3ge", "ctx": null, - "_testId": "urn:uuid:cfaa0838-26b6-460c-9586-7bb2b46f59fb", + "_testId": "urn:uuid:410c7fae-fcd4-4037-8abc-3c9aa5c3333e", "cell": { "columnId": "Digital Bazaar", - "rowId": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL]" + "rowId": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL]." }, "_events": {}, "_eventsCount": 1, @@ -1645,7 +1726,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7766, + "_idleStart": 8512, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -1656,7 +1737,7 @@ }, { "type": "test", - "title": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL", + "title": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL.", "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20reason%20the%20proof%20was%20created%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL';\n for(const proof of proofs) {\n proof.should.have.property('proofPurpose');\n proof.proofPurpose.should.be.a('string');\n await shouldMapToUrl({\n doc: {\n '@context': data['@context'],\n ...proof\n },\n term: 'https://w3id.org/security#proofPurpose',\n prop: '@id',\n documentLoader\n });\n }\n }", "async": 0, "sync": true, @@ -1667,12 +1748,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "rrzz3mWjDHnKXxRkUzYAu", + "parent": "3oybt7im9lmDGUjG_T3ge", "ctx": null, - "_testId": "urn:uuid:a15a352b-3c7a-462a-81b5-fd93edfd315f", + "_testId": "urn:uuid:aff2325d-de78-47ad-846f-fcae614c9ace", "cell": { "columnId": "Digital Bazaar", - "rowId": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL" + "rowId": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL." }, "_events": {}, "_eventsCount": 1, @@ -1681,7 +1762,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7768, + "_idleStart": 8513, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -1692,8 +1773,8 @@ }, { "type": "test", - "title": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof';\n for(const proof of proofs) {\n should.exist(proof, 'Expected proof to exist.');\n const {\n prefix: expectedPrefix,\n name: encodingName\n } = expectedMultibasePrefix(proof.cryptosuite);\n shouldHaveProofValue({proof, expectedPrefix, encodingName});\n }\n }", + "title": "(\"proof.proofValue\") A string value that expresses base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The value MUST use a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification to express the binary data.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#:~:text=A%20string%20value%20that%20expresses%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof%20using%20the%20verificationMethod%20specified.%20The%20value%20MUST%20use%20a%20header%20and%20encoding%20as%20described%20in%20Section%202.4%20Multibase%20of%20the%20Controller%20Documents%201.0%20specification%20to%20express%20the%20binary%20data.';\n for(const proof of proofs) {\n should.exist(proof, 'Expected proof to exist.');\n //FIXME the suite should pass in the expectedPrefix and\n //encodingName or type\n const {\n prefix: expectedPrefix,\n name: encodingName\n } = expectedMultibasePrefix(proof.cryptosuite);\n shouldHaveProofValue({proof, expectedPrefix, encodingName});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -1703,16 +1784,16 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "rrzz3mWjDHnKXxRkUzYAu", + "parent": "3oybt7im9lmDGUjG_T3ge", "ctx": null, - "_testId": "urn:uuid:419d3735-72d0-41e7-9d3e-41b6a79be90d", + "_testId": "urn:uuid:a586d94b-e422-4898-8554-8df57400c87e", "cell": { "columnId": "Digital Bazaar", - "rowId": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification." + "rowId": "(\"proof.proofValue\") A string value that expresses base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The value MUST use a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification to express the binary data." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof", + "link": "https://w3c.github.io/vc-data-integrity/#:~:text=A%20string%20value%20that%20expresses%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof%20using%20the%20verificationMethod%20specified.%20The%20value%20MUST%20use%20a%20header%20and%20encoding%20as%20described%20in%20Section%202.4%20Multibase%20of%20the%20Controller%20Documents%201.0%20specification%20to%20express%20the%20binary%20data.", "duration": 0, "state": "passed", "speed": "fast" @@ -1730,9 +1811,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "rrzz3mWjDHnKXxRkUzYAu", + "parent": "3oybt7im9lmDGUjG_T3ge", "ctx": null, - "_testId": "urn:uuid:716fe3cc-4884-4847-ad97-3ef366f1567a", + "_testId": "urn:uuid:75579440-05ba-4795-af8f-50352b68158e", "cell": { "columnId": "Digital Bazaar", "rowId": "if \"proof.previousProof\" field exists, it MUST be a string." @@ -1756,9 +1837,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "rrzz3mWjDHnKXxRkUzYAu", + "parent": "3oybt7im9lmDGUjG_T3ge", "ctx": null, - "_testId": "urn:uuid:8e5e1571-989f-4ad5-b2af-e57dc2582661", + "_testId": "urn:uuid:78fe6f88-3416-4318-a43c-662cc2e18f40", "cell": { "columnId": "Digital Bazaar", "rowId": "if \"proof.nonce\" field exists, it MUST be a string." @@ -1782,9 +1863,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "rrzz3mWjDHnKXxRkUzYAu", + "parent": "3oybt7im9lmDGUjG_T3ge", "ctx": null, - "_testId": "urn:uuid:9190db1b-5c97-4634-af8d-78fd067b48df", + "_testId": "urn:uuid:a8eec967-f8e4-4e29-b5fe-4df3b940cd9c", "cell": { "columnId": "Digital Bazaar", "rowId": "Cryptographic suite designers MUST use mandatory proof value properties defined in Section 2.1 Proofs, and MAY define other properties specific to their cryptographic suite." @@ -1796,12 +1877,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7769, + "_idleStart": 8515, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 1, "state": "passed", "speed": "fast" }, @@ -1818,9 +1899,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "rrzz3mWjDHnKXxRkUzYAu", + "parent": "3oybt7im9lmDGUjG_T3ge", "ctx": null, - "_testId": "urn:uuid:f32efced-78ae-48eb-aaf0-5a3360f29b52", + "_testId": "urn:uuid:769e2fc9-4ee0-4f4b-9d1d-90407b4a9d22", "cell": { "columnId": "Digital Bazaar", "rowId": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document." @@ -1832,12 +1913,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7770, + "_idleStart": 8515, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 477, + "duration": 96, "state": "passed", "speed": "slow" }, @@ -1854,9 +1935,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "rrzz3mWjDHnKXxRkUzYAu", + "parent": "3oybt7im9lmDGUjG_T3ge", "ctx": null, - "_testId": "urn:uuid:3da7e14f-4e72-4690-8196-b99674fdbbe0", + "_testId": "urn:uuid:b7f55538-2d56-47d1-a8fd-aa6c0381e0a5", "cell": { "columnId": "Digital Bazaar", "rowId": "When an application is securing a document, if an @context property is not provided in the document or the Data Integrity terms used in the document are not mapped by existing values in the @context property, implementations SHOULD inject or append an @context property with a value of https://w3id.org/security/data-integrity/v2 or one or more contexts with at least the same declarations, such as the Verifiable Credential Data Model v2.0 context (https://www.w3.org/ns/credentials/v2)." @@ -1868,12 +1949,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 8248, + "_idleStart": 8612, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 54, + "duration": 71, "state": "failed", "err": { "name": "AssertionError", @@ -1888,7 +1969,7 @@ "method": "POST", "json": { "credential": { - "id": "urn:uuid:7e7147d4-1fad-49ac-b043-9773bf4b42e9", + "id": "urn:uuid:36f0a27b-4c62-4631-a9c5-0680a9c30013", "type": [ "VerifiableCredential" ], @@ -1964,7 +2045,7 @@ "timeout": 10000, "signal": {}, "duplex": "half", - "body": "{\"credential\":{\"id\":\"urn:uuid:7e7147d4-1fad-49ac-b043-9773bf4b42e9\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkkZu37ESix41fjPc2bFJ6eGsz1mbzdSn1MYcuU2qWBDAN\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"}},\"options\":{}}" + "body": "{\"credential\":{\"id\":\"urn:uuid:36f0a27b-4c62-4631-a9c5-0680a9c30013\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkkZu37ESix41fjPc2bFJ6eGsz1mbzdSn1MYcuU2qWBDAN\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"}},\"options\":{}}" }, "name": "HTTPError", "requestUrl": "https://vc2.veresissuer.dev/issuers/z1A5TMiJPYBhYCutYH2XZULjt/credentials/issue", @@ -1981,7 +2062,7 @@ "details": { "instance": { "credential": { - "id": "urn:uuid:7e7147d4-1fad-49ac-b043-9773bf4b42e9", + "id": "urn:uuid:36f0a27b-4c62-4631-a9c5-0680a9c30013", "type": [ "VerifiableCredential" ], @@ -2004,7 +2085,7 @@ "title": "" }, "value": { - "id": "urn:uuid:7e7147d4-1fad-49ac-b043-9773bf4b42e9", + "id": "urn:uuid:36f0a27b-4c62-4631-a9c5-0680a9c30013", "type": [ "VerifiableCredential" ], @@ -2026,7 +2107,7 @@ } }, "operator": "notStrictEqual", - "stack": "AssertionError: Expected issuer Digital Bazaar to perform context injection on a VC with out an \"@context\" property: expected HTTPError: A validation error occured in … { …(6) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:442:18)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" + "stack": "AssertionError: Expected issuer Digital Bazaar to perform context injection on a VC with out an \"@context\" property: expected HTTPError: A validation error occured in … { …(6) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:454:18)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" } }, { @@ -2042,9 +2123,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "rrzz3mWjDHnKXxRkUzYAu", + "parent": "3oybt7im9lmDGUjG_T3ge", "ctx": null, - "_testId": "urn:uuid:c84b2772-16b1-4697-b9a4-56fb1ca166d2", + "_testId": "urn:uuid:f695036a-3405-4190-babe-061e83df4ead", "cell": { "columnId": "Digital Bazaar", "rowId": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." @@ -2069,9 +2150,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "rrzz3mWjDHnKXxRkUzYAu", + "parent": "3oybt7im9lmDGUjG_T3ge", "ctx": null, - "_testId": "urn:uuid:558e6a44-4ec7-4eb6-ae95-d8436916f651", + "_testId": "urn:uuid:0b97e0f1-8ea0-430a-9137-d59ef990bda3", "cell": { "columnId": "Digital Bazaar", "rowId": "The expires property is OPTIONAL and, if present, specifies when the proof expires. If present, it MUST be an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." @@ -2096,9 +2177,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "rrzz3mWjDHnKXxRkUzYAu", + "parent": "3oybt7im9lmDGUjG_T3ge", "ctx": null, - "_testId": "urn:uuid:091bb158-d997-45c7-83d9-e308cb2756b2", + "_testId": "urn:uuid:c9975271-3a96-476c-9dcf-ac42d037b499", "cell": { "columnId": "Digital Bazaar", "rowId": "The domain property is OPTIONAL. It conveys one or more security domains in which the proof is meant to be used. If specified, the associated value MUST be either a string, or an unordered set of strings. A verifier SHOULD use the value to ensure that the proof was intended to be used in the security domain in which the verifier is operating." @@ -2123,9 +2204,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "rrzz3mWjDHnKXxRkUzYAu", + "parent": "3oybt7im9lmDGUjG_T3ge", "ctx": null, - "_testId": "urn:uuid:a19438e8-9589-476e-8e6d-0ed75562bd20", + "_testId": "urn:uuid:0ab7c0c9-2ed0-4caf-a218-4374a07d4d23", "cell": { "columnId": "Digital Bazaar", "rowId": "(challenge) A string value that SHOULD be included in a proof if a domain is specified." @@ -2154,7 +2235,7 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "rrzz3mWjDHnKXxRkUzYAu", + "parent": "3oybt7im9lmDGUjG_T3ge", "ctx": null, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", "originalTitle": "\"before each\" hook", @@ -2177,7 +2258,7 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "rrzz3mWjDHnKXxRkUzYAu", + "parent": "3oybt7im9lmDGUjG_T3ge", "ctx": null, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", "originalTitle": "\"before all\" hook", @@ -2187,12 +2268,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7197, + "_idleStart": 7769, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 568, + "duration": 740, "_error": null } ], @@ -2204,9 +2285,9 @@ "_onlyTests": [], "_onlySuites": [], "delayed": false, - "parent": "5ehVpLQZCJPyIRT62GRLd", + "parent": "5m5Na48WUMMJzYMJrPbce", "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "_testId": "urn:uuid:d04fe73b-1461-4f5c-aa2a-22ba1c3c7e4e" + "_testId": "urn:uuid:c5d1984d-53ad-403f-9995-0bd3ff1e6acf" }, { "title": "EWF", @@ -2226,9 +2307,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Njo-kHgHfWhU47zHweHTV", + "parent": "tikRDf1hNC-fQs8dM6EPO", "ctx": null, - "_testId": "urn:uuid:f788f947-d929-4f9c-99fb-61162aef109c", + "_testId": "urn:uuid:f052a646-938d-454a-9e65-e7beac134cac", "cell": { "columnId": "EWF", "rowId": "When expressing a data integrity proof on an object, a proof property MUST be used." @@ -2242,7 +2323,7 @@ }, { "type": "test", - "title": "If present (proof), its value MUST be either a single object, or an unordered set of objects", + "title": "If present (proof), its value MUST be either a single object, or an unordered set of objects.", "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=If%20present%2C%20its%20value%20MUST%20be%20either%20a%20single%20object%2C%20or%20an%20unordered%20set%20of%20objects';\n shouldHaveProof({vc: data});\n const {proof} = data;\n const validType = isObjectOrArrayOfObjects(proof);\n validType.should.equal(true, 'Expected proof to be' +\n 'either an object or an unordered set of objects.');\n }", "async": 0, "sync": true, @@ -2253,12 +2334,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Njo-kHgHfWhU47zHweHTV", + "parent": "tikRDf1hNC-fQs8dM6EPO", "ctx": null, - "_testId": "urn:uuid:accffecb-4235-454a-951d-41ad9c764082", + "_testId": "urn:uuid:50c38a5e-10d7-4c21-965d-732896acd8fc", "cell": { "columnId": "EWF", - "rowId": "If present (proof), its value MUST be either a single object, or an unordered set of objects" + "rowId": "If present (proof), its value MUST be either a single object, or an unordered set of objects." }, "_events": {}, "_eventsCount": 1, @@ -2280,9 +2361,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Njo-kHgHfWhU47zHweHTV", + "parent": "tikRDf1hNC-fQs8dM6EPO", "ctx": null, - "_testId": "urn:uuid:bb7f7f44-d900-4dc0-b51b-d76fd2e6502d", + "_testId": "urn:uuid:85138f4c-3dee-41b6-8190-723222f94a0f", "cell": { "columnId": "EWF", "rowId": "(\"proof.id\") An optional identifier for the proof, which MUST be a URL." @@ -2296,8 +2377,8 @@ }, { "type": "test", - "title": "The specific proof type used for the cryptographic proof MUST be specified as a string that maps to a URL.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20specific%20proof%20type%20used%20for%20the%20cryptographic%20proof%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL';\n const prop = '@type';\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string', 'Expected \"proof.type\" to be a string.');\n const expanded = await jsonld.expand({\n '@context': data['@context'],\n type: proof.type\n }, {documentLoader});\n for(const term of expanded) {\n const types = term[prop];\n should.exist(types, 'Expected @type to exist.');\n types.every(url => shouldBeUrl({url, prop}));\n }\n }\n }", + "title": "The specific type of proof MUST be specified as a string that maps to a URL.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#:~:text=The%20specific%20type%20of%20proof%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL';\n const prop = '@type';\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string', 'Expected \"proof.type\" to be a string.');\n const expanded = await jsonld.expand({\n '@context': data['@context'],\n type: proof.type\n }, {documentLoader});\n for(const term of expanded) {\n const types = term[prop];\n should.exist(types, 'Expected @type to exist.');\n types.every(url => shouldBeUrl({url, prop}));\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -2307,21 +2388,21 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Njo-kHgHfWhU47zHweHTV", + "parent": "tikRDf1hNC-fQs8dM6EPO", "ctx": null, - "_testId": "urn:uuid:406bff43-317f-495b-a53c-7d10674625fa", + "_testId": "urn:uuid:e6842c5f-6f94-4028-be1f-28138a2ed5af", "cell": { "columnId": "EWF", - "rowId": "The specific proof type used for the cryptographic proof MUST be specified as a string that maps to a URL." + "rowId": "The specific type of proof MUST be specified as a string that maps to a URL." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20specific%20proof%20type%20used%20for%20the%20cryptographic%20proof%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL", + "link": "https://w3c.github.io/vc-data-integrity/#:~:text=The%20specific%20type%20of%20proof%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 8876, + "_idleStart": 9201, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -2343,9 +2424,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Njo-kHgHfWhU47zHweHTV", + "parent": "tikRDf1hNC-fQs8dM6EPO", "ctx": null, - "_testId": "urn:uuid:b51b8a6e-c2d9-43b8-9d93-6e1992c19abd", + "_testId": "urn:uuid:b64786f5-0369-4d29-a7e9-c013deef3016", "cell": { "columnId": "EWF", "rowId": "\"proof.type\" field MUST be \"Ed25519Signature2020\" and the associated document MUST include expected contexts." @@ -2366,8 +2447,35 @@ }, { "type": "test", - "title": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified. If specified, its value MUST be a string.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.';\n for(const proof of proofs) {\n if(proof.type && proof.type === 'DataIntegrityProof') {\n should.exist(\n proof.cryptosuite,\n 'If the proof type is DataIntegrityProof, cryptosuite MUST ' +\n 'be specified');\n proof.cryptosuite.should.be.a(\n 'string',\n 'cryptosuite value MUST be a string.');\n }\n }\n }", + "title": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.';\n for(const proof of proofs) {\n if(proof.type && proof.type === 'DataIntegrityProof') {\n should.exist(\n proof.cryptosuite,\n 'If the proof type is DataIntegrityProof, cryptosuite MUST ' +\n 'be specified');\n }\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "parent": "tikRDf1hNC-fQs8dM6EPO", + "ctx": null, + "_testId": "urn:uuid:caed5592-f342-4612-add7-8eff2021b7c3", + "cell": { + "columnId": "EWF", + "rowId": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified." + }, + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.", + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "If specified (proof.cryptosuite), its value MUST be a string.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.';\n for(const proof of proofs) {\n if(proof.cryptosuite) {\n proof.cryptosuite.should.be.a(\n 'string',\n 'cryptosuite value MUST be a string.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -2377,12 +2485,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Njo-kHgHfWhU47zHweHTV", + "parent": "tikRDf1hNC-fQs8dM6EPO", "ctx": null, - "_testId": "urn:uuid:3ed2653a-5afa-4e20-9af2-a938170343bd", + "_testId": "urn:uuid:3a9a0a71-8ca8-4d80-97e1-018147ba305d", "cell": { "columnId": "EWF", - "rowId": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified. If specified, its value MUST be a string." + "rowId": "If specified (proof.cryptosuite), its value MUST be a string." }, "_events": {}, "_eventsCount": 1, @@ -2393,8 +2501,8 @@ }, { "type": "test", - "title": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL]", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=A%20verification%20method%20is%20the%20means%20and%20information%20needed%20to%20verify%20the%20proof.%20If%20included%2C%20the%20value%20MUST%20be%20a%20string%20that%20maps%20to%20a%20%5BURL%5D.';\n for(const proof of proofs) {\n await shouldMapToUrl({\n doc: {\n '@context': data['@context'],\n ...proof\n },\n term: 'https://w3id.org/security#verificationMethod',\n prop: '@id',\n documentLoader\n });\n }\n }", + "title": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL].", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=A%20verification%20method%20is%20the%20means%20and%20information%20needed%20to%20verify%20the%20proof.%20If%20included%2C%20the%20value%20MUST%20be%20a%20string%20that%20maps%20to%20a%20%5BURL%5D.';\n for(const proof of proofs) {\n if(!data || !data?.['@context']) {\n throw new Error(`Expected ${vendorName} to issue a VC.`);\n }\n await shouldMapToUrl({\n doc: {\n '@context': data['@context'],\n ...proof\n },\n term: 'https://w3id.org/security#verificationMethod',\n prop: '@id',\n documentLoader\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -2404,12 +2512,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Njo-kHgHfWhU47zHweHTV", + "parent": "tikRDf1hNC-fQs8dM6EPO", "ctx": null, - "_testId": "urn:uuid:9c2a16b9-d61b-4f21-9b0f-021934bb8b5a", + "_testId": "urn:uuid:71c447af-0767-47d7-a3fa-a596240fa736", "cell": { "columnId": "EWF", - "rowId": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL]" + "rowId": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL]." }, "_events": {}, "_eventsCount": 1, @@ -2418,7 +2526,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 8878, + "_idleStart": 9203, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -2429,7 +2537,7 @@ }, { "type": "test", - "title": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL", + "title": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL.", "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20reason%20the%20proof%20was%20created%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL';\n for(const proof of proofs) {\n proof.should.have.property('proofPurpose');\n proof.proofPurpose.should.be.a('string');\n await shouldMapToUrl({\n doc: {\n '@context': data['@context'],\n ...proof\n },\n term: 'https://w3id.org/security#proofPurpose',\n prop: '@id',\n documentLoader\n });\n }\n }", "async": 0, "sync": true, @@ -2440,12 +2548,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Njo-kHgHfWhU47zHweHTV", + "parent": "tikRDf1hNC-fQs8dM6EPO", "ctx": null, - "_testId": "urn:uuid:5e735af4-6956-4f93-91ca-ffcd7725db73", + "_testId": "urn:uuid:e591834d-2993-47c0-b95d-c54a2d676eb1", "cell": { "columnId": "EWF", - "rowId": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL" + "rowId": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL." }, "_events": {}, "_eventsCount": 1, @@ -2454,19 +2562,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 8879, + "_idleStart": 9204, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 1, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof';\n for(const proof of proofs) {\n should.exist(proof, 'Expected proof to exist.');\n const {\n prefix: expectedPrefix,\n name: encodingName\n } = expectedMultibasePrefix(proof.cryptosuite);\n shouldHaveProofValue({proof, expectedPrefix, encodingName});\n }\n }", + "title": "(\"proof.proofValue\") A string value that expresses base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The value MUST use a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification to express the binary data.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#:~:text=A%20string%20value%20that%20expresses%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof%20using%20the%20verificationMethod%20specified.%20The%20value%20MUST%20use%20a%20header%20and%20encoding%20as%20described%20in%20Section%202.4%20Multibase%20of%20the%20Controller%20Documents%201.0%20specification%20to%20express%20the%20binary%20data.';\n for(const proof of proofs) {\n should.exist(proof, 'Expected proof to exist.');\n //FIXME the suite should pass in the expectedPrefix and\n //encodingName or type\n const {\n prefix: expectedPrefix,\n name: encodingName\n } = expectedMultibasePrefix(proof.cryptosuite);\n shouldHaveProofValue({proof, expectedPrefix, encodingName});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -2476,16 +2584,16 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Njo-kHgHfWhU47zHweHTV", + "parent": "tikRDf1hNC-fQs8dM6EPO", "ctx": null, - "_testId": "urn:uuid:e15cf659-0bd6-4f9a-bc89-1aaef6607884", + "_testId": "urn:uuid:755e2de1-f459-4acf-8846-8fbd3079988d", "cell": { "columnId": "EWF", - "rowId": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification." + "rowId": "(\"proof.proofValue\") A string value that expresses base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The value MUST use a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification to express the binary data." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof", + "link": "https://w3c.github.io/vc-data-integrity/#:~:text=A%20string%20value%20that%20expresses%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof%20using%20the%20verificationMethod%20specified.%20The%20value%20MUST%20use%20a%20header%20and%20encoding%20as%20described%20in%20Section%202.4%20Multibase%20of%20the%20Controller%20Documents%201.0%20specification%20to%20express%20the%20binary%20data.", "duration": 0, "state": "failed", "err": { @@ -2493,7 +2601,7 @@ "message": "Expected proofValue to exist.: expected undefined to exist", "showDiff": false, "operator": "strictEqual", - "stack": "AssertionError: Expected proofValue to exist.: expected undefined to exist\n at should.exist (node_modules/chai/lib/chai/interface/should.js:144:34)\n at shouldHaveProofValue (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:245:10)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:209:9)\n at process.processImmediate (node:internal/timers:483:21)" + "stack": "AssertionError: Expected proofValue to exist.: expected undefined to exist\n at should.exist (node_modules/chai/lib/chai/interface/should.js:144:34)\n at shouldHaveProofValue (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:260:10)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:221:9)\n at process.processImmediate (node:internal/timers:483:21)" } }, { @@ -2509,9 +2617,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Njo-kHgHfWhU47zHweHTV", + "parent": "tikRDf1hNC-fQs8dM6EPO", "ctx": null, - "_testId": "urn:uuid:cbd398a8-b29d-4ef5-8cd0-f4e7dd6ada9b", + "_testId": "urn:uuid:91c88cfd-1e5c-4c3f-b8d9-4d32f49781ee", "cell": { "columnId": "EWF", "rowId": "if \"proof.previousProof\" field exists, it MUST be a string." @@ -2535,9 +2643,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Njo-kHgHfWhU47zHweHTV", + "parent": "tikRDf1hNC-fQs8dM6EPO", "ctx": null, - "_testId": "urn:uuid:24e7538c-2955-4d08-95b9-5cb65c9e2c4e", + "_testId": "urn:uuid:42205eca-57d4-42ba-b4be-d99db11b9831", "cell": { "columnId": "EWF", "rowId": "if \"proof.nonce\" field exists, it MUST be a string." @@ -2561,9 +2669,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Njo-kHgHfWhU47zHweHTV", + "parent": "tikRDf1hNC-fQs8dM6EPO", "ctx": null, - "_testId": "urn:uuid:c6cc624d-0f13-4ee2-a27b-7a95f656a827", + "_testId": "urn:uuid:e440b15a-965d-463e-89a4-4c6da3cc7c2c", "cell": { "columnId": "EWF", "rowId": "Cryptographic suite designers MUST use mandatory proof value properties defined in Section 2.1 Proofs, and MAY define other properties specific to their cryptographic suite." @@ -2575,19 +2683,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 8882, + "_idleStart": 9206, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 1, + "duration": 0, "state": "failed", "err": { "name": "AssertionError", "message": "Expected \"proof.proofValue\" to exist.: expected undefined to exist", "showDiff": false, "operator": "strictEqual", - "stack": "AssertionError: Expected \"proof.proofValue\" to exist.: expected undefined to exist\n at should.exist (node_modules/chai/lib/chai/interface/should.js:144:34)\n at shouldBeProof (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:206:10)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:235:9)\n at process.processImmediate (node:internal/timers:483:21)" + "stack": "AssertionError: Expected \"proof.proofValue\" to exist.: expected undefined to exist\n at should.exist (node_modules/chai/lib/chai/interface/should.js:144:34)\n at shouldBeProof (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:206:10)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:247:9)\n at process.processImmediate (node:internal/timers:483:21)" } }, { @@ -2603,9 +2711,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Njo-kHgHfWhU47zHweHTV", + "parent": "tikRDf1hNC-fQs8dM6EPO", "ctx": null, - "_testId": "urn:uuid:89d25541-34b9-4f60-bc40-cd965ba09bf9", + "_testId": "urn:uuid:ecf12839-22eb-43cf-a958-2de015599827", "cell": { "columnId": "EWF", "rowId": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document." @@ -2617,20 +2725,20 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 8882, + "_idleStart": 9206, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 99, + "duration": 109, "state": "failed", "err": { "name": "AssertionError", - "message": "Expected issuer to error when VC has an undefined type.: expected Response { status: 201, statusText: 'Created', headers: Headers { date: 'Sun, 25 Aug 2024 05:01:42 GMT', 'content-type': 'application/json; charset=utf-8', 'content-length': '742', connection: 'keep-alive', 'x-powered-by': 'Express', vary: 'Origin', etag: 'W/\"2e6-8sRIl1nTTSg3azeBFW45WsljG+M\"', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist", + "message": "Expected issuer to error when VC has an undefined type.: expected Response { status: 201, statusText: 'Created', headers: Headers { date: 'Sun, 01 Sep 2024 05:01:41 GMT', 'content-type': 'application/json; charset=utf-8', 'content-length': '742', connection: 'keep-alive', 'x-powered-by': 'Express', vary: 'Origin', etag: 'W/\"2e6-D2MtB7A9tOV5YwDjeakleFyH4Z8\"', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist", "showDiff": false, "actual": {}, "operator": "notStrictEqual", - "stack": "AssertionError: Expected issuer to error when VC has an undefined type.: expected Response { status: 201, statusText: 'Created', headers: Headers { date: 'Sun, 25 Aug 2024 05:01:42 GMT', 'content-type': 'application/json; charset=utf-8', 'content-length': '742', connection: 'keep-alive', 'x-powered-by': 'Express', vary: 'Origin', etag: 'W/\"2e6-8sRIl1nTTSg3azeBFW45WsljG+M\"', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at shouldFailIssuance (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:71:14)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:246:7)" + "stack": "AssertionError: Expected issuer to error when VC has an undefined type.: expected Response { status: 201, statusText: 'Created', headers: Headers { date: 'Sun, 01 Sep 2024 05:01:41 GMT', 'content-type': 'application/json; charset=utf-8', 'content-length': '742', connection: 'keep-alive', 'x-powered-by': 'Express', vary: 'Origin', etag: 'W/\"2e6-D2MtB7A9tOV5YwDjeakleFyH4Z8\"', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at shouldFailIssuance (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:71:14)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:258:7)" } }, { @@ -2646,9 +2754,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Njo-kHgHfWhU47zHweHTV", + "parent": "tikRDf1hNC-fQs8dM6EPO", "ctx": null, - "_testId": "urn:uuid:d2ecebcd-5262-4b8a-bde3-ccea0a7f6231", + "_testId": "urn:uuid:6eeab0c3-9a83-42c7-8f9b-1229f5f824fc", "cell": { "columnId": "EWF", "rowId": "When an application is securing a document, if an @context property is not provided in the document or the Data Integrity terms used in the document are not mapped by existing values in the @context property, implementations SHOULD inject or append an @context property with a value of https://w3id.org/security/data-integrity/v2 or one or more contexts with at least the same declarations, such as the Verifiable Credential Data Model v2.0 context (https://www.w3.org/ns/credentials/v2)." @@ -2660,12 +2768,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 8982, + "_idleStart": 9315, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 93, + "duration": 88, "state": "failed", "err": { "name": "AssertionError", @@ -2677,11 +2785,11 @@ "options": { "credentials": "same-origin", "headers": {}, - "body": "{\"credential\":{\"id\":\"urn:uuid:64b8bedc-decd-4b42-9041-896c66800ccf\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MksoRPRqnMWiivV4weRGGS9SiHXuqfJEYu95EiYtbvBxW6\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"}},\"options\":{}}", + "body": "{\"credential\":{\"id\":\"urn:uuid:5d5a9625-db61-4e7b-943e-1a9bb2e0a75b\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MksoRPRqnMWiivV4weRGGS9SiHXuqfJEYu95EiYtbvBxW6\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"}},\"options\":{}}", "method": "POST", "json": { "credential": { - "id": "urn:uuid:64b8bedc-decd-4b42-9041-896c66800ccf", + "id": "urn:uuid:5d5a9625-db61-4e7b-943e-1a9bb2e0a75b", "type": [ "VerifiableCredential" ], @@ -2770,7 +2878,7 @@ } }, "operator": "notStrictEqual", - "stack": "AssertionError: Expected issuer EWF to perform context injection on a VC with out an \"@context\" property: expected HTTPError { …(7) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:442:18)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" + "stack": "AssertionError: Expected issuer EWF to perform context injection on a VC with out an \"@context\" property: expected HTTPError { …(7) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:454:18)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" } }, { @@ -2786,9 +2894,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Njo-kHgHfWhU47zHweHTV", + "parent": "tikRDf1hNC-fQs8dM6EPO", "ctx": null, - "_testId": "urn:uuid:1b786289-9a5f-4f95-9f72-50997092defb", + "_testId": "urn:uuid:bb8905c3-c6b2-4f20-b3e5-03b2d6acbfe5", "cell": { "columnId": "EWF", "rowId": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." @@ -2813,9 +2921,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Njo-kHgHfWhU47zHweHTV", + "parent": "tikRDf1hNC-fQs8dM6EPO", "ctx": null, - "_testId": "urn:uuid:19e835b2-6650-4b14-b935-265783b6bbdf", + "_testId": "urn:uuid:62518ba5-d350-4853-8198-cc31e35fccc0", "cell": { "columnId": "EWF", "rowId": "The expires property is OPTIONAL and, if present, specifies when the proof expires. If present, it MUST be an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." @@ -2840,9 +2948,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Njo-kHgHfWhU47zHweHTV", + "parent": "tikRDf1hNC-fQs8dM6EPO", "ctx": null, - "_testId": "urn:uuid:d634d96b-f478-4765-9ac3-37c4647d1e67", + "_testId": "urn:uuid:3591977d-8730-4242-8ef1-6b4b65ac8911", "cell": { "columnId": "EWF", "rowId": "The domain property is OPTIONAL. It conveys one or more security domains in which the proof is meant to be used. If specified, the associated value MUST be either a string, or an unordered set of strings. A verifier SHOULD use the value to ensure that the proof was intended to be used in the security domain in which the verifier is operating." @@ -2867,9 +2975,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Njo-kHgHfWhU47zHweHTV", + "parent": "tikRDf1hNC-fQs8dM6EPO", "ctx": null, - "_testId": "urn:uuid:15b5fc82-9c84-42b0-8abe-0d7adc39a2de", + "_testId": "urn:uuid:bb8775fb-ade6-43d0-8c69-bb3d21b78566", "cell": { "columnId": "EWF", "rowId": "(challenge) A string value that SHOULD be included in a proof if a domain is specified." @@ -2898,7 +3006,7 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "Njo-kHgHfWhU47zHweHTV", + "parent": "tikRDf1hNC-fQs8dM6EPO", "ctx": null, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", "originalTitle": "\"before each\" hook", @@ -2921,7 +3029,7 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "Njo-kHgHfWhU47zHweHTV", + "parent": "tikRDf1hNC-fQs8dM6EPO", "ctx": null, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", "originalTitle": "\"before all\" hook", @@ -2931,12 +3039,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 8303, + "_idleStart": 8690, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 566, + "duration": 510, "_error": null } ], @@ -2948,9 +3056,9 @@ "_onlyTests": [], "_onlySuites": [], "delayed": false, - "parent": "5ehVpLQZCJPyIRT62GRLd", + "parent": "5m5Na48WUMMJzYMJrPbce", "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "_testId": "urn:uuid:f2964ac9-de1b-455b-b9f3-ee125c1465b3" + "_testId": "urn:uuid:5157e62f-10fd-421c-a2d4-07e13199b3ef" }, { "title": "LearnCard", @@ -2970,9 +3078,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "FsVwMDitvb4cbtnFdkm_k", + "parent": "3UTW-_LttILA3ILQtGZo2", "ctx": null, - "_testId": "urn:uuid:8a9a225d-a7ae-4423-b303-d8d5e43330e9", + "_testId": "urn:uuid:5b6ad9b1-7d36-4aa6-ba19-847d54c7f3bd", "cell": { "columnId": "LearnCard", "rowId": "When expressing a data integrity proof on an object, a proof property MUST be used." @@ -2986,7 +3094,7 @@ }, { "type": "test", - "title": "If present (proof), its value MUST be either a single object, or an unordered set of objects", + "title": "If present (proof), its value MUST be either a single object, or an unordered set of objects.", "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=If%20present%2C%20its%20value%20MUST%20be%20either%20a%20single%20object%2C%20or%20an%20unordered%20set%20of%20objects';\n shouldHaveProof({vc: data});\n const {proof} = data;\n const validType = isObjectOrArrayOfObjects(proof);\n validType.should.equal(true, 'Expected proof to be' +\n 'either an object or an unordered set of objects.');\n }", "async": 0, "sync": true, @@ -2997,12 +3105,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "FsVwMDitvb4cbtnFdkm_k", + "parent": "3UTW-_LttILA3ILQtGZo2", "ctx": null, - "_testId": "urn:uuid:d53fbeac-f327-4038-a03e-acfe1d832cf5", + "_testId": "urn:uuid:0da27626-52f9-462c-80b8-dd3280987c40", "cell": { "columnId": "LearnCard", - "rowId": "If present (proof), its value MUST be either a single object, or an unordered set of objects" + "rowId": "If present (proof), its value MUST be either a single object, or an unordered set of objects." }, "_events": {}, "_eventsCount": 1, @@ -3024,9 +3132,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "FsVwMDitvb4cbtnFdkm_k", + "parent": "3UTW-_LttILA3ILQtGZo2", "ctx": null, - "_testId": "urn:uuid:7ce35f46-a5a3-4927-9764-be44d839b5d6", + "_testId": "urn:uuid:d7346fa3-be52-4ef2-a34d-3a006a992481", "cell": { "columnId": "LearnCard", "rowId": "(\"proof.id\") An optional identifier for the proof, which MUST be a URL." @@ -3034,14 +3142,14 @@ "_events": {}, "_eventsCount": 1, "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=An%20optional%20identifier%20for%20the%20proof%2C%20which%20MUST%20be%20a%20URL", - "duration": 0, + "duration": 1, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "The specific proof type used for the cryptographic proof MUST be specified as a string that maps to a URL.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20specific%20proof%20type%20used%20for%20the%20cryptographic%20proof%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL';\n const prop = '@type';\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string', 'Expected \"proof.type\" to be a string.');\n const expanded = await jsonld.expand({\n '@context': data['@context'],\n type: proof.type\n }, {documentLoader});\n for(const term of expanded) {\n const types = term[prop];\n should.exist(types, 'Expected @type to exist.');\n types.every(url => shouldBeUrl({url, prop}));\n }\n }\n }", + "title": "The specific type of proof MUST be specified as a string that maps to a URL.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#:~:text=The%20specific%20type%20of%20proof%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL';\n const prop = '@type';\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string', 'Expected \"proof.type\" to be a string.');\n const expanded = await jsonld.expand({\n '@context': data['@context'],\n type: proof.type\n }, {documentLoader});\n for(const term of expanded) {\n const types = term[prop];\n should.exist(types, 'Expected @type to exist.');\n types.every(url => shouldBeUrl({url, prop}));\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -3051,21 +3159,21 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "FsVwMDitvb4cbtnFdkm_k", + "parent": "3UTW-_LttILA3ILQtGZo2", "ctx": null, - "_testId": "urn:uuid:53f1fe84-1049-4db9-9c2f-ede713238b7a", + "_testId": "urn:uuid:664af3c2-58e4-4c63-a1a4-1b435a8f57fe", "cell": { "columnId": "LearnCard", - "rowId": "The specific proof type used for the cryptographic proof MUST be specified as a string that maps to a URL." + "rowId": "The specific type of proof MUST be specified as a string that maps to a URL." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20specific%20proof%20type%20used%20for%20the%20cryptographic%20proof%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL", + "link": "https://w3c.github.io/vc-data-integrity/#:~:text=The%20specific%20type%20of%20proof%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9232, + "_idleStart": 9642, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -3097,9 +3205,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "FsVwMDitvb4cbtnFdkm_k", + "parent": "3UTW-_LttILA3ILQtGZo2", "ctx": null, - "_testId": "urn:uuid:81a2c44a-4907-4ea4-b646-bc357c3919a9", + "_testId": "urn:uuid:5412622a-f8db-4e48-b063-85ff6976c003", "cell": { "columnId": "LearnCard", "rowId": "\"proof.type\" field MUST be \"Ed25519Signature2020\" and the associated document MUST include expected contexts." @@ -3120,8 +3228,35 @@ }, { "type": "test", - "title": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified. If specified, its value MUST be a string.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.';\n for(const proof of proofs) {\n if(proof.type && proof.type === 'DataIntegrityProof') {\n should.exist(\n proof.cryptosuite,\n 'If the proof type is DataIntegrityProof, cryptosuite MUST ' +\n 'be specified');\n proof.cryptosuite.should.be.a(\n 'string',\n 'cryptosuite value MUST be a string.');\n }\n }\n }", + "title": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.';\n for(const proof of proofs) {\n if(proof.type && proof.type === 'DataIntegrityProof') {\n should.exist(\n proof.cryptosuite,\n 'If the proof type is DataIntegrityProof, cryptosuite MUST ' +\n 'be specified');\n }\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "parent": "3UTW-_LttILA3ILQtGZo2", + "ctx": null, + "_testId": "urn:uuid:5ba6c27b-ef4a-427d-8957-e7aa5c508d8d", + "cell": { + "columnId": "LearnCard", + "rowId": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified." + }, + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.", + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "If specified (proof.cryptosuite), its value MUST be a string.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.';\n for(const proof of proofs) {\n if(proof.cryptosuite) {\n proof.cryptosuite.should.be.a(\n 'string',\n 'cryptosuite value MUST be a string.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -3131,12 +3266,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "FsVwMDitvb4cbtnFdkm_k", + "parent": "3UTW-_LttILA3ILQtGZo2", "ctx": null, - "_testId": "urn:uuid:c08f78b9-48f4-4f79-a583-273ab4833fe0", + "_testId": "urn:uuid:b92c25af-3f4d-497d-8157-d13a4973c0a4", "cell": { "columnId": "LearnCard", - "rowId": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified. If specified, its value MUST be a string." + "rowId": "If specified (proof.cryptosuite), its value MUST be a string." }, "_events": {}, "_eventsCount": 1, @@ -3147,8 +3282,8 @@ }, { "type": "test", - "title": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL]", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=A%20verification%20method%20is%20the%20means%20and%20information%20needed%20to%20verify%20the%20proof.%20If%20included%2C%20the%20value%20MUST%20be%20a%20string%20that%20maps%20to%20a%20%5BURL%5D.';\n for(const proof of proofs) {\n await shouldMapToUrl({\n doc: {\n '@context': data['@context'],\n ...proof\n },\n term: 'https://w3id.org/security#verificationMethod',\n prop: '@id',\n documentLoader\n });\n }\n }", + "title": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL].", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=A%20verification%20method%20is%20the%20means%20and%20information%20needed%20to%20verify%20the%20proof.%20If%20included%2C%20the%20value%20MUST%20be%20a%20string%20that%20maps%20to%20a%20%5BURL%5D.';\n for(const proof of proofs) {\n if(!data || !data?.['@context']) {\n throw new Error(`Expected ${vendorName} to issue a VC.`);\n }\n await shouldMapToUrl({\n doc: {\n '@context': data['@context'],\n ...proof\n },\n term: 'https://w3id.org/security#verificationMethod',\n prop: '@id',\n documentLoader\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -3158,12 +3293,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "FsVwMDitvb4cbtnFdkm_k", + "parent": "3UTW-_LttILA3ILQtGZo2", "ctx": null, - "_testId": "urn:uuid:518d64d4-aa23-4ae3-a331-970faaa8fc60", + "_testId": "urn:uuid:d91a6526-fb23-44e3-bacd-3a1f166afec0", "cell": { "columnId": "LearnCard", - "rowId": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL]" + "rowId": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL]." }, "_events": {}, "_eventsCount": 1, @@ -3172,18 +3307,18 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9235, + "_idleStart": 9644, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 1, + "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL", + "title": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL.", "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20reason%20the%20proof%20was%20created%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL';\n for(const proof of proofs) {\n proof.should.have.property('proofPurpose');\n proof.proofPurpose.should.be.a('string');\n await shouldMapToUrl({\n doc: {\n '@context': data['@context'],\n ...proof\n },\n term: 'https://w3id.org/security#proofPurpose',\n prop: '@id',\n documentLoader\n });\n }\n }", "async": 0, "sync": true, @@ -3194,12 +3329,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "FsVwMDitvb4cbtnFdkm_k", + "parent": "3UTW-_LttILA3ILQtGZo2", "ctx": null, - "_testId": "urn:uuid:c2472a9d-bd5d-4bca-b289-bdc33d5ea770", + "_testId": "urn:uuid:cd166796-6d77-4a34-9ea9-6efe81d50e5f", "cell": { "columnId": "LearnCard", - "rowId": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL" + "rowId": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL." }, "_events": {}, "_eventsCount": 1, @@ -3208,19 +3343,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9237, + "_idleStart": 9645, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 1, + "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof';\n for(const proof of proofs) {\n should.exist(proof, 'Expected proof to exist.');\n const {\n prefix: expectedPrefix,\n name: encodingName\n } = expectedMultibasePrefix(proof.cryptosuite);\n shouldHaveProofValue({proof, expectedPrefix, encodingName});\n }\n }", + "title": "(\"proof.proofValue\") A string value that expresses base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The value MUST use a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification to express the binary data.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#:~:text=A%20string%20value%20that%20expresses%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof%20using%20the%20verificationMethod%20specified.%20The%20value%20MUST%20use%20a%20header%20and%20encoding%20as%20described%20in%20Section%202.4%20Multibase%20of%20the%20Controller%20Documents%201.0%20specification%20to%20express%20the%20binary%20data.';\n for(const proof of proofs) {\n should.exist(proof, 'Expected proof to exist.');\n //FIXME the suite should pass in the expectedPrefix and\n //encodingName or type\n const {\n prefix: expectedPrefix,\n name: encodingName\n } = expectedMultibasePrefix(proof.cryptosuite);\n shouldHaveProofValue({proof, expectedPrefix, encodingName});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -3230,16 +3365,16 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "FsVwMDitvb4cbtnFdkm_k", + "parent": "3UTW-_LttILA3ILQtGZo2", "ctx": null, - "_testId": "urn:uuid:9ab44d47-93fc-4672-bab5-62d00bf89e93", + "_testId": "urn:uuid:dd0db2e8-5b40-47ff-aa3c-e28fd00c66eb", "cell": { "columnId": "LearnCard", - "rowId": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification." + "rowId": "(\"proof.proofValue\") A string value that expresses base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The value MUST use a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification to express the binary data." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof", + "link": "https://w3c.github.io/vc-data-integrity/#:~:text=A%20string%20value%20that%20expresses%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof%20using%20the%20verificationMethod%20specified.%20The%20value%20MUST%20use%20a%20header%20and%20encoding%20as%20described%20in%20Section%202.4%20Multibase%20of%20the%20Controller%20Documents%201.0%20specification%20to%20express%20the%20binary%20data.", "duration": 0, "state": "passed", "speed": "fast" @@ -3257,9 +3392,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "FsVwMDitvb4cbtnFdkm_k", + "parent": "3UTW-_LttILA3ILQtGZo2", "ctx": null, - "_testId": "urn:uuid:cc12ebfe-473f-4115-ae6b-348158ee6964", + "_testId": "urn:uuid:ecb99cfe-3f7f-46ed-94d2-583d449dcd92", "cell": { "columnId": "LearnCard", "rowId": "if \"proof.previousProof\" field exists, it MUST be a string." @@ -3283,9 +3418,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "FsVwMDitvb4cbtnFdkm_k", + "parent": "3UTW-_LttILA3ILQtGZo2", "ctx": null, - "_testId": "urn:uuid:3ed10aa0-5f40-4d41-ab33-80711d944ac1", + "_testId": "urn:uuid:b9b5b96e-56ac-47ee-96f6-ed0e3a6f38b7", "cell": { "columnId": "LearnCard", "rowId": "if \"proof.nonce\" field exists, it MUST be a string." @@ -3309,9 +3444,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "FsVwMDitvb4cbtnFdkm_k", + "parent": "3UTW-_LttILA3ILQtGZo2", "ctx": null, - "_testId": "urn:uuid:d2749685-df4a-46ed-b222-ba69d37a2e3c", + "_testId": "urn:uuid:ea9d5d88-cf25-4b2b-9342-d3481a3905ab", "cell": { "columnId": "LearnCard", "rowId": "Cryptographic suite designers MUST use mandatory proof value properties defined in Section 2.1 Proofs, and MAY define other properties specific to their cryptographic suite." @@ -3323,12 +3458,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9238, + "_idleStart": 9646, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 1, + "duration": 0, "state": "passed", "speed": "fast" }, @@ -3345,9 +3480,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "FsVwMDitvb4cbtnFdkm_k", + "parent": "3UTW-_LttILA3ILQtGZo2", "ctx": null, - "_testId": "urn:uuid:715a14ef-a93e-4559-8d1c-7deaf1456360", + "_testId": "urn:uuid:a0c9384d-2d12-4a99-a3f8-faa81b08d2bc", "cell": { "columnId": "LearnCard", "rowId": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document." @@ -3359,20 +3494,20 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9238, + "_idleStart": 9647, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 83, + "duration": 129, "state": "failed", "err": { "name": "AssertionError", - "message": "Expected issuer to error when VC has an undefined type.: expected Response { status: 201, statusText: 'Created', headers: Headers { date: 'Sun, 25 Aug 2024 05:01:42 GMT', 'content-type': 'application/json; charset=utf-8', 'content-length': '757', connection: 'keep-alive', etag: 'W/\"2f5-6ffEum/jkWv5eo1N1f6p3YMCxQQ\"', 'x-powered-by': 'Express', 'apigw-requestid': 'dDIcih6NIAMEPfQ=', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist", + "message": "Expected issuer to error when VC has an undefined type.: expected Response { status: 201, statusText: 'Created', headers: Headers { date: 'Sun, 01 Sep 2024 05:01:41 GMT', 'content-type': 'application/json; charset=utf-8', 'content-length': '758', connection: 'keep-alive', etag: 'W/\"2f6-XIBDOwkbup9zd49/uujr0glIeIo\"', 'x-powered-by': 'Express', 'apigw-requestid': 'daNAcgLZIAMEaRw=', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist", "showDiff": false, "actual": {}, "operator": "notStrictEqual", - "stack": "AssertionError: Expected issuer to error when VC has an undefined type.: expected Response { status: 201, statusText: 'Created', headers: Headers { date: 'Sun, 25 Aug 2024 05:01:42 GMT', 'content-type': 'application/json; charset=utf-8', 'content-length': '757', connection: 'keep-alive', etag: 'W/\"2f5-6ffEum/jkWv5eo1N1f6p3YMCxQQ\"', 'x-powered-by': 'Express', 'apigw-requestid': 'dDIcih6NIAMEPfQ=', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at shouldFailIssuance (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:71:14)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:246:7)" + "stack": "AssertionError: Expected issuer to error when VC has an undefined type.: expected Response { status: 201, statusText: 'Created', headers: Headers { date: 'Sun, 01 Sep 2024 05:01:41 GMT', 'content-type': 'application/json; charset=utf-8', 'content-length': '758', connection: 'keep-alive', etag: 'W/\"2f6-XIBDOwkbup9zd49/uujr0glIeIo\"', 'x-powered-by': 'Express', 'apigw-requestid': 'daNAcgLZIAMEaRw=', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at shouldFailIssuance (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:71:14)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:258:7)" } }, { @@ -3388,9 +3523,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "FsVwMDitvb4cbtnFdkm_k", + "parent": "3UTW-_LttILA3ILQtGZo2", "ctx": null, - "_testId": "urn:uuid:6482e8de-4dd8-43fc-a49f-8c3c6535537d", + "_testId": "urn:uuid:f4acf3d4-b752-434e-86a7-11b2db20b5f1", "cell": { "columnId": "LearnCard", "rowId": "When an application is securing a document, if an @context property is not provided in the document or the Data Integrity terms used in the document are not mapped by existing values in the @context property, implementations SHOULD inject or append an @context property with a value of https://w3id.org/security/data-integrity/v2 or one or more contexts with at least the same declarations, such as the Verifiable Credential Data Model v2.0 context (https://www.w3.org/ns/credentials/v2)." @@ -3402,12 +3537,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9322, + "_idleStart": 9776, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 39, + "duration": 46, "state": "failed", "err": { "name": "AssertionError", @@ -3419,11 +3554,11 @@ "options": { "credentials": "same-origin", "headers": {}, - "body": "{\"credential\":{\"id\":\"urn:uuid:ba0ab839-2fa9-4ded-8ade-7c10135a8962\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"}},\"options\":{}}", + "body": "{\"credential\":{\"id\":\"urn:uuid:6f632419-3090-42b4-be6a-6e883d03dcde\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"}},\"options\":{}}", "method": "POST", "json": { "credential": { - "id": "urn:uuid:ba0ab839-2fa9-4ded-8ade-7c10135a8962", + "id": "urn:uuid:6f632419-3090-42b4-be6a-6e883d03dcde", "type": [ "VerifiableCredential" ], @@ -3506,7 +3641,7 @@ "data": "Invalid input: [\n {\n \"code\": \"invalid_type\",\n \"expected\": \"array\",\n \"received\": \"undefined\",\n \"path\": [\n \"credential\",\n \"@context\"\n ],\n \"message\": \"Required\"\n }\n]" }, "operator": "notStrictEqual", - "stack": "AssertionError: Expected issuer LearnCard to perform context injection on a VC with out an \"@context\" property: expected HTTPError: Request failed with status cod… { …(6) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:442:18)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" + "stack": "AssertionError: Expected issuer LearnCard to perform context injection on a VC with out an \"@context\" property: expected HTTPError: Request failed with status cod… { …(6) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:454:18)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" } }, { @@ -3522,9 +3657,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "FsVwMDitvb4cbtnFdkm_k", + "parent": "3UTW-_LttILA3ILQtGZo2", "ctx": null, - "_testId": "urn:uuid:2828a613-49ac-4462-9895-50cf2164e111", + "_testId": "urn:uuid:fb2f8cac-2f12-4f4f-a9a7-6c1b4fcad3b0", "cell": { "columnId": "LearnCard", "rowId": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." @@ -3549,9 +3684,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "FsVwMDitvb4cbtnFdkm_k", + "parent": "3UTW-_LttILA3ILQtGZo2", "ctx": null, - "_testId": "urn:uuid:73d5ad86-fa69-452c-9da6-87c6b8518b69", + "_testId": "urn:uuid:47fd6a47-2c06-486a-943b-f7c01a8f96da", "cell": { "columnId": "LearnCard", "rowId": "The expires property is OPTIONAL and, if present, specifies when the proof expires. If present, it MUST be an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." @@ -3576,9 +3711,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "FsVwMDitvb4cbtnFdkm_k", + "parent": "3UTW-_LttILA3ILQtGZo2", "ctx": null, - "_testId": "urn:uuid:d818cfe8-0414-463f-9996-c126c23a60f5", + "_testId": "urn:uuid:ca64e697-7d55-4584-a247-8b46120eae77", "cell": { "columnId": "LearnCard", "rowId": "The domain property is OPTIONAL. It conveys one or more security domains in which the proof is meant to be used. If specified, the associated value MUST be either a string, or an unordered set of strings. A verifier SHOULD use the value to ensure that the proof was intended to be used in the security domain in which the verifier is operating." @@ -3603,9 +3738,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "FsVwMDitvb4cbtnFdkm_k", + "parent": "3UTW-_LttILA3ILQtGZo2", "ctx": null, - "_testId": "urn:uuid:fa8e7b12-8685-4205-8968-c8c0ce3ffec6", + "_testId": "urn:uuid:183f2cee-de17-44ad-836c-20f615b73526", "cell": { "columnId": "LearnCard", "rowId": "(challenge) A string value that SHOULD be included in a proof if a domain is specified." @@ -3634,7 +3769,7 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "FsVwMDitvb4cbtnFdkm_k", + "parent": "3UTW-_LttILA3ILQtGZo2", "ctx": null, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", "originalTitle": "\"before each\" hook", @@ -3657,7 +3792,7 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "FsVwMDitvb4cbtnFdkm_k", + "parent": "3UTW-_LttILA3ILQtGZo2", "ctx": null, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", "originalTitle": "\"before all\" hook", @@ -3667,12 +3802,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9077, + "_idleStart": 9405, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 154, + "duration": 236, "_error": null } ], @@ -3684,9 +3819,9 @@ "_onlyTests": [], "_onlySuites": [], "delayed": false, - "parent": "5ehVpLQZCJPyIRT62GRLd", + "parent": "5m5Na48WUMMJzYMJrPbce", "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "_testId": "urn:uuid:98bdef38-279d-40d8-9a76-8a23540f2366" + "_testId": "urn:uuid:42cca191-f169-43a6-ba89-f945ff60493d" }, { "title": "OpSecId", @@ -3706,12 +3841,23 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "04qlhcZLPzdJoh0H8NQOI", - "ctx": null + "parent": "V3app5v08kK3UQYixBWWE", + "ctx": null, + "_testId": "urn:uuid:dd886f0b-6c85-4b2f-97f2-8fc086364ae1", + "cell": { + "columnId": "OpSecId", + "rowId": "When expressing a data integrity proof on an object, a proof property MUST be used." + }, + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=When%20expressing%20a%20data%20integrity%20proof%20on%20an%20object%2C%20a%20proof%20property%20MUST%20be%20used", + "duration": 0, + "state": "passed", + "speed": "fast" }, { "type": "test", - "title": "If present (proof), its value MUST be either a single object, or an unordered set of objects", + "title": "If present (proof), its value MUST be either a single object, or an unordered set of objects.", "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=If%20present%2C%20its%20value%20MUST%20be%20either%20a%20single%20object%2C%20or%20an%20unordered%20set%20of%20objects';\n shouldHaveProof({vc: data});\n const {proof} = data;\n const validType = isObjectOrArrayOfObjects(proof);\n validType.should.equal(true, 'Expected proof to be' +\n 'either an object or an unordered set of objects.');\n }", "async": 0, "sync": true, @@ -3722,8 +3868,19 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "04qlhcZLPzdJoh0H8NQOI", - "ctx": null + "parent": "V3app5v08kK3UQYixBWWE", + "ctx": null, + "_testId": "urn:uuid:36c67330-faff-4d6b-96b0-d0f88b0eb9c7", + "cell": { + "columnId": "OpSecId", + "rowId": "If present (proof), its value MUST be either a single object, or an unordered set of objects." + }, + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=If%20present%2C%20its%20value%20MUST%20be%20either%20a%20single%20object%2C%20or%20an%20unordered%20set%20of%20objects", + "duration": 1, + "state": "passed", + "speed": "fast" }, { "type": "test", @@ -3738,13 +3895,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "04qlhcZLPzdJoh0H8NQOI", - "ctx": null + "parent": "V3app5v08kK3UQYixBWWE", + "ctx": null, + "_testId": "urn:uuid:5fe81a4d-c529-4db8-96b6-79bc220c8cc8", + "cell": { + "columnId": "OpSecId", + "rowId": "(\"proof.id\") An optional identifier for the proof, which MUST be a URL." + }, + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=An%20optional%20identifier%20for%20the%20proof%2C%20which%20MUST%20be%20a%20URL", + "duration": 0, + "state": "passed", + "speed": "fast" }, { "type": "test", - "title": "The specific proof type used for the cryptographic proof MUST be specified as a string that maps to a URL.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20specific%20proof%20type%20used%20for%20the%20cryptographic%20proof%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL';\n const prop = '@type';\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string', 'Expected \"proof.type\" to be a string.');\n const expanded = await jsonld.expand({\n '@context': data['@context'],\n type: proof.type\n }, {documentLoader});\n for(const term of expanded) {\n const types = term[prop];\n should.exist(types, 'Expected @type to exist.');\n types.every(url => shouldBeUrl({url, prop}));\n }\n }\n }", + "title": "The specific type of proof MUST be specified as a string that maps to a URL.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#:~:text=The%20specific%20type%20of%20proof%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL';\n const prop = '@type';\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string', 'Expected \"proof.type\" to be a string.');\n const expanded = await jsonld.expand({\n '@context': data['@context'],\n type: proof.type\n }, {documentLoader});\n for(const term of expanded) {\n const types = term[prop];\n should.exist(types, 'Expected @type to exist.');\n types.every(url => shouldBeUrl({url, prop}));\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -3754,8 +3922,28 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "04qlhcZLPzdJoh0H8NQOI", - "ctx": null + "parent": "V3app5v08kK3UQYixBWWE", + "ctx": null, + "_testId": "urn:uuid:ba8a047e-94c0-4ec9-8e03-503167f5caa3", + "cell": { + "columnId": "OpSecId", + "rowId": "The specific type of proof MUST be specified as a string that maps to a URL." + }, + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#:~:text=The%20specific%20type%20of%20proof%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL", + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 9951, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 0, + "state": "passed", + "speed": "fast" }, { "type": "test", @@ -3770,13 +3958,23 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "04qlhcZLPzdJoh0H8NQOI", - "ctx": null + "parent": "V3app5v08kK3UQYixBWWE", + "ctx": null, + "_testId": "urn:uuid:34ada0e4-2bb2-43f0-8272-738383f3f4dc", + "cell": { + "columnId": "OpSecId", + "rowId": "\"proof.type\" field MUST be \"Ed25519Signature2020\" and the associated document MUST include expected contexts." + }, + "_events": {}, + "_eventsCount": 1, + "duration": 0, + "state": "passed", + "speed": "fast" }, { "type": "test", - "title": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified. If specified, its value MUST be a string.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.';\n for(const proof of proofs) {\n if(proof.type && proof.type === 'DataIntegrityProof') {\n should.exist(\n proof.cryptosuite,\n 'If the proof type is DataIntegrityProof, cryptosuite MUST ' +\n 'be specified');\n proof.cryptosuite.should.be.a(\n 'string',\n 'cryptosuite value MUST be a string.');\n }\n }\n }", + "title": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.';\n for(const proof of proofs) {\n if(proof.type && proof.type === 'DataIntegrityProof') {\n should.exist(\n proof.cryptosuite,\n 'If the proof type is DataIntegrityProof, cryptosuite MUST ' +\n 'be specified');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -3786,13 +3984,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "04qlhcZLPzdJoh0H8NQOI", - "ctx": null + "parent": "V3app5v08kK3UQYixBWWE", + "ctx": null, + "_testId": "urn:uuid:64d4255a-1471-42a4-b0f5-cf0309dfde98", + "cell": { + "columnId": "OpSecId", + "rowId": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified." + }, + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.", + "duration": 0, + "state": "passed", + "speed": "fast" }, { "type": "test", - "title": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL]", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=A%20verification%20method%20is%20the%20means%20and%20information%20needed%20to%20verify%20the%20proof.%20If%20included%2C%20the%20value%20MUST%20be%20a%20string%20that%20maps%20to%20a%20%5BURL%5D.';\n for(const proof of proofs) {\n await shouldMapToUrl({\n doc: {\n '@context': data['@context'],\n ...proof\n },\n term: 'https://w3id.org/security#verificationMethod',\n prop: '@id',\n documentLoader\n });\n }\n }", + "title": "If specified (proof.cryptosuite), its value MUST be a string.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.';\n for(const proof of proofs) {\n if(proof.cryptosuite) {\n proof.cryptosuite.should.be.a(\n 'string',\n 'cryptosuite value MUST be a string.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -3802,13 +4011,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "04qlhcZLPzdJoh0H8NQOI", - "ctx": null + "parent": "V3app5v08kK3UQYixBWWE", + "ctx": null, + "_testId": "urn:uuid:6be95996-8e54-43e6-b372-d0262f43c77b", + "cell": { + "columnId": "OpSecId", + "rowId": "If specified (proof.cryptosuite), its value MUST be a string." + }, + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.", + "duration": 0, + "state": "passed", + "speed": "fast" }, { "type": "test", - "title": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20reason%20the%20proof%20was%20created%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL';\n for(const proof of proofs) {\n proof.should.have.property('proofPurpose');\n proof.proofPurpose.should.be.a('string');\n await shouldMapToUrl({\n doc: {\n '@context': data['@context'],\n ...proof\n },\n term: 'https://w3id.org/security#proofPurpose',\n prop: '@id',\n documentLoader\n });\n }\n }", + "title": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL].", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=A%20verification%20method%20is%20the%20means%20and%20information%20needed%20to%20verify%20the%20proof.%20If%20included%2C%20the%20value%20MUST%20be%20a%20string%20that%20maps%20to%20a%20%5BURL%5D.';\n for(const proof of proofs) {\n if(!data || !data?.['@context']) {\n throw new Error(`Expected ${vendorName} to issue a VC.`);\n }\n await shouldMapToUrl({\n doc: {\n '@context': data['@context'],\n ...proof\n },\n term: 'https://w3id.org/security#verificationMethod',\n prop: '@id',\n documentLoader\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -3818,157 +4038,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "04qlhcZLPzdJoh0H8NQOI", - "ctx": null - }, - { - "type": "test", - "title": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof';\n for(const proof of proofs) {\n should.exist(proof, 'Expected proof to exist.');\n const {\n prefix: expectedPrefix,\n name: encodingName\n } = expectedMultibasePrefix(proof.cryptosuite);\n shouldHaveProofValue({proof, expectedPrefix, encodingName});\n }\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "04qlhcZLPzdJoh0H8NQOI", - "ctx": null - }, - { - "type": "test", - "title": "if \"proof.previousProof\" field exists, it MUST be a string.", - "body": "function() {\n for(const proof of proofs) {\n if(proof.previousProof) {\n proof.previousProof.should.be.a('string', 'Expected ' +\n '\"proof.previousProof\" to be a string.');\n }\n }\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "04qlhcZLPzdJoh0H8NQOI", - "ctx": null - }, - { - "type": "test", - "title": "if \"proof.nonce\" field exists, it MUST be a string.", - "body": "function() {\n for(const proof of proofs) {\n if(proof.nonce) {\n proof.nonce.should.be.a('string', 'Expected \"proof.nonce\" ' +\n 'to be a string.');\n }\n }\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "04qlhcZLPzdJoh0H8NQOI", - "ctx": null - }, - { - "type": "test", - "title": "Cryptographic suite designers MUST use mandatory proof value properties defined in Section 2.1 Proofs, and MAY define other properties specific to their cryptographic suite.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#add-proof:~:text=MUST%20use%20mandatory%20proof%20value%20properties%20defined';\n for(const proof of proofs) {\n shouldBeProof({proof});\n }\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "04qlhcZLPzdJoh0H8NQOI", - "ctx": null - }, - { - "type": "test", - "title": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.';\n const undefinedType = structuredClone(credential);\n undefinedType.type.push('InvalidType');\n await shouldFailIssuance({\n credential: undefinedType,\n issuer,\n reason: 'Expected issuer to error when VC has an undefined type.'\n });\n const undefinedTerm = structuredClone(credential);\n undefinedTerm.credentialSubject.invalidTerm = 'invalidTerm';\n await shouldFailIssuance({\n credential: undefinedTerm,\n issuer,\n reason: 'Expected issuer to error when VC has an undefined term.'\n });\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "04qlhcZLPzdJoh0H8NQOI", - "ctx": null - }, - { - "type": "test", - "title": "When an application is securing a document, if an @context property is not provided in the document or the Data Integrity terms used in the document are not mapped by existing values in the @context property, implementations SHOULD inject or append an @context property with a value of https://w3id.org/security/data-integrity/v2 or one or more contexts with at least the same declarations, such as the Verifiable Credential Data Model v2.0 context (https://www.w3.org/ns/credentials/v2).", - "body": "async function() {\n if(!issuer) {\n throw new Error(`Expected ${vendorName} to have an issuer.`);\n }\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#context-injection:~:text=if%20an%20%40context%20property%20is%20not%20provided%20in%20the%20document%20or%20the%20Data%20Integrity%20terms%20used%20in%20the%20document%20are%20not%20mapped%20by%20existing%20values%20in%20the%20%40context%20property%2C%20implementations%20SHOULD%20inject%20or%20append';\n if(optionalTests.contextInjection === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n const _credential = structuredClone(credential);\n const expectedContexts = [\n 'https://w3id.org/security/data-integrity/v2',\n 'https://www.w3.org/ns/credentials/v2'\n ];\n // remove the vc's context and expect context injection to occur\n delete _credential['@context'];\n let err;\n let data;\n try {\n data = await createInitialVc({issuer, credential: _credential});\n } catch(e) {\n err = e;\n }\n should.not.exist(\n err,\n `Expected issuer ${vendorName} to perform context injection on a ` +\n `VC with out an \"@context\" property`);\n should.exist(data, `Expected issuer ${vendorName} to return data.`);\n data.should.be.an('object', 'Expected response data to be an object.');\n should.exist(data['@context'],\n 'Expected data to have an injected \"@context\" property.');\n if(Array.isArray(data['@context'])) {\n const hasExpectedContext = expectedContexts.some(\n ctx => data['@context'].includes(ctx));\n return hasExpectedContext.should.equal(true,\n `Expected injected context to contain one of ${expectedContexts}`);\n }\n data['@context'].should.be.oneOf(expectedContexts);\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "04qlhcZLPzdJoh0H8NQOI", - "ctx": null - }, - { - "type": "test", - "title": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", - "body": "function() {\n this.test.link = 'https://www.w3.org/TR/vc-data-integrity/#:~:text=The%20date%20and%20time%20the%20proof%20was%20created%20is%20OPTIONAL%20and%2C%20if%20included%2C%20MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC.';\n if(optionalTests.dates === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.created) {\n // check if \"created\" is a valid XML Schema 1.1 dateTimeStamp\n // value\n proof.created.should.match(dateRegex);\n }\n }\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "04qlhcZLPzdJoh0H8NQOI", - "ctx": null - }, - { - "type": "test", - "title": "The expires property is OPTIONAL and, if present, specifies when the proof expires. If present, it MUST be an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time';\n if(optionalTests.dates === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.expires) {\n // check if \"created\" is a valid XML Schema 1.1 dateTimeStamp\n // value\n proof.expires.should.match(dateRegex);\n }\n }\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "04qlhcZLPzdJoh0H8NQOI", - "ctx": null - }, - { - "type": "test", - "title": "The domain property is OPTIONAL. It conveys one or more security domains in which the proof is meant to be used. If specified, the associated value MUST be either a string, or an unordered set of strings. A verifier SHOULD use the value to ensure that the proof was intended to be used in the security domain in which the verifier is operating.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=The%20domain%20property%20is%20OPTIONAL.%20It%20conveys%20one%20or%20more%20security%20domains%20in%20which%20the%20proof%20is%20meant%20to%20be%20used.%20If%20specified%2C%20the%20associated%20value%20MUST';\n if(optionalTests.domain === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.domain) {\n const validType = isStringOrArrayOfStrings(proof.domain);\n validType.should.equal(true, 'Expected ' +\n '\"proof.domain\" to be either a string or an unordered ' +\n 'set of strings.');\n }\n }\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "04qlhcZLPzdJoh0H8NQOI", - "ctx": null + "parent": "V3app5v08kK3UQYixBWWE", + "ctx": null, + "_testId": "urn:uuid:149feb4a-883d-4f19-b524-e2805e4bd97c", + "cell": { + "columnId": "OpSecId", + "rowId": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL]." + }, + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=A%20verification%20method%20is%20the%20means%20and%20information%20needed%20to%20verify%20the%20proof.%20If%20included%2C%20the%20value%20MUST%20be%20a%20string%20that%20maps%20to%20a%20%5BURL%5D.", + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 9953, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 1, + "state": "passed", + "speed": "fast" }, { "type": "test", - "title": "(challenge) A string value that SHOULD be included in a proof if a domain is specified.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=A%20string%20value%20that%20SHOULD%20be%20included%20in%20a%20proof%20if%20a%20domain%20is%20specified.';\n if(optionalTests.domain === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.challenge) {\n // domain must be specified\n should.exist(proof.domain, 'Expected \"proof.domain\" ' +\n 'to be specified.');\n proof.challenge.should.be.a('string', 'Expected ' +\n '\"proof.challenge\" to be a string.');\n }\n }\n }", + "title": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20reason%20the%20proof%20was%20created%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL';\n for(const proof of proofs) {\n proof.should.have.property('proofPurpose');\n proof.proofPurpose.should.be.a('string');\n await shouldMapToUrl({\n doc: {\n '@context': data['@context'],\n ...proof\n },\n term: 'https://w3id.org/security#proofPurpose',\n prop: '@id',\n documentLoader\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -3978,188 +4074,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "04qlhcZLPzdJoh0H8NQOI", - "ctx": null - } - ], - "root": false, - "pending": false, - "_retries": -1, - "_beforeEach": [ - { - "title": "\"before each\" hook", - "body": "function() {\n this.currentTest.cell = {\n columnId,\n rowId: this.currentTest.title\n };\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "type": "hook", - "parent": "04qlhcZLPzdJoh0H8NQOI", - "ctx": null, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js" - } - ], - "_beforeAll": [ - { - "title": "\"before all\" hook for \"When expressing a data integrity proof on an object, a proof property MUST be used.\"", - "body": "async function() {\n if(!issuer) {\n throw new Error(`Expected ${vendorName} to have an issuer.`);\n }\n if(!credential) {\n throw new Error(`Expected a credential to be passed in ` +\n `received ${credential}`);\n }\n data = await createInitialVc({issuer, credential});\n proofs = Array.isArray(data.proof) ? data.proof : [data.proof];\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "type": "hook", - "parent": "04qlhcZLPzdJoh0H8NQOI", + "parent": "V3app5v08kK3UQYixBWWE", "ctx": null, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "originalTitle": "\"before all\" hook", + "_testId": "urn:uuid:dda7c50e-ca42-4089-b2f9-b14d2e217732", + "cell": { + "columnId": "OpSecId", + "rowId": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL." + }, "_events": {}, "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20reason%20the%20proof%20was%20created%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9364, + "_idleStart": 9954, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 112, - "_error": null, - "state": "failed", - "err": { - "response": {}, - "request": {}, - "options": { - "credentials": "same-origin", - "headers": {}, - "body": "{\"credential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\"],\"id\":\"urn:uuid:eab4bf26-58ef-4120-a7f7-2522c9760d94\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MksCeXh9Jwp4ZTEb5Kei7sJpBLpUyS3oaAib8wbtJQqsQu\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"}},\"options\":{\"type\":\"Ed25519Signature2020\",\"credentialStatus\":{\"type\":\"BitstringStatusListEntry\",\"statusPurpose\":\"suspension\"}}}", - "method": "POST", - "json": { - "credential": { - "@context": [ - "https://www.w3.org/2018/credentials/v1" - ], - "id": "urn:uuid:eab4bf26-58ef-4120-a7f7-2522c9760d94", - "type": [ - "VerifiableCredential" - ], - "issuer": "did:key:z6MksCeXh9Jwp4ZTEb5Kei7sJpBLpUyS3oaAib8wbtJQqsQu", - "issuanceDate": "2020-03-16T22:37:26.544Z", - "credentialSubject": { - "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" - } - }, - "options": { - "type": "Ed25519Signature2020", - "credentialStatus": { - "type": "BitstringStatusListEntry", - "statusPurpose": "suspension" - } - } - }, - "agent": { - "_events": {}, - "_eventsCount": 2, - "defaultPort": 443, - "protocol": "https:", - "options": { - "rejectUnauthorized": false, - "noDelay": true, - "path": null - }, - "requests": {}, - "sockets": {}, - "freeSockets": {}, - "keepAliveMsecs": 1000, - "keepAlive": false, - "maxSockets": null, - "maxFreeSockets": 256, - "scheduling": "lifo", - "maxTotalSockets": null, - "totalSocketCount": 0, - "maxCachedSessions": 100, - "_sessionCache": { - "map": {}, - "list": [] - } - }, - "hooks": { - "beforeRequest": [], - "beforeRetry": [], - "beforeError": [], - "afterResponse": [] - }, - "prefixUrl": "", - "retry": { - "limit": 2, - "methods": [ - "get", - "put", - "head", - "delete", - "options", - "trace" - ], - "statusCodes": [ - 408, - 413, - 429, - 500, - 502, - 503, - 504 - ], - "afterStatusCodes": [ - 413, - 429, - 503 - ], - "maxRetryAfter": null, - "backoffLimit": null - }, - "throwHttpErrors": true, - "timeout": 10000, - "signal": {}, - "duplex": "half" - }, - "name": "HTTPError", - "requestUrl": "https://agent.opsec.id/vc/credentials/issue", - "status": 400, - "data": { - "message": "DID not found: did:key:z6MksCeXh9Jwp4ZTEb5Kei7sJpBLpUyS3oaAib8wbtJQqsQu" - } - } - } - ], - "_afterEach": [], - "_afterAll": [], - "_timeout": 15000, - "_slow": 75, - "_bail": false, - "_onlyTests": [], - "_onlySuites": [], - "delayed": false, - "parent": "5ehVpLQZCJPyIRT62GRLd", - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "_testId": "urn:uuid:441ac528-7cf6-476d-b941-8c561149d22d" - }, - { - "title": "SpruceID", - "ctx": null, - "suites": [], - "tests": [ + "duration": 1, + "state": "passed", + "speed": "fast" + }, { "type": "test", - "title": "When expressing a data integrity proof on an object, a proof property MUST be used.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=When%20expressing%20a%20data%20integrity%20proof%20on%20an%20object%2C%20a%20proof%20property%20MUST%20be%20used';\n shouldHaveProof({vc: data});\n }", + "title": "(\"proof.proofValue\") A string value that expresses base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The value MUST use a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification to express the binary data.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#:~:text=A%20string%20value%20that%20expresses%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof%20using%20the%20verificationMethod%20specified.%20The%20value%20MUST%20use%20a%20header%20and%20encoding%20as%20described%20in%20Section%202.4%20Multibase%20of%20the%20Controller%20Documents%201.0%20specification%20to%20express%20the%20binary%20data.';\n for(const proof of proofs) {\n should.exist(proof, 'Expected proof to exist.');\n //FIXME the suite should pass in the expectedPrefix and\n //encodingName or type\n const {\n prefix: expectedPrefix,\n name: encodingName\n } = expectedMultibasePrefix(proof.cryptosuite);\n shouldHaveProofValue({proof, expectedPrefix, encodingName});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -4169,24 +4110,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "gOLKDdlOgm5o-DegeI1Ps", + "parent": "V3app5v08kK3UQYixBWWE", "ctx": null, - "_testId": "urn:uuid:59c19879-9f72-443c-91db-dd9bbea79c7f", + "_testId": "urn:uuid:cd547d99-c021-402a-ab13-e748b2a8d755", "cell": { - "columnId": "SpruceID", - "rowId": "When expressing a data integrity proof on an object, a proof property MUST be used." + "columnId": "OpSecId", + "rowId": "(\"proof.proofValue\") A string value that expresses base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The value MUST use a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification to express the binary data." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=When%20expressing%20a%20data%20integrity%20proof%20on%20an%20object%2C%20a%20proof%20property%20MUST%20be%20used", + "link": "https://w3c.github.io/vc-data-integrity/#:~:text=A%20string%20value%20that%20expresses%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof%20using%20the%20verificationMethod%20specified.%20The%20value%20MUST%20use%20a%20header%20and%20encoding%20as%20described%20in%20Section%202.4%20Multibase%20of%20the%20Controller%20Documents%201.0%20specification%20to%20express%20the%20binary%20data.", "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "If present (proof), its value MUST be either a single object, or an unordered set of objects", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=If%20present%2C%20its%20value%20MUST%20be%20either%20a%20single%20object%2C%20or%20an%20unordered%20set%20of%20objects';\n shouldHaveProof({vc: data});\n const {proof} = data;\n const validType = isObjectOrArrayOfObjects(proof);\n validType.should.equal(true, 'Expected proof to be' +\n 'either an object or an unordered set of objects.');\n }", + "title": "if \"proof.previousProof\" field exists, it MUST be a string.", + "body": "function() {\n for(const proof of proofs) {\n if(proof.previousProof) {\n proof.previousProof.should.be.a('string', 'Expected ' +\n '\"proof.previousProof\" to be a string.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -4196,24 +4137,23 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "gOLKDdlOgm5o-DegeI1Ps", + "parent": "V3app5v08kK3UQYixBWWE", "ctx": null, - "_testId": "urn:uuid:4844b5ff-5942-4a0f-8108-2bc86f696567", + "_testId": "urn:uuid:5c022bde-acce-45dc-90f5-c4f04682b351", "cell": { - "columnId": "SpruceID", - "rowId": "If present (proof), its value MUST be either a single object, or an unordered set of objects" + "columnId": "OpSecId", + "rowId": "if \"proof.previousProof\" field exists, it MUST be a string." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=If%20present%2C%20its%20value%20MUST%20be%20either%20a%20single%20object%2C%20or%20an%20unordered%20set%20of%20objects", "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "(\"proof.id\") An optional identifier for the proof, which MUST be a URL.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=An%20optional%20identifier%20for%20the%20proof%2C%20which%20MUST%20be%20a%20URL';\n for(const proof of proofs) {\n if(proof.id) {\n shouldBeUrl({url: proof.id, prop: 'proof.id'});\n }\n }\n }", + "title": "if \"proof.nonce\" field exists, it MUST be a string.", + "body": "function() {\n for(const proof of proofs) {\n if(proof.nonce) {\n proof.nonce.should.be.a('string', 'Expected \"proof.nonce\" ' +\n 'to be a string.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -4223,24 +4163,23 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "gOLKDdlOgm5o-DegeI1Ps", + "parent": "V3app5v08kK3UQYixBWWE", "ctx": null, - "_testId": "urn:uuid:7903e100-4b08-44b0-b152-29991b532665", + "_testId": "urn:uuid:2608e5ff-6f26-494a-8bb9-a21ab008b4b3", "cell": { - "columnId": "SpruceID", - "rowId": "(\"proof.id\") An optional identifier for the proof, which MUST be a URL." + "columnId": "OpSecId", + "rowId": "if \"proof.nonce\" field exists, it MUST be a string." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=An%20optional%20identifier%20for%20the%20proof%2C%20which%20MUST%20be%20a%20URL", "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "The specific proof type used for the cryptographic proof MUST be specified as a string that maps to a URL.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20specific%20proof%20type%20used%20for%20the%20cryptographic%20proof%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL';\n const prop = '@type';\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string', 'Expected \"proof.type\" to be a string.');\n const expanded = await jsonld.expand({\n '@context': data['@context'],\n type: proof.type\n }, {documentLoader});\n for(const term of expanded) {\n const types = term[prop];\n should.exist(types, 'Expected @type to exist.');\n types.every(url => shouldBeUrl({url, prop}));\n }\n }\n }", + "title": "Cryptographic suite designers MUST use mandatory proof value properties defined in Section 2.1 Proofs, and MAY define other properties specific to their cryptographic suite.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#add-proof:~:text=MUST%20use%20mandatory%20proof%20value%20properties%20defined';\n for(const proof of proofs) {\n shouldBeProof({proof});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -4250,33 +4189,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "gOLKDdlOgm5o-DegeI1Ps", + "parent": "V3app5v08kK3UQYixBWWE", "ctx": null, - "_testId": "urn:uuid:79219652-18e0-447c-812e-b52ff7a321b3", + "_testId": "urn:uuid:d1a69747-2ea7-45ca-9bde-c2d1aa8698e9", "cell": { - "columnId": "SpruceID", - "rowId": "The specific proof type used for the cryptographic proof MUST be specified as a string that maps to a URL." + "columnId": "OpSecId", + "rowId": "Cryptographic suite designers MUST use mandatory proof value properties defined in Section 2.1 Proofs, and MAY define other properties specific to their cryptographic suite." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20specific%20proof%20type%20used%20for%20the%20cryptographic%20proof%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL", + "link": "https://w3c.github.io/vc-data-integrity/#add-proof:~:text=MUST%20use%20mandatory%20proof%20value%20properties%20defined", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9562, + "_idleStart": 9955, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 1, + "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "\"proof.type\" field MUST be \"Ed25519Signature2020\" and the associated document MUST include expected contexts.", - "body": "function() {\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string',\n 'Expected \"proof.type\" to be a string.'\n );\n const hasExpectedType = expectedProofTypes.includes(proof.type);\n hasExpectedType.should.equal(true);\n\n if(proof.type === 'Ed25519Signature2020') {\n const expectedContext =\n 'https://w3id.org/security/suites/ed25519-2020/v1';\n const hasExpectedContext =\n data['@context'].includes(expectedContext);\n hasExpectedContext.should.equal(true);\n }\n }\n }", + "title": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.';\n const undefinedType = structuredClone(credential);\n undefinedType.type.push('InvalidType');\n await shouldFailIssuance({\n credential: undefinedType,\n issuer,\n reason: 'Expected issuer to error when VC has an undefined type.'\n });\n const undefinedTerm = structuredClone(credential);\n undefinedTerm.credentialSubject.invalidTerm = 'invalidTerm';\n await shouldFailIssuance({\n credential: undefinedTerm,\n issuer,\n reason: 'Expected issuer to error when VC has an undefined term.'\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -4286,251 +4225,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "gOLKDdlOgm5o-DegeI1Ps", + "parent": "V3app5v08kK3UQYixBWWE", "ctx": null, - "_testId": "urn:uuid:dcccf09a-dd77-4d46-bc20-63e50daac92a", + "_testId": "urn:uuid:55faf531-ed98-4fab-99f6-6ff50e3bf706", "cell": { - "columnId": "SpruceID", - "rowId": "\"proof.type\" field MUST be \"Ed25519Signature2020\" and the associated document MUST include expected contexts." - }, - "_events": {}, - "_eventsCount": 1, - "duration": 0, - "state": "passed", - "speed": "fast" - }, - { - "type": "test", - "title": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified. If specified, its value MUST be a string.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.';\n for(const proof of proofs) {\n if(proof.type && proof.type === 'DataIntegrityProof') {\n should.exist(\n proof.cryptosuite,\n 'If the proof type is DataIntegrityProof, cryptosuite MUST ' +\n 'be specified');\n proof.cryptosuite.should.be.a(\n 'string',\n 'cryptosuite value MUST be a string.');\n }\n }\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "gOLKDdlOgm5o-DegeI1Ps", - "ctx": null, - "_testId": "urn:uuid:4529bc8d-ea61-4043-97cf-26e1d11e913e", - "cell": { - "columnId": "SpruceID", - "rowId": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified. If specified, its value MUST be a string." - }, - "_events": {}, - "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.", - "duration": 0, - "state": "passed", - "speed": "fast" - }, - { - "type": "test", - "title": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL]", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=A%20verification%20method%20is%20the%20means%20and%20information%20needed%20to%20verify%20the%20proof.%20If%20included%2C%20the%20value%20MUST%20be%20a%20string%20that%20maps%20to%20a%20%5BURL%5D.';\n for(const proof of proofs) {\n await shouldMapToUrl({\n doc: {\n '@context': data['@context'],\n ...proof\n },\n term: 'https://w3id.org/security#verificationMethod',\n prop: '@id',\n documentLoader\n });\n }\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "gOLKDdlOgm5o-DegeI1Ps", - "ctx": null, - "_testId": "urn:uuid:eb94a578-449b-40de-9c43-d6d870067f55", - "cell": { - "columnId": "SpruceID", - "rowId": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL]" - }, - "_events": {}, - "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=A%20verification%20method%20is%20the%20means%20and%20information%20needed%20to%20verify%20the%20proof.%20If%20included%2C%20the%20value%20MUST%20be%20a%20string%20that%20maps%20to%20a%20%5BURL%5D.", - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 9563, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 0, - "state": "passed", - "speed": "fast" - }, - { - "type": "test", - "title": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20reason%20the%20proof%20was%20created%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL';\n for(const proof of proofs) {\n proof.should.have.property('proofPurpose');\n proof.proofPurpose.should.be.a('string');\n await shouldMapToUrl({\n doc: {\n '@context': data['@context'],\n ...proof\n },\n term: 'https://w3id.org/security#proofPurpose',\n prop: '@id',\n documentLoader\n });\n }\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "gOLKDdlOgm5o-DegeI1Ps", - "ctx": null, - "_testId": "urn:uuid:796a12bd-8d56-4e2e-9fff-cf1957450f20", - "cell": { - "columnId": "SpruceID", - "rowId": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL" - }, - "_events": {}, - "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20reason%20the%20proof%20was%20created%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL", - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 9564, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 1, - "state": "passed", - "speed": "fast" - }, - { - "type": "test", - "title": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof';\n for(const proof of proofs) {\n should.exist(proof, 'Expected proof to exist.');\n const {\n prefix: expectedPrefix,\n name: encodingName\n } = expectedMultibasePrefix(proof.cryptosuite);\n shouldHaveProofValue({proof, expectedPrefix, encodingName});\n }\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "gOLKDdlOgm5o-DegeI1Ps", - "ctx": null, - "_testId": "urn:uuid:cf1567fb-9274-4bbe-a5fe-57f31ee5fb8d", - "cell": { - "columnId": "SpruceID", - "rowId": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification." - }, - "_events": {}, - "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof", - "duration": 0, - "state": "passed", - "speed": "fast" - }, - { - "type": "test", - "title": "if \"proof.previousProof\" field exists, it MUST be a string.", - "body": "function() {\n for(const proof of proofs) {\n if(proof.previousProof) {\n proof.previousProof.should.be.a('string', 'Expected ' +\n '\"proof.previousProof\" to be a string.');\n }\n }\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "gOLKDdlOgm5o-DegeI1Ps", - "ctx": null, - "_testId": "urn:uuid:56a4e8fd-9405-4c0e-bedb-fe0a4dec94c0", - "cell": { - "columnId": "SpruceID", - "rowId": "if \"proof.previousProof\" field exists, it MUST be a string." - }, - "_events": {}, - "_eventsCount": 1, - "duration": 0, - "state": "passed", - "speed": "fast" - }, - { - "type": "test", - "title": "if \"proof.nonce\" field exists, it MUST be a string.", - "body": "function() {\n for(const proof of proofs) {\n if(proof.nonce) {\n proof.nonce.should.be.a('string', 'Expected \"proof.nonce\" ' +\n 'to be a string.');\n }\n }\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "gOLKDdlOgm5o-DegeI1Ps", - "ctx": null, - "_testId": "urn:uuid:fad3a2c9-bebe-4c6f-907f-9206635e0c85", - "cell": { - "columnId": "SpruceID", - "rowId": "if \"proof.nonce\" field exists, it MUST be a string." - }, - "_events": {}, - "_eventsCount": 1, - "duration": 0, - "state": "passed", - "speed": "fast" - }, - { - "type": "test", - "title": "Cryptographic suite designers MUST use mandatory proof value properties defined in Section 2.1 Proofs, and MAY define other properties specific to their cryptographic suite.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#add-proof:~:text=MUST%20use%20mandatory%20proof%20value%20properties%20defined';\n for(const proof of proofs) {\n shouldBeProof({proof});\n }\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "gOLKDdlOgm5o-DegeI1Ps", - "ctx": null, - "_testId": "urn:uuid:6c712d44-8f99-479e-9825-b06ce2d82bca", - "cell": { - "columnId": "SpruceID", - "rowId": "Cryptographic suite designers MUST use mandatory proof value properties defined in Section 2.1 Proofs, and MAY define other properties specific to their cryptographic suite." - }, - "_events": {}, - "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#add-proof:~:text=MUST%20use%20mandatory%20proof%20value%20properties%20defined", - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 9566, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 1, - "state": "passed", - "speed": "fast" - }, - { - "type": "test", - "title": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.';\n const undefinedType = structuredClone(credential);\n undefinedType.type.push('InvalidType');\n await shouldFailIssuance({\n credential: undefinedType,\n issuer,\n reason: 'Expected issuer to error when VC has an undefined type.'\n });\n const undefinedTerm = structuredClone(credential);\n undefinedTerm.credentialSubject.invalidTerm = 'invalidTerm';\n await shouldFailIssuance({\n credential: undefinedTerm,\n issuer,\n reason: 'Expected issuer to error when VC has an undefined term.'\n });\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "gOLKDdlOgm5o-DegeI1Ps", - "ctx": null, - "_testId": "urn:uuid:ea71c61c-27f4-495c-ac5b-c5fd46a34753", - "cell": { - "columnId": "SpruceID", + "columnId": "OpSecId", "rowId": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document." }, "_events": {}, @@ -4540,14 +4239,21 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9566, + "_idleStart": 9955, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 87, - "state": "passed", - "speed": "slow" + "duration": 31, + "state": "failed", + "err": { + "name": "AssertionError", + "message": "Expected issuer to error when VC has an undefined type.: expected Response { status: 201, statusText: 'Created', headers: Headers { 'content-length': '796', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 01 Sep 2024 05:01:42 GMT', server: 'Python/3.12 aiohttp/3.10.5', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist", + "showDiff": false, + "actual": {}, + "operator": "notStrictEqual", + "stack": "AssertionError: Expected issuer to error when VC has an undefined type.: expected Response { status: 201, statusText: 'Created', headers: Headers { 'content-length': '796', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 01 Sep 2024 05:01:42 GMT', server: 'Python/3.12 aiohttp/3.10.5', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at shouldFailIssuance (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:71:14)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:258:7)" + } }, { "type": "test", @@ -4562,11 +4268,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "gOLKDdlOgm5o-DegeI1Ps", + "parent": "V3app5v08kK3UQYixBWWE", "ctx": null, - "_testId": "urn:uuid:88680ba1-23f8-4bbf-b263-eedd0db795ed", + "_testId": "urn:uuid:542a2877-1f96-4ec5-86f3-a36e239bdc7f", "cell": { - "columnId": "SpruceID", + "columnId": "OpSecId", "rowId": "When an application is securing a document, if an @context property is not provided in the document or the Data Integrity terms used in the document are not mapped by existing values in the @context property, implementations SHOULD inject or append an @context property with a value of https://w3id.org/security/data-integrity/v2 or one or more contexts with at least the same declarations, such as the Verifiable Credential Data Model v2.0 context (https://www.w3.org/ns/credentials/v2)." }, "_events": {}, @@ -4576,16 +4282,16 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9654, + "_idleStart": 9986, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 14, + "duration": 25, "state": "failed", "err": { "name": "AssertionError", - "message": "Expected issuer SpruceID to perform context injection on a VC with out an \"@context\" property: expected HTTPError: Request failed with status cod… { …(5) } to not exist", + "message": "Expected issuer OpSecId to perform context injection on a VC with out an \"@context\" property: expected HTTPError: Request failed with status cod… { …(6) } to not exist", "showDiff": false, "actual": { "response": {}, @@ -4593,22 +4299,26 @@ "options": { "credentials": "same-origin", "headers": {}, - "body": "{\"credential\":{\"id\":\"urn:uuid:f01d1bec-dba3-47eb-8312-ba584904f5ca\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkgYAGxLBSXa6Ygk1PnUbK2F7zya8juE9nfsZhrvY7c9GD\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"}},\"options\":{\"type\":\"Ed25519Signature2020\"}}", + "body": "{\"credential\":{\"id\":\"urn:uuid:d6449dcd-fd2d-430c-8ece-7122a476f8d4\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkmiYjSToh5NdEf9xNuh5mDGXGYinzcAy1s4feRHtkEQJr\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"}},\"options\":{\"type\":\"Ed25519Signature2020\",\"credentialStatus\":{\"type\":\"BitstringStatusListEntry\",\"statusPurpose\":\"suspension\"}}}", "method": "POST", "json": { "credential": { - "id": "urn:uuid:f01d1bec-dba3-47eb-8312-ba584904f5ca", + "id": "urn:uuid:d6449dcd-fd2d-430c-8ece-7122a476f8d4", "type": [ "VerifiableCredential" ], - "issuer": "did:key:z6MkgYAGxLBSXa6Ygk1PnUbK2F7zya8juE9nfsZhrvY7c9GD", + "issuer": "did:key:z6MkmiYjSToh5NdEf9xNuh5mDGXGYinzcAy1s4feRHtkEQJr", "issuanceDate": "2020-03-16T22:37:26.544Z", "credentialSubject": { "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" } }, "options": { - "type": "Ed25519Signature2020" + "type": "Ed25519Signature2020", + "credentialStatus": { + "type": "BitstringStatusListEntry", + "statusPurpose": "suspension" + } } }, "agent": { @@ -4677,11 +4387,20 @@ "duplex": "half" }, "name": "HTTPError", - "requestUrl": "https://vc.spruceid.xyz/credentials/issue", - "status": 400 + "requestUrl": "https://agent.opsec.id/vc/credentials/issue", + "status": 422, + "data": { + "json": { + "credential": { + "@context": [ + "Missing data for required field." + ] + } + } + } }, "operator": "notStrictEqual", - "stack": "AssertionError: Expected issuer SpruceID to perform context injection on a VC with out an \"@context\" property: expected HTTPError: Request failed with status cod… { …(5) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:442:18)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" + "stack": "AssertionError: Expected issuer OpSecId to perform context injection on a VC with out an \"@context\" property: expected HTTPError: Request failed with status cod… { …(6) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:454:18)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" } }, { @@ -4697,11 +4416,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "gOLKDdlOgm5o-DegeI1Ps", + "parent": "V3app5v08kK3UQYixBWWE", "ctx": null, - "_testId": "urn:uuid:90bec99d-df55-4e54-9845-7c74c5ca4f86", + "_testId": "urn:uuid:1b8fe3c5-a0c1-4a10-89f6-4602d38fd2f7", "cell": { - "columnId": "SpruceID", + "columnId": "OpSecId", "rowId": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." }, "_events": {}, @@ -4724,11 +4443,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "gOLKDdlOgm5o-DegeI1Ps", + "parent": "V3app5v08kK3UQYixBWWE", "ctx": null, - "_testId": "urn:uuid:3a687485-b117-4294-9238-41ddf1b91017", + "_testId": "urn:uuid:c4a02dc7-2156-47ec-9878-145d07287e96", "cell": { - "columnId": "SpruceID", + "columnId": "OpSecId", "rowId": "The expires property is OPTIONAL and, if present, specifies when the proof expires. If present, it MUST be an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." }, "_events": {}, @@ -4751,11 +4470,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "gOLKDdlOgm5o-DegeI1Ps", + "parent": "V3app5v08kK3UQYixBWWE", "ctx": null, - "_testId": "urn:uuid:7e3e5547-0496-4d67-9b85-787852d58766", + "_testId": "urn:uuid:cadd4299-cbce-4efd-9c22-3e389796c66d", "cell": { - "columnId": "SpruceID", + "columnId": "OpSecId", "rowId": "The domain property is OPTIONAL. It conveys one or more security domains in which the proof is meant to be used. If specified, the associated value MUST be either a string, or an unordered set of strings. A verifier SHOULD use the value to ensure that the proof was intended to be used in the security domain in which the verifier is operating." }, "_events": {}, @@ -4778,11 +4497,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "gOLKDdlOgm5o-DegeI1Ps", + "parent": "V3app5v08kK3UQYixBWWE", "ctx": null, - "_testId": "urn:uuid:58112a30-9596-4985-b70f-be05e826e4cd", + "_testId": "urn:uuid:27fabfc0-5197-4376-b3f4-36aa5162bbd5", "cell": { - "columnId": "SpruceID", + "columnId": "OpSecId", "rowId": "(challenge) A string value that SHOULD be included in a proof if a domain is specified." }, "_events": {}, @@ -4798,7 +4517,7 @@ "_retries": -1, "_beforeEach": [ { - "title": "\"before each\" hook in \"SpruceID\"", + "title": "\"before each\" hook in \"OpSecId\"", "body": "function() {\n this.currentTest.cell = {\n columnId,\n rowId: this.currentTest.title\n };\n }", "async": 0, "sync": true, @@ -4809,7 +4528,7 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "gOLKDdlOgm5o-DegeI1Ps", + "parent": "V3app5v08kK3UQYixBWWE", "ctx": null, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", "originalTitle": "\"before each\" hook", @@ -4821,7 +4540,7 @@ ], "_beforeAll": [ { - "title": "\"before all\" hook in \"SpruceID\"", + "title": "\"before all\" hook in \"OpSecId\"", "body": "async function() {\n if(!issuer) {\n throw new Error(`Expected ${vendorName} to have an issuer.`);\n }\n if(!credential) {\n throw new Error(`Expected a credential to be passed in ` +\n `received ${credential}`);\n }\n data = await createInitialVc({issuer, credential});\n proofs = Array.isArray(data.proof) ? data.proof : [data.proof];\n }", "async": 0, "sync": true, @@ -4832,7 +4551,7 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "gOLKDdlOgm5o-DegeI1Ps", + "parent": "V3app5v08kK3UQYixBWWE", "ctx": null, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", "originalTitle": "\"before all\" hook", @@ -4842,12 +4561,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9477, + "_idleStart": 9823, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 84, + "duration": 127, "_error": null } ], @@ -4859,12 +4578,12 @@ "_onlyTests": [], "_onlySuites": [], "delayed": false, - "parent": "5ehVpLQZCJPyIRT62GRLd", + "parent": "5m5Na48WUMMJzYMJrPbce", "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "_testId": "urn:uuid:574bfad6-dcea-42e1-84dc-311809cd1c46" + "_testId": "urn:uuid:2b559342-bb3d-4441-a5ff-80e2a2fdd2a3" }, { - "title": "Trinsic", + "title": "SpruceID", "ctx": null, "suites": [], "tests": [ @@ -4881,11 +4600,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "RZteP052VeaXIQkX5MUvo", + "parent": "pJvzjaJb0oGOCZ6Fp689R", "ctx": null, - "_testId": "urn:uuid:0a70603f-54f9-47a2-b832-4afec7c4333a", + "_testId": "urn:uuid:e7c79ba3-0dcb-4886-9524-1ba869f183c4", "cell": { - "columnId": "Trinsic", + "columnId": "SpruceID", "rowId": "When expressing a data integrity proof on an object, a proof property MUST be used." }, "_events": {}, @@ -4897,7 +4616,7 @@ }, { "type": "test", - "title": "If present (proof), its value MUST be either a single object, or an unordered set of objects", + "title": "If present (proof), its value MUST be either a single object, or an unordered set of objects.", "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=If%20present%2C%20its%20value%20MUST%20be%20either%20a%20single%20object%2C%20or%20an%20unordered%20set%20of%20objects';\n shouldHaveProof({vc: data});\n const {proof} = data;\n const validType = isObjectOrArrayOfObjects(proof);\n validType.should.equal(true, 'Expected proof to be' +\n 'either an object or an unordered set of objects.');\n }", "async": 0, "sync": true, @@ -4908,12 +4627,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "RZteP052VeaXIQkX5MUvo", + "parent": "pJvzjaJb0oGOCZ6Fp689R", "ctx": null, - "_testId": "urn:uuid:12103c9b-c718-4101-a2c3-3f82cba83317", + "_testId": "urn:uuid:ed7e6b53-cab2-45c0-ab6e-81c8c744ce8b", "cell": { - "columnId": "Trinsic", - "rowId": "If present (proof), its value MUST be either a single object, or an unordered set of objects" + "columnId": "SpruceID", + "rowId": "If present (proof), its value MUST be either a single object, or an unordered set of objects." }, "_events": {}, "_eventsCount": 1, @@ -4935,11 +4654,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "RZteP052VeaXIQkX5MUvo", + "parent": "pJvzjaJb0oGOCZ6Fp689R", "ctx": null, - "_testId": "urn:uuid:0df9a511-2d07-45bd-85c0-97ebccf46b7a", + "_testId": "urn:uuid:59de9272-fdb0-4896-9c6f-3f8ee94770a4", "cell": { - "columnId": "Trinsic", + "columnId": "SpruceID", "rowId": "(\"proof.id\") An optional identifier for the proof, which MUST be a URL." }, "_events": {}, @@ -4951,8 +4670,8 @@ }, { "type": "test", - "title": "The specific proof type used for the cryptographic proof MUST be specified as a string that maps to a URL.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20specific%20proof%20type%20used%20for%20the%20cryptographic%20proof%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL';\n const prop = '@type';\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string', 'Expected \"proof.type\" to be a string.');\n const expanded = await jsonld.expand({\n '@context': data['@context'],\n type: proof.type\n }, {documentLoader});\n for(const term of expanded) {\n const types = term[prop];\n should.exist(types, 'Expected @type to exist.');\n types.every(url => shouldBeUrl({url, prop}));\n }\n }\n }", + "title": "The specific type of proof MUST be specified as a string that maps to a URL.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#:~:text=The%20specific%20type%20of%20proof%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL';\n const prop = '@type';\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string', 'Expected \"proof.type\" to be a string.');\n const expanded = await jsonld.expand({\n '@context': data['@context'],\n type: proof.type\n }, {documentLoader});\n for(const term of expanded) {\n const types = term[prop];\n should.exist(types, 'Expected @type to exist.');\n types.every(url => shouldBeUrl({url, prop}));\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -4962,26 +4681,26 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "RZteP052VeaXIQkX5MUvo", + "parent": "pJvzjaJb0oGOCZ6Fp689R", "ctx": null, - "_testId": "urn:uuid:b43850ad-3c3c-4b35-bf21-d52bb292c7cc", + "_testId": "urn:uuid:84795c66-e2fe-4972-9ff3-fcfe3cc7d547", "cell": { - "columnId": "Trinsic", - "rowId": "The specific proof type used for the cryptographic proof MUST be specified as a string that maps to a URL." + "columnId": "SpruceID", + "rowId": "The specific type of proof MUST be specified as a string that maps to a URL." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20specific%20proof%20type%20used%20for%20the%20cryptographic%20proof%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL", + "link": "https://w3c.github.io/vc-data-integrity/#:~:text=The%20specific%20type%20of%20proof%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10166, + "_idleStart": 10086, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 1, "state": "passed", "speed": "fast" }, @@ -4998,11 +4717,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "RZteP052VeaXIQkX5MUvo", + "parent": "pJvzjaJb0oGOCZ6Fp689R", "ctx": null, - "_testId": "urn:uuid:a1173a13-af33-44f7-83b4-551ec6bde666", + "_testId": "urn:uuid:124a620b-bda5-480f-b15b-803f7ff78332", "cell": { - "columnId": "Trinsic", + "columnId": "SpruceID", "rowId": "\"proof.type\" field MUST be \"Ed25519Signature2020\" and the associated document MUST include expected contexts." }, "_events": {}, @@ -5013,8 +4732,8 @@ }, { "type": "test", - "title": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified. If specified, its value MUST be a string.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.';\n for(const proof of proofs) {\n if(proof.type && proof.type === 'DataIntegrityProof') {\n should.exist(\n proof.cryptosuite,\n 'If the proof type is DataIntegrityProof, cryptosuite MUST ' +\n 'be specified');\n proof.cryptosuite.should.be.a(\n 'string',\n 'cryptosuite value MUST be a string.');\n }\n }\n }", + "title": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.';\n for(const proof of proofs) {\n if(proof.type && proof.type === 'DataIntegrityProof') {\n should.exist(\n proof.cryptosuite,\n 'If the proof type is DataIntegrityProof, cryptosuite MUST ' +\n 'be specified');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -5024,12 +4743,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "RZteP052VeaXIQkX5MUvo", + "parent": "pJvzjaJb0oGOCZ6Fp689R", "ctx": null, - "_testId": "urn:uuid:1a469f09-618d-45ca-abf7-03420a35245e", + "_testId": "urn:uuid:9c82b0b8-16f5-461a-8435-3ef05bb73300", "cell": { - "columnId": "Trinsic", - "rowId": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified. If specified, its value MUST be a string." + "columnId": "SpruceID", + "rowId": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified." }, "_events": {}, "_eventsCount": 1, @@ -5040,8 +4759,8 @@ }, { "type": "test", - "title": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL]", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=A%20verification%20method%20is%20the%20means%20and%20information%20needed%20to%20verify%20the%20proof.%20If%20included%2C%20the%20value%20MUST%20be%20a%20string%20that%20maps%20to%20a%20%5BURL%5D.';\n for(const proof of proofs) {\n await shouldMapToUrl({\n doc: {\n '@context': data['@context'],\n ...proof\n },\n term: 'https://w3id.org/security#verificationMethod',\n prop: '@id',\n documentLoader\n });\n }\n }", + "title": "If specified (proof.cryptosuite), its value MUST be a string.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.';\n for(const proof of proofs) {\n if(proof.cryptosuite) {\n proof.cryptosuite.should.be.a(\n 'string',\n 'cryptosuite value MUST be a string.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -5051,12 +4770,39 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "RZteP052VeaXIQkX5MUvo", + "parent": "pJvzjaJb0oGOCZ6Fp689R", "ctx": null, - "_testId": "urn:uuid:2adeedf8-8fbe-43ac-bdd7-e2870d24ff28", + "_testId": "urn:uuid:79c0e7aa-2f01-4537-b4e4-04e64a90dc1c", "cell": { - "columnId": "Trinsic", - "rowId": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL]" + "columnId": "SpruceID", + "rowId": "If specified (proof.cryptosuite), its value MUST be a string." + }, + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.", + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL].", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=A%20verification%20method%20is%20the%20means%20and%20information%20needed%20to%20verify%20the%20proof.%20If%20included%2C%20the%20value%20MUST%20be%20a%20string%20that%20maps%20to%20a%20%5BURL%5D.';\n for(const proof of proofs) {\n if(!data || !data?.['@context']) {\n throw new Error(`Expected ${vendorName} to issue a VC.`);\n }\n await shouldMapToUrl({\n doc: {\n '@context': data['@context'],\n ...proof\n },\n term: 'https://w3id.org/security#verificationMethod',\n prop: '@id',\n documentLoader\n });\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "parent": "pJvzjaJb0oGOCZ6Fp689R", + "ctx": null, + "_testId": "urn:uuid:c2a1df71-d68f-4526-a3da-20ef7391f805", + "cell": { + "columnId": "SpruceID", + "rowId": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL]." }, "_events": {}, "_eventsCount": 1, @@ -5065,7 +4811,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10167, + "_idleStart": 10087, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -5076,7 +4822,7 @@ }, { "type": "test", - "title": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL", + "title": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL.", "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20reason%20the%20proof%20was%20created%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL';\n for(const proof of proofs) {\n proof.should.have.property('proofPurpose');\n proof.proofPurpose.should.be.a('string');\n await shouldMapToUrl({\n doc: {\n '@context': data['@context'],\n ...proof\n },\n term: 'https://w3id.org/security#proofPurpose',\n prop: '@id',\n documentLoader\n });\n }\n }", "async": 0, "sync": true, @@ -5087,12 +4833,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "RZteP052VeaXIQkX5MUvo", + "parent": "pJvzjaJb0oGOCZ6Fp689R", "ctx": null, - "_testId": "urn:uuid:7f7bd901-d45f-42e2-8b87-7912e7dcc55e", + "_testId": "urn:uuid:6a13d279-e696-47d0-a72e-dd1d05f4544b", "cell": { - "columnId": "Trinsic", - "rowId": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL" + "columnId": "SpruceID", + "rowId": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL." }, "_events": {}, "_eventsCount": 1, @@ -5101,19 +4847,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10168, + "_idleStart": 10088, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 1, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof';\n for(const proof of proofs) {\n should.exist(proof, 'Expected proof to exist.');\n const {\n prefix: expectedPrefix,\n name: encodingName\n } = expectedMultibasePrefix(proof.cryptosuite);\n shouldHaveProofValue({proof, expectedPrefix, encodingName});\n }\n }", + "title": "(\"proof.proofValue\") A string value that expresses base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The value MUST use a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification to express the binary data.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#:~:text=A%20string%20value%20that%20expresses%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof%20using%20the%20verificationMethod%20specified.%20The%20value%20MUST%20use%20a%20header%20and%20encoding%20as%20described%20in%20Section%202.4%20Multibase%20of%20the%20Controller%20Documents%201.0%20specification%20to%20express%20the%20binary%20data.';\n for(const proof of proofs) {\n should.exist(proof, 'Expected proof to exist.');\n //FIXME the suite should pass in the expectedPrefix and\n //encodingName or type\n const {\n prefix: expectedPrefix,\n name: encodingName\n } = expectedMultibasePrefix(proof.cryptosuite);\n shouldHaveProofValue({proof, expectedPrefix, encodingName});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -5123,16 +4869,16 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "RZteP052VeaXIQkX5MUvo", + "parent": "pJvzjaJb0oGOCZ6Fp689R", "ctx": null, - "_testId": "urn:uuid:279e1d54-5af5-4cd5-8dac-0987ab4464c7", + "_testId": "urn:uuid:91ae1b1f-7928-4bb0-8bdf-0ca6023955a2", "cell": { - "columnId": "Trinsic", - "rowId": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification." + "columnId": "SpruceID", + "rowId": "(\"proof.proofValue\") A string value that expresses base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The value MUST use a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification to express the binary data." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof", + "link": "https://w3c.github.io/vc-data-integrity/#:~:text=A%20string%20value%20that%20expresses%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof%20using%20the%20verificationMethod%20specified.%20The%20value%20MUST%20use%20a%20header%20and%20encoding%20as%20described%20in%20Section%202.4%20Multibase%20of%20the%20Controller%20Documents%201.0%20specification%20to%20express%20the%20binary%20data.", "duration": 0, "state": "passed", "speed": "fast" @@ -5150,11 +4896,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "RZteP052VeaXIQkX5MUvo", + "parent": "pJvzjaJb0oGOCZ6Fp689R", "ctx": null, - "_testId": "urn:uuid:de45e215-fbbb-45c2-a32b-fbf3265bb2af", + "_testId": "urn:uuid:baf45a38-c6d5-435a-a0e6-364c3155dca5", "cell": { - "columnId": "Trinsic", + "columnId": "SpruceID", "rowId": "if \"proof.previousProof\" field exists, it MUST be a string." }, "_events": {}, @@ -5176,11 +4922,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "RZteP052VeaXIQkX5MUvo", + "parent": "pJvzjaJb0oGOCZ6Fp689R", "ctx": null, - "_testId": "urn:uuid:79705c5f-93b8-42a1-bba2-8fae7ff416fa", + "_testId": "urn:uuid:5abea5cc-7491-446b-a014-820fd23130d3", "cell": { - "columnId": "Trinsic", + "columnId": "SpruceID", "rowId": "if \"proof.nonce\" field exists, it MUST be a string." }, "_events": {}, @@ -5202,11 +4948,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "RZteP052VeaXIQkX5MUvo", + "parent": "pJvzjaJb0oGOCZ6Fp689R", "ctx": null, - "_testId": "urn:uuid:addac7d1-6e60-474f-9020-b009dfa881a4", + "_testId": "urn:uuid:605cc3ea-0393-493e-8995-192e4a4faba3", "cell": { - "columnId": "Trinsic", + "columnId": "SpruceID", "rowId": "Cryptographic suite designers MUST use mandatory proof value properties defined in Section 2.1 Proofs, and MAY define other properties specific to their cryptographic suite." }, "_events": {}, @@ -5216,12 +4962,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10170, + "_idleStart": 10089, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 1, "state": "passed", "speed": "fast" }, @@ -5238,11 +4984,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "RZteP052VeaXIQkX5MUvo", + "parent": "pJvzjaJb0oGOCZ6Fp689R", "ctx": null, - "_testId": "urn:uuid:da5ac357-d53e-48a6-9c28-42b830189f6e", + "_testId": "urn:uuid:1320f47d-75ae-4d2e-9d6c-1d2478a17ea1", "cell": { - "columnId": "Trinsic", + "columnId": "SpruceID", "rowId": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document." }, "_events": {}, @@ -5252,21 +4998,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10170, + "_idleStart": 10089, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 115, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected issuer to error when VC has an undefined type.: expected Response { status: 200, statusText: 'OK', headers: Headers { date: 'Sun, 25 Aug 2024 05:01:43 GMT', 'content-type': 'text/html; charset=utf-8', 'transfer-encoding': 'chunked', connection: 'keep-alive', 'cache-control': 'no-cache,no-store', expires: '-1', pragma: 'no-cache', 'x-envoy-upstream-service-time': '96', 'cf-cache-status': 'DYNAMIC', 'report-to': '{\"endpoints\":[{\"url\":\"https:\\\\/\\\\/a.nel.cloudflare.com\\\\/report\\\\/v4?s=TpxXtTFkI63v%2Bx8JNSIM15l2jI8JHDqVYGBjFOPWQ7QpdnUlz6mgEElTPZy6UPjSGdEoSe6WOAzeGXH3H099hfMXRgg3zfVRYdpugLWSc6hsYZ0sxvx4lABjqnqCvwsJPXKFcX9KSOaeniMzdQGk\"}],\"group\":\"cf-nel\",\"max_age\":604800}', nel: '{\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}', server: 'cloudflare', 'cf-ray': '8b8906999a919c42-IAD', 'content-encoding': 'br', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: null, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist", - "showDiff": false, - "actual": {}, - "operator": "notStrictEqual", - "stack": "AssertionError: Expected issuer to error when VC has an undefined type.: expected Response { status: 200, statusText: 'OK', headers: Headers { date: 'Sun, 25 Aug 2024 05:01:43 GMT', 'content-type': 'text/html; charset=utf-8', 'transfer-encoding': 'chunked', connection: 'keep-alive', 'cache-control': 'no-cache,no-store', expires: '-1', pragma: 'no-cache', 'x-envoy-upstream-service-time': '96', 'cf-cache-status': 'DYNAMIC', 'report-to': '{\"endpoints\":[{\"url\":\"https:\\\\/\\\\/a.nel.cloudflare.com\\\\/report\\\\/v4?s=TpxXtTFkI63v%2Bx8JNSIM15l2jI8JHDqVYGBjFOPWQ7QpdnUlz6mgEElTPZy6UPjSGdEoSe6WOAzeGXH3H099hfMXRgg3zfVRYdpugLWSc6hsYZ0sxvx4lABjqnqCvwsJPXKFcX9KSOaeniMzdQGk\"}],\"group\":\"cf-nel\",\"max_age\":604800}', nel: '{\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}', server: 'cloudflare', 'cf-ray': '8b8906999a919c42-IAD', 'content-encoding': 'br', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: null, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at shouldFailIssuance (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:71:14)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:246:7)" - } + "duration": 71, + "state": "passed", + "speed": "medium" }, { "type": "test", @@ -5281,11 +5020,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "RZteP052VeaXIQkX5MUvo", + "parent": "pJvzjaJb0oGOCZ6Fp689R", "ctx": null, - "_testId": "urn:uuid:f168c81b-fd3e-4bbf-affe-0367452454f2", + "_testId": "urn:uuid:6f452e29-2e5a-4c52-a51c-41fed0f9e70c", "cell": { - "columnId": "Trinsic", + "columnId": "SpruceID", "rowId": "When an application is securing a document, if an @context property is not provided in the document or the Data Integrity terms used in the document are not mapped by existing values in the @context property, implementations SHOULD inject or append an @context property with a value of https://w3id.org/security/data-integrity/v2 or one or more contexts with at least the same declarations, such as the Verifiable Credential Data Model v2.0 context (https://www.w3.org/ns/credentials/v2)." }, "_events": {}, @@ -5295,16 +5034,16 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10285, + "_idleStart": 10161, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 26, + "duration": 18, "state": "failed", "err": { "name": "AssertionError", - "message": "Expected issuer Trinsic to perform context injection on a VC with out an \"@context\" property: expected HTTPError: Request failed with status cod… { …(6) } to not exist", + "message": "Expected issuer SpruceID to perform context injection on a VC with out an \"@context\" property: expected HTTPError: Request failed with status cod… { …(5) } to not exist", "showDiff": false, "actual": { "response": {}, @@ -5312,15 +5051,15 @@ "options": { "credentials": "same-origin", "headers": {}, - "body": "{\"credential\":{\"id\":\"urn:uuid:d365f9fa-a73d-4708-b618-7f25733fb066\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkqbpLSbqnY1pxVyhBCDYcFsv4ZgGgqP32kzNrf5deWVPU\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"}},\"options\":{\"type\":\"Ed25519Signature2020\"}}", + "body": "{\"credential\":{\"id\":\"urn:uuid:b6e349c0-cc69-4a11-a8ad-c82e93a6e9a3\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkgYAGxLBSXa6Ygk1PnUbK2F7zya8juE9nfsZhrvY7c9GD\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"}},\"options\":{\"type\":\"Ed25519Signature2020\"}}", "method": "POST", "json": { "credential": { - "id": "urn:uuid:d365f9fa-a73d-4708-b618-7f25733fb066", + "id": "urn:uuid:b6e349c0-cc69-4a11-a8ad-c82e93a6e9a3", "type": [ "VerifiableCredential" ], - "issuer": "did:key:z6MkqbpLSbqnY1pxVyhBCDYcFsv4ZgGgqP32kzNrf5deWVPU", + "issuer": "did:key:z6MkgYAGxLBSXa6Ygk1PnUbK2F7zya8juE9nfsZhrvY7c9GD", "issuanceDate": "2020-03-16T22:37:26.544Z", "credentialSubject": { "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" @@ -5396,12 +5135,11 @@ "duplex": "half" }, "name": "HTTPError", - "requestUrl": "https://interop.connect.trinsic.cloud/vc-api/credentials/issue", - "status": 400, - "data": "Invalid credential" + "requestUrl": "https://vc.spruceid.xyz/credentials/issue", + "status": 400 }, "operator": "notStrictEqual", - "stack": "AssertionError: Expected issuer Trinsic to perform context injection on a VC with out an \"@context\" property: expected HTTPError: Request failed with status cod… { …(6) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:442:18)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" + "stack": "AssertionError: Expected issuer SpruceID to perform context injection on a VC with out an \"@context\" property: expected HTTPError: Request failed with status cod… { …(5) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:454:18)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" } }, { @@ -5417,11 +5155,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "RZteP052VeaXIQkX5MUvo", + "parent": "pJvzjaJb0oGOCZ6Fp689R", "ctx": null, - "_testId": "urn:uuid:ce161a3c-9be5-4744-9ee8-0afecdfae37f", + "_testId": "urn:uuid:b491a39e-8b44-4418-aecb-58c49bb3e350", "cell": { - "columnId": "Trinsic", + "columnId": "SpruceID", "rowId": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." }, "_events": {}, @@ -5444,11 +5182,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "RZteP052VeaXIQkX5MUvo", + "parent": "pJvzjaJb0oGOCZ6Fp689R", "ctx": null, - "_testId": "urn:uuid:f7784daf-446b-43ca-8788-e0cc85a7c726", + "_testId": "urn:uuid:6a1d3686-dc33-48aa-ad6e-5246ba306d6a", "cell": { - "columnId": "Trinsic", + "columnId": "SpruceID", "rowId": "The expires property is OPTIONAL and, if present, specifies when the proof expires. If present, it MUST be an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." }, "_events": {}, @@ -5471,11 +5209,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "RZteP052VeaXIQkX5MUvo", + "parent": "pJvzjaJb0oGOCZ6Fp689R", "ctx": null, - "_testId": "urn:uuid:f305fb9a-e7e5-4b4a-8fac-481d001db9f4", + "_testId": "urn:uuid:5304c953-8424-4f25-8784-9c5158e92980", "cell": { - "columnId": "Trinsic", + "columnId": "SpruceID", "rowId": "The domain property is OPTIONAL. It conveys one or more security domains in which the proof is meant to be used. If specified, the associated value MUST be either a string, or an unordered set of strings. A verifier SHOULD use the value to ensure that the proof was intended to be used in the security domain in which the verifier is operating." }, "_events": {}, @@ -5498,11 +5236,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "RZteP052VeaXIQkX5MUvo", + "parent": "pJvzjaJb0oGOCZ6Fp689R", "ctx": null, - "_testId": "urn:uuid:73ed5f36-92cd-4870-be1b-d3c6730fd25d", + "_testId": "urn:uuid:48f2acb2-f614-464d-9075-ccaee588a4c5", "cell": { - "columnId": "Trinsic", + "columnId": "SpruceID", "rowId": "(challenge) A string value that SHOULD be included in a proof if a domain is specified." }, "_events": {}, @@ -5518,7 +5256,7 @@ "_retries": -1, "_beforeEach": [ { - "title": "\"before each\" hook in \"Trinsic\"", + "title": "\"before each\" hook in \"SpruceID\"", "body": "function() {\n this.currentTest.cell = {\n columnId,\n rowId: this.currentTest.title\n };\n }", "async": 0, "sync": true, @@ -5529,7 +5267,7 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "RZteP052VeaXIQkX5MUvo", + "parent": "pJvzjaJb0oGOCZ6Fp689R", "ctx": null, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", "originalTitle": "\"before each\" hook", @@ -5541,7 +5279,7 @@ ], "_beforeAll": [ { - "title": "\"before all\" hook in \"Trinsic\"", + "title": "\"before all\" hook in \"SpruceID\"", "body": "async function() {\n if(!issuer) {\n throw new Error(`Expected ${vendorName} to have an issuer.`);\n }\n if(!credential) {\n throw new Error(`Expected a credential to be passed in ` +\n `received ${credential}`);\n }\n data = await createInitialVc({issuer, credential});\n proofs = Array.isArray(data.proof) ? data.proof : [data.proof];\n }", "async": 0, "sync": true, @@ -5552,7 +5290,7 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "RZteP052VeaXIQkX5MUvo", + "parent": "pJvzjaJb0oGOCZ6Fp689R", "ctx": null, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", "originalTitle": "\"before all\" hook", @@ -5562,12 +5300,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9670, + "_idleStart": 10012, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 496, + "duration": 72, "_error": null } ], @@ -5579,46 +5317,15 @@ "_onlyTests": [], "_onlySuites": [], "delayed": false, - "parent": "5ehVpLQZCJPyIRT62GRLd", + "parent": "5m5Na48WUMMJzYMJrPbce", "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "_testId": "urn:uuid:c3a14fe1-93b1-4e92-8681-aa8dd7fcb70f" - } - ], - "root": false, - "pending": false, - "_retries": -1, - "_beforeEach": [], - "_beforeAll": [], - "_afterEach": [], - "_afterAll": [], - "_timeout": 15000, - "_slow": 75, - "_bail": false, - "_onlyTests": [], - "_onlySuites": [], - "delayed": false, - "parent": "ZK_FTaA4OAv2ZcdBmOWSL", - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "matrix": true, - "report": true, - "rowLabel": "Test Name", - "columnLabel": "Issuer", - "_testId": "urn:uuid:05d7c8f8-29f6-4037-ac54-09235a288226", - "columns": [ - "apicatalog.com", - "Danube Tech", - "Digital Bazaar", - "EWF", - "LearnCard", - "OpSecId", - "SpruceID", - "Trinsic" - ], - "rows": [ + "_testId": "urn:uuid:ec6b4529-d9c8-48e3-88d1-02a13bb50439" + }, { - "id": "When expressing a data integrity proof on an object, a proof property MUST be used.", - "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=When%20expressing%20a%20data%20integrity%20proof%20on%20an%20object%2C%20a%20proof%20property%20MUST%20be%20used", - "cells": [ + "title": "Trinsic", + "ctx": null, + "suites": [], + "tests": [ { "type": "test", "title": "When expressing a data integrity proof on an object, a proof property MUST be used.", @@ -5632,24 +5339,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Q-Y1cYh4G8cDll4bwtBlR", + "parent": "qmgk3hHclzYw9jf2QjmPc", "ctx": null, - "_testId": "urn:uuid:b581ea26-07de-4f6a-9810-9c33ba0264fd", + "_testId": "urn:uuid:f6231b47-9658-4371-8e5e-cfa14eb9c228", "cell": { - "columnId": "apicatalog.com", + "columnId": "Trinsic", "rowId": "When expressing a data integrity proof on an object, a proof property MUST be used." }, "_events": {}, "_eventsCount": 1, "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=When%20expressing%20a%20data%20integrity%20proof%20on%20an%20object%2C%20a%20proof%20property%20MUST%20be%20used", - "duration": 1, + "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "When expressing a data integrity proof on an object, a proof property MUST be used.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=When%20expressing%20a%20data%20integrity%20proof%20on%20an%20object%2C%20a%20proof%20property%20MUST%20be%20used';\n shouldHaveProof({vc: data});\n }", + "title": "If present (proof), its value MUST be either a single object, or an unordered set of objects.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=If%20present%2C%20its%20value%20MUST%20be%20either%20a%20single%20object%2C%20or%20an%20unordered%20set%20of%20objects';\n shouldHaveProof({vc: data});\n const {proof} = data;\n const validType = isObjectOrArrayOfObjects(proof);\n validType.should.equal(true, 'Expected proof to be' +\n 'either an object or an unordered set of objects.');\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -5659,24 +5366,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "inrDQx7FuP3tRBmfKO9Ff", + "parent": "qmgk3hHclzYw9jf2QjmPc", "ctx": null, - "_testId": "urn:uuid:2c901ada-3da8-4c32-bd52-52b0bfda832d", + "_testId": "urn:uuid:8f6d9008-78bf-45e6-a120-27990f40152e", "cell": { - "columnId": "Danube Tech", - "rowId": "When expressing a data integrity proof on an object, a proof property MUST be used." + "columnId": "Trinsic", + "rowId": "If present (proof), its value MUST be either a single object, or an unordered set of objects." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=When%20expressing%20a%20data%20integrity%20proof%20on%20an%20object%2C%20a%20proof%20property%20MUST%20be%20used", - "duration": 1, + "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=If%20present%2C%20its%20value%20MUST%20be%20either%20a%20single%20object%2C%20or%20an%20unordered%20set%20of%20objects", + "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "When expressing a data integrity proof on an object, a proof property MUST be used.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=When%20expressing%20a%20data%20integrity%20proof%20on%20an%20object%2C%20a%20proof%20property%20MUST%20be%20used';\n shouldHaveProof({vc: data});\n }", + "title": "(\"proof.id\") An optional identifier for the proof, which MUST be a URL.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=An%20optional%20identifier%20for%20the%20proof%2C%20which%20MUST%20be%20a%20URL';\n for(const proof of proofs) {\n if(proof.id) {\n shouldBeUrl({url: proof.id, prop: 'proof.id'});\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -5686,24 +5393,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "rrzz3mWjDHnKXxRkUzYAu", + "parent": "qmgk3hHclzYw9jf2QjmPc", "ctx": null, - "_testId": "urn:uuid:6f8a3ee1-ee60-48b0-8751-ba0214677d4e", + "_testId": "urn:uuid:14bd3828-edbc-4f5e-88b0-65fa7e811f8e", "cell": { - "columnId": "Digital Bazaar", - "rowId": "When expressing a data integrity proof on an object, a proof property MUST be used." + "columnId": "Trinsic", + "rowId": "(\"proof.id\") An optional identifier for the proof, which MUST be a URL." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=When%20expressing%20a%20data%20integrity%20proof%20on%20an%20object%2C%20a%20proof%20property%20MUST%20be%20used", + "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=An%20optional%20identifier%20for%20the%20proof%2C%20which%20MUST%20be%20a%20URL", "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "When expressing a data integrity proof on an object, a proof property MUST be used.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=When%20expressing%20a%20data%20integrity%20proof%20on%20an%20object%2C%20a%20proof%20property%20MUST%20be%20used';\n shouldHaveProof({vc: data});\n }", + "title": "The specific type of proof MUST be specified as a string that maps to a URL.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#:~:text=The%20specific%20type%20of%20proof%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL';\n const prop = '@type';\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string', 'Expected \"proof.type\" to be a string.');\n const expanded = await jsonld.expand({\n '@context': data['@context'],\n type: proof.type\n }, {documentLoader});\n for(const term of expanded) {\n const types = term[prop];\n should.exist(types, 'Expected @type to exist.');\n types.every(url => shouldBeUrl({url, prop}));\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -5713,24 +5420,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Njo-kHgHfWhU47zHweHTV", + "parent": "qmgk3hHclzYw9jf2QjmPc", "ctx": null, - "_testId": "urn:uuid:f788f947-d929-4f9c-99fb-61162aef109c", + "_testId": "urn:uuid:136486ae-f660-4c98-93e5-c3dd905fa87d", "cell": { - "columnId": "EWF", - "rowId": "When expressing a data integrity proof on an object, a proof property MUST be used." + "columnId": "Trinsic", + "rowId": "The specific type of proof MUST be specified as a string that maps to a URL." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=When%20expressing%20a%20data%20integrity%20proof%20on%20an%20object%2C%20a%20proof%20property%20MUST%20be%20used", - "duration": 0, + "link": "https://w3c.github.io/vc-data-integrity/#:~:text=The%20specific%20type%20of%20proof%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL", + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 11078, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 1, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "When expressing a data integrity proof on an object, a proof property MUST be used.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=When%20expressing%20a%20data%20integrity%20proof%20on%20an%20object%2C%20a%20proof%20property%20MUST%20be%20used';\n shouldHaveProof({vc: data});\n }", + "title": "\"proof.type\" field MUST be \"Ed25519Signature2020\" and the associated document MUST include expected contexts.", + "body": "function() {\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string',\n 'Expected \"proof.type\" to be a string.'\n );\n const hasExpectedType = expectedProofTypes.includes(proof.type);\n hasExpectedType.should.equal(true);\n\n if(proof.type === 'Ed25519Signature2020') {\n const expectedContext =\n 'https://w3id.org/security/suites/ed25519-2020/v1';\n const hasExpectedContext =\n data['@context'].includes(expectedContext);\n hasExpectedContext.should.equal(true);\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -5740,34 +5456,23 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "FsVwMDitvb4cbtnFdkm_k", + "parent": "qmgk3hHclzYw9jf2QjmPc", "ctx": null, - "_testId": "urn:uuid:8a9a225d-a7ae-4423-b303-d8d5e43330e9", + "_testId": "urn:uuid:133daa53-d6fc-4c0e-811f-9bdebdb0947e", "cell": { - "columnId": "LearnCard", - "rowId": "When expressing a data integrity proof on an object, a proof property MUST be used." + "columnId": "Trinsic", + "rowId": "\"proof.type\" field MUST be \"Ed25519Signature2020\" and the associated document MUST include expected contexts." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=When%20expressing%20a%20data%20integrity%20proof%20on%20an%20object%2C%20a%20proof%20property%20MUST%20be%20used", "duration": 0, "state": "passed", "speed": "fast" }, - { - "cell": { - "rowId": "When expressing a data integrity proof on an object, a proof property MUST be used.", - "colId": "OpSecId" - }, - "state": "pending", - "err": { - "message": "Test skipped." - } - }, { "type": "test", - "title": "When expressing a data integrity proof on an object, a proof property MUST be used.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=When%20expressing%20a%20data%20integrity%20proof%20on%20an%20object%2C%20a%20proof%20property%20MUST%20be%20used';\n shouldHaveProof({vc: data});\n }", + "title": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.';\n for(const proof of proofs) {\n if(proof.type && proof.type === 'DataIntegrityProof') {\n should.exist(\n proof.cryptosuite,\n 'If the proof type is DataIntegrityProof, cryptosuite MUST ' +\n 'be specified');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -5777,24 +5482,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "gOLKDdlOgm5o-DegeI1Ps", + "parent": "qmgk3hHclzYw9jf2QjmPc", "ctx": null, - "_testId": "urn:uuid:59c19879-9f72-443c-91db-dd9bbea79c7f", + "_testId": "urn:uuid:da9c7055-6932-4650-b181-bc942fb2841d", "cell": { - "columnId": "SpruceID", - "rowId": "When expressing a data integrity proof on an object, a proof property MUST be used." + "columnId": "Trinsic", + "rowId": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=When%20expressing%20a%20data%20integrity%20proof%20on%20an%20object%2C%20a%20proof%20property%20MUST%20be%20used", + "link": "https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.", "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "When expressing a data integrity proof on an object, a proof property MUST be used.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=When%20expressing%20a%20data%20integrity%20proof%20on%20an%20object%2C%20a%20proof%20property%20MUST%20be%20used';\n shouldHaveProof({vc: data});\n }", + "title": "If specified (proof.cryptosuite), its value MUST be a string.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.';\n for(const proof of proofs) {\n if(proof.cryptosuite) {\n proof.cryptosuite.should.be.a(\n 'string',\n 'cryptosuite value MUST be a string.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -5804,30 +5509,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "RZteP052VeaXIQkX5MUvo", + "parent": "qmgk3hHclzYw9jf2QjmPc", "ctx": null, - "_testId": "urn:uuid:0a70603f-54f9-47a2-b832-4afec7c4333a", + "_testId": "urn:uuid:9ddb2afc-d39a-45fb-a5e2-f61af7924d52", "cell": { "columnId": "Trinsic", - "rowId": "When expressing a data integrity proof on an object, a proof property MUST be used." + "rowId": "If specified (proof.cryptosuite), its value MUST be a string." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=When%20expressing%20a%20data%20integrity%20proof%20on%20an%20object%2C%20a%20proof%20property%20MUST%20be%20used", + "link": "https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.", "duration": 0, "state": "passed", "speed": "fast" - } - ] - }, - { - "id": "If present (proof), its value MUST be either a single object, or an unordered set of objects", - "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=If%20present%2C%20its%20value%20MUST%20be%20either%20a%20single%20object%2C%20or%20an%20unordered%20set%20of%20objects", - "cells": [ + }, { "type": "test", - "title": "If present (proof), its value MUST be either a single object, or an unordered set of objects", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=If%20present%2C%20its%20value%20MUST%20be%20either%20a%20single%20object%2C%20or%20an%20unordered%20set%20of%20objects';\n shouldHaveProof({vc: data});\n const {proof} = data;\n const validType = isObjectOrArrayOfObjects(proof);\n validType.should.equal(true, 'Expected proof to be' +\n 'either an object or an unordered set of objects.');\n }", + "title": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL].", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=A%20verification%20method%20is%20the%20means%20and%20information%20needed%20to%20verify%20the%20proof.%20If%20included%2C%20the%20value%20MUST%20be%20a%20string%20that%20maps%20to%20a%20%5BURL%5D.';\n for(const proof of proofs) {\n if(!data || !data?.['@context']) {\n throw new Error(`Expected ${vendorName} to issue a VC.`);\n }\n await shouldMapToUrl({\n doc: {\n '@context': data['@context'],\n ...proof\n },\n term: 'https://w3id.org/security#verificationMethod',\n prop: '@id',\n documentLoader\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -5837,24 +5536,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Q-Y1cYh4G8cDll4bwtBlR", + "parent": "qmgk3hHclzYw9jf2QjmPc", "ctx": null, - "_testId": "urn:uuid:bebc1b78-6c43-4869-b759-d6362a426e26", + "_testId": "urn:uuid:7799232e-bbe9-408f-a3da-3deabbdf3ba7", "cell": { - "columnId": "apicatalog.com", - "rowId": "If present (proof), its value MUST be either a single object, or an unordered set of objects" + "columnId": "Trinsic", + "rowId": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL]." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=If%20present%2C%20its%20value%20MUST%20be%20either%20a%20single%20object%2C%20or%20an%20unordered%20set%20of%20objects", - "duration": 1, + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=A%20verification%20method%20is%20the%20means%20and%20information%20needed%20to%20verify%20the%20proof.%20If%20included%2C%20the%20value%20MUST%20be%20a%20string%20that%20maps%20to%20a%20%5BURL%5D.", + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 11079, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "If present (proof), its value MUST be either a single object, or an unordered set of objects", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=If%20present%2C%20its%20value%20MUST%20be%20either%20a%20single%20object%2C%20or%20an%20unordered%20set%20of%20objects';\n shouldHaveProof({vc: data});\n const {proof} = data;\n const validType = isObjectOrArrayOfObjects(proof);\n validType.should.equal(true, 'Expected proof to be' +\n 'either an object or an unordered set of objects.');\n }", + "title": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20reason%20the%20proof%20was%20created%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL';\n for(const proof of proofs) {\n proof.should.have.property('proofPurpose');\n proof.proofPurpose.should.be.a('string');\n await shouldMapToUrl({\n doc: {\n '@context': data['@context'],\n ...proof\n },\n term: 'https://w3id.org/security#proofPurpose',\n prop: '@id',\n documentLoader\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -5864,24 +5572,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "inrDQx7FuP3tRBmfKO9Ff", + "parent": "qmgk3hHclzYw9jf2QjmPc", "ctx": null, - "_testId": "urn:uuid:cfe1db85-162c-4764-b548-5fb0a9311f7b", + "_testId": "urn:uuid:749f7997-2030-4a18-a682-1d827d85b06d", "cell": { - "columnId": "Danube Tech", - "rowId": "If present (proof), its value MUST be either a single object, or an unordered set of objects" + "columnId": "Trinsic", + "rowId": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=If%20present%2C%20its%20value%20MUST%20be%20either%20a%20single%20object%2C%20or%20an%20unordered%20set%20of%20objects", - "duration": 0, + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20reason%20the%20proof%20was%20created%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL", + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 11080, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 1, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "If present (proof), its value MUST be either a single object, or an unordered set of objects", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=If%20present%2C%20its%20value%20MUST%20be%20either%20a%20single%20object%2C%20or%20an%20unordered%20set%20of%20objects';\n shouldHaveProof({vc: data});\n const {proof} = data;\n const validType = isObjectOrArrayOfObjects(proof);\n validType.should.equal(true, 'Expected proof to be' +\n 'either an object or an unordered set of objects.');\n }", + "title": "(\"proof.proofValue\") A string value that expresses base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The value MUST use a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification to express the binary data.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#:~:text=A%20string%20value%20that%20expresses%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof%20using%20the%20verificationMethod%20specified.%20The%20value%20MUST%20use%20a%20header%20and%20encoding%20as%20described%20in%20Section%202.4%20Multibase%20of%20the%20Controller%20Documents%201.0%20specification%20to%20express%20the%20binary%20data.';\n for(const proof of proofs) {\n should.exist(proof, 'Expected proof to exist.');\n //FIXME the suite should pass in the expectedPrefix and\n //encodingName or type\n const {\n prefix: expectedPrefix,\n name: encodingName\n } = expectedMultibasePrefix(proof.cryptosuite);\n shouldHaveProofValue({proof, expectedPrefix, encodingName});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -5891,24 +5608,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "rrzz3mWjDHnKXxRkUzYAu", + "parent": "qmgk3hHclzYw9jf2QjmPc", "ctx": null, - "_testId": "urn:uuid:cbb5397f-2ea3-4238-8a63-8bc0fbdba487", + "_testId": "urn:uuid:ebcaabb2-0dbf-45e6-89b6-7ff57a8787fd", "cell": { - "columnId": "Digital Bazaar", - "rowId": "If present (proof), its value MUST be either a single object, or an unordered set of objects" + "columnId": "Trinsic", + "rowId": "(\"proof.proofValue\") A string value that expresses base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The value MUST use a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification to express the binary data." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=If%20present%2C%20its%20value%20MUST%20be%20either%20a%20single%20object%2C%20or%20an%20unordered%20set%20of%20objects", + "link": "https://w3c.github.io/vc-data-integrity/#:~:text=A%20string%20value%20that%20expresses%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof%20using%20the%20verificationMethod%20specified.%20The%20value%20MUST%20use%20a%20header%20and%20encoding%20as%20described%20in%20Section%202.4%20Multibase%20of%20the%20Controller%20Documents%201.0%20specification%20to%20express%20the%20binary%20data.", "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "If present (proof), its value MUST be either a single object, or an unordered set of objects", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=If%20present%2C%20its%20value%20MUST%20be%20either%20a%20single%20object%2C%20or%20an%20unordered%20set%20of%20objects';\n shouldHaveProof({vc: data});\n const {proof} = data;\n const validType = isObjectOrArrayOfObjects(proof);\n validType.should.equal(true, 'Expected proof to be' +\n 'either an object or an unordered set of objects.');\n }", + "title": "if \"proof.previousProof\" field exists, it MUST be a string.", + "body": "function() {\n for(const proof of proofs) {\n if(proof.previousProof) {\n proof.previousProof.should.be.a('string', 'Expected ' +\n '\"proof.previousProof\" to be a string.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -5918,24 +5635,23 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Njo-kHgHfWhU47zHweHTV", + "parent": "qmgk3hHclzYw9jf2QjmPc", "ctx": null, - "_testId": "urn:uuid:accffecb-4235-454a-951d-41ad9c764082", + "_testId": "urn:uuid:dae7c953-a11c-4420-8bc4-8b0705b92c38", "cell": { - "columnId": "EWF", - "rowId": "If present (proof), its value MUST be either a single object, or an unordered set of objects" + "columnId": "Trinsic", + "rowId": "if \"proof.previousProof\" field exists, it MUST be a string." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=If%20present%2C%20its%20value%20MUST%20be%20either%20a%20single%20object%2C%20or%20an%20unordered%20set%20of%20objects", "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "If present (proof), its value MUST be either a single object, or an unordered set of objects", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=If%20present%2C%20its%20value%20MUST%20be%20either%20a%20single%20object%2C%20or%20an%20unordered%20set%20of%20objects';\n shouldHaveProof({vc: data});\n const {proof} = data;\n const validType = isObjectOrArrayOfObjects(proof);\n validType.should.equal(true, 'Expected proof to be' +\n 'either an object or an unordered set of objects.');\n }", + "title": "if \"proof.nonce\" field exists, it MUST be a string.", + "body": "function() {\n for(const proof of proofs) {\n if(proof.nonce) {\n proof.nonce.should.be.a('string', 'Expected \"proof.nonce\" ' +\n 'to be a string.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -5945,34 +5661,23 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "FsVwMDitvb4cbtnFdkm_k", + "parent": "qmgk3hHclzYw9jf2QjmPc", "ctx": null, - "_testId": "urn:uuid:d53fbeac-f327-4038-a03e-acfe1d832cf5", + "_testId": "urn:uuid:db9c37f1-1099-4b6f-b74f-d75aa1b82487", "cell": { - "columnId": "LearnCard", - "rowId": "If present (proof), its value MUST be either a single object, or an unordered set of objects" + "columnId": "Trinsic", + "rowId": "if \"proof.nonce\" field exists, it MUST be a string." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=If%20present%2C%20its%20value%20MUST%20be%20either%20a%20single%20object%2C%20or%20an%20unordered%20set%20of%20objects", "duration": 0, "state": "passed", "speed": "fast" }, - { - "cell": { - "rowId": "If present (proof), its value MUST be either a single object, or an unordered set of objects", - "colId": "OpSecId" - }, - "state": "pending", - "err": { - "message": "Test skipped." - } - }, { "type": "test", - "title": "If present (proof), its value MUST be either a single object, or an unordered set of objects", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=If%20present%2C%20its%20value%20MUST%20be%20either%20a%20single%20object%2C%20or%20an%20unordered%20set%20of%20objects';\n shouldHaveProof({vc: data});\n const {proof} = data;\n const validType = isObjectOrArrayOfObjects(proof);\n validType.should.equal(true, 'Expected proof to be' +\n 'either an object or an unordered set of objects.');\n }", + "title": "Cryptographic suite designers MUST use mandatory proof value properties defined in Section 2.1 Proofs, and MAY define other properties specific to their cryptographic suite.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#add-proof:~:text=MUST%20use%20mandatory%20proof%20value%20properties%20defined';\n for(const proof of proofs) {\n shouldBeProof({proof});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -5982,24 +5687,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "gOLKDdlOgm5o-DegeI1Ps", + "parent": "qmgk3hHclzYw9jf2QjmPc", "ctx": null, - "_testId": "urn:uuid:4844b5ff-5942-4a0f-8108-2bc86f696567", + "_testId": "urn:uuid:605c49fc-de56-45ca-a25e-1eb34eb65d59", "cell": { - "columnId": "SpruceID", - "rowId": "If present (proof), its value MUST be either a single object, or an unordered set of objects" + "columnId": "Trinsic", + "rowId": "Cryptographic suite designers MUST use mandatory proof value properties defined in Section 2.1 Proofs, and MAY define other properties specific to their cryptographic suite." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=If%20present%2C%20its%20value%20MUST%20be%20either%20a%20single%20object%2C%20or%20an%20unordered%20set%20of%20objects", + "link": "https://w3c.github.io/vc-data-integrity/#add-proof:~:text=MUST%20use%20mandatory%20proof%20value%20properties%20defined", + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 11082, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "If present (proof), its value MUST be either a single object, or an unordered set of objects", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=If%20present%2C%20its%20value%20MUST%20be%20either%20a%20single%20object%2C%20or%20an%20unordered%20set%20of%20objects';\n shouldHaveProof({vc: data});\n const {proof} = data;\n const validType = isObjectOrArrayOfObjects(proof);\n validType.should.equal(true, 'Expected proof to be' +\n 'either an object or an unordered set of objects.');\n }", + "title": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.';\n const undefinedType = structuredClone(credential);\n undefinedType.type.push('InvalidType');\n await shouldFailIssuance({\n credential: undefinedType,\n issuer,\n reason: 'Expected issuer to error when VC has an undefined type.'\n });\n const undefinedTerm = structuredClone(credential);\n undefinedTerm.credentialSubject.invalidTerm = 'invalidTerm';\n await shouldFailIssuance({\n credential: undefinedTerm,\n issuer,\n reason: 'Expected issuer to error when VC has an undefined term.'\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -6009,30 +5723,40 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "RZteP052VeaXIQkX5MUvo", + "parent": "qmgk3hHclzYw9jf2QjmPc", "ctx": null, - "_testId": "urn:uuid:12103c9b-c718-4101-a2c3-3f82cba83317", + "_testId": "urn:uuid:a587c048-7880-4727-8c26-2ac27ff5f3ab", "cell": { "columnId": "Trinsic", - "rowId": "If present (proof), its value MUST be either a single object, or an unordered set of objects" + "rowId": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=If%20present%2C%20its%20value%20MUST%20be%20either%20a%20single%20object%2C%20or%20an%20unordered%20set%20of%20objects", - "duration": 0, - "state": "passed", - "speed": "fast" - } - ] - }, - { - "id": "(\"proof.id\") An optional identifier for the proof, which MUST be a URL.", - "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=An%20optional%20identifier%20for%20the%20proof%2C%20which%20MUST%20be%20a%20URL", - "cells": [ + "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.", + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 11082, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 85, + "state": "failed", + "err": { + "name": "AssertionError", + "message": "Expected issuer to error when VC has an undefined type.: expected Response { status: 200, statusText: 'OK', headers: Headers { date: 'Sun, 01 Sep 2024 05:01:43 GMT', 'content-type': 'text/html; charset=utf-8', 'transfer-encoding': 'chunked', connection: 'keep-alive', 'cache-control': 'no-cache,no-store', expires: '-1', pragma: 'no-cache', 'x-envoy-upstream-service-time': '66', 'cf-cache-status': 'DYNAMIC', 'report-to': '{\"endpoints\":[{\"url\":\"https:\\\\/\\\\/a.nel.cloudflare.com\\\\/report\\\\/v4?s=w6sjM6VoQhrr8EpU0l9oNyiMc%2FJv%2BpjQUGdevet5W9Soe6jTtCY14LE5X2DtQE4QNLLJnnt46Z%2B%2BwJD8dUm3BF3TEtTMsVvO6FyW2S9FElFrAMDGAL6nIdsoEqlUMkX15gUbnT%2F%2B9%2BbWQe6fuKNf\"}],\"group\":\"cf-nel\",\"max_age\":604800}', nel: '{\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}', server: 'cloudflare', 'cf-ray': '8bc2b438bfbc1316-IAD', 'content-encoding': 'br', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: null, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist", + "showDiff": false, + "actual": {}, + "operator": "notStrictEqual", + "stack": "AssertionError: Expected issuer to error when VC has an undefined type.: expected Response { status: 200, statusText: 'OK', headers: Headers { date: 'Sun, 01 Sep 2024 05:01:43 GMT', 'content-type': 'text/html; charset=utf-8', 'transfer-encoding': 'chunked', connection: 'keep-alive', 'cache-control': 'no-cache,no-store', expires: '-1', pragma: 'no-cache', 'x-envoy-upstream-service-time': '66', 'cf-cache-status': 'DYNAMIC', 'report-to': '{\"endpoints\":[{\"url\":\"https:\\\\/\\\\/a.nel.cloudflare.com\\\\/report\\\\/v4?s=w6sjM6VoQhrr8EpU0l9oNyiMc%2FJv%2BpjQUGdevet5W9Soe6jTtCY14LE5X2DtQE4QNLLJnnt46Z%2B%2BwJD8dUm3BF3TEtTMsVvO6FyW2S9FElFrAMDGAL6nIdsoEqlUMkX15gUbnT%2F%2B9%2BbWQe6fuKNf\"}],\"group\":\"cf-nel\",\"max_age\":604800}', nel: '{\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}', server: 'cloudflare', 'cf-ray': '8bc2b438bfbc1316-IAD', 'content-encoding': 'br', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: null, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at shouldFailIssuance (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:71:14)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:258:7)" + } + }, { "type": "test", - "title": "(\"proof.id\") An optional identifier for the proof, which MUST be a URL.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=An%20optional%20identifier%20for%20the%20proof%2C%20which%20MUST%20be%20a%20URL';\n for(const proof of proofs) {\n if(proof.id) {\n shouldBeUrl({url: proof.id, prop: 'proof.id'});\n }\n }\n }", + "title": "When an application is securing a document, if an @context property is not provided in the document or the Data Integrity terms used in the document are not mapped by existing values in the @context property, implementations SHOULD inject or append an @context property with a value of https://w3id.org/security/data-integrity/v2 or one or more contexts with at least the same declarations, such as the Verifiable Credential Data Model v2.0 context (https://www.w3.org/ns/credentials/v2).", + "body": "async function() {\n if(!issuer) {\n throw new Error(`Expected ${vendorName} to have an issuer.`);\n }\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#context-injection:~:text=if%20an%20%40context%20property%20is%20not%20provided%20in%20the%20document%20or%20the%20Data%20Integrity%20terms%20used%20in%20the%20document%20are%20not%20mapped%20by%20existing%20values%20in%20the%20%40context%20property%2C%20implementations%20SHOULD%20inject%20or%20append';\n if(optionalTests.contextInjection === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n const _credential = structuredClone(credential);\n const expectedContexts = [\n 'https://w3id.org/security/data-integrity/v2',\n 'https://www.w3.org/ns/credentials/v2'\n ];\n // remove the vc's context and expect context injection to occur\n delete _credential['@context'];\n let err;\n let data;\n try {\n data = await createInitialVc({issuer, credential: _credential});\n } catch(e) {\n err = e;\n }\n should.not.exist(\n err,\n `Expected issuer ${vendorName} to perform context injection on a ` +\n `VC with out an \"@context\" property`);\n should.exist(data, `Expected issuer ${vendorName} to return data.`);\n data.should.be.an('object', 'Expected response data to be an object.');\n should.exist(data['@context'],\n 'Expected data to have an injected \"@context\" property.');\n if(Array.isArray(data['@context'])) {\n const hasExpectedContext = expectedContexts.some(\n ctx => data['@context'].includes(ctx));\n return hasExpectedContext.should.equal(true,\n `Expected injected context to contain one of ${expectedContexts}`);\n }\n data['@context'].should.be.oneOf(expectedContexts);\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -6042,24 +5766,133 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Q-Y1cYh4G8cDll4bwtBlR", + "parent": "qmgk3hHclzYw9jf2QjmPc", "ctx": null, - "_testId": "urn:uuid:369390c3-6db2-4d3e-9bb9-6b82f6243b3b", + "_testId": "urn:uuid:52047179-fafa-4b0f-9cf1-9136345fb2e4", "cell": { - "columnId": "apicatalog.com", - "rowId": "(\"proof.id\") An optional identifier for the proof, which MUST be a URL." + "columnId": "Trinsic", + "rowId": "When an application is securing a document, if an @context property is not provided in the document or the Data Integrity terms used in the document are not mapped by existing values in the @context property, implementations SHOULD inject or append an @context property with a value of https://w3id.org/security/data-integrity/v2 or one or more contexts with at least the same declarations, such as the Verifiable Credential Data Model v2.0 context (https://www.w3.org/ns/credentials/v2)." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=An%20optional%20identifier%20for%20the%20proof%2C%20which%20MUST%20be%20a%20URL", - "duration": 0, - "state": "passed", - "speed": "fast" + "link": "https://w3c.github.io/vc-data-integrity/#context-injection:~:text=if%20an%20%40context%20property%20is%20not%20provided%20in%20the%20document%20or%20the%20Data%20Integrity%20terms%20used%20in%20the%20document%20are%20not%20mapped%20by%20existing%20values%20in%20the%20%40context%20property%2C%20implementations%20SHOULD%20inject%20or%20append", + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 11167, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 28, + "state": "failed", + "err": { + "name": "AssertionError", + "message": "Expected issuer Trinsic to perform context injection on a VC with out an \"@context\" property: expected HTTPError: Request failed with status cod… { …(6) } to not exist", + "showDiff": false, + "actual": { + "response": {}, + "request": {}, + "options": { + "credentials": "same-origin", + "headers": {}, + "body": "{\"credential\":{\"id\":\"urn:uuid:de89cf60-eea4-4b7c-b20d-f217c43a842b\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkqbpLSbqnY1pxVyhBCDYcFsv4ZgGgqP32kzNrf5deWVPU\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"}},\"options\":{\"type\":\"Ed25519Signature2020\"}}", + "method": "POST", + "json": { + "credential": { + "id": "urn:uuid:de89cf60-eea4-4b7c-b20d-f217c43a842b", + "type": [ + "VerifiableCredential" + ], + "issuer": "did:key:z6MkqbpLSbqnY1pxVyhBCDYcFsv4ZgGgqP32kzNrf5deWVPU", + "issuanceDate": "2020-03-16T22:37:26.544Z", + "credentialSubject": { + "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" + } + }, + "options": { + "type": "Ed25519Signature2020" + } + }, + "agent": { + "_events": {}, + "_eventsCount": 2, + "defaultPort": 443, + "protocol": "https:", + "options": { + "rejectUnauthorized": false, + "noDelay": true, + "path": null + }, + "requests": {}, + "sockets": {}, + "freeSockets": {}, + "keepAliveMsecs": 1000, + "keepAlive": false, + "maxSockets": null, + "maxFreeSockets": 256, + "scheduling": "lifo", + "maxTotalSockets": null, + "totalSocketCount": 0, + "maxCachedSessions": 100, + "_sessionCache": { + "map": {}, + "list": [] + } + }, + "hooks": { + "beforeRequest": [], + "beforeRetry": [], + "beforeError": [], + "afterResponse": [] + }, + "prefixUrl": "", + "retry": { + "limit": 2, + "methods": [ + "get", + "put", + "head", + "delete", + "options", + "trace" + ], + "statusCodes": [ + 408, + 413, + 429, + 500, + 502, + 503, + 504 + ], + "afterStatusCodes": [ + 413, + 429, + 503 + ], + "maxRetryAfter": null, + "backoffLimit": null + }, + "throwHttpErrors": true, + "timeout": 10000, + "signal": {}, + "duplex": "half" + }, + "name": "HTTPError", + "requestUrl": "https://interop.connect.trinsic.cloud/vc-api/credentials/issue", + "status": 400, + "data": "Invalid credential" + }, + "operator": "notStrictEqual", + "stack": "AssertionError: Expected issuer Trinsic to perform context injection on a VC with out an \"@context\" property: expected HTTPError: Request failed with status cod… { …(6) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:454:18)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" + } }, { "type": "test", - "title": "(\"proof.id\") An optional identifier for the proof, which MUST be a URL.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=An%20optional%20identifier%20for%20the%20proof%2C%20which%20MUST%20be%20a%20URL';\n for(const proof of proofs) {\n if(proof.id) {\n shouldBeUrl({url: proof.id, prop: 'proof.id'});\n }\n }\n }", + "title": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", + "body": "function() {\n this.test.link = 'https://www.w3.org/TR/vc-data-integrity/#:~:text=The%20date%20and%20time%20the%20proof%20was%20created%20is%20OPTIONAL%20and%2C%20if%20included%2C%20MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC.';\n if(optionalTests.dates === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.created) {\n // check if \"created\" is a valid XML Schema 1.1 dateTimeStamp\n // value\n proof.created.should.match(dateRegex);\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -6069,24 +5902,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "inrDQx7FuP3tRBmfKO9Ff", + "parent": "qmgk3hHclzYw9jf2QjmPc", "ctx": null, - "_testId": "urn:uuid:5de7b797-06c3-4939-becb-aa1d119472b2", + "_testId": "urn:uuid:d81863d0-6891-45df-b521-1f11368cd92e", "cell": { - "columnId": "Danube Tech", - "rowId": "(\"proof.id\") An optional identifier for the proof, which MUST be a URL." + "columnId": "Trinsic", + "rowId": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=An%20optional%20identifier%20for%20the%20proof%2C%20which%20MUST%20be%20a%20URL", + "link": "https://www.w3.org/TR/vc-data-integrity/#:~:text=The%20date%20and%20time%20the%20proof%20was%20created%20is%20OPTIONAL%20and%2C%20if%20included%2C%20MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC.", "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "(\"proof.id\") An optional identifier for the proof, which MUST be a URL.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=An%20optional%20identifier%20for%20the%20proof%2C%20which%20MUST%20be%20a%20URL';\n for(const proof of proofs) {\n if(proof.id) {\n shouldBeUrl({url: proof.id, prop: 'proof.id'});\n }\n }\n }", + "title": "The expires property is OPTIONAL and, if present, specifies when the proof expires. If present, it MUST be an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time';\n if(optionalTests.dates === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.expires) {\n // check if \"created\" is a valid XML Schema 1.1 dateTimeStamp\n // value\n proof.expires.should.match(dateRegex);\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -6096,24 +5929,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "rrzz3mWjDHnKXxRkUzYAu", + "parent": "qmgk3hHclzYw9jf2QjmPc", "ctx": null, - "_testId": "urn:uuid:bb40066d-7ab0-4f58-a4f1-7ae1e9be6a0f", + "_testId": "urn:uuid:ac859da4-a074-4c3f-9fc3-e38216195679", "cell": { - "columnId": "Digital Bazaar", - "rowId": "(\"proof.id\") An optional identifier for the proof, which MUST be a URL." + "columnId": "Trinsic", + "rowId": "The expires property is OPTIONAL and, if present, specifies when the proof expires. If present, it MUST be an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=An%20optional%20identifier%20for%20the%20proof%2C%20which%20MUST%20be%20a%20URL", + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time", "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "(\"proof.id\") An optional identifier for the proof, which MUST be a URL.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=An%20optional%20identifier%20for%20the%20proof%2C%20which%20MUST%20be%20a%20URL';\n for(const proof of proofs) {\n if(proof.id) {\n shouldBeUrl({url: proof.id, prop: 'proof.id'});\n }\n }\n }", + "title": "The domain property is OPTIONAL. It conveys one or more security domains in which the proof is meant to be used. If specified, the associated value MUST be either a string, or an unordered set of strings. A verifier SHOULD use the value to ensure that the proof was intended to be used in the security domain in which the verifier is operating.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=The%20domain%20property%20is%20OPTIONAL.%20It%20conveys%20one%20or%20more%20security%20domains%20in%20which%20the%20proof%20is%20meant%20to%20be%20used.%20If%20specified%2C%20the%20associated%20value%20MUST';\n if(optionalTests.domain === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.domain) {\n const validType = isStringOrArrayOfStrings(proof.domain);\n validType.should.equal(true, 'Expected ' +\n '\"proof.domain\" to be either a string or an unordered ' +\n 'set of strings.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -6123,24 +5956,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Njo-kHgHfWhU47zHweHTV", + "parent": "qmgk3hHclzYw9jf2QjmPc", "ctx": null, - "_testId": "urn:uuid:bb7f7f44-d900-4dc0-b51b-d76fd2e6502d", + "_testId": "urn:uuid:3d810897-2392-4aef-8911-abf39e8c3a76", "cell": { - "columnId": "EWF", - "rowId": "(\"proof.id\") An optional identifier for the proof, which MUST be a URL." + "columnId": "Trinsic", + "rowId": "The domain property is OPTIONAL. It conveys one or more security domains in which the proof is meant to be used. If specified, the associated value MUST be either a string, or an unordered set of strings. A verifier SHOULD use the value to ensure that the proof was intended to be used in the security domain in which the verifier is operating." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=An%20optional%20identifier%20for%20the%20proof%2C%20which%20MUST%20be%20a%20URL", + "link": "https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=The%20domain%20property%20is%20OPTIONAL.%20It%20conveys%20one%20or%20more%20security%20domains%20in%20which%20the%20proof%20is%20meant%20to%20be%20used.%20If%20specified%2C%20the%20associated%20value%20MUST", "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "(\"proof.id\") An optional identifier for the proof, which MUST be a URL.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=An%20optional%20identifier%20for%20the%20proof%2C%20which%20MUST%20be%20a%20URL';\n for(const proof of proofs) {\n if(proof.id) {\n shouldBeUrl({url: proof.id, prop: 'proof.id'});\n }\n }\n }", + "title": "(challenge) A string value that SHOULD be included in a proof if a domain is specified.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=A%20string%20value%20that%20SHOULD%20be%20included%20in%20a%20proof%20if%20a%20domain%20is%20specified.';\n if(optionalTests.domain === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.challenge) {\n // domain must be specified\n should.exist(proof.domain, 'Expected \"proof.domain\" ' +\n 'to be specified.');\n proof.challenge.should.be.a('string', 'Expected ' +\n '\"proof.challenge\" to be a string.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -6150,34 +5983,28 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "FsVwMDitvb4cbtnFdkm_k", + "parent": "qmgk3hHclzYw9jf2QjmPc", "ctx": null, - "_testId": "urn:uuid:7ce35f46-a5a3-4927-9764-be44d839b5d6", + "_testId": "urn:uuid:e893987a-b980-471e-a446-c8c62452ccec", "cell": { - "columnId": "LearnCard", - "rowId": "(\"proof.id\") An optional identifier for the proof, which MUST be a URL." + "columnId": "Trinsic", + "rowId": "(challenge) A string value that SHOULD be included in a proof if a domain is specified." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=An%20optional%20identifier%20for%20the%20proof%2C%20which%20MUST%20be%20a%20URL", + "link": "https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=A%20string%20value%20that%20SHOULD%20be%20included%20in%20a%20proof%20if%20a%20domain%20is%20specified.", "duration": 0, "state": "passed", "speed": "fast" - }, - { - "cell": { - "rowId": "(\"proof.id\") An optional identifier for the proof, which MUST be a URL.", - "colId": "OpSecId" - }, - "state": "pending", - "err": { - "message": "Test skipped." - } - }, + } + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [ { - "type": "test", - "title": "(\"proof.id\") An optional identifier for the proof, which MUST be a URL.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=An%20optional%20identifier%20for%20the%20proof%2C%20which%20MUST%20be%20a%20URL';\n for(const proof of proofs) {\n if(proof.id) {\n shouldBeUrl({url: proof.id, prop: 'proof.id'});\n }\n }\n }", + "title": "\"before each\" hook in \"Trinsic\"", + "body": "function() {\n this.currentTest.cell = {\n columnId,\n rowId: this.currentTest.title\n };\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -6186,25 +6013,21 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "gOLKDdlOgm5o-DegeI1Ps", + "type": "hook", + "parent": "qmgk3hHclzYw9jf2QjmPc", "ctx": null, - "_testId": "urn:uuid:7903e100-4b08-44b0-b152-29991b532665", - "cell": { - "columnId": "SpruceID", - "rowId": "(\"proof.id\") An optional identifier for the proof, which MUST be a URL." - }, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "originalTitle": "\"before each\" hook", "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=An%20optional%20identifier%20for%20the%20proof%2C%20which%20MUST%20be%20a%20URL", "duration": 0, - "state": "passed", - "speed": "fast" - }, + "_error": null + } + ], + "_beforeAll": [ { - "type": "test", - "title": "(\"proof.id\") An optional identifier for the proof, which MUST be a URL.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=An%20optional%20identifier%20for%20the%20proof%2C%20which%20MUST%20be%20a%20URL';\n for(const proof of proofs) {\n if(proof.id) {\n shouldBeUrl({url: proof.id, prop: 'proof.id'});\n }\n }\n }", + "title": "\"before all\" hook in \"Trinsic\"", + "body": "async function() {\n if(!issuer) {\n throw new Error(`Expected ${vendorName} to have an issuer.`);\n }\n if(!credential) {\n throw new Error(`Expected a credential to be passed in ` +\n `received ${credential}`);\n }\n data = await createInitialVc({issuer, credential});\n proofs = Array.isArray(data.proof) ? data.proof : [data.proof];\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -6213,31 +6036,78 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "RZteP052VeaXIQkX5MUvo", + "type": "hook", + "parent": "qmgk3hHclzYw9jf2QjmPc", "ctx": null, - "_testId": "urn:uuid:0df9a511-2d07-45bd-85c0-97ebccf46b7a", - "cell": { - "columnId": "Trinsic", - "rowId": "(\"proof.id\") An optional identifier for the proof, which MUST be a URL." - }, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "originalTitle": "\"before all\" hook", "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=An%20optional%20identifier%20for%20the%20proof%2C%20which%20MUST%20be%20a%20URL", - "duration": 0, - "state": "passed", - "speed": "fast" + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 10180, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 896, + "_error": null } - ] - }, + ], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "5m5Na48WUMMJzYMJrPbce", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "_testId": "urn:uuid:c6706215-29bf-4952-9a42-a97db8207b53" + } + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [], + "_beforeAll": [], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "bgAmkRpbvJlC4qudEWaiv", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "matrix": true, + "report": true, + "rowLabel": "Test Name", + "columnLabel": "Issuer", + "_testId": "urn:uuid:2414dc3b-4aaa-495a-b019-94404c38e4a4", + "columns": [ + "apicatalog.com", + "Danube Tech", + "Digital Bazaar", + "EWF", + "LearnCard", + "OpSecId", + "SpruceID", + "Trinsic" + ], + "rows": [ { - "id": "The specific proof type used for the cryptographic proof MUST be specified as a string that maps to a URL.", - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20specific%20proof%20type%20used%20for%20the%20cryptographic%20proof%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL", + "id": "When expressing a data integrity proof on an object, a proof property MUST be used.", + "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=When%20expressing%20a%20data%20integrity%20proof%20on%20an%20object%2C%20a%20proof%20property%20MUST%20be%20used", "cells": [ { "type": "test", - "title": "The specific proof type used for the cryptographic proof MUST be specified as a string that maps to a URL.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20specific%20proof%20type%20used%20for%20the%20cryptographic%20proof%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL';\n const prop = '@type';\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string', 'Expected \"proof.type\" to be a string.');\n const expanded = await jsonld.expand({\n '@context': data['@context'],\n type: proof.type\n }, {documentLoader});\n for(const term of expanded) {\n const types = term[prop];\n should.exist(types, 'Expected @type to exist.');\n types.every(url => shouldBeUrl({url, prop}));\n }\n }\n }", + "title": "When expressing a data integrity proof on an object, a proof property MUST be used.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=When%20expressing%20a%20data%20integrity%20proof%20on%20an%20object%2C%20a%20proof%20property%20MUST%20be%20used';\n shouldHaveProof({vc: data});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -6247,33 +6117,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Q-Y1cYh4G8cDll4bwtBlR", + "parent": "yxhpYILOcqbki3FDec94S", "ctx": null, - "_testId": "urn:uuid:aacef930-4add-4964-bbae-6da69e7a17ce", + "_testId": "urn:uuid:6cfa91a8-4845-4d72-afc8-77da0d04f5ef", "cell": { "columnId": "apicatalog.com", - "rowId": "The specific proof type used for the cryptographic proof MUST be specified as a string that maps to a URL." + "rowId": "When expressing a data integrity proof on an object, a proof property MUST be used." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20specific%20proof%20type%20used%20for%20the%20cryptographic%20proof%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL", - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 5539, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 2, + "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=When%20expressing%20a%20data%20integrity%20proof%20on%20an%20object%2C%20a%20proof%20property%20MUST%20be%20used", + "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "The specific proof type used for the cryptographic proof MUST be specified as a string that maps to a URL.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20specific%20proof%20type%20used%20for%20the%20cryptographic%20proof%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL';\n const prop = '@type';\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string', 'Expected \"proof.type\" to be a string.');\n const expanded = await jsonld.expand({\n '@context': data['@context'],\n type: proof.type\n }, {documentLoader});\n for(const term of expanded) {\n const types = term[prop];\n should.exist(types, 'Expected @type to exist.');\n types.every(url => shouldBeUrl({url, prop}));\n }\n }\n }", + "title": "When expressing a data integrity proof on an object, a proof property MUST be used.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=When%20expressing%20a%20data%20integrity%20proof%20on%20an%20object%2C%20a%20proof%20property%20MUST%20be%20used';\n shouldHaveProof({vc: data});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -6283,33 +6144,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "inrDQx7FuP3tRBmfKO9Ff", + "parent": "QHK1IypTjZvkcHZsBOX_g", "ctx": null, - "_testId": "urn:uuid:e917d976-e88b-471d-b0d9-eedd5f39699c", + "_testId": "urn:uuid:74a92a1e-f1d4-4a77-8e3a-fd92ec85916a", "cell": { "columnId": "Danube Tech", - "rowId": "The specific proof type used for the cryptographic proof MUST be specified as a string that maps to a URL." + "rowId": "When expressing a data integrity proof on an object, a proof property MUST be used." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20specific%20proof%20type%20used%20for%20the%20cryptographic%20proof%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL", - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 6440, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 1, + "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=When%20expressing%20a%20data%20integrity%20proof%20on%20an%20object%2C%20a%20proof%20property%20MUST%20be%20used", + "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "The specific proof type used for the cryptographic proof MUST be specified as a string that maps to a URL.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20specific%20proof%20type%20used%20for%20the%20cryptographic%20proof%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL';\n const prop = '@type';\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string', 'Expected \"proof.type\" to be a string.');\n const expanded = await jsonld.expand({\n '@context': data['@context'],\n type: proof.type\n }, {documentLoader});\n for(const term of expanded) {\n const types = term[prop];\n should.exist(types, 'Expected @type to exist.');\n types.every(url => shouldBeUrl({url, prop}));\n }\n }\n }", + "title": "When expressing a data integrity proof on an object, a proof property MUST be used.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=When%20expressing%20a%20data%20integrity%20proof%20on%20an%20object%2C%20a%20proof%20property%20MUST%20be%20used';\n shouldHaveProof({vc: data});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -6319,33 +6171,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "rrzz3mWjDHnKXxRkUzYAu", + "parent": "3oybt7im9lmDGUjG_T3ge", "ctx": null, - "_testId": "urn:uuid:5131ec24-74a5-4149-8142-05e11b0072e1", + "_testId": "urn:uuid:47eea56a-0f8f-4ee1-ac7a-e227452d1ab3", "cell": { "columnId": "Digital Bazaar", - "rowId": "The specific proof type used for the cryptographic proof MUST be specified as a string that maps to a URL." + "rowId": "When expressing a data integrity proof on an object, a proof property MUST be used." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20specific%20proof%20type%20used%20for%20the%20cryptographic%20proof%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL", - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 7765, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 0, + "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=When%20expressing%20a%20data%20integrity%20proof%20on%20an%20object%2C%20a%20proof%20property%20MUST%20be%20used", + "duration": 1, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "The specific proof type used for the cryptographic proof MUST be specified as a string that maps to a URL.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20specific%20proof%20type%20used%20for%20the%20cryptographic%20proof%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL';\n const prop = '@type';\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string', 'Expected \"proof.type\" to be a string.');\n const expanded = await jsonld.expand({\n '@context': data['@context'],\n type: proof.type\n }, {documentLoader});\n for(const term of expanded) {\n const types = term[prop];\n should.exist(types, 'Expected @type to exist.');\n types.every(url => shouldBeUrl({url, prop}));\n }\n }\n }", + "title": "When expressing a data integrity proof on an object, a proof property MUST be used.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=When%20expressing%20a%20data%20integrity%20proof%20on%20an%20object%2C%20a%20proof%20property%20MUST%20be%20used';\n shouldHaveProof({vc: data});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -6355,33 +6198,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Njo-kHgHfWhU47zHweHTV", + "parent": "tikRDf1hNC-fQs8dM6EPO", "ctx": null, - "_testId": "urn:uuid:406bff43-317f-495b-a53c-7d10674625fa", + "_testId": "urn:uuid:f052a646-938d-454a-9e65-e7beac134cac", "cell": { "columnId": "EWF", - "rowId": "The specific proof type used for the cryptographic proof MUST be specified as a string that maps to a URL." + "rowId": "When expressing a data integrity proof on an object, a proof property MUST be used." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20specific%20proof%20type%20used%20for%20the%20cryptographic%20proof%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL", - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 8876, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 1, + "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=When%20expressing%20a%20data%20integrity%20proof%20on%20an%20object%2C%20a%20proof%20property%20MUST%20be%20used", + "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "The specific proof type used for the cryptographic proof MUST be specified as a string that maps to a URL.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20specific%20proof%20type%20used%20for%20the%20cryptographic%20proof%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL';\n const prop = '@type';\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string', 'Expected \"proof.type\" to be a string.');\n const expanded = await jsonld.expand({\n '@context': data['@context'],\n type: proof.type\n }, {documentLoader});\n for(const term of expanded) {\n const types = term[prop];\n should.exist(types, 'Expected @type to exist.');\n types.every(url => shouldBeUrl({url, prop}));\n }\n }\n }", + "title": "When expressing a data integrity proof on an object, a proof property MUST be used.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=When%20expressing%20a%20data%20integrity%20proof%20on%20an%20object%2C%20a%20proof%20property%20MUST%20be%20used';\n shouldHaveProof({vc: data});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -6391,53 +6225,51 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "FsVwMDitvb4cbtnFdkm_k", + "parent": "3UTW-_LttILA3ILQtGZo2", "ctx": null, - "_testId": "urn:uuid:53f1fe84-1049-4db9-9c2f-ede713238b7a", + "_testId": "urn:uuid:5b6ad9b1-7d36-4aa6-ba19-847d54c7f3bd", "cell": { "columnId": "LearnCard", - "rowId": "The specific proof type used for the cryptographic proof MUST be specified as a string that maps to a URL." + "rowId": "When expressing a data integrity proof on an object, a proof property MUST be used." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20specific%20proof%20type%20used%20for%20the%20cryptographic%20proof%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL", - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 9232, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, + "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=When%20expressing%20a%20data%20integrity%20proof%20on%20an%20object%2C%20a%20proof%20property%20MUST%20be%20used", "duration": 0, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected \"@type\" URL to be parsed.: expected TypeError: Invalid URL { …(2) } to not exist", - "showDiff": false, - "actual": { - "code": "ERR_INVALID_URL", - "input": "Ed25519Signature2020" - }, - "operator": "notStrictEqual", - "stack": "AssertionError: Expected \"@type\" URL to be parsed.: expected TypeError: Invalid URL { …(2) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at shouldBeUrl (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:164:14)\n at file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:87:30\n at Array.every ()\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:87:17)" - } + "state": "passed", + "speed": "fast" }, { + "type": "test", + "title": "When expressing a data integrity proof on an object, a proof property MUST be used.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=When%20expressing%20a%20data%20integrity%20proof%20on%20an%20object%2C%20a%20proof%20property%20MUST%20be%20used';\n shouldHaveProof({vc: data});\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "parent": "V3app5v08kK3UQYixBWWE", + "ctx": null, + "_testId": "urn:uuid:dd886f0b-6c85-4b2f-97f2-8fc086364ae1", "cell": { - "rowId": "The specific proof type used for the cryptographic proof MUST be specified as a string that maps to a URL.", - "colId": "OpSecId" + "columnId": "OpSecId", + "rowId": "When expressing a data integrity proof on an object, a proof property MUST be used." }, - "state": "pending", - "err": { - "message": "Test skipped." - } + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=When%20expressing%20a%20data%20integrity%20proof%20on%20an%20object%2C%20a%20proof%20property%20MUST%20be%20used", + "duration": 0, + "state": "passed", + "speed": "fast" }, { "type": "test", - "title": "The specific proof type used for the cryptographic proof MUST be specified as a string that maps to a URL.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20specific%20proof%20type%20used%20for%20the%20cryptographic%20proof%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL';\n const prop = '@type';\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string', 'Expected \"proof.type\" to be a string.');\n const expanded = await jsonld.expand({\n '@context': data['@context'],\n type: proof.type\n }, {documentLoader});\n for(const term of expanded) {\n const types = term[prop];\n should.exist(types, 'Expected @type to exist.');\n types.every(url => shouldBeUrl({url, prop}));\n }\n }\n }", + "title": "When expressing a data integrity proof on an object, a proof property MUST be used.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=When%20expressing%20a%20data%20integrity%20proof%20on%20an%20object%2C%20a%20proof%20property%20MUST%20be%20used';\n shouldHaveProof({vc: data});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -6447,33 +6279,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "gOLKDdlOgm5o-DegeI1Ps", + "parent": "pJvzjaJb0oGOCZ6Fp689R", "ctx": null, - "_testId": "urn:uuid:79219652-18e0-447c-812e-b52ff7a321b3", + "_testId": "urn:uuid:e7c79ba3-0dcb-4886-9524-1ba869f183c4", "cell": { "columnId": "SpruceID", - "rowId": "The specific proof type used for the cryptographic proof MUST be specified as a string that maps to a URL." + "rowId": "When expressing a data integrity proof on an object, a proof property MUST be used." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20specific%20proof%20type%20used%20for%20the%20cryptographic%20proof%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL", - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 9562, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 1, + "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=When%20expressing%20a%20data%20integrity%20proof%20on%20an%20object%2C%20a%20proof%20property%20MUST%20be%20used", + "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "The specific proof type used for the cryptographic proof MUST be specified as a string that maps to a URL.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20specific%20proof%20type%20used%20for%20the%20cryptographic%20proof%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL';\n const prop = '@type';\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string', 'Expected \"proof.type\" to be a string.');\n const expanded = await jsonld.expand({\n '@context': data['@context'],\n type: proof.type\n }, {documentLoader});\n for(const term of expanded) {\n const types = term[prop];\n should.exist(types, 'Expected @type to exist.');\n types.every(url => shouldBeUrl({url, prop}));\n }\n }\n }", + "title": "When expressing a data integrity proof on an object, a proof property MUST be used.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=When%20expressing%20a%20data%20integrity%20proof%20on%20an%20object%2C%20a%20proof%20property%20MUST%20be%20used';\n shouldHaveProof({vc: data});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -6483,25 +6306,16 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "RZteP052VeaXIQkX5MUvo", + "parent": "qmgk3hHclzYw9jf2QjmPc", "ctx": null, - "_testId": "urn:uuid:b43850ad-3c3c-4b35-bf21-d52bb292c7cc", + "_testId": "urn:uuid:f6231b47-9658-4371-8e5e-cfa14eb9c228", "cell": { "columnId": "Trinsic", - "rowId": "The specific proof type used for the cryptographic proof MUST be specified as a string that maps to a URL." + "rowId": "When expressing a data integrity proof on an object, a proof property MUST be used." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20specific%20proof%20type%20used%20for%20the%20cryptographic%20proof%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL", - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 10166, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, + "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=When%20expressing%20a%20data%20integrity%20proof%20on%20an%20object%2C%20a%20proof%20property%20MUST%20be%20used", "duration": 0, "state": "passed", "speed": "fast" @@ -6509,12 +6323,13 @@ ] }, { - "id": "\"proof.type\" field MUST be \"Ed25519Signature2020\" and the associated document MUST include expected contexts.", + "id": "If present (proof), its value MUST be either a single object, or an unordered set of objects.", + "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=If%20present%2C%20its%20value%20MUST%20be%20either%20a%20single%20object%2C%20or%20an%20unordered%20set%20of%20objects", "cells": [ { "type": "test", - "title": "\"proof.type\" field MUST be \"Ed25519Signature2020\" and the associated document MUST include expected contexts.", - "body": "function() {\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string',\n 'Expected \"proof.type\" to be a string.'\n );\n const hasExpectedType = expectedProofTypes.includes(proof.type);\n hasExpectedType.should.equal(true);\n\n if(proof.type === 'Ed25519Signature2020') {\n const expectedContext =\n 'https://w3id.org/security/suites/ed25519-2020/v1';\n const hasExpectedContext =\n data['@context'].includes(expectedContext);\n hasExpectedContext.should.equal(true);\n }\n }\n }", + "title": "If present (proof), its value MUST be either a single object, or an unordered set of objects.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=If%20present%2C%20its%20value%20MUST%20be%20either%20a%20single%20object%2C%20or%20an%20unordered%20set%20of%20objects';\n shouldHaveProof({vc: data});\n const {proof} = data;\n const validType = isObjectOrArrayOfObjects(proof);\n validType.should.equal(true, 'Expected proof to be' +\n 'either an object or an unordered set of objects.');\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -6524,23 +6339,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Q-Y1cYh4G8cDll4bwtBlR", + "parent": "yxhpYILOcqbki3FDec94S", "ctx": null, - "_testId": "urn:uuid:67fae0e0-c7b2-4b9d-9d2f-4d41c921fc79", + "_testId": "urn:uuid:d18a1acc-d31d-4370-9a54-4f3f3a8ab575", "cell": { "columnId": "apicatalog.com", - "rowId": "\"proof.type\" field MUST be \"Ed25519Signature2020\" and the associated document MUST include expected contexts." + "rowId": "If present (proof), its value MUST be either a single object, or an unordered set of objects." }, "_events": {}, "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=If%20present%2C%20its%20value%20MUST%20be%20either%20a%20single%20object%2C%20or%20an%20unordered%20set%20of%20objects", "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "\"proof.type\" field MUST be \"Ed25519Signature2020\" and the associated document MUST include expected contexts.", - "body": "function() {\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string',\n 'Expected \"proof.type\" to be a string.'\n );\n const hasExpectedType = expectedProofTypes.includes(proof.type);\n hasExpectedType.should.equal(true);\n\n if(proof.type === 'Ed25519Signature2020') {\n const expectedContext =\n 'https://w3id.org/security/suites/ed25519-2020/v1';\n const hasExpectedContext =\n data['@context'].includes(expectedContext);\n hasExpectedContext.should.equal(true);\n }\n }\n }", + "title": "If present (proof), its value MUST be either a single object, or an unordered set of objects.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=If%20present%2C%20its%20value%20MUST%20be%20either%20a%20single%20object%2C%20or%20an%20unordered%20set%20of%20objects';\n shouldHaveProof({vc: data});\n const {proof} = data;\n const validType = isObjectOrArrayOfObjects(proof);\n validType.should.equal(true, 'Expected proof to be' +\n 'either an object or an unordered set of objects.');\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -6550,23 +6366,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "inrDQx7FuP3tRBmfKO9Ff", + "parent": "QHK1IypTjZvkcHZsBOX_g", "ctx": null, - "_testId": "urn:uuid:46495a5b-b72a-4020-8ac9-12d1b8e4da8a", + "_testId": "urn:uuid:f1c4ddc9-7429-4bb0-a072-551218861dd9", "cell": { "columnId": "Danube Tech", - "rowId": "\"proof.type\" field MUST be \"Ed25519Signature2020\" and the associated document MUST include expected contexts." + "rowId": "If present (proof), its value MUST be either a single object, or an unordered set of objects." }, "_events": {}, "_eventsCount": 1, - "duration": 0, + "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=If%20present%2C%20its%20value%20MUST%20be%20either%20a%20single%20object%2C%20or%20an%20unordered%20set%20of%20objects", + "duration": 1, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "\"proof.type\" field MUST be \"Ed25519Signature2020\" and the associated document MUST include expected contexts.", - "body": "function() {\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string',\n 'Expected \"proof.type\" to be a string.'\n );\n const hasExpectedType = expectedProofTypes.includes(proof.type);\n hasExpectedType.should.equal(true);\n\n if(proof.type === 'Ed25519Signature2020') {\n const expectedContext =\n 'https://w3id.org/security/suites/ed25519-2020/v1';\n const hasExpectedContext =\n data['@context'].includes(expectedContext);\n hasExpectedContext.should.equal(true);\n }\n }\n }", + "title": "If present (proof), its value MUST be either a single object, or an unordered set of objects.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=If%20present%2C%20its%20value%20MUST%20be%20either%20a%20single%20object%2C%20or%20an%20unordered%20set%20of%20objects';\n shouldHaveProof({vc: data});\n const {proof} = data;\n const validType = isObjectOrArrayOfObjects(proof);\n validType.should.equal(true, 'Expected proof to be' +\n 'either an object or an unordered set of objects.');\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -6576,23 +6393,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "rrzz3mWjDHnKXxRkUzYAu", + "parent": "3oybt7im9lmDGUjG_T3ge", "ctx": null, - "_testId": "urn:uuid:b882a79d-a70a-4c06-925c-2dde9ec2e031", + "_testId": "urn:uuid:2f40a98b-ca6d-40c4-9b23-12dafb21ab43", "cell": { "columnId": "Digital Bazaar", - "rowId": "\"proof.type\" field MUST be \"Ed25519Signature2020\" and the associated document MUST include expected contexts." + "rowId": "If present (proof), its value MUST be either a single object, or an unordered set of objects." }, "_events": {}, "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=If%20present%2C%20its%20value%20MUST%20be%20either%20a%20single%20object%2C%20or%20an%20unordered%20set%20of%20objects", "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "\"proof.type\" field MUST be \"Ed25519Signature2020\" and the associated document MUST include expected contexts.", - "body": "function() {\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string',\n 'Expected \"proof.type\" to be a string.'\n );\n const hasExpectedType = expectedProofTypes.includes(proof.type);\n hasExpectedType.should.equal(true);\n\n if(proof.type === 'Ed25519Signature2020') {\n const expectedContext =\n 'https://w3id.org/security/suites/ed25519-2020/v1';\n const hasExpectedContext =\n data['@context'].includes(expectedContext);\n hasExpectedContext.should.equal(true);\n }\n }\n }", + "title": "If present (proof), its value MUST be either a single object, or an unordered set of objects.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=If%20present%2C%20its%20value%20MUST%20be%20either%20a%20single%20object%2C%20or%20an%20unordered%20set%20of%20objects';\n shouldHaveProof({vc: data});\n const {proof} = data;\n const validType = isObjectOrArrayOfObjects(proof);\n validType.should.equal(true, 'Expected proof to be' +\n 'either an object or an unordered set of objects.');\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -6602,31 +6420,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Njo-kHgHfWhU47zHweHTV", + "parent": "tikRDf1hNC-fQs8dM6EPO", "ctx": null, - "_testId": "urn:uuid:b51b8a6e-c2d9-43b8-9d93-6e1992c19abd", + "_testId": "urn:uuid:50c38a5e-10d7-4c21-965d-732896acd8fc", "cell": { "columnId": "EWF", - "rowId": "\"proof.type\" field MUST be \"Ed25519Signature2020\" and the associated document MUST include expected contexts." + "rowId": "If present (proof), its value MUST be either a single object, or an unordered set of objects." }, "_events": {}, "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=If%20present%2C%20its%20value%20MUST%20be%20either%20a%20single%20object%2C%20or%20an%20unordered%20set%20of%20objects", "duration": 0, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "expected false to equal true", - "showDiff": true, - "actual": "false", - "expected": "true", - "operator": "strictEqual", - "stack": "AssertionError: expected false to equal true\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:136:34)\n at process.processImmediate (node:internal/timers:483:21)" - } + "state": "passed", + "speed": "fast" }, { "type": "test", - "title": "\"proof.type\" field MUST be \"Ed25519Signature2020\" and the associated document MUST include expected contexts.", - "body": "function() {\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string',\n 'Expected \"proof.type\" to be a string.'\n );\n const hasExpectedType = expectedProofTypes.includes(proof.type);\n hasExpectedType.should.equal(true);\n\n if(proof.type === 'Ed25519Signature2020') {\n const expectedContext =\n 'https://w3id.org/security/suites/ed25519-2020/v1';\n const hasExpectedContext =\n data['@context'].includes(expectedContext);\n hasExpectedContext.should.equal(true);\n }\n }\n }", + "title": "If present (proof), its value MUST be either a single object, or an unordered set of objects.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=If%20present%2C%20its%20value%20MUST%20be%20either%20a%20single%20object%2C%20or%20an%20unordered%20set%20of%20objects';\n shouldHaveProof({vc: data});\n const {proof} = data;\n const validType = isObjectOrArrayOfObjects(proof);\n validType.should.equal(true, 'Expected proof to be' +\n 'either an object or an unordered set of objects.');\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -6636,41 +6447,51 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "FsVwMDitvb4cbtnFdkm_k", + "parent": "3UTW-_LttILA3ILQtGZo2", "ctx": null, - "_testId": "urn:uuid:81a2c44a-4907-4ea4-b646-bc357c3919a9", + "_testId": "urn:uuid:0da27626-52f9-462c-80b8-dd3280987c40", "cell": { "columnId": "LearnCard", - "rowId": "\"proof.type\" field MUST be \"Ed25519Signature2020\" and the associated document MUST include expected contexts." + "rowId": "If present (proof), its value MUST be either a single object, or an unordered set of objects." }, "_events": {}, "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=If%20present%2C%20its%20value%20MUST%20be%20either%20a%20single%20object%2C%20or%20an%20unordered%20set%20of%20objects", "duration": 0, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "expected false to equal true", - "showDiff": true, - "actual": "false", - "expected": "true", - "operator": "strictEqual", - "stack": "AssertionError: expected false to equal true\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:143:39)\n at process.processImmediate (node:internal/timers:483:21)" - } + "state": "passed", + "speed": "fast" }, { - "cell": { - "rowId": "\"proof.type\" field MUST be \"Ed25519Signature2020\" and the associated document MUST include expected contexts.", - "colId": "OpSecId" - }, - "state": "pending", - "err": { - "message": "Test skipped." - } + "type": "test", + "title": "If present (proof), its value MUST be either a single object, or an unordered set of objects.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=If%20present%2C%20its%20value%20MUST%20be%20either%20a%20single%20object%2C%20or%20an%20unordered%20set%20of%20objects';\n shouldHaveProof({vc: data});\n const {proof} = data;\n const validType = isObjectOrArrayOfObjects(proof);\n validType.should.equal(true, 'Expected proof to be' +\n 'either an object or an unordered set of objects.');\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "parent": "V3app5v08kK3UQYixBWWE", + "ctx": null, + "_testId": "urn:uuid:36c67330-faff-4d6b-96b0-d0f88b0eb9c7", + "cell": { + "columnId": "OpSecId", + "rowId": "If present (proof), its value MUST be either a single object, or an unordered set of objects." + }, + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=If%20present%2C%20its%20value%20MUST%20be%20either%20a%20single%20object%2C%20or%20an%20unordered%20set%20of%20objects", + "duration": 1, + "state": "passed", + "speed": "fast" }, { "type": "test", - "title": "\"proof.type\" field MUST be \"Ed25519Signature2020\" and the associated document MUST include expected contexts.", - "body": "function() {\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string',\n 'Expected \"proof.type\" to be a string.'\n );\n const hasExpectedType = expectedProofTypes.includes(proof.type);\n hasExpectedType.should.equal(true);\n\n if(proof.type === 'Ed25519Signature2020') {\n const expectedContext =\n 'https://w3id.org/security/suites/ed25519-2020/v1';\n const hasExpectedContext =\n data['@context'].includes(expectedContext);\n hasExpectedContext.should.equal(true);\n }\n }\n }", + "title": "If present (proof), its value MUST be either a single object, or an unordered set of objects.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=If%20present%2C%20its%20value%20MUST%20be%20either%20a%20single%20object%2C%20or%20an%20unordered%20set%20of%20objects';\n shouldHaveProof({vc: data});\n const {proof} = data;\n const validType = isObjectOrArrayOfObjects(proof);\n validType.should.equal(true, 'Expected proof to be' +\n 'either an object or an unordered set of objects.');\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -6680,23 +6501,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "gOLKDdlOgm5o-DegeI1Ps", + "parent": "pJvzjaJb0oGOCZ6Fp689R", "ctx": null, - "_testId": "urn:uuid:dcccf09a-dd77-4d46-bc20-63e50daac92a", + "_testId": "urn:uuid:ed7e6b53-cab2-45c0-ab6e-81c8c744ce8b", "cell": { "columnId": "SpruceID", - "rowId": "\"proof.type\" field MUST be \"Ed25519Signature2020\" and the associated document MUST include expected contexts." + "rowId": "If present (proof), its value MUST be either a single object, or an unordered set of objects." }, "_events": {}, "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=If%20present%2C%20its%20value%20MUST%20be%20either%20a%20single%20object%2C%20or%20an%20unordered%20set%20of%20objects", "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "\"proof.type\" field MUST be \"Ed25519Signature2020\" and the associated document MUST include expected contexts.", - "body": "function() {\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string',\n 'Expected \"proof.type\" to be a string.'\n );\n const hasExpectedType = expectedProofTypes.includes(proof.type);\n hasExpectedType.should.equal(true);\n\n if(proof.type === 'Ed25519Signature2020') {\n const expectedContext =\n 'https://w3id.org/security/suites/ed25519-2020/v1';\n const hasExpectedContext =\n data['@context'].includes(expectedContext);\n hasExpectedContext.should.equal(true);\n }\n }\n }", + "title": "If present (proof), its value MUST be either a single object, or an unordered set of objects.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=If%20present%2C%20its%20value%20MUST%20be%20either%20a%20single%20object%2C%20or%20an%20unordered%20set%20of%20objects';\n shouldHaveProof({vc: data});\n const {proof} = data;\n const validType = isObjectOrArrayOfObjects(proof);\n validType.should.equal(true, 'Expected proof to be' +\n 'either an object or an unordered set of objects.');\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -6706,15 +6528,16 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "RZteP052VeaXIQkX5MUvo", + "parent": "qmgk3hHclzYw9jf2QjmPc", "ctx": null, - "_testId": "urn:uuid:a1173a13-af33-44f7-83b4-551ec6bde666", + "_testId": "urn:uuid:8f6d9008-78bf-45e6-a120-27990f40152e", "cell": { "columnId": "Trinsic", - "rowId": "\"proof.type\" field MUST be \"Ed25519Signature2020\" and the associated document MUST include expected contexts." + "rowId": "If present (proof), its value MUST be either a single object, or an unordered set of objects." }, "_events": {}, "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=If%20present%2C%20its%20value%20MUST%20be%20either%20a%20single%20object%2C%20or%20an%20unordered%20set%20of%20objects", "duration": 0, "state": "passed", "speed": "fast" @@ -6722,13 +6545,13 @@ ] }, { - "id": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified. If specified, its value MUST be a string.", - "link": "https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.", + "id": "(\"proof.id\") An optional identifier for the proof, which MUST be a URL.", + "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=An%20optional%20identifier%20for%20the%20proof%2C%20which%20MUST%20be%20a%20URL", "cells": [ { "type": "test", - "title": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified. If specified, its value MUST be a string.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.';\n for(const proof of proofs) {\n if(proof.type && proof.type === 'DataIntegrityProof') {\n should.exist(\n proof.cryptosuite,\n 'If the proof type is DataIntegrityProof, cryptosuite MUST ' +\n 'be specified');\n proof.cryptosuite.should.be.a(\n 'string',\n 'cryptosuite value MUST be a string.');\n }\n }\n }", + "title": "(\"proof.id\") An optional identifier for the proof, which MUST be a URL.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=An%20optional%20identifier%20for%20the%20proof%2C%20which%20MUST%20be%20a%20URL';\n for(const proof of proofs) {\n if(proof.id) {\n shouldBeUrl({url: proof.id, prop: 'proof.id'});\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -6738,24 +6561,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Q-Y1cYh4G8cDll4bwtBlR", + "parent": "yxhpYILOcqbki3FDec94S", "ctx": null, - "_testId": "urn:uuid:2c502991-b561-4315-a5bf-5b0fb09c4e30", + "_testId": "urn:uuid:52f304e0-0d9c-4d96-9a5b-dc0061f9be30", "cell": { "columnId": "apicatalog.com", - "rowId": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified. If specified, its value MUST be a string." + "rowId": "(\"proof.id\") An optional identifier for the proof, which MUST be a URL." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.", + "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=An%20optional%20identifier%20for%20the%20proof%2C%20which%20MUST%20be%20a%20URL", "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified. If specified, its value MUST be a string.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.';\n for(const proof of proofs) {\n if(proof.type && proof.type === 'DataIntegrityProof') {\n should.exist(\n proof.cryptosuite,\n 'If the proof type is DataIntegrityProof, cryptosuite MUST ' +\n 'be specified');\n proof.cryptosuite.should.be.a(\n 'string',\n 'cryptosuite value MUST be a string.');\n }\n }\n }", + "title": "(\"proof.id\") An optional identifier for the proof, which MUST be a URL.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=An%20optional%20identifier%20for%20the%20proof%2C%20which%20MUST%20be%20a%20URL';\n for(const proof of proofs) {\n if(proof.id) {\n shouldBeUrl({url: proof.id, prop: 'proof.id'});\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -6765,24 +6588,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "inrDQx7FuP3tRBmfKO9Ff", + "parent": "QHK1IypTjZvkcHZsBOX_g", "ctx": null, - "_testId": "urn:uuid:5538d877-9dee-43a5-8b58-0d67208d9bab", + "_testId": "urn:uuid:f4126920-b06c-4578-a8ff-653cc0ce50db", "cell": { "columnId": "Danube Tech", - "rowId": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified. If specified, its value MUST be a string." + "rowId": "(\"proof.id\") An optional identifier for the proof, which MUST be a URL." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.", + "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=An%20optional%20identifier%20for%20the%20proof%2C%20which%20MUST%20be%20a%20URL", "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified. If specified, its value MUST be a string.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.';\n for(const proof of proofs) {\n if(proof.type && proof.type === 'DataIntegrityProof') {\n should.exist(\n proof.cryptosuite,\n 'If the proof type is DataIntegrityProof, cryptosuite MUST ' +\n 'be specified');\n proof.cryptosuite.should.be.a(\n 'string',\n 'cryptosuite value MUST be a string.');\n }\n }\n }", + "title": "(\"proof.id\") An optional identifier for the proof, which MUST be a URL.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=An%20optional%20identifier%20for%20the%20proof%2C%20which%20MUST%20be%20a%20URL';\n for(const proof of proofs) {\n if(proof.id) {\n shouldBeUrl({url: proof.id, prop: 'proof.id'});\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -6792,24 +6615,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "rrzz3mWjDHnKXxRkUzYAu", + "parent": "3oybt7im9lmDGUjG_T3ge", "ctx": null, - "_testId": "urn:uuid:b8577dfe-60ca-42e4-b1e3-6b5c89333e7d", + "_testId": "urn:uuid:54834b59-6225-4863-b7a3-6de82a90ad01", "cell": { "columnId": "Digital Bazaar", - "rowId": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified. If specified, its value MUST be a string." + "rowId": "(\"proof.id\") An optional identifier for the proof, which MUST be a URL." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.", + "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=An%20optional%20identifier%20for%20the%20proof%2C%20which%20MUST%20be%20a%20URL", "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified. If specified, its value MUST be a string.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.';\n for(const proof of proofs) {\n if(proof.type && proof.type === 'DataIntegrityProof') {\n should.exist(\n proof.cryptosuite,\n 'If the proof type is DataIntegrityProof, cryptosuite MUST ' +\n 'be specified');\n proof.cryptosuite.should.be.a(\n 'string',\n 'cryptosuite value MUST be a string.');\n }\n }\n }", + "title": "(\"proof.id\") An optional identifier for the proof, which MUST be a URL.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=An%20optional%20identifier%20for%20the%20proof%2C%20which%20MUST%20be%20a%20URL';\n for(const proof of proofs) {\n if(proof.id) {\n shouldBeUrl({url: proof.id, prop: 'proof.id'});\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -6819,24 +6642,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Njo-kHgHfWhU47zHweHTV", + "parent": "tikRDf1hNC-fQs8dM6EPO", "ctx": null, - "_testId": "urn:uuid:3ed2653a-5afa-4e20-9af2-a938170343bd", + "_testId": "urn:uuid:85138f4c-3dee-41b6-8190-723222f94a0f", "cell": { "columnId": "EWF", - "rowId": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified. If specified, its value MUST be a string." + "rowId": "(\"proof.id\") An optional identifier for the proof, which MUST be a URL." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.", + "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=An%20optional%20identifier%20for%20the%20proof%2C%20which%20MUST%20be%20a%20URL", "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified. If specified, its value MUST be a string.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.';\n for(const proof of proofs) {\n if(proof.type && proof.type === 'DataIntegrityProof') {\n should.exist(\n proof.cryptosuite,\n 'If the proof type is DataIntegrityProof, cryptosuite MUST ' +\n 'be specified');\n proof.cryptosuite.should.be.a(\n 'string',\n 'cryptosuite value MUST be a string.');\n }\n }\n }", + "title": "(\"proof.id\") An optional identifier for the proof, which MUST be a URL.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=An%20optional%20identifier%20for%20the%20proof%2C%20which%20MUST%20be%20a%20URL';\n for(const proof of proofs) {\n if(proof.id) {\n shouldBeUrl({url: proof.id, prop: 'proof.id'});\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -6846,34 +6669,51 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "FsVwMDitvb4cbtnFdkm_k", + "parent": "3UTW-_LttILA3ILQtGZo2", "ctx": null, - "_testId": "urn:uuid:c08f78b9-48f4-4f79-a583-273ab4833fe0", + "_testId": "urn:uuid:d7346fa3-be52-4ef2-a34d-3a006a992481", "cell": { "columnId": "LearnCard", - "rowId": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified. If specified, its value MUST be a string." + "rowId": "(\"proof.id\") An optional identifier for the proof, which MUST be a URL." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.", - "duration": 0, + "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=An%20optional%20identifier%20for%20the%20proof%2C%20which%20MUST%20be%20a%20URL", + "duration": 1, "state": "passed", "speed": "fast" }, { + "type": "test", + "title": "(\"proof.id\") An optional identifier for the proof, which MUST be a URL.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=An%20optional%20identifier%20for%20the%20proof%2C%20which%20MUST%20be%20a%20URL';\n for(const proof of proofs) {\n if(proof.id) {\n shouldBeUrl({url: proof.id, prop: 'proof.id'});\n }\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "parent": "V3app5v08kK3UQYixBWWE", + "ctx": null, + "_testId": "urn:uuid:5fe81a4d-c529-4db8-96b6-79bc220c8cc8", "cell": { - "rowId": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified. If specified, its value MUST be a string.", - "colId": "OpSecId" + "columnId": "OpSecId", + "rowId": "(\"proof.id\") An optional identifier for the proof, which MUST be a URL." }, - "state": "pending", - "err": { - "message": "Test skipped." - } + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=An%20optional%20identifier%20for%20the%20proof%2C%20which%20MUST%20be%20a%20URL", + "duration": 0, + "state": "passed", + "speed": "fast" }, { "type": "test", - "title": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified. If specified, its value MUST be a string.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.';\n for(const proof of proofs) {\n if(proof.type && proof.type === 'DataIntegrityProof') {\n should.exist(\n proof.cryptosuite,\n 'If the proof type is DataIntegrityProof, cryptosuite MUST ' +\n 'be specified');\n proof.cryptosuite.should.be.a(\n 'string',\n 'cryptosuite value MUST be a string.');\n }\n }\n }", + "title": "(\"proof.id\") An optional identifier for the proof, which MUST be a URL.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=An%20optional%20identifier%20for%20the%20proof%2C%20which%20MUST%20be%20a%20URL';\n for(const proof of proofs) {\n if(proof.id) {\n shouldBeUrl({url: proof.id, prop: 'proof.id'});\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -6883,24 +6723,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "gOLKDdlOgm5o-DegeI1Ps", + "parent": "pJvzjaJb0oGOCZ6Fp689R", "ctx": null, - "_testId": "urn:uuid:4529bc8d-ea61-4043-97cf-26e1d11e913e", + "_testId": "urn:uuid:59de9272-fdb0-4896-9c6f-3f8ee94770a4", "cell": { "columnId": "SpruceID", - "rowId": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified. If specified, its value MUST be a string." + "rowId": "(\"proof.id\") An optional identifier for the proof, which MUST be a URL." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.", + "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=An%20optional%20identifier%20for%20the%20proof%2C%20which%20MUST%20be%20a%20URL", "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified. If specified, its value MUST be a string.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.';\n for(const proof of proofs) {\n if(proof.type && proof.type === 'DataIntegrityProof') {\n should.exist(\n proof.cryptosuite,\n 'If the proof type is DataIntegrityProof, cryptosuite MUST ' +\n 'be specified');\n proof.cryptosuite.should.be.a(\n 'string',\n 'cryptosuite value MUST be a string.');\n }\n }\n }", + "title": "(\"proof.id\") An optional identifier for the proof, which MUST be a URL.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=An%20optional%20identifier%20for%20the%20proof%2C%20which%20MUST%20be%20a%20URL';\n for(const proof of proofs) {\n if(proof.id) {\n shouldBeUrl({url: proof.id, prop: 'proof.id'});\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -6910,16 +6750,16 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "RZteP052VeaXIQkX5MUvo", + "parent": "qmgk3hHclzYw9jf2QjmPc", "ctx": null, - "_testId": "urn:uuid:1a469f09-618d-45ca-abf7-03420a35245e", + "_testId": "urn:uuid:14bd3828-edbc-4f5e-88b0-65fa7e811f8e", "cell": { "columnId": "Trinsic", - "rowId": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified. If specified, its value MUST be a string." + "rowId": "(\"proof.id\") An optional identifier for the proof, which MUST be a URL." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.", + "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=An%20optional%20identifier%20for%20the%20proof%2C%20which%20MUST%20be%20a%20URL", "duration": 0, "state": "passed", "speed": "fast" @@ -6927,13 +6767,13 @@ ] }, { - "id": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL]", - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=A%20verification%20method%20is%20the%20means%20and%20information%20needed%20to%20verify%20the%20proof.%20If%20included%2C%20the%20value%20MUST%20be%20a%20string%20that%20maps%20to%20a%20%5BURL%5D.", + "id": "The specific type of proof MUST be specified as a string that maps to a URL.", + "link": "https://w3c.github.io/vc-data-integrity/#:~:text=The%20specific%20type%20of%20proof%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL", "cells": [ { "type": "test", - "title": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL]", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=A%20verification%20method%20is%20the%20means%20and%20information%20needed%20to%20verify%20the%20proof.%20If%20included%2C%20the%20value%20MUST%20be%20a%20string%20that%20maps%20to%20a%20%5BURL%5D.';\n for(const proof of proofs) {\n await shouldMapToUrl({\n doc: {\n '@context': data['@context'],\n ...proof\n },\n term: 'https://w3id.org/security#verificationMethod',\n prop: '@id',\n documentLoader\n });\n }\n }", + "title": "The specific type of proof MUST be specified as a string that maps to a URL.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#:~:text=The%20specific%20type%20of%20proof%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL';\n const prop = '@type';\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string', 'Expected \"proof.type\" to be a string.');\n const expanded = await jsonld.expand({\n '@context': data['@context'],\n type: proof.type\n }, {documentLoader});\n for(const term of expanded) {\n const types = term[prop];\n should.exist(types, 'Expected @type to exist.');\n types.every(url => shouldBeUrl({url, prop}));\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -6943,21 +6783,21 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Q-Y1cYh4G8cDll4bwtBlR", + "parent": "yxhpYILOcqbki3FDec94S", "ctx": null, - "_testId": "urn:uuid:cdfe8d3d-d94d-4442-a34f-2542902d7f9b", + "_testId": "urn:uuid:ec357a73-e4d5-40ad-a4bf-7276d04e1098", "cell": { "columnId": "apicatalog.com", - "rowId": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL]" + "rowId": "The specific type of proof MUST be specified as a string that maps to a URL." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=A%20verification%20method%20is%20the%20means%20and%20information%20needed%20to%20verify%20the%20proof.%20If%20included%2C%20the%20value%20MUST%20be%20a%20string%20that%20maps%20to%20a%20%5BURL%5D.", + "link": "https://w3c.github.io/vc-data-integrity/#:~:text=The%20specific%20type%20of%20proof%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 5541, + "_idleStart": 6183, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -6968,8 +6808,8 @@ }, { "type": "test", - "title": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL]", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=A%20verification%20method%20is%20the%20means%20and%20information%20needed%20to%20verify%20the%20proof.%20If%20included%2C%20the%20value%20MUST%20be%20a%20string%20that%20maps%20to%20a%20%5BURL%5D.';\n for(const proof of proofs) {\n await shouldMapToUrl({\n doc: {\n '@context': data['@context'],\n ...proof\n },\n term: 'https://w3id.org/security#verificationMethod',\n prop: '@id',\n documentLoader\n });\n }\n }", + "title": "The specific type of proof MUST be specified as a string that maps to a URL.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#:~:text=The%20specific%20type%20of%20proof%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL';\n const prop = '@type';\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string', 'Expected \"proof.type\" to be a string.');\n const expanded = await jsonld.expand({\n '@context': data['@context'],\n type: proof.type\n }, {documentLoader});\n for(const term of expanded) {\n const types = term[prop];\n should.exist(types, 'Expected @type to exist.');\n types.every(url => shouldBeUrl({url, prop}));\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -6979,21 +6819,21 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "inrDQx7FuP3tRBmfKO9Ff", + "parent": "QHK1IypTjZvkcHZsBOX_g", "ctx": null, - "_testId": "urn:uuid:83a0a4ed-9feb-4759-8d97-21bbf0e278c3", + "_testId": "urn:uuid:5da7ddc6-f535-4842-a461-b631968f4367", "cell": { "columnId": "Danube Tech", - "rowId": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL]" + "rowId": "The specific type of proof MUST be specified as a string that maps to a URL." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=A%20verification%20method%20is%20the%20means%20and%20information%20needed%20to%20verify%20the%20proof.%20If%20included%2C%20the%20value%20MUST%20be%20a%20string%20that%20maps%20to%20a%20%5BURL%5D.", + "link": "https://w3c.github.io/vc-data-integrity/#:~:text=The%20specific%20type%20of%20proof%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 6441, + "_idleStart": 7010, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -7004,8 +6844,8 @@ }, { "type": "test", - "title": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL]", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=A%20verification%20method%20is%20the%20means%20and%20information%20needed%20to%20verify%20the%20proof.%20If%20included%2C%20the%20value%20MUST%20be%20a%20string%20that%20maps%20to%20a%20%5BURL%5D.';\n for(const proof of proofs) {\n await shouldMapToUrl({\n doc: {\n '@context': data['@context'],\n ...proof\n },\n term: 'https://w3id.org/security#verificationMethod',\n prop: '@id',\n documentLoader\n });\n }\n }", + "title": "The specific type of proof MUST be specified as a string that maps to a URL.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#:~:text=The%20specific%20type%20of%20proof%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL';\n const prop = '@type';\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string', 'Expected \"proof.type\" to be a string.');\n const expanded = await jsonld.expand({\n '@context': data['@context'],\n type: proof.type\n }, {documentLoader});\n for(const term of expanded) {\n const types = term[prop];\n should.exist(types, 'Expected @type to exist.');\n types.every(url => shouldBeUrl({url, prop}));\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -7015,21 +6855,21 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "rrzz3mWjDHnKXxRkUzYAu", + "parent": "3oybt7im9lmDGUjG_T3ge", "ctx": null, - "_testId": "urn:uuid:cfaa0838-26b6-460c-9586-7bb2b46f59fb", + "_testId": "urn:uuid:4f7dd69e-519d-4860-b877-247a84a1b5be", "cell": { "columnId": "Digital Bazaar", - "rowId": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL]" + "rowId": "The specific type of proof MUST be specified as a string that maps to a URL." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=A%20verification%20method%20is%20the%20means%20and%20information%20needed%20to%20verify%20the%20proof.%20If%20included%2C%20the%20value%20MUST%20be%20a%20string%20that%20maps%20to%20a%20%5BURL%5D.", + "link": "https://w3c.github.io/vc-data-integrity/#:~:text=The%20specific%20type%20of%20proof%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7766, + "_idleStart": 8510, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -7040,8 +6880,8 @@ }, { "type": "test", - "title": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL]", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=A%20verification%20method%20is%20the%20means%20and%20information%20needed%20to%20verify%20the%20proof.%20If%20included%2C%20the%20value%20MUST%20be%20a%20string%20that%20maps%20to%20a%20%5BURL%5D.';\n for(const proof of proofs) {\n await shouldMapToUrl({\n doc: {\n '@context': data['@context'],\n ...proof\n },\n term: 'https://w3id.org/security#verificationMethod',\n prop: '@id',\n documentLoader\n });\n }\n }", + "title": "The specific type of proof MUST be specified as a string that maps to a URL.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#:~:text=The%20specific%20type%20of%20proof%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL';\n const prop = '@type';\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string', 'Expected \"proof.type\" to be a string.');\n const expanded = await jsonld.expand({\n '@context': data['@context'],\n type: proof.type\n }, {documentLoader});\n for(const term of expanded) {\n const types = term[prop];\n should.exist(types, 'Expected @type to exist.');\n types.every(url => shouldBeUrl({url, prop}));\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -7051,21 +6891,21 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Njo-kHgHfWhU47zHweHTV", + "parent": "tikRDf1hNC-fQs8dM6EPO", "ctx": null, - "_testId": "urn:uuid:9c2a16b9-d61b-4f21-9b0f-021934bb8b5a", + "_testId": "urn:uuid:e6842c5f-6f94-4028-be1f-28138a2ed5af", "cell": { "columnId": "EWF", - "rowId": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL]" + "rowId": "The specific type of proof MUST be specified as a string that maps to a URL." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=A%20verification%20method%20is%20the%20means%20and%20information%20needed%20to%20verify%20the%20proof.%20If%20included%2C%20the%20value%20MUST%20be%20a%20string%20that%20maps%20to%20a%20%5BURL%5D.", + "link": "https://w3c.github.io/vc-data-integrity/#:~:text=The%20specific%20type%20of%20proof%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 8878, + "_idleStart": 9201, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -7076,8 +6916,8 @@ }, { "type": "test", - "title": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL]", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=A%20verification%20method%20is%20the%20means%20and%20information%20needed%20to%20verify%20the%20proof.%20If%20included%2C%20the%20value%20MUST%20be%20a%20string%20that%20maps%20to%20a%20%5BURL%5D.';\n for(const proof of proofs) {\n await shouldMapToUrl({\n doc: {\n '@context': data['@context'],\n ...proof\n },\n term: 'https://w3id.org/security#verificationMethod',\n prop: '@id',\n documentLoader\n });\n }\n }", + "title": "The specific type of proof MUST be specified as a string that maps to a URL.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#:~:text=The%20specific%20type%20of%20proof%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL';\n const prop = '@type';\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string', 'Expected \"proof.type\" to be a string.');\n const expanded = await jsonld.expand({\n '@context': data['@context'],\n type: proof.type\n }, {documentLoader});\n for(const term of expanded) {\n const types = term[prop];\n should.exist(types, 'Expected @type to exist.');\n types.every(url => shouldBeUrl({url, prop}));\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -7087,43 +6927,43 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "FsVwMDitvb4cbtnFdkm_k", + "parent": "3UTW-_LttILA3ILQtGZo2", "ctx": null, - "_testId": "urn:uuid:518d64d4-aa23-4ae3-a331-970faaa8fc60", + "_testId": "urn:uuid:664af3c2-58e4-4c63-a1a4-1b435a8f57fe", "cell": { "columnId": "LearnCard", - "rowId": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL]" + "rowId": "The specific type of proof MUST be specified as a string that maps to a URL." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=A%20verification%20method%20is%20the%20means%20and%20information%20needed%20to%20verify%20the%20proof.%20If%20included%2C%20the%20value%20MUST%20be%20a%20string%20that%20maps%20to%20a%20%5BURL%5D.", + "link": "https://w3c.github.io/vc-data-integrity/#:~:text=The%20specific%20type%20of%20proof%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9235, + "_idleStart": 9642, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 1, - "state": "passed", - "speed": "fast" - }, - { - "cell": { - "rowId": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL]", - "colId": "OpSecId" - }, - "state": "pending", + "duration": 0, + "state": "failed", "err": { - "message": "Test skipped." + "name": "AssertionError", + "message": "Expected \"@type\" URL to be parsed.: expected TypeError: Invalid URL { …(2) } to not exist", + "showDiff": false, + "actual": { + "code": "ERR_INVALID_URL", + "input": "Ed25519Signature2020" + }, + "operator": "notStrictEqual", + "stack": "AssertionError: Expected \"@type\" URL to be parsed.: expected TypeError: Invalid URL { …(2) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at shouldBeUrl (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:164:14)\n at file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:87:30\n at Array.every ()\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:87:17)" } }, { "type": "test", - "title": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL]", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=A%20verification%20method%20is%20the%20means%20and%20information%20needed%20to%20verify%20the%20proof.%20If%20included%2C%20the%20value%20MUST%20be%20a%20string%20that%20maps%20to%20a%20%5BURL%5D.';\n for(const proof of proofs) {\n await shouldMapToUrl({\n doc: {\n '@context': data['@context'],\n ...proof\n },\n term: 'https://w3id.org/security#verificationMethod',\n prop: '@id',\n documentLoader\n });\n }\n }", + "title": "The specific type of proof MUST be specified as a string that maps to a URL.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#:~:text=The%20specific%20type%20of%20proof%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL';\n const prop = '@type';\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string', 'Expected \"proof.type\" to be a string.');\n const expanded = await jsonld.expand({\n '@context': data['@context'],\n type: proof.type\n }, {documentLoader});\n for(const term of expanded) {\n const types = term[prop];\n should.exist(types, 'Expected @type to exist.');\n types.every(url => shouldBeUrl({url, prop}));\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -7133,21 +6973,21 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "gOLKDdlOgm5o-DegeI1Ps", + "parent": "V3app5v08kK3UQYixBWWE", "ctx": null, - "_testId": "urn:uuid:eb94a578-449b-40de-9c43-d6d870067f55", + "_testId": "urn:uuid:ba8a047e-94c0-4ec9-8e03-503167f5caa3", "cell": { - "columnId": "SpruceID", - "rowId": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL]" + "columnId": "OpSecId", + "rowId": "The specific type of proof MUST be specified as a string that maps to a URL." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=A%20verification%20method%20is%20the%20means%20and%20information%20needed%20to%20verify%20the%20proof.%20If%20included%2C%20the%20value%20MUST%20be%20a%20string%20that%20maps%20to%20a%20%5BURL%5D.", + "link": "https://w3c.github.io/vc-data-integrity/#:~:text=The%20specific%20type%20of%20proof%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9563, + "_idleStart": 9951, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -7158,8 +6998,8 @@ }, { "type": "test", - "title": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL]", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=A%20verification%20method%20is%20the%20means%20and%20information%20needed%20to%20verify%20the%20proof.%20If%20included%2C%20the%20value%20MUST%20be%20a%20string%20that%20maps%20to%20a%20%5BURL%5D.';\n for(const proof of proofs) {\n await shouldMapToUrl({\n doc: {\n '@context': data['@context'],\n ...proof\n },\n term: 'https://w3id.org/security#verificationMethod',\n prop: '@id',\n documentLoader\n });\n }\n }", + "title": "The specific type of proof MUST be specified as a string that maps to a URL.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#:~:text=The%20specific%20type%20of%20proof%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL';\n const prop = '@type';\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string', 'Expected \"proof.type\" to be a string.');\n const expanded = await jsonld.expand({\n '@context': data['@context'],\n type: proof.type\n }, {documentLoader});\n for(const term of expanded) {\n const types = term[prop];\n should.exist(types, 'Expected @type to exist.');\n types.every(url => shouldBeUrl({url, prop}));\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -7169,21 +7009,21 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "RZteP052VeaXIQkX5MUvo", + "parent": "pJvzjaJb0oGOCZ6Fp689R", "ctx": null, - "_testId": "urn:uuid:2adeedf8-8fbe-43ac-bdd7-e2870d24ff28", + "_testId": "urn:uuid:84795c66-e2fe-4972-9ff3-fcfe3cc7d547", "cell": { - "columnId": "Trinsic", - "rowId": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL]" + "columnId": "SpruceID", + "rowId": "The specific type of proof MUST be specified as a string that maps to a URL." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=A%20verification%20method%20is%20the%20means%20and%20information%20needed%20to%20verify%20the%20proof.%20If%20included%2C%20the%20value%20MUST%20be%20a%20string%20that%20maps%20to%20a%20%5BURL%5D.", + "link": "https://w3c.github.io/vc-data-integrity/#:~:text=The%20specific%20type%20of%20proof%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10167, + "_idleStart": 10086, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -7191,17 +7031,11 @@ "duration": 1, "state": "passed", "speed": "fast" - } - ] - }, - { - "id": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL", - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20reason%20the%20proof%20was%20created%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL", - "cells": [ + }, { "type": "test", - "title": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20reason%20the%20proof%20was%20created%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL';\n for(const proof of proofs) {\n proof.should.have.property('proofPurpose');\n proof.proofPurpose.should.be.a('string');\n await shouldMapToUrl({\n doc: {\n '@context': data['@context'],\n ...proof\n },\n term: 'https://w3id.org/security#proofPurpose',\n prop: '@id',\n documentLoader\n });\n }\n }", + "title": "The specific type of proof MUST be specified as a string that maps to a URL.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#:~:text=The%20specific%20type%20of%20proof%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL';\n const prop = '@type';\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string', 'Expected \"proof.type\" to be a string.');\n const expanded = await jsonld.expand({\n '@context': data['@context'],\n type: proof.type\n }, {documentLoader});\n for(const term of expanded) {\n const types = term[prop];\n should.exist(types, 'Expected @type to exist.');\n types.every(url => shouldBeUrl({url, prop}));\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -7211,21 +7045,21 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Q-Y1cYh4G8cDll4bwtBlR", + "parent": "qmgk3hHclzYw9jf2QjmPc", "ctx": null, - "_testId": "urn:uuid:ecbb0b2a-7692-4aa2-ba6b-0b31582c9385", + "_testId": "urn:uuid:136486ae-f660-4c98-93e5-c3dd905fa87d", "cell": { - "columnId": "apicatalog.com", - "rowId": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL" + "columnId": "Trinsic", + "rowId": "The specific type of proof MUST be specified as a string that maps to a URL." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20reason%20the%20proof%20was%20created%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL", + "link": "https://w3c.github.io/vc-data-integrity/#:~:text=The%20specific%20type%20of%20proof%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 5543, + "_idleStart": 11078, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -7233,11 +7067,42 @@ "duration": 1, "state": "passed", "speed": "fast" + } + ] + }, + { + "id": "\"proof.type\" field MUST be \"Ed25519Signature2020\" and the associated document MUST include expected contexts.", + "cells": [ + { + "type": "test", + "title": "\"proof.type\" field MUST be \"Ed25519Signature2020\" and the associated document MUST include expected contexts.", + "body": "function() {\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string',\n 'Expected \"proof.type\" to be a string.'\n );\n const hasExpectedType = expectedProofTypes.includes(proof.type);\n hasExpectedType.should.equal(true);\n\n if(proof.type === 'Ed25519Signature2020') {\n const expectedContext =\n 'https://w3id.org/security/suites/ed25519-2020/v1';\n const hasExpectedContext =\n data['@context'].includes(expectedContext);\n hasExpectedContext.should.equal(true);\n }\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "parent": "yxhpYILOcqbki3FDec94S", + "ctx": null, + "_testId": "urn:uuid:5e34e5d0-cf1d-4203-b14f-3220eadf8314", + "cell": { + "columnId": "apicatalog.com", + "rowId": "\"proof.type\" field MUST be \"Ed25519Signature2020\" and the associated document MUST include expected contexts." + }, + "_events": {}, + "_eventsCount": 1, + "duration": 0, + "state": "passed", + "speed": "fast" }, { "type": "test", - "title": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20reason%20the%20proof%20was%20created%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL';\n for(const proof of proofs) {\n proof.should.have.property('proofPurpose');\n proof.proofPurpose.should.be.a('string');\n await shouldMapToUrl({\n doc: {\n '@context': data['@context'],\n ...proof\n },\n term: 'https://w3id.org/security#proofPurpose',\n prop: '@id',\n documentLoader\n });\n }\n }", + "title": "\"proof.type\" field MUST be \"Ed25519Signature2020\" and the associated document MUST include expected contexts.", + "body": "function() {\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string',\n 'Expected \"proof.type\" to be a string.'\n );\n const hasExpectedType = expectedProofTypes.includes(proof.type);\n hasExpectedType.should.equal(true);\n\n if(proof.type === 'Ed25519Signature2020') {\n const expectedContext =\n 'https://w3id.org/security/suites/ed25519-2020/v1';\n const hasExpectedContext =\n data['@context'].includes(expectedContext);\n hasExpectedContext.should.equal(true);\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -7247,33 +7112,23 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "inrDQx7FuP3tRBmfKO9Ff", + "parent": "QHK1IypTjZvkcHZsBOX_g", "ctx": null, - "_testId": "urn:uuid:81b9909d-3a2c-4153-ab66-a0ab7c7b5b45", + "_testId": "urn:uuid:054b54ab-b1af-4f85-9f5b-3b94eefd178d", "cell": { "columnId": "Danube Tech", - "rowId": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL" + "rowId": "\"proof.type\" field MUST be \"Ed25519Signature2020\" and the associated document MUST include expected contexts." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20reason%20the%20proof%20was%20created%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL", - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 6442, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 1, + "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20reason%20the%20proof%20was%20created%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL';\n for(const proof of proofs) {\n proof.should.have.property('proofPurpose');\n proof.proofPurpose.should.be.a('string');\n await shouldMapToUrl({\n doc: {\n '@context': data['@context'],\n ...proof\n },\n term: 'https://w3id.org/security#proofPurpose',\n prop: '@id',\n documentLoader\n });\n }\n }", + "title": "\"proof.type\" field MUST be \"Ed25519Signature2020\" and the associated document MUST include expected contexts.", + "body": "function() {\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string',\n 'Expected \"proof.type\" to be a string.'\n );\n const hasExpectedType = expectedProofTypes.includes(proof.type);\n hasExpectedType.should.equal(true);\n\n if(proof.type === 'Ed25519Signature2020') {\n const expectedContext =\n 'https://w3id.org/security/suites/ed25519-2020/v1';\n const hasExpectedContext =\n data['@context'].includes(expectedContext);\n hasExpectedContext.should.equal(true);\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -7283,33 +7138,23 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "rrzz3mWjDHnKXxRkUzYAu", + "parent": "3oybt7im9lmDGUjG_T3ge", "ctx": null, - "_testId": "urn:uuid:a15a352b-3c7a-462a-81b5-fd93edfd315f", + "_testId": "urn:uuid:6f90bfc6-c495-4ed7-8589-23573285daa4", "cell": { "columnId": "Digital Bazaar", - "rowId": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL" + "rowId": "\"proof.type\" field MUST be \"Ed25519Signature2020\" and the associated document MUST include expected contexts." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20reason%20the%20proof%20was%20created%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL", - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 7768, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, "duration": 1, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20reason%20the%20proof%20was%20created%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL';\n for(const proof of proofs) {\n proof.should.have.property('proofPurpose');\n proof.proofPurpose.should.be.a('string');\n await shouldMapToUrl({\n doc: {\n '@context': data['@context'],\n ...proof\n },\n term: 'https://w3id.org/security#proofPurpose',\n prop: '@id',\n documentLoader\n });\n }\n }", + "title": "\"proof.type\" field MUST be \"Ed25519Signature2020\" and the associated document MUST include expected contexts.", + "body": "function() {\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string',\n 'Expected \"proof.type\" to be a string.'\n );\n const hasExpectedType = expectedProofTypes.includes(proof.type);\n hasExpectedType.should.equal(true);\n\n if(proof.type === 'Ed25519Signature2020') {\n const expectedContext =\n 'https://w3id.org/security/suites/ed25519-2020/v1';\n const hasExpectedContext =\n data['@context'].includes(expectedContext);\n hasExpectedContext.should.equal(true);\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -7319,33 +7164,31 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Njo-kHgHfWhU47zHweHTV", + "parent": "tikRDf1hNC-fQs8dM6EPO", "ctx": null, - "_testId": "urn:uuid:5e735af4-6956-4f93-91ca-ffcd7725db73", + "_testId": "urn:uuid:b64786f5-0369-4d29-a7e9-c013deef3016", "cell": { "columnId": "EWF", - "rowId": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL" + "rowId": "\"proof.type\" field MUST be \"Ed25519Signature2020\" and the associated document MUST include expected contexts." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20reason%20the%20proof%20was%20created%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL", - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 8879, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, "duration": 0, - "state": "passed", - "speed": "fast" + "state": "failed", + "err": { + "name": "AssertionError", + "message": "expected false to equal true", + "showDiff": true, + "actual": "false", + "expected": "true", + "operator": "strictEqual", + "stack": "AssertionError: expected false to equal true\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:136:34)\n at process.processImmediate (node:internal/timers:483:21)" + } }, { "type": "test", - "title": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20reason%20the%20proof%20was%20created%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL';\n for(const proof of proofs) {\n proof.should.have.property('proofPurpose');\n proof.proofPurpose.should.be.a('string');\n await shouldMapToUrl({\n doc: {\n '@context': data['@context'],\n ...proof\n },\n term: 'https://w3id.org/security#proofPurpose',\n prop: '@id',\n documentLoader\n });\n }\n }", + "title": "\"proof.type\" field MUST be \"Ed25519Signature2020\" and the associated document MUST include expected contexts.", + "body": "function() {\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string',\n 'Expected \"proof.type\" to be a string.'\n );\n const hasExpectedType = expectedProofTypes.includes(proof.type);\n hasExpectedType.should.equal(true);\n\n if(proof.type === 'Ed25519Signature2020') {\n const expectedContext =\n 'https://w3id.org/security/suites/ed25519-2020/v1';\n const hasExpectedContext =\n data['@context'].includes(expectedContext);\n hasExpectedContext.should.equal(true);\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -7355,43 +7198,31 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "FsVwMDitvb4cbtnFdkm_k", + "parent": "3UTW-_LttILA3ILQtGZo2", "ctx": null, - "_testId": "urn:uuid:c2472a9d-bd5d-4bca-b289-bdc33d5ea770", + "_testId": "urn:uuid:5412622a-f8db-4e48-b063-85ff6976c003", "cell": { "columnId": "LearnCard", - "rowId": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL" + "rowId": "\"proof.type\" field MUST be \"Ed25519Signature2020\" and the associated document MUST include expected contexts." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20reason%20the%20proof%20was%20created%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL", - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 9237, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 1, - "state": "passed", - "speed": "fast" - }, - { - "cell": { - "rowId": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL", - "colId": "OpSecId" - }, - "state": "pending", + "duration": 0, + "state": "failed", "err": { - "message": "Test skipped." + "name": "AssertionError", + "message": "expected false to equal true", + "showDiff": true, + "actual": "false", + "expected": "true", + "operator": "strictEqual", + "stack": "AssertionError: expected false to equal true\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:143:39)\n at process.processImmediate (node:internal/timers:483:21)" } }, { "type": "test", - "title": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20reason%20the%20proof%20was%20created%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL';\n for(const proof of proofs) {\n proof.should.have.property('proofPurpose');\n proof.proofPurpose.should.be.a('string');\n await shouldMapToUrl({\n doc: {\n '@context': data['@context'],\n ...proof\n },\n term: 'https://w3id.org/security#proofPurpose',\n prop: '@id',\n documentLoader\n });\n }\n }", + "title": "\"proof.type\" field MUST be \"Ed25519Signature2020\" and the associated document MUST include expected contexts.", + "body": "function() {\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string',\n 'Expected \"proof.type\" to be a string.'\n );\n const hasExpectedType = expectedProofTypes.includes(proof.type);\n hasExpectedType.should.equal(true);\n\n if(proof.type === 'Ed25519Signature2020') {\n const expectedContext =\n 'https://w3id.org/security/suites/ed25519-2020/v1';\n const hasExpectedContext =\n data['@context'].includes(expectedContext);\n hasExpectedContext.should.equal(true);\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -7401,33 +7232,49 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "gOLKDdlOgm5o-DegeI1Ps", + "parent": "V3app5v08kK3UQYixBWWE", "ctx": null, - "_testId": "urn:uuid:796a12bd-8d56-4e2e-9fff-cf1957450f20", + "_testId": "urn:uuid:34ada0e4-2bb2-43f0-8272-738383f3f4dc", "cell": { - "columnId": "SpruceID", - "rowId": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL" + "columnId": "OpSecId", + "rowId": "\"proof.type\" field MUST be \"Ed25519Signature2020\" and the associated document MUST include expected contexts." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20reason%20the%20proof%20was%20created%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL", - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 9564, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "\"proof.type\" field MUST be \"Ed25519Signature2020\" and the associated document MUST include expected contexts.", + "body": "function() {\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string',\n 'Expected \"proof.type\" to be a string.'\n );\n const hasExpectedType = expectedProofTypes.includes(proof.type);\n hasExpectedType.should.equal(true);\n\n if(proof.type === 'Ed25519Signature2020') {\n const expectedContext =\n 'https://w3id.org/security/suites/ed25519-2020/v1';\n const hasExpectedContext =\n data['@context'].includes(expectedContext);\n hasExpectedContext.should.equal(true);\n }\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "parent": "pJvzjaJb0oGOCZ6Fp689R", + "ctx": null, + "_testId": "urn:uuid:124a620b-bda5-480f-b15b-803f7ff78332", + "cell": { + "columnId": "SpruceID", + "rowId": "\"proof.type\" field MUST be \"Ed25519Signature2020\" and the associated document MUST include expected contexts." }, - "duration": 1, + "_events": {}, + "_eventsCount": 1, + "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20reason%20the%20proof%20was%20created%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL';\n for(const proof of proofs) {\n proof.should.have.property('proofPurpose');\n proof.proofPurpose.should.be.a('string');\n await shouldMapToUrl({\n doc: {\n '@context': data['@context'],\n ...proof\n },\n term: 'https://w3id.org/security#proofPurpose',\n prop: '@id',\n documentLoader\n });\n }\n }", + "title": "\"proof.type\" field MUST be \"Ed25519Signature2020\" and the associated document MUST include expected contexts.", + "body": "function() {\n for(const proof of proofs) {\n proof.should.have.property('type');\n proof.type.should.be.a(\n 'string',\n 'Expected \"proof.type\" to be a string.'\n );\n const hasExpectedType = expectedProofTypes.includes(proof.type);\n hasExpectedType.should.equal(true);\n\n if(proof.type === 'Ed25519Signature2020') {\n const expectedContext =\n 'https://w3id.org/security/suites/ed25519-2020/v1';\n const hasExpectedContext =\n data['@context'].includes(expectedContext);\n hasExpectedContext.should.equal(true);\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -7437,25 +7284,15 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "RZteP052VeaXIQkX5MUvo", + "parent": "qmgk3hHclzYw9jf2QjmPc", "ctx": null, - "_testId": "urn:uuid:7f7bd901-d45f-42e2-8b87-7912e7dcc55e", + "_testId": "urn:uuid:133daa53-d6fc-4c0e-811f-9bdebdb0947e", "cell": { "columnId": "Trinsic", - "rowId": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL" + "rowId": "\"proof.type\" field MUST be \"Ed25519Signature2020\" and the associated document MUST include expected contexts." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20reason%20the%20proof%20was%20created%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL", - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 10168, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, "duration": 0, "state": "passed", "speed": "fast" @@ -7463,13 +7300,13 @@ ] }, { - "id": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification.", - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof", + "id": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified.", + "link": "https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.", "cells": [ { "type": "test", - "title": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof';\n for(const proof of proofs) {\n should.exist(proof, 'Expected proof to exist.');\n const {\n prefix: expectedPrefix,\n name: encodingName\n } = expectedMultibasePrefix(proof.cryptosuite);\n shouldHaveProofValue({proof, expectedPrefix, encodingName});\n }\n }", + "title": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.';\n for(const proof of proofs) {\n if(proof.type && proof.type === 'DataIntegrityProof') {\n should.exist(\n proof.cryptosuite,\n 'If the proof type is DataIntegrityProof, cryptosuite MUST ' +\n 'be specified');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -7479,24 +7316,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Q-Y1cYh4G8cDll4bwtBlR", + "parent": "yxhpYILOcqbki3FDec94S", "ctx": null, - "_testId": "urn:uuid:e944b721-bbe2-42ec-8664-c6a0b2ad318c", + "_testId": "urn:uuid:bd878300-cfcc-4be0-9eda-1613527883f5", "cell": { "columnId": "apicatalog.com", - "rowId": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification." + "rowId": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof", + "link": "https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.", "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof';\n for(const proof of proofs) {\n should.exist(proof, 'Expected proof to exist.');\n const {\n prefix: expectedPrefix,\n name: encodingName\n } = expectedMultibasePrefix(proof.cryptosuite);\n shouldHaveProofValue({proof, expectedPrefix, encodingName});\n }\n }", + "title": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.';\n for(const proof of proofs) {\n if(proof.type && proof.type === 'DataIntegrityProof') {\n should.exist(\n proof.cryptosuite,\n 'If the proof type is DataIntegrityProof, cryptosuite MUST ' +\n 'be specified');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -7506,24 +7343,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "inrDQx7FuP3tRBmfKO9Ff", + "parent": "QHK1IypTjZvkcHZsBOX_g", "ctx": null, - "_testId": "urn:uuid:53f08919-b056-40ca-94b0-674b05a30015", + "_testId": "urn:uuid:e99b0a32-e1f4-4f11-8eb7-54b21df0f0d3", "cell": { "columnId": "Danube Tech", - "rowId": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification." + "rowId": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof", + "link": "https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.", "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof';\n for(const proof of proofs) {\n should.exist(proof, 'Expected proof to exist.');\n const {\n prefix: expectedPrefix,\n name: encodingName\n } = expectedMultibasePrefix(proof.cryptosuite);\n shouldHaveProofValue({proof, expectedPrefix, encodingName});\n }\n }", + "title": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.';\n for(const proof of proofs) {\n if(proof.type && proof.type === 'DataIntegrityProof') {\n should.exist(\n proof.cryptosuite,\n 'If the proof type is DataIntegrityProof, cryptosuite MUST ' +\n 'be specified');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -7533,24 +7370,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "rrzz3mWjDHnKXxRkUzYAu", + "parent": "3oybt7im9lmDGUjG_T3ge", "ctx": null, - "_testId": "urn:uuid:419d3735-72d0-41e7-9d3e-41b6a79be90d", + "_testId": "urn:uuid:63002620-7b09-4ae4-94b6-df8d7e9bc30e", "cell": { "columnId": "Digital Bazaar", - "rowId": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification." + "rowId": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof", + "link": "https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.", "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof';\n for(const proof of proofs) {\n should.exist(proof, 'Expected proof to exist.');\n const {\n prefix: expectedPrefix,\n name: encodingName\n } = expectedMultibasePrefix(proof.cryptosuite);\n shouldHaveProofValue({proof, expectedPrefix, encodingName});\n }\n }", + "title": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.';\n for(const proof of proofs) {\n if(proof.type && proof.type === 'DataIntegrityProof') {\n should.exist(\n proof.cryptosuite,\n 'If the proof type is DataIntegrityProof, cryptosuite MUST ' +\n 'be specified');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -7560,30 +7397,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Njo-kHgHfWhU47zHweHTV", + "parent": "tikRDf1hNC-fQs8dM6EPO", "ctx": null, - "_testId": "urn:uuid:e15cf659-0bd6-4f9a-bc89-1aaef6607884", + "_testId": "urn:uuid:caed5592-f342-4612-add7-8eff2021b7c3", "cell": { "columnId": "EWF", - "rowId": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification." + "rowId": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof", + "link": "https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.", "duration": 0, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected proofValue to exist.: expected undefined to exist", - "showDiff": false, - "operator": "strictEqual", - "stack": "AssertionError: Expected proofValue to exist.: expected undefined to exist\n at should.exist (node_modules/chai/lib/chai/interface/should.js:144:34)\n at shouldHaveProofValue (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:245:10)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:209:9)\n at process.processImmediate (node:internal/timers:483:21)" - } + "state": "passed", + "speed": "fast" }, { "type": "test", - "title": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof';\n for(const proof of proofs) {\n should.exist(proof, 'Expected proof to exist.');\n const {\n prefix: expectedPrefix,\n name: encodingName\n } = expectedMultibasePrefix(proof.cryptosuite);\n shouldHaveProofValue({proof, expectedPrefix, encodingName});\n }\n }", + "title": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.';\n for(const proof of proofs) {\n if(proof.type && proof.type === 'DataIntegrityProof') {\n should.exist(\n proof.cryptosuite,\n 'If the proof type is DataIntegrityProof, cryptosuite MUST ' +\n 'be specified');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -7593,34 +7424,51 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "FsVwMDitvb4cbtnFdkm_k", + "parent": "3UTW-_LttILA3ILQtGZo2", "ctx": null, - "_testId": "urn:uuid:9ab44d47-93fc-4672-bab5-62d00bf89e93", + "_testId": "urn:uuid:5ba6c27b-ef4a-427d-8957-e7aa5c508d8d", "cell": { "columnId": "LearnCard", - "rowId": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification." + "rowId": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof", + "link": "https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.", "duration": 0, "state": "passed", "speed": "fast" }, { + "type": "test", + "title": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.';\n for(const proof of proofs) {\n if(proof.type && proof.type === 'DataIntegrityProof') {\n should.exist(\n proof.cryptosuite,\n 'If the proof type is DataIntegrityProof, cryptosuite MUST ' +\n 'be specified');\n }\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "parent": "V3app5v08kK3UQYixBWWE", + "ctx": null, + "_testId": "urn:uuid:64d4255a-1471-42a4-b0f5-cf0309dfde98", "cell": { - "rowId": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification.", - "colId": "OpSecId" + "columnId": "OpSecId", + "rowId": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified." }, - "state": "pending", - "err": { - "message": "Test skipped." - } + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.", + "duration": 0, + "state": "passed", + "speed": "fast" }, { "type": "test", - "title": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof';\n for(const proof of proofs) {\n should.exist(proof, 'Expected proof to exist.');\n const {\n prefix: expectedPrefix,\n name: encodingName\n } = expectedMultibasePrefix(proof.cryptosuite);\n shouldHaveProofValue({proof, expectedPrefix, encodingName});\n }\n }", + "title": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.';\n for(const proof of proofs) {\n if(proof.type && proof.type === 'DataIntegrityProof') {\n should.exist(\n proof.cryptosuite,\n 'If the proof type is DataIntegrityProof, cryptosuite MUST ' +\n 'be specified');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -7630,24 +7478,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "gOLKDdlOgm5o-DegeI1Ps", + "parent": "pJvzjaJb0oGOCZ6Fp689R", "ctx": null, - "_testId": "urn:uuid:cf1567fb-9274-4bbe-a5fe-57f31ee5fb8d", + "_testId": "urn:uuid:9c82b0b8-16f5-461a-8435-3ef05bb73300", "cell": { "columnId": "SpruceID", - "rowId": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification." + "rowId": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof", + "link": "https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.", "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof';\n for(const proof of proofs) {\n should.exist(proof, 'Expected proof to exist.');\n const {\n prefix: expectedPrefix,\n name: encodingName\n } = expectedMultibasePrefix(proof.cryptosuite);\n shouldHaveProofValue({proof, expectedPrefix, encodingName});\n }\n }", + "title": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.';\n for(const proof of proofs) {\n if(proof.type && proof.type === 'DataIntegrityProof') {\n should.exist(\n proof.cryptosuite,\n 'If the proof type is DataIntegrityProof, cryptosuite MUST ' +\n 'be specified');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -7657,16 +7505,16 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "RZteP052VeaXIQkX5MUvo", + "parent": "qmgk3hHclzYw9jf2QjmPc", "ctx": null, - "_testId": "urn:uuid:279e1d54-5af5-4cd5-8dac-0987ab4464c7", + "_testId": "urn:uuid:da9c7055-6932-4650-b181-bc942fb2841d", "cell": { "columnId": "Trinsic", - "rowId": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification." + "rowId": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof", + "link": "https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.", "duration": 0, "state": "passed", "speed": "fast" @@ -7674,12 +7522,13 @@ ] }, { - "id": "if \"proof.previousProof\" field exists, it MUST be a string.", + "id": "If specified (proof.cryptosuite), its value MUST be a string.", + "link": "https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.", "cells": [ { "type": "test", - "title": "if \"proof.previousProof\" field exists, it MUST be a string.", - "body": "function() {\n for(const proof of proofs) {\n if(proof.previousProof) {\n proof.previousProof.should.be.a('string', 'Expected ' +\n '\"proof.previousProof\" to be a string.');\n }\n }\n }", + "title": "If specified (proof.cryptosuite), its value MUST be a string.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.';\n for(const proof of proofs) {\n if(proof.cryptosuite) {\n proof.cryptosuite.should.be.a(\n 'string',\n 'cryptosuite value MUST be a string.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -7689,23 +7538,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Q-Y1cYh4G8cDll4bwtBlR", + "parent": "yxhpYILOcqbki3FDec94S", "ctx": null, - "_testId": "urn:uuid:38cbefe9-19a8-4a76-a5ac-2810e14824a2", + "_testId": "urn:uuid:84721b3d-a2cc-4227-956f-704e69a5ae04", "cell": { "columnId": "apicatalog.com", - "rowId": "if \"proof.previousProof\" field exists, it MUST be a string." + "rowId": "If specified (proof.cryptosuite), its value MUST be a string." }, "_events": {}, "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.", "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "if \"proof.previousProof\" field exists, it MUST be a string.", - "body": "function() {\n for(const proof of proofs) {\n if(proof.previousProof) {\n proof.previousProof.should.be.a('string', 'Expected ' +\n '\"proof.previousProof\" to be a string.');\n }\n }\n }", + "title": "If specified (proof.cryptosuite), its value MUST be a string.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.';\n for(const proof of proofs) {\n if(proof.cryptosuite) {\n proof.cryptosuite.should.be.a(\n 'string',\n 'cryptosuite value MUST be a string.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -7715,23 +7565,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "inrDQx7FuP3tRBmfKO9Ff", + "parent": "QHK1IypTjZvkcHZsBOX_g", "ctx": null, - "_testId": "urn:uuid:65e4620a-9be8-4239-8167-35589a9bb3d8", + "_testId": "urn:uuid:d43590f6-2ba7-4731-907b-7dfaef4fb172", "cell": { "columnId": "Danube Tech", - "rowId": "if \"proof.previousProof\" field exists, it MUST be a string." + "rowId": "If specified (proof.cryptosuite), its value MUST be a string." }, "_events": {}, "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.", "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "if \"proof.previousProof\" field exists, it MUST be a string.", - "body": "function() {\n for(const proof of proofs) {\n if(proof.previousProof) {\n proof.previousProof.should.be.a('string', 'Expected ' +\n '\"proof.previousProof\" to be a string.');\n }\n }\n }", + "title": "If specified (proof.cryptosuite), its value MUST be a string.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.';\n for(const proof of proofs) {\n if(proof.cryptosuite) {\n proof.cryptosuite.should.be.a(\n 'string',\n 'cryptosuite value MUST be a string.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -7741,23 +7592,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "rrzz3mWjDHnKXxRkUzYAu", + "parent": "3oybt7im9lmDGUjG_T3ge", "ctx": null, - "_testId": "urn:uuid:716fe3cc-4884-4847-ad97-3ef366f1567a", + "_testId": "urn:uuid:d017b08e-a296-46a5-910f-9f6929d31689", "cell": { "columnId": "Digital Bazaar", - "rowId": "if \"proof.previousProof\" field exists, it MUST be a string." + "rowId": "If specified (proof.cryptosuite), its value MUST be a string." }, "_events": {}, "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.", "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "if \"proof.previousProof\" field exists, it MUST be a string.", - "body": "function() {\n for(const proof of proofs) {\n if(proof.previousProof) {\n proof.previousProof.should.be.a('string', 'Expected ' +\n '\"proof.previousProof\" to be a string.');\n }\n }\n }", + "title": "If specified (proof.cryptosuite), its value MUST be a string.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.';\n for(const proof of proofs) {\n if(proof.cryptosuite) {\n proof.cryptosuite.should.be.a(\n 'string',\n 'cryptosuite value MUST be a string.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -7767,23 +7619,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Njo-kHgHfWhU47zHweHTV", + "parent": "tikRDf1hNC-fQs8dM6EPO", "ctx": null, - "_testId": "urn:uuid:cbd398a8-b29d-4ef5-8cd0-f4e7dd6ada9b", + "_testId": "urn:uuid:3a9a0a71-8ca8-4d80-97e1-018147ba305d", "cell": { "columnId": "EWF", - "rowId": "if \"proof.previousProof\" field exists, it MUST be a string." + "rowId": "If specified (proof.cryptosuite), its value MUST be a string." }, "_events": {}, "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.", "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "if \"proof.previousProof\" field exists, it MUST be a string.", - "body": "function() {\n for(const proof of proofs) {\n if(proof.previousProof) {\n proof.previousProof.should.be.a('string', 'Expected ' +\n '\"proof.previousProof\" to be a string.');\n }\n }\n }", + "title": "If specified (proof.cryptosuite), its value MUST be a string.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.';\n for(const proof of proofs) {\n if(proof.cryptosuite) {\n proof.cryptosuite.should.be.a(\n 'string',\n 'cryptosuite value MUST be a string.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -7793,33 +7646,51 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "FsVwMDitvb4cbtnFdkm_k", + "parent": "3UTW-_LttILA3ILQtGZo2", "ctx": null, - "_testId": "urn:uuid:cc12ebfe-473f-4115-ae6b-348158ee6964", + "_testId": "urn:uuid:b92c25af-3f4d-497d-8157-d13a4973c0a4", "cell": { "columnId": "LearnCard", - "rowId": "if \"proof.previousProof\" field exists, it MUST be a string." + "rowId": "If specified (proof.cryptosuite), its value MUST be a string." }, "_events": {}, "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.", "duration": 0, "state": "passed", "speed": "fast" }, { + "type": "test", + "title": "If specified (proof.cryptosuite), its value MUST be a string.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.';\n for(const proof of proofs) {\n if(proof.cryptosuite) {\n proof.cryptosuite.should.be.a(\n 'string',\n 'cryptosuite value MUST be a string.');\n }\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "parent": "V3app5v08kK3UQYixBWWE", + "ctx": null, + "_testId": "urn:uuid:6be95996-8e54-43e6-b372-d0262f43c77b", "cell": { - "rowId": "if \"proof.previousProof\" field exists, it MUST be a string.", - "colId": "OpSecId" + "columnId": "OpSecId", + "rowId": "If specified (proof.cryptosuite), its value MUST be a string." }, - "state": "pending", - "err": { - "message": "Test skipped." - } + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.", + "duration": 0, + "state": "passed", + "speed": "fast" }, { "type": "test", - "title": "if \"proof.previousProof\" field exists, it MUST be a string.", - "body": "function() {\n for(const proof of proofs) {\n if(proof.previousProof) {\n proof.previousProof.should.be.a('string', 'Expected ' +\n '\"proof.previousProof\" to be a string.');\n }\n }\n }", + "title": "If specified (proof.cryptosuite), its value MUST be a string.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.';\n for(const proof of proofs) {\n if(proof.cryptosuite) {\n proof.cryptosuite.should.be.a(\n 'string',\n 'cryptosuite value MUST be a string.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -7829,23 +7700,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "gOLKDdlOgm5o-DegeI1Ps", + "parent": "pJvzjaJb0oGOCZ6Fp689R", "ctx": null, - "_testId": "urn:uuid:56a4e8fd-9405-4c0e-bedb-fe0a4dec94c0", + "_testId": "urn:uuid:79c0e7aa-2f01-4537-b4e4-04e64a90dc1c", "cell": { "columnId": "SpruceID", - "rowId": "if \"proof.previousProof\" field exists, it MUST be a string." + "rowId": "If specified (proof.cryptosuite), its value MUST be a string." }, "_events": {}, "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.", "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "if \"proof.previousProof\" field exists, it MUST be a string.", - "body": "function() {\n for(const proof of proofs) {\n if(proof.previousProof) {\n proof.previousProof.should.be.a('string', 'Expected ' +\n '\"proof.previousProof\" to be a string.');\n }\n }\n }", + "title": "If specified (proof.cryptosuite), its value MUST be a string.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.';\n for(const proof of proofs) {\n if(proof.cryptosuite) {\n proof.cryptosuite.should.be.a(\n 'string',\n 'cryptosuite value MUST be a string.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -7855,15 +7727,16 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "RZteP052VeaXIQkX5MUvo", + "parent": "qmgk3hHclzYw9jf2QjmPc", "ctx": null, - "_testId": "urn:uuid:de45e215-fbbb-45c2-a32b-fbf3265bb2af", + "_testId": "urn:uuid:9ddb2afc-d39a-45fb-a5e2-f61af7924d52", "cell": { "columnId": "Trinsic", - "rowId": "if \"proof.previousProof\" field exists, it MUST be a string." + "rowId": "If specified (proof.cryptosuite), its value MUST be a string." }, "_events": {}, "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#introduction:~:text=If%20the%20proof%20type%20is%20DataIntegrityProof%2C%20cryptosuite%20MUST%20be%20specified%3B%20otherwise%2C%20cryptosuite%20MAY%20be%20specified.%20If%20specified%2C%20its%20value%20MUST%20be%20a%20string.", "duration": 0, "state": "passed", "speed": "fast" @@ -7871,12 +7744,13 @@ ] }, { - "id": "if \"proof.nonce\" field exists, it MUST be a string.", + "id": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL].", + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=A%20verification%20method%20is%20the%20means%20and%20information%20needed%20to%20verify%20the%20proof.%20If%20included%2C%20the%20value%20MUST%20be%20a%20string%20that%20maps%20to%20a%20%5BURL%5D.", "cells": [ { "type": "test", - "title": "if \"proof.nonce\" field exists, it MUST be a string.", - "body": "function() {\n for(const proof of proofs) {\n if(proof.nonce) {\n proof.nonce.should.be.a('string', 'Expected \"proof.nonce\" ' +\n 'to be a string.');\n }\n }\n }", + "title": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL].", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=A%20verification%20method%20is%20the%20means%20and%20information%20needed%20to%20verify%20the%20proof.%20If%20included%2C%20the%20value%20MUST%20be%20a%20string%20that%20maps%20to%20a%20%5BURL%5D.';\n for(const proof of proofs) {\n if(!data || !data?.['@context']) {\n throw new Error(`Expected ${vendorName} to issue a VC.`);\n }\n await shouldMapToUrl({\n doc: {\n '@context': data['@context'],\n ...proof\n },\n term: 'https://w3id.org/security#verificationMethod',\n prop: '@id',\n documentLoader\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -7886,23 +7760,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Q-Y1cYh4G8cDll4bwtBlR", + "parent": "yxhpYILOcqbki3FDec94S", "ctx": null, - "_testId": "urn:uuid:fdaa56bb-c6a2-42e4-a999-57c0f250a926", + "_testId": "urn:uuid:4302fb38-3338-4e48-b1ee-3481d3c53b0b", "cell": { "columnId": "apicatalog.com", - "rowId": "if \"proof.nonce\" field exists, it MUST be a string." + "rowId": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL]." }, "_events": {}, "_eventsCount": 1, - "duration": 0, + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=A%20verification%20method%20is%20the%20means%20and%20information%20needed%20to%20verify%20the%20proof.%20If%20included%2C%20the%20value%20MUST%20be%20a%20string%20that%20maps%20to%20a%20%5BURL%5D.", + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 6186, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 1, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "if \"proof.nonce\" field exists, it MUST be a string.", - "body": "function() {\n for(const proof of proofs) {\n if(proof.nonce) {\n proof.nonce.should.be.a('string', 'Expected \"proof.nonce\" ' +\n 'to be a string.');\n }\n }\n }", + "title": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL].", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=A%20verification%20method%20is%20the%20means%20and%20information%20needed%20to%20verify%20the%20proof.%20If%20included%2C%20the%20value%20MUST%20be%20a%20string%20that%20maps%20to%20a%20%5BURL%5D.';\n for(const proof of proofs) {\n if(!data || !data?.['@context']) {\n throw new Error(`Expected ${vendorName} to issue a VC.`);\n }\n await shouldMapToUrl({\n doc: {\n '@context': data['@context'],\n ...proof\n },\n term: 'https://w3id.org/security#verificationMethod',\n prop: '@id',\n documentLoader\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -7912,23 +7796,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "inrDQx7FuP3tRBmfKO9Ff", + "parent": "QHK1IypTjZvkcHZsBOX_g", "ctx": null, - "_testId": "urn:uuid:78242c8a-e120-45b3-a26a-ef4e809adf01", + "_testId": "urn:uuid:f13938a7-84c4-41a5-8c6d-a092703ed48b", "cell": { "columnId": "Danube Tech", - "rowId": "if \"proof.nonce\" field exists, it MUST be a string." + "rowId": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL]." }, "_events": {}, "_eventsCount": 1, - "duration": 0, + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=A%20verification%20method%20is%20the%20means%20and%20information%20needed%20to%20verify%20the%20proof.%20If%20included%2C%20the%20value%20MUST%20be%20a%20string%20that%20maps%20to%20a%20%5BURL%5D.", + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 7011, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 1, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "if \"proof.nonce\" field exists, it MUST be a string.", - "body": "function() {\n for(const proof of proofs) {\n if(proof.nonce) {\n proof.nonce.should.be.a('string', 'Expected \"proof.nonce\" ' +\n 'to be a string.');\n }\n }\n }", + "title": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL].", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=A%20verification%20method%20is%20the%20means%20and%20information%20needed%20to%20verify%20the%20proof.%20If%20included%2C%20the%20value%20MUST%20be%20a%20string%20that%20maps%20to%20a%20%5BURL%5D.';\n for(const proof of proofs) {\n if(!data || !data?.['@context']) {\n throw new Error(`Expected ${vendorName} to issue a VC.`);\n }\n await shouldMapToUrl({\n doc: {\n '@context': data['@context'],\n ...proof\n },\n term: 'https://w3id.org/security#verificationMethod',\n prop: '@id',\n documentLoader\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -7938,23 +7832,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "rrzz3mWjDHnKXxRkUzYAu", + "parent": "3oybt7im9lmDGUjG_T3ge", "ctx": null, - "_testId": "urn:uuid:8e5e1571-989f-4ad5-b2af-e57dc2582661", + "_testId": "urn:uuid:410c7fae-fcd4-4037-8abc-3c9aa5c3333e", "cell": { "columnId": "Digital Bazaar", - "rowId": "if \"proof.nonce\" field exists, it MUST be a string." + "rowId": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL]." }, "_events": {}, "_eventsCount": 1, - "duration": 0, + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=A%20verification%20method%20is%20the%20means%20and%20information%20needed%20to%20verify%20the%20proof.%20If%20included%2C%20the%20value%20MUST%20be%20a%20string%20that%20maps%20to%20a%20%5BURL%5D.", + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 8512, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 1, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "if \"proof.nonce\" field exists, it MUST be a string.", - "body": "function() {\n for(const proof of proofs) {\n if(proof.nonce) {\n proof.nonce.should.be.a('string', 'Expected \"proof.nonce\" ' +\n 'to be a string.');\n }\n }\n }", + "title": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL].", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=A%20verification%20method%20is%20the%20means%20and%20information%20needed%20to%20verify%20the%20proof.%20If%20included%2C%20the%20value%20MUST%20be%20a%20string%20that%20maps%20to%20a%20%5BURL%5D.';\n for(const proof of proofs) {\n if(!data || !data?.['@context']) {\n throw new Error(`Expected ${vendorName} to issue a VC.`);\n }\n await shouldMapToUrl({\n doc: {\n '@context': data['@context'],\n ...proof\n },\n term: 'https://w3id.org/security#verificationMethod',\n prop: '@id',\n documentLoader\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -7964,23 +7868,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Njo-kHgHfWhU47zHweHTV", + "parent": "tikRDf1hNC-fQs8dM6EPO", "ctx": null, - "_testId": "urn:uuid:24e7538c-2955-4d08-95b9-5cb65c9e2c4e", + "_testId": "urn:uuid:71c447af-0767-47d7-a3fa-a596240fa736", "cell": { "columnId": "EWF", - "rowId": "if \"proof.nonce\" field exists, it MUST be a string." + "rowId": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL]." }, "_events": {}, "_eventsCount": 1, - "duration": 0, + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=A%20verification%20method%20is%20the%20means%20and%20information%20needed%20to%20verify%20the%20proof.%20If%20included%2C%20the%20value%20MUST%20be%20a%20string%20that%20maps%20to%20a%20%5BURL%5D.", + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 9203, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 1, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "if \"proof.nonce\" field exists, it MUST be a string.", - "body": "function() {\n for(const proof of proofs) {\n if(proof.nonce) {\n proof.nonce.should.be.a('string', 'Expected \"proof.nonce\" ' +\n 'to be a string.');\n }\n }\n }", + "title": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL].", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=A%20verification%20method%20is%20the%20means%20and%20information%20needed%20to%20verify%20the%20proof.%20If%20included%2C%20the%20value%20MUST%20be%20a%20string%20that%20maps%20to%20a%20%5BURL%5D.';\n for(const proof of proofs) {\n if(!data || !data?.['@context']) {\n throw new Error(`Expected ${vendorName} to issue a VC.`);\n }\n await shouldMapToUrl({\n doc: {\n '@context': data['@context'],\n ...proof\n },\n term: 'https://w3id.org/security#verificationMethod',\n prop: '@id',\n documentLoader\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -7990,33 +7904,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "FsVwMDitvb4cbtnFdkm_k", + "parent": "3UTW-_LttILA3ILQtGZo2", "ctx": null, - "_testId": "urn:uuid:3ed10aa0-5f40-4d41-ab33-80711d944ac1", + "_testId": "urn:uuid:d91a6526-fb23-44e3-bacd-3a1f166afec0", "cell": { "columnId": "LearnCard", - "rowId": "if \"proof.nonce\" field exists, it MUST be a string." + "rowId": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL]." }, "_events": {}, "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=A%20verification%20method%20is%20the%20means%20and%20information%20needed%20to%20verify%20the%20proof.%20If%20included%2C%20the%20value%20MUST%20be%20a%20string%20that%20maps%20to%20a%20%5BURL%5D.", + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 9644, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, "duration": 0, "state": "passed", "speed": "fast" }, - { - "cell": { - "rowId": "if \"proof.nonce\" field exists, it MUST be a string.", - "colId": "OpSecId" - }, - "state": "pending", - "err": { - "message": "Test skipped." - } - }, { "type": "test", - "title": "if \"proof.nonce\" field exists, it MUST be a string.", - "body": "function() {\n for(const proof of proofs) {\n if(proof.nonce) {\n proof.nonce.should.be.a('string', 'Expected \"proof.nonce\" ' +\n 'to be a string.');\n }\n }\n }", + "title": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL].", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=A%20verification%20method%20is%20the%20means%20and%20information%20needed%20to%20verify%20the%20proof.%20If%20included%2C%20the%20value%20MUST%20be%20a%20string%20that%20maps%20to%20a%20%5BURL%5D.';\n for(const proof of proofs) {\n if(!data || !data?.['@context']) {\n throw new Error(`Expected ${vendorName} to issue a VC.`);\n }\n await shouldMapToUrl({\n doc: {\n '@context': data['@context'],\n ...proof\n },\n term: 'https://w3id.org/security#verificationMethod',\n prop: '@id',\n documentLoader\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -8026,23 +7940,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "gOLKDdlOgm5o-DegeI1Ps", + "parent": "V3app5v08kK3UQYixBWWE", "ctx": null, - "_testId": "urn:uuid:fad3a2c9-bebe-4c6f-907f-9206635e0c85", + "_testId": "urn:uuid:149feb4a-883d-4f19-b524-e2805e4bd97c", "cell": { - "columnId": "SpruceID", - "rowId": "if \"proof.nonce\" field exists, it MUST be a string." + "columnId": "OpSecId", + "rowId": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL]." }, "_events": {}, "_eventsCount": 1, - "duration": 0, + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=A%20verification%20method%20is%20the%20means%20and%20information%20needed%20to%20verify%20the%20proof.%20If%20included%2C%20the%20value%20MUST%20be%20a%20string%20that%20maps%20to%20a%20%5BURL%5D.", + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 9953, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 1, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "if \"proof.nonce\" field exists, it MUST be a string.", - "body": "function() {\n for(const proof of proofs) {\n if(proof.nonce) {\n proof.nonce.should.be.a('string', 'Expected \"proof.nonce\" ' +\n 'to be a string.');\n }\n }\n }", + "title": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL].", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=A%20verification%20method%20is%20the%20means%20and%20information%20needed%20to%20verify%20the%20proof.%20If%20included%2C%20the%20value%20MUST%20be%20a%20string%20that%20maps%20to%20a%20%5BURL%5D.';\n for(const proof of proofs) {\n if(!data || !data?.['@context']) {\n throw new Error(`Expected ${vendorName} to issue a VC.`);\n }\n await shouldMapToUrl({\n doc: {\n '@context': data['@context'],\n ...proof\n },\n term: 'https://w3id.org/security#verificationMethod',\n prop: '@id',\n documentLoader\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -8052,29 +7976,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "RZteP052VeaXIQkX5MUvo", + "parent": "pJvzjaJb0oGOCZ6Fp689R", "ctx": null, - "_testId": "urn:uuid:79705c5f-93b8-42a1-bba2-8fae7ff416fa", + "_testId": "urn:uuid:c2a1df71-d68f-4526-a3da-20ef7391f805", "cell": { - "columnId": "Trinsic", - "rowId": "if \"proof.nonce\" field exists, it MUST be a string." + "columnId": "SpruceID", + "rowId": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL]." }, "_events": {}, "_eventsCount": 1, - "duration": 0, - "state": "passed", - "speed": "fast" - } - ] - }, - { - "id": "Cryptographic suite designers MUST use mandatory proof value properties defined in Section 2.1 Proofs, and MAY define other properties specific to their cryptographic suite.", - "link": "https://w3c.github.io/vc-data-integrity/#add-proof:~:text=MUST%20use%20mandatory%20proof%20value%20properties%20defined", - "cells": [ + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=A%20verification%20method%20is%20the%20means%20and%20information%20needed%20to%20verify%20the%20proof.%20If%20included%2C%20the%20value%20MUST%20be%20a%20string%20that%20maps%20to%20a%20%5BURL%5D.", + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 10087, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 1, + "state": "passed", + "speed": "fast" + }, { "type": "test", - "title": "Cryptographic suite designers MUST use mandatory proof value properties defined in Section 2.1 Proofs, and MAY define other properties specific to their cryptographic suite.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#add-proof:~:text=MUST%20use%20mandatory%20proof%20value%20properties%20defined';\n for(const proof of proofs) {\n shouldBeProof({proof});\n }\n }", + "title": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL].", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=A%20verification%20method%20is%20the%20means%20and%20information%20needed%20to%20verify%20the%20proof.%20If%20included%2C%20the%20value%20MUST%20be%20a%20string%20that%20maps%20to%20a%20%5BURL%5D.';\n for(const proof of proofs) {\n if(!data || !data?.['@context']) {\n throw new Error(`Expected ${vendorName} to issue a VC.`);\n }\n await shouldMapToUrl({\n doc: {\n '@context': data['@context'],\n ...proof\n },\n term: 'https://w3id.org/security#verificationMethod',\n prop: '@id',\n documentLoader\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -8084,21 +8012,21 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Q-Y1cYh4G8cDll4bwtBlR", + "parent": "qmgk3hHclzYw9jf2QjmPc", "ctx": null, - "_testId": "urn:uuid:5976c606-bfe3-43be-bd92-f9784e996b1b", + "_testId": "urn:uuid:7799232e-bbe9-408f-a3da-3deabbdf3ba7", "cell": { - "columnId": "apicatalog.com", - "rowId": "Cryptographic suite designers MUST use mandatory proof value properties defined in Section 2.1 Proofs, and MAY define other properties specific to their cryptographic suite." + "columnId": "Trinsic", + "rowId": "A verification method is the means and information needed to verify the proof. If included, the value MUST be a string that maps to a [URL]." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#add-proof:~:text=MUST%20use%20mandatory%20proof%20value%20properties%20defined", + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=A%20verification%20method%20is%20the%20means%20and%20information%20needed%20to%20verify%20the%20proof.%20If%20included%2C%20the%20value%20MUST%20be%20a%20string%20that%20maps%20to%20a%20%5BURL%5D.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 5545, + "_idleStart": 11079, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -8106,11 +8034,17 @@ "duration": 0, "state": "passed", "speed": "fast" - }, + } + ] + }, + { + "id": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL.", + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20reason%20the%20proof%20was%20created%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL", + "cells": [ { "type": "test", - "title": "Cryptographic suite designers MUST use mandatory proof value properties defined in Section 2.1 Proofs, and MAY define other properties specific to their cryptographic suite.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#add-proof:~:text=MUST%20use%20mandatory%20proof%20value%20properties%20defined';\n for(const proof of proofs) {\n shouldBeProof({proof});\n }\n }", + "title": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20reason%20the%20proof%20was%20created%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL';\n for(const proof of proofs) {\n proof.should.have.property('proofPurpose');\n proof.proofPurpose.should.be.a('string');\n await shouldMapToUrl({\n doc: {\n '@context': data['@context'],\n ...proof\n },\n term: 'https://w3id.org/security#proofPurpose',\n prop: '@id',\n documentLoader\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -8120,33 +8054,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "inrDQx7FuP3tRBmfKO9Ff", + "parent": "yxhpYILOcqbki3FDec94S", "ctx": null, - "_testId": "urn:uuid:e4b9bafd-1c1b-408d-8197-fa9974cdc5d2", + "_testId": "urn:uuid:52945fee-5cb7-4369-bc84-9aeeccb1b3ce", "cell": { - "columnId": "Danube Tech", - "rowId": "Cryptographic suite designers MUST use mandatory proof value properties defined in Section 2.1 Proofs, and MAY define other properties specific to their cryptographic suite." + "columnId": "apicatalog.com", + "rowId": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#add-proof:~:text=MUST%20use%20mandatory%20proof%20value%20properties%20defined", + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20reason%20the%20proof%20was%20created%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 6444, + "_idleStart": 6187, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 1, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "Cryptographic suite designers MUST use mandatory proof value properties defined in Section 2.1 Proofs, and MAY define other properties specific to their cryptographic suite.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#add-proof:~:text=MUST%20use%20mandatory%20proof%20value%20properties%20defined';\n for(const proof of proofs) {\n shouldBeProof({proof});\n }\n }", + "title": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20reason%20the%20proof%20was%20created%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL';\n for(const proof of proofs) {\n proof.should.have.property('proofPurpose');\n proof.proofPurpose.should.be.a('string');\n await shouldMapToUrl({\n doc: {\n '@context': data['@context'],\n ...proof\n },\n term: 'https://w3id.org/security#proofPurpose',\n prop: '@id',\n documentLoader\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -8156,33 +8090,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "rrzz3mWjDHnKXxRkUzYAu", + "parent": "QHK1IypTjZvkcHZsBOX_g", "ctx": null, - "_testId": "urn:uuid:9190db1b-5c97-4634-af8d-78fd067b48df", + "_testId": "urn:uuid:05157cdc-78fc-459e-9c1a-7da32758334e", "cell": { - "columnId": "Digital Bazaar", - "rowId": "Cryptographic suite designers MUST use mandatory proof value properties defined in Section 2.1 Proofs, and MAY define other properties specific to their cryptographic suite." + "columnId": "Danube Tech", + "rowId": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#add-proof:~:text=MUST%20use%20mandatory%20proof%20value%20properties%20defined", + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20reason%20the%20proof%20was%20created%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7769, + "_idleStart": 7013, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 1, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "Cryptographic suite designers MUST use mandatory proof value properties defined in Section 2.1 Proofs, and MAY define other properties specific to their cryptographic suite.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#add-proof:~:text=MUST%20use%20mandatory%20proof%20value%20properties%20defined';\n for(const proof of proofs) {\n shouldBeProof({proof});\n }\n }", + "title": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20reason%20the%20proof%20was%20created%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL';\n for(const proof of proofs) {\n proof.should.have.property('proofPurpose');\n proof.proofPurpose.should.be.a('string');\n await shouldMapToUrl({\n doc: {\n '@context': data['@context'],\n ...proof\n },\n term: 'https://w3id.org/security#proofPurpose',\n prop: '@id',\n documentLoader\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -8192,39 +8126,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Njo-kHgHfWhU47zHweHTV", + "parent": "3oybt7im9lmDGUjG_T3ge", "ctx": null, - "_testId": "urn:uuid:c6cc624d-0f13-4ee2-a27b-7a95f656a827", + "_testId": "urn:uuid:aff2325d-de78-47ad-846f-fcae614c9ace", "cell": { - "columnId": "EWF", - "rowId": "Cryptographic suite designers MUST use mandatory proof value properties defined in Section 2.1 Proofs, and MAY define other properties specific to their cryptographic suite." + "columnId": "Digital Bazaar", + "rowId": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#add-proof:~:text=MUST%20use%20mandatory%20proof%20value%20properties%20defined", + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20reason%20the%20proof%20was%20created%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 8882, + "_idleStart": 8513, "_onTimeout": null, "_repeat": null, "_destroyed": true }, "duration": 1, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected \"proof.proofValue\" to exist.: expected undefined to exist", - "showDiff": false, - "operator": "strictEqual", - "stack": "AssertionError: Expected \"proof.proofValue\" to exist.: expected undefined to exist\n at should.exist (node_modules/chai/lib/chai/interface/should.js:144:34)\n at shouldBeProof (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:206:10)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:235:9)\n at process.processImmediate (node:internal/timers:483:21)" - } + "state": "passed", + "speed": "fast" }, { "type": "test", - "title": "Cryptographic suite designers MUST use mandatory proof value properties defined in Section 2.1 Proofs, and MAY define other properties specific to their cryptographic suite.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#add-proof:~:text=MUST%20use%20mandatory%20proof%20value%20properties%20defined';\n for(const proof of proofs) {\n shouldBeProof({proof});\n }\n }", + "title": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20reason%20the%20proof%20was%20created%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL';\n for(const proof of proofs) {\n proof.should.have.property('proofPurpose');\n proof.proofPurpose.should.be.a('string');\n await shouldMapToUrl({\n doc: {\n '@context': data['@context'],\n ...proof\n },\n term: 'https://w3id.org/security#proofPurpose',\n prop: '@id',\n documentLoader\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -8234,21 +8162,21 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "FsVwMDitvb4cbtnFdkm_k", + "parent": "tikRDf1hNC-fQs8dM6EPO", "ctx": null, - "_testId": "urn:uuid:d2749685-df4a-46ed-b222-ba69d37a2e3c", + "_testId": "urn:uuid:e591834d-2993-47c0-b95d-c54a2d676eb1", "cell": { - "columnId": "LearnCard", - "rowId": "Cryptographic suite designers MUST use mandatory proof value properties defined in Section 2.1 Proofs, and MAY define other properties specific to their cryptographic suite." + "columnId": "EWF", + "rowId": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#add-proof:~:text=MUST%20use%20mandatory%20proof%20value%20properties%20defined", + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20reason%20the%20proof%20was%20created%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9238, + "_idleStart": 9204, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -8257,20 +8185,10 @@ "state": "passed", "speed": "fast" }, - { - "cell": { - "rowId": "Cryptographic suite designers MUST use mandatory proof value properties defined in Section 2.1 Proofs, and MAY define other properties specific to their cryptographic suite.", - "colId": "OpSecId" - }, - "state": "pending", - "err": { - "message": "Test skipped." - } - }, { "type": "test", - "title": "Cryptographic suite designers MUST use mandatory proof value properties defined in Section 2.1 Proofs, and MAY define other properties specific to their cryptographic suite.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#add-proof:~:text=MUST%20use%20mandatory%20proof%20value%20properties%20defined';\n for(const proof of proofs) {\n shouldBeProof({proof});\n }\n }", + "title": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20reason%20the%20proof%20was%20created%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL';\n for(const proof of proofs) {\n proof.should.have.property('proofPurpose');\n proof.proofPurpose.should.be.a('string');\n await shouldMapToUrl({\n doc: {\n '@context': data['@context'],\n ...proof\n },\n term: 'https://w3id.org/security#proofPurpose',\n prop: '@id',\n documentLoader\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -8280,33 +8198,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "gOLKDdlOgm5o-DegeI1Ps", + "parent": "3UTW-_LttILA3ILQtGZo2", "ctx": null, - "_testId": "urn:uuid:6c712d44-8f99-479e-9825-b06ce2d82bca", + "_testId": "urn:uuid:cd166796-6d77-4a34-9ea9-6efe81d50e5f", "cell": { - "columnId": "SpruceID", - "rowId": "Cryptographic suite designers MUST use mandatory proof value properties defined in Section 2.1 Proofs, and MAY define other properties specific to their cryptographic suite." + "columnId": "LearnCard", + "rowId": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#add-proof:~:text=MUST%20use%20mandatory%20proof%20value%20properties%20defined", + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20reason%20the%20proof%20was%20created%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9566, + "_idleStart": 9645, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 1, + "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "Cryptographic suite designers MUST use mandatory proof value properties defined in Section 2.1 Proofs, and MAY define other properties specific to their cryptographic suite.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#add-proof:~:text=MUST%20use%20mandatory%20proof%20value%20properties%20defined';\n for(const proof of proofs) {\n shouldBeProof({proof});\n }\n }", + "title": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20reason%20the%20proof%20was%20created%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL';\n for(const proof of proofs) {\n proof.should.have.property('proofPurpose');\n proof.proofPurpose.should.be.a('string');\n await shouldMapToUrl({\n doc: {\n '@context': data['@context'],\n ...proof\n },\n term: 'https://w3id.org/security#proofPurpose',\n prop: '@id',\n documentLoader\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -8316,39 +8234,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "RZteP052VeaXIQkX5MUvo", + "parent": "V3app5v08kK3UQYixBWWE", "ctx": null, - "_testId": "urn:uuid:addac7d1-6e60-474f-9020-b009dfa881a4", + "_testId": "urn:uuid:dda7c50e-ca42-4089-b2f9-b14d2e217732", "cell": { - "columnId": "Trinsic", - "rowId": "Cryptographic suite designers MUST use mandatory proof value properties defined in Section 2.1 Proofs, and MAY define other properties specific to their cryptographic suite." + "columnId": "OpSecId", + "rowId": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#add-proof:~:text=MUST%20use%20mandatory%20proof%20value%20properties%20defined", + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20reason%20the%20proof%20was%20created%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10170, + "_idleStart": 9954, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 1, "state": "passed", "speed": "fast" - } - ] - }, - { - "id": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document.", - "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.", - "cells": [ + }, { "type": "test", - "title": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.';\n const undefinedType = structuredClone(credential);\n undefinedType.type.push('InvalidType');\n await shouldFailIssuance({\n credential: undefinedType,\n issuer,\n reason: 'Expected issuer to error when VC has an undefined type.'\n });\n const undefinedTerm = structuredClone(credential);\n undefinedTerm.credentialSubject.invalidTerm = 'invalidTerm';\n await shouldFailIssuance({\n credential: undefinedTerm,\n issuer,\n reason: 'Expected issuer to error when VC has an undefined term.'\n });\n }", + "title": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20reason%20the%20proof%20was%20created%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL';\n for(const proof of proofs) {\n proof.should.have.property('proofPurpose');\n proof.proofPurpose.should.be.a('string');\n await shouldMapToUrl({\n doc: {\n '@context': data['@context'],\n ...proof\n },\n term: 'https://w3id.org/security#proofPurpose',\n prop: '@id',\n documentLoader\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -8358,40 +8270,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Q-Y1cYh4G8cDll4bwtBlR", + "parent": "pJvzjaJb0oGOCZ6Fp689R", "ctx": null, - "_testId": "urn:uuid:3cfb7fe7-5064-4644-8110-5f9ff069d5f4", + "_testId": "urn:uuid:6a13d279-e696-47d0-a72e-dd1d05f4544b", "cell": { - "columnId": "apicatalog.com", - "rowId": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document." + "columnId": "SpruceID", + "rowId": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.", + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20reason%20the%20proof%20was%20created%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 5545, + "_idleStart": 10088, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 124, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected issuer to error when VC has an undefined type.: expected Response { status: 201, statusText: 'Created', headers: Headers { 'content-type': 'application/ld+json', 'x-cloud-trace-context': '71d6eda8a8928408b848cca9d858f744', date: 'Sun, 25 Aug 2024 05:01:38 GMT', server: 'Google Frontend', 'content-length': '745', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist", - "showDiff": false, - "actual": {}, - "operator": "notStrictEqual", - "stack": "AssertionError: Expected issuer to error when VC has an undefined type.: expected Response { status: 201, statusText: 'Created', headers: Headers { 'content-type': 'application/ld+json', 'x-cloud-trace-context': '71d6eda8a8928408b848cca9d858f744', date: 'Sun, 25 Aug 2024 05:01:38 GMT', server: 'Google Frontend', 'content-length': '745', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at shouldFailIssuance (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:71:14)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:246:7)" - } + "duration": 1, + "state": "passed", + "speed": "fast" }, { "type": "test", - "title": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.';\n const undefinedType = structuredClone(credential);\n undefinedType.type.push('InvalidType');\n await shouldFailIssuance({\n credential: undefinedType,\n issuer,\n reason: 'Expected issuer to error when VC has an undefined type.'\n });\n const undefinedTerm = structuredClone(credential);\n undefinedTerm.credentialSubject.invalidTerm = 'invalidTerm';\n await shouldFailIssuance({\n credential: undefinedTerm,\n issuer,\n reason: 'Expected issuer to error when VC has an undefined term.'\n });\n }", + "title": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20reason%20the%20proof%20was%20created%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL';\n for(const proof of proofs) {\n proof.should.have.property('proofPurpose');\n proof.proofPurpose.should.be.a('string');\n await shouldMapToUrl({\n doc: {\n '@context': data['@context'],\n ...proof\n },\n term: 'https://w3id.org/security#proofPurpose',\n prop: '@id',\n documentLoader\n });\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -8401,33 +8306,39 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "inrDQx7FuP3tRBmfKO9Ff", + "parent": "qmgk3hHclzYw9jf2QjmPc", "ctx": null, - "_testId": "urn:uuid:a3737447-48cd-444e-83a9-90cfc73775e3", + "_testId": "urn:uuid:749f7997-2030-4a18-a682-1d827d85b06d", "cell": { - "columnId": "Danube Tech", - "rowId": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document." + "columnId": "Trinsic", + "rowId": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.", + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20reason%20the%20proof%20was%20created%20MUST%20be%20specified%20as%20a%20string%20that%20maps%20to%20a%20URL", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 6445, + "_idleStart": 11080, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 638, + "duration": 1, "state": "passed", - "speed": "slow" - }, + "speed": "fast" + } + ] + }, + { + "id": "(\"proof.proofValue\") A string value that expresses base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The value MUST use a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification to express the binary data.", + "link": "https://w3c.github.io/vc-data-integrity/#:~:text=A%20string%20value%20that%20expresses%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof%20using%20the%20verificationMethod%20specified.%20The%20value%20MUST%20use%20a%20header%20and%20encoding%20as%20described%20in%20Section%202.4%20Multibase%20of%20the%20Controller%20Documents%201.0%20specification%20to%20express%20the%20binary%20data.", + "cells": [ { "type": "test", - "title": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.';\n const undefinedType = structuredClone(credential);\n undefinedType.type.push('InvalidType');\n await shouldFailIssuance({\n credential: undefinedType,\n issuer,\n reason: 'Expected issuer to error when VC has an undefined type.'\n });\n const undefinedTerm = structuredClone(credential);\n undefinedTerm.credentialSubject.invalidTerm = 'invalidTerm';\n await shouldFailIssuance({\n credential: undefinedTerm,\n issuer,\n reason: 'Expected issuer to error when VC has an undefined term.'\n });\n }", + "title": "(\"proof.proofValue\") A string value that expresses base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The value MUST use a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification to express the binary data.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#:~:text=A%20string%20value%20that%20expresses%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof%20using%20the%20verificationMethod%20specified.%20The%20value%20MUST%20use%20a%20header%20and%20encoding%20as%20described%20in%20Section%202.4%20Multibase%20of%20the%20Controller%20Documents%201.0%20specification%20to%20express%20the%20binary%20data.';\n for(const proof of proofs) {\n should.exist(proof, 'Expected proof to exist.');\n //FIXME the suite should pass in the expectedPrefix and\n //encodingName or type\n const {\n prefix: expectedPrefix,\n name: encodingName\n } = expectedMultibasePrefix(proof.cryptosuite);\n shouldHaveProofValue({proof, expectedPrefix, encodingName});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -8437,33 +8348,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "rrzz3mWjDHnKXxRkUzYAu", + "parent": "yxhpYILOcqbki3FDec94S", "ctx": null, - "_testId": "urn:uuid:f32efced-78ae-48eb-aaf0-5a3360f29b52", + "_testId": "urn:uuid:1df282c4-46ae-4ce4-9d96-a03ba336ab17", "cell": { - "columnId": "Digital Bazaar", - "rowId": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document." + "columnId": "apicatalog.com", + "rowId": "(\"proof.proofValue\") A string value that expresses base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The value MUST use a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification to express the binary data." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.", - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 7770, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 477, + "link": "https://w3c.github.io/vc-data-integrity/#:~:text=A%20string%20value%20that%20expresses%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof%20using%20the%20verificationMethod%20specified.%20The%20value%20MUST%20use%20a%20header%20and%20encoding%20as%20described%20in%20Section%202.4%20Multibase%20of%20the%20Controller%20Documents%201.0%20specification%20to%20express%20the%20binary%20data.", + "duration": 0, "state": "passed", - "speed": "slow" + "speed": "fast" }, { "type": "test", - "title": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.';\n const undefinedType = structuredClone(credential);\n undefinedType.type.push('InvalidType');\n await shouldFailIssuance({\n credential: undefinedType,\n issuer,\n reason: 'Expected issuer to error when VC has an undefined type.'\n });\n const undefinedTerm = structuredClone(credential);\n undefinedTerm.credentialSubject.invalidTerm = 'invalidTerm';\n await shouldFailIssuance({\n credential: undefinedTerm,\n issuer,\n reason: 'Expected issuer to error when VC has an undefined term.'\n });\n }", + "title": "(\"proof.proofValue\") A string value that expresses base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The value MUST use a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification to express the binary data.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#:~:text=A%20string%20value%20that%20expresses%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof%20using%20the%20verificationMethod%20specified.%20The%20value%20MUST%20use%20a%20header%20and%20encoding%20as%20described%20in%20Section%202.4%20Multibase%20of%20the%20Controller%20Documents%201.0%20specification%20to%20express%20the%20binary%20data.';\n for(const proof of proofs) {\n should.exist(proof, 'Expected proof to exist.');\n //FIXME the suite should pass in the expectedPrefix and\n //encodingName or type\n const {\n prefix: expectedPrefix,\n name: encodingName\n } = expectedMultibasePrefix(proof.cryptosuite);\n shouldHaveProofValue({proof, expectedPrefix, encodingName});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -8473,40 +8375,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Njo-kHgHfWhU47zHweHTV", + "parent": "QHK1IypTjZvkcHZsBOX_g", "ctx": null, - "_testId": "urn:uuid:89d25541-34b9-4f60-bc40-cd965ba09bf9", + "_testId": "urn:uuid:8c8271f2-a827-48b6-ba31-4971cef9ba1a", "cell": { - "columnId": "EWF", - "rowId": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document." + "columnId": "Danube Tech", + "rowId": "(\"proof.proofValue\") A string value that expresses base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The value MUST use a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification to express the binary data." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.", - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 8882, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 99, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected issuer to error when VC has an undefined type.: expected Response { status: 201, statusText: 'Created', headers: Headers { date: 'Sun, 25 Aug 2024 05:01:42 GMT', 'content-type': 'application/json; charset=utf-8', 'content-length': '742', connection: 'keep-alive', 'x-powered-by': 'Express', vary: 'Origin', etag: 'W/\"2e6-8sRIl1nTTSg3azeBFW45WsljG+M\"', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist", - "showDiff": false, - "actual": {}, - "operator": "notStrictEqual", - "stack": "AssertionError: Expected issuer to error when VC has an undefined type.: expected Response { status: 201, statusText: 'Created', headers: Headers { date: 'Sun, 25 Aug 2024 05:01:42 GMT', 'content-type': 'application/json; charset=utf-8', 'content-length': '742', connection: 'keep-alive', 'x-powered-by': 'Express', vary: 'Origin', etag: 'W/\"2e6-8sRIl1nTTSg3azeBFW45WsljG+M\"', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at shouldFailIssuance (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:71:14)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:246:7)" - } + "link": "https://w3c.github.io/vc-data-integrity/#:~:text=A%20string%20value%20that%20expresses%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof%20using%20the%20verificationMethod%20specified.%20The%20value%20MUST%20use%20a%20header%20and%20encoding%20as%20described%20in%20Section%202.4%20Multibase%20of%20the%20Controller%20Documents%201.0%20specification%20to%20express%20the%20binary%20data.", + "duration": 0, + "state": "passed", + "speed": "fast" }, { "type": "test", - "title": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.';\n const undefinedType = structuredClone(credential);\n undefinedType.type.push('InvalidType');\n await shouldFailIssuance({\n credential: undefinedType,\n issuer,\n reason: 'Expected issuer to error when VC has an undefined type.'\n });\n const undefinedTerm = structuredClone(credential);\n undefinedTerm.credentialSubject.invalidTerm = 'invalidTerm';\n await shouldFailIssuance({\n credential: undefinedTerm,\n issuer,\n reason: 'Expected issuer to error when VC has an undefined term.'\n });\n }", + "title": "(\"proof.proofValue\") A string value that expresses base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The value MUST use a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification to express the binary data.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#:~:text=A%20string%20value%20that%20expresses%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof%20using%20the%20verificationMethod%20specified.%20The%20value%20MUST%20use%20a%20header%20and%20encoding%20as%20described%20in%20Section%202.4%20Multibase%20of%20the%20Controller%20Documents%201.0%20specification%20to%20express%20the%20binary%20data.';\n for(const proof of proofs) {\n should.exist(proof, 'Expected proof to exist.');\n //FIXME the suite should pass in the expectedPrefix and\n //encodingName or type\n const {\n prefix: expectedPrefix,\n name: encodingName\n } = expectedMultibasePrefix(proof.cryptosuite);\n shouldHaveProofValue({proof, expectedPrefix, encodingName});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -8516,50 +8402,57 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "FsVwMDitvb4cbtnFdkm_k", + "parent": "3oybt7im9lmDGUjG_T3ge", "ctx": null, - "_testId": "urn:uuid:715a14ef-a93e-4559-8d1c-7deaf1456360", + "_testId": "urn:uuid:a586d94b-e422-4898-8554-8df57400c87e", "cell": { - "columnId": "LearnCard", - "rowId": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document." + "columnId": "Digital Bazaar", + "rowId": "(\"proof.proofValue\") A string value that expresses base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The value MUST use a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification to express the binary data." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.", - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 9238, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 83, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected issuer to error when VC has an undefined type.: expected Response { status: 201, statusText: 'Created', headers: Headers { date: 'Sun, 25 Aug 2024 05:01:42 GMT', 'content-type': 'application/json; charset=utf-8', 'content-length': '757', connection: 'keep-alive', etag: 'W/\"2f5-6ffEum/jkWv5eo1N1f6p3YMCxQQ\"', 'x-powered-by': 'Express', 'apigw-requestid': 'dDIcih6NIAMEPfQ=', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist", - "showDiff": false, - "actual": {}, - "operator": "notStrictEqual", - "stack": "AssertionError: Expected issuer to error when VC has an undefined type.: expected Response { status: 201, statusText: 'Created', headers: Headers { date: 'Sun, 25 Aug 2024 05:01:42 GMT', 'content-type': 'application/json; charset=utf-8', 'content-length': '757', connection: 'keep-alive', etag: 'W/\"2f5-6ffEum/jkWv5eo1N1f6p3YMCxQQ\"', 'x-powered-by': 'Express', 'apigw-requestid': 'dDIcih6NIAMEPfQ=', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at shouldFailIssuance (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:71:14)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:246:7)" - } + "link": "https://w3c.github.io/vc-data-integrity/#:~:text=A%20string%20value%20that%20expresses%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof%20using%20the%20verificationMethod%20specified.%20The%20value%20MUST%20use%20a%20header%20and%20encoding%20as%20described%20in%20Section%202.4%20Multibase%20of%20the%20Controller%20Documents%201.0%20specification%20to%20express%20the%20binary%20data.", + "duration": 0, + "state": "passed", + "speed": "fast" }, { + "type": "test", + "title": "(\"proof.proofValue\") A string value that expresses base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The value MUST use a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification to express the binary data.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#:~:text=A%20string%20value%20that%20expresses%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof%20using%20the%20verificationMethod%20specified.%20The%20value%20MUST%20use%20a%20header%20and%20encoding%20as%20described%20in%20Section%202.4%20Multibase%20of%20the%20Controller%20Documents%201.0%20specification%20to%20express%20the%20binary%20data.';\n for(const proof of proofs) {\n should.exist(proof, 'Expected proof to exist.');\n //FIXME the suite should pass in the expectedPrefix and\n //encodingName or type\n const {\n prefix: expectedPrefix,\n name: encodingName\n } = expectedMultibasePrefix(proof.cryptosuite);\n shouldHaveProofValue({proof, expectedPrefix, encodingName});\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "parent": "tikRDf1hNC-fQs8dM6EPO", + "ctx": null, + "_testId": "urn:uuid:755e2de1-f459-4acf-8846-8fbd3079988d", "cell": { - "rowId": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document.", - "colId": "OpSecId" + "columnId": "EWF", + "rowId": "(\"proof.proofValue\") A string value that expresses base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The value MUST use a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification to express the binary data." }, - "state": "pending", + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#:~:text=A%20string%20value%20that%20expresses%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof%20using%20the%20verificationMethod%20specified.%20The%20value%20MUST%20use%20a%20header%20and%20encoding%20as%20described%20in%20Section%202.4%20Multibase%20of%20the%20Controller%20Documents%201.0%20specification%20to%20express%20the%20binary%20data.", + "duration": 0, + "state": "failed", "err": { - "message": "Test skipped." + "name": "AssertionError", + "message": "Expected proofValue to exist.: expected undefined to exist", + "showDiff": false, + "operator": "strictEqual", + "stack": "AssertionError: Expected proofValue to exist.: expected undefined to exist\n at should.exist (node_modules/chai/lib/chai/interface/should.js:144:34)\n at shouldHaveProofValue (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:260:10)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:221:9)\n at process.processImmediate (node:internal/timers:483:21)" } }, { "type": "test", - "title": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.';\n const undefinedType = structuredClone(credential);\n undefinedType.type.push('InvalidType');\n await shouldFailIssuance({\n credential: undefinedType,\n issuer,\n reason: 'Expected issuer to error when VC has an undefined type.'\n });\n const undefinedTerm = structuredClone(credential);\n undefinedTerm.credentialSubject.invalidTerm = 'invalidTerm';\n await shouldFailIssuance({\n credential: undefinedTerm,\n issuer,\n reason: 'Expected issuer to error when VC has an undefined term.'\n });\n }", + "title": "(\"proof.proofValue\") A string value that expresses base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The value MUST use a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification to express the binary data.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#:~:text=A%20string%20value%20that%20expresses%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof%20using%20the%20verificationMethod%20specified.%20The%20value%20MUST%20use%20a%20header%20and%20encoding%20as%20described%20in%20Section%202.4%20Multibase%20of%20the%20Controller%20Documents%201.0%20specification%20to%20express%20the%20binary%20data.';\n for(const proof of proofs) {\n should.exist(proof, 'Expected proof to exist.');\n //FIXME the suite should pass in the expectedPrefix and\n //encodingName or type\n const {\n prefix: expectedPrefix,\n name: encodingName\n } = expectedMultibasePrefix(proof.cryptosuite);\n shouldHaveProofValue({proof, expectedPrefix, encodingName});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -8569,33 +8462,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "gOLKDdlOgm5o-DegeI1Ps", + "parent": "3UTW-_LttILA3ILQtGZo2", "ctx": null, - "_testId": "urn:uuid:ea71c61c-27f4-495c-ac5b-c5fd46a34753", + "_testId": "urn:uuid:dd0db2e8-5b40-47ff-aa3c-e28fd00c66eb", "cell": { - "columnId": "SpruceID", - "rowId": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document." + "columnId": "LearnCard", + "rowId": "(\"proof.proofValue\") A string value that expresses base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The value MUST use a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification to express the binary data." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.", - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 9566, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 87, + "link": "https://w3c.github.io/vc-data-integrity/#:~:text=A%20string%20value%20that%20expresses%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof%20using%20the%20verificationMethod%20specified.%20The%20value%20MUST%20use%20a%20header%20and%20encoding%20as%20described%20in%20Section%202.4%20Multibase%20of%20the%20Controller%20Documents%201.0%20specification%20to%20express%20the%20binary%20data.", + "duration": 0, "state": "passed", - "speed": "slow" + "speed": "fast" }, { "type": "test", - "title": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.';\n const undefinedType = structuredClone(credential);\n undefinedType.type.push('InvalidType');\n await shouldFailIssuance({\n credential: undefinedType,\n issuer,\n reason: 'Expected issuer to error when VC has an undefined type.'\n });\n const undefinedTerm = structuredClone(credential);\n undefinedTerm.credentialSubject.invalidTerm = 'invalidTerm';\n await shouldFailIssuance({\n credential: undefinedTerm,\n issuer,\n reason: 'Expected issuer to error when VC has an undefined term.'\n });\n }", + "title": "(\"proof.proofValue\") A string value that expresses base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The value MUST use a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification to express the binary data.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#:~:text=A%20string%20value%20that%20expresses%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof%20using%20the%20verificationMethod%20specified.%20The%20value%20MUST%20use%20a%20header%20and%20encoding%20as%20described%20in%20Section%202.4%20Multibase%20of%20the%20Controller%20Documents%201.0%20specification%20to%20express%20the%20binary%20data.';\n for(const proof of proofs) {\n should.exist(proof, 'Expected proof to exist.');\n //FIXME the suite should pass in the expectedPrefix and\n //encodingName or type\n const {\n prefix: expectedPrefix,\n name: encodingName\n } = expectedMultibasePrefix(proof.cryptosuite);\n shouldHaveProofValue({proof, expectedPrefix, encodingName});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -8605,46 +8489,83 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "RZteP052VeaXIQkX5MUvo", + "parent": "V3app5v08kK3UQYixBWWE", "ctx": null, - "_testId": "urn:uuid:da5ac357-d53e-48a6-9c28-42b830189f6e", + "_testId": "urn:uuid:cd547d99-c021-402a-ab13-e748b2a8d755", "cell": { - "columnId": "Trinsic", - "rowId": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document." + "columnId": "OpSecId", + "rowId": "(\"proof.proofValue\") A string value that expresses base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The value MUST use a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification to express the binary data." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.", - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 10170, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true + "link": "https://w3c.github.io/vc-data-integrity/#:~:text=A%20string%20value%20that%20expresses%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof%20using%20the%20verificationMethod%20specified.%20The%20value%20MUST%20use%20a%20header%20and%20encoding%20as%20described%20in%20Section%202.4%20Multibase%20of%20the%20Controller%20Documents%201.0%20specification%20to%20express%20the%20binary%20data.", + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "(\"proof.proofValue\") A string value that expresses base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The value MUST use a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification to express the binary data.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#:~:text=A%20string%20value%20that%20expresses%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof%20using%20the%20verificationMethod%20specified.%20The%20value%20MUST%20use%20a%20header%20and%20encoding%20as%20described%20in%20Section%202.4%20Multibase%20of%20the%20Controller%20Documents%201.0%20specification%20to%20express%20the%20binary%20data.';\n for(const proof of proofs) {\n should.exist(proof, 'Expected proof to exist.');\n //FIXME the suite should pass in the expectedPrefix and\n //encodingName or type\n const {\n prefix: expectedPrefix,\n name: encodingName\n } = expectedMultibasePrefix(proof.cryptosuite);\n shouldHaveProofValue({proof, expectedPrefix, encodingName});\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "parent": "pJvzjaJb0oGOCZ6Fp689R", + "ctx": null, + "_testId": "urn:uuid:91ae1b1f-7928-4bb0-8bdf-0ca6023955a2", + "cell": { + "columnId": "SpruceID", + "rowId": "(\"proof.proofValue\") A string value that expresses base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The value MUST use a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification to express the binary data." }, - "duration": 115, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected issuer to error when VC has an undefined type.: expected Response { status: 200, statusText: 'OK', headers: Headers { date: 'Sun, 25 Aug 2024 05:01:43 GMT', 'content-type': 'text/html; charset=utf-8', 'transfer-encoding': 'chunked', connection: 'keep-alive', 'cache-control': 'no-cache,no-store', expires: '-1', pragma: 'no-cache', 'x-envoy-upstream-service-time': '96', 'cf-cache-status': 'DYNAMIC', 'report-to': '{\"endpoints\":[{\"url\":\"https:\\\\/\\\\/a.nel.cloudflare.com\\\\/report\\\\/v4?s=TpxXtTFkI63v%2Bx8JNSIM15l2jI8JHDqVYGBjFOPWQ7QpdnUlz6mgEElTPZy6UPjSGdEoSe6WOAzeGXH3H099hfMXRgg3zfVRYdpugLWSc6hsYZ0sxvx4lABjqnqCvwsJPXKFcX9KSOaeniMzdQGk\"}],\"group\":\"cf-nel\",\"max_age\":604800}', nel: '{\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}', server: 'cloudflare', 'cf-ray': '8b8906999a919c42-IAD', 'content-encoding': 'br', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: null, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist", - "showDiff": false, - "actual": {}, - "operator": "notStrictEqual", - "stack": "AssertionError: Expected issuer to error when VC has an undefined type.: expected Response { status: 200, statusText: 'OK', headers: Headers { date: 'Sun, 25 Aug 2024 05:01:43 GMT', 'content-type': 'text/html; charset=utf-8', 'transfer-encoding': 'chunked', connection: 'keep-alive', 'cache-control': 'no-cache,no-store', expires: '-1', pragma: 'no-cache', 'x-envoy-upstream-service-time': '96', 'cf-cache-status': 'DYNAMIC', 'report-to': '{\"endpoints\":[{\"url\":\"https:\\\\/\\\\/a.nel.cloudflare.com\\\\/report\\\\/v4?s=TpxXtTFkI63v%2Bx8JNSIM15l2jI8JHDqVYGBjFOPWQ7QpdnUlz6mgEElTPZy6UPjSGdEoSe6WOAzeGXH3H099hfMXRgg3zfVRYdpugLWSc6hsYZ0sxvx4lABjqnqCvwsJPXKFcX9KSOaeniMzdQGk\"}],\"group\":\"cf-nel\",\"max_age\":604800}', nel: '{\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}', server: 'cloudflare', 'cf-ray': '8b8906999a919c42-IAD', 'content-encoding': 'br', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: null, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at shouldFailIssuance (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:71:14)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:246:7)" - } + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#:~:text=A%20string%20value%20that%20expresses%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof%20using%20the%20verificationMethod%20specified.%20The%20value%20MUST%20use%20a%20header%20and%20encoding%20as%20described%20in%20Section%202.4%20Multibase%20of%20the%20Controller%20Documents%201.0%20specification%20to%20express%20the%20binary%20data.", + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "(\"proof.proofValue\") A string value that expresses base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The value MUST use a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification to express the binary data.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#:~:text=A%20string%20value%20that%20expresses%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof%20using%20the%20verificationMethod%20specified.%20The%20value%20MUST%20use%20a%20header%20and%20encoding%20as%20described%20in%20Section%202.4%20Multibase%20of%20the%20Controller%20Documents%201.0%20specification%20to%20express%20the%20binary%20data.';\n for(const proof of proofs) {\n should.exist(proof, 'Expected proof to exist.');\n //FIXME the suite should pass in the expectedPrefix and\n //encodingName or type\n const {\n prefix: expectedPrefix,\n name: encodingName\n } = expectedMultibasePrefix(proof.cryptosuite);\n shouldHaveProofValue({proof, expectedPrefix, encodingName});\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "parent": "qmgk3hHclzYw9jf2QjmPc", + "ctx": null, + "_testId": "urn:uuid:ebcaabb2-0dbf-45e6-89b6-7ff57a8787fd", + "cell": { + "columnId": "Trinsic", + "rowId": "(\"proof.proofValue\") A string value that expresses base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The value MUST use a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification to express the binary data." + }, + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#:~:text=A%20string%20value%20that%20expresses%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof%20using%20the%20verificationMethod%20specified.%20The%20value%20MUST%20use%20a%20header%20and%20encoding%20as%20described%20in%20Section%202.4%20Multibase%20of%20the%20Controller%20Documents%201.0%20specification%20to%20express%20the%20binary%20data.", + "duration": 0, + "state": "passed", + "speed": "fast" } ] }, { - "id": "When an application is securing a document, if an @context property is not provided in the document or the Data Integrity terms used in the document are not mapped by existing values in the @context property, implementations SHOULD inject or append an @context property with a value of https://w3id.org/security/data-integrity/v2 or one or more contexts with at least the same declarations, such as the Verifiable Credential Data Model v2.0 context (https://www.w3.org/ns/credentials/v2).", - "link": "https://w3c.github.io/vc-data-integrity/#context-injection:~:text=if%20an%20%40context%20property%20is%20not%20provided%20in%20the%20document%20or%20the%20Data%20Integrity%20terms%20used%20in%20the%20document%20are%20not%20mapped%20by%20existing%20values%20in%20the%20%40context%20property%2C%20implementations%20SHOULD%20inject%20or%20append", + "id": "if \"proof.previousProof\" field exists, it MUST be a string.", "cells": [ { "type": "test", - "title": "When an application is securing a document, if an @context property is not provided in the document or the Data Integrity terms used in the document are not mapped by existing values in the @context property, implementations SHOULD inject or append an @context property with a value of https://w3id.org/security/data-integrity/v2 or one or more contexts with at least the same declarations, such as the Verifiable Credential Data Model v2.0 context (https://www.w3.org/ns/credentials/v2).", - "body": "async function() {\n if(!issuer) {\n throw new Error(`Expected ${vendorName} to have an issuer.`);\n }\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#context-injection:~:text=if%20an%20%40context%20property%20is%20not%20provided%20in%20the%20document%20or%20the%20Data%20Integrity%20terms%20used%20in%20the%20document%20are%20not%20mapped%20by%20existing%20values%20in%20the%20%40context%20property%2C%20implementations%20SHOULD%20inject%20or%20append';\n if(optionalTests.contextInjection === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n const _credential = structuredClone(credential);\n const expectedContexts = [\n 'https://w3id.org/security/data-integrity/v2',\n 'https://www.w3.org/ns/credentials/v2'\n ];\n // remove the vc's context and expect context injection to occur\n delete _credential['@context'];\n let err;\n let data;\n try {\n data = await createInitialVc({issuer, credential: _credential});\n } catch(e) {\n err = e;\n }\n should.not.exist(\n err,\n `Expected issuer ${vendorName} to perform context injection on a ` +\n `VC with out an \"@context\" property`);\n should.exist(data, `Expected issuer ${vendorName} to return data.`);\n data.should.be.an('object', 'Expected response data to be an object.');\n should.exist(data['@context'],\n 'Expected data to have an injected \"@context\" property.');\n if(Array.isArray(data['@context'])) {\n const hasExpectedContext = expectedContexts.some(\n ctx => data['@context'].includes(ctx));\n return hasExpectedContext.should.equal(true,\n `Expected injected context to contain one of ${expectedContexts}`);\n }\n data['@context'].should.be.oneOf(expectedContexts);\n }", + "title": "if \"proof.previousProof\" field exists, it MUST be a string.", + "body": "function() {\n for(const proof of proofs) {\n if(proof.previousProof) {\n proof.previousProof.should.be.a('string', 'Expected ' +\n '\"proof.previousProof\" to be a string.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -8654,135 +8575,23 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Q-Y1cYh4G8cDll4bwtBlR", + "parent": "yxhpYILOcqbki3FDec94S", "ctx": null, - "_testId": "urn:uuid:39f1712b-2eea-4c9b-9440-289ae5c0a83f", + "_testId": "urn:uuid:3fe4eccd-cc23-4f54-a3ec-a5f59931edb7", "cell": { "columnId": "apicatalog.com", - "rowId": "When an application is securing a document, if an @context property is not provided in the document or the Data Integrity terms used in the document are not mapped by existing values in the @context property, implementations SHOULD inject or append an @context property with a value of https://w3id.org/security/data-integrity/v2 or one or more contexts with at least the same declarations, such as the Verifiable Credential Data Model v2.0 context (https://www.w3.org/ns/credentials/v2)." + "rowId": "if \"proof.previousProof\" field exists, it MUST be a string." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#context-injection:~:text=if%20an%20%40context%20property%20is%20not%20provided%20in%20the%20document%20or%20the%20Data%20Integrity%20terms%20used%20in%20the%20document%20are%20not%20mapped%20by%20existing%20values%20in%20the%20%40context%20property%2C%20implementations%20SHOULD%20inject%20or%20append", - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 5672, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 54, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected issuer apicatalog.com to perform context injection on a VC with out an \"@context\" property: expected HTTPError: Request failed with status cod… { …(6) } to not exist", - "showDiff": false, - "actual": { - "response": {}, - "request": {}, - "options": { - "credentials": "same-origin", - "headers": {}, - "body": "{\"credential\":{\"id\":\"urn:uuid:5b94ea23-bd69-4087-9905-5cf9e398b18e\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"}},\"options\":{}}", - "method": "POST", - "json": { - "credential": { - "id": "urn:uuid:5b94ea23-bd69-4087-9905-5cf9e398b18e", - "type": [ - "VerifiableCredential" - ], - "issuer": "https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020", - "issuanceDate": "2020-03-16T22:37:26.544Z", - "credentialSubject": { - "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" - } - }, - "options": {} - }, - "agent": { - "_events": {}, - "_eventsCount": 2, - "defaultPort": 443, - "protocol": "https:", - "options": { - "rejectUnauthorized": false, - "noDelay": true, - "path": null - }, - "requests": {}, - "sockets": {}, - "freeSockets": {}, - "keepAliveMsecs": 1000, - "keepAlive": false, - "maxSockets": null, - "maxFreeSockets": 256, - "scheduling": "lifo", - "maxTotalSockets": null, - "totalSocketCount": 0, - "maxCachedSessions": 100, - "_sessionCache": { - "map": {}, - "list": [] - } - }, - "hooks": { - "beforeRequest": [], - "beforeRetry": [], - "beforeError": [], - "afterResponse": [] - }, - "prefixUrl": "", - "retry": { - "limit": 2, - "methods": [ - "get", - "put", - "head", - "delete", - "options", - "trace" - ], - "statusCodes": [ - 408, - 413, - 429, - 500, - 502, - 503, - 504 - ], - "afterStatusCodes": [ - 413, - 429, - 503 - ], - "maxRetryAfter": null, - "backoffLimit": null - }, - "throwHttpErrors": true, - "timeout": 10000, - "signal": {}, - "duplex": "half" - }, - "name": "HTTPError", - "requestUrl": "https://vc.apicatalog.com/credentials/issue?suite=Ed25519Signature2020", - "status": 400, - "data": { - "id": "MALFORMED", - "code": "INVALID_DOCUMENT", - "message": null - } - }, - "operator": "notStrictEqual", - "stack": "AssertionError: Expected issuer apicatalog.com to perform context injection on a VC with out an \"@context\" property: expected HTTPError: Request failed with status cod… { …(6) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:442:18)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" - } + "duration": 0, + "state": "passed", + "speed": "fast" }, { "type": "test", - "title": "When an application is securing a document, if an @context property is not provided in the document or the Data Integrity terms used in the document are not mapped by existing values in the @context property, implementations SHOULD inject or append an @context property with a value of https://w3id.org/security/data-integrity/v2 or one or more contexts with at least the same declarations, such as the Verifiable Credential Data Model v2.0 context (https://www.w3.org/ns/credentials/v2).", - "body": "async function() {\n if(!issuer) {\n throw new Error(`Expected ${vendorName} to have an issuer.`);\n }\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#context-injection:~:text=if%20an%20%40context%20property%20is%20not%20provided%20in%20the%20document%20or%20the%20Data%20Integrity%20terms%20used%20in%20the%20document%20are%20not%20mapped%20by%20existing%20values%20in%20the%20%40context%20property%2C%20implementations%20SHOULD%20inject%20or%20append';\n if(optionalTests.contextInjection === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n const _credential = structuredClone(credential);\n const expectedContexts = [\n 'https://w3id.org/security/data-integrity/v2',\n 'https://www.w3.org/ns/credentials/v2'\n ];\n // remove the vc's context and expect context injection to occur\n delete _credential['@context'];\n let err;\n let data;\n try {\n data = await createInitialVc({issuer, credential: _credential});\n } catch(e) {\n err = e;\n }\n should.not.exist(\n err,\n `Expected issuer ${vendorName} to perform context injection on a ` +\n `VC with out an \"@context\" property`);\n should.exist(data, `Expected issuer ${vendorName} to return data.`);\n data.should.be.an('object', 'Expected response data to be an object.');\n should.exist(data['@context'],\n 'Expected data to have an injected \"@context\" property.');\n if(Array.isArray(data['@context'])) {\n const hasExpectedContext = expectedContexts.some(\n ctx => data['@context'].includes(ctx));\n return hasExpectedContext.should.equal(true,\n `Expected injected context to contain one of ${expectedContexts}`);\n }\n data['@context'].should.be.oneOf(expectedContexts);\n }", + "title": "if \"proof.previousProof\" field exists, it MUST be a string.", + "body": "function() {\n for(const proof of proofs) {\n if(proof.previousProof) {\n proof.previousProof.should.be.a('string', 'Expected ' +\n '\"proof.previousProof\" to be a string.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -8792,137 +8601,49 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "inrDQx7FuP3tRBmfKO9Ff", + "parent": "QHK1IypTjZvkcHZsBOX_g", "ctx": null, - "_testId": "urn:uuid:8369cf07-a5e3-45aa-be85-a65633ab39df", + "_testId": "urn:uuid:acb10bbc-35e1-4205-be7f-49e1dd39d022", "cell": { "columnId": "Danube Tech", - "rowId": "When an application is securing a document, if an @context property is not provided in the document or the Data Integrity terms used in the document are not mapped by existing values in the @context property, implementations SHOULD inject or append an @context property with a value of https://w3id.org/security/data-integrity/v2 or one or more contexts with at least the same declarations, such as the Verifiable Credential Data Model v2.0 context (https://www.w3.org/ns/credentials/v2)." + "rowId": "if \"proof.previousProof\" field exists, it MUST be a string." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#context-injection:~:text=if%20an%20%40context%20property%20is%20not%20provided%20in%20the%20document%20or%20the%20Data%20Integrity%20terms%20used%20in%20the%20document%20are%20not%20mapped%20by%20existing%20values%20in%20the%20%40context%20property%2C%20implementations%20SHOULD%20inject%20or%20append", - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 7083, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "if \"proof.previousProof\" field exists, it MUST be a string.", + "body": "function() {\n for(const proof of proofs) {\n if(proof.previousProof) {\n proof.previousProof.should.be.a('string', 'Expected ' +\n '\"proof.previousProof\" to be a string.');\n }\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "parent": "3oybt7im9lmDGUjG_T3ge", + "ctx": null, + "_testId": "urn:uuid:75579440-05ba-4795-af8f-50352b68158e", + "cell": { + "columnId": "Digital Bazaar", + "rowId": "if \"proof.previousProof\" field exists, it MUST be a string." }, - "duration": 111, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected issuer Danube Tech to perform context injection on a VC with out an \"@context\" property: expected HTTPError: Request failed with status cod… { …(6) } to not exist", - "showDiff": false, - "actual": { - "response": {}, - "request": {}, - "options": { - "credentials": "same-origin", - "headers": {}, - "body": "{\"credential\":{\"id\":\"urn:uuid:76fdc040-c10c-4df0-a371-4e364ed1a17f\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MksvTdeczd92YQ5W2V2gL9kXdRvD2AEiyJPoWieP95HUDo\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"}},\"options\":{\"type\":\"Ed25519Signature2020\"}}", - "method": "POST", - "json": { - "credential": { - "id": "urn:uuid:76fdc040-c10c-4df0-a371-4e364ed1a17f", - "type": [ - "VerifiableCredential" - ], - "issuer": "did:key:z6MksvTdeczd92YQ5W2V2gL9kXdRvD2AEiyJPoWieP95HUDo", - "issuanceDate": "2020-03-16T22:37:26.544Z", - "credentialSubject": { - "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" - } - }, - "options": { - "type": "Ed25519Signature2020" - } - }, - "agent": { - "_events": {}, - "_eventsCount": 2, - "defaultPort": 443, - "protocol": "https:", - "options": { - "rejectUnauthorized": false, - "noDelay": true, - "path": null - }, - "requests": {}, - "sockets": {}, - "freeSockets": {}, - "keepAliveMsecs": 1000, - "keepAlive": false, - "maxSockets": null, - "maxFreeSockets": 256, - "scheduling": "lifo", - "maxTotalSockets": null, - "totalSocketCount": 0, - "maxCachedSessions": 100, - "_sessionCache": { - "map": {}, - "list": [] - } - }, - "hooks": { - "beforeRequest": [], - "beforeRetry": [], - "beforeError": [], - "afterResponse": [] - }, - "prefixUrl": "", - "retry": { - "limit": 2, - "methods": [ - "get", - "put", - "head", - "delete", - "options", - "trace" - ], - "statusCodes": [ - 408, - 413, - 429, - 500, - 502, - 503, - 504 - ], - "afterStatusCodes": [ - 413, - 429, - 503 - ], - "maxRetryAfter": null, - "backoffLimit": null - }, - "throwHttpErrors": true, - "timeout": 10000, - "signal": {}, - "duplex": "half" - }, - "name": "HTTPError", - "requestUrl": "https://uniissuer.io/1.0/credentials/issue", - "status": 400, - "data": [ - { - "error": "Validation error: JSON-LD problem. (Undefined JSON-LD term: id)" - } - ] - }, - "operator": "notStrictEqual", - "stack": "AssertionError: Expected issuer Danube Tech to perform context injection on a VC with out an \"@context\" property: expected HTTPError: Request failed with status cod… { …(6) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:442:18)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" - } + "_events": {}, + "_eventsCount": 1, + "duration": 0, + "state": "passed", + "speed": "fast" }, { "type": "test", - "title": "When an application is securing a document, if an @context property is not provided in the document or the Data Integrity terms used in the document are not mapped by existing values in the @context property, implementations SHOULD inject or append an @context property with a value of https://w3id.org/security/data-integrity/v2 or one or more contexts with at least the same declarations, such as the Verifiable Credential Data Model v2.0 context (https://www.w3.org/ns/credentials/v2).", - "body": "async function() {\n if(!issuer) {\n throw new Error(`Expected ${vendorName} to have an issuer.`);\n }\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#context-injection:~:text=if%20an%20%40context%20property%20is%20not%20provided%20in%20the%20document%20or%20the%20Data%20Integrity%20terms%20used%20in%20the%20document%20are%20not%20mapped%20by%20existing%20values%20in%20the%20%40context%20property%2C%20implementations%20SHOULD%20inject%20or%20append';\n if(optionalTests.contextInjection === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n const _credential = structuredClone(credential);\n const expectedContexts = [\n 'https://w3id.org/security/data-integrity/v2',\n 'https://www.w3.org/ns/credentials/v2'\n ];\n // remove the vc's context and expect context injection to occur\n delete _credential['@context'];\n let err;\n let data;\n try {\n data = await createInitialVc({issuer, credential: _credential});\n } catch(e) {\n err = e;\n }\n should.not.exist(\n err,\n `Expected issuer ${vendorName} to perform context injection on a ` +\n `VC with out an \"@context\" property`);\n should.exist(data, `Expected issuer ${vendorName} to return data.`);\n data.should.be.an('object', 'Expected response data to be an object.');\n should.exist(data['@context'],\n 'Expected data to have an injected \"@context\" property.');\n if(Array.isArray(data['@context'])) {\n const hasExpectedContext = expectedContexts.some(\n ctx => data['@context'].includes(ctx));\n return hasExpectedContext.should.equal(true,\n `Expected injected context to contain one of ${expectedContexts}`);\n }\n data['@context'].should.be.oneOf(expectedContexts);\n }", + "title": "if \"proof.previousProof\" field exists, it MUST be a string.", + "body": "function() {\n for(const proof of proofs) {\n if(proof.previousProof) {\n proof.previousProof.should.be.a('string', 'Expected ' +\n '\"proof.previousProof\" to be a string.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -8932,185 +8653,23 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "rrzz3mWjDHnKXxRkUzYAu", + "parent": "tikRDf1hNC-fQs8dM6EPO", "ctx": null, - "_testId": "urn:uuid:3da7e14f-4e72-4690-8196-b99674fdbbe0", + "_testId": "urn:uuid:91c88cfd-1e5c-4c3f-b8d9-4d32f49781ee", "cell": { - "columnId": "Digital Bazaar", - "rowId": "When an application is securing a document, if an @context property is not provided in the document or the Data Integrity terms used in the document are not mapped by existing values in the @context property, implementations SHOULD inject or append an @context property with a value of https://w3id.org/security/data-integrity/v2 or one or more contexts with at least the same declarations, such as the Verifiable Credential Data Model v2.0 context (https://www.w3.org/ns/credentials/v2)." + "columnId": "EWF", + "rowId": "if \"proof.previousProof\" field exists, it MUST be a string." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#context-injection:~:text=if%20an%20%40context%20property%20is%20not%20provided%20in%20the%20document%20or%20the%20Data%20Integrity%20terms%20used%20in%20the%20document%20are%20not%20mapped%20by%20existing%20values%20in%20the%20%40context%20property%2C%20implementations%20SHOULD%20inject%20or%20append", - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 8248, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 54, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected issuer Digital Bazaar to perform context injection on a VC with out an \"@context\" property: expected HTTPError: A validation error occured in … { …(6) } to not exist", - "showDiff": false, - "actual": { - "response": {}, - "request": {}, - "options": { - "credentials": "same-origin", - "headers": {}, - "method": "POST", - "json": { - "credential": { - "id": "urn:uuid:7e7147d4-1fad-49ac-b043-9773bf4b42e9", - "type": [ - "VerifiableCredential" - ], - "issuer": "did:key:z6MkkZu37ESix41fjPc2bFJ6eGsz1mbzdSn1MYcuU2qWBDAN", - "issuanceDate": "2020-03-16T22:37:26.544Z", - "credentialSubject": { - "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" - } - }, - "options": {} - }, - "agent": { - "_events": {}, - "_eventsCount": 2, - "defaultPort": 443, - "protocol": "https:", - "options": { - "rejectUnauthorized": false, - "noDelay": true, - "path": null - }, - "requests": {}, - "sockets": {}, - "freeSockets": {}, - "keepAliveMsecs": 1000, - "keepAlive": false, - "maxSockets": null, - "maxFreeSockets": 256, - "scheduling": "lifo", - "maxTotalSockets": null, - "totalSocketCount": 0, - "maxCachedSessions": 100, - "_sessionCache": { - "map": {}, - "list": [] - } - }, - "hooks": { - "beforeRequest": [], - "beforeRetry": [], - "beforeError": [], - "afterResponse": [] - }, - "prefixUrl": "", - "retry": { - "limit": 2, - "methods": [ - "get", - "put", - "head", - "delete", - "options", - "trace" - ], - "statusCodes": [ - 408, - 413, - 429, - 500, - 502, - 503, - 504 - ], - "afterStatusCodes": [ - 413, - 429, - 503 - ], - "maxRetryAfter": null, - "backoffLimit": null - }, - "throwHttpErrors": true, - "timeout": 10000, - "signal": {}, - "duplex": "half", - "body": "{\"credential\":{\"id\":\"urn:uuid:7e7147d4-1fad-49ac-b043-9773bf4b42e9\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkkZu37ESix41fjPc2bFJ6eGsz1mbzdSn1MYcuU2qWBDAN\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"}},\"options\":{}}" - }, - "name": "HTTPError", - "requestUrl": "https://vc2.veresissuer.dev/issuers/z1A5TMiJPYBhYCutYH2XZULjt/credentials/issue", - "status": 400, - "data": { - "name": "ValidationError", - "message": "A validation error occured in the 'Issue Credential' validator.", - "details": { - "errors": [ - { - "stack": "ValidationError: should have required property '@context'\n at _createError (file:///home/node/app/node_modules/@bedrock/validation/lib/index.js:240:17)\n at validate (file:///home/node/app/node_modules/@bedrock/validation/lib/index.js:88:14)\n at validate (file:///home/node/app/node_modules/@bedrock/validation/lib/index.js:181:22)\n at Layer.handle [as handle_request] (/home/node/app/node_modules/express/lib/router/layer.js:95:5)\n at next (/home/node/app/node_modules/express/lib/router/route.js:149:13)\n at cors (/home/node/app/node_modules/cors/lib/index.js:188:7)\n at /home/node/app/node_modules/cors/lib/index.js:224:17\n at originCallback (/home/node/app/node_modules/cors/lib/index.js:214:15)\n at /home/node/app/node_modules/cors/lib/index.js:219:13\n at optionsCallback (/home/node/app/node_modules/cors/lib/index.js:199:9)", - "name": "ValidationError", - "message": "should have required property '@context'", - "details": { - "instance": { - "credential": { - "id": "urn:uuid:7e7147d4-1fad-49ac-b043-9773bf4b42e9", - "type": [ - "VerifiableCredential" - ], - "issuer": "did:key:z6MkkZu37ESix41fjPc2bFJ6eGsz1mbzdSn1MYcuU2qWBDAN", - "issuanceDate": "2020-03-16T22:37:26.544Z", - "credentialSubject": { - "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" - } - }, - "options": {} - }, - "params": { - "missingProperty": "@context" - }, - "path": ".credential", - "public": true, - "schemaPath": "#/properties/credential/required", - "schema": { - "description": "", - "title": "" - }, - "value": { - "id": "urn:uuid:7e7147d4-1fad-49ac-b043-9773bf4b42e9", - "type": [ - "VerifiableCredential" - ], - "issuer": "did:key:z6MkkZu37ESix41fjPc2bFJ6eGsz1mbzdSn1MYcuU2qWBDAN", - "issuanceDate": "2020-03-16T22:37:26.544Z", - "credentialSubject": { - "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" - } - } - }, - "cause": null - } - ], - "httpStatusCode": 400 - }, - "cause": null, - "stack": "ValidationError: A validation error occured in the 'Issue Credential' validator.\n at _createError (file:///home/node/app/node_modules/@bedrock/validation/lib/index.js:246:17)\n at validate (file:///home/node/app/node_modules/@bedrock/validation/lib/index.js:88:14)\n at validate (file:///home/node/app/node_modules/@bedrock/validation/lib/index.js:181:22)\n at Layer.handle [as handle_request] (/home/node/app/node_modules/express/lib/router/layer.js:95:5)\n at next (/home/node/app/node_modules/express/lib/router/route.js:149:13)\n at cors (/home/node/app/node_modules/cors/lib/index.js:188:7)\n at /home/node/app/node_modules/cors/lib/index.js:224:17\n at originCallback (/home/node/app/node_modules/cors/lib/index.js:214:15)\n at /home/node/app/node_modules/cors/lib/index.js:219:13\n at optionsCallback (/home/node/app/node_modules/cors/lib/index.js:199:9)", - "type": "ValidationError" - } - }, - "operator": "notStrictEqual", - "stack": "AssertionError: Expected issuer Digital Bazaar to perform context injection on a VC with out an \"@context\" property: expected HTTPError: A validation error occured in … { …(6) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:442:18)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" - } + "duration": 0, + "state": "passed", + "speed": "fast" }, { "type": "test", - "title": "When an application is securing a document, if an @context property is not provided in the document or the Data Integrity terms used in the document are not mapped by existing values in the @context property, implementations SHOULD inject or append an @context property with a value of https://w3id.org/security/data-integrity/v2 or one or more contexts with at least the same declarations, such as the Verifiable Credential Data Model v2.0 context (https://www.w3.org/ns/credentials/v2).", - "body": "async function() {\n if(!issuer) {\n throw new Error(`Expected ${vendorName} to have an issuer.`);\n }\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#context-injection:~:text=if%20an%20%40context%20property%20is%20not%20provided%20in%20the%20document%20or%20the%20Data%20Integrity%20terms%20used%20in%20the%20document%20are%20not%20mapped%20by%20existing%20values%20in%20the%20%40context%20property%2C%20implementations%20SHOULD%20inject%20or%20append';\n if(optionalTests.contextInjection === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n const _credential = structuredClone(credential);\n const expectedContexts = [\n 'https://w3id.org/security/data-integrity/v2',\n 'https://www.w3.org/ns/credentials/v2'\n ];\n // remove the vc's context and expect context injection to occur\n delete _credential['@context'];\n let err;\n let data;\n try {\n data = await createInitialVc({issuer, credential: _credential});\n } catch(e) {\n err = e;\n }\n should.not.exist(\n err,\n `Expected issuer ${vendorName} to perform context injection on a ` +\n `VC with out an \"@context\" property`);\n should.exist(data, `Expected issuer ${vendorName} to return data.`);\n data.should.be.an('object', 'Expected response data to be an object.');\n should.exist(data['@context'],\n 'Expected data to have an injected \"@context\" property.');\n if(Array.isArray(data['@context'])) {\n const hasExpectedContext = expectedContexts.some(\n ctx => data['@context'].includes(ctx));\n return hasExpectedContext.should.equal(true,\n `Expected injected context to contain one of ${expectedContexts}`);\n }\n data['@context'].should.be.oneOf(expectedContexts);\n }", + "title": "if \"proof.previousProof\" field exists, it MUST be a string.", + "body": "function() {\n for(const proof of proofs) {\n if(proof.previousProof) {\n proof.previousProof.should.be.a('string', 'Expected ' +\n '\"proof.previousProof\" to be a string.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -9120,137 +8679,23 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Njo-kHgHfWhU47zHweHTV", + "parent": "3UTW-_LttILA3ILQtGZo2", "ctx": null, - "_testId": "urn:uuid:d2ecebcd-5262-4b8a-bde3-ccea0a7f6231", + "_testId": "urn:uuid:ecb99cfe-3f7f-46ed-94d2-583d449dcd92", "cell": { - "columnId": "EWF", - "rowId": "When an application is securing a document, if an @context property is not provided in the document or the Data Integrity terms used in the document are not mapped by existing values in the @context property, implementations SHOULD inject or append an @context property with a value of https://w3id.org/security/data-integrity/v2 or one or more contexts with at least the same declarations, such as the Verifiable Credential Data Model v2.0 context (https://www.w3.org/ns/credentials/v2)." + "columnId": "LearnCard", + "rowId": "if \"proof.previousProof\" field exists, it MUST be a string." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#context-injection:~:text=if%20an%20%40context%20property%20is%20not%20provided%20in%20the%20document%20or%20the%20Data%20Integrity%20terms%20used%20in%20the%20document%20are%20not%20mapped%20by%20existing%20values%20in%20the%20%40context%20property%2C%20implementations%20SHOULD%20inject%20or%20append", - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 8982, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 93, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected issuer EWF to perform context injection on a VC with out an \"@context\" property: expected HTTPError { …(7) } to not exist", - "showDiff": false, - "actual": { - "response": {}, - "request": {}, - "options": { - "credentials": "same-origin", - "headers": {}, - "body": "{\"credential\":{\"id\":\"urn:uuid:64b8bedc-decd-4b42-9041-896c66800ccf\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MksoRPRqnMWiivV4weRGGS9SiHXuqfJEYu95EiYtbvBxW6\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"}},\"options\":{}}", - "method": "POST", - "json": { - "credential": { - "id": "urn:uuid:64b8bedc-decd-4b42-9041-896c66800ccf", - "type": [ - "VerifiableCredential" - ], - "issuer": "did:key:z6MksoRPRqnMWiivV4weRGGS9SiHXuqfJEYu95EiYtbvBxW6", - "issuanceDate": "2020-03-16T22:37:26.544Z", - "credentialSubject": { - "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" - } - }, - "options": {} - }, - "agent": { - "_events": {}, - "_eventsCount": 2, - "defaultPort": 443, - "protocol": "https:", - "options": { - "rejectUnauthorized": false, - "noDelay": true, - "path": null - }, - "requests": {}, - "sockets": {}, - "freeSockets": {}, - "keepAliveMsecs": 1000, - "keepAlive": false, - "maxSockets": null, - "maxFreeSockets": 256, - "scheduling": "lifo", - "maxTotalSockets": null, - "totalSocketCount": 0, - "maxCachedSessions": 100, - "_sessionCache": { - "map": {}, - "list": [] - } - }, - "hooks": { - "beforeRequest": [], - "beforeRetry": [], - "beforeError": [], - "afterResponse": [] - }, - "prefixUrl": "", - "retry": { - "limit": 2, - "methods": [ - "get", - "put", - "head", - "delete", - "options", - "trace" - ], - "statusCodes": [ - 408, - 413, - 429, - 500, - 502, - 503, - 504 - ], - "afterStatusCodes": [ - 413, - 429, - 503 - ], - "maxRetryAfter": null, - "backoffLimit": null - }, - "throwHttpErrors": true, - "timeout": 10000, - "signal": {}, - "duplex": "half" - }, - "name": "HTTPError", - "requestUrl": "https://vc-api-dev.energyweb.org/v1/vc-api/credentials/issue", - "status": 400, - "data": { - "message": [ - "credential.@context must be an array" - ], - "error": "Bad Request", - "statusCode": 400 - } - }, - "operator": "notStrictEqual", - "stack": "AssertionError: Expected issuer EWF to perform context injection on a VC with out an \"@context\" property: expected HTTPError { …(7) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:442:18)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" - } + "duration": 0, + "state": "passed", + "speed": "fast" }, { "type": "test", - "title": "When an application is securing a document, if an @context property is not provided in the document or the Data Integrity terms used in the document are not mapped by existing values in the @context property, implementations SHOULD inject or append an @context property with a value of https://w3id.org/security/data-integrity/v2 or one or more contexts with at least the same declarations, such as the Verifiable Credential Data Model v2.0 context (https://www.w3.org/ns/credentials/v2).", - "body": "async function() {\n if(!issuer) {\n throw new Error(`Expected ${vendorName} to have an issuer.`);\n }\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#context-injection:~:text=if%20an%20%40context%20property%20is%20not%20provided%20in%20the%20document%20or%20the%20Data%20Integrity%20terms%20used%20in%20the%20document%20are%20not%20mapped%20by%20existing%20values%20in%20the%20%40context%20property%2C%20implementations%20SHOULD%20inject%20or%20append';\n if(optionalTests.contextInjection === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n const _credential = structuredClone(credential);\n const expectedContexts = [\n 'https://w3id.org/security/data-integrity/v2',\n 'https://www.w3.org/ns/credentials/v2'\n ];\n // remove the vc's context and expect context injection to occur\n delete _credential['@context'];\n let err;\n let data;\n try {\n data = await createInitialVc({issuer, credential: _credential});\n } catch(e) {\n err = e;\n }\n should.not.exist(\n err,\n `Expected issuer ${vendorName} to perform context injection on a ` +\n `VC with out an \"@context\" property`);\n should.exist(data, `Expected issuer ${vendorName} to return data.`);\n data.should.be.an('object', 'Expected response data to be an object.');\n should.exist(data['@context'],\n 'Expected data to have an injected \"@context\" property.');\n if(Array.isArray(data['@context'])) {\n const hasExpectedContext = expectedContexts.some(\n ctx => data['@context'].includes(ctx));\n return hasExpectedContext.should.equal(true,\n `Expected injected context to contain one of ${expectedContexts}`);\n }\n data['@context'].should.be.oneOf(expectedContexts);\n }", + "title": "if \"proof.previousProof\" field exists, it MUST be a string.", + "body": "function() {\n for(const proof of proofs) {\n if(proof.previousProof) {\n proof.previousProof.should.be.a('string', 'Expected ' +\n '\"proof.previousProof\" to be a string.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -9260,141 +8705,23 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "FsVwMDitvb4cbtnFdkm_k", + "parent": "V3app5v08kK3UQYixBWWE", "ctx": null, - "_testId": "urn:uuid:6482e8de-4dd8-43fc-a49f-8c3c6535537d", + "_testId": "urn:uuid:5c022bde-acce-45dc-90f5-c4f04682b351", "cell": { - "columnId": "LearnCard", - "rowId": "When an application is securing a document, if an @context property is not provided in the document or the Data Integrity terms used in the document are not mapped by existing values in the @context property, implementations SHOULD inject or append an @context property with a value of https://w3id.org/security/data-integrity/v2 or one or more contexts with at least the same declarations, such as the Verifiable Credential Data Model v2.0 context (https://www.w3.org/ns/credentials/v2)." + "columnId": "OpSecId", + "rowId": "if \"proof.previousProof\" field exists, it MUST be a string." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#context-injection:~:text=if%20an%20%40context%20property%20is%20not%20provided%20in%20the%20document%20or%20the%20Data%20Integrity%20terms%20used%20in%20the%20document%20are%20not%20mapped%20by%20existing%20values%20in%20the%20%40context%20property%2C%20implementations%20SHOULD%20inject%20or%20append", - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 9322, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 39, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected issuer LearnCard to perform context injection on a VC with out an \"@context\" property: expected HTTPError: Request failed with status cod… { …(6) } to not exist", - "showDiff": false, - "actual": { - "response": {}, - "request": {}, - "options": { - "credentials": "same-origin", - "headers": {}, - "body": "{\"credential\":{\"id\":\"urn:uuid:ba0ab839-2fa9-4ded-8ade-7c10135a8962\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"}},\"options\":{}}", - "method": "POST", - "json": { - "credential": { - "id": "urn:uuid:ba0ab839-2fa9-4ded-8ade-7c10135a8962", - "type": [ - "VerifiableCredential" - ], - "issuer": "did:key:z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh", - "issuanceDate": "2020-03-16T22:37:26.544Z", - "credentialSubject": { - "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" - } - }, - "options": {} - }, - "agent": { - "_events": {}, - "_eventsCount": 2, - "defaultPort": 443, - "protocol": "https:", - "options": { - "rejectUnauthorized": false, - "noDelay": true, - "path": null - }, - "requests": {}, - "sockets": {}, - "freeSockets": {}, - "keepAliveMsecs": 1000, - "keepAlive": false, - "maxSockets": null, - "maxFreeSockets": 256, - "scheduling": "lifo", - "maxTotalSockets": null, - "totalSocketCount": 0, - "maxCachedSessions": 100, - "_sessionCache": { - "map": {}, - "list": [] - } - }, - "hooks": { - "beforeRequest": [], - "beforeRetry": [], - "beforeError": [], - "afterResponse": [] - }, - "prefixUrl": "", - "retry": { - "limit": 2, - "methods": [ - "get", - "put", - "head", - "delete", - "options", - "trace" - ], - "statusCodes": [ - 408, - 413, - 429, - 500, - 502, - 503, - 504 - ], - "afterStatusCodes": [ - 413, - 429, - 503 - ], - "maxRetryAfter": null, - "backoffLimit": null - }, - "throwHttpErrors": true, - "timeout": 10000, - "signal": {}, - "duplex": "half" - }, - "name": "HTTPError", - "requestUrl": "https://bridge.learncard.com/credentials/issue", - "status": 400, - "data": "Invalid input: [\n {\n \"code\": \"invalid_type\",\n \"expected\": \"array\",\n \"received\": \"undefined\",\n \"path\": [\n \"credential\",\n \"@context\"\n ],\n \"message\": \"Required\"\n }\n]" - }, - "operator": "notStrictEqual", - "stack": "AssertionError: Expected issuer LearnCard to perform context injection on a VC with out an \"@context\" property: expected HTTPError: Request failed with status cod… { …(6) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:442:18)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" - } - }, - { - "cell": { - "rowId": "When an application is securing a document, if an @context property is not provided in the document or the Data Integrity terms used in the document are not mapped by existing values in the @context property, implementations SHOULD inject or append an @context property with a value of https://w3id.org/security/data-integrity/v2 or one or more contexts with at least the same declarations, such as the Verifiable Credential Data Model v2.0 context (https://www.w3.org/ns/credentials/v2).", - "colId": "OpSecId" - }, - "state": "pending", - "err": { - "message": "Test skipped." - } + "duration": 0, + "state": "passed", + "speed": "fast" }, { "type": "test", - "title": "When an application is securing a document, if an @context property is not provided in the document or the Data Integrity terms used in the document are not mapped by existing values in the @context property, implementations SHOULD inject or append an @context property with a value of https://w3id.org/security/data-integrity/v2 or one or more contexts with at least the same declarations, such as the Verifiable Credential Data Model v2.0 context (https://www.w3.org/ns/credentials/v2).", - "body": "async function() {\n if(!issuer) {\n throw new Error(`Expected ${vendorName} to have an issuer.`);\n }\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#context-injection:~:text=if%20an%20%40context%20property%20is%20not%20provided%20in%20the%20document%20or%20the%20Data%20Integrity%20terms%20used%20in%20the%20document%20are%20not%20mapped%20by%20existing%20values%20in%20the%20%40context%20property%2C%20implementations%20SHOULD%20inject%20or%20append';\n if(optionalTests.contextInjection === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n const _credential = structuredClone(credential);\n const expectedContexts = [\n 'https://w3id.org/security/data-integrity/v2',\n 'https://www.w3.org/ns/credentials/v2'\n ];\n // remove the vc's context and expect context injection to occur\n delete _credential['@context'];\n let err;\n let data;\n try {\n data = await createInitialVc({issuer, credential: _credential});\n } catch(e) {\n err = e;\n }\n should.not.exist(\n err,\n `Expected issuer ${vendorName} to perform context injection on a ` +\n `VC with out an \"@context\" property`);\n should.exist(data, `Expected issuer ${vendorName} to return data.`);\n data.should.be.an('object', 'Expected response data to be an object.');\n should.exist(data['@context'],\n 'Expected data to have an injected \"@context\" property.');\n if(Array.isArray(data['@context'])) {\n const hasExpectedContext = expectedContexts.some(\n ctx => data['@context'].includes(ctx));\n return hasExpectedContext.should.equal(true,\n `Expected injected context to contain one of ${expectedContexts}`);\n }\n data['@context'].should.be.oneOf(expectedContexts);\n }", + "title": "if \"proof.previousProof\" field exists, it MUST be a string.", + "body": "function() {\n for(const proof of proofs) {\n if(proof.previousProof) {\n proof.previousProof.should.be.a('string', 'Expected ' +\n '\"proof.previousProof\" to be a string.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -9404,132 +8731,23 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "gOLKDdlOgm5o-DegeI1Ps", + "parent": "pJvzjaJb0oGOCZ6Fp689R", "ctx": null, - "_testId": "urn:uuid:88680ba1-23f8-4bbf-b263-eedd0db795ed", + "_testId": "urn:uuid:baf45a38-c6d5-435a-a0e6-364c3155dca5", "cell": { "columnId": "SpruceID", - "rowId": "When an application is securing a document, if an @context property is not provided in the document or the Data Integrity terms used in the document are not mapped by existing values in the @context property, implementations SHOULD inject or append an @context property with a value of https://w3id.org/security/data-integrity/v2 or one or more contexts with at least the same declarations, such as the Verifiable Credential Data Model v2.0 context (https://www.w3.org/ns/credentials/v2)." + "rowId": "if \"proof.previousProof\" field exists, it MUST be a string." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#context-injection:~:text=if%20an%20%40context%20property%20is%20not%20provided%20in%20the%20document%20or%20the%20Data%20Integrity%20terms%20used%20in%20the%20document%20are%20not%20mapped%20by%20existing%20values%20in%20the%20%40context%20property%2C%20implementations%20SHOULD%20inject%20or%20append", - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 9654, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 14, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected issuer SpruceID to perform context injection on a VC with out an \"@context\" property: expected HTTPError: Request failed with status cod… { …(5) } to not exist", - "showDiff": false, - "actual": { - "response": {}, - "request": {}, - "options": { - "credentials": "same-origin", - "headers": {}, - "body": "{\"credential\":{\"id\":\"urn:uuid:f01d1bec-dba3-47eb-8312-ba584904f5ca\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkgYAGxLBSXa6Ygk1PnUbK2F7zya8juE9nfsZhrvY7c9GD\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"}},\"options\":{\"type\":\"Ed25519Signature2020\"}}", - "method": "POST", - "json": { - "credential": { - "id": "urn:uuid:f01d1bec-dba3-47eb-8312-ba584904f5ca", - "type": [ - "VerifiableCredential" - ], - "issuer": "did:key:z6MkgYAGxLBSXa6Ygk1PnUbK2F7zya8juE9nfsZhrvY7c9GD", - "issuanceDate": "2020-03-16T22:37:26.544Z", - "credentialSubject": { - "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" - } - }, - "options": { - "type": "Ed25519Signature2020" - } - }, - "agent": { - "_events": {}, - "_eventsCount": 2, - "defaultPort": 443, - "protocol": "https:", - "options": { - "rejectUnauthorized": false, - "noDelay": true, - "path": null - }, - "requests": {}, - "sockets": {}, - "freeSockets": {}, - "keepAliveMsecs": 1000, - "keepAlive": false, - "maxSockets": null, - "maxFreeSockets": 256, - "scheduling": "lifo", - "maxTotalSockets": null, - "totalSocketCount": 0, - "maxCachedSessions": 100, - "_sessionCache": { - "map": {}, - "list": [] - } - }, - "hooks": { - "beforeRequest": [], - "beforeRetry": [], - "beforeError": [], - "afterResponse": [] - }, - "prefixUrl": "", - "retry": { - "limit": 2, - "methods": [ - "get", - "put", - "head", - "delete", - "options", - "trace" - ], - "statusCodes": [ - 408, - 413, - 429, - 500, - 502, - 503, - 504 - ], - "afterStatusCodes": [ - 413, - 429, - 503 - ], - "maxRetryAfter": null, - "backoffLimit": null - }, - "throwHttpErrors": true, - "timeout": 10000, - "signal": {}, - "duplex": "half" - }, - "name": "HTTPError", - "requestUrl": "https://vc.spruceid.xyz/credentials/issue", - "status": 400 - }, - "operator": "notStrictEqual", - "stack": "AssertionError: Expected issuer SpruceID to perform context injection on a VC with out an \"@context\" property: expected HTTPError: Request failed with status cod… { …(5) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:442:18)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" - } + "duration": 0, + "state": "passed", + "speed": "fast" }, { "type": "test", - "title": "When an application is securing a document, if an @context property is not provided in the document or the Data Integrity terms used in the document are not mapped by existing values in the @context property, implementations SHOULD inject or append an @context property with a value of https://w3id.org/security/data-integrity/v2 or one or more contexts with at least the same declarations, such as the Verifiable Credential Data Model v2.0 context (https://www.w3.org/ns/credentials/v2).", - "body": "async function() {\n if(!issuer) {\n throw new Error(`Expected ${vendorName} to have an issuer.`);\n }\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#context-injection:~:text=if%20an%20%40context%20property%20is%20not%20provided%20in%20the%20document%20or%20the%20Data%20Integrity%20terms%20used%20in%20the%20document%20are%20not%20mapped%20by%20existing%20values%20in%20the%20%40context%20property%2C%20implementations%20SHOULD%20inject%20or%20append';\n if(optionalTests.contextInjection === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n const _credential = structuredClone(credential);\n const expectedContexts = [\n 'https://w3id.org/security/data-integrity/v2',\n 'https://www.w3.org/ns/credentials/v2'\n ];\n // remove the vc's context and expect context injection to occur\n delete _credential['@context'];\n let err;\n let data;\n try {\n data = await createInitialVc({issuer, credential: _credential});\n } catch(e) {\n err = e;\n }\n should.not.exist(\n err,\n `Expected issuer ${vendorName} to perform context injection on a ` +\n `VC with out an \"@context\" property`);\n should.exist(data, `Expected issuer ${vendorName} to return data.`);\n data.should.be.an('object', 'Expected response data to be an object.');\n should.exist(data['@context'],\n 'Expected data to have an injected \"@context\" property.');\n if(Array.isArray(data['@context'])) {\n const hasExpectedContext = expectedContexts.some(\n ctx => data['@context'].includes(ctx));\n return hasExpectedContext.should.equal(true,\n `Expected injected context to contain one of ${expectedContexts}`);\n }\n data['@context'].should.be.oneOf(expectedContexts);\n }", + "title": "if \"proof.previousProof\" field exists, it MUST be a string.", + "body": "function() {\n for(const proof of proofs) {\n if(proof.previousProof) {\n proof.previousProof.should.be.a('string', 'Expected ' +\n '\"proof.previousProof\" to be a string.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -9539,139 +8757,28 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "RZteP052VeaXIQkX5MUvo", + "parent": "qmgk3hHclzYw9jf2QjmPc", "ctx": null, - "_testId": "urn:uuid:f168c81b-fd3e-4bbf-affe-0367452454f2", + "_testId": "urn:uuid:dae7c953-a11c-4420-8bc4-8b0705b92c38", "cell": { "columnId": "Trinsic", - "rowId": "When an application is securing a document, if an @context property is not provided in the document or the Data Integrity terms used in the document are not mapped by existing values in the @context property, implementations SHOULD inject or append an @context property with a value of https://w3id.org/security/data-integrity/v2 or one or more contexts with at least the same declarations, such as the Verifiable Credential Data Model v2.0 context (https://www.w3.org/ns/credentials/v2)." + "rowId": "if \"proof.previousProof\" field exists, it MUST be a string." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#context-injection:~:text=if%20an%20%40context%20property%20is%20not%20provided%20in%20the%20document%20or%20the%20Data%20Integrity%20terms%20used%20in%20the%20document%20are%20not%20mapped%20by%20existing%20values%20in%20the%20%40context%20property%2C%20implementations%20SHOULD%20inject%20or%20append", - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 10285, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 26, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected issuer Trinsic to perform context injection on a VC with out an \"@context\" property: expected HTTPError: Request failed with status cod… { …(6) } to not exist", - "showDiff": false, - "actual": { - "response": {}, - "request": {}, - "options": { - "credentials": "same-origin", - "headers": {}, - "body": "{\"credential\":{\"id\":\"urn:uuid:d365f9fa-a73d-4708-b618-7f25733fb066\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkqbpLSbqnY1pxVyhBCDYcFsv4ZgGgqP32kzNrf5deWVPU\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"}},\"options\":{\"type\":\"Ed25519Signature2020\"}}", - "method": "POST", - "json": { - "credential": { - "id": "urn:uuid:d365f9fa-a73d-4708-b618-7f25733fb066", - "type": [ - "VerifiableCredential" - ], - "issuer": "did:key:z6MkqbpLSbqnY1pxVyhBCDYcFsv4ZgGgqP32kzNrf5deWVPU", - "issuanceDate": "2020-03-16T22:37:26.544Z", - "credentialSubject": { - "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" - } - }, - "options": { - "type": "Ed25519Signature2020" - } - }, - "agent": { - "_events": {}, - "_eventsCount": 2, - "defaultPort": 443, - "protocol": "https:", - "options": { - "rejectUnauthorized": false, - "noDelay": true, - "path": null - }, - "requests": {}, - "sockets": {}, - "freeSockets": {}, - "keepAliveMsecs": 1000, - "keepAlive": false, - "maxSockets": null, - "maxFreeSockets": 256, - "scheduling": "lifo", - "maxTotalSockets": null, - "totalSocketCount": 0, - "maxCachedSessions": 100, - "_sessionCache": { - "map": {}, - "list": [] - } - }, - "hooks": { - "beforeRequest": [], - "beforeRetry": [], - "beforeError": [], - "afterResponse": [] - }, - "prefixUrl": "", - "retry": { - "limit": 2, - "methods": [ - "get", - "put", - "head", - "delete", - "options", - "trace" - ], - "statusCodes": [ - 408, - 413, - 429, - 500, - 502, - 503, - 504 - ], - "afterStatusCodes": [ - 413, - 429, - 503 - ], - "maxRetryAfter": null, - "backoffLimit": null - }, - "throwHttpErrors": true, - "timeout": 10000, - "signal": {}, - "duplex": "half" - }, - "name": "HTTPError", - "requestUrl": "https://interop.connect.trinsic.cloud/vc-api/credentials/issue", - "status": 400, - "data": "Invalid credential" - }, - "operator": "notStrictEqual", - "stack": "AssertionError: Expected issuer Trinsic to perform context injection on a VC with out an \"@context\" property: expected HTTPError: Request failed with status cod… { …(6) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:442:18)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" - } + "duration": 0, + "state": "passed", + "speed": "fast" } ] }, { - "id": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", - "link": "https://www.w3.org/TR/vc-data-integrity/#:~:text=The%20date%20and%20time%20the%20proof%20was%20created%20is%20OPTIONAL%20and%2C%20if%20included%2C%20MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC.", + "id": "if \"proof.nonce\" field exists, it MUST be a string.", "cells": [ { "type": "test", - "title": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", - "body": "function() {\n this.test.link = 'https://www.w3.org/TR/vc-data-integrity/#:~:text=The%20date%20and%20time%20the%20proof%20was%20created%20is%20OPTIONAL%20and%2C%20if%20included%2C%20MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC.';\n if(optionalTests.dates === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.created) {\n // check if \"created\" is a valid XML Schema 1.1 dateTimeStamp\n // value\n proof.created.should.match(dateRegex);\n }\n }\n }", + "title": "if \"proof.nonce\" field exists, it MUST be a string.", + "body": "function() {\n for(const proof of proofs) {\n if(proof.nonce) {\n proof.nonce.should.be.a('string', 'Expected \"proof.nonce\" ' +\n 'to be a string.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -9681,24 +8788,23 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Q-Y1cYh4G8cDll4bwtBlR", + "parent": "yxhpYILOcqbki3FDec94S", "ctx": null, - "_testId": "urn:uuid:77ceed75-c16d-40bd-8958-7f448091cb2a", + "_testId": "urn:uuid:3086ee79-24c1-4dfd-a6ff-064200133b46", "cell": { "columnId": "apicatalog.com", - "rowId": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." + "rowId": "if \"proof.nonce\" field exists, it MUST be a string." }, "_events": {}, "_eventsCount": 1, - "link": "https://www.w3.org/TR/vc-data-integrity/#:~:text=The%20date%20and%20time%20the%20proof%20was%20created%20is%20OPTIONAL%20and%2C%20if%20included%2C%20MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC.", "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", - "body": "function() {\n this.test.link = 'https://www.w3.org/TR/vc-data-integrity/#:~:text=The%20date%20and%20time%20the%20proof%20was%20created%20is%20OPTIONAL%20and%2C%20if%20included%2C%20MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC.';\n if(optionalTests.dates === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.created) {\n // check if \"created\" is a valid XML Schema 1.1 dateTimeStamp\n // value\n proof.created.should.match(dateRegex);\n }\n }\n }", + "title": "if \"proof.nonce\" field exists, it MUST be a string.", + "body": "function() {\n for(const proof of proofs) {\n if(proof.nonce) {\n proof.nonce.should.be.a('string', 'Expected \"proof.nonce\" ' +\n 'to be a string.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -9708,24 +8814,23 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "inrDQx7FuP3tRBmfKO9Ff", + "parent": "QHK1IypTjZvkcHZsBOX_g", "ctx": null, - "_testId": "urn:uuid:1344a5b7-cab9-4f55-bb17-ec88e38a7634", + "_testId": "urn:uuid:31d8e168-177a-442d-a835-7042212bf740", "cell": { "columnId": "Danube Tech", - "rowId": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." + "rowId": "if \"proof.nonce\" field exists, it MUST be a string." }, "_events": {}, "_eventsCount": 1, - "link": "https://www.w3.org/TR/vc-data-integrity/#:~:text=The%20date%20and%20time%20the%20proof%20was%20created%20is%20OPTIONAL%20and%2C%20if%20included%2C%20MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC.", "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", - "body": "function() {\n this.test.link = 'https://www.w3.org/TR/vc-data-integrity/#:~:text=The%20date%20and%20time%20the%20proof%20was%20created%20is%20OPTIONAL%20and%2C%20if%20included%2C%20MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC.';\n if(optionalTests.dates === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.created) {\n // check if \"created\" is a valid XML Schema 1.1 dateTimeStamp\n // value\n proof.created.should.match(dateRegex);\n }\n }\n }", + "title": "if \"proof.nonce\" field exists, it MUST be a string.", + "body": "function() {\n for(const proof of proofs) {\n if(proof.nonce) {\n proof.nonce.should.be.a('string', 'Expected \"proof.nonce\" ' +\n 'to be a string.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -9735,24 +8840,23 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "rrzz3mWjDHnKXxRkUzYAu", + "parent": "3oybt7im9lmDGUjG_T3ge", "ctx": null, - "_testId": "urn:uuid:c84b2772-16b1-4697-b9a4-56fb1ca166d2", + "_testId": "urn:uuid:78fe6f88-3416-4318-a43c-662cc2e18f40", "cell": { "columnId": "Digital Bazaar", - "rowId": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." + "rowId": "if \"proof.nonce\" field exists, it MUST be a string." }, "_events": {}, "_eventsCount": 1, - "link": "https://www.w3.org/TR/vc-data-integrity/#:~:text=The%20date%20and%20time%20the%20proof%20was%20created%20is%20OPTIONAL%20and%2C%20if%20included%2C%20MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC.", "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", - "body": "function() {\n this.test.link = 'https://www.w3.org/TR/vc-data-integrity/#:~:text=The%20date%20and%20time%20the%20proof%20was%20created%20is%20OPTIONAL%20and%2C%20if%20included%2C%20MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC.';\n if(optionalTests.dates === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.created) {\n // check if \"created\" is a valid XML Schema 1.1 dateTimeStamp\n // value\n proof.created.should.match(dateRegex);\n }\n }\n }", + "title": "if \"proof.nonce\" field exists, it MUST be a string.", + "body": "function() {\n for(const proof of proofs) {\n if(proof.nonce) {\n proof.nonce.should.be.a('string', 'Expected \"proof.nonce\" ' +\n 'to be a string.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -9762,24 +8866,23 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Njo-kHgHfWhU47zHweHTV", + "parent": "tikRDf1hNC-fQs8dM6EPO", "ctx": null, - "_testId": "urn:uuid:1b786289-9a5f-4f95-9f72-50997092defb", + "_testId": "urn:uuid:42205eca-57d4-42ba-b4be-d99db11b9831", "cell": { "columnId": "EWF", - "rowId": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." + "rowId": "if \"proof.nonce\" field exists, it MUST be a string." }, "_events": {}, "_eventsCount": 1, - "link": "https://www.w3.org/TR/vc-data-integrity/#:~:text=The%20date%20and%20time%20the%20proof%20was%20created%20is%20OPTIONAL%20and%2C%20if%20included%2C%20MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC.", "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", - "body": "function() {\n this.test.link = 'https://www.w3.org/TR/vc-data-integrity/#:~:text=The%20date%20and%20time%20the%20proof%20was%20created%20is%20OPTIONAL%20and%2C%20if%20included%2C%20MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC.';\n if(optionalTests.dates === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.created) {\n // check if \"created\" is a valid XML Schema 1.1 dateTimeStamp\n // value\n proof.created.should.match(dateRegex);\n }\n }\n }", + "title": "if \"proof.nonce\" field exists, it MUST be a string.", + "body": "function() {\n for(const proof of proofs) {\n if(proof.nonce) {\n proof.nonce.should.be.a('string', 'Expected \"proof.nonce\" ' +\n 'to be a string.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -9789,34 +8892,49 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "FsVwMDitvb4cbtnFdkm_k", + "parent": "3UTW-_LttILA3ILQtGZo2", "ctx": null, - "_testId": "urn:uuid:2828a613-49ac-4462-9895-50cf2164e111", + "_testId": "urn:uuid:b9b5b96e-56ac-47ee-96f6-ed0e3a6f38b7", "cell": { "columnId": "LearnCard", - "rowId": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." + "rowId": "if \"proof.nonce\" field exists, it MUST be a string." }, "_events": {}, "_eventsCount": 1, - "link": "https://www.w3.org/TR/vc-data-integrity/#:~:text=The%20date%20and%20time%20the%20proof%20was%20created%20is%20OPTIONAL%20and%2C%20if%20included%2C%20MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC.", "duration": 0, "state": "passed", "speed": "fast" }, - { - "cell": { - "rowId": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", - "colId": "OpSecId" - }, - "state": "pending", - "err": { - "message": "Test skipped." - } - }, { "type": "test", - "title": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", - "body": "function() {\n this.test.link = 'https://www.w3.org/TR/vc-data-integrity/#:~:text=The%20date%20and%20time%20the%20proof%20was%20created%20is%20OPTIONAL%20and%2C%20if%20included%2C%20MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC.';\n if(optionalTests.dates === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.created) {\n // check if \"created\" is a valid XML Schema 1.1 dateTimeStamp\n // value\n proof.created.should.match(dateRegex);\n }\n }\n }", + "title": "if \"proof.nonce\" field exists, it MUST be a string.", + "body": "function() {\n for(const proof of proofs) {\n if(proof.nonce) {\n proof.nonce.should.be.a('string', 'Expected \"proof.nonce\" ' +\n 'to be a string.');\n }\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "parent": "V3app5v08kK3UQYixBWWE", + "ctx": null, + "_testId": "urn:uuid:2608e5ff-6f26-494a-8bb9-a21ab008b4b3", + "cell": { + "columnId": "OpSecId", + "rowId": "if \"proof.nonce\" field exists, it MUST be a string." + }, + "_events": {}, + "_eventsCount": 1, + "duration": 0, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "if \"proof.nonce\" field exists, it MUST be a string.", + "body": "function() {\n for(const proof of proofs) {\n if(proof.nonce) {\n proof.nonce.should.be.a('string', 'Expected \"proof.nonce\" ' +\n 'to be a string.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -9826,24 +8944,23 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "gOLKDdlOgm5o-DegeI1Ps", + "parent": "pJvzjaJb0oGOCZ6Fp689R", "ctx": null, - "_testId": "urn:uuid:90bec99d-df55-4e54-9845-7c74c5ca4f86", + "_testId": "urn:uuid:5abea5cc-7491-446b-a014-820fd23130d3", "cell": { "columnId": "SpruceID", - "rowId": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." + "rowId": "if \"proof.nonce\" field exists, it MUST be a string." }, "_events": {}, "_eventsCount": 1, - "link": "https://www.w3.org/TR/vc-data-integrity/#:~:text=The%20date%20and%20time%20the%20proof%20was%20created%20is%20OPTIONAL%20and%2C%20if%20included%2C%20MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC.", "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", - "body": "function() {\n this.test.link = 'https://www.w3.org/TR/vc-data-integrity/#:~:text=The%20date%20and%20time%20the%20proof%20was%20created%20is%20OPTIONAL%20and%2C%20if%20included%2C%20MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC.';\n if(optionalTests.dates === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.created) {\n // check if \"created\" is a valid XML Schema 1.1 dateTimeStamp\n // value\n proof.created.should.match(dateRegex);\n }\n }\n }", + "title": "if \"proof.nonce\" field exists, it MUST be a string.", + "body": "function() {\n for(const proof of proofs) {\n if(proof.nonce) {\n proof.nonce.should.be.a('string', 'Expected \"proof.nonce\" ' +\n 'to be a string.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -9853,16 +8970,15 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "RZteP052VeaXIQkX5MUvo", + "parent": "qmgk3hHclzYw9jf2QjmPc", "ctx": null, - "_testId": "urn:uuid:ce161a3c-9be5-4744-9ee8-0afecdfae37f", + "_testId": "urn:uuid:db9c37f1-1099-4b6f-b74f-d75aa1b82487", "cell": { "columnId": "Trinsic", - "rowId": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." + "rowId": "if \"proof.nonce\" field exists, it MUST be a string." }, "_events": {}, "_eventsCount": 1, - "link": "https://www.w3.org/TR/vc-data-integrity/#:~:text=The%20date%20and%20time%20the%20proof%20was%20created%20is%20OPTIONAL%20and%2C%20if%20included%2C%20MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC.", "duration": 0, "state": "passed", "speed": "fast" @@ -9870,13 +8986,13 @@ ] }, { - "id": "The expires property is OPTIONAL and, if present, specifies when the proof expires. If present, it MUST be an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time", + "id": "Cryptographic suite designers MUST use mandatory proof value properties defined in Section 2.1 Proofs, and MAY define other properties specific to their cryptographic suite.", + "link": "https://w3c.github.io/vc-data-integrity/#add-proof:~:text=MUST%20use%20mandatory%20proof%20value%20properties%20defined", "cells": [ { "type": "test", - "title": "The expires property is OPTIONAL and, if present, specifies when the proof expires. If present, it MUST be an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time';\n if(optionalTests.dates === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.expires) {\n // check if \"created\" is a valid XML Schema 1.1 dateTimeStamp\n // value\n proof.expires.should.match(dateRegex);\n }\n }\n }", + "title": "Cryptographic suite designers MUST use mandatory proof value properties defined in Section 2.1 Proofs, and MAY define other properties specific to their cryptographic suite.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#add-proof:~:text=MUST%20use%20mandatory%20proof%20value%20properties%20defined';\n for(const proof of proofs) {\n shouldBeProof({proof});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -9886,24 +9002,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Q-Y1cYh4G8cDll4bwtBlR", + "parent": "yxhpYILOcqbki3FDec94S", "ctx": null, - "_testId": "urn:uuid:7f327cfc-14cc-473d-b759-ff5dcbe13dda", + "_testId": "urn:uuid:109c53a8-3abd-48cb-8412-26079c308227", "cell": { "columnId": "apicatalog.com", - "rowId": "The expires property is OPTIONAL and, if present, specifies when the proof expires. If present, it MUST be an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." + "rowId": "Cryptographic suite designers MUST use mandatory proof value properties defined in Section 2.1 Proofs, and MAY define other properties specific to their cryptographic suite." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time", + "link": "https://w3c.github.io/vc-data-integrity/#add-proof:~:text=MUST%20use%20mandatory%20proof%20value%20properties%20defined", + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 6189, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, "duration": 1, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "The expires property is OPTIONAL and, if present, specifies when the proof expires. If present, it MUST be an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time';\n if(optionalTests.dates === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.expires) {\n // check if \"created\" is a valid XML Schema 1.1 dateTimeStamp\n // value\n proof.expires.should.match(dateRegex);\n }\n }\n }", + "title": "Cryptographic suite designers MUST use mandatory proof value properties defined in Section 2.1 Proofs, and MAY define other properties specific to their cryptographic suite.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#add-proof:~:text=MUST%20use%20mandatory%20proof%20value%20properties%20defined';\n for(const proof of proofs) {\n shouldBeProof({proof});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -9913,24 +9038,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "inrDQx7FuP3tRBmfKO9Ff", + "parent": "QHK1IypTjZvkcHZsBOX_g", "ctx": null, - "_testId": "urn:uuid:a0f0b975-2b72-478b-b845-5ce6c82f18b5", + "_testId": "urn:uuid:24880f6d-b85b-402a-8859-6efeeee84bfb", "cell": { "columnId": "Danube Tech", - "rowId": "The expires property is OPTIONAL and, if present, specifies when the proof expires. If present, it MUST be an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." + "rowId": "Cryptographic suite designers MUST use mandatory proof value properties defined in Section 2.1 Proofs, and MAY define other properties specific to their cryptographic suite." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time", + "link": "https://w3c.github.io/vc-data-integrity/#add-proof:~:text=MUST%20use%20mandatory%20proof%20value%20properties%20defined", + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 7015, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "The expires property is OPTIONAL and, if present, specifies when the proof expires. If present, it MUST be an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time';\n if(optionalTests.dates === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.expires) {\n // check if \"created\" is a valid XML Schema 1.1 dateTimeStamp\n // value\n proof.expires.should.match(dateRegex);\n }\n }\n }", + "title": "Cryptographic suite designers MUST use mandatory proof value properties defined in Section 2.1 Proofs, and MAY define other properties specific to their cryptographic suite.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#add-proof:~:text=MUST%20use%20mandatory%20proof%20value%20properties%20defined';\n for(const proof of proofs) {\n shouldBeProof({proof});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -9940,24 +9074,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "rrzz3mWjDHnKXxRkUzYAu", + "parent": "3oybt7im9lmDGUjG_T3ge", "ctx": null, - "_testId": "urn:uuid:558e6a44-4ec7-4eb6-ae95-d8436916f651", + "_testId": "urn:uuid:a8eec967-f8e4-4e29-b5fe-4df3b940cd9c", "cell": { "columnId": "Digital Bazaar", - "rowId": "The expires property is OPTIONAL and, if present, specifies when the proof expires. If present, it MUST be an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." + "rowId": "Cryptographic suite designers MUST use mandatory proof value properties defined in Section 2.1 Proofs, and MAY define other properties specific to their cryptographic suite." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time", - "duration": 0, + "link": "https://w3c.github.io/vc-data-integrity/#add-proof:~:text=MUST%20use%20mandatory%20proof%20value%20properties%20defined", + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 8515, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 1, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "The expires property is OPTIONAL and, if present, specifies when the proof expires. If present, it MUST be an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time';\n if(optionalTests.dates === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.expires) {\n // check if \"created\" is a valid XML Schema 1.1 dateTimeStamp\n // value\n proof.expires.should.match(dateRegex);\n }\n }\n }", + "title": "Cryptographic suite designers MUST use mandatory proof value properties defined in Section 2.1 Proofs, and MAY define other properties specific to their cryptographic suite.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#add-proof:~:text=MUST%20use%20mandatory%20proof%20value%20properties%20defined';\n for(const proof of proofs) {\n shouldBeProof({proof});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -9967,24 +9110,39 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Njo-kHgHfWhU47zHweHTV", + "parent": "tikRDf1hNC-fQs8dM6EPO", "ctx": null, - "_testId": "urn:uuid:19e835b2-6650-4b14-b935-265783b6bbdf", + "_testId": "urn:uuid:e440b15a-965d-463e-89a4-4c6da3cc7c2c", "cell": { "columnId": "EWF", - "rowId": "The expires property is OPTIONAL and, if present, specifies when the proof expires. If present, it MUST be an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." + "rowId": "Cryptographic suite designers MUST use mandatory proof value properties defined in Section 2.1 Proofs, and MAY define other properties specific to their cryptographic suite." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time", + "link": "https://w3c.github.io/vc-data-integrity/#add-proof:~:text=MUST%20use%20mandatory%20proof%20value%20properties%20defined", + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 9206, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, "duration": 0, - "state": "passed", - "speed": "fast" + "state": "failed", + "err": { + "name": "AssertionError", + "message": "Expected \"proof.proofValue\" to exist.: expected undefined to exist", + "showDiff": false, + "operator": "strictEqual", + "stack": "AssertionError: Expected \"proof.proofValue\" to exist.: expected undefined to exist\n at should.exist (node_modules/chai/lib/chai/interface/should.js:144:34)\n at shouldBeProof (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:206:10)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:247:9)\n at process.processImmediate (node:internal/timers:483:21)" + } }, { "type": "test", - "title": "The expires property is OPTIONAL and, if present, specifies when the proof expires. If present, it MUST be an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time';\n if(optionalTests.dates === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.expires) {\n // check if \"created\" is a valid XML Schema 1.1 dateTimeStamp\n // value\n proof.expires.should.match(dateRegex);\n }\n }\n }", + "title": "Cryptographic suite designers MUST use mandatory proof value properties defined in Section 2.1 Proofs, and MAY define other properties specific to their cryptographic suite.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#add-proof:~:text=MUST%20use%20mandatory%20proof%20value%20properties%20defined';\n for(const proof of proofs) {\n shouldBeProof({proof});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -9994,34 +9152,69 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "FsVwMDitvb4cbtnFdkm_k", + "parent": "3UTW-_LttILA3ILQtGZo2", "ctx": null, - "_testId": "urn:uuid:73d5ad86-fa69-452c-9da6-87c6b8518b69", + "_testId": "urn:uuid:ea9d5d88-cf25-4b2b-9342-d3481a3905ab", "cell": { "columnId": "LearnCard", - "rowId": "The expires property is OPTIONAL and, if present, specifies when the proof expires. If present, it MUST be an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." + "rowId": "Cryptographic suite designers MUST use mandatory proof value properties defined in Section 2.1 Proofs, and MAY define other properties specific to their cryptographic suite." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time", + "link": "https://w3c.github.io/vc-data-integrity/#add-proof:~:text=MUST%20use%20mandatory%20proof%20value%20properties%20defined", + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 9646, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, "duration": 0, "state": "passed", "speed": "fast" }, { + "type": "test", + "title": "Cryptographic suite designers MUST use mandatory proof value properties defined in Section 2.1 Proofs, and MAY define other properties specific to their cryptographic suite.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#add-proof:~:text=MUST%20use%20mandatory%20proof%20value%20properties%20defined';\n for(const proof of proofs) {\n shouldBeProof({proof});\n }\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "parent": "V3app5v08kK3UQYixBWWE", + "ctx": null, + "_testId": "urn:uuid:d1a69747-2ea7-45ca-9bde-c2d1aa8698e9", "cell": { - "rowId": "The expires property is OPTIONAL and, if present, specifies when the proof expires. If present, it MUST be an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", - "colId": "OpSecId" + "columnId": "OpSecId", + "rowId": "Cryptographic suite designers MUST use mandatory proof value properties defined in Section 2.1 Proofs, and MAY define other properties specific to their cryptographic suite." }, - "state": "pending", - "err": { - "message": "Test skipped." - } + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#add-proof:~:text=MUST%20use%20mandatory%20proof%20value%20properties%20defined", + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 9955, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 0, + "state": "passed", + "speed": "fast" }, { "type": "test", - "title": "The expires property is OPTIONAL and, if present, specifies when the proof expires. If present, it MUST be an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time';\n if(optionalTests.dates === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.expires) {\n // check if \"created\" is a valid XML Schema 1.1 dateTimeStamp\n // value\n proof.expires.should.match(dateRegex);\n }\n }\n }", + "title": "Cryptographic suite designers MUST use mandatory proof value properties defined in Section 2.1 Proofs, and MAY define other properties specific to their cryptographic suite.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#add-proof:~:text=MUST%20use%20mandatory%20proof%20value%20properties%20defined';\n for(const proof of proofs) {\n shouldBeProof({proof});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -10031,24 +9224,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "gOLKDdlOgm5o-DegeI1Ps", + "parent": "pJvzjaJb0oGOCZ6Fp689R", "ctx": null, - "_testId": "urn:uuid:3a687485-b117-4294-9238-41ddf1b91017", + "_testId": "urn:uuid:605cc3ea-0393-493e-8995-192e4a4faba3", "cell": { "columnId": "SpruceID", - "rowId": "The expires property is OPTIONAL and, if present, specifies when the proof expires. If present, it MUST be an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." + "rowId": "Cryptographic suite designers MUST use mandatory proof value properties defined in Section 2.1 Proofs, and MAY define other properties specific to their cryptographic suite." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time", - "duration": 0, + "link": "https://w3c.github.io/vc-data-integrity/#add-proof:~:text=MUST%20use%20mandatory%20proof%20value%20properties%20defined", + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 10089, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 1, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "The expires property is OPTIONAL and, if present, specifies when the proof expires. If present, it MUST be an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time';\n if(optionalTests.dates === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.expires) {\n // check if \"created\" is a valid XML Schema 1.1 dateTimeStamp\n // value\n proof.expires.should.match(dateRegex);\n }\n }\n }", + "title": "Cryptographic suite designers MUST use mandatory proof value properties defined in Section 2.1 Proofs, and MAY define other properties specific to their cryptographic suite.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#add-proof:~:text=MUST%20use%20mandatory%20proof%20value%20properties%20defined';\n for(const proof of proofs) {\n shouldBeProof({proof});\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -10058,16 +9260,25 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "RZteP052VeaXIQkX5MUvo", + "parent": "qmgk3hHclzYw9jf2QjmPc", "ctx": null, - "_testId": "urn:uuid:f7784daf-446b-43ca-8788-e0cc85a7c726", + "_testId": "urn:uuid:605c49fc-de56-45ca-a25e-1eb34eb65d59", "cell": { "columnId": "Trinsic", - "rowId": "The expires property is OPTIONAL and, if present, specifies when the proof expires. If present, it MUST be an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." + "rowId": "Cryptographic suite designers MUST use mandatory proof value properties defined in Section 2.1 Proofs, and MAY define other properties specific to their cryptographic suite." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time", + "link": "https://w3c.github.io/vc-data-integrity/#add-proof:~:text=MUST%20use%20mandatory%20proof%20value%20properties%20defined", + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 11082, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, "duration": 0, "state": "passed", "speed": "fast" @@ -10075,13 +9286,13 @@ ] }, { - "id": "The domain property is OPTIONAL. It conveys one or more security domains in which the proof is meant to be used. If specified, the associated value MUST be either a string, or an unordered set of strings. A verifier SHOULD use the value to ensure that the proof was intended to be used in the security domain in which the verifier is operating.", - "link": "https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=The%20domain%20property%20is%20OPTIONAL.%20It%20conveys%20one%20or%20more%20security%20domains%20in%20which%20the%20proof%20is%20meant%20to%20be%20used.%20If%20specified%2C%20the%20associated%20value%20MUST", + "id": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document.", + "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.", "cells": [ { "type": "test", - "title": "The domain property is OPTIONAL. It conveys one or more security domains in which the proof is meant to be used. If specified, the associated value MUST be either a string, or an unordered set of strings. A verifier SHOULD use the value to ensure that the proof was intended to be used in the security domain in which the verifier is operating.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=The%20domain%20property%20is%20OPTIONAL.%20It%20conveys%20one%20or%20more%20security%20domains%20in%20which%20the%20proof%20is%20meant%20to%20be%20used.%20If%20specified%2C%20the%20associated%20value%20MUST';\n if(optionalTests.domain === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.domain) {\n const validType = isStringOrArrayOfStrings(proof.domain);\n validType.should.equal(true, 'Expected ' +\n '\"proof.domain\" to be either a string or an unordered ' +\n 'set of strings.');\n }\n }\n }", + "title": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.';\n const undefinedType = structuredClone(credential);\n undefinedType.type.push('InvalidType');\n await shouldFailIssuance({\n credential: undefinedType,\n issuer,\n reason: 'Expected issuer to error when VC has an undefined type.'\n });\n const undefinedTerm = structuredClone(credential);\n undefinedTerm.credentialSubject.invalidTerm = 'invalidTerm';\n await shouldFailIssuance({\n credential: undefinedTerm,\n issuer,\n reason: 'Expected issuer to error when VC has an undefined term.'\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -10091,24 +9302,40 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Q-Y1cYh4G8cDll4bwtBlR", + "parent": "yxhpYILOcqbki3FDec94S", "ctx": null, - "_testId": "urn:uuid:58b7f65a-aa88-4013-892d-9ece8f96fd4e", + "_testId": "urn:uuid:dd3b75d0-ed7a-4301-ba50-9fd272512be8", "cell": { "columnId": "apicatalog.com", - "rowId": "The domain property is OPTIONAL. It conveys one or more security domains in which the proof is meant to be used. If specified, the associated value MUST be either a string, or an unordered set of strings. A verifier SHOULD use the value to ensure that the proof was intended to be used in the security domain in which the verifier is operating." + "rowId": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=The%20domain%20property%20is%20OPTIONAL.%20It%20conveys%20one%20or%20more%20security%20domains%20in%20which%20the%20proof%20is%20meant%20to%20be%20used.%20If%20specified%2C%20the%20associated%20value%20MUST", - "duration": 0, - "state": "passed", - "speed": "fast" + "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.", + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 6190, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 110, + "state": "failed", + "err": { + "name": "AssertionError", + "message": "Expected issuer to error when VC has an undefined type.: expected Response { status: 201, statusText: 'Created', headers: Headers { 'content-type': 'application/ld+json', 'x-cloud-trace-context': '2c4817b1e968039ec75a476affe0d1c9', date: 'Sun, 01 Sep 2024 05:01:38 GMT', server: 'Google Frontend', 'content-length': '745', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist", + "showDiff": false, + "actual": {}, + "operator": "notStrictEqual", + "stack": "AssertionError: Expected issuer to error when VC has an undefined type.: expected Response { status: 201, statusText: 'Created', headers: Headers { 'content-type': 'application/ld+json', 'x-cloud-trace-context': '2c4817b1e968039ec75a476affe0d1c9', date: 'Sun, 01 Sep 2024 05:01:38 GMT', server: 'Google Frontend', 'content-length': '745', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at shouldFailIssuance (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:71:14)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:258:7)" + } }, { "type": "test", - "title": "The domain property is OPTIONAL. It conveys one or more security domains in which the proof is meant to be used. If specified, the associated value MUST be either a string, or an unordered set of strings. A verifier SHOULD use the value to ensure that the proof was intended to be used in the security domain in which the verifier is operating.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=The%20domain%20property%20is%20OPTIONAL.%20It%20conveys%20one%20or%20more%20security%20domains%20in%20which%20the%20proof%20is%20meant%20to%20be%20used.%20If%20specified%2C%20the%20associated%20value%20MUST';\n if(optionalTests.domain === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.domain) {\n const validType = isStringOrArrayOfStrings(proof.domain);\n validType.should.equal(true, 'Expected ' +\n '\"proof.domain\" to be either a string or an unordered ' +\n 'set of strings.');\n }\n }\n }", + "title": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.';\n const undefinedType = structuredClone(credential);\n undefinedType.type.push('InvalidType');\n await shouldFailIssuance({\n credential: undefinedType,\n issuer,\n reason: 'Expected issuer to error when VC has an undefined type.'\n });\n const undefinedTerm = structuredClone(credential);\n undefinedTerm.credentialSubject.invalidTerm = 'invalidTerm';\n await shouldFailIssuance({\n credential: undefinedTerm,\n issuer,\n reason: 'Expected issuer to error when VC has an undefined term.'\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -10118,24 +9345,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "inrDQx7FuP3tRBmfKO9Ff", + "parent": "QHK1IypTjZvkcHZsBOX_g", "ctx": null, - "_testId": "urn:uuid:75c63d27-fa17-413a-af43-ea7e0b1182bb", + "_testId": "urn:uuid:63556c25-db38-4b4d-a77b-21ce26482d69", "cell": { "columnId": "Danube Tech", - "rowId": "The domain property is OPTIONAL. It conveys one or more security domains in which the proof is meant to be used. If specified, the associated value MUST be either a string, or an unordered set of strings. A verifier SHOULD use the value to ensure that the proof was intended to be used in the security domain in which the verifier is operating." + "rowId": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=The%20domain%20property%20is%20OPTIONAL.%20It%20conveys%20one%20or%20more%20security%20domains%20in%20which%20the%20proof%20is%20meant%20to%20be%20used.%20If%20specified%2C%20the%20associated%20value%20MUST", - "duration": 0, + "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.", + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 7015, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 643, "state": "passed", - "speed": "fast" + "speed": "slow" }, { "type": "test", - "title": "The domain property is OPTIONAL. It conveys one or more security domains in which the proof is meant to be used. If specified, the associated value MUST be either a string, or an unordered set of strings. A verifier SHOULD use the value to ensure that the proof was intended to be used in the security domain in which the verifier is operating.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=The%20domain%20property%20is%20OPTIONAL.%20It%20conveys%20one%20or%20more%20security%20domains%20in%20which%20the%20proof%20is%20meant%20to%20be%20used.%20If%20specified%2C%20the%20associated%20value%20MUST';\n if(optionalTests.domain === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.domain) {\n const validType = isStringOrArrayOfStrings(proof.domain);\n validType.should.equal(true, 'Expected ' +\n '\"proof.domain\" to be either a string or an unordered ' +\n 'set of strings.');\n }\n }\n }", + "title": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.';\n const undefinedType = structuredClone(credential);\n undefinedType.type.push('InvalidType');\n await shouldFailIssuance({\n credential: undefinedType,\n issuer,\n reason: 'Expected issuer to error when VC has an undefined type.'\n });\n const undefinedTerm = structuredClone(credential);\n undefinedTerm.credentialSubject.invalidTerm = 'invalidTerm';\n await shouldFailIssuance({\n credential: undefinedTerm,\n issuer,\n reason: 'Expected issuer to error when VC has an undefined term.'\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -10145,51 +9381,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "rrzz3mWjDHnKXxRkUzYAu", + "parent": "3oybt7im9lmDGUjG_T3ge", "ctx": null, - "_testId": "urn:uuid:091bb158-d997-45c7-83d9-e308cb2756b2", + "_testId": "urn:uuid:769e2fc9-4ee0-4f4b-9d1d-90407b4a9d22", "cell": { "columnId": "Digital Bazaar", - "rowId": "The domain property is OPTIONAL. It conveys one or more security domains in which the proof is meant to be used. If specified, the associated value MUST be either a string, or an unordered set of strings. A verifier SHOULD use the value to ensure that the proof was intended to be used in the security domain in which the verifier is operating." + "rowId": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=The%20domain%20property%20is%20OPTIONAL.%20It%20conveys%20one%20or%20more%20security%20domains%20in%20which%20the%20proof%20is%20meant%20to%20be%20used.%20If%20specified%2C%20the%20associated%20value%20MUST", - "duration": 0, - "state": "passed", - "speed": "fast" - }, - { - "type": "test", - "title": "The domain property is OPTIONAL. It conveys one or more security domains in which the proof is meant to be used. If specified, the associated value MUST be either a string, or an unordered set of strings. A verifier SHOULD use the value to ensure that the proof was intended to be used in the security domain in which the verifier is operating.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=The%20domain%20property%20is%20OPTIONAL.%20It%20conveys%20one%20or%20more%20security%20domains%20in%20which%20the%20proof%20is%20meant%20to%20be%20used.%20If%20specified%2C%20the%20associated%20value%20MUST';\n if(optionalTests.domain === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.domain) {\n const validType = isStringOrArrayOfStrings(proof.domain);\n validType.should.equal(true, 'Expected ' +\n '\"proof.domain\" to be either a string or an unordered ' +\n 'set of strings.');\n }\n }\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Njo-kHgHfWhU47zHweHTV", - "ctx": null, - "_testId": "urn:uuid:d634d96b-f478-4765-9ac3-37c4647d1e67", - "cell": { - "columnId": "EWF", - "rowId": "The domain property is OPTIONAL. It conveys one or more security domains in which the proof is meant to be used. If specified, the associated value MUST be either a string, or an unordered set of strings. A verifier SHOULD use the value to ensure that the proof was intended to be used in the security domain in which the verifier is operating." + "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.", + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 8515, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true }, - "_events": {}, - "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=The%20domain%20property%20is%20OPTIONAL.%20It%20conveys%20one%20or%20more%20security%20domains%20in%20which%20the%20proof%20is%20meant%20to%20be%20used.%20If%20specified%2C%20the%20associated%20value%20MUST", - "duration": 0, + "duration": 96, "state": "passed", - "speed": "fast" + "speed": "slow" }, { "type": "test", - "title": "The domain property is OPTIONAL. It conveys one or more security domains in which the proof is meant to be used. If specified, the associated value MUST be either a string, or an unordered set of strings. A verifier SHOULD use the value to ensure that the proof was intended to be used in the security domain in which the verifier is operating.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=The%20domain%20property%20is%20OPTIONAL.%20It%20conveys%20one%20or%20more%20security%20domains%20in%20which%20the%20proof%20is%20meant%20to%20be%20used.%20If%20specified%2C%20the%20associated%20value%20MUST';\n if(optionalTests.domain === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.domain) {\n const validType = isStringOrArrayOfStrings(proof.domain);\n validType.should.equal(true, 'Expected ' +\n '\"proof.domain\" to be either a string or an unordered ' +\n 'set of strings.');\n }\n }\n }", + "title": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.';\n const undefinedType = structuredClone(credential);\n undefinedType.type.push('InvalidType');\n await shouldFailIssuance({\n credential: undefinedType,\n issuer,\n reason: 'Expected issuer to error when VC has an undefined type.'\n });\n const undefinedTerm = structuredClone(credential);\n undefinedTerm.credentialSubject.invalidTerm = 'invalidTerm';\n await shouldFailIssuance({\n credential: undefinedTerm,\n issuer,\n reason: 'Expected issuer to error when VC has an undefined term.'\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -10199,34 +9417,40 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "FsVwMDitvb4cbtnFdkm_k", + "parent": "tikRDf1hNC-fQs8dM6EPO", "ctx": null, - "_testId": "urn:uuid:d818cfe8-0414-463f-9996-c126c23a60f5", + "_testId": "urn:uuid:ecf12839-22eb-43cf-a958-2de015599827", "cell": { - "columnId": "LearnCard", - "rowId": "The domain property is OPTIONAL. It conveys one or more security domains in which the proof is meant to be used. If specified, the associated value MUST be either a string, or an unordered set of strings. A verifier SHOULD use the value to ensure that the proof was intended to be used in the security domain in which the verifier is operating." + "columnId": "EWF", + "rowId": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=The%20domain%20property%20is%20OPTIONAL.%20It%20conveys%20one%20or%20more%20security%20domains%20in%20which%20the%20proof%20is%20meant%20to%20be%20used.%20If%20specified%2C%20the%20associated%20value%20MUST", - "duration": 0, - "state": "passed", - "speed": "fast" - }, - { - "cell": { - "rowId": "The domain property is OPTIONAL. It conveys one or more security domains in which the proof is meant to be used. If specified, the associated value MUST be either a string, or an unordered set of strings. A verifier SHOULD use the value to ensure that the proof was intended to be used in the security domain in which the verifier is operating.", - "colId": "OpSecId" + "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.", + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 9206, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true }, - "state": "pending", + "duration": 109, + "state": "failed", "err": { - "message": "Test skipped." + "name": "AssertionError", + "message": "Expected issuer to error when VC has an undefined type.: expected Response { status: 201, statusText: 'Created', headers: Headers { date: 'Sun, 01 Sep 2024 05:01:41 GMT', 'content-type': 'application/json; charset=utf-8', 'content-length': '742', connection: 'keep-alive', 'x-powered-by': 'Express', vary: 'Origin', etag: 'W/\"2e6-D2MtB7A9tOV5YwDjeakleFyH4Z8\"', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist", + "showDiff": false, + "actual": {}, + "operator": "notStrictEqual", + "stack": "AssertionError: Expected issuer to error when VC has an undefined type.: expected Response { status: 201, statusText: 'Created', headers: Headers { date: 'Sun, 01 Sep 2024 05:01:41 GMT', 'content-type': 'application/json; charset=utf-8', 'content-length': '742', connection: 'keep-alive', 'x-powered-by': 'Express', vary: 'Origin', etag: 'W/\"2e6-D2MtB7A9tOV5YwDjeakleFyH4Z8\"', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at shouldFailIssuance (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:71:14)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:258:7)" } }, { "type": "test", - "title": "The domain property is OPTIONAL. It conveys one or more security domains in which the proof is meant to be used. If specified, the associated value MUST be either a string, or an unordered set of strings. A verifier SHOULD use the value to ensure that the proof was intended to be used in the security domain in which the verifier is operating.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=The%20domain%20property%20is%20OPTIONAL.%20It%20conveys%20one%20or%20more%20security%20domains%20in%20which%20the%20proof%20is%20meant%20to%20be%20used.%20If%20specified%2C%20the%20associated%20value%20MUST';\n if(optionalTests.domain === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.domain) {\n const validType = isStringOrArrayOfStrings(proof.domain);\n validType.should.equal(true, 'Expected ' +\n '\"proof.domain\" to be either a string or an unordered ' +\n 'set of strings.');\n }\n }\n }", + "title": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.';\n const undefinedType = structuredClone(credential);\n undefinedType.type.push('InvalidType');\n await shouldFailIssuance({\n credential: undefinedType,\n issuer,\n reason: 'Expected issuer to error when VC has an undefined type.'\n });\n const undefinedTerm = structuredClone(credential);\n undefinedTerm.credentialSubject.invalidTerm = 'invalidTerm';\n await shouldFailIssuance({\n credential: undefinedTerm,\n issuer,\n reason: 'Expected issuer to error when VC has an undefined term.'\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -10236,24 +9460,40 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "gOLKDdlOgm5o-DegeI1Ps", + "parent": "3UTW-_LttILA3ILQtGZo2", "ctx": null, - "_testId": "urn:uuid:7e3e5547-0496-4d67-9b85-787852d58766", + "_testId": "urn:uuid:a0c9384d-2d12-4a99-a3f8-faa81b08d2bc", "cell": { - "columnId": "SpruceID", - "rowId": "The domain property is OPTIONAL. It conveys one or more security domains in which the proof is meant to be used. If specified, the associated value MUST be either a string, or an unordered set of strings. A verifier SHOULD use the value to ensure that the proof was intended to be used in the security domain in which the verifier is operating." + "columnId": "LearnCard", + "rowId": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=The%20domain%20property%20is%20OPTIONAL.%20It%20conveys%20one%20or%20more%20security%20domains%20in%20which%20the%20proof%20is%20meant%20to%20be%20used.%20If%20specified%2C%20the%20associated%20value%20MUST", - "duration": 0, - "state": "passed", - "speed": "fast" + "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.", + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 9647, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 129, + "state": "failed", + "err": { + "name": "AssertionError", + "message": "Expected issuer to error when VC has an undefined type.: expected Response { status: 201, statusText: 'Created', headers: Headers { date: 'Sun, 01 Sep 2024 05:01:41 GMT', 'content-type': 'application/json; charset=utf-8', 'content-length': '758', connection: 'keep-alive', etag: 'W/\"2f6-XIBDOwkbup9zd49/uujr0glIeIo\"', 'x-powered-by': 'Express', 'apigw-requestid': 'daNAcgLZIAMEaRw=', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist", + "showDiff": false, + "actual": {}, + "operator": "notStrictEqual", + "stack": "AssertionError: Expected issuer to error when VC has an undefined type.: expected Response { status: 201, statusText: 'Created', headers: Headers { date: 'Sun, 01 Sep 2024 05:01:41 GMT', 'content-type': 'application/json; charset=utf-8', 'content-length': '758', connection: 'keep-alive', etag: 'W/\"2f6-XIBDOwkbup9zd49/uujr0glIeIo\"', 'x-powered-by': 'Express', 'apigw-requestid': 'daNAcgLZIAMEaRw=', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at shouldFailIssuance (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:71:14)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:258:7)" + } }, { "type": "test", - "title": "The domain property is OPTIONAL. It conveys one or more security domains in which the proof is meant to be used. If specified, the associated value MUST be either a string, or an unordered set of strings. A verifier SHOULD use the value to ensure that the proof was intended to be used in the security domain in which the verifier is operating.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=The%20domain%20property%20is%20OPTIONAL.%20It%20conveys%20one%20or%20more%20security%20domains%20in%20which%20the%20proof%20is%20meant%20to%20be%20used.%20If%20specified%2C%20the%20associated%20value%20MUST';\n if(optionalTests.domain === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.domain) {\n const validType = isStringOrArrayOfStrings(proof.domain);\n validType.should.equal(true, 'Expected ' +\n '\"proof.domain\" to be either a string or an unordered ' +\n 'set of strings.');\n }\n }\n }", + "title": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.';\n const undefinedType = structuredClone(credential);\n undefinedType.type.push('InvalidType');\n await shouldFailIssuance({\n credential: undefinedType,\n issuer,\n reason: 'Expected issuer to error when VC has an undefined type.'\n });\n const undefinedTerm = structuredClone(credential);\n undefinedTerm.credentialSubject.invalidTerm = 'invalidTerm';\n await shouldFailIssuance({\n credential: undefinedTerm,\n issuer,\n reason: 'Expected issuer to error when VC has an undefined term.'\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -10263,57 +9503,40 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "RZteP052VeaXIQkX5MUvo", + "parent": "V3app5v08kK3UQYixBWWE", "ctx": null, - "_testId": "urn:uuid:f305fb9a-e7e5-4b4a-8fac-481d001db9f4", + "_testId": "urn:uuid:55faf531-ed98-4fab-99f6-6ff50e3bf706", "cell": { - "columnId": "Trinsic", - "rowId": "The domain property is OPTIONAL. It conveys one or more security domains in which the proof is meant to be used. If specified, the associated value MUST be either a string, or an unordered set of strings. A verifier SHOULD use the value to ensure that the proof was intended to be used in the security domain in which the verifier is operating." + "columnId": "OpSecId", + "rowId": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=The%20domain%20property%20is%20OPTIONAL.%20It%20conveys%20one%20or%20more%20security%20domains%20in%20which%20the%20proof%20is%20meant%20to%20be%20used.%20If%20specified%2C%20the%20associated%20value%20MUST", - "duration": 0, - "state": "passed", - "speed": "fast" - } - ] - }, - { - "id": "(challenge) A string value that SHOULD be included in a proof if a domain is specified.", - "link": "https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=A%20string%20value%20that%20SHOULD%20be%20included%20in%20a%20proof%20if%20a%20domain%20is%20specified.", - "cells": [ - { - "type": "test", - "title": "(challenge) A string value that SHOULD be included in a proof if a domain is specified.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=A%20string%20value%20that%20SHOULD%20be%20included%20in%20a%20proof%20if%20a%20domain%20is%20specified.';\n if(optionalTests.domain === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.challenge) {\n // domain must be specified\n should.exist(proof.domain, 'Expected \"proof.domain\" ' +\n 'to be specified.');\n proof.challenge.should.be.a('string', 'Expected ' +\n '\"proof.challenge\" to be a string.');\n }\n }\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Q-Y1cYh4G8cDll4bwtBlR", - "ctx": null, - "_testId": "urn:uuid:42c7d848-b085-4dcb-9a03-a1a5f0f17555", - "cell": { - "columnId": "apicatalog.com", - "rowId": "(challenge) A string value that SHOULD be included in a proof if a domain is specified." + "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.", + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 9955, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true }, - "_events": {}, - "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=A%20string%20value%20that%20SHOULD%20be%20included%20in%20a%20proof%20if%20a%20domain%20is%20specified.", - "duration": 0, - "state": "passed", - "speed": "fast" + "duration": 31, + "state": "failed", + "err": { + "name": "AssertionError", + "message": "Expected issuer to error when VC has an undefined type.: expected Response { status: 201, statusText: 'Created', headers: Headers { 'content-length': '796', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 01 Sep 2024 05:01:42 GMT', server: 'Python/3.12 aiohttp/3.10.5', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist", + "showDiff": false, + "actual": {}, + "operator": "notStrictEqual", + "stack": "AssertionError: Expected issuer to error when VC has an undefined type.: expected Response { status: 201, statusText: 'Created', headers: Headers { 'content-length': '796', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 01 Sep 2024 05:01:42 GMT', server: 'Python/3.12 aiohttp/3.10.5', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at shouldFailIssuance (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:71:14)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:258:7)" + } }, { "type": "test", - "title": "(challenge) A string value that SHOULD be included in a proof if a domain is specified.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=A%20string%20value%20that%20SHOULD%20be%20included%20in%20a%20proof%20if%20a%20domain%20is%20specified.';\n if(optionalTests.domain === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.challenge) {\n // domain must be specified\n should.exist(proof.domain, 'Expected \"proof.domain\" ' +\n 'to be specified.');\n proof.challenge.should.be.a('string', 'Expected ' +\n '\"proof.challenge\" to be a string.');\n }\n }\n }", + "title": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.';\n const undefinedType = structuredClone(credential);\n undefinedType.type.push('InvalidType');\n await shouldFailIssuance({\n credential: undefinedType,\n issuer,\n reason: 'Expected issuer to error when VC has an undefined type.'\n });\n const undefinedTerm = structuredClone(credential);\n undefinedTerm.credentialSubject.invalidTerm = 'invalidTerm';\n await shouldFailIssuance({\n credential: undefinedTerm,\n issuer,\n reason: 'Expected issuer to error when VC has an undefined term.'\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -10323,51 +9546,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "inrDQx7FuP3tRBmfKO9Ff", + "parent": "pJvzjaJb0oGOCZ6Fp689R", "ctx": null, - "_testId": "urn:uuid:db001d9a-7477-422a-b6d4-09b5c6734638", + "_testId": "urn:uuid:1320f47d-75ae-4d2e-9d6c-1d2478a17ea1", "cell": { - "columnId": "Danube Tech", - "rowId": "(challenge) A string value that SHOULD be included in a proof if a domain is specified." + "columnId": "SpruceID", + "rowId": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=A%20string%20value%20that%20SHOULD%20be%20included%20in%20a%20proof%20if%20a%20domain%20is%20specified.", - "duration": 1, - "state": "passed", - "speed": "fast" - }, - { - "type": "test", - "title": "(challenge) A string value that SHOULD be included in a proof if a domain is specified.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=A%20string%20value%20that%20SHOULD%20be%20included%20in%20a%20proof%20if%20a%20domain%20is%20specified.';\n if(optionalTests.domain === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.challenge) {\n // domain must be specified\n should.exist(proof.domain, 'Expected \"proof.domain\" ' +\n 'to be specified.');\n proof.challenge.should.be.a('string', 'Expected ' +\n '\"proof.challenge\" to be a string.');\n }\n }\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "rrzz3mWjDHnKXxRkUzYAu", - "ctx": null, - "_testId": "urn:uuid:a19438e8-9589-476e-8e6d-0ed75562bd20", - "cell": { - "columnId": "Digital Bazaar", - "rowId": "(challenge) A string value that SHOULD be included in a proof if a domain is specified." + "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.", + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 10089, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true }, - "_events": {}, - "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=A%20string%20value%20that%20SHOULD%20be%20included%20in%20a%20proof%20if%20a%20domain%20is%20specified.", - "duration": 0, + "duration": 71, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "(challenge) A string value that SHOULD be included in a proof if a domain is specified.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=A%20string%20value%20that%20SHOULD%20be%20included%20in%20a%20proof%20if%20a%20domain%20is%20specified.';\n if(optionalTests.domain === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.challenge) {\n // domain must be specified\n should.exist(proof.domain, 'Expected \"proof.domain\" ' +\n 'to be specified.');\n proof.challenge.should.be.a('string', 'Expected ' +\n '\"proof.challenge\" to be a string.');\n }\n }\n }", + "title": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.';\n const undefinedType = structuredClone(credential);\n undefinedType.type.push('InvalidType');\n await shouldFailIssuance({\n credential: undefinedType,\n issuer,\n reason: 'Expected issuer to error when VC has an undefined type.'\n });\n const undefinedTerm = structuredClone(credential);\n undefinedTerm.credentialSubject.invalidTerm = 'invalidTerm';\n await shouldFailIssuance({\n credential: undefinedTerm,\n issuer,\n reason: 'Expected issuer to error when VC has an undefined term.'\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -10377,24 +9582,46 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Njo-kHgHfWhU47zHweHTV", + "parent": "qmgk3hHclzYw9jf2QjmPc", "ctx": null, - "_testId": "urn:uuid:15b5fc82-9c84-42b0-8abe-0d7adc39a2de", + "_testId": "urn:uuid:a587c048-7880-4727-8c26-2ac27ff5f3ab", "cell": { - "columnId": "EWF", - "rowId": "(challenge) A string value that SHOULD be included in a proof if a domain is specified." + "columnId": "Trinsic", + "rowId": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=A%20string%20value%20that%20SHOULD%20be%20included%20in%20a%20proof%20if%20a%20domain%20is%20specified.", - "duration": 0, - "state": "passed", - "speed": "fast" - }, + "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.", + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 11082, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 85, + "state": "failed", + "err": { + "name": "AssertionError", + "message": "Expected issuer to error when VC has an undefined type.: expected Response { status: 200, statusText: 'OK', headers: Headers { date: 'Sun, 01 Sep 2024 05:01:43 GMT', 'content-type': 'text/html; charset=utf-8', 'transfer-encoding': 'chunked', connection: 'keep-alive', 'cache-control': 'no-cache,no-store', expires: '-1', pragma: 'no-cache', 'x-envoy-upstream-service-time': '66', 'cf-cache-status': 'DYNAMIC', 'report-to': '{\"endpoints\":[{\"url\":\"https:\\\\/\\\\/a.nel.cloudflare.com\\\\/report\\\\/v4?s=w6sjM6VoQhrr8EpU0l9oNyiMc%2FJv%2BpjQUGdevet5W9Soe6jTtCY14LE5X2DtQE4QNLLJnnt46Z%2B%2BwJD8dUm3BF3TEtTMsVvO6FyW2S9FElFrAMDGAL6nIdsoEqlUMkX15gUbnT%2F%2B9%2BbWQe6fuKNf\"}],\"group\":\"cf-nel\",\"max_age\":604800}', nel: '{\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}', server: 'cloudflare', 'cf-ray': '8bc2b438bfbc1316-IAD', 'content-encoding': 'br', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: null, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist", + "showDiff": false, + "actual": {}, + "operator": "notStrictEqual", + "stack": "AssertionError: Expected issuer to error when VC has an undefined type.: expected Response { status: 200, statusText: 'OK', headers: Headers { date: 'Sun, 01 Sep 2024 05:01:43 GMT', 'content-type': 'text/html; charset=utf-8', 'transfer-encoding': 'chunked', connection: 'keep-alive', 'cache-control': 'no-cache,no-store', expires: '-1', pragma: 'no-cache', 'x-envoy-upstream-service-time': '66', 'cf-cache-status': 'DYNAMIC', 'report-to': '{\"endpoints\":[{\"url\":\"https:\\\\/\\\\/a.nel.cloudflare.com\\\\/report\\\\/v4?s=w6sjM6VoQhrr8EpU0l9oNyiMc%2FJv%2BpjQUGdevet5W9Soe6jTtCY14LE5X2DtQE4QNLLJnnt46Z%2B%2BwJD8dUm3BF3TEtTMsVvO6FyW2S9FElFrAMDGAL6nIdsoEqlUMkX15gUbnT%2F%2B9%2BbWQe6fuKNf\"}],\"group\":\"cf-nel\",\"max_age\":604800}', nel: '{\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}', server: 'cloudflare', 'cf-ray': '8bc2b438bfbc1316-IAD', 'content-encoding': 'br', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: null, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at shouldFailIssuance (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:71:14)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:258:7)" + } + } + ] + }, + { + "id": "When an application is securing a document, if an @context property is not provided in the document or the Data Integrity terms used in the document are not mapped by existing values in the @context property, implementations SHOULD inject or append an @context property with a value of https://w3id.org/security/data-integrity/v2 or one or more contexts with at least the same declarations, such as the Verifiable Credential Data Model v2.0 context (https://www.w3.org/ns/credentials/v2).", + "link": "https://w3c.github.io/vc-data-integrity/#context-injection:~:text=if%20an%20%40context%20property%20is%20not%20provided%20in%20the%20document%20or%20the%20Data%20Integrity%20terms%20used%20in%20the%20document%20are%20not%20mapped%20by%20existing%20values%20in%20the%20%40context%20property%2C%20implementations%20SHOULD%20inject%20or%20append", + "cells": [ { "type": "test", - "title": "(challenge) A string value that SHOULD be included in a proof if a domain is specified.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=A%20string%20value%20that%20SHOULD%20be%20included%20in%20a%20proof%20if%20a%20domain%20is%20specified.';\n if(optionalTests.domain === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.challenge) {\n // domain must be specified\n should.exist(proof.domain, 'Expected \"proof.domain\" ' +\n 'to be specified.');\n proof.challenge.should.be.a('string', 'Expected ' +\n '\"proof.challenge\" to be a string.');\n }\n }\n }", + "title": "When an application is securing a document, if an @context property is not provided in the document or the Data Integrity terms used in the document are not mapped by existing values in the @context property, implementations SHOULD inject or append an @context property with a value of https://w3id.org/security/data-integrity/v2 or one or more contexts with at least the same declarations, such as the Verifiable Credential Data Model v2.0 context (https://www.w3.org/ns/credentials/v2).", + "body": "async function() {\n if(!issuer) {\n throw new Error(`Expected ${vendorName} to have an issuer.`);\n }\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#context-injection:~:text=if%20an%20%40context%20property%20is%20not%20provided%20in%20the%20document%20or%20the%20Data%20Integrity%20terms%20used%20in%20the%20document%20are%20not%20mapped%20by%20existing%20values%20in%20the%20%40context%20property%2C%20implementations%20SHOULD%20inject%20or%20append';\n if(optionalTests.contextInjection === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n const _credential = structuredClone(credential);\n const expectedContexts = [\n 'https://w3id.org/security/data-integrity/v2',\n 'https://www.w3.org/ns/credentials/v2'\n ];\n // remove the vc's context and expect context injection to occur\n delete _credential['@context'];\n let err;\n let data;\n try {\n data = await createInitialVc({issuer, credential: _credential});\n } catch(e) {\n err = e;\n }\n should.not.exist(\n err,\n `Expected issuer ${vendorName} to perform context injection on a ` +\n `VC with out an \"@context\" property`);\n should.exist(data, `Expected issuer ${vendorName} to return data.`);\n data.should.be.an('object', 'Expected response data to be an object.');\n should.exist(data['@context'],\n 'Expected data to have an injected \"@context\" property.');\n if(Array.isArray(data['@context'])) {\n const hasExpectedContext = expectedContexts.some(\n ctx => data['@context'].includes(ctx));\n return hasExpectedContext.should.equal(true,\n `Expected injected context to contain one of ${expectedContexts}`);\n }\n data['@context'].should.be.oneOf(expectedContexts);\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -10404,101 +9631,135 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "FsVwMDitvb4cbtnFdkm_k", + "parent": "yxhpYILOcqbki3FDec94S", "ctx": null, - "_testId": "urn:uuid:fa8e7b12-8685-4205-8968-c8c0ce3ffec6", + "_testId": "urn:uuid:76a817d9-ea10-47db-8f85-c66ffaa7726d", "cell": { - "columnId": "LearnCard", - "rowId": "(challenge) A string value that SHOULD be included in a proof if a domain is specified." + "columnId": "apicatalog.com", + "rowId": "When an application is securing a document, if an @context property is not provided in the document or the Data Integrity terms used in the document are not mapped by existing values in the @context property, implementations SHOULD inject or append an @context property with a value of https://w3id.org/security/data-integrity/v2 or one or more contexts with at least the same declarations, such as the Verifiable Credential Data Model v2.0 context (https://www.w3.org/ns/credentials/v2)." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=A%20string%20value%20that%20SHOULD%20be%20included%20in%20a%20proof%20if%20a%20domain%20is%20specified.", - "duration": 0, - "state": "passed", - "speed": "fast" - }, - { - "cell": { - "rowId": "(challenge) A string value that SHOULD be included in a proof if a domain is specified.", - "colId": "OpSecId" + "link": "https://w3c.github.io/vc-data-integrity/#context-injection:~:text=if%20an%20%40context%20property%20is%20not%20provided%20in%20the%20document%20or%20the%20Data%20Integrity%20terms%20used%20in%20the%20document%20are%20not%20mapped%20by%20existing%20values%20in%20the%20%40context%20property%2C%20implementations%20SHOULD%20inject%20or%20append", + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 6302, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true }, - "state": "pending", + "duration": 57, + "state": "failed", "err": { - "message": "Test skipped." - } - }, - { - "type": "test", - "title": "(challenge) A string value that SHOULD be included in a proof if a domain is specified.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=A%20string%20value%20that%20SHOULD%20be%20included%20in%20a%20proof%20if%20a%20domain%20is%20specified.';\n if(optionalTests.domain === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.challenge) {\n // domain must be specified\n should.exist(proof.domain, 'Expected \"proof.domain\" ' +\n 'to be specified.');\n proof.challenge.should.be.a('string', 'Expected ' +\n '\"proof.challenge\" to be a string.');\n }\n }\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "gOLKDdlOgm5o-DegeI1Ps", - "ctx": null, - "_testId": "urn:uuid:58112a30-9596-4985-b70f-be05e826e4cd", - "cell": { - "columnId": "SpruceID", - "rowId": "(challenge) A string value that SHOULD be included in a proof if a domain is specified." - }, - "_events": {}, - "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=A%20string%20value%20that%20SHOULD%20be%20included%20in%20a%20proof%20if%20a%20domain%20is%20specified.", - "duration": 0, - "state": "passed", - "speed": "fast" + "name": "AssertionError", + "message": "Expected issuer apicatalog.com to perform context injection on a VC with out an \"@context\" property: expected HTTPError: Request failed with status cod… { …(6) } to not exist", + "showDiff": false, + "actual": { + "response": {}, + "request": {}, + "options": { + "credentials": "same-origin", + "headers": {}, + "body": "{\"credential\":{\"id\":\"urn:uuid:d51d51c6-6f38-468c-b8d5-c78d687acac6\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"}},\"options\":{}}", + "method": "POST", + "json": { + "credential": { + "id": "urn:uuid:d51d51c6-6f38-468c-b8d5-c78d687acac6", + "type": [ + "VerifiableCredential" + ], + "issuer": "https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020", + "issuanceDate": "2020-03-16T22:37:26.544Z", + "credentialSubject": { + "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" + } + }, + "options": {} + }, + "agent": { + "_events": {}, + "_eventsCount": 2, + "defaultPort": 443, + "protocol": "https:", + "options": { + "rejectUnauthorized": false, + "noDelay": true, + "path": null + }, + "requests": {}, + "sockets": {}, + "freeSockets": {}, + "keepAliveMsecs": 1000, + "keepAlive": false, + "maxSockets": null, + "maxFreeSockets": 256, + "scheduling": "lifo", + "maxTotalSockets": null, + "totalSocketCount": 0, + "maxCachedSessions": 100, + "_sessionCache": { + "map": {}, + "list": [] + } + }, + "hooks": { + "beforeRequest": [], + "beforeRetry": [], + "beforeError": [], + "afterResponse": [] + }, + "prefixUrl": "", + "retry": { + "limit": 2, + "methods": [ + "get", + "put", + "head", + "delete", + "options", + "trace" + ], + "statusCodes": [ + 408, + 413, + 429, + 500, + 502, + 503, + 504 + ], + "afterStatusCodes": [ + 413, + 429, + 503 + ], + "maxRetryAfter": null, + "backoffLimit": null + }, + "throwHttpErrors": true, + "timeout": 10000, + "signal": {}, + "duplex": "half" + }, + "name": "HTTPError", + "requestUrl": "https://vc.apicatalog.com/credentials/issue?suite=Ed25519Signature2020", + "status": 400, + "data": { + "id": "MALFORMED", + "code": "INVALID_DOCUMENT", + "message": null + } + }, + "operator": "notStrictEqual", + "stack": "AssertionError: Expected issuer apicatalog.com to perform context injection on a VC with out an \"@context\" property: expected HTTPError: Request failed with status cod… { …(6) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:454:18)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" + } }, { "type": "test", - "title": "(challenge) A string value that SHOULD be included in a proof if a domain is specified.", - "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=A%20string%20value%20that%20SHOULD%20be%20included%20in%20a%20proof%20if%20a%20domain%20is%20specified.';\n if(optionalTests.domain === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.challenge) {\n // domain must be specified\n should.exist(proof.domain, 'Expected \"proof.domain\" ' +\n 'to be specified.');\n proof.challenge.should.be.a('string', 'Expected ' +\n '\"proof.challenge\" to be a string.');\n }\n }\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "RZteP052VeaXIQkX5MUvo", - "ctx": null, - "_testId": "urn:uuid:73ed5f36-92cd-4870-be1b-d3c6730fd25d", - "cell": { - "columnId": "Trinsic", - "rowId": "(challenge) A string value that SHOULD be included in a proof if a domain is specified." - }, - "_events": {}, - "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=A%20string%20value%20that%20SHOULD%20be%20included%20in%20a%20proof%20if%20a%20domain%20is%20specified.", - "duration": 0, - "state": "passed", - "speed": "fast" - } - ] - } - ] - }, - { - "title": "Ed25519Signature2020 (issuer)", - "ctx": null, - "suites": [ - { - "title": "apicatalog.com", - "ctx": null, - "suites": [], - "tests": [ - { - "type": "test", - "title": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n should.exist(issuedVc, 'Expected issuer to have issued a ' +\n 'credential.');\n should.exist(proofs, 'Expected credential to have a proof.');\n const ed25519Proofs = proofs.filter(\n proof => proof?.type === 'Ed25519Signature2020');\n ed25519Proofs.length.should.be.gte(1, 'Expected at least one ' +\n 'Ed25519 proof.');\n for(const proof of ed25519Proofs) {\n should.exist(proof.proofValue, 'Expected a proof value on ' +\n 'the proof.');\n const valueBytes = bs58Decode({id: proof.proofValue});\n should.exist(proof.verificationMethod);\n const vmBytes = await getPublicKeyBytes({\n did: proof.verificationMethod});\n vmBytes.byteLength.should.be.oneOf([32, 57], 'Expected public ' +\n 'key bytes to be either 32 or 57 bytes.');\n if(vmBytes.byteLength === 32) {\n valueBytes.byteLength.should.equal(64, 'Expected 64 bytes ' +\n 'proofValue for 32 bytes key.');\n } else {\n valueBytes.byteLength.should.equal(114, 'Expected 114 bytes ' +\n 'proofValue for 57 bytes key.');\n }\n }\n }", + "title": "When an application is securing a document, if an @context property is not provided in the document or the Data Integrity terms used in the document are not mapped by existing values in the @context property, implementations SHOULD inject or append an @context property with a value of https://w3id.org/security/data-integrity/v2 or one or more contexts with at least the same declarations, such as the Verifiable Credential Data Model v2.0 context (https://www.w3.org/ns/credentials/v2).", + "body": "async function() {\n if(!issuer) {\n throw new Error(`Expected ${vendorName} to have an issuer.`);\n }\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#context-injection:~:text=if%20an%20%40context%20property%20is%20not%20provided%20in%20the%20document%20or%20the%20Data%20Integrity%20terms%20used%20in%20the%20document%20are%20not%20mapped%20by%20existing%20values%20in%20the%20%40context%20property%2C%20implementations%20SHOULD%20inject%20or%20append';\n if(optionalTests.contextInjection === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n const _credential = structuredClone(credential);\n const expectedContexts = [\n 'https://w3id.org/security/data-integrity/v2',\n 'https://www.w3.org/ns/credentials/v2'\n ];\n // remove the vc's context and expect context injection to occur\n delete _credential['@context'];\n let err;\n let data;\n try {\n data = await createInitialVc({issuer, credential: _credential});\n } catch(e) {\n err = e;\n }\n should.not.exist(\n err,\n `Expected issuer ${vendorName} to perform context injection on a ` +\n `VC with out an \"@context\" property`);\n should.exist(data, `Expected issuer ${vendorName} to return data.`);\n data.should.be.an('object', 'Expected response data to be an object.');\n should.exist(data['@context'],\n 'Expected data to have an injected \"@context\" property.');\n if(Array.isArray(data['@context'])) {\n const hasExpectedContext = expectedContexts.some(\n ctx => data['@context'].includes(ctx));\n return hasExpectedContext.should.equal(true,\n `Expected injected context to contain one of ${expectedContexts}`);\n }\n data['@context'].should.be.oneOf(expectedContexts);\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -10508,64 +9769,30 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "i7kRZXzA5RnGgOruZjVpf", + "parent": "QHK1IypTjZvkcHZsBOX_g", "ctx": null, - "_testId": "urn:uuid:d2c227a4-a54f-4eee-801c-5b302a6f9c17", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:71b2261c-6df8-4a5d-ab8a-7cee06c94634", "cell": { - "columnId": "apicatalog.com", - "rowId": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes." - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 10448, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true + "columnId": "Danube Tech", + "rowId": "When an application is securing a document, if an @context property is not provided in the document or the Data Integrity terms used in the document are not mapped by existing values in the @context property, implementations SHOULD inject or append an @context property with a value of https://w3id.org/security/data-integrity/v2 or one or more contexts with at least the same declarations, such as the Verifiable Credential Data Model v2.0 context (https://www.w3.org/ns/credentials/v2)." }, - "duration": 1, - "state": "passed", - "speed": "fast" - }, - { - "type": "test", - "title": "\"proof\" MUST verify when using a conformant verifier.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title,\n };\n should.exist(verifier, 'Expected implementation to have a VC ' +\n 'HTTP API compatible verifier.');\n const {result, error} = await verifier.post({json: {\n verifiableCredential: issuedVc,\n options: {checks: ['proof']}\n }});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected verifier to return a result.');\n result.status.should.not.equal(400, 'Expected status code to not ' +\n 'be 400.');\n result.status.should.equal(200, 'Expected status code to be 200.');\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "i7kRZXzA5RnGgOruZjVpf", - "ctx": null, - "_testId": "urn:uuid:100f9d18-62dd-4499-9deb-db2a9d40ddab", "_events": {}, "_eventsCount": 1, - "cell": { - "columnId": "apicatalog.com", - "rowId": "\"proof\" MUST verify when using a conformant verifier." - }, + "link": "https://w3c.github.io/vc-data-integrity/#context-injection:~:text=if%20an%20%40context%20property%20is%20not%20provided%20in%20the%20document%20or%20the%20Data%20Integrity%20terms%20used%20in%20the%20document%20are%20not%20mapped%20by%20existing%20values%20in%20the%20%40context%20property%2C%20implementations%20SHOULD%20inject%20or%20append", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10449, + "_idleStart": 7658, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 71, + "duration": 108, "state": "failed", "err": { "name": "AssertionError", - "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist", + "message": "Expected issuer Danube Tech to perform context injection on a VC with out an \"@context\" property: expected HTTPError: Request failed with status cod… { …(6) } to not exist", "showDiff": false, "actual": { "response": {}, @@ -10573,33 +9800,22 @@ "options": { "credentials": "same-origin", "headers": {}, - "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",\"https://w3id.org/security/suites/ed25519-2020/v1\"],\"id\":\"urn:uuid:2beea04d-17c3-4d57-aec0-be9a428e5004\",\"type\":\"VerifiableCredential\",\"issuer\":\"https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"verificationMethod\":\"did:key:z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y#z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y\",\"type\":\"Ed25519Signature2020\",\"proofPurpose\":\"assertionMethod\",\"created\":\"2024-08-25T05:01:43Z\",\"proofValue\":\"z5SonXRDixYuCxyZQbdBTSSXGcz4YGvby6LNYNESQjUXP99FR83cpXQ85r1wFQ8VoFGze6Gkt5fZYuzLFJdwwPefb\"}},\"options\":{\"checks\":[\"proof\"]}}", + "body": "{\"credential\":{\"id\":\"urn:uuid:76308318-91f0-4a20-811e-de38e4736060\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MksvTdeczd92YQ5W2V2gL9kXdRvD2AEiyJPoWieP95HUDo\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"}},\"options\":{\"type\":\"Ed25519Signature2020\"}}", "method": "POST", "json": { - "verifiableCredential": { - "@context": [ - "https://www.w3.org/2018/credentials/v1", - "https://w3id.org/security/suites/ed25519-2020/v1" + "credential": { + "id": "urn:uuid:76308318-91f0-4a20-811e-de38e4736060", + "type": [ + "VerifiableCredential" ], - "id": "urn:uuid:2beea04d-17c3-4d57-aec0-be9a428e5004", - "type": "VerifiableCredential", - "issuer": "https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020", + "issuer": "did:key:z6MksvTdeczd92YQ5W2V2gL9kXdRvD2AEiyJPoWieP95HUDo", "issuanceDate": "2020-03-16T22:37:26.544Z", "credentialSubject": { "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" - }, - "proof": { - "verificationMethod": "did:key:z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y#z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y", - "type": "Ed25519Signature2020", - "proofPurpose": "assertionMethod", - "created": "2024-08-25T05:01:43Z", - "proofValue": "z5SonXRDixYuCxyZQbdBTSSXGcz4YGvby6LNYNESQjUXP99FR83cpXQ85r1wFQ8VoFGze6Gkt5fZYuzLFJdwwPefb" } }, "options": { - "checks": [ - "proof" - ] + "type": "Ed25519Signature2020" } }, "agent": { @@ -10668,79 +9884,22 @@ "duplex": "half" }, "name": "HTTPError", - "requestUrl": "https://vc.apicatalog.com/credentials/verify", + "requestUrl": "https://uniissuer.io/1.0/credentials/issue", "status": 400, - "data": { - "checks": [ - "PROOF", - "INVALID_SIGNATURE" - ], - "warnings": [], - "errors": [] - } + "data": [ + { + "error": "Validation error: JSON-LD problem. (Undefined JSON-LD term: id)" + } + ] }, "operator": "notStrictEqual", - "stack": "AssertionError: Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js:105:24)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" + "stack": "AssertionError: Expected issuer Danube Tech to perform context injection on a VC with out an \"@context\" property: expected HTTPError: Request failed with status cod… { …(6) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:454:18)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" } - } - ], - "root": false, - "pending": false, - "_retries": -1, - "_beforeEach": [], - "_beforeAll": [ + }, { - "title": "\"before all\" hook in \"apicatalog.com\"", - "body": "async function() {\n const [issuer] = endpoints;\n verifier = implementation.verifiers.find(\n verifier => verifier.tags.has(tag));\n const {settings: {id: issuerId, options}} = issuer;\n const body = {credential: klona(validVc), options};\n body.credential.id = `urn:uuid:${uuidv4()}`;\n body.credential.issuer = issuerId;\n const {data, error} = await issuer.post({json: body});\n if(error) {\n throw error;\n }\n issuedVc = data;\n const {proof} = issuedVc || {};\n proofs = Array.isArray(proof) ? proof : [proof];\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "type": "hook", - "parent": "i7kRZXzA5RnGgOruZjVpf", - "ctx": null, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "originalTitle": "\"before all\" hook", - "_events": {}, - "_eventsCount": 1, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 10314, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 134, - "_error": null - } - ], - "_afterEach": [], - "_afterAll": [], - "_timeout": 15000, - "_slow": 75, - "_bail": false, - "_onlyTests": [], - "_onlySuites": [], - "delayed": false, - "parent": "Xssoo53tV8ySDtlFVXM50", - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "_testId": "urn:uuid:a52feb64-25a0-407a-80f6-25c67b0e3787" - }, - { - "title": "Danube Tech", - "ctx": null, - "suites": [], - "tests": [ - { - "type": "test", - "title": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n should.exist(issuedVc, 'Expected issuer to have issued a ' +\n 'credential.');\n should.exist(proofs, 'Expected credential to have a proof.');\n const ed25519Proofs = proofs.filter(\n proof => proof?.type === 'Ed25519Signature2020');\n ed25519Proofs.length.should.be.gte(1, 'Expected at least one ' +\n 'Ed25519 proof.');\n for(const proof of ed25519Proofs) {\n should.exist(proof.proofValue, 'Expected a proof value on ' +\n 'the proof.');\n const valueBytes = bs58Decode({id: proof.proofValue});\n should.exist(proof.verificationMethod);\n const vmBytes = await getPublicKeyBytes({\n did: proof.verificationMethod});\n vmBytes.byteLength.should.be.oneOf([32, 57], 'Expected public ' +\n 'key bytes to be either 32 or 57 bytes.');\n if(vmBytes.byteLength === 32) {\n valueBytes.byteLength.should.equal(64, 'Expected 64 bytes ' +\n 'proofValue for 32 bytes key.');\n } else {\n valueBytes.byteLength.should.equal(114, 'Expected 114 bytes ' +\n 'proofValue for 57 bytes key.');\n }\n }\n }", + "type": "test", + "title": "When an application is securing a document, if an @context property is not provided in the document or the Data Integrity terms used in the document are not mapped by existing values in the @context property, implementations SHOULD inject or append an @context property with a value of https://w3id.org/security/data-integrity/v2 or one or more contexts with at least the same declarations, such as the Verifiable Credential Data Model v2.0 context (https://www.w3.org/ns/credentials/v2).", + "body": "async function() {\n if(!issuer) {\n throw new Error(`Expected ${vendorName} to have an issuer.`);\n }\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#context-injection:~:text=if%20an%20%40context%20property%20is%20not%20provided%20in%20the%20document%20or%20the%20Data%20Integrity%20terms%20used%20in%20the%20document%20are%20not%20mapped%20by%20existing%20values%20in%20the%20%40context%20property%2C%20implementations%20SHOULD%20inject%20or%20append';\n if(optionalTests.contextInjection === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n const _credential = structuredClone(credential);\n const expectedContexts = [\n 'https://w3id.org/security/data-integrity/v2',\n 'https://www.w3.org/ns/credentials/v2'\n ];\n // remove the vc's context and expect context injection to occur\n delete _credential['@context'];\n let err;\n let data;\n try {\n data = await createInitialVc({issuer, credential: _credential});\n } catch(e) {\n err = e;\n }\n should.not.exist(\n err,\n `Expected issuer ${vendorName} to perform context injection on a ` +\n `VC with out an \"@context\" property`);\n should.exist(data, `Expected issuer ${vendorName} to return data.`);\n data.should.be.an('object', 'Expected response data to be an object.');\n should.exist(data['@context'],\n 'Expected data to have an injected \"@context\" property.');\n if(Array.isArray(data['@context'])) {\n const hasExpectedContext = expectedContexts.some(\n ctx => data['@context'].includes(ctx));\n return hasExpectedContext.should.equal(true,\n `Expected injected context to contain one of ${expectedContexts}`);\n }\n data['@context'].should.be.oneOf(expectedContexts);\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -10750,32 +9909,185 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "wuzb1dwi_VN7BLBuHNMY4", + "parent": "3oybt7im9lmDGUjG_T3ge", "ctx": null, - "_testId": "urn:uuid:7eb082e2-ef41-4547-aa07-39f76ce6aa41", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:b7f55538-2d56-47d1-a8fd-aa6c0381e0a5", "cell": { - "columnId": "Danube Tech", - "rowId": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes." + "columnId": "Digital Bazaar", + "rowId": "When an application is securing a document, if an @context property is not provided in the document or the Data Integrity terms used in the document are not mapped by existing values in the @context property, implementations SHOULD inject or append an @context property with a value of https://w3id.org/security/data-integrity/v2 or one or more contexts with at least the same declarations, such as the Verifiable Credential Data Model v2.0 context (https://www.w3.org/ns/credentials/v2)." }, + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#context-injection:~:text=if%20an%20%40context%20property%20is%20not%20provided%20in%20the%20document%20or%20the%20Data%20Integrity%20terms%20used%20in%20the%20document%20are%20not%20mapped%20by%20existing%20values%20in%20the%20%40context%20property%2C%20implementations%20SHOULD%20inject%20or%20append", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10710, + "_idleStart": 8612, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 1, - "state": "passed", - "speed": "fast" + "duration": 71, + "state": "failed", + "err": { + "name": "AssertionError", + "message": "Expected issuer Digital Bazaar to perform context injection on a VC with out an \"@context\" property: expected HTTPError: A validation error occured in … { …(6) } to not exist", + "showDiff": false, + "actual": { + "response": {}, + "request": {}, + "options": { + "credentials": "same-origin", + "headers": {}, + "method": "POST", + "json": { + "credential": { + "id": "urn:uuid:36f0a27b-4c62-4631-a9c5-0680a9c30013", + "type": [ + "VerifiableCredential" + ], + "issuer": "did:key:z6MkkZu37ESix41fjPc2bFJ6eGsz1mbzdSn1MYcuU2qWBDAN", + "issuanceDate": "2020-03-16T22:37:26.544Z", + "credentialSubject": { + "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" + } + }, + "options": {} + }, + "agent": { + "_events": {}, + "_eventsCount": 2, + "defaultPort": 443, + "protocol": "https:", + "options": { + "rejectUnauthorized": false, + "noDelay": true, + "path": null + }, + "requests": {}, + "sockets": {}, + "freeSockets": {}, + "keepAliveMsecs": 1000, + "keepAlive": false, + "maxSockets": null, + "maxFreeSockets": 256, + "scheduling": "lifo", + "maxTotalSockets": null, + "totalSocketCount": 0, + "maxCachedSessions": 100, + "_sessionCache": { + "map": {}, + "list": [] + } + }, + "hooks": { + "beforeRequest": [], + "beforeRetry": [], + "beforeError": [], + "afterResponse": [] + }, + "prefixUrl": "", + "retry": { + "limit": 2, + "methods": [ + "get", + "put", + "head", + "delete", + "options", + "trace" + ], + "statusCodes": [ + 408, + 413, + 429, + 500, + 502, + 503, + 504 + ], + "afterStatusCodes": [ + 413, + 429, + 503 + ], + "maxRetryAfter": null, + "backoffLimit": null + }, + "throwHttpErrors": true, + "timeout": 10000, + "signal": {}, + "duplex": "half", + "body": "{\"credential\":{\"id\":\"urn:uuid:36f0a27b-4c62-4631-a9c5-0680a9c30013\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkkZu37ESix41fjPc2bFJ6eGsz1mbzdSn1MYcuU2qWBDAN\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"}},\"options\":{}}" + }, + "name": "HTTPError", + "requestUrl": "https://vc2.veresissuer.dev/issuers/z1A5TMiJPYBhYCutYH2XZULjt/credentials/issue", + "status": 400, + "data": { + "name": "ValidationError", + "message": "A validation error occured in the 'Issue Credential' validator.", + "details": { + "errors": [ + { + "stack": "ValidationError: should have required property '@context'\n at _createError (file:///home/node/app/node_modules/@bedrock/validation/lib/index.js:240:17)\n at validate (file:///home/node/app/node_modules/@bedrock/validation/lib/index.js:88:14)\n at validate (file:///home/node/app/node_modules/@bedrock/validation/lib/index.js:181:22)\n at Layer.handle [as handle_request] (/home/node/app/node_modules/express/lib/router/layer.js:95:5)\n at next (/home/node/app/node_modules/express/lib/router/route.js:149:13)\n at cors (/home/node/app/node_modules/cors/lib/index.js:188:7)\n at /home/node/app/node_modules/cors/lib/index.js:224:17\n at originCallback (/home/node/app/node_modules/cors/lib/index.js:214:15)\n at /home/node/app/node_modules/cors/lib/index.js:219:13\n at optionsCallback (/home/node/app/node_modules/cors/lib/index.js:199:9)", + "name": "ValidationError", + "message": "should have required property '@context'", + "details": { + "instance": { + "credential": { + "id": "urn:uuid:36f0a27b-4c62-4631-a9c5-0680a9c30013", + "type": [ + "VerifiableCredential" + ], + "issuer": "did:key:z6MkkZu37ESix41fjPc2bFJ6eGsz1mbzdSn1MYcuU2qWBDAN", + "issuanceDate": "2020-03-16T22:37:26.544Z", + "credentialSubject": { + "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" + } + }, + "options": {} + }, + "params": { + "missingProperty": "@context" + }, + "path": ".credential", + "public": true, + "schemaPath": "#/properties/credential/required", + "schema": { + "description": "", + "title": "" + }, + "value": { + "id": "urn:uuid:36f0a27b-4c62-4631-a9c5-0680a9c30013", + "type": [ + "VerifiableCredential" + ], + "issuer": "did:key:z6MkkZu37ESix41fjPc2bFJ6eGsz1mbzdSn1MYcuU2qWBDAN", + "issuanceDate": "2020-03-16T22:37:26.544Z", + "credentialSubject": { + "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" + } + } + }, + "cause": null + } + ], + "httpStatusCode": 400 + }, + "cause": null, + "stack": "ValidationError: A validation error occured in the 'Issue Credential' validator.\n at _createError (file:///home/node/app/node_modules/@bedrock/validation/lib/index.js:246:17)\n at validate (file:///home/node/app/node_modules/@bedrock/validation/lib/index.js:88:14)\n at validate (file:///home/node/app/node_modules/@bedrock/validation/lib/index.js:181:22)\n at Layer.handle [as handle_request] (/home/node/app/node_modules/express/lib/router/layer.js:95:5)\n at next (/home/node/app/node_modules/express/lib/router/route.js:149:13)\n at cors (/home/node/app/node_modules/cors/lib/index.js:188:7)\n at /home/node/app/node_modules/cors/lib/index.js:224:17\n at originCallback (/home/node/app/node_modules/cors/lib/index.js:214:15)\n at /home/node/app/node_modules/cors/lib/index.js:219:13\n at optionsCallback (/home/node/app/node_modules/cors/lib/index.js:199:9)", + "type": "ValidationError" + } + }, + "operator": "notStrictEqual", + "stack": "AssertionError: Expected issuer Digital Bazaar to perform context injection on a VC with out an \"@context\" property: expected HTTPError: A validation error occured in … { …(6) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:454:18)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" + } }, { "type": "test", - "title": "\"proof\" MUST verify when using a conformant verifier.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title,\n };\n should.exist(verifier, 'Expected implementation to have a VC ' +\n 'HTTP API compatible verifier.');\n const {result, error} = await verifier.post({json: {\n verifiableCredential: issuedVc,\n options: {checks: ['proof']}\n }});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected verifier to return a result.');\n result.status.should.not.equal(400, 'Expected status code to not ' +\n 'be 400.');\n result.status.should.equal(200, 'Expected status code to be 200.');\n }", + "title": "When an application is securing a document, if an @context property is not provided in the document or the Data Integrity terms used in the document are not mapped by existing values in the @context property, implementations SHOULD inject or append an @context property with a value of https://w3id.org/security/data-integrity/v2 or one or more contexts with at least the same declarations, such as the Verifiable Credential Data Model v2.0 context (https://www.w3.org/ns/credentials/v2).", + "body": "async function() {\n if(!issuer) {\n throw new Error(`Expected ${vendorName} to have an issuer.`);\n }\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#context-injection:~:text=if%20an%20%40context%20property%20is%20not%20provided%20in%20the%20document%20or%20the%20Data%20Integrity%20terms%20used%20in%20the%20document%20are%20not%20mapped%20by%20existing%20values%20in%20the%20%40context%20property%2C%20implementations%20SHOULD%20inject%20or%20append';\n if(optionalTests.contextInjection === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n const _credential = structuredClone(credential);\n const expectedContexts = [\n 'https://w3id.org/security/data-integrity/v2',\n 'https://www.w3.org/ns/credentials/v2'\n ];\n // remove the vc's context and expect context injection to occur\n delete _credential['@context'];\n let err;\n let data;\n try {\n data = await createInitialVc({issuer, credential: _credential});\n } catch(e) {\n err = e;\n }\n should.not.exist(\n err,\n `Expected issuer ${vendorName} to perform context injection on a ` +\n `VC with out an \"@context\" property`);\n should.exist(data, `Expected issuer ${vendorName} to return data.`);\n data.should.be.an('object', 'Expected response data to be an object.');\n should.exist(data['@context'],\n 'Expected data to have an injected \"@context\" property.');\n if(Array.isArray(data['@context'])) {\n const hasExpectedContext = expectedContexts.some(\n ctx => data['@context'].includes(ctx));\n return hasExpectedContext.should.equal(true,\n `Expected injected context to contain one of ${expectedContexts}`);\n }\n data['@context'].should.be.oneOf(expectedContexts);\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -10785,86 +10097,137 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "wuzb1dwi_VN7BLBuHNMY4", + "parent": "tikRDf1hNC-fQs8dM6EPO", "ctx": null, - "_testId": "urn:uuid:b81aa970-bc5e-4459-9246-d6bbeda4d83b", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:6eeab0c3-9a83-42c7-8f9b-1229f5f824fc", "cell": { - "columnId": "Danube Tech", - "rowId": "\"proof\" MUST verify when using a conformant verifier." - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 10710, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true + "columnId": "EWF", + "rowId": "When an application is securing a document, if an @context property is not provided in the document or the Data Integrity terms used in the document are not mapped by existing values in the @context property, implementations SHOULD inject or append an @context property with a value of https://w3id.org/security/data-integrity/v2 or one or more contexts with at least the same declarations, such as the Verifiable Credential Data Model v2.0 context (https://www.w3.org/ns/credentials/v2)." }, - "duration": 1241, - "state": "passed", - "speed": "slow" - } - ], - "root": false, - "pending": false, - "_retries": -1, - "_beforeEach": [], - "_beforeAll": [ - { - "title": "\"before all\" hook in \"Danube Tech\"", - "body": "async function() {\n const [issuer] = endpoints;\n verifier = implementation.verifiers.find(\n verifier => verifier.tags.has(tag));\n const {settings: {id: issuerId, options}} = issuer;\n const body = {credential: klona(validVc), options};\n body.credential.id = `urn:uuid:${uuidv4()}`;\n body.credential.issuer = issuerId;\n const {data, error} = await issuer.post({json: body});\n if(error) {\n throw error;\n }\n issuedVc = data;\n const {proof} = issuedVc || {};\n proofs = Array.isArray(proof) ? proof : [proof];\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "type": "hook", - "parent": "wuzb1dwi_VN7BLBuHNMY4", - "ctx": null, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "originalTitle": "\"before all\" hook", "_events": {}, "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#context-injection:~:text=if%20an%20%40context%20property%20is%20not%20provided%20in%20the%20document%20or%20the%20Data%20Integrity%20terms%20used%20in%20the%20document%20are%20not%20mapped%20by%20existing%20values%20in%20the%20%40context%20property%2C%20implementations%20SHOULD%20inject%20or%20append", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10520, + "_idleStart": 9315, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 189, - "_error": null - } - ], - "_afterEach": [], - "_afterAll": [], - "_timeout": 15000, - "_slow": 75, - "_bail": false, - "_onlyTests": [], - "_onlySuites": [], - "delayed": false, - "parent": "Xssoo53tV8ySDtlFVXM50", - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "_testId": "urn:uuid:ddcb1f1c-0d18-48a1-8426-49d8f9da6f4f" - }, - { - "title": "Digital Bazaar", - "ctx": null, - "suites": [], - "tests": [ + "duration": 88, + "state": "failed", + "err": { + "name": "AssertionError", + "message": "Expected issuer EWF to perform context injection on a VC with out an \"@context\" property: expected HTTPError { …(7) } to not exist", + "showDiff": false, + "actual": { + "response": {}, + "request": {}, + "options": { + "credentials": "same-origin", + "headers": {}, + "body": "{\"credential\":{\"id\":\"urn:uuid:5d5a9625-db61-4e7b-943e-1a9bb2e0a75b\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MksoRPRqnMWiivV4weRGGS9SiHXuqfJEYu95EiYtbvBxW6\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"}},\"options\":{}}", + "method": "POST", + "json": { + "credential": { + "id": "urn:uuid:5d5a9625-db61-4e7b-943e-1a9bb2e0a75b", + "type": [ + "VerifiableCredential" + ], + "issuer": "did:key:z6MksoRPRqnMWiivV4weRGGS9SiHXuqfJEYu95EiYtbvBxW6", + "issuanceDate": "2020-03-16T22:37:26.544Z", + "credentialSubject": { + "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" + } + }, + "options": {} + }, + "agent": { + "_events": {}, + "_eventsCount": 2, + "defaultPort": 443, + "protocol": "https:", + "options": { + "rejectUnauthorized": false, + "noDelay": true, + "path": null + }, + "requests": {}, + "sockets": {}, + "freeSockets": {}, + "keepAliveMsecs": 1000, + "keepAlive": false, + "maxSockets": null, + "maxFreeSockets": 256, + "scheduling": "lifo", + "maxTotalSockets": null, + "totalSocketCount": 0, + "maxCachedSessions": 100, + "_sessionCache": { + "map": {}, + "list": [] + } + }, + "hooks": { + "beforeRequest": [], + "beforeRetry": [], + "beforeError": [], + "afterResponse": [] + }, + "prefixUrl": "", + "retry": { + "limit": 2, + "methods": [ + "get", + "put", + "head", + "delete", + "options", + "trace" + ], + "statusCodes": [ + 408, + 413, + 429, + 500, + 502, + 503, + 504 + ], + "afterStatusCodes": [ + 413, + 429, + 503 + ], + "maxRetryAfter": null, + "backoffLimit": null + }, + "throwHttpErrors": true, + "timeout": 10000, + "signal": {}, + "duplex": "half" + }, + "name": "HTTPError", + "requestUrl": "https://vc-api-dev.energyweb.org/v1/vc-api/credentials/issue", + "status": 400, + "data": { + "message": [ + "credential.@context must be an array" + ], + "error": "Bad Request", + "statusCode": 400 + } + }, + "operator": "notStrictEqual", + "stack": "AssertionError: Expected issuer EWF to perform context injection on a VC with out an \"@context\" property: expected HTTPError { …(7) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:454:18)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" + } + }, { "type": "test", - "title": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n should.exist(issuedVc, 'Expected issuer to have issued a ' +\n 'credential.');\n should.exist(proofs, 'Expected credential to have a proof.');\n const ed25519Proofs = proofs.filter(\n proof => proof?.type === 'Ed25519Signature2020');\n ed25519Proofs.length.should.be.gte(1, 'Expected at least one ' +\n 'Ed25519 proof.');\n for(const proof of ed25519Proofs) {\n should.exist(proof.proofValue, 'Expected a proof value on ' +\n 'the proof.');\n const valueBytes = bs58Decode({id: proof.proofValue});\n should.exist(proof.verificationMethod);\n const vmBytes = await getPublicKeyBytes({\n did: proof.verificationMethod});\n vmBytes.byteLength.should.be.oneOf([32, 57], 'Expected public ' +\n 'key bytes to be either 32 or 57 bytes.');\n if(vmBytes.byteLength === 32) {\n valueBytes.byteLength.should.equal(64, 'Expected 64 bytes ' +\n 'proofValue for 32 bytes key.');\n } else {\n valueBytes.byteLength.should.equal(114, 'Expected 114 bytes ' +\n 'proofValue for 57 bytes key.');\n }\n }\n }", + "title": "When an application is securing a document, if an @context property is not provided in the document or the Data Integrity terms used in the document are not mapped by existing values in the @context property, implementations SHOULD inject or append an @context property with a value of https://w3id.org/security/data-integrity/v2 or one or more contexts with at least the same declarations, such as the Verifiable Credential Data Model v2.0 context (https://www.w3.org/ns/credentials/v2).", + "body": "async function() {\n if(!issuer) {\n throw new Error(`Expected ${vendorName} to have an issuer.`);\n }\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#context-injection:~:text=if%20an%20%40context%20property%20is%20not%20provided%20in%20the%20document%20or%20the%20Data%20Integrity%20terms%20used%20in%20the%20document%20are%20not%20mapped%20by%20existing%20values%20in%20the%20%40context%20property%2C%20implementations%20SHOULD%20inject%20or%20append';\n if(optionalTests.contextInjection === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n const _credential = structuredClone(credential);\n const expectedContexts = [\n 'https://w3id.org/security/data-integrity/v2',\n 'https://www.w3.org/ns/credentials/v2'\n ];\n // remove the vc's context and expect context injection to occur\n delete _credential['@context'];\n let err;\n let data;\n try {\n data = await createInitialVc({issuer, credential: _credential});\n } catch(e) {\n err = e;\n }\n should.not.exist(\n err,\n `Expected issuer ${vendorName} to perform context injection on a ` +\n `VC with out an \"@context\" property`);\n should.exist(data, `Expected issuer ${vendorName} to return data.`);\n data.should.be.an('object', 'Expected response data to be an object.');\n should.exist(data['@context'],\n 'Expected data to have an injected \"@context\" property.');\n if(Array.isArray(data['@context'])) {\n const hasExpectedContext = expectedContexts.some(\n ctx => data['@context'].includes(ctx));\n return hasExpectedContext.should.equal(true,\n `Expected injected context to contain one of ${expectedContexts}`);\n }\n data['@context'].should.be.oneOf(expectedContexts);\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -10874,32 +10237,131 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Qcd9KdsEaPpetMXS-bPlq", + "parent": "3UTW-_LttILA3ILQtGZo2", "ctx": null, - "_testId": "urn:uuid:269a5bef-c393-4cf9-80d9-6ba78e6e5327", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:f4acf3d4-b752-434e-86a7-11b2db20b5f1", "cell": { - "columnId": "Digital Bazaar", - "rowId": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes." + "columnId": "LearnCard", + "rowId": "When an application is securing a document, if an @context property is not provided in the document or the Data Integrity terms used in the document are not mapped by existing values in the @context property, implementations SHOULD inject or append an @context property with a value of https://w3id.org/security/data-integrity/v2 or one or more contexts with at least the same declarations, such as the Verifiable Credential Data Model v2.0 context (https://www.w3.org/ns/credentials/v2)." }, + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#context-injection:~:text=if%20an%20%40context%20property%20is%20not%20provided%20in%20the%20document%20or%20the%20Data%20Integrity%20terms%20used%20in%20the%20document%20are%20not%20mapped%20by%20existing%20values%20in%20the%20%40context%20property%2C%20implementations%20SHOULD%20inject%20or%20append", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 12029, + "_idleStart": 9776, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 1, - "state": "passed", - "speed": "fast" + "duration": 46, + "state": "failed", + "err": { + "name": "AssertionError", + "message": "Expected issuer LearnCard to perform context injection on a VC with out an \"@context\" property: expected HTTPError: Request failed with status cod… { …(6) } to not exist", + "showDiff": false, + "actual": { + "response": {}, + "request": {}, + "options": { + "credentials": "same-origin", + "headers": {}, + "body": "{\"credential\":{\"id\":\"urn:uuid:6f632419-3090-42b4-be6a-6e883d03dcde\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"}},\"options\":{}}", + "method": "POST", + "json": { + "credential": { + "id": "urn:uuid:6f632419-3090-42b4-be6a-6e883d03dcde", + "type": [ + "VerifiableCredential" + ], + "issuer": "did:key:z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh", + "issuanceDate": "2020-03-16T22:37:26.544Z", + "credentialSubject": { + "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" + } + }, + "options": {} + }, + "agent": { + "_events": {}, + "_eventsCount": 2, + "defaultPort": 443, + "protocol": "https:", + "options": { + "rejectUnauthorized": false, + "noDelay": true, + "path": null + }, + "requests": {}, + "sockets": {}, + "freeSockets": {}, + "keepAliveMsecs": 1000, + "keepAlive": false, + "maxSockets": null, + "maxFreeSockets": 256, + "scheduling": "lifo", + "maxTotalSockets": null, + "totalSocketCount": 0, + "maxCachedSessions": 100, + "_sessionCache": { + "map": {}, + "list": [] + } + }, + "hooks": { + "beforeRequest": [], + "beforeRetry": [], + "beforeError": [], + "afterResponse": [] + }, + "prefixUrl": "", + "retry": { + "limit": 2, + "methods": [ + "get", + "put", + "head", + "delete", + "options", + "trace" + ], + "statusCodes": [ + 408, + 413, + 429, + 500, + 502, + 503, + 504 + ], + "afterStatusCodes": [ + 413, + 429, + 503 + ], + "maxRetryAfter": null, + "backoffLimit": null + }, + "throwHttpErrors": true, + "timeout": 10000, + "signal": {}, + "duplex": "half" + }, + "name": "HTTPError", + "requestUrl": "https://bridge.learncard.com/credentials/issue", + "status": 400, + "data": "Invalid input: [\n {\n \"code\": \"invalid_type\",\n \"expected\": \"array\",\n \"received\": \"undefined\",\n \"path\": [\n \"credential\",\n \"@context\"\n ],\n \"message\": \"Required\"\n }\n]" + }, + "operator": "notStrictEqual", + "stack": "AssertionError: Expected issuer LearnCard to perform context injection on a VC with out an \"@context\" property: expected HTTPError: Request failed with status cod… { …(6) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:454:18)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" + } }, { "type": "test", - "title": "\"proof\" MUST verify when using a conformant verifier.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title,\n };\n should.exist(verifier, 'Expected implementation to have a VC ' +\n 'HTTP API compatible verifier.');\n const {result, error} = await verifier.post({json: {\n verifiableCredential: issuedVc,\n options: {checks: ['proof']}\n }});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected verifier to return a result.');\n result.status.should.not.equal(400, 'Expected status code to not ' +\n 'be 400.');\n result.status.should.equal(200, 'Expected status code to be 200.');\n }", + "title": "When an application is securing a document, if an @context property is not provided in the document or the Data Integrity terms used in the document are not mapped by existing values in the @context property, implementations SHOULD inject or append an @context property with a value of https://w3id.org/security/data-integrity/v2 or one or more contexts with at least the same declarations, such as the Verifiable Credential Data Model v2.0 context (https://www.w3.org/ns/credentials/v2).", + "body": "async function() {\n if(!issuer) {\n throw new Error(`Expected ${vendorName} to have an issuer.`);\n }\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#context-injection:~:text=if%20an%20%40context%20property%20is%20not%20provided%20in%20the%20document%20or%20the%20Data%20Integrity%20terms%20used%20in%20the%20document%20are%20not%20mapped%20by%20existing%20values%20in%20the%20%40context%20property%2C%20implementations%20SHOULD%20inject%20or%20append';\n if(optionalTests.contextInjection === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n const _credential = structuredClone(credential);\n const expectedContexts = [\n 'https://w3id.org/security/data-integrity/v2',\n 'https://www.w3.org/ns/credentials/v2'\n ];\n // remove the vc's context and expect context injection to occur\n delete _credential['@context'];\n let err;\n let data;\n try {\n data = await createInitialVc({issuer, credential: _credential});\n } catch(e) {\n err = e;\n }\n should.not.exist(\n err,\n `Expected issuer ${vendorName} to perform context injection on a ` +\n `VC with out an \"@context\" property`);\n should.exist(data, `Expected issuer ${vendorName} to return data.`);\n data.should.be.an('object', 'Expected response data to be an object.');\n should.exist(data['@context'],\n 'Expected data to have an injected \"@context\" property.');\n if(Array.isArray(data['@context'])) {\n const hasExpectedContext = expectedContexts.some(\n ctx => data['@context'].includes(ctx));\n return hasExpectedContext.should.equal(true,\n `Expected injected context to contain one of ${expectedContexts}`);\n }\n data['@context'].should.be.oneOf(expectedContexts);\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -10909,86 +10371,280 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Qcd9KdsEaPpetMXS-bPlq", + "parent": "V3app5v08kK3UQYixBWWE", "ctx": null, - "_testId": "urn:uuid:14c1d4ce-4e94-465c-881a-d7f3765c9376", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:542a2877-1f96-4ec5-86f3-a36e239bdc7f", "cell": { - "columnId": "Digital Bazaar", - "rowId": "\"proof\" MUST verify when using a conformant verifier." + "columnId": "OpSecId", + "rowId": "When an application is securing a document, if an @context property is not provided in the document or the Data Integrity terms used in the document are not mapped by existing values in the @context property, implementations SHOULD inject or append an @context property with a value of https://w3id.org/security/data-integrity/v2 or one or more contexts with at least the same declarations, such as the Verifiable Credential Data Model v2.0 context (https://www.w3.org/ns/credentials/v2)." }, + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#context-injection:~:text=if%20an%20%40context%20property%20is%20not%20provided%20in%20the%20document%20or%20the%20Data%20Integrity%20terms%20used%20in%20the%20document%20are%20not%20mapped%20by%20existing%20values%20in%20the%20%40context%20property%2C%20implementations%20SHOULD%20inject%20or%20append", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 12029, + "_idleStart": 9986, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 527, - "state": "passed", - "speed": "slow" - } - ], - "root": false, - "pending": false, - "_retries": -1, - "_beforeEach": [], - "_beforeAll": [ - { - "title": "\"before all\" hook in \"Digital Bazaar\"", - "body": "async function() {\n const [issuer] = endpoints;\n verifier = implementation.verifiers.find(\n verifier => verifier.tags.has(tag));\n const {settings: {id: issuerId, options}} = issuer;\n const body = {credential: klona(validVc), options};\n body.credential.id = `urn:uuid:${uuidv4()}`;\n body.credential.issuer = issuerId;\n const {data, error} = await issuer.post({json: body});\n if(error) {\n throw error;\n }\n issuedVc = data;\n const {proof} = issuedVc || {};\n proofs = Array.isArray(proof) ? proof : [proof];\n }", - "async": 0, - "sync": true, + "duration": 25, + "state": "failed", + "err": { + "name": "AssertionError", + "message": "Expected issuer OpSecId to perform context injection on a VC with out an \"@context\" property: expected HTTPError: Request failed with status cod… { …(6) } to not exist", + "showDiff": false, + "actual": { + "response": {}, + "request": {}, + "options": { + "credentials": "same-origin", + "headers": {}, + "body": "{\"credential\":{\"id\":\"urn:uuid:d6449dcd-fd2d-430c-8ece-7122a476f8d4\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkmiYjSToh5NdEf9xNuh5mDGXGYinzcAy1s4feRHtkEQJr\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"}},\"options\":{\"type\":\"Ed25519Signature2020\",\"credentialStatus\":{\"type\":\"BitstringStatusListEntry\",\"statusPurpose\":\"suspension\"}}}", + "method": "POST", + "json": { + "credential": { + "id": "urn:uuid:d6449dcd-fd2d-430c-8ece-7122a476f8d4", + "type": [ + "VerifiableCredential" + ], + "issuer": "did:key:z6MkmiYjSToh5NdEf9xNuh5mDGXGYinzcAy1s4feRHtkEQJr", + "issuanceDate": "2020-03-16T22:37:26.544Z", + "credentialSubject": { + "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" + } + }, + "options": { + "type": "Ed25519Signature2020", + "credentialStatus": { + "type": "BitstringStatusListEntry", + "statusPurpose": "suspension" + } + } + }, + "agent": { + "_events": {}, + "_eventsCount": 2, + "defaultPort": 443, + "protocol": "https:", + "options": { + "rejectUnauthorized": false, + "noDelay": true, + "path": null + }, + "requests": {}, + "sockets": {}, + "freeSockets": {}, + "keepAliveMsecs": 1000, + "keepAlive": false, + "maxSockets": null, + "maxFreeSockets": 256, + "scheduling": "lifo", + "maxTotalSockets": null, + "totalSocketCount": 0, + "maxCachedSessions": 100, + "_sessionCache": { + "map": {}, + "list": [] + } + }, + "hooks": { + "beforeRequest": [], + "beforeRetry": [], + "beforeError": [], + "afterResponse": [] + }, + "prefixUrl": "", + "retry": { + "limit": 2, + "methods": [ + "get", + "put", + "head", + "delete", + "options", + "trace" + ], + "statusCodes": [ + 408, + 413, + 429, + 500, + 502, + 503, + 504 + ], + "afterStatusCodes": [ + 413, + 429, + 503 + ], + "maxRetryAfter": null, + "backoffLimit": null + }, + "throwHttpErrors": true, + "timeout": 10000, + "signal": {}, + "duplex": "half" + }, + "name": "HTTPError", + "requestUrl": "https://agent.opsec.id/vc/credentials/issue", + "status": 422, + "data": { + "json": { + "credential": { + "@context": [ + "Missing data for required field." + ] + } + } + } + }, + "operator": "notStrictEqual", + "stack": "AssertionError: Expected issuer OpSecId to perform context injection on a VC with out an \"@context\" property: expected HTTPError: Request failed with status cod… { …(6) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:454:18)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" + } + }, + { + "type": "test", + "title": "When an application is securing a document, if an @context property is not provided in the document or the Data Integrity terms used in the document are not mapped by existing values in the @context property, implementations SHOULD inject or append an @context property with a value of https://w3id.org/security/data-integrity/v2 or one or more contexts with at least the same declarations, such as the Verifiable Credential Data Model v2.0 context (https://www.w3.org/ns/credentials/v2).", + "body": "async function() {\n if(!issuer) {\n throw new Error(`Expected ${vendorName} to have an issuer.`);\n }\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#context-injection:~:text=if%20an%20%40context%20property%20is%20not%20provided%20in%20the%20document%20or%20the%20Data%20Integrity%20terms%20used%20in%20the%20document%20are%20not%20mapped%20by%20existing%20values%20in%20the%20%40context%20property%2C%20implementations%20SHOULD%20inject%20or%20append';\n if(optionalTests.contextInjection === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n const _credential = structuredClone(credential);\n const expectedContexts = [\n 'https://w3id.org/security/data-integrity/v2',\n 'https://www.w3.org/ns/credentials/v2'\n ];\n // remove the vc's context and expect context injection to occur\n delete _credential['@context'];\n let err;\n let data;\n try {\n data = await createInitialVc({issuer, credential: _credential});\n } catch(e) {\n err = e;\n }\n should.not.exist(\n err,\n `Expected issuer ${vendorName} to perform context injection on a ` +\n `VC with out an \"@context\" property`);\n should.exist(data, `Expected issuer ${vendorName} to return data.`);\n data.should.be.an('object', 'Expected response data to be an object.');\n should.exist(data['@context'],\n 'Expected data to have an injected \"@context\" property.');\n if(Array.isArray(data['@context'])) {\n const hasExpectedContext = expectedContexts.some(\n ctx => data['@context'].includes(ctx));\n return hasExpectedContext.should.equal(true,\n `Expected injected context to contain one of ${expectedContexts}`);\n }\n data['@context'].should.be.oneOf(expectedContexts);\n }", + "async": 0, + "sync": true, "_timeout": 15000, "_slow": 75, "_retries": -1, "timedOut": false, "_currentRetry": 0, "pending": false, - "type": "hook", - "parent": "Qcd9KdsEaPpetMXS-bPlq", - "ctx": null, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "originalTitle": "\"before all\" hook", + "parent": "pJvzjaJb0oGOCZ6Fp689R", + "ctx": null, + "_testId": "urn:uuid:6f452e29-2e5a-4c52-a51c-41fed0f9e70c", + "cell": { + "columnId": "SpruceID", + "rowId": "When an application is securing a document, if an @context property is not provided in the document or the Data Integrity terms used in the document are not mapped by existing values in the @context property, implementations SHOULD inject or append an @context property with a value of https://w3id.org/security/data-integrity/v2 or one or more contexts with at least the same declarations, such as the Verifiable Credential Data Model v2.0 context (https://www.w3.org/ns/credentials/v2)." + }, "_events": {}, "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#context-injection:~:text=if%20an%20%40context%20property%20is%20not%20provided%20in%20the%20document%20or%20the%20Data%20Integrity%20terms%20used%20in%20the%20document%20are%20not%20mapped%20by%20existing%20values%20in%20the%20%40context%20property%2C%20implementations%20SHOULD%20inject%20or%20append", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 11952, + "_idleStart": 10161, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 77, - "_error": null - } - ], - "_afterEach": [], - "_afterAll": [], - "_timeout": 15000, - "_slow": 75, - "_bail": false, - "_onlyTests": [], - "_onlySuites": [], - "delayed": false, - "parent": "Xssoo53tV8ySDtlFVXM50", - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "_testId": "urn:uuid:4558a75e-dd48-4a06-95a4-fcc182ee71be" - }, - { - "title": "EWF", - "ctx": null, - "suites": [], - "tests": [ + "duration": 18, + "state": "failed", + "err": { + "name": "AssertionError", + "message": "Expected issuer SpruceID to perform context injection on a VC with out an \"@context\" property: expected HTTPError: Request failed with status cod… { …(5) } to not exist", + "showDiff": false, + "actual": { + "response": {}, + "request": {}, + "options": { + "credentials": "same-origin", + "headers": {}, + "body": "{\"credential\":{\"id\":\"urn:uuid:b6e349c0-cc69-4a11-a8ad-c82e93a6e9a3\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkgYAGxLBSXa6Ygk1PnUbK2F7zya8juE9nfsZhrvY7c9GD\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"}},\"options\":{\"type\":\"Ed25519Signature2020\"}}", + "method": "POST", + "json": { + "credential": { + "id": "urn:uuid:b6e349c0-cc69-4a11-a8ad-c82e93a6e9a3", + "type": [ + "VerifiableCredential" + ], + "issuer": "did:key:z6MkgYAGxLBSXa6Ygk1PnUbK2F7zya8juE9nfsZhrvY7c9GD", + "issuanceDate": "2020-03-16T22:37:26.544Z", + "credentialSubject": { + "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" + } + }, + "options": { + "type": "Ed25519Signature2020" + } + }, + "agent": { + "_events": {}, + "_eventsCount": 2, + "defaultPort": 443, + "protocol": "https:", + "options": { + "rejectUnauthorized": false, + "noDelay": true, + "path": null + }, + "requests": {}, + "sockets": {}, + "freeSockets": {}, + "keepAliveMsecs": 1000, + "keepAlive": false, + "maxSockets": null, + "maxFreeSockets": 256, + "scheduling": "lifo", + "maxTotalSockets": null, + "totalSocketCount": 0, + "maxCachedSessions": 100, + "_sessionCache": { + "map": {}, + "list": [] + } + }, + "hooks": { + "beforeRequest": [], + "beforeRetry": [], + "beforeError": [], + "afterResponse": [] + }, + "prefixUrl": "", + "retry": { + "limit": 2, + "methods": [ + "get", + "put", + "head", + "delete", + "options", + "trace" + ], + "statusCodes": [ + 408, + 413, + 429, + 500, + 502, + 503, + 504 + ], + "afterStatusCodes": [ + 413, + 429, + 503 + ], + "maxRetryAfter": null, + "backoffLimit": null + }, + "throwHttpErrors": true, + "timeout": 10000, + "signal": {}, + "duplex": "half" + }, + "name": "HTTPError", + "requestUrl": "https://vc.spruceid.xyz/credentials/issue", + "status": 400 + }, + "operator": "notStrictEqual", + "stack": "AssertionError: Expected issuer SpruceID to perform context injection on a VC with out an \"@context\" property: expected HTTPError: Request failed with status cod… { …(5) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:454:18)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" + } + }, { "type": "test", - "title": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n should.exist(issuedVc, 'Expected issuer to have issued a ' +\n 'credential.');\n should.exist(proofs, 'Expected credential to have a proof.');\n const ed25519Proofs = proofs.filter(\n proof => proof?.type === 'Ed25519Signature2020');\n ed25519Proofs.length.should.be.gte(1, 'Expected at least one ' +\n 'Ed25519 proof.');\n for(const proof of ed25519Proofs) {\n should.exist(proof.proofValue, 'Expected a proof value on ' +\n 'the proof.');\n const valueBytes = bs58Decode({id: proof.proofValue});\n should.exist(proof.verificationMethod);\n const vmBytes = await getPublicKeyBytes({\n did: proof.verificationMethod});\n vmBytes.byteLength.should.be.oneOf([32, 57], 'Expected public ' +\n 'key bytes to be either 32 or 57 bytes.');\n if(vmBytes.byteLength === 32) {\n valueBytes.byteLength.should.equal(64, 'Expected 64 bytes ' +\n 'proofValue for 32 bytes key.');\n } else {\n valueBytes.byteLength.should.equal(114, 'Expected 114 bytes ' +\n 'proofValue for 57 bytes key.');\n }\n }\n }", + "title": "When an application is securing a document, if an @context property is not provided in the document or the Data Integrity terms used in the document are not mapped by existing values in the @context property, implementations SHOULD inject or append an @context property with a value of https://w3id.org/security/data-integrity/v2 or one or more contexts with at least the same declarations, such as the Verifiable Credential Data Model v2.0 context (https://www.w3.org/ns/credentials/v2).", + "body": "async function() {\n if(!issuer) {\n throw new Error(`Expected ${vendorName} to have an issuer.`);\n }\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#context-injection:~:text=if%20an%20%40context%20property%20is%20not%20provided%20in%20the%20document%20or%20the%20Data%20Integrity%20terms%20used%20in%20the%20document%20are%20not%20mapped%20by%20existing%20values%20in%20the%20%40context%20property%2C%20implementations%20SHOULD%20inject%20or%20append';\n if(optionalTests.contextInjection === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n const _credential = structuredClone(credential);\n const expectedContexts = [\n 'https://w3id.org/security/data-integrity/v2',\n 'https://www.w3.org/ns/credentials/v2'\n ];\n // remove the vc's context and expect context injection to occur\n delete _credential['@context'];\n let err;\n let data;\n try {\n data = await createInitialVc({issuer, credential: _credential});\n } catch(e) {\n err = e;\n }\n should.not.exist(\n err,\n `Expected issuer ${vendorName} to perform context injection on a ` +\n `VC with out an \"@context\" property`);\n should.exist(data, `Expected issuer ${vendorName} to return data.`);\n data.should.be.an('object', 'Expected response data to be an object.');\n should.exist(data['@context'],\n 'Expected data to have an injected \"@context\" property.');\n if(Array.isArray(data['@context'])) {\n const hasExpectedContext = expectedContexts.some(\n ctx => data['@context'].includes(ctx));\n return hasExpectedContext.should.equal(true,\n `Expected injected context to contain one of ${expectedContexts}`);\n }\n data['@context'].should.be.oneOf(expectedContexts);\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -10998,40 +10654,139 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "QX6-C2GDoB1mObLYhcgGb", + "parent": "qmgk3hHclzYw9jf2QjmPc", "ctx": null, - "_testId": "urn:uuid:537c420f-f120-4780-a3c7-893afca0a9a1", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:52047179-fafa-4b0f-9cf1-9136345fb2e4", "cell": { - "columnId": "EWF", - "rowId": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes." + "columnId": "Trinsic", + "rowId": "When an application is securing a document, if an @context property is not provided in the document or the Data Integrity terms used in the document are not mapped by existing values in the @context property, implementations SHOULD inject or append an @context property with a value of https://w3id.org/security/data-integrity/v2 or one or more contexts with at least the same declarations, such as the Verifiable Credential Data Model v2.0 context (https://www.w3.org/ns/credentials/v2)." }, + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#context-injection:~:text=if%20an%20%40context%20property%20is%20not%20provided%20in%20the%20document%20or%20the%20Data%20Integrity%20terms%20used%20in%20the%20document%20are%20not%20mapped%20by%20existing%20values%20in%20the%20%40context%20property%2C%20implementations%20SHOULD%20inject%20or%20append", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 12652, + "_idleStart": 11167, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 1, + "duration": 28, "state": "failed", "err": { "name": "AssertionError", - "message": "Expected at least one Ed25519 proof.: expected +0 to be at least 1", - "showDiff": true, - "actual": "0", - "expected": "1", - "operator": "strictEqual", - "stack": "AssertionError: Expected at least one Ed25519 proof.: expected +0 to be at least 1\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js:73:42)\n at process.processImmediate (node:internal/timers:483:21)" + "message": "Expected issuer Trinsic to perform context injection on a VC with out an \"@context\" property: expected HTTPError: Request failed with status cod… { …(6) } to not exist", + "showDiff": false, + "actual": { + "response": {}, + "request": {}, + "options": { + "credentials": "same-origin", + "headers": {}, + "body": "{\"credential\":{\"id\":\"urn:uuid:de89cf60-eea4-4b7c-b20d-f217c43a842b\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkqbpLSbqnY1pxVyhBCDYcFsv4ZgGgqP32kzNrf5deWVPU\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"}},\"options\":{\"type\":\"Ed25519Signature2020\"}}", + "method": "POST", + "json": { + "credential": { + "id": "urn:uuid:de89cf60-eea4-4b7c-b20d-f217c43a842b", + "type": [ + "VerifiableCredential" + ], + "issuer": "did:key:z6MkqbpLSbqnY1pxVyhBCDYcFsv4ZgGgqP32kzNrf5deWVPU", + "issuanceDate": "2020-03-16T22:37:26.544Z", + "credentialSubject": { + "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" + } + }, + "options": { + "type": "Ed25519Signature2020" + } + }, + "agent": { + "_events": {}, + "_eventsCount": 2, + "defaultPort": 443, + "protocol": "https:", + "options": { + "rejectUnauthorized": false, + "noDelay": true, + "path": null + }, + "requests": {}, + "sockets": {}, + "freeSockets": {}, + "keepAliveMsecs": 1000, + "keepAlive": false, + "maxSockets": null, + "maxFreeSockets": 256, + "scheduling": "lifo", + "maxTotalSockets": null, + "totalSocketCount": 0, + "maxCachedSessions": 100, + "_sessionCache": { + "map": {}, + "list": [] + } + }, + "hooks": { + "beforeRequest": [], + "beforeRetry": [], + "beforeError": [], + "afterResponse": [] + }, + "prefixUrl": "", + "retry": { + "limit": 2, + "methods": [ + "get", + "put", + "head", + "delete", + "options", + "trace" + ], + "statusCodes": [ + 408, + 413, + 429, + 500, + 502, + 503, + 504 + ], + "afterStatusCodes": [ + 413, + 429, + 503 + ], + "maxRetryAfter": null, + "backoffLimit": null + }, + "throwHttpErrors": true, + "timeout": 10000, + "signal": {}, + "duplex": "half" + }, + "name": "HTTPError", + "requestUrl": "https://interop.connect.trinsic.cloud/vc-api/credentials/issue", + "status": 400, + "data": "Invalid credential" + }, + "operator": "notStrictEqual", + "stack": "AssertionError: Expected issuer Trinsic to perform context injection on a VC with out an \"@context\" property: expected HTTPError: Request failed with status cod… { …(6) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/create.js:454:18)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" } - }, + } + ] + }, + { + "id": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", + "link": "https://www.w3.org/TR/vc-data-integrity/#:~:text=The%20date%20and%20time%20the%20proof%20was%20created%20is%20OPTIONAL%20and%2C%20if%20included%2C%20MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC.", + "cells": [ { "type": "test", - "title": "\"proof\" MUST verify when using a conformant verifier.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title,\n };\n should.exist(verifier, 'Expected implementation to have a VC ' +\n 'HTTP API compatible verifier.');\n const {result, error} = await verifier.post({json: {\n verifiableCredential: issuedVc,\n options: {checks: ['proof']}\n }});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected verifier to return a result.');\n result.status.should.not.equal(400, 'Expected status code to not ' +\n 'be 400.');\n result.status.should.equal(200, 'Expected status code to be 200.');\n }", + "title": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", + "body": "function() {\n this.test.link = 'https://www.w3.org/TR/vc-data-integrity/#:~:text=The%20date%20and%20time%20the%20proof%20was%20created%20is%20OPTIONAL%20and%2C%20if%20included%2C%20MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC.';\n if(optionalTests.dates === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.created) {\n // check if \"created\" is a valid XML Schema 1.1 dateTimeStamp\n // value\n proof.created.should.match(dateRegex);\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -11041,37 +10796,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "QX6-C2GDoB1mObLYhcgGb", + "parent": "yxhpYILOcqbki3FDec94S", "ctx": null, - "_testId": "urn:uuid:de1859a1-4611-4a60-86ec-7322d52b4dff", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:6ee7125a-564e-4ea5-abea-5c9ed69080d6", "cell": { - "columnId": "EWF", - "rowId": "\"proof\" MUST verify when using a conformant verifier." - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 12653, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true + "columnId": "apicatalog.com", + "rowId": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." }, - "duration": 95, + "_events": {}, + "_eventsCount": 1, + "link": "https://www.w3.org/TR/vc-data-integrity/#:~:text=The%20date%20and%20time%20the%20proof%20was%20created%20is%20OPTIONAL%20and%2C%20if%20included%2C%20MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC.", + "duration": 0, "state": "passed", - "speed": "slow" - } - ], - "root": false, - "pending": false, - "_retries": -1, - "_beforeEach": [], - "_beforeAll": [ + "speed": "fast" + }, { - "title": "\"before all\" hook in \"EWF\"", - "body": "async function() {\n const [issuer] = endpoints;\n verifier = implementation.verifiers.find(\n verifier => verifier.tags.has(tag));\n const {settings: {id: issuerId, options}} = issuer;\n const body = {credential: klona(validVc), options};\n body.credential.id = `urn:uuid:${uuidv4()}`;\n body.credential.issuer = issuerId;\n const {data, error} = await issuer.post({json: body});\n if(error) {\n throw error;\n }\n issuedVc = data;\n const {proof} = issuedVc || {};\n proofs = Array.isArray(proof) ? proof : [proof];\n }", + "type": "test", + "title": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", + "body": "function() {\n this.test.link = 'https://www.w3.org/TR/vc-data-integrity/#:~:text=The%20date%20and%20time%20the%20proof%20was%20created%20is%20OPTIONAL%20and%2C%20if%20included%2C%20MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC.';\n if(optionalTests.dates === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.created) {\n // check if \"created\" is a valid XML Schema 1.1 dateTimeStamp\n // value\n proof.created.should.match(dateRegex);\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -11080,47 +10822,25 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "type": "hook", - "parent": "QX6-C2GDoB1mObLYhcgGb", - "ctx": null, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "originalTitle": "\"before all\" hook", + "parent": "QHK1IypTjZvkcHZsBOX_g", + "ctx": null, + "_testId": "urn:uuid:f4cfac53-0376-4dab-a16a-6f00272fa310", + "cell": { + "columnId": "Danube Tech", + "rowId": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." + }, "_events": {}, "_eventsCount": 1, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 12557, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 95, - "_error": null - } - ], - "_afterEach": [], - "_afterAll": [], - "_timeout": 15000, - "_slow": 75, - "_bail": false, - "_onlyTests": [], - "_onlySuites": [], - "delayed": false, - "parent": "Xssoo53tV8ySDtlFVXM50", - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "_testId": "urn:uuid:1b445a71-f166-4099-b770-8f0093d7ee8e" - }, - { - "title": "LearnCard", - "ctx": null, - "suites": [], - "tests": [ + "link": "https://www.w3.org/TR/vc-data-integrity/#:~:text=The%20date%20and%20time%20the%20proof%20was%20created%20is%20OPTIONAL%20and%2C%20if%20included%2C%20MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC.", + "duration": 0, + "state": "passed", + "speed": "fast" + }, { "type": "test", - "title": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n should.exist(issuedVc, 'Expected issuer to have issued a ' +\n 'credential.');\n should.exist(proofs, 'Expected credential to have a proof.');\n const ed25519Proofs = proofs.filter(\n proof => proof?.type === 'Ed25519Signature2020');\n ed25519Proofs.length.should.be.gte(1, 'Expected at least one ' +\n 'Ed25519 proof.');\n for(const proof of ed25519Proofs) {\n should.exist(proof.proofValue, 'Expected a proof value on ' +\n 'the proof.');\n const valueBytes = bs58Decode({id: proof.proofValue});\n should.exist(proof.verificationMethod);\n const vmBytes = await getPublicKeyBytes({\n did: proof.verificationMethod});\n vmBytes.byteLength.should.be.oneOf([32, 57], 'Expected public ' +\n 'key bytes to be either 32 or 57 bytes.');\n if(vmBytes.byteLength === 32) {\n valueBytes.byteLength.should.equal(64, 'Expected 64 bytes ' +\n 'proofValue for 32 bytes key.');\n } else {\n valueBytes.byteLength.should.equal(114, 'Expected 114 bytes ' +\n 'proofValue for 57 bytes key.');\n }\n }\n }", + "title": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", + "body": "function() {\n this.test.link = 'https://www.w3.org/TR/vc-data-integrity/#:~:text=The%20date%20and%20time%20the%20proof%20was%20created%20is%20OPTIONAL%20and%2C%20if%20included%2C%20MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC.';\n if(optionalTests.dates === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.created) {\n // check if \"created\" is a valid XML Schema 1.1 dateTimeStamp\n // value\n proof.created.should.match(dateRegex);\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -11130,32 +10850,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "ptkLwBORZOzbp5lMwrUoz", + "parent": "3oybt7im9lmDGUjG_T3ge", "ctx": null, - "_testId": "urn:uuid:ede85709-d9c8-44e8-bca2-919321debebd", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:f695036a-3405-4190-babe-061e83df4ead", "cell": { - "columnId": "LearnCard", - "rowId": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes." - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 12816, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true + "columnId": "Digital Bazaar", + "rowId": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." }, - "duration": 1, + "_events": {}, + "_eventsCount": 1, + "link": "https://www.w3.org/TR/vc-data-integrity/#:~:text=The%20date%20and%20time%20the%20proof%20was%20created%20is%20OPTIONAL%20and%2C%20if%20included%2C%20MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC.", + "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "\"proof\" MUST verify when using a conformant verifier.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title,\n };\n should.exist(verifier, 'Expected implementation to have a VC ' +\n 'HTTP API compatible verifier.');\n const {result, error} = await verifier.post({json: {\n verifiableCredential: issuedVc,\n options: {checks: ['proof']}\n }});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected verifier to return a result.');\n result.status.should.not.equal(400, 'Expected status code to not ' +\n 'be 400.');\n result.status.should.equal(200, 'Expected status code to be 200.');\n }", + "title": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", + "body": "function() {\n this.test.link = 'https://www.w3.org/TR/vc-data-integrity/#:~:text=The%20date%20and%20time%20the%20proof%20was%20created%20is%20OPTIONAL%20and%2C%20if%20included%2C%20MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC.';\n if(optionalTests.dates === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.created) {\n // check if \"created\" is a valid XML Schema 1.1 dateTimeStamp\n // value\n proof.created.should.match(dateRegex);\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -11165,37 +10877,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "ptkLwBORZOzbp5lMwrUoz", + "parent": "tikRDf1hNC-fQs8dM6EPO", "ctx": null, - "_testId": "urn:uuid:218b5fd1-5b4f-478e-b588-723abb9b31b4", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:bb8905c3-c6b2-4f20-b3e5-03b2d6acbfe5", "cell": { - "columnId": "LearnCard", - "rowId": "\"proof\" MUST verify when using a conformant verifier." - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 12817, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true + "columnId": "EWF", + "rowId": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." }, - "duration": 73, + "_events": {}, + "_eventsCount": 1, + "link": "https://www.w3.org/TR/vc-data-integrity/#:~:text=The%20date%20and%20time%20the%20proof%20was%20created%20is%20OPTIONAL%20and%2C%20if%20included%2C%20MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC.", + "duration": 0, "state": "passed", - "speed": "medium" - } - ], - "root": false, - "pending": false, - "_retries": -1, - "_beforeEach": [], - "_beforeAll": [ + "speed": "fast" + }, { - "title": "\"before all\" hook in \"LearnCard\"", - "body": "async function() {\n const [issuer] = endpoints;\n verifier = implementation.verifiers.find(\n verifier => verifier.tags.has(tag));\n const {settings: {id: issuerId, options}} = issuer;\n const body = {credential: klona(validVc), options};\n body.credential.id = `urn:uuid:${uuidv4()}`;\n body.credential.issuer = issuerId;\n const {data, error} = await issuer.post({json: body});\n if(error) {\n throw error;\n }\n issuedVc = data;\n const {proof} = issuedVc || {};\n proofs = Array.isArray(proof) ? proof : [proof];\n }", + "type": "test", + "title": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", + "body": "function() {\n this.test.link = 'https://www.w3.org/TR/vc-data-integrity/#:~:text=The%20date%20and%20time%20the%20proof%20was%20created%20is%20OPTIONAL%20and%2C%20if%20included%2C%20MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC.';\n if(optionalTests.dates === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.created) {\n // check if \"created\" is a valid XML Schema 1.1 dateTimeStamp\n // value\n proof.created.should.match(dateRegex);\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -11204,47 +10903,25 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "type": "hook", - "parent": "ptkLwBORZOzbp5lMwrUoz", - "ctx": null, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "originalTitle": "\"before all\" hook", - "_events": {}, - "_eventsCount": 1, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 12748, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true + "parent": "3UTW-_LttILA3ILQtGZo2", + "ctx": null, + "_testId": "urn:uuid:fb2f8cac-2f12-4f4f-a9a7-6c1b4fcad3b0", + "cell": { + "columnId": "LearnCard", + "rowId": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." }, - "duration": 67, - "_error": null - } - ], - "_afterEach": [], - "_afterAll": [], - "_timeout": 15000, - "_slow": 75, - "_bail": false, - "_onlyTests": [], - "_onlySuites": [], - "delayed": false, - "parent": "Xssoo53tV8ySDtlFVXM50", - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "_testId": "urn:uuid:61e6e993-4ba1-4d8f-a169-8782e2b8cd52" - }, - { - "title": "OpSecId", - "ctx": null, - "suites": [], - "tests": [ + "_events": {}, + "_eventsCount": 1, + "link": "https://www.w3.org/TR/vc-data-integrity/#:~:text=The%20date%20and%20time%20the%20proof%20was%20created%20is%20OPTIONAL%20and%2C%20if%20included%2C%20MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC.", + "duration": 0, + "state": "passed", + "speed": "fast" + }, { "type": "test", - "title": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n should.exist(issuedVc, 'Expected issuer to have issued a ' +\n 'credential.');\n should.exist(proofs, 'Expected credential to have a proof.');\n const ed25519Proofs = proofs.filter(\n proof => proof?.type === 'Ed25519Signature2020');\n ed25519Proofs.length.should.be.gte(1, 'Expected at least one ' +\n 'Ed25519 proof.');\n for(const proof of ed25519Proofs) {\n should.exist(proof.proofValue, 'Expected a proof value on ' +\n 'the proof.');\n const valueBytes = bs58Decode({id: proof.proofValue});\n should.exist(proof.verificationMethod);\n const vmBytes = await getPublicKeyBytes({\n did: proof.verificationMethod});\n vmBytes.byteLength.should.be.oneOf([32, 57], 'Expected public ' +\n 'key bytes to be either 32 or 57 bytes.');\n if(vmBytes.byteLength === 32) {\n valueBytes.byteLength.should.equal(64, 'Expected 64 bytes ' +\n 'proofValue for 32 bytes key.');\n } else {\n valueBytes.byteLength.should.equal(114, 'Expected 114 bytes ' +\n 'proofValue for 57 bytes key.');\n }\n }\n }", + "title": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", + "body": "function() {\n this.test.link = 'https://www.w3.org/TR/vc-data-integrity/#:~:text=The%20date%20and%20time%20the%20proof%20was%20created%20is%20OPTIONAL%20and%2C%20if%20included%2C%20MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC.';\n if(optionalTests.dates === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.created) {\n // check if \"created\" is a valid XML Schema 1.1 dateTimeStamp\n // value\n proof.created.should.match(dateRegex);\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -11254,13 +10931,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "BcJKqY4K2aywv6JKOsV8C", - "ctx": null + "parent": "V3app5v08kK3UQYixBWWE", + "ctx": null, + "_testId": "urn:uuid:1b8fe3c5-a0c1-4a10-89f6-4602d38fd2f7", + "cell": { + "columnId": "OpSecId", + "rowId": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." + }, + "_events": {}, + "_eventsCount": 1, + "link": "https://www.w3.org/TR/vc-data-integrity/#:~:text=The%20date%20and%20time%20the%20proof%20was%20created%20is%20OPTIONAL%20and%2C%20if%20included%2C%20MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC.", + "duration": 0, + "state": "passed", + "speed": "fast" }, { "type": "test", - "title": "\"proof\" MUST verify when using a conformant verifier.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title,\n };\n should.exist(verifier, 'Expected implementation to have a VC ' +\n 'HTTP API compatible verifier.');\n const {result, error} = await verifier.post({json: {\n verifiableCredential: issuedVc,\n options: {checks: ['proof']}\n }});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected verifier to return a result.');\n result.status.should.not.equal(400, 'Expected status code to not ' +\n 'be 400.');\n result.status.should.equal(200, 'Expected status code to be 200.');\n }", + "title": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", + "body": "function() {\n this.test.link = 'https://www.w3.org/TR/vc-data-integrity/#:~:text=The%20date%20and%20time%20the%20proof%20was%20created%20is%20OPTIONAL%20and%2C%20if%20included%2C%20MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC.';\n if(optionalTests.dates === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.created) {\n // check if \"created\" is a valid XML Schema 1.1 dateTimeStamp\n // value\n proof.created.should.match(dateRegex);\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -11270,18 +10958,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "BcJKqY4K2aywv6JKOsV8C", - "ctx": null - } - ], - "root": false, - "pending": false, - "_retries": -1, - "_beforeEach": [], - "_beforeAll": [ + "parent": "pJvzjaJb0oGOCZ6Fp689R", + "ctx": null, + "_testId": "urn:uuid:b491a39e-8b44-4418-aecb-58c49bb3e350", + "cell": { + "columnId": "SpruceID", + "rowId": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." + }, + "_events": {}, + "_eventsCount": 1, + "link": "https://www.w3.org/TR/vc-data-integrity/#:~:text=The%20date%20and%20time%20the%20proof%20was%20created%20is%20OPTIONAL%20and%2C%20if%20included%2C%20MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC.", + "duration": 0, + "state": "passed", + "speed": "fast" + }, { - "title": "\"before all\" hook for \"\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes.\"", - "body": "async function() {\n const [issuer] = endpoints;\n verifier = implementation.verifiers.find(\n verifier => verifier.tags.has(tag));\n const {settings: {id: issuerId, options}} = issuer;\n const body = {credential: klona(validVc), options};\n body.credential.id = `urn:uuid:${uuidv4()}`;\n body.credential.issuer = issuerId;\n const {data, error} = await issuer.post({json: body});\n if(error) {\n throw error;\n }\n issuedVc = data;\n const {proof} = issuedVc || {};\n proofs = Array.isArray(proof) ? proof : [proof];\n }", + "type": "test", + "title": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", + "body": "function() {\n this.test.link = 'https://www.w3.org/TR/vc-data-integrity/#:~:text=The%20date%20and%20time%20the%20proof%20was%20created%20is%20OPTIONAL%20and%2C%20if%20included%2C%20MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC.';\n if(optionalTests.dates === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.created) {\n // check if \"created\" is a valid XML Schema 1.1 dateTimeStamp\n // value\n proof.created.should.match(dateRegex);\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -11290,151 +10984,31 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "type": "hook", - "parent": "BcJKqY4K2aywv6JKOsV8C", - "ctx": null, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "originalTitle": "\"before all\" hook", + "parent": "qmgk3hHclzYw9jf2QjmPc", + "ctx": null, + "_testId": "urn:uuid:d81863d0-6891-45df-b521-1f11368cd92e", + "cell": { + "columnId": "Trinsic", + "rowId": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." + }, "_events": {}, "_eventsCount": 1, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 12889, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 24, - "_error": null, - "state": "failed", - "err": { - "response": {}, - "request": {}, - "options": { - "credentials": "same-origin", - "headers": {}, - "body": "{\"credential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\"],\"id\":\"urn:uuid:8a145b64-aa36-4d9e-a7b8-40e00d0319c9\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MksCeXh9Jwp4ZTEb5Kei7sJpBLpUyS3oaAib8wbtJQqsQu\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"}},\"options\":{\"type\":\"Ed25519Signature2020\",\"credentialStatus\":{\"type\":\"BitstringStatusListEntry\",\"statusPurpose\":\"suspension\"}}}", - "method": "POST", - "json": { - "credential": { - "@context": [ - "https://www.w3.org/2018/credentials/v1" - ], - "id": "urn:uuid:8a145b64-aa36-4d9e-a7b8-40e00d0319c9", - "type": [ - "VerifiableCredential" - ], - "issuer": "did:key:z6MksCeXh9Jwp4ZTEb5Kei7sJpBLpUyS3oaAib8wbtJQqsQu", - "issuanceDate": "2020-03-16T22:37:26.544Z", - "credentialSubject": { - "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" - } - }, - "options": { - "type": "Ed25519Signature2020", - "credentialStatus": { - "type": "BitstringStatusListEntry", - "statusPurpose": "suspension" - } - } - }, - "agent": { - "_events": {}, - "_eventsCount": 2, - "defaultPort": 443, - "protocol": "https:", - "options": { - "rejectUnauthorized": false, - "noDelay": true, - "path": null - }, - "requests": {}, - "sockets": {}, - "freeSockets": {}, - "keepAliveMsecs": 1000, - "keepAlive": false, - "maxSockets": null, - "maxFreeSockets": 256, - "scheduling": "lifo", - "maxTotalSockets": null, - "totalSocketCount": 0, - "maxCachedSessions": 100, - "_sessionCache": { - "map": {}, - "list": [] - } - }, - "hooks": { - "beforeRequest": [], - "beforeRetry": [], - "beforeError": [], - "afterResponse": [] - }, - "prefixUrl": "", - "retry": { - "limit": 2, - "methods": [ - "get", - "put", - "head", - "delete", - "options", - "trace" - ], - "statusCodes": [ - 408, - 413, - 429, - 500, - 502, - 503, - 504 - ], - "afterStatusCodes": [ - 413, - 429, - 503 - ], - "maxRetryAfter": null, - "backoffLimit": null - }, - "throwHttpErrors": true, - "timeout": 10000, - "signal": {}, - "duplex": "half" - }, - "name": "HTTPError", - "requestUrl": "https://agent.opsec.id/vc/credentials/issue", - "status": 400, - "data": { - "message": "DID not found: did:key:z6MksCeXh9Jwp4ZTEb5Kei7sJpBLpUyS3oaAib8wbtJQqsQu" - } - } + "link": "https://www.w3.org/TR/vc-data-integrity/#:~:text=The%20date%20and%20time%20the%20proof%20was%20created%20is%20OPTIONAL%20and%2C%20if%20included%2C%20MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC.", + "duration": 0, + "state": "passed", + "speed": "fast" } - ], - "_afterEach": [], - "_afterAll": [], - "_timeout": 15000, - "_slow": 75, - "_bail": false, - "_onlyTests": [], - "_onlySuites": [], - "delayed": false, - "parent": "Xssoo53tV8ySDtlFVXM50", - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "_testId": "urn:uuid:50cc9e7d-21ec-4992-8a95-47568d765d04" + ] }, { - "title": "SpruceID", - "ctx": null, - "suites": [], - "tests": [ + "id": "The expires property is OPTIONAL and, if present, specifies when the proof expires. If present, it MUST be an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time", + "cells": [ { "type": "test", - "title": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n should.exist(issuedVc, 'Expected issuer to have issued a ' +\n 'credential.');\n should.exist(proofs, 'Expected credential to have a proof.');\n const ed25519Proofs = proofs.filter(\n proof => proof?.type === 'Ed25519Signature2020');\n ed25519Proofs.length.should.be.gte(1, 'Expected at least one ' +\n 'Ed25519 proof.');\n for(const proof of ed25519Proofs) {\n should.exist(proof.proofValue, 'Expected a proof value on ' +\n 'the proof.');\n const valueBytes = bs58Decode({id: proof.proofValue});\n should.exist(proof.verificationMethod);\n const vmBytes = await getPublicKeyBytes({\n did: proof.verificationMethod});\n vmBytes.byteLength.should.be.oneOf([32, 57], 'Expected public ' +\n 'key bytes to be either 32 or 57 bytes.');\n if(vmBytes.byteLength === 32) {\n valueBytes.byteLength.should.equal(64, 'Expected 64 bytes ' +\n 'proofValue for 32 bytes key.');\n } else {\n valueBytes.byteLength.should.equal(114, 'Expected 114 bytes ' +\n 'proofValue for 57 bytes key.');\n }\n }\n }", + "title": "The expires property is OPTIONAL and, if present, specifies when the proof expires. If present, it MUST be an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time';\n if(optionalTests.dates === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.expires) {\n // check if \"created\" is a valid XML Schema 1.1 dateTimeStamp\n // value\n proof.expires.should.match(dateRegex);\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -11444,32 +11018,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "8s2j36ZYuISUJkKw9352T", + "parent": "yxhpYILOcqbki3FDec94S", "ctx": null, - "_testId": "urn:uuid:e65cf915-1804-465f-b286-c8d7d0963e43", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:01a28f8c-f256-42fa-ab05-a4c5e088c1d0", "cell": { - "columnId": "SpruceID", - "rowId": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes." - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 12938, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true + "columnId": "apicatalog.com", + "rowId": "The expires property is OPTIONAL and, if present, specifies when the proof expires. If present, it MUST be an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." }, + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time", "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "\"proof\" MUST verify when using a conformant verifier.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title,\n };\n should.exist(verifier, 'Expected implementation to have a VC ' +\n 'HTTP API compatible verifier.');\n const {result, error} = await verifier.post({json: {\n verifiableCredential: issuedVc,\n options: {checks: ['proof']}\n }});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected verifier to return a result.');\n result.status.should.not.equal(400, 'Expected status code to not ' +\n 'be 400.');\n result.status.should.equal(200, 'Expected status code to be 200.');\n }", + "title": "The expires property is OPTIONAL and, if present, specifies when the proof expires. If present, it MUST be an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time';\n if(optionalTests.dates === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.expires) {\n // check if \"created\" is a valid XML Schema 1.1 dateTimeStamp\n // value\n proof.expires.should.match(dateRegex);\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -11479,37 +11045,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "8s2j36ZYuISUJkKw9352T", + "parent": "QHK1IypTjZvkcHZsBOX_g", "ctx": null, - "_testId": "urn:uuid:84d9098f-17f5-4923-abbf-23baff0baf00", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:9c56030f-b81f-4e09-83f6-5b0f69418693", "cell": { - "columnId": "SpruceID", - "rowId": "\"proof\" MUST verify when using a conformant verifier." - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 12939, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true + "columnId": "Danube Tech", + "rowId": "The expires property is OPTIONAL and, if present, specifies when the proof expires. If present, it MUST be an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." }, - "duration": 26, + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time", + "duration": 0, "state": "passed", "speed": "fast" - } - ], - "root": false, - "pending": false, - "_retries": -1, - "_beforeEach": [], - "_beforeAll": [ + }, { - "title": "\"before all\" hook in \"SpruceID\"", - "body": "async function() {\n const [issuer] = endpoints;\n verifier = implementation.verifiers.find(\n verifier => verifier.tags.has(tag));\n const {settings: {id: issuerId, options}} = issuer;\n const body = {credential: klona(validVc), options};\n body.credential.id = `urn:uuid:${uuidv4()}`;\n body.credential.issuer = issuerId;\n const {data, error} = await issuer.post({json: body});\n if(error) {\n throw error;\n }\n issuedVc = data;\n const {proof} = issuedVc || {};\n proofs = Array.isArray(proof) ? proof : [proof];\n }", + "type": "test", + "title": "The expires property is OPTIONAL and, if present, specifies when the proof expires. If present, it MUST be an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time';\n if(optionalTests.dates === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.expires) {\n // check if \"created\" is a valid XML Schema 1.1 dateTimeStamp\n // value\n proof.expires.should.match(dateRegex);\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -11518,47 +11071,25 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "type": "hook", - "parent": "8s2j36ZYuISUJkKw9352T", - "ctx": null, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "originalTitle": "\"before all\" hook", + "parent": "3oybt7im9lmDGUjG_T3ge", + "ctx": null, + "_testId": "urn:uuid:0b97e0f1-8ea0-430a-9137-d59ef990bda3", + "cell": { + "columnId": "Digital Bazaar", + "rowId": "The expires property is OPTIONAL and, if present, specifies when the proof expires. If present, it MUST be an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." + }, "_events": {}, "_eventsCount": 1, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 12915, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 23, - "_error": null - } - ], - "_afterEach": [], - "_afterAll": [], - "_timeout": 15000, - "_slow": 75, - "_bail": false, - "_onlyTests": [], - "_onlySuites": [], - "delayed": false, - "parent": "Xssoo53tV8ySDtlFVXM50", - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "_testId": "urn:uuid:21627485-e32c-47d6-a0d4-6e439e368662" - }, - { - "title": "Trinsic", - "ctx": null, - "suites": [], - "tests": [ + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time", + "duration": 0, + "state": "passed", + "speed": "fast" + }, { "type": "test", - "title": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n should.exist(issuedVc, 'Expected issuer to have issued a ' +\n 'credential.');\n should.exist(proofs, 'Expected credential to have a proof.');\n const ed25519Proofs = proofs.filter(\n proof => proof?.type === 'Ed25519Signature2020');\n ed25519Proofs.length.should.be.gte(1, 'Expected at least one ' +\n 'Ed25519 proof.');\n for(const proof of ed25519Proofs) {\n should.exist(proof.proofValue, 'Expected a proof value on ' +\n 'the proof.');\n const valueBytes = bs58Decode({id: proof.proofValue});\n should.exist(proof.verificationMethod);\n const vmBytes = await getPublicKeyBytes({\n did: proof.verificationMethod});\n vmBytes.byteLength.should.be.oneOf([32, 57], 'Expected public ' +\n 'key bytes to be either 32 or 57 bytes.');\n if(vmBytes.byteLength === 32) {\n valueBytes.byteLength.should.equal(64, 'Expected 64 bytes ' +\n 'proofValue for 32 bytes key.');\n } else {\n valueBytes.byteLength.should.equal(114, 'Expected 114 bytes ' +\n 'proofValue for 57 bytes key.');\n }\n }\n }", + "title": "The expires property is OPTIONAL and, if present, specifies when the proof expires. If present, it MUST be an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time';\n if(optionalTests.dates === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.expires) {\n // check if \"created\" is a valid XML Schema 1.1 dateTimeStamp\n // value\n proof.expires.should.match(dateRegex);\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -11568,32 +11099,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "wz7j8IHNGHZqdQAK0KF4D", + "parent": "tikRDf1hNC-fQs8dM6EPO", "ctx": null, - "_testId": "urn:uuid:53314aca-4c47-4a1a-b923-2913843d6e4d", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:62518ba5-d350-4853-8198-cc31e35fccc0", "cell": { - "columnId": "Trinsic", - "rowId": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes." - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 13680, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true + "columnId": "EWF", + "rowId": "The expires property is OPTIONAL and, if present, specifies when the proof expires. If present, it MUST be an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." }, + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time", "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "\"proof\" MUST verify when using a conformant verifier.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title,\n };\n should.exist(verifier, 'Expected implementation to have a VC ' +\n 'HTTP API compatible verifier.');\n const {result, error} = await verifier.post({json: {\n verifiableCredential: issuedVc,\n options: {checks: ['proof']}\n }});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected verifier to return a result.');\n result.status.should.not.equal(400, 'Expected status code to not ' +\n 'be 400.');\n result.status.should.equal(200, 'Expected status code to be 200.');\n }", + "title": "The expires property is OPTIONAL and, if present, specifies when the proof expires. If present, it MUST be an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time';\n if(optionalTests.dates === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.expires) {\n // check if \"created\" is a valid XML Schema 1.1 dateTimeStamp\n // value\n proof.expires.should.match(dateRegex);\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -11603,37 +11126,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "wz7j8IHNGHZqdQAK0KF4D", + "parent": "3UTW-_LttILA3ILQtGZo2", "ctx": null, - "_testId": "urn:uuid:cf9ed291-c7c7-4789-bea9-aadf8a7cc5d9", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:47fd6a47-2c06-486a-943b-f7c01a8f96da", "cell": { - "columnId": "Trinsic", - "rowId": "\"proof\" MUST verify when using a conformant verifier." - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 13681, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true + "columnId": "LearnCard", + "rowId": "The expires property is OPTIONAL and, if present, specifies when the proof expires. If present, it MUST be an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." }, - "duration": 74, + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time", + "duration": 0, "state": "passed", - "speed": "medium" - } - ], - "root": false, - "pending": false, - "_retries": -1, - "_beforeEach": [], - "_beforeAll": [ + "speed": "fast" + }, { - "title": "\"before all\" hook in \"Trinsic\"", - "body": "async function() {\n const [issuer] = endpoints;\n verifier = implementation.verifiers.find(\n verifier => verifier.tags.has(tag));\n const {settings: {id: issuerId, options}} = issuer;\n const body = {credential: klona(validVc), options};\n body.credential.id = `urn:uuid:${uuidv4()}`;\n body.credential.issuer = issuerId;\n const {data, error} = await issuer.post({json: body});\n if(error) {\n throw error;\n }\n issuedVc = data;\n const {proof} = issuedVc || {};\n proofs = Array.isArray(proof) ? proof : [proof];\n }", + "type": "test", + "title": "The expires property is OPTIONAL and, if present, specifies when the proof expires. If present, it MUST be an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time';\n if(optionalTests.dates === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.expires) {\n // check if \"created\" is a valid XML Schema 1.1 dateTimeStamp\n // value\n proof.expires.should.match(dateRegex);\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -11642,77 +11152,25 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "type": "hook", - "parent": "wz7j8IHNGHZqdQAK0KF4D", - "ctx": null, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "originalTitle": "\"before all\" hook", + "parent": "V3app5v08kK3UQYixBWWE", + "ctx": null, + "_testId": "urn:uuid:c4a02dc7-2156-47ec-9878-145d07287e96", + "cell": { + "columnId": "OpSecId", + "rowId": "The expires property is OPTIONAL and, if present, specifies when the proof expires. If present, it MUST be an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." + }, "_events": {}, "_eventsCount": 1, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 12965, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 715, - "_error": null - } - ], - "_afterEach": [], - "_afterAll": [], - "_timeout": 15000, - "_slow": 75, - "_bail": false, - "_onlyTests": [], - "_onlySuites": [], - "delayed": false, - "parent": "Xssoo53tV8ySDtlFVXM50", - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "_testId": "urn:uuid:931eff37-3208-4269-8da4-ab0b2f06eacf" - } - ], - "root": false, - "pending": false, - "_retries": -1, - "_beforeEach": [], - "_beforeAll": [], - "_afterEach": [], - "_afterAll": [], - "_timeout": 15000, - "_slow": 75, - "_bail": false, - "_onlyTests": [], - "_onlySuites": [], - "delayed": false, - "parent": "ZK_FTaA4OAv2ZcdBmOWSL", - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "matrix": true, - "report": true, - "rowLabel": "Test Name", - "columnLabel": "Issuer", - "_testId": "urn:uuid:f5c0620b-cbcd-412d-a560-381ef5fc4bf0", - "columns": [ - "apicatalog.com", - "Danube Tech", - "Digital Bazaar", - "EWF", - "LearnCard", - "OpSecId", - "SpruceID", - "Trinsic" - ], - "rows": [ - { - "id": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes.", - "cells": [ + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time", + "duration": 0, + "state": "passed", + "speed": "fast" + }, { "type": "test", - "title": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n should.exist(issuedVc, 'Expected issuer to have issued a ' +\n 'credential.');\n should.exist(proofs, 'Expected credential to have a proof.');\n const ed25519Proofs = proofs.filter(\n proof => proof?.type === 'Ed25519Signature2020');\n ed25519Proofs.length.should.be.gte(1, 'Expected at least one ' +\n 'Ed25519 proof.');\n for(const proof of ed25519Proofs) {\n should.exist(proof.proofValue, 'Expected a proof value on ' +\n 'the proof.');\n const valueBytes = bs58Decode({id: proof.proofValue});\n should.exist(proof.verificationMethod);\n const vmBytes = await getPublicKeyBytes({\n did: proof.verificationMethod});\n vmBytes.byteLength.should.be.oneOf([32, 57], 'Expected public ' +\n 'key bytes to be either 32 or 57 bytes.');\n if(vmBytes.byteLength === 32) {\n valueBytes.byteLength.should.equal(64, 'Expected 64 bytes ' +\n 'proofValue for 32 bytes key.');\n } else {\n valueBytes.byteLength.should.equal(114, 'Expected 114 bytes ' +\n 'proofValue for 57 bytes key.');\n }\n }\n }", + "title": "The expires property is OPTIONAL and, if present, specifies when the proof expires. If present, it MUST be an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time';\n if(optionalTests.dates === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.expires) {\n // check if \"created\" is a valid XML Schema 1.1 dateTimeStamp\n // value\n proof.expires.should.match(dateRegex);\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -11722,32 +11180,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "i7kRZXzA5RnGgOruZjVpf", + "parent": "pJvzjaJb0oGOCZ6Fp689R", "ctx": null, - "_testId": "urn:uuid:d2c227a4-a54f-4eee-801c-5b302a6f9c17", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:6a1d3686-dc33-48aa-ad6e-5246ba306d6a", "cell": { - "columnId": "apicatalog.com", - "rowId": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes." - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 10448, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true + "columnId": "SpruceID", + "rowId": "The expires property is OPTIONAL and, if present, specifies when the proof expires. If present, it MUST be an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." }, - "duration": 1, + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time", + "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n should.exist(issuedVc, 'Expected issuer to have issued a ' +\n 'credential.');\n should.exist(proofs, 'Expected credential to have a proof.');\n const ed25519Proofs = proofs.filter(\n proof => proof?.type === 'Ed25519Signature2020');\n ed25519Proofs.length.should.be.gte(1, 'Expected at least one ' +\n 'Ed25519 proof.');\n for(const proof of ed25519Proofs) {\n should.exist(proof.proofValue, 'Expected a proof value on ' +\n 'the proof.');\n const valueBytes = bs58Decode({id: proof.proofValue});\n should.exist(proof.verificationMethod);\n const vmBytes = await getPublicKeyBytes({\n did: proof.verificationMethod});\n vmBytes.byteLength.should.be.oneOf([32, 57], 'Expected public ' +\n 'key bytes to be either 32 or 57 bytes.');\n if(vmBytes.byteLength === 32) {\n valueBytes.byteLength.should.equal(64, 'Expected 64 bytes ' +\n 'proofValue for 32 bytes key.');\n } else {\n valueBytes.byteLength.should.equal(114, 'Expected 114 bytes ' +\n 'proofValue for 57 bytes key.');\n }\n }\n }", + "title": "The expires property is OPTIONAL and, if present, specifies when the proof expires. If present, it MUST be an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time';\n if(optionalTests.dates === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.expires) {\n // check if \"created\" is a valid XML Schema 1.1 dateTimeStamp\n // value\n proof.expires.should.match(dateRegex);\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -11757,32 +11207,30 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "wuzb1dwi_VN7BLBuHNMY4", + "parent": "qmgk3hHclzYw9jf2QjmPc", "ctx": null, - "_testId": "urn:uuid:7eb082e2-ef41-4547-aa07-39f76ce6aa41", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:ac859da4-a074-4c3f-9fc3-e38216195679", "cell": { - "columnId": "Danube Tech", - "rowId": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes." - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 10710, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true + "columnId": "Trinsic", + "rowId": "The expires property is OPTIONAL and, if present, specifies when the proof expires. If present, it MUST be an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." }, - "duration": 1, + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time", + "duration": 0, "state": "passed", "speed": "fast" - }, + } + ] + }, + { + "id": "The domain property is OPTIONAL. It conveys one or more security domains in which the proof is meant to be used. If specified, the associated value MUST be either a string, or an unordered set of strings. A verifier SHOULD use the value to ensure that the proof was intended to be used in the security domain in which the verifier is operating.", + "link": "https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=The%20domain%20property%20is%20OPTIONAL.%20It%20conveys%20one%20or%20more%20security%20domains%20in%20which%20the%20proof%20is%20meant%20to%20be%20used.%20If%20specified%2C%20the%20associated%20value%20MUST", + "cells": [ { "type": "test", - "title": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n should.exist(issuedVc, 'Expected issuer to have issued a ' +\n 'credential.');\n should.exist(proofs, 'Expected credential to have a proof.');\n const ed25519Proofs = proofs.filter(\n proof => proof?.type === 'Ed25519Signature2020');\n ed25519Proofs.length.should.be.gte(1, 'Expected at least one ' +\n 'Ed25519 proof.');\n for(const proof of ed25519Proofs) {\n should.exist(proof.proofValue, 'Expected a proof value on ' +\n 'the proof.');\n const valueBytes = bs58Decode({id: proof.proofValue});\n should.exist(proof.verificationMethod);\n const vmBytes = await getPublicKeyBytes({\n did: proof.verificationMethod});\n vmBytes.byteLength.should.be.oneOf([32, 57], 'Expected public ' +\n 'key bytes to be either 32 or 57 bytes.');\n if(vmBytes.byteLength === 32) {\n valueBytes.byteLength.should.equal(64, 'Expected 64 bytes ' +\n 'proofValue for 32 bytes key.');\n } else {\n valueBytes.byteLength.should.equal(114, 'Expected 114 bytes ' +\n 'proofValue for 57 bytes key.');\n }\n }\n }", + "title": "The domain property is OPTIONAL. It conveys one or more security domains in which the proof is meant to be used. If specified, the associated value MUST be either a string, or an unordered set of strings. A verifier SHOULD use the value to ensure that the proof was intended to be used in the security domain in which the verifier is operating.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=The%20domain%20property%20is%20OPTIONAL.%20It%20conveys%20one%20or%20more%20security%20domains%20in%20which%20the%20proof%20is%20meant%20to%20be%20used.%20If%20specified%2C%20the%20associated%20value%20MUST';\n if(optionalTests.domain === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.domain) {\n const validType = isStringOrArrayOfStrings(proof.domain);\n validType.should.equal(true, 'Expected ' +\n '\"proof.domain\" to be either a string or an unordered ' +\n 'set of strings.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -11792,32 +11240,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Qcd9KdsEaPpetMXS-bPlq", + "parent": "yxhpYILOcqbki3FDec94S", "ctx": null, - "_testId": "urn:uuid:269a5bef-c393-4cf9-80d9-6ba78e6e5327", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:d2ffacde-e943-40ac-9a82-d1f2352b5d23", "cell": { - "columnId": "Digital Bazaar", - "rowId": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes." - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 12029, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true + "columnId": "apicatalog.com", + "rowId": "The domain property is OPTIONAL. It conveys one or more security domains in which the proof is meant to be used. If specified, the associated value MUST be either a string, or an unordered set of strings. A verifier SHOULD use the value to ensure that the proof was intended to be used in the security domain in which the verifier is operating." }, - "duration": 1, + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=The%20domain%20property%20is%20OPTIONAL.%20It%20conveys%20one%20or%20more%20security%20domains%20in%20which%20the%20proof%20is%20meant%20to%20be%20used.%20If%20specified%2C%20the%20associated%20value%20MUST", + "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n should.exist(issuedVc, 'Expected issuer to have issued a ' +\n 'credential.');\n should.exist(proofs, 'Expected credential to have a proof.');\n const ed25519Proofs = proofs.filter(\n proof => proof?.type === 'Ed25519Signature2020');\n ed25519Proofs.length.should.be.gte(1, 'Expected at least one ' +\n 'Ed25519 proof.');\n for(const proof of ed25519Proofs) {\n should.exist(proof.proofValue, 'Expected a proof value on ' +\n 'the proof.');\n const valueBytes = bs58Decode({id: proof.proofValue});\n should.exist(proof.verificationMethod);\n const vmBytes = await getPublicKeyBytes({\n did: proof.verificationMethod});\n vmBytes.byteLength.should.be.oneOf([32, 57], 'Expected public ' +\n 'key bytes to be either 32 or 57 bytes.');\n if(vmBytes.byteLength === 32) {\n valueBytes.byteLength.should.equal(64, 'Expected 64 bytes ' +\n 'proofValue for 32 bytes key.');\n } else {\n valueBytes.byteLength.should.equal(114, 'Expected 114 bytes ' +\n 'proofValue for 57 bytes key.');\n }\n }\n }", + "title": "The domain property is OPTIONAL. It conveys one or more security domains in which the proof is meant to be used. If specified, the associated value MUST be either a string, or an unordered set of strings. A verifier SHOULD use the value to ensure that the proof was intended to be used in the security domain in which the verifier is operating.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=The%20domain%20property%20is%20OPTIONAL.%20It%20conveys%20one%20or%20more%20security%20domains%20in%20which%20the%20proof%20is%20meant%20to%20be%20used.%20If%20specified%2C%20the%20associated%20value%20MUST';\n if(optionalTests.domain === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.domain) {\n const validType = isStringOrArrayOfStrings(proof.domain);\n validType.should.equal(true, 'Expected ' +\n '\"proof.domain\" to be either a string or an unordered ' +\n 'set of strings.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -11827,40 +11267,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "QX6-C2GDoB1mObLYhcgGb", + "parent": "QHK1IypTjZvkcHZsBOX_g", "ctx": null, - "_testId": "urn:uuid:537c420f-f120-4780-a3c7-893afca0a9a1", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:68c7679f-3d96-4da6-8ba2-3b8417dd9006", "cell": { - "columnId": "EWF", - "rowId": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes." - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 12652, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true + "columnId": "Danube Tech", + "rowId": "The domain property is OPTIONAL. It conveys one or more security domains in which the proof is meant to be used. If specified, the associated value MUST be either a string, or an unordered set of strings. A verifier SHOULD use the value to ensure that the proof was intended to be used in the security domain in which the verifier is operating." }, - "duration": 1, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected at least one Ed25519 proof.: expected +0 to be at least 1", - "showDiff": true, - "actual": "0", - "expected": "1", - "operator": "strictEqual", - "stack": "AssertionError: Expected at least one Ed25519 proof.: expected +0 to be at least 1\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js:73:42)\n at process.processImmediate (node:internal/timers:483:21)" - } + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=The%20domain%20property%20is%20OPTIONAL.%20It%20conveys%20one%20or%20more%20security%20domains%20in%20which%20the%20proof%20is%20meant%20to%20be%20used.%20If%20specified%2C%20the%20associated%20value%20MUST", + "duration": 0, + "state": "passed", + "speed": "fast" }, { "type": "test", - "title": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n should.exist(issuedVc, 'Expected issuer to have issued a ' +\n 'credential.');\n should.exist(proofs, 'Expected credential to have a proof.');\n const ed25519Proofs = proofs.filter(\n proof => proof?.type === 'Ed25519Signature2020');\n ed25519Proofs.length.should.be.gte(1, 'Expected at least one ' +\n 'Ed25519 proof.');\n for(const proof of ed25519Proofs) {\n should.exist(proof.proofValue, 'Expected a proof value on ' +\n 'the proof.');\n const valueBytes = bs58Decode({id: proof.proofValue});\n should.exist(proof.verificationMethod);\n const vmBytes = await getPublicKeyBytes({\n did: proof.verificationMethod});\n vmBytes.byteLength.should.be.oneOf([32, 57], 'Expected public ' +\n 'key bytes to be either 32 or 57 bytes.');\n if(vmBytes.byteLength === 32) {\n valueBytes.byteLength.should.equal(64, 'Expected 64 bytes ' +\n 'proofValue for 32 bytes key.');\n } else {\n valueBytes.byteLength.should.equal(114, 'Expected 114 bytes ' +\n 'proofValue for 57 bytes key.');\n }\n }\n }", + "title": "The domain property is OPTIONAL. It conveys one or more security domains in which the proof is meant to be used. If specified, the associated value MUST be either a string, or an unordered set of strings. A verifier SHOULD use the value to ensure that the proof was intended to be used in the security domain in which the verifier is operating.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=The%20domain%20property%20is%20OPTIONAL.%20It%20conveys%20one%20or%20more%20security%20domains%20in%20which%20the%20proof%20is%20meant%20to%20be%20used.%20If%20specified%2C%20the%20associated%20value%20MUST';\n if(optionalTests.domain === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.domain) {\n const validType = isStringOrArrayOfStrings(proof.domain);\n validType.should.equal(true, 'Expected ' +\n '\"proof.domain\" to be either a string or an unordered ' +\n 'set of strings.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -11870,42 +11294,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "ptkLwBORZOzbp5lMwrUoz", + "parent": "3oybt7im9lmDGUjG_T3ge", "ctx": null, - "_testId": "urn:uuid:ede85709-d9c8-44e8-bca2-919321debebd", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:c9975271-3a96-476c-9dcf-ac42d037b499", "cell": { - "columnId": "LearnCard", - "rowId": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes." - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 12816, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true + "columnId": "Digital Bazaar", + "rowId": "The domain property is OPTIONAL. It conveys one or more security domains in which the proof is meant to be used. If specified, the associated value MUST be either a string, or an unordered set of strings. A verifier SHOULD use the value to ensure that the proof was intended to be used in the security domain in which the verifier is operating." }, - "duration": 1, + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=The%20domain%20property%20is%20OPTIONAL.%20It%20conveys%20one%20or%20more%20security%20domains%20in%20which%20the%20proof%20is%20meant%20to%20be%20used.%20If%20specified%2C%20the%20associated%20value%20MUST", + "duration": 0, "state": "passed", "speed": "fast" }, - { - "cell": { - "rowId": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes.", - "colId": "OpSecId" - }, - "state": "pending", - "err": { - "message": "Test skipped." - } - }, { "type": "test", - "title": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n should.exist(issuedVc, 'Expected issuer to have issued a ' +\n 'credential.');\n should.exist(proofs, 'Expected credential to have a proof.');\n const ed25519Proofs = proofs.filter(\n proof => proof?.type === 'Ed25519Signature2020');\n ed25519Proofs.length.should.be.gte(1, 'Expected at least one ' +\n 'Ed25519 proof.');\n for(const proof of ed25519Proofs) {\n should.exist(proof.proofValue, 'Expected a proof value on ' +\n 'the proof.');\n const valueBytes = bs58Decode({id: proof.proofValue});\n should.exist(proof.verificationMethod);\n const vmBytes = await getPublicKeyBytes({\n did: proof.verificationMethod});\n vmBytes.byteLength.should.be.oneOf([32, 57], 'Expected public ' +\n 'key bytes to be either 32 or 57 bytes.');\n if(vmBytes.byteLength === 32) {\n valueBytes.byteLength.should.equal(64, 'Expected 64 bytes ' +\n 'proofValue for 32 bytes key.');\n } else {\n valueBytes.byteLength.should.equal(114, 'Expected 114 bytes ' +\n 'proofValue for 57 bytes key.');\n }\n }\n }", + "title": "The domain property is OPTIONAL. It conveys one or more security domains in which the proof is meant to be used. If specified, the associated value MUST be either a string, or an unordered set of strings. A verifier SHOULD use the value to ensure that the proof was intended to be used in the security domain in which the verifier is operating.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=The%20domain%20property%20is%20OPTIONAL.%20It%20conveys%20one%20or%20more%20security%20domains%20in%20which%20the%20proof%20is%20meant%20to%20be%20used.%20If%20specified%2C%20the%20associated%20value%20MUST';\n if(optionalTests.domain === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.domain) {\n const validType = isStringOrArrayOfStrings(proof.domain);\n validType.should.equal(true, 'Expected ' +\n '\"proof.domain\" to be either a string or an unordered ' +\n 'set of strings.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -11915,32 +11321,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "8s2j36ZYuISUJkKw9352T", + "parent": "tikRDf1hNC-fQs8dM6EPO", "ctx": null, - "_testId": "urn:uuid:e65cf915-1804-465f-b286-c8d7d0963e43", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:3591977d-8730-4242-8ef1-6b4b65ac8911", "cell": { - "columnId": "SpruceID", - "rowId": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes." - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 12938, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true + "columnId": "EWF", + "rowId": "The domain property is OPTIONAL. It conveys one or more security domains in which the proof is meant to be used. If specified, the associated value MUST be either a string, or an unordered set of strings. A verifier SHOULD use the value to ensure that the proof was intended to be used in the security domain in which the verifier is operating." }, + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=The%20domain%20property%20is%20OPTIONAL.%20It%20conveys%20one%20or%20more%20security%20domains%20in%20which%20the%20proof%20is%20meant%20to%20be%20used.%20If%20specified%2C%20the%20associated%20value%20MUST", "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n should.exist(issuedVc, 'Expected issuer to have issued a ' +\n 'credential.');\n should.exist(proofs, 'Expected credential to have a proof.');\n const ed25519Proofs = proofs.filter(\n proof => proof?.type === 'Ed25519Signature2020');\n ed25519Proofs.length.should.be.gte(1, 'Expected at least one ' +\n 'Ed25519 proof.');\n for(const proof of ed25519Proofs) {\n should.exist(proof.proofValue, 'Expected a proof value on ' +\n 'the proof.');\n const valueBytes = bs58Decode({id: proof.proofValue});\n should.exist(proof.verificationMethod);\n const vmBytes = await getPublicKeyBytes({\n did: proof.verificationMethod});\n vmBytes.byteLength.should.be.oneOf([32, 57], 'Expected public ' +\n 'key bytes to be either 32 or 57 bytes.');\n if(vmBytes.byteLength === 32) {\n valueBytes.byteLength.should.equal(64, 'Expected 64 bytes ' +\n 'proofValue for 32 bytes key.');\n } else {\n valueBytes.byteLength.should.equal(114, 'Expected 114 bytes ' +\n 'proofValue for 57 bytes key.');\n }\n }\n }", + "title": "The domain property is OPTIONAL. It conveys one or more security domains in which the proof is meant to be used. If specified, the associated value MUST be either a string, or an unordered set of strings. A verifier SHOULD use the value to ensure that the proof was intended to be used in the security domain in which the verifier is operating.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=The%20domain%20property%20is%20OPTIONAL.%20It%20conveys%20one%20or%20more%20security%20domains%20in%20which%20the%20proof%20is%20meant%20to%20be%20used.%20If%20specified%2C%20the%20associated%20value%20MUST';\n if(optionalTests.domain === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.domain) {\n const validType = isStringOrArrayOfStrings(proof.domain);\n validType.should.equal(true, 'Expected ' +\n '\"proof.domain\" to be either a string or an unordered ' +\n 'set of strings.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -11950,37 +11348,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "wz7j8IHNGHZqdQAK0KF4D", + "parent": "3UTW-_LttILA3ILQtGZo2", "ctx": null, - "_testId": "urn:uuid:53314aca-4c47-4a1a-b923-2913843d6e4d", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:ca64e697-7d55-4584-a247-8b46120eae77", "cell": { - "columnId": "Trinsic", - "rowId": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes." - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 13680, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true + "columnId": "LearnCard", + "rowId": "The domain property is OPTIONAL. It conveys one or more security domains in which the proof is meant to be used. If specified, the associated value MUST be either a string, or an unordered set of strings. A verifier SHOULD use the value to ensure that the proof was intended to be used in the security domain in which the verifier is operating." }, + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=The%20domain%20property%20is%20OPTIONAL.%20It%20conveys%20one%20or%20more%20security%20domains%20in%20which%20the%20proof%20is%20meant%20to%20be%20used.%20If%20specified%2C%20the%20associated%20value%20MUST", "duration": 0, "state": "passed", "speed": "fast" - } - ] - }, - { - "id": "\"proof\" MUST verify when using a conformant verifier.", - "cells": [ + }, { "type": "test", - "title": "\"proof\" MUST verify when using a conformant verifier.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title,\n };\n should.exist(verifier, 'Expected implementation to have a VC ' +\n 'HTTP API compatible verifier.');\n const {result, error} = await verifier.post({json: {\n verifiableCredential: issuedVc,\n options: {checks: ['proof']}\n }});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected verifier to return a result.');\n result.status.should.not.equal(400, 'Expected status code to not ' +\n 'be 400.');\n result.status.should.equal(200, 'Expected status code to be 200.');\n }", + "title": "The domain property is OPTIONAL. It conveys one or more security domains in which the proof is meant to be used. If specified, the associated value MUST be either a string, or an unordered set of strings. A verifier SHOULD use the value to ensure that the proof was intended to be used in the security domain in which the verifier is operating.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=The%20domain%20property%20is%20OPTIONAL.%20It%20conveys%20one%20or%20more%20security%20domains%20in%20which%20the%20proof%20is%20meant%20to%20be%20used.%20If%20specified%2C%20the%20associated%20value%20MUST';\n if(optionalTests.domain === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.domain) {\n const validType = isStringOrArrayOfStrings(proof.domain);\n validType.should.equal(true, 'Expected ' +\n '\"proof.domain\" to be either a string or an unordered ' +\n 'set of strings.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -11990,150 +11375,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "i7kRZXzA5RnGgOruZjVpf", + "parent": "V3app5v08kK3UQYixBWWE", "ctx": null, - "_testId": "urn:uuid:100f9d18-62dd-4499-9deb-db2a9d40ddab", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:cadd4299-cbce-4efd-9c22-3e389796c66d", "cell": { - "columnId": "apicatalog.com", - "rowId": "\"proof\" MUST verify when using a conformant verifier." - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 10449, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true + "columnId": "OpSecId", + "rowId": "The domain property is OPTIONAL. It conveys one or more security domains in which the proof is meant to be used. If specified, the associated value MUST be either a string, or an unordered set of strings. A verifier SHOULD use the value to ensure that the proof was intended to be used in the security domain in which the verifier is operating." }, - "duration": 71, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist", - "showDiff": false, - "actual": { - "response": {}, - "request": {}, - "options": { - "credentials": "same-origin", - "headers": {}, - "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",\"https://w3id.org/security/suites/ed25519-2020/v1\"],\"id\":\"urn:uuid:2beea04d-17c3-4d57-aec0-be9a428e5004\",\"type\":\"VerifiableCredential\",\"issuer\":\"https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"verificationMethod\":\"did:key:z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y#z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y\",\"type\":\"Ed25519Signature2020\",\"proofPurpose\":\"assertionMethod\",\"created\":\"2024-08-25T05:01:43Z\",\"proofValue\":\"z5SonXRDixYuCxyZQbdBTSSXGcz4YGvby6LNYNESQjUXP99FR83cpXQ85r1wFQ8VoFGze6Gkt5fZYuzLFJdwwPefb\"}},\"options\":{\"checks\":[\"proof\"]}}", - "method": "POST", - "json": { - "verifiableCredential": { - "@context": [ - "https://www.w3.org/2018/credentials/v1", - "https://w3id.org/security/suites/ed25519-2020/v1" - ], - "id": "urn:uuid:2beea04d-17c3-4d57-aec0-be9a428e5004", - "type": "VerifiableCredential", - "issuer": "https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020", - "issuanceDate": "2020-03-16T22:37:26.544Z", - "credentialSubject": { - "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" - }, - "proof": { - "verificationMethod": "did:key:z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y#z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y", - "type": "Ed25519Signature2020", - "proofPurpose": "assertionMethod", - "created": "2024-08-25T05:01:43Z", - "proofValue": "z5SonXRDixYuCxyZQbdBTSSXGcz4YGvby6LNYNESQjUXP99FR83cpXQ85r1wFQ8VoFGze6Gkt5fZYuzLFJdwwPefb" - } - }, - "options": { - "checks": [ - "proof" - ] - } - }, - "agent": { - "_events": {}, - "_eventsCount": 2, - "defaultPort": 443, - "protocol": "https:", - "options": { - "rejectUnauthorized": false, - "noDelay": true, - "path": null - }, - "requests": {}, - "sockets": {}, - "freeSockets": {}, - "keepAliveMsecs": 1000, - "keepAlive": false, - "maxSockets": null, - "maxFreeSockets": 256, - "scheduling": "lifo", - "maxTotalSockets": null, - "totalSocketCount": 0, - "maxCachedSessions": 100, - "_sessionCache": { - "map": {}, - "list": [] - } - }, - "hooks": { - "beforeRequest": [], - "beforeRetry": [], - "beforeError": [], - "afterResponse": [] - }, - "prefixUrl": "", - "retry": { - "limit": 2, - "methods": [ - "get", - "put", - "head", - "delete", - "options", - "trace" - ], - "statusCodes": [ - 408, - 413, - 429, - 500, - 502, - 503, - 504 - ], - "afterStatusCodes": [ - 413, - 429, - 503 - ], - "maxRetryAfter": null, - "backoffLimit": null - }, - "throwHttpErrors": true, - "timeout": 10000, - "signal": {}, - "duplex": "half" - }, - "name": "HTTPError", - "requestUrl": "https://vc.apicatalog.com/credentials/verify", - "status": 400, - "data": { - "checks": [ - "PROOF", - "INVALID_SIGNATURE" - ], - "warnings": [], - "errors": [] - } - }, - "operator": "notStrictEqual", - "stack": "AssertionError: Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js:105:24)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" - } + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=The%20domain%20property%20is%20OPTIONAL.%20It%20conveys%20one%20or%20more%20security%20domains%20in%20which%20the%20proof%20is%20meant%20to%20be%20used.%20If%20specified%2C%20the%20associated%20value%20MUST", + "duration": 0, + "state": "passed", + "speed": "fast" }, { "type": "test", - "title": "\"proof\" MUST verify when using a conformant verifier.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title,\n };\n should.exist(verifier, 'Expected implementation to have a VC ' +\n 'HTTP API compatible verifier.');\n const {result, error} = await verifier.post({json: {\n verifiableCredential: issuedVc,\n options: {checks: ['proof']}\n }});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected verifier to return a result.');\n result.status.should.not.equal(400, 'Expected status code to not ' +\n 'be 400.');\n result.status.should.equal(200, 'Expected status code to be 200.');\n }", + "title": "The domain property is OPTIONAL. It conveys one or more security domains in which the proof is meant to be used. If specified, the associated value MUST be either a string, or an unordered set of strings. A verifier SHOULD use the value to ensure that the proof was intended to be used in the security domain in which the verifier is operating.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=The%20domain%20property%20is%20OPTIONAL.%20It%20conveys%20one%20or%20more%20security%20domains%20in%20which%20the%20proof%20is%20meant%20to%20be%20used.%20If%20specified%2C%20the%20associated%20value%20MUST';\n if(optionalTests.domain === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.domain) {\n const validType = isStringOrArrayOfStrings(proof.domain);\n validType.should.equal(true, 'Expected ' +\n '\"proof.domain\" to be either a string or an unordered ' +\n 'set of strings.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -12143,32 +11402,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "wuzb1dwi_VN7BLBuHNMY4", + "parent": "pJvzjaJb0oGOCZ6Fp689R", "ctx": null, - "_testId": "urn:uuid:b81aa970-bc5e-4459-9246-d6bbeda4d83b", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:5304c953-8424-4f25-8784-9c5158e92980", "cell": { - "columnId": "Danube Tech", - "rowId": "\"proof\" MUST verify when using a conformant verifier." - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 10710, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true + "columnId": "SpruceID", + "rowId": "The domain property is OPTIONAL. It conveys one or more security domains in which the proof is meant to be used. If specified, the associated value MUST be either a string, or an unordered set of strings. A verifier SHOULD use the value to ensure that the proof was intended to be used in the security domain in which the verifier is operating." }, - "duration": 1241, + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=The%20domain%20property%20is%20OPTIONAL.%20It%20conveys%20one%20or%20more%20security%20domains%20in%20which%20the%20proof%20is%20meant%20to%20be%20used.%20If%20specified%2C%20the%20associated%20value%20MUST", + "duration": 0, "state": "passed", - "speed": "slow" + "speed": "fast" }, { "type": "test", - "title": "\"proof\" MUST verify when using a conformant verifier.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title,\n };\n should.exist(verifier, 'Expected implementation to have a VC ' +\n 'HTTP API compatible verifier.');\n const {result, error} = await verifier.post({json: {\n verifiableCredential: issuedVc,\n options: {checks: ['proof']}\n }});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected verifier to return a result.');\n result.status.should.not.equal(400, 'Expected status code to not ' +\n 'be 400.');\n result.status.should.equal(200, 'Expected status code to be 200.');\n }", + "title": "The domain property is OPTIONAL. It conveys one or more security domains in which the proof is meant to be used. If specified, the associated value MUST be either a string, or an unordered set of strings. A verifier SHOULD use the value to ensure that the proof was intended to be used in the security domain in which the verifier is operating.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=The%20domain%20property%20is%20OPTIONAL.%20It%20conveys%20one%20or%20more%20security%20domains%20in%20which%20the%20proof%20is%20meant%20to%20be%20used.%20If%20specified%2C%20the%20associated%20value%20MUST';\n if(optionalTests.domain === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.domain) {\n const validType = isStringOrArrayOfStrings(proof.domain);\n validType.should.equal(true, 'Expected ' +\n '\"proof.domain\" to be either a string or an unordered ' +\n 'set of strings.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -12178,32 +11429,30 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "Qcd9KdsEaPpetMXS-bPlq", + "parent": "qmgk3hHclzYw9jf2QjmPc", "ctx": null, - "_testId": "urn:uuid:14c1d4ce-4e94-465c-881a-d7f3765c9376", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:3d810897-2392-4aef-8911-abf39e8c3a76", "cell": { - "columnId": "Digital Bazaar", - "rowId": "\"proof\" MUST verify when using a conformant verifier." - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 12029, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true + "columnId": "Trinsic", + "rowId": "The domain property is OPTIONAL. It conveys one or more security domains in which the proof is meant to be used. If specified, the associated value MUST be either a string, or an unordered set of strings. A verifier SHOULD use the value to ensure that the proof was intended to be used in the security domain in which the verifier is operating." }, - "duration": 527, + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=The%20domain%20property%20is%20OPTIONAL.%20It%20conveys%20one%20or%20more%20security%20domains%20in%20which%20the%20proof%20is%20meant%20to%20be%20used.%20If%20specified%2C%20the%20associated%20value%20MUST", + "duration": 0, "state": "passed", - "speed": "slow" - }, + "speed": "fast" + } + ] + }, + { + "id": "(challenge) A string value that SHOULD be included in a proof if a domain is specified.", + "link": "https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=A%20string%20value%20that%20SHOULD%20be%20included%20in%20a%20proof%20if%20a%20domain%20is%20specified.", + "cells": [ { "type": "test", - "title": "\"proof\" MUST verify when using a conformant verifier.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title,\n };\n should.exist(verifier, 'Expected implementation to have a VC ' +\n 'HTTP API compatible verifier.');\n const {result, error} = await verifier.post({json: {\n verifiableCredential: issuedVc,\n options: {checks: ['proof']}\n }});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected verifier to return a result.');\n result.status.should.not.equal(400, 'Expected status code to not ' +\n 'be 400.');\n result.status.should.equal(200, 'Expected status code to be 200.');\n }", + "title": "(challenge) A string value that SHOULD be included in a proof if a domain is specified.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=A%20string%20value%20that%20SHOULD%20be%20included%20in%20a%20proof%20if%20a%20domain%20is%20specified.';\n if(optionalTests.domain === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.challenge) {\n // domain must be specified\n should.exist(proof.domain, 'Expected \"proof.domain\" ' +\n 'to be specified.');\n proof.challenge.should.be.a('string', 'Expected ' +\n '\"proof.challenge\" to be a string.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -12213,32 +11462,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "QX6-C2GDoB1mObLYhcgGb", + "parent": "yxhpYILOcqbki3FDec94S", "ctx": null, - "_testId": "urn:uuid:de1859a1-4611-4a60-86ec-7322d52b4dff", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:b52f1e3c-4e9c-4c09-8c28-4bc562922897", "cell": { - "columnId": "EWF", - "rowId": "\"proof\" MUST verify when using a conformant verifier." - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 12653, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true + "columnId": "apicatalog.com", + "rowId": "(challenge) A string value that SHOULD be included in a proof if a domain is specified." }, - "duration": 95, + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=A%20string%20value%20that%20SHOULD%20be%20included%20in%20a%20proof%20if%20a%20domain%20is%20specified.", + "duration": 0, "state": "passed", - "speed": "slow" + "speed": "fast" }, { "type": "test", - "title": "\"proof\" MUST verify when using a conformant verifier.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title,\n };\n should.exist(verifier, 'Expected implementation to have a VC ' +\n 'HTTP API compatible verifier.');\n const {result, error} = await verifier.post({json: {\n verifiableCredential: issuedVc,\n options: {checks: ['proof']}\n }});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected verifier to return a result.');\n result.status.should.not.equal(400, 'Expected status code to not ' +\n 'be 400.');\n result.status.should.equal(200, 'Expected status code to be 200.');\n }", + "title": "(challenge) A string value that SHOULD be included in a proof if a domain is specified.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=A%20string%20value%20that%20SHOULD%20be%20included%20in%20a%20proof%20if%20a%20domain%20is%20specified.';\n if(optionalTests.domain === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.challenge) {\n // domain must be specified\n should.exist(proof.domain, 'Expected \"proof.domain\" ' +\n 'to be specified.');\n proof.challenge.should.be.a('string', 'Expected ' +\n '\"proof.challenge\" to be a string.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -12248,77 +11489,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "ptkLwBORZOzbp5lMwrUoz", + "parent": "QHK1IypTjZvkcHZsBOX_g", "ctx": null, - "_testId": "urn:uuid:218b5fd1-5b4f-478e-b588-723abb9b31b4", - "_events": {}, - "_eventsCount": 1, - "cell": { - "columnId": "LearnCard", - "rowId": "\"proof\" MUST verify when using a conformant verifier." - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 12817, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 73, - "state": "passed", - "speed": "medium" - }, - { + "_testId": "urn:uuid:694f29ed-483f-4e20-822a-5f6f41712b99", "cell": { - "rowId": "\"proof\" MUST verify when using a conformant verifier.", - "colId": "OpSecId" + "columnId": "Danube Tech", + "rowId": "(challenge) A string value that SHOULD be included in a proof if a domain is specified." }, - "state": "pending", - "err": { - "message": "Test skipped." - } - }, - { - "type": "test", - "title": "\"proof\" MUST verify when using a conformant verifier.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title,\n };\n should.exist(verifier, 'Expected implementation to have a VC ' +\n 'HTTP API compatible verifier.');\n const {result, error} = await verifier.post({json: {\n verifiableCredential: issuedVc,\n options: {checks: ['proof']}\n }});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected verifier to return a result.');\n result.status.should.not.equal(400, 'Expected status code to not ' +\n 'be 400.');\n result.status.should.equal(200, 'Expected status code to be 200.');\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "8s2j36ZYuISUJkKw9352T", - "ctx": null, - "_testId": "urn:uuid:84d9098f-17f5-4923-abbf-23baff0baf00", "_events": {}, "_eventsCount": 1, - "cell": { - "columnId": "SpruceID", - "rowId": "\"proof\" MUST verify when using a conformant verifier." - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 12939, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 26, + "link": "https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=A%20string%20value%20that%20SHOULD%20be%20included%20in%20a%20proof%20if%20a%20domain%20is%20specified.", + "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "\"proof\" MUST verify when using a conformant verifier.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title,\n };\n should.exist(verifier, 'Expected implementation to have a VC ' +\n 'HTTP API compatible verifier.');\n const {result, error} = await verifier.post({json: {\n verifiableCredential: issuedVc,\n options: {checks: ['proof']}\n }});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected verifier to return a result.');\n result.status.should.not.equal(400, 'Expected status code to not ' +\n 'be 400.');\n result.status.should.equal(200, 'Expected status code to be 200.');\n }", + "title": "(challenge) A string value that SHOULD be included in a proof if a domain is specified.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=A%20string%20value%20that%20SHOULD%20be%20included%20in%20a%20proof%20if%20a%20domain%20is%20specified.';\n if(optionalTests.domain === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.challenge) {\n // domain must be specified\n should.exist(proof.domain, 'Expected \"proof.domain\" ' +\n 'to be specified.');\n proof.challenge.should.be.a('string', 'Expected ' +\n '\"proof.challenge\" to be a string.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -12328,45 +11516,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "wz7j8IHNGHZqdQAK0KF4D", + "parent": "3oybt7im9lmDGUjG_T3ge", "ctx": null, - "_testId": "urn:uuid:cf9ed291-c7c7-4789-bea9-aadf8a7cc5d9", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:0ab7c0c9-2ed0-4caf-a218-4374a07d4d23", "cell": { - "columnId": "Trinsic", - "rowId": "\"proof\" MUST verify when using a conformant verifier." - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 13681, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true + "columnId": "Digital Bazaar", + "rowId": "(challenge) A string value that SHOULD be included in a proof if a domain is specified." }, - "duration": 74, + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=A%20string%20value%20that%20SHOULD%20be%20included%20in%20a%20proof%20if%20a%20domain%20is%20specified.", + "duration": 0, "state": "passed", - "speed": "medium" - } - ] - } - ] - }, - { - "title": "Data Integrity (verifier)", - "ctx": null, - "suites": [ - { - "title": "apicatalog.com", - "ctx": null, - "suites": [], - "tests": [ + "speed": "fast" + }, { "type": "test", - "title": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=When%20deserializing%20to%20RDF%2C%20implementations%20MUST%20ensure%20that%20the%20base%20URL%20is%20set%20to%20null.';\n const credential = credentials.clone('invalidBaseUrl');\n await verificationFail({\n credential,\n verifier,\n reason: 'Should not verify VC with invalid base URL'\n });\n }", + "title": "(challenge) A string value that SHOULD be included in a proof if a domain is specified.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=A%20string%20value%20that%20SHOULD%20be%20included%20in%20a%20proof%20if%20a%20domain%20is%20specified.';\n if(optionalTests.domain === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.challenge) {\n // domain must be specified\n should.exist(proof.domain, 'Expected \"proof.domain\" ' +\n 'to be specified.');\n proof.challenge.should.be.a('string', 'Expected ' +\n '\"proof.challenge\" to be a string.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -12375,34 +11542,25 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "sB84IWOcTXVtgkn0L_FP3", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "parent": "tikRDf1hNC-fQs8dM6EPO", "ctx": null, - "_testId": "urn:uuid:2b1eebdf-1db4-40f9-99fe-ecf5d8072c4b", + "_testId": "urn:uuid:bb8775fb-ade6-43d0-8c69-bb3d21b78566", "cell": { - "columnId": "apicatalog.com", - "rowId": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null." + "columnId": "EWF", + "rowId": "(challenge) A string value that SHOULD be included in a proof if a domain is specified." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=When%20deserializing%20to%20RDF%2C%20implementations%20MUST%20ensure%20that%20the%20base%20URL%20is%20set%20to%20null.", - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 13805, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 78, + "link": "https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=A%20string%20value%20that%20SHOULD%20be%20included%20in%20a%20proof%20if%20a%20domain%20is%20specified.", + "duration": 0, "state": "passed", - "speed": "slow" + "speed": "fast" }, { "type": "test", - "title": "Conforming processors MUST produce errors when non-conforming documents are consumed.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=Conforming%20processors%20MUST%20produce%20errors%20when%20non%2Dconforming%20documents%20are%20consumed.';\n // this could be read as testing all non-confirming docs or just one\n // for this test only one doc is tested as it should throw for any\n // non-conforming doc\n await verificationFail({\n credential: credentials.clone('invalidProofType'),\n verifier,\n reason: 'Should not verify VC with invalid \"proof.type\"'\n });\n }", + "title": "(challenge) A string value that SHOULD be included in a proof if a domain is specified.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=A%20string%20value%20that%20SHOULD%20be%20included%20in%20a%20proof%20if%20a%20domain%20is%20specified.';\n if(optionalTests.domain === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.challenge) {\n // domain must be specified\n should.exist(proof.domain, 'Expected \"proof.domain\" ' +\n 'to be specified.');\n proof.challenge.should.be.a('string', 'Expected ' +\n '\"proof.challenge\" to be a string.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -12411,34 +11569,25 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "sB84IWOcTXVtgkn0L_FP3", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "parent": "3UTW-_LttILA3ILQtGZo2", "ctx": null, - "_testId": "urn:uuid:dfd7e0ca-5642-49d4-aa07-49ea00df2b73", + "_testId": "urn:uuid:183f2cee-de17-44ad-836c-20f615b73526", "cell": { - "columnId": "apicatalog.com", - "rowId": "Conforming processors MUST produce errors when non-conforming documents are consumed." + "columnId": "LearnCard", + "rowId": "(challenge) A string value that SHOULD be included in a proof if a domain is specified." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=Conforming%20processors%20MUST%20produce%20errors%20when%20non%2Dconforming%20documents%20are%20consumed.", - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 13883, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 55, + "link": "https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=A%20string%20value%20that%20SHOULD%20be%20included%20in%20a%20proof%20if%20a%20domain%20is%20specified.", + "duration": 0, "state": "passed", - "speed": "medium" + "speed": "fast" }, { "type": "test", - "title": "If the \"proof\" field is missing, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('issuedVc');\n delete credential.proof;\n await verificationFail({credential, verifier});\n }", + "title": "(challenge) A string value that SHOULD be included in a proof if a domain is specified.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=A%20string%20value%20that%20SHOULD%20be%20included%20in%20a%20proof%20if%20a%20domain%20is%20specified.';\n if(optionalTests.domain === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.challenge) {\n // domain must be specified\n should.exist(proof.domain, 'Expected \"proof.domain\" ' +\n 'to be specified.');\n proof.challenge.should.be.a('string', 'Expected ' +\n '\"proof.challenge\" to be a string.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -12447,33 +11596,25 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "sB84IWOcTXVtgkn0L_FP3", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "parent": "V3app5v08kK3UQYixBWWE", "ctx": null, - "_testId": "urn:uuid:47079287-d9dc-48d9-9640-ca8ba3587061", + "_testId": "urn:uuid:27fabfc0-5197-4376-b3f4-36aa5162bbd5", "cell": { - "columnId": "apicatalog.com", - "rowId": "If the \"proof\" field is missing, an error MUST be raised." + "columnId": "OpSecId", + "rowId": "(challenge) A string value that SHOULD be included in a proof if a domain is specified." }, "_events": {}, "_eventsCount": 1, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 13937, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 49, + "link": "https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=A%20string%20value%20that%20SHOULD%20be%20included%20in%20a%20proof%20if%20a%20domain%20is%20specified.", + "duration": 0, "state": "passed", - "speed": "medium" + "speed": "fast" }, { "type": "test", - "title": "If the \"proof\" field is invalid, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('issuedVc');\n credential.proof = null;\n await verificationFail({credential, verifier});\n }", + "title": "(challenge) A string value that SHOULD be included in a proof if a domain is specified.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=A%20string%20value%20that%20SHOULD%20be%20included%20in%20a%20proof%20if%20a%20domain%20is%20specified.';\n if(optionalTests.domain === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.challenge) {\n // domain must be specified\n should.exist(proof.domain, 'Expected \"proof.domain\" ' +\n 'to be specified.');\n proof.challenge.should.be.a('string', 'Expected ' +\n '\"proof.challenge\" to be a string.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -12482,33 +11623,25 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "sB84IWOcTXVtgkn0L_FP3", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "parent": "pJvzjaJb0oGOCZ6Fp689R", "ctx": null, - "_testId": "urn:uuid:f44df773-bdf1-4cb3-87d7-3bfca5f1949e", + "_testId": "urn:uuid:48f2acb2-f614-464d-9075-ccaee588a4c5", "cell": { - "columnId": "apicatalog.com", - "rowId": "If the \"proof\" field is invalid, an error MUST be raised." + "columnId": "SpruceID", + "rowId": "(challenge) A string value that SHOULD be included in a proof if a domain is specified." }, "_events": {}, "_eventsCount": 1, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 13987, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 55, + "link": "https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=A%20string%20value%20that%20SHOULD%20be%20included%20in%20a%20proof%20if%20a%20domain%20is%20specified.", + "duration": 0, "state": "passed", - "speed": "medium" + "speed": "fast" }, { "type": "test", - "title": "If the \"proof.type\" field is missing, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('issuedVc');\n delete credential.proof.type;\n await verificationFail({credential, verifier});\n }", + "title": "(challenge) A string value that SHOULD be included in a proof if a domain is specified.", + "body": "function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=A%20string%20value%20that%20SHOULD%20be%20included%20in%20a%20proof%20if%20a%20domain%20is%20specified.';\n if(optionalTests.domain === false) {\n this.test.cell.skipMessage = 'Optional Test Skipped';\n this.skip();\n }\n for(const proof of proofs) {\n if(proof.challenge) {\n // domain must be specified\n should.exist(proof.domain, 'Expected \"proof.domain\" ' +\n 'to be specified.');\n proof.challenge.should.be.a('string', 'Expected ' +\n '\"proof.challenge\" to be a string.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -12517,33 +11650,38 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "sB84IWOcTXVtgkn0L_FP3", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "parent": "qmgk3hHclzYw9jf2QjmPc", "ctx": null, - "_testId": "urn:uuid:525d6c97-9ca0-4f6f-ad5b-fb98ec37c76d", + "_testId": "urn:uuid:e893987a-b980-471e-a446-c8c62452ccec", "cell": { - "columnId": "apicatalog.com", - "rowId": "If the \"proof.type\" field is missing, an error MUST be raised." + "columnId": "Trinsic", + "rowId": "(challenge) A string value that SHOULD be included in a proof if a domain is specified." }, "_events": {}, "_eventsCount": 1, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 14042, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 47, + "link": "https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=A%20string%20value%20that%20SHOULD%20be%20included%20in%20a%20proof%20if%20a%20domain%20is%20specified.", + "duration": 0, "state": "passed", - "speed": "medium" - }, + "speed": "fast" + } + ] + } + ] + }, + { + "title": "Ed25519Signature2020 (issuer)", + "ctx": null, + "suites": [ + { + "title": "apicatalog.com", + "ctx": null, + "suites": [], + "tests": [ { "type": "test", - "title": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('invalidProofType');\n await verificationFail({credential, verifier});\n }", + "title": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n should.exist(issuedVc, 'Expected issuer to have issued a ' +\n 'credential.');\n should.exist(proofs, 'Expected credential to have a proof.');\n const ed25519Proofs = proofs.filter(\n proof => proof?.type === 'Ed25519Signature2020');\n ed25519Proofs.length.should.be.gte(1, 'Expected at least one ' +\n 'Ed25519 proof.');\n for(const proof of ed25519Proofs) {\n should.exist(proof.proofValue, 'Expected a proof value on ' +\n 'the proof.');\n const valueBytes = bs58Decode({id: proof.proofValue});\n should.exist(proof.verificationMethod);\n const vmBytes = await getPublicKeyBytes({\n did: proof.verificationMethod});\n vmBytes.byteLength.should.be.oneOf([32, 57], 'Expected public ' +\n 'key bytes to be either 32 or 57 bytes.');\n if(vmBytes.byteLength === 32) {\n valueBytes.byteLength.should.equal(64, 'Expected 64 bytes ' +\n 'proofValue for 32 bytes key.');\n } else {\n valueBytes.byteLength.should.equal(114, 'Expected 114 bytes ' +\n 'proofValue for 57 bytes key.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -12552,33 +11690,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "sB84IWOcTXVtgkn0L_FP3", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "parent": "NqqP_lFHNMyzSBYddoYB3", "ctx": null, - "_testId": "urn:uuid:c9cc17c0-ef47-4ab8-8192-9100a24fa7b2", + "_testId": "urn:uuid:e81c1a5a-94c0-4cd2-83c8-a800da649450", + "_events": {}, + "_eventsCount": 1, "cell": { "columnId": "apicatalog.com", - "rowId": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised." + "rowId": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes." }, - "_events": {}, - "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 14089, + "_idleStart": 11384, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 49, + "duration": 1, "state": "passed", - "speed": "medium" + "speed": "fast" }, { "type": "test", - "title": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('noVm');\n await verificationFail({credential, verifier});\n }", + "title": "\"proof\" MUST verify when using a conformant verifier.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title,\n };\n should.exist(verifier, 'Expected implementation to have a VC ' +\n 'HTTP API compatible verifier.');\n const {result, error} = await verifier.post({json: {\n verifiableCredential: issuedVc,\n options: {checks: ['proof']}\n }});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected verifier to return a result.');\n result.status.should.not.equal(400, 'Expected status code to not ' +\n 'be 400.');\n result.status.should.equal(200, 'Expected status code to be 200.');\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -12587,33 +11725,156 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "sB84IWOcTXVtgkn0L_FP3", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "parent": "NqqP_lFHNMyzSBYddoYB3", "ctx": null, - "_testId": "urn:uuid:518a393c-d214-4bf6-b7ca-ae8b14dcbce6", + "_testId": "urn:uuid:58e71efd-0d5f-40d0-b252-504c130573f2", + "_events": {}, + "_eventsCount": 1, "cell": { "columnId": "apicatalog.com", - "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." + "rowId": "\"proof\" MUST verify when using a conformant verifier." }, - "_events": {}, - "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 14138, + "_idleStart": 11385, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 41, - "state": "passed", - "speed": "medium" - }, + "duration": 83, + "state": "failed", + "err": { + "name": "AssertionError", + "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist", + "showDiff": false, + "actual": { + "response": {}, + "request": {}, + "options": { + "credentials": "same-origin", + "headers": {}, + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",\"https://w3id.org/security/suites/ed25519-2020/v1\"],\"id\":\"urn:uuid:1a946c2a-5402-4997-9b83-dfa2cc671b75\",\"type\":\"VerifiableCredential\",\"issuer\":\"https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"verificationMethod\":\"did:key:z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y#z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y\",\"type\":\"Ed25519Signature2020\",\"proofPurpose\":\"assertionMethod\",\"created\":\"2024-09-01T05:01:43Z\",\"proofValue\":\"z3L43oTnb75g7iZgNyreDABPDLtfw29z6AeBjc5SejVWEsVdWJeMNud1iJYn5xy8ix863nPr98DzRo3RAHyHe9WZc\"}},\"options\":{\"checks\":[\"proof\"]}}", + "method": "POST", + "json": { + "verifiableCredential": { + "@context": [ + "https://www.w3.org/2018/credentials/v1", + "https://w3id.org/security/suites/ed25519-2020/v1" + ], + "id": "urn:uuid:1a946c2a-5402-4997-9b83-dfa2cc671b75", + "type": "VerifiableCredential", + "issuer": "https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020", + "issuanceDate": "2020-03-16T22:37:26.544Z", + "credentialSubject": { + "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" + }, + "proof": { + "verificationMethod": "did:key:z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y#z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y", + "type": "Ed25519Signature2020", + "proofPurpose": "assertionMethod", + "created": "2024-09-01T05:01:43Z", + "proofValue": "z3L43oTnb75g7iZgNyreDABPDLtfw29z6AeBjc5SejVWEsVdWJeMNud1iJYn5xy8ix863nPr98DzRo3RAHyHe9WZc" + } + }, + "options": { + "checks": [ + "proof" + ] + } + }, + "agent": { + "_events": {}, + "_eventsCount": 2, + "defaultPort": 443, + "protocol": "https:", + "options": { + "rejectUnauthorized": false, + "noDelay": true, + "path": null + }, + "requests": {}, + "sockets": {}, + "freeSockets": {}, + "keepAliveMsecs": 1000, + "keepAlive": false, + "maxSockets": null, + "maxFreeSockets": 256, + "scheduling": "lifo", + "maxTotalSockets": null, + "totalSocketCount": 0, + "maxCachedSessions": 100, + "_sessionCache": { + "map": {}, + "list": [] + } + }, + "hooks": { + "beforeRequest": [], + "beforeRetry": [], + "beforeError": [], + "afterResponse": [] + }, + "prefixUrl": "", + "retry": { + "limit": 2, + "methods": [ + "get", + "put", + "head", + "delete", + "options", + "trace" + ], + "statusCodes": [ + 408, + 413, + 429, + 500, + 502, + 503, + 504 + ], + "afterStatusCodes": [ + 413, + 429, + 503 + ], + "maxRetryAfter": null, + "backoffLimit": null + }, + "throwHttpErrors": true, + "timeout": 10000, + "signal": {}, + "duplex": "half" + }, + "name": "HTTPError", + "requestUrl": "https://vc.apicatalog.com/credentials/verify", + "status": 400, + "data": { + "checks": [ + "PROOF", + "INVALID_SIGNATURE" + ], + "warnings": [], + "errors": [] + } + }, + "operator": "notStrictEqual", + "stack": "AssertionError: Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js:105:24)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" + } + } + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [], + "_beforeAll": [ { - "type": "test", - "title": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('invalidVm');\n await verificationFail({credential, verifier});\n }", + "title": "\"before all\" hook in \"apicatalog.com\"", + "body": "async function() {\n const [issuer] = endpoints;\n verifier = implementation.verifiers.find(\n verifier => verifier.tags.has(tag));\n const {settings: {id: issuerId, options}} = issuer;\n const body = {credential: klona(validVc), options};\n body.credential.id = `urn:uuid:${uuidv4()}`;\n body.credential.issuer = issuerId;\n const {data, error} = await issuer.post({json: body});\n if(error) {\n throw error;\n }\n issuedVc = data;\n const {proof} = issuedVc || {};\n proofs = Array.isArray(proof) ? proof : [proof];\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -12622,33 +11883,47 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "sB84IWOcTXVtgkn0L_FP3", + "type": "hook", + "parent": "NqqP_lFHNMyzSBYddoYB3", "ctx": null, - "_testId": "urn:uuid:675a4f38-08bc-4029-9528-1b83047e1a00", - "cell": { - "columnId": "apicatalog.com", - "rowId": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised." - }, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "originalTitle": "\"before all\" hook", "_events": {}, "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 14179, + "_idleStart": 11197, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 59, - "state": "passed", - "speed": "medium" - }, + "duration": 187, + "_error": null + } + ], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "l0xJtYymfG7xfekwm9Fsc", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "_testId": "urn:uuid:a50370d9-91e6-4dd1-ae26-174badd3e005" + }, + { + "title": "Danube Tech", + "ctx": null, + "suites": [], + "tests": [ { "type": "test", - "title": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('noProofPurpose');\n await verificationFail({credential, verifier});\n }", + "title": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n should.exist(issuedVc, 'Expected issuer to have issued a ' +\n 'credential.');\n should.exist(proofs, 'Expected credential to have a proof.');\n const ed25519Proofs = proofs.filter(\n proof => proof?.type === 'Ed25519Signature2020');\n ed25519Proofs.length.should.be.gte(1, 'Expected at least one ' +\n 'Ed25519 proof.');\n for(const proof of ed25519Proofs) {\n should.exist(proof.proofValue, 'Expected a proof value on ' +\n 'the proof.');\n const valueBytes = bs58Decode({id: proof.proofValue});\n should.exist(proof.verificationMethod);\n const vmBytes = await getPublicKeyBytes({\n did: proof.verificationMethod});\n vmBytes.byteLength.should.be.oneOf([32, 57], 'Expected public ' +\n 'key bytes to be either 32 or 57 bytes.');\n if(vmBytes.byteLength === 32) {\n valueBytes.byteLength.should.equal(64, 'Expected 64 bytes ' +\n 'proofValue for 32 bytes key.');\n } else {\n valueBytes.byteLength.should.equal(114, 'Expected 114 bytes ' +\n 'proofValue for 57 bytes key.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -12657,33 +11932,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "sB84IWOcTXVtgkn0L_FP3", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "parent": "zKmZnavBKdxcGaKpdgTYl", "ctx": null, - "_testId": "urn:uuid:1235fe69-4dfd-4f35-9b22-3d35178c4780", - "cell": { - "columnId": "apicatalog.com", - "rowId": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised." - }, + "_testId": "urn:uuid:d07d609e-b115-4766-9e7a-10f9c28adcae", "_events": {}, "_eventsCount": 1, + "cell": { + "columnId": "Danube Tech", + "rowId": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes." + }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 14238, + "_idleStart": 11652, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 58, + "duration": 0, "state": "passed", - "speed": "medium" + "speed": "fast" }, { "type": "test", - "title": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('invalidProofPurpose');\n await verificationFail({credential, verifier});\n }", + "title": "\"proof\" MUST verify when using a conformant verifier.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title,\n };\n should.exist(verifier, 'Expected implementation to have a VC ' +\n 'HTTP API compatible verifier.');\n const {result, error} = await verifier.post({json: {\n verifiableCredential: issuedVc,\n options: {checks: ['proof']}\n }});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected verifier to return a result.');\n result.status.should.not.equal(400, 'Expected status code to not ' +\n 'be 400.');\n result.status.should.equal(200, 'Expected status code to be 200.');\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -12692,33 +11967,38 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "sB84IWOcTXVtgkn0L_FP3", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "parent": "zKmZnavBKdxcGaKpdgTYl", "ctx": null, - "_testId": "urn:uuid:962d152b-e9e3-4a5b-953d-9705c136731a", - "cell": { - "columnId": "apicatalog.com", - "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." - }, + "_testId": "urn:uuid:3ef05c05-eddc-4217-82d5-fa7dc6040404", "_events": {}, "_eventsCount": 1, + "cell": { + "columnId": "Danube Tech", + "rowId": "\"proof\" MUST verify when using a conformant verifier." + }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 14295, + "_idleStart": 11653, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 48, + "duration": 1203, "state": "passed", - "speed": "medium" - }, + "speed": "slow" + } + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [], + "_beforeAll": [ { - "type": "test", - "title": "If expectedProofPurpose was given, and it does not match proof.proofPurpose, an error MUST be raised and SHOULD convey an error type of PROOF_VERIFICATION_ERROR.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#:~:text=If%20expectedProofPurpose%20was%20given%2C%20and%20it%20does%20not%20match%20proof.proofPurpose%2C%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_VERIFICATION_ERROR.';\n // NOTE: expectedProofPurpose should be specified by verifiers internally\n // it is very unlikely to be invalidProofPurpose\n await verificationFail({\n credential: credentials.clone('invalidProofPurpose'),\n verifier,\n reason: 'Verifier should reject VC with invalid proof purpose.'\n });\n }", + "title": "\"before all\" hook in \"Danube Tech\"", + "body": "async function() {\n const [issuer] = endpoints;\n verifier = implementation.verifiers.find(\n verifier => verifier.tags.has(tag));\n const {settings: {id: issuerId, options}} = issuer;\n const body = {credential: klona(validVc), options};\n body.credential.id = `urn:uuid:${uuidv4()}`;\n body.credential.issuer = issuerId;\n const {data, error} = await issuer.post({json: body});\n if(error) {\n throw error;\n }\n issuedVc = data;\n const {proof} = issuedVc || {};\n proofs = Array.isArray(proof) ? proof : [proof];\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -12727,34 +12007,47 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "sB84IWOcTXVtgkn0L_FP3", + "type": "hook", + "parent": "zKmZnavBKdxcGaKpdgTYl", "ctx": null, - "_testId": "urn:uuid:c12c1fde-24e0-4b88-ad0b-be1bcbd1464b", - "cell": { - "columnId": "apicatalog.com", - "rowId": "If expectedProofPurpose was given, and it does not match proof.proofPurpose, an error MUST be raised and SHOULD convey an error type of PROOF_VERIFICATION_ERROR." - }, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "originalTitle": "\"before all\" hook", "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#:~:text=If%20expectedProofPurpose%20was%20given%2C%20and%20it%20does%20not%20match%20proof.proofPurpose%2C%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_VERIFICATION_ERROR.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 14344, + "_idleStart": 11469, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 44, - "state": "passed", - "speed": "medium" - }, + "duration": 183, + "_error": null + } + ], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "l0xJtYymfG7xfekwm9Fsc", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "_testId": "urn:uuid:b0833867-b0d5-4746-bff0-78be87b00124" + }, + { + "title": "Digital Bazaar", + "ctx": null, + "suites": [], + "tests": [ { "type": "test", - "title": "The proofValue property MUST be used, as specified in 2.1 Proofs.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20proofValue%20property%20MUST%20be%20used%2C%20as%20specified%20in%202.1%20Proofs.';\n await proofValueTests;\n }", + "title": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n should.exist(issuedVc, 'Expected issuer to have issued a ' +\n 'credential.');\n should.exist(proofs, 'Expected credential to have a proof.');\n const ed25519Proofs = proofs.filter(\n proof => proof?.type === 'Ed25519Signature2020');\n ed25519Proofs.length.should.be.gte(1, 'Expected at least one ' +\n 'Ed25519 proof.');\n for(const proof of ed25519Proofs) {\n should.exist(proof.proofValue, 'Expected a proof value on ' +\n 'the proof.');\n const valueBytes = bs58Decode({id: proof.proofValue});\n should.exist(proof.verificationMethod);\n const vmBytes = await getPublicKeyBytes({\n did: proof.verificationMethod});\n vmBytes.byteLength.should.be.oneOf([32, 57], 'Expected public ' +\n 'key bytes to be either 32 or 57 bytes.');\n if(vmBytes.byteLength === 32) {\n valueBytes.byteLength.should.equal(64, 'Expected 64 bytes ' +\n 'proofValue for 32 bytes key.');\n } else {\n valueBytes.byteLength.should.equal(114, 'Expected 114 bytes ' +\n 'proofValue for 57 bytes key.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -12763,22 +12056,21 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "sB84IWOcTXVtgkn0L_FP3", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "parent": "Lj5f2dKadPfwEEuqyTVZo", "ctx": null, - "_testId": "urn:uuid:7214bbf3-e76d-436a-bd74-0e561042d4f9", - "cell": { - "columnId": "apicatalog.com", - "rowId": "The proofValue property MUST be used, as specified in 2.1 Proofs." - }, + "_testId": "urn:uuid:105b990c-a02b-4f0b-bf93-7d229e258bde", "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20proofValue%20property%20MUST%20be%20used%2C%20as%20specified%20in%202.1%20Proofs.", + "cell": { + "columnId": "Digital Bazaar", + "rowId": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes." + }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 14388, + "_idleStart": 13590, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -12789,8 +12081,8 @@ }, { "type": "test", - "title": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof';\n await proofValueTests;\n }", + "title": "\"proof\" MUST verify when using a conformant verifier.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title,\n };\n should.exist(verifier, 'Expected implementation to have a VC ' +\n 'HTTP API compatible verifier.');\n const {result, error} = await verifier.post({json: {\n verifiableCredential: issuedVc,\n options: {checks: ['proof']}\n }});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected verifier to return a result.');\n result.status.should.not.equal(400, 'Expected status code to not ' +\n 'be 400.');\n result.status.should.equal(200, 'Expected status code to be 200.');\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -12799,70 +12091,38 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "sB84IWOcTXVtgkn0L_FP3", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "parent": "Lj5f2dKadPfwEEuqyTVZo", "ctx": null, - "_testId": "urn:uuid:b2a6e459-2c67-4451-8c81-35360b7d7fbc", - "cell": { - "columnId": "apicatalog.com", - "rowId": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification." - }, + "_testId": "urn:uuid:aebefa14-2506-4f39-947c-50d637285cf1", "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof", - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 14388, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 0, - "state": "passed", - "speed": "fast" - }, - { - "type": "test", - "title": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.';\n await verificationFail({\n credential: credentials.clone('undefinedTerm'),\n verifier,\n reason: 'Should fail to verify VC when data is dropped by JSON-LD'\n });\n const undefinedTerm = credentials.clone('issuedVc');\n undefinedTerm.credentialSubject.undefinedTerm = 'IfDroppedWillVerify';\n await verificationFail({\n credential: undefinedTerm,\n verifier,\n reason: 'Should fail to verify VC if an undefined term is added ' +\n 'after issuance.'\n });\n const undefinedType = credentials.clone('issuedVc');\n undefinedType.type.push('UndefinedType');\n await verificationFail({\n credential: undefinedType,\n verifier,\n reason: 'Should fail to verify VC if an undefined type is added ' +\n 'after issuance.'\n });\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "sB84IWOcTXVtgkn0L_FP3", - "ctx": null, - "_testId": "urn:uuid:9dd3bb36-12eb-4099-9d09-5dc5adae2055", "cell": { - "columnId": "apicatalog.com", - "rowId": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document." + "columnId": "Digital Bazaar", + "rowId": "\"proof\" MUST verify when using a conformant verifier." }, - "_events": {}, - "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 14388, + "_idleStart": 13591, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 140, + "duration": 1009, "state": "passed", "speed": "slow" - }, + } + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [], + "_beforeAll": [ { - "type": "test", - "title": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC';\n const credential = credentials.clone('invalidCreated');\n await verificationFail({credential, verifier});\n }", + "title": "\"before all\" hook in \"Digital Bazaar\"", + "body": "async function() {\n const [issuer] = endpoints;\n verifier = implementation.verifiers.find(\n verifier => verifier.tags.has(tag));\n const {settings: {id: issuerId, options}} = issuer;\n const body = {credential: klona(validVc), options};\n body.credential.id = `urn:uuid:${uuidv4()}`;\n body.credential.issuer = issuerId;\n const {data, error} = await issuer.post({json: body});\n if(error) {\n throw error;\n }\n issuedVc = data;\n const {proof} = issuedVc || {};\n proofs = Array.isArray(proof) ? proof : [proof];\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -12871,34 +12131,47 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "sB84IWOcTXVtgkn0L_FP3", + "type": "hook", + "parent": "Lj5f2dKadPfwEEuqyTVZo", "ctx": null, - "_testId": "urn:uuid:8cf24f73-d023-4304-9864-27de93ed7fba", - "cell": { - "columnId": "apicatalog.com", - "rowId": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." - }, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "originalTitle": "\"before all\" hook", "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 14528, + "_idleStart": 12856, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 48, - "state": "passed", - "speed": "medium" - }, + "duration": 734, + "_error": null + } + ], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "l0xJtYymfG7xfekwm9Fsc", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "_testId": "urn:uuid:5bd71c86-700a-4d68-a1e3-5bb59a6691b5" + }, + { + "title": "EWF", + "ctx": null, + "suites": [], + "tests": [ { "type": "test", - "title": "The value of the cryptosuite property MUST be a string that identifies the cryptographic suite. If the processing environment supports subtypes of string, the type of the cryptosuite value MUST be the https://w3id.org/security#cryptosuiteString subtype of string.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=The%20value%20of%20the%20cryptosuite%20property%20MUST%20be%20a%20string%20that%20identifies%20the%20cryptographic%20suite.%20If%20the%20processing%20environment%20supports%20subtypes%20of%20string%2C%20the%20type%20of%20the%20cryptosuite%20value%20MUST%20be%20the%20https%3A//w3id.org/security%23cryptosuiteString%20subtype%20of%20string.';\n const credential = credentials.clone('invalidCryptosuite');\n await verificationFail({credential, verifier});\n }", + "title": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n should.exist(issuedVc, 'Expected issuer to have issued a ' +\n 'credential.');\n should.exist(proofs, 'Expected credential to have a proof.');\n const ed25519Proofs = proofs.filter(\n proof => proof?.type === 'Ed25519Signature2020');\n ed25519Proofs.length.should.be.gte(1, 'Expected at least one ' +\n 'Ed25519 proof.');\n for(const proof of ed25519Proofs) {\n should.exist(proof.proofValue, 'Expected a proof value on ' +\n 'the proof.');\n const valueBytes = bs58Decode({id: proof.proofValue});\n should.exist(proof.verificationMethod);\n const vmBytes = await getPublicKeyBytes({\n did: proof.verificationMethod});\n vmBytes.byteLength.should.be.oneOf([32, 57], 'Expected public ' +\n 'key bytes to be either 32 or 57 bytes.');\n if(vmBytes.byteLength === 32) {\n valueBytes.byteLength.should.equal(64, 'Expected 64 bytes ' +\n 'proofValue for 32 bytes key.');\n } else {\n valueBytes.byteLength.should.equal(114, 'Expected 114 bytes ' +\n 'proofValue for 57 bytes key.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -12907,34 +12180,41 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "sB84IWOcTXVtgkn0L_FP3", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "parent": "e-pRwjp5knhThscTJLc2h", "ctx": null, - "_testId": "urn:uuid:eec067c6-5067-468e-b806-48d6295cb0ae", - "cell": { - "columnId": "apicatalog.com", - "rowId": "The value of the cryptosuite property MUST be a string that identifies the cryptographic suite. If the processing environment supports subtypes of string, the type of the cryptosuite value MUST be the https://w3id.org/security#cryptosuiteString subtype of string." - }, + "_testId": "urn:uuid:8cb47f8c-91b6-4d11-97e0-f0a7135e5b16", "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#introduction:~:text=The%20value%20of%20the%20cryptosuite%20property%20MUST%20be%20a%20string%20that%20identifies%20the%20cryptographic%20suite.%20If%20the%20processing%20environment%20supports%20subtypes%20of%20string%2C%20the%20type%20of%20the%20cryptosuite%20value%20MUST%20be%20the%20https%3A//w3id.org/security%23cryptosuiteString%20subtype%20of%20string.", + "cell": { + "columnId": "EWF", + "rowId": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes." + }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 14577, + "_idleStart": 14981, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 51, - "state": "passed", - "speed": "medium" + "duration": 0, + "state": "failed", + "err": { + "name": "AssertionError", + "message": "Expected at least one Ed25519 proof.: expected +0 to be at least 1", + "showDiff": true, + "actual": "0", + "expected": "1", + "operator": "strictEqual", + "stack": "AssertionError: Expected at least one Ed25519 proof.: expected +0 to be at least 1\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js:73:42)\n at process.processImmediate (node:internal/timers:483:21)" + } }, { "type": "test", - "title": "If options has a non-null domain item, it MUST be equal to proof.domain or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=If%20options%20has%20a%20non%2Dnull%20domain%20item%2C%20it%20MUST%20be%20equal%20to%20proof.domain%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.';\n const credential = credentials.clone('invalidDomain');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example'\n }\n });\n }", + "title": "\"proof\" MUST verify when using a conformant verifier.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title,\n };\n should.exist(verifier, 'Expected implementation to have a VC ' +\n 'HTTP API compatible verifier.');\n const {result, error} = await verifier.post({json: {\n verifiableCredential: issuedVc,\n options: {checks: ['proof']}\n }});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected verifier to return a result.');\n result.status.should.not.equal(400, 'Expected status code to not ' +\n 'be 400.');\n result.status.should.equal(200, 'Expected status code to be 200.');\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -12943,34 +12223,38 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "sB84IWOcTXVtgkn0L_FP3", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "parent": "e-pRwjp5knhThscTJLc2h", "ctx": null, - "_testId": "urn:uuid:000c46dd-02e3-4fc9-b6a7-215a8af4adcd", - "cell": { - "columnId": "apicatalog.com", - "rowId": "If options has a non-null domain item, it MUST be equal to proof.domain or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR." - }, + "_testId": "urn:uuid:5ccfa32d-e3ac-43c9-9c23-dcdb17bacb90", "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=If%20options%20has%20a%20non%2Dnull%20domain%20item%2C%20it%20MUST%20be%20equal%20to%20proof.domain%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.", + "cell": { + "columnId": "EWF", + "rowId": "\"proof\" MUST verify when using a conformant verifier." + }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 14629, + "_idleStart": 14981, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 57, + "duration": 101, "state": "passed", - "speed": "medium" - }, + "speed": "slow" + } + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [], + "_beforeAll": [ { - "type": "test", - "title": "If options has a non-null challenge item, it MUST be equal to proof.challenge or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#add-proof:~:text=If%20options%20has%20a%20non%2Dnull%20challenge%20item%2C%20it%20MUST%20be%20equal%20to%20proof.challenge%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.';\n const credential = credentials.clone('invalidChallenge');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example',\n challenge: '1235abcd6789'\n }\n });\n }", + "title": "\"before all\" hook in \"EWF\"", + "body": "async function() {\n const [issuer] = endpoints;\n verifier = implementation.verifiers.find(\n verifier => verifier.tags.has(tag));\n const {settings: {id: issuerId, options}} = issuer;\n const body = {credential: klona(validVc), options};\n body.credential.id = `urn:uuid:${uuidv4()}`;\n body.credential.issuer = issuerId;\n const {data, error} = await issuer.post({json: body});\n if(error) {\n throw error;\n }\n issuedVc = data;\n const {proof} = issuedVc || {};\n proofs = Array.isArray(proof) ? proof : [proof];\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -12979,34 +12263,47 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "sB84IWOcTXVtgkn0L_FP3", + "type": "hook", + "parent": "e-pRwjp5knhThscTJLc2h", "ctx": null, - "_testId": "urn:uuid:e56c2c0e-31e2-4fc6-b705-0cce67ca1835", - "cell": { - "columnId": "apicatalog.com", - "rowId": "If options has a non-null challenge item, it MUST be equal to proof.challenge or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR." - }, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "originalTitle": "\"before all\" hook", "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#add-proof:~:text=If%20options%20has%20a%20non%2Dnull%20challenge%20item%2C%20it%20MUST%20be%20equal%20to%20proof.challenge%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 14686, + "_idleStart": 14601, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 50, - "state": "passed", - "speed": "medium" - }, + "duration": 380, + "_error": null + } + ], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "l0xJtYymfG7xfekwm9Fsc", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "_testId": "urn:uuid:8d2163a8-86c4-4166-87da-2890624ebc98" + }, + { + "title": "LearnCard", + "ctx": null, + "suites": [], + "tests": [ { "type": "test", - "title": "(created) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset.", - "body": "async function() {\n this.test.link = 'https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=be%20a%20string.-,created,-The%20date%20and';\n await verificationFail({\n credential: credentials.clone('noOffsetCreated'),\n verifier\n });\n }", + "title": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n should.exist(issuedVc, 'Expected issuer to have issued a ' +\n 'credential.');\n should.exist(proofs, 'Expected credential to have a proof.');\n const ed25519Proofs = proofs.filter(\n proof => proof?.type === 'Ed25519Signature2020');\n ed25519Proofs.length.should.be.gte(1, 'Expected at least one ' +\n 'Ed25519 proof.');\n for(const proof of ed25519Proofs) {\n should.exist(proof.proofValue, 'Expected a proof value on ' +\n 'the proof.');\n const valueBytes = bs58Decode({id: proof.proofValue});\n should.exist(proof.verificationMethod);\n const vmBytes = await getPublicKeyBytes({\n did: proof.verificationMethod});\n vmBytes.byteLength.should.be.oneOf([32, 57], 'Expected public ' +\n 'key bytes to be either 32 or 57 bytes.');\n if(vmBytes.byteLength === 32) {\n valueBytes.byteLength.should.equal(64, 'Expected 64 bytes ' +\n 'proofValue for 32 bytes key.');\n } else {\n valueBytes.byteLength.should.equal(114, 'Expected 114 bytes ' +\n 'proofValue for 57 bytes key.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -13015,34 +12312,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "sB84IWOcTXVtgkn0L_FP3", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "parent": "5Y_SdCuAeg5pgpzF5z8nW", "ctx": null, - "_testId": "urn:uuid:2b893520-2ca4-41ce-aade-b90498d1e357", - "cell": { - "columnId": "apicatalog.com", - "rowId": "(created) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." - }, + "_testId": "urn:uuid:5091a8a2-13cb-4b96-96e2-370531deac05", "_events": {}, "_eventsCount": 1, - "link": "https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=be%20a%20string.-,created,-The%20date%20and", + "cell": { + "columnId": "LearnCard", + "rowId": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes." + }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 14735, + "_idleStart": 15261, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 50, + "duration": 0, "state": "passed", - "speed": "medium" + "speed": "fast" }, { "type": "test", - "title": "(expires) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset.", - "body": "async function() {\n this.test.link = 'https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=interpreted%20as%20UTC.-,expires,-The%20expires%20property';\n await verificationFail({\n credential: credentials.clone('noOffsetExpires'),\n verifier\n });\n }", + "title": "\"proof\" MUST verify when using a conformant verifier.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title,\n };\n should.exist(verifier, 'Expected implementation to have a VC ' +\n 'HTTP API compatible verifier.');\n const {result, error} = await verifier.post({json: {\n verifiableCredential: issuedVc,\n options: {checks: ['proof']}\n }});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected verifier to return a result.');\n result.status.should.not.equal(400, 'Expected status code to not ' +\n 'be 400.');\n result.status.should.equal(200, 'Expected status code to be 200.');\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -13051,61 +12347,38 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "sB84IWOcTXVtgkn0L_FP3", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "parent": "5Y_SdCuAeg5pgpzF5z8nW", "ctx": null, - "_testId": "urn:uuid:fcdcfad1-159a-4ee8-b666-74c08fc58ede", - "cell": { - "columnId": "apicatalog.com", - "rowId": "(expires) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." - }, + "_testId": "urn:uuid:ef117f3e-a26b-4054-afda-a817d48e372e", "_events": {}, "_eventsCount": 1, - "link": "https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=interpreted%20as%20UTC.-,expires,-The%20expires%20property", + "cell": { + "columnId": "LearnCard", + "rowId": "\"proof\" MUST verify when using a conformant verifier." + }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 14785, + "_idleStart": 15262, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 51, + "duration": 95, "state": "passed", - "speed": "medium" + "speed": "slow" } ], "root": false, "pending": false, "_retries": -1, - "_beforeEach": [ - { - "title": "\"before each\" hook in \"apicatalog.com\"", - "body": "function() {\n this.currentTest.cell = {\n columnId: testDescription,\n rowId: this.currentTest.title\n };\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "type": "hook", - "parent": "sB84IWOcTXVtgkn0L_FP3", - "ctx": null, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "originalTitle": "\"before each\" hook", - "_events": {}, - "_eventsCount": 1, - "duration": 0, - "_error": null - } - ], + "_beforeEach": [], "_beforeAll": [ { - "title": "\"before all\" hook in \"apicatalog.com\"", - "body": "async function() {\n proofValueTests = shouldBeProofValue({credentials, verifier});\n }", + "title": "\"before all\" hook in \"LearnCard\"", + "body": "async function() {\n const [issuer] = endpoints;\n verifier = implementation.verifiers.find(\n verifier => verifier.tags.has(tag));\n const {settings: {id: issuerId, options}} = issuer;\n const body = {credential: klona(validVc), options};\n body.credential.id = `urn:uuid:${uuidv4()}`;\n body.credential.issuer = issuerId;\n const {data, error} = await issuer.post({json: body});\n if(error) {\n throw error;\n }\n issuedVc = data;\n const {proof} = issuedVc || {};\n proofs = Array.isArray(proof) ? proof : [proof];\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -13115,9 +12388,9 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "sB84IWOcTXVtgkn0L_FP3", + "parent": "5Y_SdCuAeg5pgpzF5z8nW", "ctx": null, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", "originalTitle": "\"before all\" hook", "_events": {}, "_eventsCount": 1, @@ -13125,12 +12398,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 13802, + "_idleStart": 15082, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 179, "_error": null } ], @@ -13142,19 +12415,19 @@ "_onlyTests": [], "_onlySuites": [], "delayed": false, - "parent": "lrXQsY_PzSL1o2oHNu-HO", - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "_testId": "urn:uuid:3f111286-7ba4-42d2-a380-1a8aaf236acc" + "parent": "l0xJtYymfG7xfekwm9Fsc", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "_testId": "urn:uuid:e36c26a7-fff6-41c5-9399-c5e351a3a63f" }, { - "title": "Danube Tech", + "title": "OpSecId", "ctx": null, "suites": [], "tests": [ { "type": "test", - "title": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=When%20deserializing%20to%20RDF%2C%20implementations%20MUST%20ensure%20that%20the%20base%20URL%20is%20set%20to%20null.';\n const credential = credentials.clone('invalidBaseUrl');\n await verificationFail({\n credential,\n verifier,\n reason: 'Should not verify VC with invalid base URL'\n });\n }", + "title": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n should.exist(issuedVc, 'Expected issuer to have issued a ' +\n 'credential.');\n should.exist(proofs, 'Expected credential to have a proof.');\n const ed25519Proofs = proofs.filter(\n proof => proof?.type === 'Ed25519Signature2020');\n ed25519Proofs.length.should.be.gte(1, 'Expected at least one ' +\n 'Ed25519 proof.');\n for(const proof of ed25519Proofs) {\n should.exist(proof.proofValue, 'Expected a proof value on ' +\n 'the proof.');\n const valueBytes = bs58Decode({id: proof.proofValue});\n should.exist(proof.verificationMethod);\n const vmBytes = await getPublicKeyBytes({\n did: proof.verificationMethod});\n vmBytes.byteLength.should.be.oneOf([32, 57], 'Expected public ' +\n 'key bytes to be either 32 or 57 bytes.');\n if(vmBytes.byteLength === 32) {\n valueBytes.byteLength.should.equal(64, 'Expected 64 bytes ' +\n 'proofValue for 32 bytes key.');\n } else {\n valueBytes.byteLength.should.equal(114, 'Expected 114 bytes ' +\n 'proofValue for 57 bytes key.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -13163,70 +12436,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "Gzkcizg3ZqNOVK153M4AF", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "parent": "vZuDHO7WId2_T45x8vzs8", "ctx": null, - "_testId": "urn:uuid:729e671d-5fe8-4a87-b249-7f8fde1114ec", - "cell": { - "columnId": "Danube Tech", - "rowId": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null." - }, + "_testId": "urn:uuid:7a901062-7527-4692-a753-a5d4d371ceaa", "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=When%20deserializing%20to%20RDF%2C%20implementations%20MUST%20ensure%20that%20the%20base%20URL%20is%20set%20to%20null.", - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 14838, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 697, - "state": "passed", - "speed": "slow" - }, - { - "type": "test", - "title": "Conforming processors MUST produce errors when non-conforming documents are consumed.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=Conforming%20processors%20MUST%20produce%20errors%20when%20non%2Dconforming%20documents%20are%20consumed.';\n // this could be read as testing all non-confirming docs or just one\n // for this test only one doc is tested as it should throw for any\n // non-conforming doc\n await verificationFail({\n credential: credentials.clone('invalidProofType'),\n verifier,\n reason: 'Should not verify VC with invalid \"proof.type\"'\n });\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "Gzkcizg3ZqNOVK153M4AF", - "ctx": null, - "_testId": "urn:uuid:e506ea29-76a0-40c2-967f-0ce9acbd576f", "cell": { - "columnId": "Danube Tech", - "rowId": "Conforming processors MUST produce errors when non-conforming documents are consumed." + "columnId": "OpSecId", + "rowId": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes." }, - "_events": {}, - "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=Conforming%20processors%20MUST%20produce%20errors%20when%20non%2Dconforming%20documents%20are%20consumed.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 15535, + "_idleStart": 15490, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 230, + "duration": 1, "state": "passed", - "speed": "slow" + "speed": "fast" }, { "type": "test", - "title": "If the \"proof\" field is missing, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('issuedVc');\n delete credential.proof;\n await verificationFail({credential, verifier});\n }", + "title": "\"proof\" MUST verify when using a conformant verifier.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title,\n };\n should.exist(verifier, 'Expected implementation to have a VC ' +\n 'HTTP API compatible verifier.');\n const {result, error} = await verifier.post({json: {\n verifiableCredential: issuedVc,\n options: {checks: ['proof']}\n }});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected verifier to return a result.');\n result.status.should.not.equal(400, 'Expected status code to not ' +\n 'be 400.');\n result.status.should.equal(200, 'Expected status code to be 200.');\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -13235,33 +12471,38 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "Gzkcizg3ZqNOVK153M4AF", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "parent": "vZuDHO7WId2_T45x8vzs8", "ctx": null, - "_testId": "urn:uuid:dda8fd0b-ef0c-4908-8c60-e52b998ba6b1", - "cell": { - "columnId": "Danube Tech", - "rowId": "If the \"proof\" field is missing, an error MUST be raised." - }, + "_testId": "urn:uuid:9e6357fa-8352-43e0-944c-ff47085cedd4", "_events": {}, "_eventsCount": 1, + "cell": { + "columnId": "OpSecId", + "rowId": "\"proof\" MUST verify when using a conformant verifier." + }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 15765, + "_idleStart": 15490, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 792, + "duration": 62, "state": "passed", - "speed": "slow" - }, + "speed": "medium" + } + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [], + "_beforeAll": [ { - "type": "test", - "title": "If the \"proof\" field is invalid, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('issuedVc');\n credential.proof = null;\n await verificationFail({credential, verifier});\n }", + "title": "\"before all\" hook in \"OpSecId\"", + "body": "async function() {\n const [issuer] = endpoints;\n verifier = implementation.verifiers.find(\n verifier => verifier.tags.has(tag));\n const {settings: {id: issuerId, options}} = issuer;\n const body = {credential: klona(validVc), options};\n body.credential.id = `urn:uuid:${uuidv4()}`;\n body.credential.issuer = issuerId;\n const {data, error} = await issuer.post({json: body});\n if(error) {\n throw error;\n }\n issuedVc = data;\n const {proof} = issuedVc || {};\n proofs = Array.isArray(proof) ? proof : [proof];\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -13270,33 +12511,47 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "Gzkcizg3ZqNOVK153M4AF", + "type": "hook", + "parent": "vZuDHO7WId2_T45x8vzs8", "ctx": null, - "_testId": "urn:uuid:485469d9-c66a-416b-9d0d-2aa4c7442591", - "cell": { - "columnId": "Danube Tech", - "rowId": "If the \"proof\" field is invalid, an error MUST be raised." - }, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "originalTitle": "\"before all\" hook", "_events": {}, "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 16557, + "_idleStart": 15357, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 538, - "state": "passed", - "speed": "slow" - }, + "duration": 132, + "_error": null + } + ], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "l0xJtYymfG7xfekwm9Fsc", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "_testId": "urn:uuid:e85c0f08-daaf-4b60-b87e-d58d732b3c64" + }, + { + "title": "SpruceID", + "ctx": null, + "suites": [], + "tests": [ { "type": "test", - "title": "If the \"proof.type\" field is missing, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('issuedVc');\n delete credential.proof.type;\n await verificationFail({credential, verifier});\n }", + "title": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n should.exist(issuedVc, 'Expected issuer to have issued a ' +\n 'credential.');\n should.exist(proofs, 'Expected credential to have a proof.');\n const ed25519Proofs = proofs.filter(\n proof => proof?.type === 'Ed25519Signature2020');\n ed25519Proofs.length.should.be.gte(1, 'Expected at least one ' +\n 'Ed25519 proof.');\n for(const proof of ed25519Proofs) {\n should.exist(proof.proofValue, 'Expected a proof value on ' +\n 'the proof.');\n const valueBytes = bs58Decode({id: proof.proofValue});\n should.exist(proof.verificationMethod);\n const vmBytes = await getPublicKeyBytes({\n did: proof.verificationMethod});\n vmBytes.byteLength.should.be.oneOf([32, 57], 'Expected public ' +\n 'key bytes to be either 32 or 57 bytes.');\n if(vmBytes.byteLength === 32) {\n valueBytes.byteLength.should.equal(64, 'Expected 64 bytes ' +\n 'proofValue for 32 bytes key.');\n } else {\n valueBytes.byteLength.should.equal(114, 'Expected 114 bytes ' +\n 'proofValue for 57 bytes key.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -13305,33 +12560,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "Gzkcizg3ZqNOVK153M4AF", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "parent": "l1UmDE8ajVlZhMLSZMYbY", "ctx": null, - "_testId": "urn:uuid:d3de7895-f01d-43e8-a304-7e67f72061d4", - "cell": { - "columnId": "Danube Tech", - "rowId": "If the \"proof.type\" field is missing, an error MUST be raised." - }, + "_testId": "urn:uuid:3f075b2d-75c7-4bf3-9dd0-61c0ce687d51", "_events": {}, "_eventsCount": 1, + "cell": { + "columnId": "SpruceID", + "rowId": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes." + }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 17095, + "_idleStart": 15614, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 225, + "duration": 0, "state": "passed", - "speed": "slow" + "speed": "fast" }, { "type": "test", - "title": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('invalidProofType');\n await verificationFail({credential, verifier});\n }", + "title": "\"proof\" MUST verify when using a conformant verifier.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title,\n };\n should.exist(verifier, 'Expected implementation to have a VC ' +\n 'HTTP API compatible verifier.');\n const {result, error} = await verifier.post({json: {\n verifiableCredential: issuedVc,\n options: {checks: ['proof']}\n }});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected verifier to return a result.');\n result.status.should.not.equal(400, 'Expected status code to not ' +\n 'be 400.');\n result.status.should.equal(200, 'Expected status code to be 200.');\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -13340,33 +12595,38 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "Gzkcizg3ZqNOVK153M4AF", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "parent": "l1UmDE8ajVlZhMLSZMYbY", "ctx": null, - "_testId": "urn:uuid:ee175e47-057a-4360-ba5d-3a0f0451a023", - "cell": { - "columnId": "Danube Tech", - "rowId": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised." - }, + "_testId": "urn:uuid:21613a61-14f9-4887-be7f-ea98b2b408e5", "_events": {}, "_eventsCount": 1, + "cell": { + "columnId": "SpruceID", + "rowId": "\"proof\" MUST verify when using a conformant verifier." + }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 17320, + "_idleStart": 15615, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 225, + "duration": 30, "state": "passed", - "speed": "slow" - }, + "speed": "fast" + } + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [], + "_beforeAll": [ { - "type": "test", - "title": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('noVm');\n await verificationFail({credential, verifier});\n }", + "title": "\"before all\" hook in \"SpruceID\"", + "body": "async function() {\n const [issuer] = endpoints;\n verifier = implementation.verifiers.find(\n verifier => verifier.tags.has(tag));\n const {settings: {id: issuerId, options}} = issuer;\n const body = {credential: klona(validVc), options};\n body.credential.id = `urn:uuid:${uuidv4()}`;\n body.credential.issuer = issuerId;\n const {data, error} = await issuer.post({json: body});\n if(error) {\n throw error;\n }\n issuedVc = data;\n const {proof} = issuedVc || {};\n proofs = Array.isArray(proof) ? proof : [proof];\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -13375,39 +12635,47 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "Gzkcizg3ZqNOVK153M4AF", + "type": "hook", + "parent": "l1UmDE8ajVlZhMLSZMYbY", "ctx": null, - "_testId": "urn:uuid:47aa23f7-4cf6-4933-859c-7030a7de0c80", - "cell": { - "columnId": "Danube Tech", - "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." - }, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "originalTitle": "\"before all\" hook", "_events": {}, "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 17546, + "_idleStart": 15552, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 108, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected \"response.status\" to exist.: expected undefined to exist", - "showDiff": false, - "operator": "strictEqual", - "stack": "AssertionError: Expected \"response.status\" to exist.: expected undefined to exist\n at should.exist (node_modules/chai/lib/chai/interface/should.js:144:34)\n at shouldBeErrorResponse (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:228:10)\n at verificationFail (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:51:3)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/verify.js:81:7)" - } - }, + "duration": 62, + "_error": null + } + ], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "l0xJtYymfG7xfekwm9Fsc", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "_testId": "urn:uuid:a35c17fb-95ed-464f-bd69-8976d004f8bb" + }, + { + "title": "Trinsic", + "ctx": null, + "suites": [], + "tests": [ { "type": "test", - "title": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('invalidVm');\n await verificationFail({credential, verifier});\n }", + "title": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n should.exist(issuedVc, 'Expected issuer to have issued a ' +\n 'credential.');\n should.exist(proofs, 'Expected credential to have a proof.');\n const ed25519Proofs = proofs.filter(\n proof => proof?.type === 'Ed25519Signature2020');\n ed25519Proofs.length.should.be.gte(1, 'Expected at least one ' +\n 'Ed25519 proof.');\n for(const proof of ed25519Proofs) {\n should.exist(proof.proofValue, 'Expected a proof value on ' +\n 'the proof.');\n const valueBytes = bs58Decode({id: proof.proofValue});\n should.exist(proof.verificationMethod);\n const vmBytes = await getPublicKeyBytes({\n did: proof.verificationMethod});\n vmBytes.byteLength.should.be.oneOf([32, 57], 'Expected public ' +\n 'key bytes to be either 32 or 57 bytes.');\n if(vmBytes.byteLength === 32) {\n valueBytes.byteLength.should.equal(64, 'Expected 64 bytes ' +\n 'proofValue for 32 bytes key.');\n } else {\n valueBytes.byteLength.should.equal(114, 'Expected 114 bytes ' +\n 'proofValue for 57 bytes key.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -13416,33 +12684,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "Gzkcizg3ZqNOVK153M4AF", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "parent": "C9n-oUnvsKV2x1TuLLHeR", "ctx": null, - "_testId": "urn:uuid:6c5caf56-ab9a-42aa-92d8-39ea85bcc705", - "cell": { - "columnId": "Danube Tech", - "rowId": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised." - }, + "_testId": "urn:uuid:ffeb96dd-0ddd-4ca2-8009-13f8465642b6", "_events": {}, "_eventsCount": 1, + "cell": { + "columnId": "Trinsic", + "rowId": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes." + }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 17654, + "_idleStart": 16230, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 669, + "duration": 1, "state": "passed", - "speed": "slow" + "speed": "fast" }, { "type": "test", - "title": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('noProofPurpose');\n await verificationFail({credential, verifier});\n }", + "title": "\"proof\" MUST verify when using a conformant verifier.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title,\n };\n should.exist(verifier, 'Expected implementation to have a VC ' +\n 'HTTP API compatible verifier.');\n const {result, error} = await verifier.post({json: {\n verifiableCredential: issuedVc,\n options: {checks: ['proof']}\n }});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected verifier to return a result.');\n result.status.should.not.equal(400, 'Expected status code to not ' +\n 'be 400.');\n result.status.should.equal(200, 'Expected status code to be 200.');\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -13451,33 +12719,38 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "Gzkcizg3ZqNOVK153M4AF", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "parent": "C9n-oUnvsKV2x1TuLLHeR", "ctx": null, - "_testId": "urn:uuid:d565eb11-20db-48aa-9e11-3b3e70f26827", - "cell": { - "columnId": "Danube Tech", - "rowId": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised." - }, + "_testId": "urn:uuid:8b47d832-e3d4-4d98-835b-58b1a48eed1b", "_events": {}, "_eventsCount": 1, + "cell": { + "columnId": "Trinsic", + "rowId": "\"proof\" MUST verify when using a conformant verifier." + }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 18322, + "_idleStart": 16231, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 670, + "duration": 1774, "state": "passed", "speed": "slow" - }, + } + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [], + "_beforeAll": [ { - "type": "test", - "title": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('invalidProofPurpose');\n await verificationFail({credential, verifier});\n }", + "title": "\"before all\" hook in \"Trinsic\"", + "body": "async function() {\n const [issuer] = endpoints;\n verifier = implementation.verifiers.find(\n verifier => verifier.tags.has(tag));\n const {settings: {id: issuerId, options}} = issuer;\n const body = {credential: klona(validVc), options};\n body.credential.id = `urn:uuid:${uuidv4()}`;\n body.credential.issuer = issuerId;\n const {data, error} = await issuer.post({json: body});\n if(error) {\n throw error;\n }\n issuedVc = data;\n const {proof} = issuedVc || {};\n proofs = Array.isArray(proof) ? proof : [proof];\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -13486,69 +12759,77 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "Gzkcizg3ZqNOVK153M4AF", + "type": "hook", + "parent": "C9n-oUnvsKV2x1TuLLHeR", "ctx": null, - "_testId": "urn:uuid:03c5e8b6-3e93-465a-ba13-020d9558eab9", - "cell": { - "columnId": "Danube Tech", - "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." - }, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "originalTitle": "\"before all\" hook", "_events": {}, "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 18993, + "_idleStart": 15645, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 225, - "state": "passed", - "speed": "slow" - }, - { - "type": "test", - "title": "If expectedProofPurpose was given, and it does not match proof.proofPurpose, an error MUST be raised and SHOULD convey an error type of PROOF_VERIFICATION_ERROR.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#:~:text=If%20expectedProofPurpose%20was%20given%2C%20and%20it%20does%20not%20match%20proof.proofPurpose%2C%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_VERIFICATION_ERROR.';\n // NOTE: expectedProofPurpose should be specified by verifiers internally\n // it is very unlikely to be invalidProofPurpose\n await verificationFail({\n credential: credentials.clone('invalidProofPurpose'),\n verifier,\n reason: 'Verifier should reject VC with invalid proof purpose.'\n });\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "Gzkcizg3ZqNOVK153M4AF", - "ctx": null, - "_testId": "urn:uuid:b892233c-65bf-4e49-8cfc-ed1fb5c4c3d5", - "cell": { - "columnId": "Danube Tech", - "rowId": "If expectedProofPurpose was given, and it does not match proof.proofPurpose, an error MUST be raised and SHOULD convey an error type of PROOF_VERIFICATION_ERROR." - }, - "_events": {}, - "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#:~:text=If%20expectedProofPurpose%20was%20given%2C%20and%20it%20does%20not%20match%20proof.proofPurpose%2C%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_VERIFICATION_ERROR.", - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 19218, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 225, - "state": "passed", - "speed": "slow" - }, + "duration": 585, + "_error": null + } + ], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "l0xJtYymfG7xfekwm9Fsc", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "_testId": "urn:uuid:8f8a3112-50b4-4d86-8ad1-16f84e656a96" + } + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [], + "_beforeAll": [], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "bgAmkRpbvJlC4qudEWaiv", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "matrix": true, + "report": true, + "rowLabel": "Test Name", + "columnLabel": "Issuer", + "_testId": "urn:uuid:2f876bd5-bebe-4c41-b652-65c334782a45", + "columns": [ + "apicatalog.com", + "Danube Tech", + "Digital Bazaar", + "EWF", + "LearnCard", + "OpSecId", + "SpruceID", + "Trinsic" + ], + "rows": [ + { + "id": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes.", + "cells": [ { "type": "test", - "title": "The proofValue property MUST be used, as specified in 2.1 Proofs.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20proofValue%20property%20MUST%20be%20used%2C%20as%20specified%20in%202.1%20Proofs.';\n await proofValueTests;\n }", + "title": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n should.exist(issuedVc, 'Expected issuer to have issued a ' +\n 'credential.');\n should.exist(proofs, 'Expected credential to have a proof.');\n const ed25519Proofs = proofs.filter(\n proof => proof?.type === 'Ed25519Signature2020');\n ed25519Proofs.length.should.be.gte(1, 'Expected at least one ' +\n 'Ed25519 proof.');\n for(const proof of ed25519Proofs) {\n should.exist(proof.proofValue, 'Expected a proof value on ' +\n 'the proof.');\n const valueBytes = bs58Decode({id: proof.proofValue});\n should.exist(proof.verificationMethod);\n const vmBytes = await getPublicKeyBytes({\n did: proof.verificationMethod});\n vmBytes.byteLength.should.be.oneOf([32, 57], 'Expected public ' +\n 'key bytes to be either 32 or 57 bytes.');\n if(vmBytes.byteLength === 32) {\n valueBytes.byteLength.should.equal(64, 'Expected 64 bytes ' +\n 'proofValue for 32 bytes key.');\n } else {\n valueBytes.byteLength.should.equal(114, 'Expected 114 bytes ' +\n 'proofValue for 57 bytes key.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -13557,34 +12838,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "Gzkcizg3ZqNOVK153M4AF", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "parent": "NqqP_lFHNMyzSBYddoYB3", "ctx": null, - "_testId": "urn:uuid:d4507e3d-9e2a-40e5-8f63-c6a3ede7f65e", - "cell": { - "columnId": "Danube Tech", - "rowId": "The proofValue property MUST be used, as specified in 2.1 Proofs." - }, + "_testId": "urn:uuid:e81c1a5a-94c0-4cd2-83c8-a800da649450", "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20proofValue%20property%20MUST%20be%20used%2C%20as%20specified%20in%202.1%20Proofs.", + "cell": { + "columnId": "apicatalog.com", + "rowId": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes." + }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 19443, + "_idleStart": 11384, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 1, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof';\n await proofValueTests;\n }", + "title": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n should.exist(issuedVc, 'Expected issuer to have issued a ' +\n 'credential.');\n should.exist(proofs, 'Expected credential to have a proof.');\n const ed25519Proofs = proofs.filter(\n proof => proof?.type === 'Ed25519Signature2020');\n ed25519Proofs.length.should.be.gte(1, 'Expected at least one ' +\n 'Ed25519 proof.');\n for(const proof of ed25519Proofs) {\n should.exist(proof.proofValue, 'Expected a proof value on ' +\n 'the proof.');\n const valueBytes = bs58Decode({id: proof.proofValue});\n should.exist(proof.verificationMethod);\n const vmBytes = await getPublicKeyBytes({\n did: proof.verificationMethod});\n vmBytes.byteLength.should.be.oneOf([32, 57], 'Expected public ' +\n 'key bytes to be either 32 or 57 bytes.');\n if(vmBytes.byteLength === 32) {\n valueBytes.byteLength.should.equal(64, 'Expected 64 bytes ' +\n 'proofValue for 32 bytes key.');\n } else {\n valueBytes.byteLength.should.equal(114, 'Expected 114 bytes ' +\n 'proofValue for 57 bytes key.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -13593,22 +12873,21 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "Gzkcizg3ZqNOVK153M4AF", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "parent": "zKmZnavBKdxcGaKpdgTYl", "ctx": null, - "_testId": "urn:uuid:f6d618b9-40de-44ed-a2b8-4cadf7f20d91", + "_testId": "urn:uuid:d07d609e-b115-4766-9e7a-10f9c28adcae", + "_events": {}, + "_eventsCount": 1, "cell": { "columnId": "Danube Tech", - "rowId": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification." + "rowId": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes." }, - "_events": {}, - "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 19443, + "_idleStart": 11652, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -13619,8 +12898,8 @@ }, { "type": "test", - "title": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.';\n await verificationFail({\n credential: credentials.clone('undefinedTerm'),\n verifier,\n reason: 'Should fail to verify VC when data is dropped by JSON-LD'\n });\n const undefinedTerm = credentials.clone('issuedVc');\n undefinedTerm.credentialSubject.undefinedTerm = 'IfDroppedWillVerify';\n await verificationFail({\n credential: undefinedTerm,\n verifier,\n reason: 'Should fail to verify VC if an undefined term is added ' +\n 'after issuance.'\n });\n const undefinedType = credentials.clone('issuedVc');\n undefinedType.type.push('UndefinedType');\n await verificationFail({\n credential: undefinedType,\n verifier,\n reason: 'Should fail to verify VC if an undefined type is added ' +\n 'after issuance.'\n });\n }", + "title": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n should.exist(issuedVc, 'Expected issuer to have issued a ' +\n 'credential.');\n should.exist(proofs, 'Expected credential to have a proof.');\n const ed25519Proofs = proofs.filter(\n proof => proof?.type === 'Ed25519Signature2020');\n ed25519Proofs.length.should.be.gte(1, 'Expected at least one ' +\n 'Ed25519 proof.');\n for(const proof of ed25519Proofs) {\n should.exist(proof.proofValue, 'Expected a proof value on ' +\n 'the proof.');\n const valueBytes = bs58Decode({id: proof.proofValue});\n should.exist(proof.verificationMethod);\n const vmBytes = await getPublicKeyBytes({\n did: proof.verificationMethod});\n vmBytes.byteLength.should.be.oneOf([32, 57], 'Expected public ' +\n 'key bytes to be either 32 or 57 bytes.');\n if(vmBytes.byteLength === 32) {\n valueBytes.byteLength.should.equal(64, 'Expected 64 bytes ' +\n 'proofValue for 32 bytes key.');\n } else {\n valueBytes.byteLength.should.equal(114, 'Expected 114 bytes ' +\n 'proofValue for 57 bytes key.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -13629,34 +12908,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "Gzkcizg3ZqNOVK153M4AF", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "parent": "Lj5f2dKadPfwEEuqyTVZo", "ctx": null, - "_testId": "urn:uuid:93a3c77d-08e6-4f4a-bfa7-0fda908668b3", - "cell": { - "columnId": "Danube Tech", - "rowId": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document." - }, + "_testId": "urn:uuid:105b990c-a02b-4f0b-bf93-7d229e258bde", "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.", + "cell": { + "columnId": "Digital Bazaar", + "rowId": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes." + }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 19443, + "_idleStart": 13590, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 678, + "duration": 0, "state": "passed", - "speed": "slow" + "speed": "fast" }, { "type": "test", - "title": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC';\n const credential = credentials.clone('invalidCreated');\n await verificationFail({credential, verifier});\n }", + "title": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n should.exist(issuedVc, 'Expected issuer to have issued a ' +\n 'credential.');\n should.exist(proofs, 'Expected credential to have a proof.');\n const ed25519Proofs = proofs.filter(\n proof => proof?.type === 'Ed25519Signature2020');\n ed25519Proofs.length.should.be.gte(1, 'Expected at least one ' +\n 'Ed25519 proof.');\n for(const proof of ed25519Proofs) {\n should.exist(proof.proofValue, 'Expected a proof value on ' +\n 'the proof.');\n const valueBytes = bs58Decode({id: proof.proofValue});\n should.exist(proof.verificationMethod);\n const vmBytes = await getPublicKeyBytes({\n did: proof.verificationMethod});\n vmBytes.byteLength.should.be.oneOf([32, 57], 'Expected public ' +\n 'key bytes to be either 32 or 57 bytes.');\n if(vmBytes.byteLength === 32) {\n valueBytes.byteLength.should.equal(64, 'Expected 64 bytes ' +\n 'proofValue for 32 bytes key.');\n } else {\n valueBytes.byteLength.should.equal(114, 'Expected 114 bytes ' +\n 'proofValue for 57 bytes key.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -13665,34 +12943,41 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "Gzkcizg3ZqNOVK153M4AF", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "parent": "e-pRwjp5knhThscTJLc2h", "ctx": null, - "_testId": "urn:uuid:759e03a3-6b71-4b37-a514-8c9e191ec915", - "cell": { - "columnId": "Danube Tech", - "rowId": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." - }, + "_testId": "urn:uuid:8cb47f8c-91b6-4d11-97e0-f0a7135e5b16", "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC", + "cell": { + "columnId": "EWF", + "rowId": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes." + }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 20121, + "_idleStart": 14981, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 713, - "state": "passed", - "speed": "slow" + "duration": 0, + "state": "failed", + "err": { + "name": "AssertionError", + "message": "Expected at least one Ed25519 proof.: expected +0 to be at least 1", + "showDiff": true, + "actual": "0", + "expected": "1", + "operator": "strictEqual", + "stack": "AssertionError: Expected at least one Ed25519 proof.: expected +0 to be at least 1\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js:73:42)\n at process.processImmediate (node:internal/timers:483:21)" + } }, { "type": "test", - "title": "The value of the cryptosuite property MUST be a string that identifies the cryptographic suite. If the processing environment supports subtypes of string, the type of the cryptosuite value MUST be the https://w3id.org/security#cryptosuiteString subtype of string.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=The%20value%20of%20the%20cryptosuite%20property%20MUST%20be%20a%20string%20that%20identifies%20the%20cryptographic%20suite.%20If%20the%20processing%20environment%20supports%20subtypes%20of%20string%2C%20the%20type%20of%20the%20cryptosuite%20value%20MUST%20be%20the%20https%3A//w3id.org/security%23cryptosuiteString%20subtype%20of%20string.';\n const credential = credentials.clone('invalidCryptosuite');\n await verificationFail({credential, verifier});\n }", + "title": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n should.exist(issuedVc, 'Expected issuer to have issued a ' +\n 'credential.');\n should.exist(proofs, 'Expected credential to have a proof.');\n const ed25519Proofs = proofs.filter(\n proof => proof?.type === 'Ed25519Signature2020');\n ed25519Proofs.length.should.be.gte(1, 'Expected at least one ' +\n 'Ed25519 proof.');\n for(const proof of ed25519Proofs) {\n should.exist(proof.proofValue, 'Expected a proof value on ' +\n 'the proof.');\n const valueBytes = bs58Decode({id: proof.proofValue});\n should.exist(proof.verificationMethod);\n const vmBytes = await getPublicKeyBytes({\n did: proof.verificationMethod});\n vmBytes.byteLength.should.be.oneOf([32, 57], 'Expected public ' +\n 'key bytes to be either 32 or 57 bytes.');\n if(vmBytes.byteLength === 32) {\n valueBytes.byteLength.should.equal(64, 'Expected 64 bytes ' +\n 'proofValue for 32 bytes key.');\n } else {\n valueBytes.byteLength.should.equal(114, 'Expected 114 bytes ' +\n 'proofValue for 57 bytes key.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -13701,34 +12986,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "Gzkcizg3ZqNOVK153M4AF", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "parent": "5Y_SdCuAeg5pgpzF5z8nW", "ctx": null, - "_testId": "urn:uuid:76d5f968-dac8-4e21-ac95-8fb0cb2fcc14", - "cell": { - "columnId": "Danube Tech", - "rowId": "The value of the cryptosuite property MUST be a string that identifies the cryptographic suite. If the processing environment supports subtypes of string, the type of the cryptosuite value MUST be the https://w3id.org/security#cryptosuiteString subtype of string." - }, + "_testId": "urn:uuid:5091a8a2-13cb-4b96-96e2-370531deac05", "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#introduction:~:text=The%20value%20of%20the%20cryptosuite%20property%20MUST%20be%20a%20string%20that%20identifies%20the%20cryptographic%20suite.%20If%20the%20processing%20environment%20supports%20subtypes%20of%20string%2C%20the%20type%20of%20the%20cryptosuite%20value%20MUST%20be%20the%20https%3A//w3id.org/security%23cryptosuiteString%20subtype%20of%20string.", + "cell": { + "columnId": "LearnCard", + "rowId": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes." + }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 20835, + "_idleStart": 15261, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 659, + "duration": 0, "state": "passed", - "speed": "slow" + "speed": "fast" }, { "type": "test", - "title": "If options has a non-null domain item, it MUST be equal to proof.domain or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=If%20options%20has%20a%20non%2Dnull%20domain%20item%2C%20it%20MUST%20be%20equal%20to%20proof.domain%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.';\n const credential = credentials.clone('invalidDomain');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example'\n }\n });\n }", + "title": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n should.exist(issuedVc, 'Expected issuer to have issued a ' +\n 'credential.');\n should.exist(proofs, 'Expected credential to have a proof.');\n const ed25519Proofs = proofs.filter(\n proof => proof?.type === 'Ed25519Signature2020');\n ed25519Proofs.length.should.be.gte(1, 'Expected at least one ' +\n 'Ed25519 proof.');\n for(const proof of ed25519Proofs) {\n should.exist(proof.proofValue, 'Expected a proof value on ' +\n 'the proof.');\n const valueBytes = bs58Decode({id: proof.proofValue});\n should.exist(proof.verificationMethod);\n const vmBytes = await getPublicKeyBytes({\n did: proof.verificationMethod});\n vmBytes.byteLength.should.be.oneOf([32, 57], 'Expected public ' +\n 'key bytes to be either 32 or 57 bytes.');\n if(vmBytes.byteLength === 32) {\n valueBytes.byteLength.should.equal(64, 'Expected 64 bytes ' +\n 'proofValue for 32 bytes key.');\n } else {\n valueBytes.byteLength.should.equal(114, 'Expected 114 bytes ' +\n 'proofValue for 57 bytes key.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -13737,34 +13021,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "Gzkcizg3ZqNOVK153M4AF", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "parent": "vZuDHO7WId2_T45x8vzs8", "ctx": null, - "_testId": "urn:uuid:ff2e238e-5f9c-43ef-bad5-c8c6746977a2", - "cell": { - "columnId": "Danube Tech", - "rowId": "If options has a non-null domain item, it MUST be equal to proof.domain or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR." - }, + "_testId": "urn:uuid:7a901062-7527-4692-a753-a5d4d371ceaa", "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=If%20options%20has%20a%20non%2Dnull%20domain%20item%2C%20it%20MUST%20be%20equal%20to%20proof.domain%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.", + "cell": { + "columnId": "OpSecId", + "rowId": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes." + }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 21494, + "_idleStart": 15490, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 659, + "duration": 1, "state": "passed", - "speed": "slow" + "speed": "fast" }, { "type": "test", - "title": "If options has a non-null challenge item, it MUST be equal to proof.challenge or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#add-proof:~:text=If%20options%20has%20a%20non%2Dnull%20challenge%20item%2C%20it%20MUST%20be%20equal%20to%20proof.challenge%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.';\n const credential = credentials.clone('invalidChallenge');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example',\n challenge: '1235abcd6789'\n }\n });\n }", + "title": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n should.exist(issuedVc, 'Expected issuer to have issued a ' +\n 'credential.');\n should.exist(proofs, 'Expected credential to have a proof.');\n const ed25519Proofs = proofs.filter(\n proof => proof?.type === 'Ed25519Signature2020');\n ed25519Proofs.length.should.be.gte(1, 'Expected at least one ' +\n 'Ed25519 proof.');\n for(const proof of ed25519Proofs) {\n should.exist(proof.proofValue, 'Expected a proof value on ' +\n 'the proof.');\n const valueBytes = bs58Decode({id: proof.proofValue});\n should.exist(proof.verificationMethod);\n const vmBytes = await getPublicKeyBytes({\n did: proof.verificationMethod});\n vmBytes.byteLength.should.be.oneOf([32, 57], 'Expected public ' +\n 'key bytes to be either 32 or 57 bytes.');\n if(vmBytes.byteLength === 32) {\n valueBytes.byteLength.should.equal(64, 'Expected 64 bytes ' +\n 'proofValue for 32 bytes key.');\n } else {\n valueBytes.byteLength.should.equal(114, 'Expected 114 bytes ' +\n 'proofValue for 57 bytes key.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -13773,34 +13056,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "Gzkcizg3ZqNOVK153M4AF", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "parent": "l1UmDE8ajVlZhMLSZMYbY", "ctx": null, - "_testId": "urn:uuid:328538d1-55c4-440c-be86-a995a7393764", - "cell": { - "columnId": "Danube Tech", - "rowId": "If options has a non-null challenge item, it MUST be equal to proof.challenge or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR." - }, + "_testId": "urn:uuid:3f075b2d-75c7-4bf3-9dd0-61c0ce687d51", "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#add-proof:~:text=If%20options%20has%20a%20non%2Dnull%20challenge%20item%2C%20it%20MUST%20be%20equal%20to%20proof.challenge%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.", + "cell": { + "columnId": "SpruceID", + "rowId": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes." + }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 22153, + "_idleStart": 15614, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 659, + "duration": 0, "state": "passed", - "speed": "slow" + "speed": "fast" }, { "type": "test", - "title": "(created) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset.", - "body": "async function() {\n this.test.link = 'https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=be%20a%20string.-,created,-The%20date%20and';\n await verificationFail({\n credential: credentials.clone('noOffsetCreated'),\n verifier\n });\n }", + "title": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n should.exist(issuedVc, 'Expected issuer to have issued a ' +\n 'credential.');\n should.exist(proofs, 'Expected credential to have a proof.');\n const ed25519Proofs = proofs.filter(\n proof => proof?.type === 'Ed25519Signature2020');\n ed25519Proofs.length.should.be.gte(1, 'Expected at least one ' +\n 'Ed25519 proof.');\n for(const proof of ed25519Proofs) {\n should.exist(proof.proofValue, 'Expected a proof value on ' +\n 'the proof.');\n const valueBytes = bs58Decode({id: proof.proofValue});\n should.exist(proof.verificationMethod);\n const vmBytes = await getPublicKeyBytes({\n did: proof.verificationMethod});\n vmBytes.byteLength.should.be.oneOf([32, 57], 'Expected public ' +\n 'key bytes to be either 32 or 57 bytes.');\n if(vmBytes.byteLength === 32) {\n valueBytes.byteLength.should.equal(64, 'Expected 64 bytes ' +\n 'proofValue for 32 bytes key.');\n } else {\n valueBytes.byteLength.should.equal(114, 'Expected 114 bytes ' +\n 'proofValue for 57 bytes key.');\n }\n }\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -13809,34 +13091,38 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "Gzkcizg3ZqNOVK153M4AF", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "parent": "C9n-oUnvsKV2x1TuLLHeR", "ctx": null, - "_testId": "urn:uuid:07be11fd-7931-4398-a804-770bdb12a897", - "cell": { - "columnId": "Danube Tech", - "rowId": "(created) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." - }, + "_testId": "urn:uuid:ffeb96dd-0ddd-4ca2-8009-13f8465642b6", "_events": {}, "_eventsCount": 1, - "link": "https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=be%20a%20string.-,created,-The%20date%20and", + "cell": { + "columnId": "Trinsic", + "rowId": "\"proofValue\" field when decoded to raw bytes, MUST be 64 bytes in length if the associated public key is 32 bytes or 114 bytes in length if the public key is 57 bytes." + }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 22813, + "_idleStart": 16230, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 658, + "duration": 1, "state": "passed", - "speed": "slow" - }, + "speed": "fast" + } + ] + }, + { + "id": "\"proof\" MUST verify when using a conformant verifier.", + "cells": [ { "type": "test", - "title": "(expires) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset.", - "body": "async function() {\n this.test.link = 'https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=interpreted%20as%20UTC.-,expires,-The%20expires%20property';\n await verificationFail({\n credential: credentials.clone('noOffsetExpires'),\n verifier\n });\n }", + "title": "\"proof\" MUST verify when using a conformant verifier.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title,\n };\n should.exist(verifier, 'Expected implementation to have a VC ' +\n 'HTTP API compatible verifier.');\n const {result, error} = await verifier.post({json: {\n verifiableCredential: issuedVc,\n options: {checks: ['proof']}\n }});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected verifier to return a result.');\n result.status.should.not.equal(400, 'Expected status code to not ' +\n 'be 400.');\n result.status.should.equal(200, 'Expected status code to be 200.');\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -13845,61 +13131,151 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "Gzkcizg3ZqNOVK153M4AF", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "parent": "NqqP_lFHNMyzSBYddoYB3", "ctx": null, - "_testId": "urn:uuid:cd72383f-bb43-4a12-86e0-b3f29d43d69b", - "cell": { - "columnId": "Danube Tech", - "rowId": "(expires) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." - }, + "_testId": "urn:uuid:58e71efd-0d5f-40d0-b252-504c130573f2", "_events": {}, "_eventsCount": 1, - "link": "https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=interpreted%20as%20UTC.-,expires,-The%20expires%20property", + "cell": { + "columnId": "apicatalog.com", + "rowId": "\"proof\" MUST verify when using a conformant verifier." + }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 23470, + "_idleStart": 11385, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 676, - "state": "passed", - "speed": "slow" - } - ], - "root": false, - "pending": false, - "_retries": -1, - "_beforeEach": [ - { - "title": "\"before each\" hook in \"Danube Tech\"", - "body": "function() {\n this.currentTest.cell = {\n columnId: testDescription,\n rowId: this.currentTest.title\n };\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "type": "hook", - "parent": "Gzkcizg3ZqNOVK153M4AF", - "ctx": null, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "originalTitle": "\"before each\" hook", - "_events": {}, - "_eventsCount": 1, - "duration": 0, - "_error": null - } - ], - "_beforeAll": [ + "duration": 83, + "state": "failed", + "err": { + "name": "AssertionError", + "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist", + "showDiff": false, + "actual": { + "response": {}, + "request": {}, + "options": { + "credentials": "same-origin", + "headers": {}, + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",\"https://w3id.org/security/suites/ed25519-2020/v1\"],\"id\":\"urn:uuid:1a946c2a-5402-4997-9b83-dfa2cc671b75\",\"type\":\"VerifiableCredential\",\"issuer\":\"https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"verificationMethod\":\"did:key:z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y#z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y\",\"type\":\"Ed25519Signature2020\",\"proofPurpose\":\"assertionMethod\",\"created\":\"2024-09-01T05:01:43Z\",\"proofValue\":\"z3L43oTnb75g7iZgNyreDABPDLtfw29z6AeBjc5SejVWEsVdWJeMNud1iJYn5xy8ix863nPr98DzRo3RAHyHe9WZc\"}},\"options\":{\"checks\":[\"proof\"]}}", + "method": "POST", + "json": { + "verifiableCredential": { + "@context": [ + "https://www.w3.org/2018/credentials/v1", + "https://w3id.org/security/suites/ed25519-2020/v1" + ], + "id": "urn:uuid:1a946c2a-5402-4997-9b83-dfa2cc671b75", + "type": "VerifiableCredential", + "issuer": "https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020", + "issuanceDate": "2020-03-16T22:37:26.544Z", + "credentialSubject": { + "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" + }, + "proof": { + "verificationMethod": "did:key:z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y#z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y", + "type": "Ed25519Signature2020", + "proofPurpose": "assertionMethod", + "created": "2024-09-01T05:01:43Z", + "proofValue": "z3L43oTnb75g7iZgNyreDABPDLtfw29z6AeBjc5SejVWEsVdWJeMNud1iJYn5xy8ix863nPr98DzRo3RAHyHe9WZc" + } + }, + "options": { + "checks": [ + "proof" + ] + } + }, + "agent": { + "_events": {}, + "_eventsCount": 2, + "defaultPort": 443, + "protocol": "https:", + "options": { + "rejectUnauthorized": false, + "noDelay": true, + "path": null + }, + "requests": {}, + "sockets": {}, + "freeSockets": {}, + "keepAliveMsecs": 1000, + "keepAlive": false, + "maxSockets": null, + "maxFreeSockets": 256, + "scheduling": "lifo", + "maxTotalSockets": null, + "totalSocketCount": 0, + "maxCachedSessions": 100, + "_sessionCache": { + "map": {}, + "list": [] + } + }, + "hooks": { + "beforeRequest": [], + "beforeRetry": [], + "beforeError": [], + "afterResponse": [] + }, + "prefixUrl": "", + "retry": { + "limit": 2, + "methods": [ + "get", + "put", + "head", + "delete", + "options", + "trace" + ], + "statusCodes": [ + 408, + 413, + 429, + 500, + 502, + 503, + 504 + ], + "afterStatusCodes": [ + 413, + 429, + 503 + ], + "maxRetryAfter": null, + "backoffLimit": null + }, + "throwHttpErrors": true, + "timeout": 10000, + "signal": {}, + "duplex": "half" + }, + "name": "HTTPError", + "requestUrl": "https://vc.apicatalog.com/credentials/verify", + "status": 400, + "data": { + "checks": [ + "PROOF", + "INVALID_SIGNATURE" + ], + "warnings": [], + "errors": [] + } + }, + "operator": "notStrictEqual", + "stack": "AssertionError: Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js:105:24)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" + } + }, { - "title": "\"before all\" hook in \"Danube Tech\"", - "body": "async function() {\n proofValueTests = shouldBeProofValue({credentials, verifier});\n }", + "type": "test", + "title": "\"proof\" MUST verify when using a conformant verifier.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title,\n };\n should.exist(verifier, 'Expected implementation to have a VC ' +\n 'HTTP API compatible verifier.');\n const {result, error} = await verifier.post({json: {\n verifiableCredential: issuedVc,\n options: {checks: ['proof']}\n }});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected verifier to return a result.');\n result.status.should.not.equal(400, 'Expected status code to not ' +\n 'be 400.');\n result.status.should.equal(200, 'Expected status code to be 200.');\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -13908,47 +13284,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "type": "hook", - "parent": "Gzkcizg3ZqNOVK153M4AF", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "parent": "zKmZnavBKdxcGaKpdgTYl", "ctx": null, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "originalTitle": "\"before all\" hook", + "_testId": "urn:uuid:3ef05c05-eddc-4217-82d5-fa7dc6040404", "_events": {}, "_eventsCount": 1, + "cell": { + "columnId": "Danube Tech", + "rowId": "\"proof\" MUST verify when using a conformant verifier." + }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 14837, + "_idleStart": 11653, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, - "_error": null - } - ], - "_afterEach": [], - "_afterAll": [], - "_timeout": 15000, - "_slow": 75, - "_bail": false, - "_onlyTests": [], - "_onlySuites": [], - "delayed": false, - "parent": "lrXQsY_PzSL1o2oHNu-HO", - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "_testId": "urn:uuid:61f2ed36-2378-4191-b1a0-30c341deede0" - }, - { - "title": "Digital Bazaar", - "ctx": null, - "suites": [], - "tests": [ + "duration": 1203, + "state": "passed", + "speed": "slow" + }, { "type": "test", - "title": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=When%20deserializing%20to%20RDF%2C%20implementations%20MUST%20ensure%20that%20the%20base%20URL%20is%20set%20to%20null.';\n const credential = credentials.clone('invalidBaseUrl');\n await verificationFail({\n credential,\n verifier,\n reason: 'Should not verify VC with invalid base URL'\n });\n }", + "title": "\"proof\" MUST verify when using a conformant verifier.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title,\n };\n should.exist(verifier, 'Expected implementation to have a VC ' +\n 'HTTP API compatible verifier.');\n const {result, error} = await verifier.post({json: {\n verifiableCredential: issuedVc,\n options: {checks: ['proof']}\n }});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected verifier to return a result.');\n result.status.should.not.equal(400, 'Expected status code to not ' +\n 'be 400.');\n result.status.should.equal(200, 'Expected status code to be 200.');\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -13957,34 +13319,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "afHD67eaDEinS_JWzRU75", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "parent": "Lj5f2dKadPfwEEuqyTVZo", "ctx": null, - "_testId": "urn:uuid:a6d05ffb-1599-49bd-88bc-e8f11fe08dc1", + "_testId": "urn:uuid:aebefa14-2506-4f39-947c-50d637285cf1", + "_events": {}, + "_eventsCount": 1, "cell": { "columnId": "Digital Bazaar", - "rowId": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null." + "rowId": "\"proof\" MUST verify when using a conformant verifier." }, - "_events": {}, - "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=When%20deserializing%20to%20RDF%2C%20implementations%20MUST%20ensure%20that%20the%20base%20URL%20is%20set%20to%20null.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 24153, + "_idleStart": 13591, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 927, + "duration": 1009, "state": "passed", "speed": "slow" }, { "type": "test", - "title": "Conforming processors MUST produce errors when non-conforming documents are consumed.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=Conforming%20processors%20MUST%20produce%20errors%20when%20non%2Dconforming%20documents%20are%20consumed.';\n // this could be read as testing all non-confirming docs or just one\n // for this test only one doc is tested as it should throw for any\n // non-conforming doc\n await verificationFail({\n credential: credentials.clone('invalidProofType'),\n verifier,\n reason: 'Should not verify VC with invalid \"proof.type\"'\n });\n }", + "title": "\"proof\" MUST verify when using a conformant verifier.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title,\n };\n should.exist(verifier, 'Expected implementation to have a VC ' +\n 'HTTP API compatible verifier.');\n const {result, error} = await verifier.post({json: {\n verifiableCredential: issuedVc,\n options: {checks: ['proof']}\n }});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected verifier to return a result.');\n result.status.should.not.equal(400, 'Expected status code to not ' +\n 'be 400.');\n result.status.should.equal(200, 'Expected status code to be 200.');\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -13993,34 +13354,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "afHD67eaDEinS_JWzRU75", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "parent": "e-pRwjp5knhThscTJLc2h", "ctx": null, - "_testId": "urn:uuid:8c73c560-b35d-4f62-a16f-9258c290972f", - "cell": { - "columnId": "Digital Bazaar", - "rowId": "Conforming processors MUST produce errors when non-conforming documents are consumed." - }, + "_testId": "urn:uuid:5ccfa32d-e3ac-43c9-9c23-dcdb17bacb90", "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=Conforming%20processors%20MUST%20produce%20errors%20when%20non%2Dconforming%20documents%20are%20consumed.", + "cell": { + "columnId": "EWF", + "rowId": "\"proof\" MUST verify when using a conformant verifier." + }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 25080, + "_idleStart": 14981, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 45, + "duration": 101, "state": "passed", - "speed": "medium" + "speed": "slow" }, { "type": "test", - "title": "If the \"proof\" field is missing, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('issuedVc');\n delete credential.proof;\n await verificationFail({credential, verifier});\n }", + "title": "\"proof\" MUST verify when using a conformant verifier.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title,\n };\n should.exist(verifier, 'Expected implementation to have a VC ' +\n 'HTTP API compatible verifier.');\n const {result, error} = await verifier.post({json: {\n verifiableCredential: issuedVc,\n options: {checks: ['proof']}\n }});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected verifier to return a result.');\n result.status.should.not.equal(400, 'Expected status code to not ' +\n 'be 400.');\n result.status.should.equal(200, 'Expected status code to be 200.');\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -14029,33 +13389,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "afHD67eaDEinS_JWzRU75", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "parent": "5Y_SdCuAeg5pgpzF5z8nW", "ctx": null, - "_testId": "urn:uuid:0a6b227e-be9a-45b0-b7da-6338f882eb12", - "cell": { - "columnId": "Digital Bazaar", - "rowId": "If the \"proof\" field is missing, an error MUST be raised." - }, + "_testId": "urn:uuid:ef117f3e-a26b-4054-afda-a817d48e372e", "_events": {}, "_eventsCount": 1, + "cell": { + "columnId": "LearnCard", + "rowId": "\"proof\" MUST verify when using a conformant verifier." + }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 25124, + "_idleStart": 15262, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 62, + "duration": 95, "state": "passed", - "speed": "medium" + "speed": "slow" }, { "type": "test", - "title": "If the \"proof\" field is invalid, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('issuedVc');\n credential.proof = null;\n await verificationFail({credential, verifier});\n }", + "title": "\"proof\" MUST verify when using a conformant verifier.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title,\n };\n should.exist(verifier, 'Expected implementation to have a VC ' +\n 'HTTP API compatible verifier.');\n const {result, error} = await verifier.post({json: {\n verifiableCredential: issuedVc,\n options: {checks: ['proof']}\n }});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected verifier to return a result.');\n result.status.should.not.equal(400, 'Expected status code to not ' +\n 'be 400.');\n result.status.should.equal(200, 'Expected status code to be 200.');\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -14064,33 +13424,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "afHD67eaDEinS_JWzRU75", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "parent": "vZuDHO7WId2_T45x8vzs8", "ctx": null, - "_testId": "urn:uuid:7ef92dd6-12a7-4469-94d8-104b502af43c", - "cell": { - "columnId": "Digital Bazaar", - "rowId": "If the \"proof\" field is invalid, an error MUST be raised." - }, + "_testId": "urn:uuid:9e6357fa-8352-43e0-944c-ff47085cedd4", "_events": {}, "_eventsCount": 1, + "cell": { + "columnId": "OpSecId", + "rowId": "\"proof\" MUST verify when using a conformant verifier." + }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 25187, + "_idleStart": 15490, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 41, + "duration": 62, "state": "passed", "speed": "medium" }, { "type": "test", - "title": "If the \"proof.type\" field is missing, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('issuedVc');\n delete credential.proof.type;\n await verificationFail({credential, verifier});\n }", + "title": "\"proof\" MUST verify when using a conformant verifier.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title,\n };\n should.exist(verifier, 'Expected implementation to have a VC ' +\n 'HTTP API compatible verifier.');\n const {result, error} = await verifier.post({json: {\n verifiableCredential: issuedVc,\n options: {checks: ['proof']}\n }});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected verifier to return a result.');\n result.status.should.not.equal(400, 'Expected status code to not ' +\n 'be 400.');\n result.status.should.equal(200, 'Expected status code to be 200.');\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -14099,33 +13459,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "afHD67eaDEinS_JWzRU75", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "parent": "l1UmDE8ajVlZhMLSZMYbY", "ctx": null, - "_testId": "urn:uuid:3850ecbe-51bd-4817-9f4f-f3340ce91509", - "cell": { - "columnId": "Digital Bazaar", - "rowId": "If the \"proof.type\" field is missing, an error MUST be raised." - }, + "_testId": "urn:uuid:21613a61-14f9-4887-be7f-ea98b2b408e5", "_events": {}, "_eventsCount": 1, + "cell": { + "columnId": "SpruceID", + "rowId": "\"proof\" MUST verify when using a conformant verifier." + }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 25228, + "_idleStart": 15615, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 40, + "duration": 30, "state": "passed", - "speed": "medium" + "speed": "fast" }, { "type": "test", - "title": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('invalidProofType');\n await verificationFail({credential, verifier});\n }", + "title": "\"proof\" MUST verify when using a conformant verifier.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title,\n };\n should.exist(verifier, 'Expected implementation to have a VC ' +\n 'HTTP API compatible verifier.');\n const {result, error} = await verifier.post({json: {\n verifiableCredential: issuedVc,\n options: {checks: ['proof']}\n }});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected verifier to return a result.');\n result.status.should.not.equal(400, 'Expected status code to not ' +\n 'be 400.');\n result.status.should.equal(200, 'Expected status code to be 200.');\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -14134,33 +13494,46 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "afHD67eaDEinS_JWzRU75", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "parent": "C9n-oUnvsKV2x1TuLLHeR", "ctx": null, - "_testId": "urn:uuid:6a33a33c-b412-4ad9-9594-2ecb5db83b4e", - "cell": { - "columnId": "Digital Bazaar", - "rowId": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised." - }, + "_testId": "urn:uuid:8b47d832-e3d4-4d98-835b-58b1a48eed1b", "_events": {}, "_eventsCount": 1, + "cell": { + "columnId": "Trinsic", + "rowId": "\"proof\" MUST verify when using a conformant verifier." + }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 25268, + "_idleStart": 16231, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 39, + "duration": 1774, "state": "passed", - "speed": "medium" - }, + "speed": "slow" + } + ] + } + ] + }, + { + "title": "Data Integrity (verifier)", + "ctx": null, + "suites": [ + { + "title": "apicatalog.com", + "ctx": null, + "suites": [], + "tests": [ { "type": "test", - "title": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('noVm');\n await verificationFail({credential, verifier});\n }", + "title": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=When%20deserializing%20to%20RDF%2C%20implementations%20MUST%20ensure%20that%20the%20base%20URL%20is%20set%20to%20null.';\n const credential = credentials.clone('invalidBaseUrl');\n await verificationFail({\n credential,\n verifier,\n reason: 'Should not verify VC with invalid base URL'\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -14170,32 +13543,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "afHD67eaDEinS_JWzRU75", + "parent": "4lbuxdf6TSMBdUCatK9o7", "ctx": null, - "_testId": "urn:uuid:fdbfc512-7af6-472b-923c-3d9929f1e1e7", + "_testId": "urn:uuid:378753f4-492e-44b1-a84f-84eba55e55dc", "cell": { - "columnId": "Digital Bazaar", - "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." + "columnId": "apicatalog.com", + "rowId": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null." }, "_events": {}, "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=When%20deserializing%20to%20RDF%2C%20implementations%20MUST%20ensure%20that%20the%20base%20URL%20is%20set%20to%20null.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 25307, + "_idleStart": 18056, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 32, + "duration": 92, "state": "passed", - "speed": "fast" + "speed": "slow" }, { "type": "test", - "title": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('invalidVm');\n await verificationFail({credential, verifier});\n }", + "title": "Conforming processors MUST produce errors when non-conforming documents are consumed.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=Conforming%20processors%20MUST%20produce%20errors%20when%20non%2Dconforming%20documents%20are%20consumed.';\n // this could be read as testing all non-confirming docs or just one\n // for this test only one doc is tested as it should throw for any\n // non-conforming doc\n await verificationFail({\n credential: credentials.clone('invalidProofType'),\n verifier,\n reason: 'Should not verify VC with invalid \"proof.type\"'\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -14205,32 +13579,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "afHD67eaDEinS_JWzRU75", + "parent": "4lbuxdf6TSMBdUCatK9o7", "ctx": null, - "_testId": "urn:uuid:8c00d348-7a1d-427f-9c47-dd808941a3c6", + "_testId": "urn:uuid:c612e816-033e-4448-8ca5-a0913e21377d", "cell": { - "columnId": "Digital Bazaar", - "rowId": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised." + "columnId": "apicatalog.com", + "rowId": "Conforming processors MUST produce errors when non-conforming documents are consumed." }, "_events": {}, "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=Conforming%20processors%20MUST%20produce%20errors%20when%20non%2Dconforming%20documents%20are%20consumed.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 25339, + "_idleStart": 18149, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 41, + "duration": 61, "state": "passed", "speed": "medium" }, { "type": "test", - "title": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('noProofPurpose');\n await verificationFail({credential, verifier});\n }", + "title": "If the \"proof\" field is missing, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('issuedVc');\n delete credential.proof;\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -14240,12 +13615,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "afHD67eaDEinS_JWzRU75", + "parent": "4lbuxdf6TSMBdUCatK9o7", "ctx": null, - "_testId": "urn:uuid:046a101a-2f17-45f8-8993-76aeb24e5854", + "_testId": "urn:uuid:92110bb5-3a7f-4e7d-b366-eaf79dbfb278", "cell": { - "columnId": "Digital Bazaar", - "rowId": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised." + "columnId": "apicatalog.com", + "rowId": "If the \"proof\" field is missing, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, @@ -14253,19 +13628,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 25381, + "_idleStart": 18210, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 41, + "duration": 51, "state": "passed", "speed": "medium" }, { "type": "test", - "title": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('invalidProofPurpose');\n await verificationFail({credential, verifier});\n }", + "title": "If the \"proof\" field is invalid, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('issuedVc');\n credential.proof = null;\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -14275,12 +13650,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "afHD67eaDEinS_JWzRU75", + "parent": "4lbuxdf6TSMBdUCatK9o7", "ctx": null, - "_testId": "urn:uuid:9152faf6-f971-4d15-bda6-b7f8ade9c912", + "_testId": "urn:uuid:4e68e0f0-03c5-42b1-b46d-030d95f84cab", "cell": { - "columnId": "Digital Bazaar", - "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." + "columnId": "apicatalog.com", + "rowId": "If the \"proof\" field is invalid, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, @@ -14288,19 +13663,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 25422, + "_idleStart": 18261, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 39, + "duration": 53, "state": "passed", "speed": "medium" }, { "type": "test", - "title": "If expectedProofPurpose was given, and it does not match proof.proofPurpose, an error MUST be raised and SHOULD convey an error type of PROOF_VERIFICATION_ERROR.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#:~:text=If%20expectedProofPurpose%20was%20given%2C%20and%20it%20does%20not%20match%20proof.proofPurpose%2C%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_VERIFICATION_ERROR.';\n // NOTE: expectedProofPurpose should be specified by verifiers internally\n // it is very unlikely to be invalidProofPurpose\n await verificationFail({\n credential: credentials.clone('invalidProofPurpose'),\n verifier,\n reason: 'Verifier should reject VC with invalid proof purpose.'\n });\n }", + "title": "If the \"proof.type\" field is missing, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('issuedVc');\n delete credential.proof.type;\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -14310,33 +13685,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "afHD67eaDEinS_JWzRU75", + "parent": "4lbuxdf6TSMBdUCatK9o7", "ctx": null, - "_testId": "urn:uuid:653ba25e-dbfa-487b-ab1a-fd1a58c6d0b2", + "_testId": "urn:uuid:9ba1d9fa-a196-4d7a-90e4-c8c6707bc03d", "cell": { - "columnId": "Digital Bazaar", - "rowId": "If expectedProofPurpose was given, and it does not match proof.proofPurpose, an error MUST be raised and SHOULD convey an error type of PROOF_VERIFICATION_ERROR." + "columnId": "apicatalog.com", + "rowId": "If the \"proof.type\" field is missing, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#:~:text=If%20expectedProofPurpose%20was%20given%2C%20and%20it%20does%20not%20match%20proof.proofPurpose%2C%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_VERIFICATION_ERROR.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 25462, + "_idleStart": 18313, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 38, + "duration": 50, "state": "passed", "speed": "medium" }, { "type": "test", - "title": "The proofValue property MUST be used, as specified in 2.1 Proofs.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20proofValue%20property%20MUST%20be%20used%2C%20as%20specified%20in%202.1%20Proofs.';\n await proofValueTests;\n }", + "title": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('invalidProofType');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -14346,33 +13720,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "afHD67eaDEinS_JWzRU75", + "parent": "4lbuxdf6TSMBdUCatK9o7", "ctx": null, - "_testId": "urn:uuid:4bb0f2c1-1f12-4fec-8543-0acad01e6320", + "_testId": "urn:uuid:41eb2c0d-7d39-4d3a-a9b5-b16edbcffa10", "cell": { - "columnId": "Digital Bazaar", - "rowId": "The proofValue property MUST be used, as specified in 2.1 Proofs." + "columnId": "apicatalog.com", + "rowId": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20proofValue%20property%20MUST%20be%20used%2C%20as%20specified%20in%202.1%20Proofs.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 25500, + "_idleStart": 18364, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 57, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof';\n await proofValueTests;\n }", + "title": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('noVm');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -14382,33 +13755,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "afHD67eaDEinS_JWzRU75", + "parent": "4lbuxdf6TSMBdUCatK9o7", "ctx": null, - "_testId": "urn:uuid:f2772284-192f-41a7-8b8d-f219c2ed80ab", + "_testId": "urn:uuid:f4c7c8c7-07ec-4bdc-96f8-73f1476e4bc6", "cell": { - "columnId": "Digital Bazaar", - "rowId": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification." + "columnId": "apicatalog.com", + "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 25501, + "_idleStart": 18421, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 43, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.';\n await verificationFail({\n credential: credentials.clone('undefinedTerm'),\n verifier,\n reason: 'Should fail to verify VC when data is dropped by JSON-LD'\n });\n const undefinedTerm = credentials.clone('issuedVc');\n undefinedTerm.credentialSubject.undefinedTerm = 'IfDroppedWillVerify';\n await verificationFail({\n credential: undefinedTerm,\n verifier,\n reason: 'Should fail to verify VC if an undefined term is added ' +\n 'after issuance.'\n });\n const undefinedType = credentials.clone('issuedVc');\n undefinedType.type.push('UndefinedType');\n await verificationFail({\n credential: undefinedType,\n verifier,\n reason: 'Should fail to verify VC if an undefined type is added ' +\n 'after issuance.'\n });\n }", + "title": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('invalidVm');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -14418,33 +13790,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "afHD67eaDEinS_JWzRU75", + "parent": "4lbuxdf6TSMBdUCatK9o7", "ctx": null, - "_testId": "urn:uuid:62681695-9f23-4e30-a997-a7aaccf4d226", + "_testId": "urn:uuid:9ffee054-c021-44b1-a12a-3a33facf6b14", "cell": { - "columnId": "Digital Bazaar", - "rowId": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document." + "columnId": "apicatalog.com", + "rowId": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 25501, + "_idleStart": 18464, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 129, + "duration": 116, "state": "passed", "speed": "slow" }, { "type": "test", - "title": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC';\n const credential = credentials.clone('invalidCreated');\n await verificationFail({credential, verifier});\n }", + "title": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('noProofPurpose');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -14454,33 +13825,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "afHD67eaDEinS_JWzRU75", + "parent": "4lbuxdf6TSMBdUCatK9o7", "ctx": null, - "_testId": "urn:uuid:c590d8bb-a741-43b4-aa4a-5e6188e033de", + "_testId": "urn:uuid:b728b270-bf9b-438e-9cd6-66c8e0228740", "cell": { - "columnId": "Digital Bazaar", - "rowId": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." + "columnId": "apicatalog.com", + "rowId": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 25629, + "_idleStart": 18580, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 48, + "duration": 41, "state": "passed", "speed": "medium" }, { "type": "test", - "title": "The value of the cryptosuite property MUST be a string that identifies the cryptographic suite. If the processing environment supports subtypes of string, the type of the cryptosuite value MUST be the https://w3id.org/security#cryptosuiteString subtype of string.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=The%20value%20of%20the%20cryptosuite%20property%20MUST%20be%20a%20string%20that%20identifies%20the%20cryptographic%20suite.%20If%20the%20processing%20environment%20supports%20subtypes%20of%20string%2C%20the%20type%20of%20the%20cryptosuite%20value%20MUST%20be%20the%20https%3A//w3id.org/security%23cryptosuiteString%20subtype%20of%20string.';\n const credential = credentials.clone('invalidCryptosuite');\n await verificationFail({credential, verifier});\n }", + "title": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('invalidProofPurpose');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -14490,33 +13860,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "afHD67eaDEinS_JWzRU75", + "parent": "4lbuxdf6TSMBdUCatK9o7", "ctx": null, - "_testId": "urn:uuid:0c15d388-ce29-4a49-afb3-bd491b4de810", + "_testId": "urn:uuid:9ce1fb4d-cdf2-457d-965f-da9ba12e64fc", "cell": { - "columnId": "Digital Bazaar", - "rowId": "The value of the cryptosuite property MUST be a string that identifies the cryptographic suite. If the processing environment supports subtypes of string, the type of the cryptosuite value MUST be the https://w3id.org/security#cryptosuiteString subtype of string." + "columnId": "apicatalog.com", + "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#introduction:~:text=The%20value%20of%20the%20cryptosuite%20property%20MUST%20be%20a%20string%20that%20identifies%20the%20cryptographic%20suite.%20If%20the%20processing%20environment%20supports%20subtypes%20of%20string%2C%20the%20type%20of%20the%20cryptosuite%20value%20MUST%20be%20the%20https%3A//w3id.org/security%23cryptosuiteString%20subtype%20of%20string.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 25678, + "_idleStart": 18622, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 45, + "duration": 49, "state": "passed", "speed": "medium" }, { "type": "test", - "title": "If options has a non-null domain item, it MUST be equal to proof.domain or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=If%20options%20has%20a%20non%2Dnull%20domain%20item%2C%20it%20MUST%20be%20equal%20to%20proof.domain%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.';\n const credential = credentials.clone('invalidDomain');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example'\n }\n });\n }", + "title": "If expectedProofPurpose was given, and it does not match proof.proofPurpose, an error MUST be raised and SHOULD convey an error type of PROOF_VERIFICATION_ERROR.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#:~:text=If%20expectedProofPurpose%20was%20given%2C%20and%20it%20does%20not%20match%20proof.proofPurpose%2C%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_VERIFICATION_ERROR.';\n // NOTE: expectedProofPurpose should be specified by verifiers internally\n // it is very unlikely to be invalidProofPurpose\n await verificationFail({\n credential: credentials.clone('invalidProofPurpose'),\n verifier,\n reason: 'Verifier should reject VC with invalid proof purpose.'\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -14526,33 +13895,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "afHD67eaDEinS_JWzRU75", + "parent": "4lbuxdf6TSMBdUCatK9o7", "ctx": null, - "_testId": "urn:uuid:964c0323-eb03-436f-8fd0-429cf7f3934e", + "_testId": "urn:uuid:29280216-24af-4b13-92c7-ff0c6268a9a5", "cell": { - "columnId": "Digital Bazaar", - "rowId": "If options has a non-null domain item, it MUST be equal to proof.domain or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR." + "columnId": "apicatalog.com", + "rowId": "If expectedProofPurpose was given, and it does not match proof.proofPurpose, an error MUST be raised and SHOULD convey an error type of PROOF_VERIFICATION_ERROR." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=If%20options%20has%20a%20non%2Dnull%20domain%20item%2C%20it%20MUST%20be%20equal%20to%20proof.domain%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.", + "link": "https://w3c.github.io/vc-data-integrity/#:~:text=If%20expectedProofPurpose%20was%20given%2C%20and%20it%20does%20not%20match%20proof.proofPurpose%2C%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_VERIFICATION_ERROR.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 25723, + "_idleStart": 18671, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 40, + "duration": 65, "state": "passed", "speed": "medium" }, { "type": "test", - "title": "If options has a non-null challenge item, it MUST be equal to proof.challenge or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#add-proof:~:text=If%20options%20has%20a%20non%2Dnull%20challenge%20item%2C%20it%20MUST%20be%20equal%20to%20proof.challenge%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.';\n const credential = credentials.clone('invalidChallenge');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example',\n challenge: '1235abcd6789'\n }\n });\n }", + "title": "The proofValue property MUST be used, as specified in 2.1 Proofs.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20proofValue%20property%20MUST%20be%20used%2C%20as%20specified%20in%202.1%20Proofs.';\n await proofValueTests;\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -14562,33 +13931,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "afHD67eaDEinS_JWzRU75", + "parent": "4lbuxdf6TSMBdUCatK9o7", "ctx": null, - "_testId": "urn:uuid:ab078991-b544-48d4-91ec-4b6abd3fa151", + "_testId": "urn:uuid:b09a6c2d-8830-4622-b74f-a8a923b32b29", "cell": { - "columnId": "Digital Bazaar", - "rowId": "If options has a non-null challenge item, it MUST be equal to proof.challenge or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR." + "columnId": "apicatalog.com", + "rowId": "The proofValue property MUST be used, as specified in 2.1 Proofs." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#add-proof:~:text=If%20options%20has%20a%20non%2Dnull%20challenge%20item%2C%20it%20MUST%20be%20equal%20to%20proof.challenge%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.", + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20proofValue%20property%20MUST%20be%20used%2C%20as%20specified%20in%202.1%20Proofs.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 25763, + "_idleStart": 18735, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 50, + "duration": 0, "state": "passed", - "speed": "medium" + "speed": "fast" }, { "type": "test", - "title": "(created) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset.", - "body": "async function() {\n this.test.link = 'https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=be%20a%20string.-,created,-The%20date%20and';\n await verificationFail({\n credential: credentials.clone('noOffsetCreated'),\n verifier\n });\n }", + "title": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof';\n await proofValueTests;\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -14598,33 +13967,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "afHD67eaDEinS_JWzRU75", + "parent": "4lbuxdf6TSMBdUCatK9o7", "ctx": null, - "_testId": "urn:uuid:b3a81327-c1c0-461f-b9cb-aee31a019f59", + "_testId": "urn:uuid:0e9af8dd-c8aa-4836-84e1-6c0227b68892", "cell": { - "columnId": "Digital Bazaar", - "rowId": "(created) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." + "columnId": "apicatalog.com", + "rowId": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification." }, "_events": {}, "_eventsCount": 1, - "link": "https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=be%20a%20string.-,created,-The%20date%20and", + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 25814, + "_idleStart": 18736, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 44, + "duration": 0, "state": "passed", - "speed": "medium" + "speed": "fast" }, { "type": "test", - "title": "(expires) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset.", - "body": "async function() {\n this.test.link = 'https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=interpreted%20as%20UTC.-,expires,-The%20expires%20property';\n await verificationFail({\n credential: credentials.clone('noOffsetExpires'),\n verifier\n });\n }", + "title": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.';\n await verificationFail({\n credential: credentials.clone('undefinedTerm'),\n verifier,\n reason: 'Should fail to verify VC when data is dropped by JSON-LD'\n });\n const undefinedTerm = credentials.clone('issuedVc');\n undefinedTerm.credentialSubject.undefinedTerm = 'IfDroppedWillVerify';\n await verificationFail({\n credential: undefinedTerm,\n verifier,\n reason: 'Should fail to verify VC if an undefined term is added ' +\n 'after issuance.'\n });\n const undefinedType = credentials.clone('issuedVc');\n undefinedType.type.push('UndefinedType');\n await verificationFail({\n credential: undefinedType,\n verifier,\n reason: 'Should fail to verify VC if an undefined type is added ' +\n 'after issuance.'\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -14634,37 +14003,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "afHD67eaDEinS_JWzRU75", + "parent": "4lbuxdf6TSMBdUCatK9o7", "ctx": null, - "_testId": "urn:uuid:77919a5d-f694-4f1e-bf34-851df1f2e750", + "_testId": "urn:uuid:4d43e6b7-b8ef-4810-a6bc-a8af1760e2dd", "cell": { - "columnId": "Digital Bazaar", - "rowId": "(expires) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." + "columnId": "apicatalog.com", + "rowId": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document." }, "_events": {}, "_eventsCount": 1, - "link": "https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=interpreted%20as%20UTC.-,expires,-The%20expires%20property", + "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 25858, + "_idleStart": 18736, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 43, + "duration": 154, "state": "passed", - "speed": "medium" - } - ], - "root": false, - "pending": false, - "_retries": -1, - "_beforeEach": [ + "speed": "slow" + }, { - "title": "\"before each\" hook in \"Digital Bazaar\"", - "body": "function() {\n this.currentTest.cell = {\n columnId: testDescription,\n rowId: this.currentTest.title\n };\n }", + "type": "test", + "title": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC';\n const credential = credentials.clone('invalidCreated');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -14673,21 +14038,34 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "type": "hook", - "parent": "afHD67eaDEinS_JWzRU75", - "ctx": null, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "originalTitle": "\"before each\" hook", + "parent": "4lbuxdf6TSMBdUCatK9o7", + "ctx": null, + "_testId": "urn:uuid:c45c4b2b-30f1-45e9-af6b-d4c7a9e63dd2", + "cell": { + "columnId": "apicatalog.com", + "rowId": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." + }, "_events": {}, "_eventsCount": 1, - "duration": 0, - "_error": null - } - ], - "_beforeAll": [ + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC", + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 18890, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 40, + "state": "passed", + "speed": "medium" + }, { - "title": "\"before all\" hook in \"Digital Bazaar\"", - "body": "async function() {\n proofValueTests = shouldBeProofValue({credentials, verifier});\n }", + "type": "test", + "title": "The value of the cryptosuite property MUST be a string that identifies the cryptographic suite. If the processing environment supports subtypes of string, the type of the cryptosuite value MUST be the https://w3id.org/security#cryptosuiteString subtype of string.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=The%20value%20of%20the%20cryptosuite%20property%20MUST%20be%20a%20string%20that%20identifies%20the%20cryptographic%20suite.%20If%20the%20processing%20environment%20supports%20subtypes%20of%20string%2C%20the%20type%20of%20the%20cryptosuite%20value%20MUST%20be%20the%20https%3A//w3id.org/security%23cryptosuiteString%20subtype%20of%20string.';\n const credential = credentials.clone('invalidCryptosuite');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -14696,40 +14074,247 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "type": "hook", - "parent": "afHD67eaDEinS_JWzRU75", - "ctx": null, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "originalTitle": "\"before all\" hook", + "parent": "4lbuxdf6TSMBdUCatK9o7", + "ctx": null, + "_testId": "urn:uuid:020baa7e-b321-4d34-870e-378cc1918572", + "cell": { + "columnId": "apicatalog.com", + "rowId": "The value of the cryptosuite property MUST be a string that identifies the cryptographic suite. If the processing environment supports subtypes of string, the type of the cryptosuite value MUST be the https://w3id.org/security#cryptosuiteString subtype of string." + }, "_events": {}, "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#introduction:~:text=The%20value%20of%20the%20cryptosuite%20property%20MUST%20be%20a%20string%20that%20identifies%20the%20cryptographic%20suite.%20If%20the%20processing%20environment%20supports%20subtypes%20of%20string%2C%20the%20type%20of%20the%20cryptosuite%20value%20MUST%20be%20the%20https%3A//w3id.org/security%23cryptosuiteString%20subtype%20of%20string.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 24148, + "_idleStart": 18930, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 1, - "_error": null - } - ], - "_afterEach": [], - "_afterAll": [], - "_timeout": 15000, - "_slow": 75, - "_bail": false, - "_onlyTests": [], - "_onlySuites": [], - "delayed": false, - "parent": "lrXQsY_PzSL1o2oHNu-HO", - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "_testId": "urn:uuid:61bb7a34-f1b2-41c7-a156-d5ad2630c68a" - }, - { - "title": "EWF", + "duration": 48, + "state": "passed", + "speed": "medium" + }, + { + "type": "test", + "title": "If options has a non-null domain item, it MUST be equal to proof.domain or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=If%20options%20has%20a%20non%2Dnull%20domain%20item%2C%20it%20MUST%20be%20equal%20to%20proof.domain%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.';\n const credential = credentials.clone('invalidDomain');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example'\n }\n });\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "4lbuxdf6TSMBdUCatK9o7", + "ctx": null, + "_testId": "urn:uuid:dbde9073-27ad-4b7d-be43-b03941c6c53a", + "cell": { + "columnId": "apicatalog.com", + "rowId": "If options has a non-null domain item, it MUST be equal to proof.domain or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR." + }, + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=If%20options%20has%20a%20non%2Dnull%20domain%20item%2C%20it%20MUST%20be%20equal%20to%20proof.domain%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.", + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 18979, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 48, + "state": "passed", + "speed": "medium" + }, + { + "type": "test", + "title": "If options has a non-null challenge item, it MUST be equal to proof.challenge or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#add-proof:~:text=If%20options%20has%20a%20non%2Dnull%20challenge%20item%2C%20it%20MUST%20be%20equal%20to%20proof.challenge%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.';\n const credential = credentials.clone('invalidChallenge');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example',\n challenge: '1235abcd6789'\n }\n });\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "4lbuxdf6TSMBdUCatK9o7", + "ctx": null, + "_testId": "urn:uuid:699707d0-7fd8-46b7-a171-89e4e4a5b6fb", + "cell": { + "columnId": "apicatalog.com", + "rowId": "If options has a non-null challenge item, it MUST be equal to proof.challenge or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR." + }, + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#add-proof:~:text=If%20options%20has%20a%20non%2Dnull%20challenge%20item%2C%20it%20MUST%20be%20equal%20to%20proof.challenge%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.", + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 19027, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 44, + "state": "passed", + "speed": "medium" + }, + { + "type": "test", + "title": "(created) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset.", + "body": "async function() {\n this.test.link = 'https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=be%20a%20string.-,created,-The%20date%20and';\n await verificationFail({\n credential: credentials.clone('noOffsetCreated'),\n verifier\n });\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "4lbuxdf6TSMBdUCatK9o7", + "ctx": null, + "_testId": "urn:uuid:4e4e976f-a73f-4d45-bc7c-8936cae5ecad", + "cell": { + "columnId": "apicatalog.com", + "rowId": "(created) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." + }, + "_events": {}, + "_eventsCount": 1, + "link": "https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=be%20a%20string.-,created,-The%20date%20and", + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 19071, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 54, + "state": "passed", + "speed": "medium" + }, + { + "type": "test", + "title": "(expires) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset.", + "body": "async function() {\n this.test.link = 'https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=interpreted%20as%20UTC.-,expires,-The%20expires%20property';\n await verificationFail({\n credential: credentials.clone('noOffsetExpires'),\n verifier\n });\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "4lbuxdf6TSMBdUCatK9o7", + "ctx": null, + "_testId": "urn:uuid:cb45aec3-228d-4adc-b530-f6cce7106e3c", + "cell": { + "columnId": "apicatalog.com", + "rowId": "(expires) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." + }, + "_events": {}, + "_eventsCount": 1, + "link": "https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=interpreted%20as%20UTC.-,expires,-The%20expires%20property", + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 19125, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 42, + "state": "passed", + "speed": "medium" + } + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [ + { + "title": "\"before each\" hook in \"apicatalog.com\"", + "body": "function() {\n this.currentTest.cell = {\n columnId: testDescription,\n rowId: this.currentTest.title\n };\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "type": "hook", + "parent": "4lbuxdf6TSMBdUCatK9o7", + "ctx": null, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "originalTitle": "\"before each\" hook", + "_events": {}, + "_eventsCount": 1, + "duration": 0, + "_error": null + } + ], + "_beforeAll": [ + { + "title": "\"before all\" hook in \"apicatalog.com\"", + "body": "async function() {\n proofValueTests = shouldBeProofValue({credentials, verifier});\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "type": "hook", + "parent": "4lbuxdf6TSMBdUCatK9o7", + "ctx": null, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "originalTitle": "\"before all\" hook", + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 18054, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 1, + "_error": null + } + ], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "KaZqTHEME9mQyu_xdGoIA", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "_testId": "urn:uuid:bbe93f35-5d0d-4475-853d-5733544d08d3" + }, + { + "title": "Danube Tech", "ctx": null, "suites": [], "tests": [ @@ -14746,11 +14331,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "WiCTAagC6srf5khQKfvNc", + "parent": "m-95LkeEjgnUOl8RA2_qH", "ctx": null, - "_testId": "urn:uuid:5f4986a5-f056-46c5-89b7-c00e7c043ab8", + "_testId": "urn:uuid:3fadbf7c-2a30-4854-8caf-00752b3d8c8c", "cell": { - "columnId": "EWF", + "columnId": "Danube Tech", "rowId": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null." }, "_events": {}, @@ -14760,12 +14345,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 25902, + "_idleStart": 19170, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 360, + "duration": 1036, "state": "passed", "speed": "slow" }, @@ -14782,11 +14367,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "WiCTAagC6srf5khQKfvNc", + "parent": "m-95LkeEjgnUOl8RA2_qH", "ctx": null, - "_testId": "urn:uuid:8a082ea3-1f3a-447a-af4b-06bb7257276f", + "_testId": "urn:uuid:0e42fa7a-76ae-4035-9e15-e7b7b98f95d9", "cell": { - "columnId": "EWF", + "columnId": "Danube Tech", "rowId": "Conforming processors MUST produce errors when non-conforming documents are consumed." }, "_events": {}, @@ -14796,12 +14381,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 26263, + "_idleStart": 20206, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 86, + "duration": 220, "state": "passed", "speed": "slow" }, @@ -14818,11 +14403,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "WiCTAagC6srf5khQKfvNc", + "parent": "m-95LkeEjgnUOl8RA2_qH", "ctx": null, - "_testId": "urn:uuid:d9adee30-d4ff-4728-84ec-fb5d48890270", + "_testId": "urn:uuid:cc3710e1-b6b3-4a41-8cca-7e990952a1c3", "cell": { - "columnId": "EWF", + "columnId": "Danube Tech", "rowId": "If the \"proof\" field is missing, an error MUST be raised." }, "_events": {}, @@ -14831,12 +14416,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 26350, + "_idleStart": 20426, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 86, + "duration": 546, "state": "passed", "speed": "slow" }, @@ -14853,11 +14438,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "WiCTAagC6srf5khQKfvNc", + "parent": "m-95LkeEjgnUOl8RA2_qH", "ctx": null, - "_testId": "urn:uuid:84ab822d-6548-4336-a9e8-2c11f2af2deb", + "_testId": "urn:uuid:e620e4de-d51f-41a2-a225-1c82a700bb1b", "cell": { - "columnId": "EWF", + "columnId": "Danube Tech", "rowId": "If the \"proof\" field is invalid, an error MUST be raised." }, "_events": {}, @@ -14866,12 +14451,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 26435, + "_idleStart": 20973, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 88, + "duration": 533, "state": "passed", "speed": "slow" }, @@ -14888,11 +14473,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "WiCTAagC6srf5khQKfvNc", + "parent": "m-95LkeEjgnUOl8RA2_qH", "ctx": null, - "_testId": "urn:uuid:4b9e48e2-27d4-4c43-85f7-0268fe4b7452", + "_testId": "urn:uuid:9adfde5a-09cf-4e88-98b7-9184293b5adc", "cell": { - "columnId": "EWF", + "columnId": "Danube Tech", "rowId": "If the \"proof.type\" field is missing, an error MUST be raised." }, "_events": {}, @@ -14901,12 +14486,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 26523, + "_idleStart": 21507, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 87, + "duration": 222, "state": "passed", "speed": "slow" }, @@ -14923,11 +14508,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "WiCTAagC6srf5khQKfvNc", + "parent": "m-95LkeEjgnUOl8RA2_qH", "ctx": null, - "_testId": "urn:uuid:579141f4-f3c6-4dfd-9d1b-7b7f894bf79d", + "_testId": "urn:uuid:52b9762f-7b7c-48e0-becc-267a1d57334b", "cell": { - "columnId": "EWF", + "columnId": "Danube Tech", "rowId": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised." }, "_events": {}, @@ -14936,12 +14521,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 26610, + "_idleStart": 21730, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 85, + "duration": 220, "state": "passed", "speed": "slow" }, @@ -14958,11 +14543,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "WiCTAagC6srf5khQKfvNc", + "parent": "m-95LkeEjgnUOl8RA2_qH", "ctx": null, - "_testId": "urn:uuid:9c4781d7-4376-45cf-9cf0-fd5f64610b4b", + "_testId": "urn:uuid:122302c7-fb73-44e1-a20e-ce40ad31caad", "cell": { - "columnId": "EWF", + "columnId": "Danube Tech", "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." }, "_events": {}, @@ -14971,14 +14556,20 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 26696, + "_idleStart": 21950, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 87, - "state": "passed", - "speed": "slow" + "duration": 104, + "state": "failed", + "err": { + "name": "AssertionError", + "message": "Expected \"response.status\" to exist.: expected undefined to exist", + "showDiff": false, + "operator": "strictEqual", + "stack": "AssertionError: Expected \"response.status\" to exist.: expected undefined to exist\n at should.exist (node_modules/chai/lib/chai/interface/should.js:144:34)\n at shouldBeErrorResponse (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:240:10)\n at verificationFail (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:51:3)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/verify.js:81:7)" + } }, { "type": "test", @@ -14993,11 +14584,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "WiCTAagC6srf5khQKfvNc", + "parent": "m-95LkeEjgnUOl8RA2_qH", "ctx": null, - "_testId": "urn:uuid:38ec7dcd-52c3-420c-b527-602aeb6c13d3", + "_testId": "urn:uuid:89c9614d-9e09-415f-bbad-c453a1184c0c", "cell": { - "columnId": "EWF", + "columnId": "Danube Tech", "rowId": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised." }, "_events": {}, @@ -15006,12 +14597,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 26783, + "_idleStart": 22055, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 84, + "duration": 647, "state": "passed", "speed": "slow" }, @@ -15028,11 +14619,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "WiCTAagC6srf5khQKfvNc", + "parent": "m-95LkeEjgnUOl8RA2_qH", "ctx": null, - "_testId": "urn:uuid:2fc411d0-2904-4fac-bf8f-79707b6851a6", + "_testId": "urn:uuid:02009654-075d-4760-855c-d72cda8db368", "cell": { - "columnId": "EWF", + "columnId": "Danube Tech", "rowId": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised." }, "_events": {}, @@ -15041,12 +14632,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 26867, + "_idleStart": 22703, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 90, + "duration": 647, "state": "passed", "speed": "slow" }, @@ -15063,11 +14654,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "WiCTAagC6srf5khQKfvNc", + "parent": "m-95LkeEjgnUOl8RA2_qH", "ctx": null, - "_testId": "urn:uuid:7032ecb6-db6e-4be1-8318-fd0a2b8b5bb0", + "_testId": "urn:uuid:bef42972-6bd7-4a93-ad7a-73a16a03e77f", "cell": { - "columnId": "EWF", + "columnId": "Danube Tech", "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." }, "_events": {}, @@ -15076,12 +14667,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 26957, + "_idleStart": 23350, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 87, + "duration": 225, "state": "passed", "speed": "slow" }, @@ -15098,11 +14689,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "WiCTAagC6srf5khQKfvNc", + "parent": "m-95LkeEjgnUOl8RA2_qH", "ctx": null, - "_testId": "urn:uuid:3b08d6dd-73dc-4239-b19b-ed05d25d28cb", + "_testId": "urn:uuid:e288d3ce-f7f1-4341-9806-fc3f64afa9f0", "cell": { - "columnId": "EWF", + "columnId": "Danube Tech", "rowId": "If expectedProofPurpose was given, and it does not match proof.proofPurpose, an error MUST be raised and SHOULD convey an error type of PROOF_VERIFICATION_ERROR." }, "_events": {}, @@ -15112,12 +14703,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 27044, + "_idleStart": 23575, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 85, + "duration": 221, "state": "passed", "speed": "slow" }, @@ -15134,11 +14725,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "WiCTAagC6srf5khQKfvNc", + "parent": "m-95LkeEjgnUOl8RA2_qH", "ctx": null, - "_testId": "urn:uuid:5e229bbf-ca44-4c40-8621-f5f08e8f0dd6", + "_testId": "urn:uuid:b626214e-708a-4253-abe0-1465aa49c001", "cell": { - "columnId": "EWF", + "columnId": "Danube Tech", "rowId": "The proofValue property MUST be used, as specified in 2.1 Proofs." }, "_events": {}, @@ -15148,7 +14739,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 27129, + "_idleStart": 23795, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -15170,11 +14761,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "WiCTAagC6srf5khQKfvNc", + "parent": "m-95LkeEjgnUOl8RA2_qH", "ctx": null, - "_testId": "urn:uuid:ac056cc5-626e-4913-96b8-78708b199ae2", + "_testId": "urn:uuid:c70f5484-d04c-4cb7-b593-6c6c128ac2a2", "cell": { - "columnId": "EWF", + "columnId": "Danube Tech", "rowId": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification." }, "_events": {}, @@ -15184,7 +14775,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 27129, + "_idleStart": 23796, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -15206,11 +14797,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "WiCTAagC6srf5khQKfvNc", + "parent": "m-95LkeEjgnUOl8RA2_qH", "ctx": null, - "_testId": "urn:uuid:5af49b65-a51b-419d-86e0-3775cadd3c4a", + "_testId": "urn:uuid:c55db6ac-9f59-4c86-a003-db5c6daba9ba", "cell": { - "columnId": "EWF", + "columnId": "Danube Tech", "rowId": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document." }, "_events": {}, @@ -15220,12 +14811,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 27130, + "_idleStart": 23796, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 285, + "duration": 665, "state": "passed", "speed": "slow" }, @@ -15242,11 +14833,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "WiCTAagC6srf5khQKfvNc", + "parent": "m-95LkeEjgnUOl8RA2_qH", "ctx": null, - "_testId": "urn:uuid:ff8197a3-18cf-46df-bc89-92a6f7c3727f", + "_testId": "urn:uuid:14838ffe-e632-4ad9-aa97-365ce962e9de", "cell": { - "columnId": "EWF", + "columnId": "Danube Tech", "rowId": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." }, "_events": {}, @@ -15256,12 +14847,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 27415, + "_idleStart": 24461, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 85, + "duration": 654, "state": "passed", "speed": "slow" }, @@ -15278,11 +14869,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "WiCTAagC6srf5khQKfvNc", + "parent": "m-95LkeEjgnUOl8RA2_qH", "ctx": null, - "_testId": "urn:uuid:b8911032-6d3f-48dc-906c-463290be8765", + "_testId": "urn:uuid:b52a3c26-df64-4a2f-a274-28d996f6a382", "cell": { - "columnId": "EWF", + "columnId": "Danube Tech", "rowId": "The value of the cryptosuite property MUST be a string that identifies the cryptographic suite. If the processing environment supports subtypes of string, the type of the cryptosuite value MUST be the https://w3id.org/security#cryptosuiteString subtype of string." }, "_events": {}, @@ -15292,12 +14883,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 27501, + "_idleStart": 25115, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 88, + "duration": 653, "state": "passed", "speed": "slow" }, @@ -15314,11 +14905,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "WiCTAagC6srf5khQKfvNc", + "parent": "m-95LkeEjgnUOl8RA2_qH", "ctx": null, - "_testId": "urn:uuid:1a803004-51a6-4e47-aba1-e56cf47ec230", + "_testId": "urn:uuid:4df582bc-92a2-485f-a446-f7a9e1e198a6", "cell": { - "columnId": "EWF", + "columnId": "Danube Tech", "rowId": "If options has a non-null domain item, it MUST be equal to proof.domain or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR." }, "_events": {}, @@ -15328,12 +14919,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 27589, + "_idleStart": 25769, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 86, + "duration": 646, "state": "passed", "speed": "slow" }, @@ -15350,11 +14941,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "WiCTAagC6srf5khQKfvNc", + "parent": "m-95LkeEjgnUOl8RA2_qH", "ctx": null, - "_testId": "urn:uuid:96f52d57-7be6-4bf3-8063-e8ec4e8f4f84", + "_testId": "urn:uuid:79c408d5-7613-4aee-a1f4-ba99ba2c4d2a", "cell": { - "columnId": "EWF", + "columnId": "Danube Tech", "rowId": "If options has a non-null challenge item, it MUST be equal to proof.challenge or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR." }, "_events": {}, @@ -15364,12 +14955,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 27675, + "_idleStart": 26415, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 86, + "duration": 649, "state": "passed", "speed": "slow" }, @@ -15386,11 +14977,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "WiCTAagC6srf5khQKfvNc", + "parent": "m-95LkeEjgnUOl8RA2_qH", "ctx": null, - "_testId": "urn:uuid:697f87f3-bd7b-42a5-93c9-18074eb27638", + "_testId": "urn:uuid:fdc330d6-c64b-4c1c-adf3-58267696b1c2", "cell": { - "columnId": "EWF", + "columnId": "Danube Tech", "rowId": "(created) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." }, "_events": {}, @@ -15400,12 +14991,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 27762, + "_idleStart": 27064, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 86, + "duration": 651, "state": "passed", "speed": "slow" }, @@ -15422,11 +15013,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "WiCTAagC6srf5khQKfvNc", + "parent": "m-95LkeEjgnUOl8RA2_qH", "ctx": null, - "_testId": "urn:uuid:7053ec89-67ac-4c79-ad2b-1236b16f198d", + "_testId": "urn:uuid:a254b769-8c1c-4ea6-9899-38e374be2f0e", "cell": { - "columnId": "EWF", + "columnId": "Danube Tech", "rowId": "(expires) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." }, "_events": {}, @@ -15436,12 +15027,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 27847, + "_idleStart": 27715, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 86, + "duration": 693, "state": "passed", "speed": "slow" } @@ -15451,7 +15042,7 @@ "_retries": -1, "_beforeEach": [ { - "title": "\"before each\" hook in \"EWF\"", + "title": "\"before each\" hook in \"Danube Tech\"", "body": "function() {\n this.currentTest.cell = {\n columnId: testDescription,\n rowId: this.currentTest.title\n };\n }", "async": 0, "sync": true, @@ -15462,7 +15053,7 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "WiCTAagC6srf5khQKfvNc", + "parent": "m-95LkeEjgnUOl8RA2_qH", "ctx": null, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", "originalTitle": "\"before each\" hook", @@ -15474,7 +15065,7 @@ ], "_beforeAll": [ { - "title": "\"before all\" hook in \"EWF\"", + "title": "\"before all\" hook in \"Danube Tech\"", "body": "async function() {\n proofValueTests = shouldBeProofValue({credentials, verifier});\n }", "async": 0, "sync": true, @@ -15485,7 +15076,7 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "WiCTAagC6srf5khQKfvNc", + "parent": "m-95LkeEjgnUOl8RA2_qH", "ctx": null, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", "originalTitle": "\"before all\" hook", @@ -15495,12 +15086,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 25901, + "_idleStart": 19168, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 1, "_error": null } ], @@ -15512,12 +15103,12 @@ "_onlyTests": [], "_onlySuites": [], "delayed": false, - "parent": "lrXQsY_PzSL1o2oHNu-HO", + "parent": "KaZqTHEME9mQyu_xdGoIA", "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "_testId": "urn:uuid:9804935a-0e10-4be1-8008-3cbdc7843c63" + "_testId": "urn:uuid:1d9a2494-92af-4737-94ce-396f6ff97f9f" }, { - "title": "LearnCard", + "title": "Digital Bazaar", "ctx": null, "suites": [], "tests": [ @@ -15534,11 +15125,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "fzukTmGunqgrw1pwPErT7", + "parent": "vjCbcL73Y3Hj-3-3Vt2xr", "ctx": null, - "_testId": "urn:uuid:80528bdb-5dab-43a3-9a7b-857973b28100", + "_testId": "urn:uuid:e9153cde-f129-42a8-a792-7ba38f933f23", "cell": { - "columnId": "LearnCard", + "columnId": "Digital Bazaar", "rowId": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null." }, "_events": {}, @@ -15548,12 +15139,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 27935, + "_idleStart": 28416, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 188, + "duration": 200, "state": "passed", "speed": "slow" }, @@ -15570,11 +15161,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "fzukTmGunqgrw1pwPErT7", + "parent": "vjCbcL73Y3Hj-3-3Vt2xr", "ctx": null, - "_testId": "urn:uuid:c1c09704-5853-4ca7-beaf-d0faccc70aa4", + "_testId": "urn:uuid:603e4317-4469-41b5-8684-f1c7bc78b2af", "cell": { - "columnId": "LearnCard", + "columnId": "Digital Bazaar", "rowId": "Conforming processors MUST produce errors when non-conforming documents are consumed." }, "_events": {}, @@ -15584,14 +15175,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 28124, + "_idleStart": 28616, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 8695, + "duration": 49, "state": "passed", - "speed": "slow" + "speed": "medium" }, { "type": "test", @@ -15606,11 +15197,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "fzukTmGunqgrw1pwPErT7", + "parent": "vjCbcL73Y3Hj-3-3Vt2xr", "ctx": null, - "_testId": "urn:uuid:8a489943-036f-46c8-a70b-cab950c389ab", + "_testId": "urn:uuid:23881eda-9c8e-4050-bf8f-f694f72b3cb8", "cell": { - "columnId": "LearnCard", + "columnId": "Digital Bazaar", "rowId": "If the \"proof\" field is missing, an error MUST be raised." }, "_events": {}, @@ -15619,14 +15210,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 36819, + "_idleStart": 28665, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 33, + "duration": 469, "state": "passed", - "speed": "fast" + "speed": "slow" }, { "type": "test", @@ -15641,11 +15232,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "fzukTmGunqgrw1pwPErT7", + "parent": "vjCbcL73Y3Hj-3-3Vt2xr", "ctx": null, - "_testId": "urn:uuid:f8ae2799-3d5f-4982-ae51-479201cd72ac", + "_testId": "urn:uuid:bcf428a3-062f-4772-8db5-a5961e9c19eb", "cell": { - "columnId": "LearnCard", + "columnId": "Digital Bazaar", "rowId": "If the \"proof\" field is invalid, an error MUST be raised." }, "_events": {}, @@ -15654,12 +15245,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 36851, + "_idleStart": 29134, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 40, + "duration": 41, "state": "passed", "speed": "medium" }, @@ -15676,11 +15267,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "fzukTmGunqgrw1pwPErT7", + "parent": "vjCbcL73Y3Hj-3-3Vt2xr", "ctx": null, - "_testId": "urn:uuid:6e317d62-f731-49fd-a63d-beb0fad3ff3d", + "_testId": "urn:uuid:b9c337c1-7325-4ae9-97d0-66073b12dd4c", "cell": { - "columnId": "LearnCard", + "columnId": "Digital Bazaar", "rowId": "If the \"proof.type\" field is missing, an error MUST be raised." }, "_events": {}, @@ -15689,14 +15280,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 36892, + "_idleStart": 29175, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 36, + "duration": 39, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", @@ -15711,11 +15302,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "fzukTmGunqgrw1pwPErT7", + "parent": "vjCbcL73Y3Hj-3-3Vt2xr", "ctx": null, - "_testId": "urn:uuid:1b01e3a9-49f4-4b0f-b5d0-ecd96d4f58cc", + "_testId": "urn:uuid:84350ec0-eefa-43ea-8a7a-cab4162ee3b6", "cell": { - "columnId": "LearnCard", + "columnId": "Digital Bazaar", "rowId": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised." }, "_events": {}, @@ -15724,14 +15315,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 36928, + "_idleStart": 29214, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 79, + "duration": 59, "state": "passed", - "speed": "slow" + "speed": "medium" }, { "type": "test", @@ -15746,11 +15337,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "fzukTmGunqgrw1pwPErT7", + "parent": "vjCbcL73Y3Hj-3-3Vt2xr", "ctx": null, - "_testId": "urn:uuid:34d76fd1-f700-49e1-b611-c767b1928552", + "_testId": "urn:uuid:e280038d-346e-4dcc-ac99-60c9e5c8e4e7", "cell": { - "columnId": "LearnCard", + "columnId": "Digital Bazaar", "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." }, "_events": {}, @@ -15759,12 +15350,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 37006, + "_idleStart": 29273, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 33, + "duration": 34, "state": "passed", "speed": "fast" }, @@ -15781,11 +15372,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "fzukTmGunqgrw1pwPErT7", + "parent": "vjCbcL73Y3Hj-3-3Vt2xr", "ctx": null, - "_testId": "urn:uuid:ad6132a1-a713-4720-be5b-dcb322622435", + "_testId": "urn:uuid:3e6e7bc2-578c-45d7-9c37-b37b8d1ad000", "cell": { - "columnId": "LearnCard", + "columnId": "Digital Bazaar", "rowId": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised." }, "_events": {}, @@ -15794,12 +15385,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 37040, + "_idleStart": 29307, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 67, + "duration": 45, "state": "passed", "speed": "medium" }, @@ -15816,11 +15407,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "fzukTmGunqgrw1pwPErT7", + "parent": "vjCbcL73Y3Hj-3-3Vt2xr", "ctx": null, - "_testId": "urn:uuid:368bc954-e47b-4262-95dc-127dbbb72ca7", + "_testId": "urn:uuid:4a34c4ea-d2ca-4fbd-88d7-58c66470e576", "cell": { - "columnId": "LearnCard", + "columnId": "Digital Bazaar", "rowId": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised." }, "_events": {}, @@ -15829,14 +15420,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 37107, + "_idleStart": 29352, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 37, + "duration": 59, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", @@ -15851,11 +15442,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "fzukTmGunqgrw1pwPErT7", + "parent": "vjCbcL73Y3Hj-3-3Vt2xr", "ctx": null, - "_testId": "urn:uuid:7c3769dc-4989-46bf-aaaa-5372a14100b1", + "_testId": "urn:uuid:2db1ddf7-3854-416b-8c89-c68dba9e3a58", "cell": { - "columnId": "LearnCard", + "columnId": "Digital Bazaar", "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." }, "_events": {}, @@ -15864,12 +15455,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 37145, + "_idleStart": 29411, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 74, + "duration": 43, "state": "passed", "speed": "medium" }, @@ -15886,11 +15477,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "fzukTmGunqgrw1pwPErT7", + "parent": "vjCbcL73Y3Hj-3-3Vt2xr", "ctx": null, - "_testId": "urn:uuid:71893a0b-1965-4b96-8707-4756fc217e50", + "_testId": "urn:uuid:d9d40cbe-bf54-4e78-8d42-46b414ecd304", "cell": { - "columnId": "LearnCard", + "columnId": "Digital Bazaar", "rowId": "If expectedProofPurpose was given, and it does not match proof.proofPurpose, an error MUST be raised and SHOULD convey an error type of PROOF_VERIFICATION_ERROR." }, "_events": {}, @@ -15900,12 +15491,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 37219, + "_idleStart": 29455, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 73, + "duration": 42, "state": "passed", "speed": "medium" }, @@ -15922,11 +15513,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "fzukTmGunqgrw1pwPErT7", + "parent": "vjCbcL73Y3Hj-3-3Vt2xr", "ctx": null, - "_testId": "urn:uuid:583b9a96-5433-495f-983f-5ee0bf1f369c", + "_testId": "urn:uuid:ae89f609-d45b-4715-8a5d-fb63f2b00f6e", "cell": { - "columnId": "LearnCard", + "columnId": "Digital Bazaar", "rowId": "The proofValue property MUST be used, as specified in 2.1 Proofs." }, "_events": {}, @@ -15936,7 +15527,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 37292, + "_idleStart": 29497, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -15958,11 +15549,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "fzukTmGunqgrw1pwPErT7", + "parent": "vjCbcL73Y3Hj-3-3Vt2xr", "ctx": null, - "_testId": "urn:uuid:4685d794-b3e3-4c49-9235-3085f3c1986f", + "_testId": "urn:uuid:af1f9ffd-9ebd-40d8-a7af-7f81fc732283", "cell": { - "columnId": "LearnCard", + "columnId": "Digital Bazaar", "rowId": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification." }, "_events": {}, @@ -15972,7 +15563,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 37292, + "_idleStart": 29497, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -15994,11 +15585,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "fzukTmGunqgrw1pwPErT7", + "parent": "vjCbcL73Y3Hj-3-3Vt2xr", "ctx": null, - "_testId": "urn:uuid:ab2b1502-f5f6-4cd9-8ab9-1b789fdf150e", + "_testId": "urn:uuid:d7e7de2f-c0d4-4d14-9195-f4f5f39072d0", "cell": { - "columnId": "LearnCard", + "columnId": "Digital Bazaar", "rowId": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document." }, "_events": {}, @@ -16008,12 +15599,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 37292, + "_idleStart": 29497, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 199, + "duration": 142, "state": "passed", "speed": "slow" }, @@ -16030,11 +15621,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "fzukTmGunqgrw1pwPErT7", + "parent": "vjCbcL73Y3Hj-3-3Vt2xr", "ctx": null, - "_testId": "urn:uuid:c960dc2a-6fb7-4e3c-aa84-d2674fd022c4", + "_testId": "urn:uuid:7824b6d5-c7fa-4990-a75d-8e4c52a9caa5", "cell": { - "columnId": "LearnCard", + "columnId": "Digital Bazaar", "rowId": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." }, "_events": {}, @@ -16044,12 +15635,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 37491, + "_idleStart": 29640, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 56, + "duration": 44, "state": "passed", "speed": "medium" }, @@ -16066,11 +15657,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "fzukTmGunqgrw1pwPErT7", + "parent": "vjCbcL73Y3Hj-3-3Vt2xr", "ctx": null, - "_testId": "urn:uuid:df9dd942-b80e-4f1a-b3b9-1d4cad93065c", + "_testId": "urn:uuid:06f586df-e076-4796-a5c5-291bfddb81d6", "cell": { - "columnId": "LearnCard", + "columnId": "Digital Bazaar", "rowId": "The value of the cryptosuite property MUST be a string that identifies the cryptographic suite. If the processing environment supports subtypes of string, the type of the cryptosuite value MUST be the https://w3id.org/security#cryptosuiteString subtype of string." }, "_events": {}, @@ -16080,12 +15671,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 37548, + "_idleStart": 29683, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 68, + "duration": 40, "state": "passed", "speed": "medium" }, @@ -16102,11 +15693,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "fzukTmGunqgrw1pwPErT7", + "parent": "vjCbcL73Y3Hj-3-3Vt2xr", "ctx": null, - "_testId": "urn:uuid:f45dd2af-8b3e-41ee-b36c-1643a605c1a6", + "_testId": "urn:uuid:9328b7ee-629f-4944-bd02-836e48b3b207", "cell": { - "columnId": "LearnCard", + "columnId": "Digital Bazaar", "rowId": "If options has a non-null domain item, it MUST be equal to proof.domain or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR." }, "_events": {}, @@ -16116,12 +15707,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 37615, + "_idleStart": 29724, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 61, + "duration": 42, "state": "passed", "speed": "medium" }, @@ -16138,11 +15729,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "fzukTmGunqgrw1pwPErT7", + "parent": "vjCbcL73Y3Hj-3-3Vt2xr", "ctx": null, - "_testId": "urn:uuid:039a8f5e-6f63-4dca-a5d7-e073e547e95b", + "_testId": "urn:uuid:0d8542fb-1b13-4dd2-ae96-c2510d7e7d00", "cell": { - "columnId": "LearnCard", + "columnId": "Digital Bazaar", "rowId": "If options has a non-null challenge item, it MUST be equal to proof.challenge or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR." }, "_events": {}, @@ -16152,14 +15743,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 37677, + "_idleStart": 29766, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 77, + "duration": 41, "state": "passed", - "speed": "slow" + "speed": "medium" }, { "type": "test", @@ -16174,11 +15765,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "fzukTmGunqgrw1pwPErT7", + "parent": "vjCbcL73Y3Hj-3-3Vt2xr", "ctx": null, - "_testId": "urn:uuid:42712b79-dff1-4f55-8c84-6cf535e1068f", + "_testId": "urn:uuid:58a72898-87f0-463c-8d5d-33f0e37460da", "cell": { - "columnId": "LearnCard", + "columnId": "Digital Bazaar", "rowId": "(created) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." }, "_events": {}, @@ -16188,14 +15779,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 37753, + "_idleStart": 29806, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 83, + "duration": 43, "state": "passed", - "speed": "slow" + "speed": "medium" }, { "type": "test", @@ -16210,11 +15801,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "fzukTmGunqgrw1pwPErT7", + "parent": "vjCbcL73Y3Hj-3-3Vt2xr", "ctx": null, - "_testId": "urn:uuid:fce18713-4664-41ca-a757-3941303f8e31", + "_testId": "urn:uuid:6692c742-77ff-4d9c-8e16-8c0a0d92c99b", "cell": { - "columnId": "LearnCard", + "columnId": "Digital Bazaar", "rowId": "(expires) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." }, "_events": {}, @@ -16224,12 +15815,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 37836, + "_idleStart": 29850, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 63, + "duration": 49, "state": "passed", "speed": "medium" } @@ -16239,7 +15830,7 @@ "_retries": -1, "_beforeEach": [ { - "title": "\"before each\" hook in \"LearnCard\"", + "title": "\"before each\" hook in \"Digital Bazaar\"", "body": "function() {\n this.currentTest.cell = {\n columnId: testDescription,\n rowId: this.currentTest.title\n };\n }", "async": 0, "sync": true, @@ -16250,7 +15841,7 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "fzukTmGunqgrw1pwPErT7", + "parent": "vjCbcL73Y3Hj-3-3Vt2xr", "ctx": null, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", "originalTitle": "\"before each\" hook", @@ -16262,7 +15853,7 @@ ], "_beforeAll": [ { - "title": "\"before all\" hook in \"LearnCard\"", + "title": "\"before all\" hook in \"Digital Bazaar\"", "body": "async function() {\n proofValueTests = shouldBeProofValue({credentials, verifier});\n }", "async": 0, "sync": true, @@ -16273,7 +15864,7 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "fzukTmGunqgrw1pwPErT7", + "parent": "vjCbcL73Y3Hj-3-3Vt2xr", "ctx": null, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", "originalTitle": "\"before all\" hook", @@ -16283,12 +15874,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 27934, + "_idleStart": 28409, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 1, "_error": null } ], @@ -16300,12 +15891,12 @@ "_onlyTests": [], "_onlySuites": [], "delayed": false, - "parent": "lrXQsY_PzSL1o2oHNu-HO", + "parent": "KaZqTHEME9mQyu_xdGoIA", "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "_testId": "urn:uuid:e0692591-01f8-48f3-86c5-7158c738e3c2" + "_testId": "urn:uuid:222fc740-a957-4961-9e59-7fecb5d0acfb" }, { - "title": "OpSecId", + "title": "EWF", "ctx": null, "suites": [], "tests": [ @@ -16322,11 +15913,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "f0-mulLPVXI8cAjC5yH-C", + "parent": "kI_ZSoLzqZSvNBsn3jzIQ", "ctx": null, - "_testId": "urn:uuid:6a329c6b-56f8-4dae-979d-101726bdbf31", + "_testId": "urn:uuid:49a09ed8-5d21-42e6-9645-9375a34a0244", "cell": { - "columnId": "OpSecId", + "columnId": "EWF", "rowId": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null." }, "_events": {}, @@ -16336,12 +15927,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 37902, + "_idleStart": 29901, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 204, + "duration": 370, "state": "passed", "speed": "slow" }, @@ -16358,11 +15949,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "f0-mulLPVXI8cAjC5yH-C", + "parent": "kI_ZSoLzqZSvNBsn3jzIQ", "ctx": null, - "_testId": "urn:uuid:63efb150-4860-4104-9285-e825463517da", + "_testId": "urn:uuid:03016174-d0ac-490e-85c9-f069c2ddbe4f", "cell": { - "columnId": "OpSecId", + "columnId": "EWF", "rowId": "Conforming processors MUST produce errors when non-conforming documents are consumed." }, "_events": {}, @@ -16372,14 +15963,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38105, + "_idleStart": 30271, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 26, + "duration": 87, "state": "passed", - "speed": "fast" + "speed": "slow" }, { "type": "test", @@ -16394,11 +15985,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "f0-mulLPVXI8cAjC5yH-C", + "parent": "kI_ZSoLzqZSvNBsn3jzIQ", "ctx": null, - "_testId": "urn:uuid:5da64bd8-318f-49a3-98ee-7f9eb112201e", + "_testId": "urn:uuid:fb547bb5-3846-4214-8952-c9712caa9df6", "cell": { - "columnId": "OpSecId", + "columnId": "EWF", "rowId": "If the \"proof\" field is missing, an error MUST be raised." }, "_events": {}, @@ -16407,14 +15998,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38132, + "_idleStart": 30358, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 34, + "duration": 90, "state": "passed", - "speed": "fast" + "speed": "slow" }, { "type": "test", @@ -16429,11 +16020,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "f0-mulLPVXI8cAjC5yH-C", + "parent": "kI_ZSoLzqZSvNBsn3jzIQ", "ctx": null, - "_testId": "urn:uuid:a8311ee4-b0ba-4d4a-89da-6be60e94bd47", + "_testId": "urn:uuid:3e6ce608-71b2-4afe-944f-e2b1149255c4", "cell": { - "columnId": "OpSecId", + "columnId": "EWF", "rowId": "If the \"proof\" field is invalid, an error MUST be raised." }, "_events": {}, @@ -16442,14 +16033,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38166, + "_idleStart": 30448, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 26, + "duration": 95, "state": "passed", - "speed": "fast" + "speed": "slow" }, { "type": "test", @@ -16464,11 +16055,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "f0-mulLPVXI8cAjC5yH-C", + "parent": "kI_ZSoLzqZSvNBsn3jzIQ", "ctx": null, - "_testId": "urn:uuid:2ad6d355-07e4-4670-9c44-6dc924f50a18", + "_testId": "urn:uuid:bc4f0dda-79a3-4fd6-b4a8-b666dffb29d8", "cell": { - "columnId": "OpSecId", + "columnId": "EWF", "rowId": "If the \"proof.type\" field is missing, an error MUST be raised." }, "_events": {}, @@ -16477,14 +16068,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38192, + "_idleStart": 30543, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 31, + "duration": 99, "state": "passed", - "speed": "fast" + "speed": "slow" }, { "type": "test", @@ -16499,11 +16090,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "f0-mulLPVXI8cAjC5yH-C", + "parent": "kI_ZSoLzqZSvNBsn3jzIQ", "ctx": null, - "_testId": "urn:uuid:fb60abd3-1e69-408c-a109-af204fa04a1d", + "_testId": "urn:uuid:7d71d42f-71f4-4678-8b9d-be778ed3175b", "cell": { - "columnId": "OpSecId", + "columnId": "EWF", "rowId": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised." }, "_events": {}, @@ -16512,14 +16103,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38223, + "_idleStart": 30643, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 23, + "duration": 90, "state": "passed", - "speed": "fast" + "speed": "slow" }, { "type": "test", @@ -16534,11 +16125,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "f0-mulLPVXI8cAjC5yH-C", + "parent": "kI_ZSoLzqZSvNBsn3jzIQ", "ctx": null, - "_testId": "urn:uuid:c41b2a49-dbd9-477a-a6fa-663168cab8d9", + "_testId": "urn:uuid:82625b50-fafb-4fe1-ad0e-015d89386fe0", "cell": { - "columnId": "OpSecId", + "columnId": "EWF", "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." }, "_events": {}, @@ -16547,14 +16138,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38247, + "_idleStart": 30734, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 21, + "duration": 132, "state": "passed", - "speed": "fast" + "speed": "slow" }, { "type": "test", @@ -16569,11 +16160,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "f0-mulLPVXI8cAjC5yH-C", + "parent": "kI_ZSoLzqZSvNBsn3jzIQ", "ctx": null, - "_testId": "urn:uuid:c145449a-abe6-4907-bc38-124019b77aa5", + "_testId": "urn:uuid:6472c33e-83d7-4654-a6cb-87d51511b458", "cell": { - "columnId": "OpSecId", + "columnId": "EWF", "rowId": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised." }, "_events": {}, @@ -16582,14 +16173,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38269, + "_idleStart": 30867, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 25, + "duration": 90, "state": "passed", - "speed": "fast" + "speed": "slow" }, { "type": "test", @@ -16604,11 +16195,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "f0-mulLPVXI8cAjC5yH-C", + "parent": "kI_ZSoLzqZSvNBsn3jzIQ", "ctx": null, - "_testId": "urn:uuid:7b6b5e20-1c8d-4672-82cf-e564c6f057d4", + "_testId": "urn:uuid:76a2a4ed-535b-43cc-a48c-ba4dd776bba3", "cell": { - "columnId": "OpSecId", + "columnId": "EWF", "rowId": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised." }, "_events": {}, @@ -16617,14 +16208,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38294, + "_idleStart": 30958, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 30, + "duration": 91, "state": "passed", - "speed": "fast" + "speed": "slow" }, { "type": "test", @@ -16639,11 +16230,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "f0-mulLPVXI8cAjC5yH-C", + "parent": "kI_ZSoLzqZSvNBsn3jzIQ", "ctx": null, - "_testId": "urn:uuid:715c8965-2586-4501-ab9f-2735e9719f57", + "_testId": "urn:uuid:81a1a06e-930f-4769-900d-a26d4fda2f49", "cell": { - "columnId": "OpSecId", + "columnId": "EWF", "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." }, "_events": {}, @@ -16652,14 +16243,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38325, + "_idleStart": 31049, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 24, + "duration": 92, "state": "passed", - "speed": "fast" + "speed": "slow" }, { "type": "test", @@ -16674,11 +16265,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "f0-mulLPVXI8cAjC5yH-C", + "parent": "kI_ZSoLzqZSvNBsn3jzIQ", "ctx": null, - "_testId": "urn:uuid:91d9ff5e-d7b9-4ed8-a08e-c37e680ea7c2", + "_testId": "urn:uuid:fe69de0b-9f4e-41e6-b3df-d03ebe6f0b2d", "cell": { - "columnId": "OpSecId", + "columnId": "EWF", "rowId": "If expectedProofPurpose was given, and it does not match proof.proofPurpose, an error MUST be raised and SHOULD convey an error type of PROOF_VERIFICATION_ERROR." }, "_events": {}, @@ -16688,14 +16279,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38350, + "_idleStart": 31141, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 25, + "duration": 92, "state": "passed", - "speed": "fast" + "speed": "slow" }, { "type": "test", @@ -16710,11 +16301,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "f0-mulLPVXI8cAjC5yH-C", + "parent": "kI_ZSoLzqZSvNBsn3jzIQ", "ctx": null, - "_testId": "urn:uuid:174fb2b7-d6d5-4e76-b05f-8bf29ae961af", + "_testId": "urn:uuid:d32d095d-9b6e-4bf6-a713-a2354a38c0c2", "cell": { - "columnId": "OpSecId", + "columnId": "EWF", "rowId": "The proofValue property MUST be used, as specified in 2.1 Proofs." }, "_events": {}, @@ -16724,7 +16315,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38375, + "_idleStart": 31234, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -16746,11 +16337,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "f0-mulLPVXI8cAjC5yH-C", + "parent": "kI_ZSoLzqZSvNBsn3jzIQ", "ctx": null, - "_testId": "urn:uuid:a5afb667-89d2-4291-a4f0-c79c80571e3e", + "_testId": "urn:uuid:0fce23b2-eb69-43cb-aa77-82de2a022ae4", "cell": { - "columnId": "OpSecId", + "columnId": "EWF", "rowId": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification." }, "_events": {}, @@ -16760,7 +16351,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38375, + "_idleStart": 31234, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -16782,11 +16373,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "f0-mulLPVXI8cAjC5yH-C", + "parent": "kI_ZSoLzqZSvNBsn3jzIQ", "ctx": null, - "_testId": "urn:uuid:0989e9c3-e488-4cfe-9b7d-7506947421e8", + "_testId": "urn:uuid:b987caef-7016-436f-9be3-0f6ef65b44b9", "cell": { - "columnId": "OpSecId", + "columnId": "EWF", "rowId": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document." }, "_events": {}, @@ -16796,14 +16387,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38376, + "_idleStart": 31234, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 75, + "duration": 309, "state": "passed", - "speed": "medium" + "speed": "slow" }, { "type": "test", @@ -16818,11 +16409,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "f0-mulLPVXI8cAjC5yH-C", + "parent": "kI_ZSoLzqZSvNBsn3jzIQ", "ctx": null, - "_testId": "urn:uuid:6b32e7bf-7952-4015-9097-6e7b6c6fdc19", + "_testId": "urn:uuid:2f5e00d0-d373-43bc-90cf-392c75a89dbc", "cell": { - "columnId": "OpSecId", + "columnId": "EWF", "rowId": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." }, "_events": {}, @@ -16832,14 +16423,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38450, + "_idleStart": 31543, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 26, + "duration": 93, "state": "passed", - "speed": "fast" + "speed": "slow" }, { "type": "test", @@ -16854,11 +16445,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "f0-mulLPVXI8cAjC5yH-C", + "parent": "kI_ZSoLzqZSvNBsn3jzIQ", "ctx": null, - "_testId": "urn:uuid:b2646bb2-ace7-4d74-a1e9-5ec1d9676180", + "_testId": "urn:uuid:6f4b5940-855f-45ee-bbdb-3110d9b1eaec", "cell": { - "columnId": "OpSecId", + "columnId": "EWF", "rowId": "The value of the cryptosuite property MUST be a string that identifies the cryptographic suite. If the processing environment supports subtypes of string, the type of the cryptosuite value MUST be the https://w3id.org/security#cryptosuiteString subtype of string." }, "_events": {}, @@ -16868,14 +16459,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38476, + "_idleStart": 31636, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 24, + "duration": 91, "state": "passed", - "speed": "fast" + "speed": "slow" }, { "type": "test", @@ -16890,11 +16481,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "f0-mulLPVXI8cAjC5yH-C", + "parent": "kI_ZSoLzqZSvNBsn3jzIQ", "ctx": null, - "_testId": "urn:uuid:48026d37-bae7-4a98-9fcf-e7ef9b3f817d", + "_testId": "urn:uuid:eeba5961-25ca-4c32-a6a1-95c12da3d17e", "cell": { - "columnId": "OpSecId", + "columnId": "EWF", "rowId": "If options has a non-null domain item, it MUST be equal to proof.domain or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR." }, "_events": {}, @@ -16904,14 +16495,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38501, + "_idleStart": 31728, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 28, + "duration": 91, "state": "passed", - "speed": "fast" + "speed": "slow" }, { "type": "test", @@ -16926,11 +16517,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "f0-mulLPVXI8cAjC5yH-C", + "parent": "kI_ZSoLzqZSvNBsn3jzIQ", "ctx": null, - "_testId": "urn:uuid:663b8aaf-5368-4290-8e39-f00f0c7fb8f9", + "_testId": "urn:uuid:ed0cbd64-cc6e-4b75-a75c-78b42609bdf7", "cell": { - "columnId": "OpSecId", + "columnId": "EWF", "rowId": "If options has a non-null challenge item, it MUST be equal to proof.challenge or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR." }, "_events": {}, @@ -16940,14 +16531,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38530, + "_idleStart": 31819, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 25, + "duration": 91, "state": "passed", - "speed": "fast" + "speed": "slow" }, { "type": "test", @@ -16962,11 +16553,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "f0-mulLPVXI8cAjC5yH-C", + "parent": "kI_ZSoLzqZSvNBsn3jzIQ", "ctx": null, - "_testId": "urn:uuid:cf3c47ba-fb82-4fe8-a0d8-7863143c260a", + "_testId": "urn:uuid:ddf1ff43-a0ff-4bd6-b644-46da7752ca0a", "cell": { - "columnId": "OpSecId", + "columnId": "EWF", "rowId": "(created) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." }, "_events": {}, @@ -16976,14 +16567,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38554, + "_idleStart": 31911, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 25, + "duration": 90, "state": "passed", - "speed": "fast" + "speed": "slow" }, { "type": "test", @@ -16998,11 +16589,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "f0-mulLPVXI8cAjC5yH-C", + "parent": "kI_ZSoLzqZSvNBsn3jzIQ", "ctx": null, - "_testId": "urn:uuid:d994a238-3f5f-4cf2-a5df-100375e08255", + "_testId": "urn:uuid:31de5196-139b-404f-b9f6-e045ea984c63", "cell": { - "columnId": "OpSecId", + "columnId": "EWF", "rowId": "(expires) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." }, "_events": {}, @@ -17012,14 +16603,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38579, + "_idleStart": 32001, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 24, + "duration": 93, "state": "passed", - "speed": "fast" + "speed": "slow" } ], "root": false, @@ -17027,7 +16618,7 @@ "_retries": -1, "_beforeEach": [ { - "title": "\"before each\" hook in \"OpSecId\"", + "title": "\"before each\" hook in \"EWF\"", "body": "function() {\n this.currentTest.cell = {\n columnId: testDescription,\n rowId: this.currentTest.title\n };\n }", "async": 0, "sync": true, @@ -17038,7 +16629,7 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "f0-mulLPVXI8cAjC5yH-C", + "parent": "kI_ZSoLzqZSvNBsn3jzIQ", "ctx": null, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", "originalTitle": "\"before each\" hook", @@ -17050,7 +16641,7 @@ ], "_beforeAll": [ { - "title": "\"before all\" hook in \"OpSecId\"", + "title": "\"before all\" hook in \"EWF\"", "body": "async function() {\n proofValueTests = shouldBeProofValue({credentials, verifier});\n }", "async": 0, "sync": true, @@ -17061,7 +16652,7 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "f0-mulLPVXI8cAjC5yH-C", + "parent": "kI_ZSoLzqZSvNBsn3jzIQ", "ctx": null, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", "originalTitle": "\"before all\" hook", @@ -17071,12 +16662,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 37900, + "_idleStart": 29899, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 1, + "duration": 0, "_error": null } ], @@ -17088,12 +16679,12 @@ "_onlyTests": [], "_onlySuites": [], "delayed": false, - "parent": "lrXQsY_PzSL1o2oHNu-HO", + "parent": "KaZqTHEME9mQyu_xdGoIA", "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "_testId": "urn:uuid:dbdce2ef-3c79-474f-aef1-682e11e5b382" + "_testId": "urn:uuid:51edf148-0c51-487e-a694-d34969eaeb7a" }, { - "title": "SpruceID", + "title": "LearnCard", "ctx": null, "suites": [], "tests": [ @@ -17110,11 +16701,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "NRNAY3b3Vtm8PfC-PFvjh", + "parent": "4tSBZN6UnobQjWlMYrZJM", "ctx": null, - "_testId": "urn:uuid:0f02a708-b826-4daa-9c72-dade763a02f2", + "_testId": "urn:uuid:fcd0cffd-e6af-4983-9c1d-15dd54d1ae37", "cell": { - "columnId": "SpruceID", + "columnId": "LearnCard", "rowId": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null." }, "_events": {}, @@ -17124,14 +16715,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38605, + "_idleStart": 32097, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 64, + "duration": 125, "state": "passed", - "speed": "medium" + "speed": "slow" }, { "type": "test", @@ -17146,11 +16737,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "NRNAY3b3Vtm8PfC-PFvjh", + "parent": "4tSBZN6UnobQjWlMYrZJM", "ctx": null, - "_testId": "urn:uuid:403329ce-d7d7-4cef-8469-a5e484c502af", + "_testId": "urn:uuid:7fd92d35-3d61-47bb-831e-4ac4744b6c20", "cell": { - "columnId": "SpruceID", + "columnId": "LearnCard", "rowId": "Conforming processors MUST produce errors when non-conforming documents are consumed." }, "_events": {}, @@ -17160,14 +16751,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38669, + "_idleStart": 32222, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 17, + "duration": 8816, "state": "passed", - "speed": "fast" + "speed": "slow" }, { "type": "test", @@ -17182,11 +16773,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "NRNAY3b3Vtm8PfC-PFvjh", + "parent": "4tSBZN6UnobQjWlMYrZJM", "ctx": null, - "_testId": "urn:uuid:1005855d-795e-44ea-8efc-fee325eef010", + "_testId": "urn:uuid:2e9d5241-a9d2-4801-8198-362aaa1f1fbe", "cell": { - "columnId": "SpruceID", + "columnId": "LearnCard", "rowId": "If the \"proof\" field is missing, an error MUST be raised." }, "_events": {}, @@ -17195,14 +16786,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38686, + "_idleStart": 41038, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 14, + "duration": 40, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", @@ -17217,11 +16808,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "NRNAY3b3Vtm8PfC-PFvjh", + "parent": "4tSBZN6UnobQjWlMYrZJM", "ctx": null, - "_testId": "urn:uuid:b0e82af9-1b8a-4bda-9131-cbca531be8d6", + "_testId": "urn:uuid:575e0912-02f2-4f7e-9f5c-d935f4e5be0a", "cell": { - "columnId": "SpruceID", + "columnId": "LearnCard", "rowId": "If the \"proof\" field is invalid, an error MUST be raised." }, "_events": {}, @@ -17230,14 +16821,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38701, + "_idleStart": 41079, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 18, + "duration": 42, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", @@ -17252,11 +16843,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "NRNAY3b3Vtm8PfC-PFvjh", + "parent": "4tSBZN6UnobQjWlMYrZJM", "ctx": null, - "_testId": "urn:uuid:5a35de1d-6321-46db-8e37-a58037d56485", + "_testId": "urn:uuid:b684d650-55db-4a7e-9771-7466f3f31d8c", "cell": { - "columnId": "SpruceID", + "columnId": "LearnCard", "rowId": "If the \"proof.type\" field is missing, an error MUST be raised." }, "_events": {}, @@ -17265,14 +16856,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38719, + "_idleStart": 41121, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 18, + "duration": 39, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", @@ -17287,11 +16878,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "NRNAY3b3Vtm8PfC-PFvjh", + "parent": "4tSBZN6UnobQjWlMYrZJM", "ctx": null, - "_testId": "urn:uuid:6e59a1ec-fdd8-401d-bb6c-f0a0e3c12c4a", + "_testId": "urn:uuid:ebd6ff1c-28a7-4910-8eb4-25b66e7d84f7", "cell": { - "columnId": "SpruceID", + "columnId": "LearnCard", "rowId": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised." }, "_events": {}, @@ -17300,14 +16891,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38736, + "_idleStart": 41161, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 14, + "duration": 87, "state": "passed", - "speed": "fast" + "speed": "slow" }, { "type": "test", @@ -17322,11 +16913,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "NRNAY3b3Vtm8PfC-PFvjh", + "parent": "4tSBZN6UnobQjWlMYrZJM", "ctx": null, - "_testId": "urn:uuid:4fa5659b-5caa-4831-85f7-a45423c2ce8e", + "_testId": "urn:uuid:e49a4952-07a2-427c-b5e0-d2fdf1f10b1c", "cell": { - "columnId": "SpruceID", + "columnId": "LearnCard", "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." }, "_events": {}, @@ -17335,12 +16926,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38752, + "_idleStart": 41248, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 15, + "duration": 37, "state": "passed", "speed": "fast" }, @@ -17357,11 +16948,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "NRNAY3b3Vtm8PfC-PFvjh", + "parent": "4tSBZN6UnobQjWlMYrZJM", "ctx": null, - "_testId": "urn:uuid:178894ea-b257-49ee-8a83-d257884b44a4", + "_testId": "urn:uuid:48acff62-67a3-4a4f-a747-16e344b87d95", "cell": { - "columnId": "SpruceID", + "columnId": "LearnCard", "rowId": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised." }, "_events": {}, @@ -17370,14 +16961,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38768, + "_idleStart": 41285, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 17, + "duration": 78, "state": "passed", - "speed": "fast" + "speed": "slow" }, { "type": "test", @@ -17392,11 +16983,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "NRNAY3b3Vtm8PfC-PFvjh", + "parent": "4tSBZN6UnobQjWlMYrZJM", "ctx": null, - "_testId": "urn:uuid:7e7b1c09-06ca-4977-bb7e-1755e81d11f7", + "_testId": "urn:uuid:5dbc31fe-ff8e-453c-96f6-d87cfd355550", "cell": { - "columnId": "SpruceID", + "columnId": "LearnCard", "rowId": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised." }, "_events": {}, @@ -17405,14 +16996,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38784, + "_idleStart": 41363, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 13, + "duration": 42, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", @@ -17427,11 +17018,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "NRNAY3b3Vtm8PfC-PFvjh", + "parent": "4tSBZN6UnobQjWlMYrZJM", "ctx": null, - "_testId": "urn:uuid:0146c715-ca9e-4207-a706-7fc97a329cb0", + "_testId": "urn:uuid:24863afb-7ab0-4506-8b16-60a53dcdeff5", "cell": { - "columnId": "SpruceID", + "columnId": "LearnCard", "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." }, "_events": {}, @@ -17440,14 +17031,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38798, + "_idleStart": 41405, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 13, + "duration": 85, "state": "passed", - "speed": "fast" + "speed": "slow" }, { "type": "test", @@ -17462,11 +17053,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "NRNAY3b3Vtm8PfC-PFvjh", + "parent": "4tSBZN6UnobQjWlMYrZJM", "ctx": null, - "_testId": "urn:uuid:7d87df43-592a-4331-9c55-bd47b58e8cbb", + "_testId": "urn:uuid:1a40b692-4134-47c7-b9b4-e9694bc29d09", "cell": { - "columnId": "SpruceID", + "columnId": "LearnCard", "rowId": "If expectedProofPurpose was given, and it does not match proof.proofPurpose, an error MUST be raised and SHOULD convey an error type of PROOF_VERIFICATION_ERROR." }, "_events": {}, @@ -17476,14 +17067,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38811, + "_idleStart": 41490, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 14, + "duration": 119, "state": "passed", - "speed": "fast" + "speed": "slow" }, { "type": "test", @@ -17498,11 +17089,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "NRNAY3b3Vtm8PfC-PFvjh", + "parent": "4tSBZN6UnobQjWlMYrZJM", "ctx": null, - "_testId": "urn:uuid:986bc239-1f9b-48db-ab20-5e29723b7568", + "_testId": "urn:uuid:019e92ad-ec24-4ca2-b307-b51e7b00c067", "cell": { - "columnId": "SpruceID", + "columnId": "LearnCard", "rowId": "The proofValue property MUST be used, as specified in 2.1 Proofs." }, "_events": {}, @@ -17512,7 +17103,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38825, + "_idleStart": 41609, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -17534,11 +17125,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "NRNAY3b3Vtm8PfC-PFvjh", + "parent": "4tSBZN6UnobQjWlMYrZJM", "ctx": null, - "_testId": "urn:uuid:91d65f3c-ec4b-497b-85c7-a4cc64f37a9f", + "_testId": "urn:uuid:625a78a2-8e97-419e-8e44-b60e35d6befa", "cell": { - "columnId": "SpruceID", + "columnId": "LearnCard", "rowId": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification." }, "_events": {}, @@ -17548,7 +17139,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38826, + "_idleStart": 41609, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -17570,11 +17161,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "NRNAY3b3Vtm8PfC-PFvjh", + "parent": "4tSBZN6UnobQjWlMYrZJM", "ctx": null, - "_testId": "urn:uuid:b88efc5e-b6ec-4806-af16-dd4ba27efe50", + "_testId": "urn:uuid:d9dd7403-8a17-45fa-b7b7-a3217b524aac", "cell": { - "columnId": "SpruceID", + "columnId": "LearnCard", "rowId": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document." }, "_events": {}, @@ -17584,14 +17175,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38826, + "_idleStart": 41609, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 45, + "duration": 238, "state": "passed", - "speed": "medium" + "speed": "slow" }, { "type": "test", @@ -17606,11 +17197,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "NRNAY3b3Vtm8PfC-PFvjh", + "parent": "4tSBZN6UnobQjWlMYrZJM", "ctx": null, - "_testId": "urn:uuid:f8609c50-9bcd-4273-955f-8417e2543ba3", + "_testId": "urn:uuid:31eb72b9-d7a9-4b72-86f2-8685d76a26b2", "cell": { - "columnId": "SpruceID", + "columnId": "LearnCard", "rowId": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." }, "_events": {}, @@ -17620,14 +17211,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38871, + "_idleStart": 41850, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 14, + "duration": 109, "state": "passed", - "speed": "fast" + "speed": "slow" }, { "type": "test", @@ -17642,11 +17233,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "NRNAY3b3Vtm8PfC-PFvjh", + "parent": "4tSBZN6UnobQjWlMYrZJM", "ctx": null, - "_testId": "urn:uuid:f5b415d2-cdf5-4924-925e-d78e09068766", + "_testId": "urn:uuid:ee497998-b79c-4d7a-9295-ceaa9e61d408", "cell": { - "columnId": "SpruceID", + "columnId": "LearnCard", "rowId": "The value of the cryptosuite property MUST be a string that identifies the cryptographic suite. If the processing environment supports subtypes of string, the type of the cryptosuite value MUST be the https://w3id.org/security#cryptosuiteString subtype of string." }, "_events": {}, @@ -17656,14 +17247,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38885, + "_idleStart": 41959, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 21, + "duration": 68, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", @@ -17678,11 +17269,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "NRNAY3b3Vtm8PfC-PFvjh", + "parent": "4tSBZN6UnobQjWlMYrZJM", "ctx": null, - "_testId": "urn:uuid:95bd1543-20f3-4bb2-ac60-602997595126", + "_testId": "urn:uuid:82f9df8e-d4a5-4b5a-8b7b-a6fe121e7e4f", "cell": { - "columnId": "SpruceID", + "columnId": "LearnCard", "rowId": "If options has a non-null domain item, it MUST be equal to proof.domain or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR." }, "_events": {}, @@ -17692,14 +17283,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38905, + "_idleStart": 42027, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 17, + "duration": 64, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", @@ -17714,11 +17305,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "NRNAY3b3Vtm8PfC-PFvjh", + "parent": "4tSBZN6UnobQjWlMYrZJM", "ctx": null, - "_testId": "urn:uuid:f960eee6-1cea-42ea-be12-6bfe8399abe4", + "_testId": "urn:uuid:d31ed693-8377-4c5f-a8a7-d15b6b8abe2d", "cell": { - "columnId": "SpruceID", + "columnId": "LearnCard", "rowId": "If options has a non-null challenge item, it MUST be equal to proof.challenge or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR." }, "_events": {}, @@ -17728,14 +17319,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38922, + "_idleStart": 42092, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 34, + "duration": 58, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", @@ -17750,11 +17341,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "NRNAY3b3Vtm8PfC-PFvjh", + "parent": "4tSBZN6UnobQjWlMYrZJM", "ctx": null, - "_testId": "urn:uuid:2f62348b-2f72-46f5-acba-04b7f9cd89ee", + "_testId": "urn:uuid:f5eeb53f-2fea-4baa-af23-52c7bf2008ee", "cell": { - "columnId": "SpruceID", + "columnId": "LearnCard", "rowId": "(created) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." }, "_events": {}, @@ -17764,14 +17355,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38956, + "_idleStart": 42151, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 28, + "duration": 70, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", @@ -17786,11 +17377,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "NRNAY3b3Vtm8PfC-PFvjh", + "parent": "4tSBZN6UnobQjWlMYrZJM", "ctx": null, - "_testId": "urn:uuid:2f0b40b8-05c7-48a1-b5bd-07621290b1fe", + "_testId": "urn:uuid:34f8cc7b-99aa-488c-bf5c-72cec17373aa", "cell": { - "columnId": "SpruceID", + "columnId": "LearnCard", "rowId": "(expires) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." }, "_events": {}, @@ -17800,14 +17391,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38985, + "_idleStart": 42222, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 20, + "duration": 80, "state": "passed", - "speed": "fast" + "speed": "slow" } ], "root": false, @@ -17815,7 +17406,7 @@ "_retries": -1, "_beforeEach": [ { - "title": "\"before each\" hook in \"SpruceID\"", + "title": "\"before each\" hook in \"LearnCard\"", "body": "function() {\n this.currentTest.cell = {\n columnId: testDescription,\n rowId: this.currentTest.title\n };\n }", "async": 0, "sync": true, @@ -17826,7 +17417,7 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "NRNAY3b3Vtm8PfC-PFvjh", + "parent": "4tSBZN6UnobQjWlMYrZJM", "ctx": null, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", "originalTitle": "\"before each\" hook", @@ -17838,7 +17429,7 @@ ], "_beforeAll": [ { - "title": "\"before all\" hook in \"SpruceID\"", + "title": "\"before all\" hook in \"LearnCard\"", "body": "async function() {\n proofValueTests = shouldBeProofValue({credentials, verifier});\n }", "async": 0, "sync": true, @@ -17849,7 +17440,7 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "NRNAY3b3Vtm8PfC-PFvjh", + "parent": "4tSBZN6UnobQjWlMYrZJM", "ctx": null, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", "originalTitle": "\"before all\" hook", @@ -17859,12 +17450,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38604, + "_idleStart": 32095, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 1, "_error": null } ], @@ -17876,12 +17467,12 @@ "_onlyTests": [], "_onlySuites": [], "delayed": false, - "parent": "lrXQsY_PzSL1o2oHNu-HO", + "parent": "KaZqTHEME9mQyu_xdGoIA", "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "_testId": "urn:uuid:37ab4731-e6a0-4c07-a256-599a93f19985" + "_testId": "urn:uuid:f4afdd07-ff63-4d69-83c6-4ccf1ba5b368" }, { - "title": "Trinsic", + "title": "OpSecId", "ctx": null, "suites": [], "tests": [ @@ -17898,11 +17489,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "rAhKx-OZJpBnB_wNqlSW7", + "parent": "eS-Sz740TQReObqQ_sP03", "ctx": null, - "_testId": "urn:uuid:d13d5d83-e6e8-45f5-9c0e-f43a9e3e5a83", + "_testId": "urn:uuid:9a26e3b8-8e3e-4b3f-9471-da4e5d8eea90", "cell": { - "columnId": "Trinsic", + "columnId": "OpSecId", "rowId": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null." }, "_events": {}, @@ -17912,12 +17503,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 39006, + "_idleStart": 42304, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 1682, + "duration": 130, "state": "passed", "speed": "slow" }, @@ -17934,11 +17525,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "rAhKx-OZJpBnB_wNqlSW7", + "parent": "eS-Sz740TQReObqQ_sP03", "ctx": null, - "_testId": "urn:uuid:1cf703f3-562a-4575-b620-68a49c857e1a", + "_testId": "urn:uuid:613e5c49-1ac0-41f0-a8b6-d9ccfa933409", "cell": { - "columnId": "Trinsic", + "columnId": "OpSecId", "rowId": "Conforming processors MUST produce errors when non-conforming documents are consumed." }, "_events": {}, @@ -17948,12 +17539,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 40689, + "_idleStart": 42434, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 16, + "duration": 26, "state": "passed", "speed": "fast" }, @@ -17970,11 +17561,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "rAhKx-OZJpBnB_wNqlSW7", + "parent": "eS-Sz740TQReObqQ_sP03", "ctx": null, - "_testId": "urn:uuid:2656bf6a-773d-49f4-b3b9-657ec54b310a", + "_testId": "urn:uuid:ff43f3c8-5c9c-4b45-b9cc-387c07cd92d3", "cell": { - "columnId": "Trinsic", + "columnId": "OpSecId", "rowId": "If the \"proof\" field is missing, an error MUST be raised." }, "_events": {}, @@ -17983,12 +17574,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 40705, + "_idleStart": 42460, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 23, + "duration": 27, "state": "passed", "speed": "fast" }, @@ -18005,11 +17596,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "rAhKx-OZJpBnB_wNqlSW7", + "parent": "eS-Sz740TQReObqQ_sP03", "ctx": null, - "_testId": "urn:uuid:54b5a863-9820-48d6-a452-fd7cbea2ab50", + "_testId": "urn:uuid:93a4f38d-0383-4013-b5ba-d059409ac9b7", "cell": { - "columnId": "Trinsic", + "columnId": "OpSecId", "rowId": "If the \"proof\" field is invalid, an error MUST be raised." }, "_events": {}, @@ -18018,12 +17609,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 40728, + "_idleStart": 42487, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 20, + "duration": 24, "state": "passed", "speed": "fast" }, @@ -18040,11 +17631,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "rAhKx-OZJpBnB_wNqlSW7", + "parent": "eS-Sz740TQReObqQ_sP03", "ctx": null, - "_testId": "urn:uuid:278c3fb7-3a20-4b82-bfd9-9194c8e302e3", + "_testId": "urn:uuid:105addb8-f903-4f90-b979-303f7831d716", "cell": { - "columnId": "Trinsic", + "columnId": "OpSecId", "rowId": "If the \"proof.type\" field is missing, an error MUST be raised." }, "_events": {}, @@ -18053,12 +17644,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 40749, + "_idleStart": 42511, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 17, + "duration": 26, "state": "passed", "speed": "fast" }, @@ -18075,11 +17666,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "rAhKx-OZJpBnB_wNqlSW7", + "parent": "eS-Sz740TQReObqQ_sP03", "ctx": null, - "_testId": "urn:uuid:48407f36-7ca9-42e9-a9bb-7298fb55954a", + "_testId": "urn:uuid:7d1bec78-0472-480b-b4fb-fdce3915020b", "cell": { - "columnId": "Trinsic", + "columnId": "OpSecId", "rowId": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised." }, "_events": {}, @@ -18088,12 +17679,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 40766, + "_idleStart": 42538, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 18, + "duration": 29, "state": "passed", "speed": "fast" }, @@ -18110,11 +17701,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "rAhKx-OZJpBnB_wNqlSW7", + "parent": "eS-Sz740TQReObqQ_sP03", "ctx": null, - "_testId": "urn:uuid:6c26a219-0b97-4a52-b51a-20b1d7c96c41", + "_testId": "urn:uuid:3193fd45-8436-4894-ad0a-08e1f001dbca", "cell": { - "columnId": "Trinsic", + "columnId": "OpSecId", "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." }, "_events": {}, @@ -18123,12 +17714,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 40783, + "_idleStart": 42567, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 16, + "duration": 22, "state": "passed", "speed": "fast" }, @@ -18145,11 +17736,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "rAhKx-OZJpBnB_wNqlSW7", + "parent": "eS-Sz740TQReObqQ_sP03", "ctx": null, - "_testId": "urn:uuid:a6160d61-2a86-4462-a5d9-b500a2b2534f", + "_testId": "urn:uuid:9f5b917b-05d9-4663-b5d6-4347c666bb62", "cell": { - "columnId": "Trinsic", + "columnId": "OpSecId", "rowId": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised." }, "_events": {}, @@ -18158,14 +17749,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 40800, + "_idleStart": 42589, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 20, + "duration": 38, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", @@ -18180,11 +17771,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "rAhKx-OZJpBnB_wNqlSW7", + "parent": "eS-Sz740TQReObqQ_sP03", "ctx": null, - "_testId": "urn:uuid:06d5ed24-366e-48d1-9948-9f3b682b5bc4", + "_testId": "urn:uuid:57ebb192-b89b-4fa9-83ac-193697e1fd05", "cell": { - "columnId": "Trinsic", + "columnId": "OpSecId", "rowId": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised." }, "_events": {}, @@ -18193,12 +17784,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 40820, + "_idleStart": 42627, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 19, + "duration": 26, "state": "passed", "speed": "fast" }, @@ -18215,11 +17806,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "rAhKx-OZJpBnB_wNqlSW7", + "parent": "eS-Sz740TQReObqQ_sP03", "ctx": null, - "_testId": "urn:uuid:247fa1f9-c284-4683-9d5c-c15e67b3abcb", + "_testId": "urn:uuid:02700d36-f296-4fb8-b00d-e1243b4e5cb5", "cell": { - "columnId": "Trinsic", + "columnId": "OpSecId", "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." }, "_events": {}, @@ -18228,12 +17819,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 40840, + "_idleStart": 42653, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 17, + "duration": 26, "state": "passed", "speed": "fast" }, @@ -18250,11 +17841,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "rAhKx-OZJpBnB_wNqlSW7", + "parent": "eS-Sz740TQReObqQ_sP03", "ctx": null, - "_testId": "urn:uuid:f3f4348a-23bf-4a03-85ec-8c5048894499", + "_testId": "urn:uuid:4c3fc7aa-6aa5-4301-945b-03151a4d1456", "cell": { - "columnId": "Trinsic", + "columnId": "OpSecId", "rowId": "If expectedProofPurpose was given, and it does not match proof.proofPurpose, an error MUST be raised and SHOULD convey an error type of PROOF_VERIFICATION_ERROR." }, "_events": {}, @@ -18264,12 +17855,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 40857, + "_idleStart": 42680, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 17, + "duration": 24, "state": "passed", "speed": "fast" }, @@ -18286,11 +17877,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "rAhKx-OZJpBnB_wNqlSW7", + "parent": "eS-Sz740TQReObqQ_sP03", "ctx": null, - "_testId": "urn:uuid:d68b7dec-4af2-498e-863c-e6ea91067c88", + "_testId": "urn:uuid:5a649be7-9596-4ced-97e4-7b906cc15a9b", "cell": { - "columnId": "Trinsic", + "columnId": "OpSecId", "rowId": "The proofValue property MUST be used, as specified in 2.1 Proofs." }, "_events": {}, @@ -18300,7 +17891,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 40875, + "_idleStart": 42704, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -18322,11 +17913,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "rAhKx-OZJpBnB_wNqlSW7", + "parent": "eS-Sz740TQReObqQ_sP03", "ctx": null, - "_testId": "urn:uuid:ce464a5d-00f0-49bd-8f46-c5422282c93d", + "_testId": "urn:uuid:52007502-6900-4e07-bf7d-6c570f128b72", "cell": { - "columnId": "Trinsic", + "columnId": "OpSecId", "rowId": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification." }, "_events": {}, @@ -18336,7 +17927,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 40875, + "_idleStart": 42704, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -18358,11 +17949,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "rAhKx-OZJpBnB_wNqlSW7", + "parent": "eS-Sz740TQReObqQ_sP03", "ctx": null, - "_testId": "urn:uuid:28cca128-a8f7-4cf1-b3f1-a622ea25a401", + "_testId": "urn:uuid:44d007ff-5570-489c-ac46-445e6c4f06a9", "cell": { - "columnId": "Trinsic", + "columnId": "OpSecId", "rowId": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document." }, "_events": {}, @@ -18372,14 +17963,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 40875, + "_idleStart": 42704, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 122, + "duration": 75, "state": "passed", - "speed": "slow" + "speed": "medium" }, { "type": "test", @@ -18394,11 +17985,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "rAhKx-OZJpBnB_wNqlSW7", + "parent": "eS-Sz740TQReObqQ_sP03", "ctx": null, - "_testId": "urn:uuid:5a43a975-6c18-4479-9102-cdc192b02112", + "_testId": "urn:uuid:0e5abd5b-ac9c-4078-b5e3-b341d8f364ed", "cell": { - "columnId": "Trinsic", + "columnId": "OpSecId", "rowId": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." }, "_events": {}, @@ -18408,12 +17999,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 40998, + "_idleStart": 42780, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 18, + "duration": 27, "state": "passed", "speed": "fast" }, @@ -18430,11 +18021,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "rAhKx-OZJpBnB_wNqlSW7", + "parent": "eS-Sz740TQReObqQ_sP03", "ctx": null, - "_testId": "urn:uuid:eb62d0cc-678f-4959-8004-66dc30b502dd", + "_testId": "urn:uuid:be5072cd-e492-408f-87ce-38eadf8e9ea6", "cell": { - "columnId": "Trinsic", + "columnId": "OpSecId", "rowId": "The value of the cryptosuite property MUST be a string that identifies the cryptographic suite. If the processing environment supports subtypes of string, the type of the cryptosuite value MUST be the https://w3id.org/security#cryptosuiteString subtype of string." }, "_events": {}, @@ -18444,12 +18035,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 41017, + "_idleStart": 42807, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 16, + "duration": 24, "state": "passed", "speed": "fast" }, @@ -18466,11 +18057,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "rAhKx-OZJpBnB_wNqlSW7", + "parent": "eS-Sz740TQReObqQ_sP03", "ctx": null, - "_testId": "urn:uuid:9ce88759-77e8-402a-add8-87c1956990a4", + "_testId": "urn:uuid:b5e33f53-133f-4def-9b89-51b41e6432a5", "cell": { - "columnId": "Trinsic", + "columnId": "OpSecId", "rowId": "If options has a non-null domain item, it MUST be equal to proof.domain or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR." }, "_events": {}, @@ -18480,14 +18071,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 41033, + "_idleStart": 42831, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 20, + "duration": 39, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", @@ -18502,11 +18093,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "rAhKx-OZJpBnB_wNqlSW7", + "parent": "eS-Sz740TQReObqQ_sP03", "ctx": null, - "_testId": "urn:uuid:5a9bd768-8191-4043-a7b5-546082cd6cd9", + "_testId": "urn:uuid:05fb3680-7332-4f8b-8d09-79537c4d3c9f", "cell": { - "columnId": "Trinsic", + "columnId": "OpSecId", "rowId": "If options has a non-null challenge item, it MUST be equal to proof.challenge or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR." }, "_events": {}, @@ -18516,12 +18107,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 41053, + "_idleStart": 42869, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 16, + "duration": 25, "state": "passed", "speed": "fast" }, @@ -18538,11 +18129,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "rAhKx-OZJpBnB_wNqlSW7", + "parent": "eS-Sz740TQReObqQ_sP03", "ctx": null, - "_testId": "urn:uuid:0229889b-fc26-4066-9e6e-8fb9adc727f4", + "_testId": "urn:uuid:bc86a7fb-17f6-48c4-a0e0-2c1deb2fb228", "cell": { - "columnId": "Trinsic", + "columnId": "OpSecId", "rowId": "(created) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." }, "_events": {}, @@ -18552,14 +18143,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 41070, + "_idleStart": 42895, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 34, + "duration": 40, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", @@ -18574,11 +18165,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "rAhKx-OZJpBnB_wNqlSW7", + "parent": "eS-Sz740TQReObqQ_sP03", "ctx": null, - "_testId": "urn:uuid:2fa92b35-8713-46f6-a9bc-17c3f3c5f9a6", + "_testId": "urn:uuid:5955d36f-41f1-4a19-999e-268a0ebf0f31", "cell": { - "columnId": "Trinsic", + "columnId": "OpSecId", "rowId": "(expires) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." }, "_events": {}, @@ -18588,14 +18179,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 41104, + "_idleStart": 42936, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 35, + "duration": 42, "state": "passed", - "speed": "fast" + "speed": "medium" } ], "root": false, @@ -18603,7 +18194,7 @@ "_retries": -1, "_beforeEach": [ { - "title": "\"before each\" hook in \"Trinsic\"", + "title": "\"before each\" hook in \"OpSecId\"", "body": "function() {\n this.currentTest.cell = {\n columnId: testDescription,\n rowId: this.currentTest.title\n };\n }", "async": 0, "sync": true, @@ -18614,7 +18205,7 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "rAhKx-OZJpBnB_wNqlSW7", + "parent": "eS-Sz740TQReObqQ_sP03", "ctx": null, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", "originalTitle": "\"before each\" hook", @@ -18626,7 +18217,7 @@ ], "_beforeAll": [ { - "title": "\"before all\" hook in \"Trinsic\"", + "title": "\"before all\" hook in \"OpSecId\"", "body": "async function() {\n proofValueTests = shouldBeProofValue({credentials, verifier});\n }", "async": 0, "sync": true, @@ -18637,7 +18228,7 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "rAhKx-OZJpBnB_wNqlSW7", + "parent": "eS-Sz740TQReObqQ_sP03", "ctx": null, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", "originalTitle": "\"before all\" hook", @@ -18647,12 +18238,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 39005, + "_idleStart": 42302, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 1, "_error": null } ], @@ -18664,77 +18255,15 @@ "_onlyTests": [], "_onlySuites": [], "delayed": false, - "parent": "lrXQsY_PzSL1o2oHNu-HO", + "parent": "KaZqTHEME9mQyu_xdGoIA", "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "_testId": "urn:uuid:3f7031d1-9cb8-48c9-ab66-881d47ea08dd" - } - ], - "root": false, - "pending": false, - "_retries": -1, - "_beforeEach": [], - "_beforeAll": [ + "_testId": "urn:uuid:d6c2170e-fb01-42f3-bdcb-3536fe8c85af" + }, { - "title": "\"before all\" hook in \"Data Integrity (verifier)\"", - "body": "async function() {\n const data = await generateTestData({...testDataOptions, optionalTests});\n // this might seem weird, but mocha won't wait for credentials to be set\n // before passing the credentials var to the tests\n // so we just update the credentials passed to the actual test suite\n Object.assign(credentials, data);\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "type": "hook", - "parent": "lrXQsY_PzSL1o2oHNu-HO", + "title": "SpruceID", "ctx": null, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "originalTitle": "\"before all\" hook", - "_events": {}, - "_eventsCount": 1, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 13758, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 44, - "_error": null - } - ], - "_afterEach": [], - "_afterAll": [], - "_timeout": 15000, - "_slow": 75, - "_bail": false, - "_onlyTests": [], - "_onlySuites": [], - "delayed": false, - "parent": "16Ju9Vz7aZ4mZFgY7ltoK", - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "matrix": true, - "report": true, - "rowLabel": "Test Name", - "columnLabel": "Verifier", - "_testId": "urn:uuid:2f5791e7-d3d4-4922-877f-b852c5fe65a7", - "columns": [ - "apicatalog.com", - "Danube Tech", - "Digital Bazaar", - "EWF", - "LearnCard", - "OpSecId", - "SpruceID", - "Trinsic" - ], - "rows": [ - { - "id": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null.", - "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=When%20deserializing%20to%20RDF%2C%20implementations%20MUST%20ensure%20that%20the%20base%20URL%20is%20set%20to%20null.", - "cells": [ + "suites": [], + "tests": [ { "type": "test", "title": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null.", @@ -18748,11 +18277,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "sB84IWOcTXVtgkn0L_FP3", + "parent": "WvyzRIP6TnxLKp9PEVOWp", "ctx": null, - "_testId": "urn:uuid:2b1eebdf-1db4-40f9-99fe-ecf5d8072c4b", + "_testId": "urn:uuid:ae854740-bf6d-477c-ba9e-d086badf4ac2", "cell": { - "columnId": "apicatalog.com", + "columnId": "SpruceID", "rowId": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null." }, "_events": {}, @@ -18762,19 +18291,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 13805, + "_idleStart": 42980, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 78, + "duration": 43, "state": "passed", - "speed": "slow" + "speed": "medium" }, { "type": "test", - "title": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=When%20deserializing%20to%20RDF%2C%20implementations%20MUST%20ensure%20that%20the%20base%20URL%20is%20set%20to%20null.';\n const credential = credentials.clone('invalidBaseUrl');\n await verificationFail({\n credential,\n verifier,\n reason: 'Should not verify VC with invalid base URL'\n });\n }", + "title": "Conforming processors MUST produce errors when non-conforming documents are consumed.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=Conforming%20processors%20MUST%20produce%20errors%20when%20non%2Dconforming%20documents%20are%20consumed.';\n // this could be read as testing all non-confirming docs or just one\n // for this test only one doc is tested as it should throw for any\n // non-conforming doc\n await verificationFail({\n credential: credentials.clone('invalidProofType'),\n verifier,\n reason: 'Should not verify VC with invalid \"proof.type\"'\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -18784,33 +18313,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "Gzkcizg3ZqNOVK153M4AF", + "parent": "WvyzRIP6TnxLKp9PEVOWp", "ctx": null, - "_testId": "urn:uuid:729e671d-5fe8-4a87-b249-7f8fde1114ec", + "_testId": "urn:uuid:e3adaba3-c903-4fe8-a40d-3e2e3742fac6", "cell": { - "columnId": "Danube Tech", - "rowId": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null." + "columnId": "SpruceID", + "rowId": "Conforming processors MUST produce errors when non-conforming documents are consumed." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=When%20deserializing%20to%20RDF%2C%20implementations%20MUST%20ensure%20that%20the%20base%20URL%20is%20set%20to%20null.", + "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=Conforming%20processors%20MUST%20produce%20errors%20when%20non%2Dconforming%20documents%20are%20consumed.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 14838, + "_idleStart": 43023, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 697, + "duration": 18, "state": "passed", - "speed": "slow" + "speed": "fast" }, { "type": "test", - "title": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=When%20deserializing%20to%20RDF%2C%20implementations%20MUST%20ensure%20that%20the%20base%20URL%20is%20set%20to%20null.';\n const credential = credentials.clone('invalidBaseUrl');\n await verificationFail({\n credential,\n verifier,\n reason: 'Should not verify VC with invalid base URL'\n });\n }", + "title": "If the \"proof\" field is missing, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('issuedVc');\n delete credential.proof;\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -18820,33 +18349,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "afHD67eaDEinS_JWzRU75", + "parent": "WvyzRIP6TnxLKp9PEVOWp", "ctx": null, - "_testId": "urn:uuid:a6d05ffb-1599-49bd-88bc-e8f11fe08dc1", + "_testId": "urn:uuid:a4eb47be-ac37-4680-b2bd-8ccb487409bc", "cell": { - "columnId": "Digital Bazaar", - "rowId": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null." + "columnId": "SpruceID", + "rowId": "If the \"proof\" field is missing, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=When%20deserializing%20to%20RDF%2C%20implementations%20MUST%20ensure%20that%20the%20base%20URL%20is%20set%20to%20null.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 24153, + "_idleStart": 43040, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 927, + "duration": 101, "state": "passed", "speed": "slow" }, { "type": "test", - "title": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=When%20deserializing%20to%20RDF%2C%20implementations%20MUST%20ensure%20that%20the%20base%20URL%20is%20set%20to%20null.';\n const credential = credentials.clone('invalidBaseUrl');\n await verificationFail({\n credential,\n verifier,\n reason: 'Should not verify VC with invalid base URL'\n });\n }", + "title": "If the \"proof\" field is invalid, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('issuedVc');\n credential.proof = null;\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -18856,33 +18384,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "WiCTAagC6srf5khQKfvNc", + "parent": "WvyzRIP6TnxLKp9PEVOWp", "ctx": null, - "_testId": "urn:uuid:5f4986a5-f056-46c5-89b7-c00e7c043ab8", + "_testId": "urn:uuid:d46093f2-2c58-41bc-83f5-1d0575db6997", "cell": { - "columnId": "EWF", - "rowId": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null." + "columnId": "SpruceID", + "rowId": "If the \"proof\" field is invalid, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=When%20deserializing%20to%20RDF%2C%20implementations%20MUST%20ensure%20that%20the%20base%20URL%20is%20set%20to%20null.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 25902, + "_idleStart": 43143, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 360, + "duration": 19, "state": "passed", - "speed": "slow" + "speed": "fast" }, { "type": "test", - "title": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=When%20deserializing%20to%20RDF%2C%20implementations%20MUST%20ensure%20that%20the%20base%20URL%20is%20set%20to%20null.';\n const credential = credentials.clone('invalidBaseUrl');\n await verificationFail({\n credential,\n verifier,\n reason: 'Should not verify VC with invalid base URL'\n });\n }", + "title": "If the \"proof.type\" field is missing, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('issuedVc');\n delete credential.proof.type;\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -18892,33 +18419,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "fzukTmGunqgrw1pwPErT7", + "parent": "WvyzRIP6TnxLKp9PEVOWp", "ctx": null, - "_testId": "urn:uuid:80528bdb-5dab-43a3-9a7b-857973b28100", + "_testId": "urn:uuid:d1adbc36-5b54-4eab-a213-082a9bbe9e24", "cell": { - "columnId": "LearnCard", - "rowId": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null." + "columnId": "SpruceID", + "rowId": "If the \"proof.type\" field is missing, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=When%20deserializing%20to%20RDF%2C%20implementations%20MUST%20ensure%20that%20the%20base%20URL%20is%20set%20to%20null.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 27935, + "_idleStart": 43163, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 188, + "duration": 17, "state": "passed", - "speed": "slow" + "speed": "fast" }, { "type": "test", - "title": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=When%20deserializing%20to%20RDF%2C%20implementations%20MUST%20ensure%20that%20the%20base%20URL%20is%20set%20to%20null.';\n const credential = credentials.clone('invalidBaseUrl');\n await verificationFail({\n credential,\n verifier,\n reason: 'Should not verify VC with invalid base URL'\n });\n }", + "title": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('invalidProofType');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -18928,33 +18454,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "f0-mulLPVXI8cAjC5yH-C", + "parent": "WvyzRIP6TnxLKp9PEVOWp", "ctx": null, - "_testId": "urn:uuid:6a329c6b-56f8-4dae-979d-101726bdbf31", + "_testId": "urn:uuid:cecb8d53-53d4-45e4-972a-e2f51b3bec25", "cell": { - "columnId": "OpSecId", - "rowId": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null." + "columnId": "SpruceID", + "rowId": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=When%20deserializing%20to%20RDF%2C%20implementations%20MUST%20ensure%20that%20the%20base%20URL%20is%20set%20to%20null.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 37902, + "_idleStart": 43180, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 204, + "duration": 19, "state": "passed", - "speed": "slow" + "speed": "fast" }, { "type": "test", - "title": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=When%20deserializing%20to%20RDF%2C%20implementations%20MUST%20ensure%20that%20the%20base%20URL%20is%20set%20to%20null.';\n const credential = credentials.clone('invalidBaseUrl');\n await verificationFail({\n credential,\n verifier,\n reason: 'Should not verify VC with invalid base URL'\n });\n }", + "title": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('noVm');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -18964,33 +18489,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "NRNAY3b3Vtm8PfC-PFvjh", + "parent": "WvyzRIP6TnxLKp9PEVOWp", "ctx": null, - "_testId": "urn:uuid:0f02a708-b826-4daa-9c72-dade763a02f2", + "_testId": "urn:uuid:b109b09f-f6a4-4e40-a267-3928f555699d", "cell": { "columnId": "SpruceID", - "rowId": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null." + "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=When%20deserializing%20to%20RDF%2C%20implementations%20MUST%20ensure%20that%20the%20base%20URL%20is%20set%20to%20null.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38605, + "_idleStart": 43199, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 64, + "duration": 18, "state": "passed", - "speed": "medium" + "speed": "fast" }, { "type": "test", - "title": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=When%20deserializing%20to%20RDF%2C%20implementations%20MUST%20ensure%20that%20the%20base%20URL%20is%20set%20to%20null.';\n const credential = credentials.clone('invalidBaseUrl');\n await verificationFail({\n credential,\n verifier,\n reason: 'Should not verify VC with invalid base URL'\n });\n }", + "title": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('invalidVm');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -19000,39 +18524,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "rAhKx-OZJpBnB_wNqlSW7", + "parent": "WvyzRIP6TnxLKp9PEVOWp", "ctx": null, - "_testId": "urn:uuid:d13d5d83-e6e8-45f5-9c0e-f43a9e3e5a83", + "_testId": "urn:uuid:41998895-106b-4da2-a082-684549f6c16c", "cell": { - "columnId": "Trinsic", - "rowId": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null." + "columnId": "SpruceID", + "rowId": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=When%20deserializing%20to%20RDF%2C%20implementations%20MUST%20ensure%20that%20the%20base%20URL%20is%20set%20to%20null.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 39006, + "_idleStart": 43217, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 1682, + "duration": 16, "state": "passed", - "speed": "slow" - } - ] - }, - { - "id": "Conforming processors MUST produce errors when non-conforming documents are consumed.", - "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=Conforming%20processors%20MUST%20produce%20errors%20when%20non%2Dconforming%20documents%20are%20consumed.", - "cells": [ + "speed": "fast" + }, { "type": "test", - "title": "Conforming processors MUST produce errors when non-conforming documents are consumed.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=Conforming%20processors%20MUST%20produce%20errors%20when%20non%2Dconforming%20documents%20are%20consumed.';\n // this could be read as testing all non-confirming docs or just one\n // for this test only one doc is tested as it should throw for any\n // non-conforming doc\n await verificationFail({\n credential: credentials.clone('invalidProofType'),\n verifier,\n reason: 'Should not verify VC with invalid \"proof.type\"'\n });\n }", + "title": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('noProofPurpose');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -19042,33 +18559,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "sB84IWOcTXVtgkn0L_FP3", + "parent": "WvyzRIP6TnxLKp9PEVOWp", "ctx": null, - "_testId": "urn:uuid:dfd7e0ca-5642-49d4-aa07-49ea00df2b73", + "_testId": "urn:uuid:cf585086-d05e-410d-8728-f10d55c137a0", "cell": { - "columnId": "apicatalog.com", - "rowId": "Conforming processors MUST produce errors when non-conforming documents are consumed." + "columnId": "SpruceID", + "rowId": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=Conforming%20processors%20MUST%20produce%20errors%20when%20non%2Dconforming%20documents%20are%20consumed.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 13883, + "_idleStart": 43232, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 55, + "duration": 22, "state": "passed", - "speed": "medium" + "speed": "fast" }, { "type": "test", - "title": "Conforming processors MUST produce errors when non-conforming documents are consumed.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=Conforming%20processors%20MUST%20produce%20errors%20when%20non%2Dconforming%20documents%20are%20consumed.';\n // this could be read as testing all non-confirming docs or just one\n // for this test only one doc is tested as it should throw for any\n // non-conforming doc\n await verificationFail({\n credential: credentials.clone('invalidProofType'),\n verifier,\n reason: 'Should not verify VC with invalid \"proof.type\"'\n });\n }", + "title": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('invalidProofPurpose');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -19078,33 +18594,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "Gzkcizg3ZqNOVK153M4AF", + "parent": "WvyzRIP6TnxLKp9PEVOWp", "ctx": null, - "_testId": "urn:uuid:e506ea29-76a0-40c2-967f-0ce9acbd576f", + "_testId": "urn:uuid:5bc584db-11f4-45e7-8dfc-4bca52fcbf7a", "cell": { - "columnId": "Danube Tech", - "rowId": "Conforming processors MUST produce errors when non-conforming documents are consumed." + "columnId": "SpruceID", + "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=Conforming%20processors%20MUST%20produce%20errors%20when%20non%2Dconforming%20documents%20are%20consumed.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 15535, + "_idleStart": 43254, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 230, + "duration": 18, "state": "passed", - "speed": "slow" + "speed": "fast" }, { "type": "test", - "title": "Conforming processors MUST produce errors when non-conforming documents are consumed.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=Conforming%20processors%20MUST%20produce%20errors%20when%20non%2Dconforming%20documents%20are%20consumed.';\n // this could be read as testing all non-confirming docs or just one\n // for this test only one doc is tested as it should throw for any\n // non-conforming doc\n await verificationFail({\n credential: credentials.clone('invalidProofType'),\n verifier,\n reason: 'Should not verify VC with invalid \"proof.type\"'\n });\n }", + "title": "If expectedProofPurpose was given, and it does not match proof.proofPurpose, an error MUST be raised and SHOULD convey an error type of PROOF_VERIFICATION_ERROR.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#:~:text=If%20expectedProofPurpose%20was%20given%2C%20and%20it%20does%20not%20match%20proof.proofPurpose%2C%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_VERIFICATION_ERROR.';\n // NOTE: expectedProofPurpose should be specified by verifiers internally\n // it is very unlikely to be invalidProofPurpose\n await verificationFail({\n credential: credentials.clone('invalidProofPurpose'),\n verifier,\n reason: 'Verifier should reject VC with invalid proof purpose.'\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -19114,33 +18629,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "afHD67eaDEinS_JWzRU75", + "parent": "WvyzRIP6TnxLKp9PEVOWp", "ctx": null, - "_testId": "urn:uuid:8c73c560-b35d-4f62-a16f-9258c290972f", + "_testId": "urn:uuid:869b6d7c-3f7e-4dc0-a798-8d26c6d9987a", "cell": { - "columnId": "Digital Bazaar", - "rowId": "Conforming processors MUST produce errors when non-conforming documents are consumed." + "columnId": "SpruceID", + "rowId": "If expectedProofPurpose was given, and it does not match proof.proofPurpose, an error MUST be raised and SHOULD convey an error type of PROOF_VERIFICATION_ERROR." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=Conforming%20processors%20MUST%20produce%20errors%20when%20non%2Dconforming%20documents%20are%20consumed.", + "link": "https://w3c.github.io/vc-data-integrity/#:~:text=If%20expectedProofPurpose%20was%20given%2C%20and%20it%20does%20not%20match%20proof.proofPurpose%2C%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_VERIFICATION_ERROR.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 25080, + "_idleStart": 43273, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 45, + "duration": 16, "state": "passed", - "speed": "medium" + "speed": "fast" }, { "type": "test", - "title": "Conforming processors MUST produce errors when non-conforming documents are consumed.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=Conforming%20processors%20MUST%20produce%20errors%20when%20non%2Dconforming%20documents%20are%20consumed.';\n // this could be read as testing all non-confirming docs or just one\n // for this test only one doc is tested as it should throw for any\n // non-conforming doc\n await verificationFail({\n credential: credentials.clone('invalidProofType'),\n verifier,\n reason: 'Should not verify VC with invalid \"proof.type\"'\n });\n }", + "title": "The proofValue property MUST be used, as specified in 2.1 Proofs.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20proofValue%20property%20MUST%20be%20used%2C%20as%20specified%20in%202.1%20Proofs.';\n await proofValueTests;\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -19150,33 +18665,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "WiCTAagC6srf5khQKfvNc", + "parent": "WvyzRIP6TnxLKp9PEVOWp", "ctx": null, - "_testId": "urn:uuid:8a082ea3-1f3a-447a-af4b-06bb7257276f", + "_testId": "urn:uuid:02bd08f1-e74b-4750-9b89-2454e16e0ba5", "cell": { - "columnId": "EWF", - "rowId": "Conforming processors MUST produce errors when non-conforming documents are consumed." + "columnId": "SpruceID", + "rowId": "The proofValue property MUST be used, as specified in 2.1 Proofs." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=Conforming%20processors%20MUST%20produce%20errors%20when%20non%2Dconforming%20documents%20are%20consumed.", + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20proofValue%20property%20MUST%20be%20used%2C%20as%20specified%20in%202.1%20Proofs.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 26263, + "_idleStart": 43290, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 86, + "duration": 0, "state": "passed", - "speed": "slow" + "speed": "fast" }, { "type": "test", - "title": "Conforming processors MUST produce errors when non-conforming documents are consumed.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=Conforming%20processors%20MUST%20produce%20errors%20when%20non%2Dconforming%20documents%20are%20consumed.';\n // this could be read as testing all non-confirming docs or just one\n // for this test only one doc is tested as it should throw for any\n // non-conforming doc\n await verificationFail({\n credential: credentials.clone('invalidProofType'),\n verifier,\n reason: 'Should not verify VC with invalid \"proof.type\"'\n });\n }", + "title": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof';\n await proofValueTests;\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -19186,33 +18701,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "fzukTmGunqgrw1pwPErT7", + "parent": "WvyzRIP6TnxLKp9PEVOWp", "ctx": null, - "_testId": "urn:uuid:c1c09704-5853-4ca7-beaf-d0faccc70aa4", + "_testId": "urn:uuid:224b2170-a9c6-4475-9e2d-726a8ba2f635", "cell": { - "columnId": "LearnCard", - "rowId": "Conforming processors MUST produce errors when non-conforming documents are consumed." + "columnId": "SpruceID", + "rowId": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=Conforming%20processors%20MUST%20produce%20errors%20when%20non%2Dconforming%20documents%20are%20consumed.", + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 28124, + "_idleStart": 43290, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 8695, + "duration": 0, "state": "passed", - "speed": "slow" + "speed": "fast" }, { "type": "test", - "title": "Conforming processors MUST produce errors when non-conforming documents are consumed.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=Conforming%20processors%20MUST%20produce%20errors%20when%20non%2Dconforming%20documents%20are%20consumed.';\n // this could be read as testing all non-confirming docs or just one\n // for this test only one doc is tested as it should throw for any\n // non-conforming doc\n await verificationFail({\n credential: credentials.clone('invalidProofType'),\n verifier,\n reason: 'Should not verify VC with invalid \"proof.type\"'\n });\n }", + "title": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.';\n await verificationFail({\n credential: credentials.clone('undefinedTerm'),\n verifier,\n reason: 'Should fail to verify VC when data is dropped by JSON-LD'\n });\n const undefinedTerm = credentials.clone('issuedVc');\n undefinedTerm.credentialSubject.undefinedTerm = 'IfDroppedWillVerify';\n await verificationFail({\n credential: undefinedTerm,\n verifier,\n reason: 'Should fail to verify VC if an undefined term is added ' +\n 'after issuance.'\n });\n const undefinedType = credentials.clone('issuedVc');\n undefinedType.type.push('UndefinedType');\n await verificationFail({\n credential: undefinedType,\n verifier,\n reason: 'Should fail to verify VC if an undefined type is added ' +\n 'after issuance.'\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -19222,33 +18737,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "f0-mulLPVXI8cAjC5yH-C", + "parent": "WvyzRIP6TnxLKp9PEVOWp", "ctx": null, - "_testId": "urn:uuid:63efb150-4860-4104-9285-e825463517da", + "_testId": "urn:uuid:2e6a44f5-e798-4e28-8a29-1d0211ae52e9", "cell": { - "columnId": "OpSecId", - "rowId": "Conforming processors MUST produce errors when non-conforming documents are consumed." + "columnId": "SpruceID", + "rowId": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=Conforming%20processors%20MUST%20produce%20errors%20when%20non%2Dconforming%20documents%20are%20consumed.", + "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38105, + "_idleStart": 43290, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 26, + "duration": 56, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "Conforming processors MUST produce errors when non-conforming documents are consumed.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=Conforming%20processors%20MUST%20produce%20errors%20when%20non%2Dconforming%20documents%20are%20consumed.';\n // this could be read as testing all non-confirming docs or just one\n // for this test only one doc is tested as it should throw for any\n // non-conforming doc\n await verificationFail({\n credential: credentials.clone('invalidProofType'),\n verifier,\n reason: 'Should not verify VC with invalid \"proof.type\"'\n });\n }", + "title": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC';\n const credential = credentials.clone('invalidCreated');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -19258,33 +18773,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "NRNAY3b3Vtm8PfC-PFvjh", + "parent": "WvyzRIP6TnxLKp9PEVOWp", "ctx": null, - "_testId": "urn:uuid:403329ce-d7d7-4cef-8469-a5e484c502af", + "_testId": "urn:uuid:65729849-e9e5-468d-ac33-eed648628bda", "cell": { "columnId": "SpruceID", - "rowId": "Conforming processors MUST produce errors when non-conforming documents are consumed." + "rowId": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=Conforming%20processors%20MUST%20produce%20errors%20when%20non%2Dconforming%20documents%20are%20consumed.", + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38669, + "_idleStart": 43346, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 17, + "duration": 21, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "Conforming processors MUST produce errors when non-conforming documents are consumed.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=Conforming%20processors%20MUST%20produce%20errors%20when%20non%2Dconforming%20documents%20are%20consumed.';\n // this could be read as testing all non-confirming docs or just one\n // for this test only one doc is tested as it should throw for any\n // non-conforming doc\n await verificationFail({\n credential: credentials.clone('invalidProofType'),\n verifier,\n reason: 'Should not verify VC with invalid \"proof.type\"'\n });\n }", + "title": "The value of the cryptosuite property MUST be a string that identifies the cryptographic suite. If the processing environment supports subtypes of string, the type of the cryptosuite value MUST be the https://w3id.org/security#cryptosuiteString subtype of string.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=The%20value%20of%20the%20cryptosuite%20property%20MUST%20be%20a%20string%20that%20identifies%20the%20cryptographic%20suite.%20If%20the%20processing%20environment%20supports%20subtypes%20of%20string%2C%20the%20type%20of%20the%20cryptosuite%20value%20MUST%20be%20the%20https%3A//w3id.org/security%23cryptosuiteString%20subtype%20of%20string.';\n const credential = credentials.clone('invalidCryptosuite');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -19294,38 +18809,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "rAhKx-OZJpBnB_wNqlSW7", + "parent": "WvyzRIP6TnxLKp9PEVOWp", "ctx": null, - "_testId": "urn:uuid:1cf703f3-562a-4575-b620-68a49c857e1a", + "_testId": "urn:uuid:667f429c-aabb-4df6-a839-c448667a1633", "cell": { - "columnId": "Trinsic", - "rowId": "Conforming processors MUST produce errors when non-conforming documents are consumed." + "columnId": "SpruceID", + "rowId": "The value of the cryptosuite property MUST be a string that identifies the cryptographic suite. If the processing environment supports subtypes of string, the type of the cryptosuite value MUST be the https://w3id.org/security#cryptosuiteString subtype of string." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=Conforming%20processors%20MUST%20produce%20errors%20when%20non%2Dconforming%20documents%20are%20consumed.", + "link": "https://w3c.github.io/vc-data-integrity/#introduction:~:text=The%20value%20of%20the%20cryptosuite%20property%20MUST%20be%20a%20string%20that%20identifies%20the%20cryptographic%20suite.%20If%20the%20processing%20environment%20supports%20subtypes%20of%20string%2C%20the%20type%20of%20the%20cryptosuite%20value%20MUST%20be%20the%20https%3A//w3id.org/security%23cryptosuiteString%20subtype%20of%20string.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 40689, + "_idleStart": 43367, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 16, + "duration": 19, "state": "passed", "speed": "fast" - } - ] - }, - { - "id": "If the \"proof\" field is missing, an error MUST be raised.", - "cells": [ + }, { "type": "test", - "title": "If the \"proof\" field is missing, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('issuedVc');\n delete credential.proof;\n await verificationFail({credential, verifier});\n }", + "title": "If options has a non-null domain item, it MUST be equal to proof.domain or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=If%20options%20has%20a%20non%2Dnull%20domain%20item%2C%20it%20MUST%20be%20equal%20to%20proof.domain%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.';\n const credential = credentials.clone('invalidDomain');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example'\n }\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -19335,32 +18845,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "sB84IWOcTXVtgkn0L_FP3", + "parent": "WvyzRIP6TnxLKp9PEVOWp", "ctx": null, - "_testId": "urn:uuid:47079287-d9dc-48d9-9640-ca8ba3587061", + "_testId": "urn:uuid:06ff9560-3c8e-4187-841d-c4c590656b86", "cell": { - "columnId": "apicatalog.com", - "rowId": "If the \"proof\" field is missing, an error MUST be raised." + "columnId": "SpruceID", + "rowId": "If options has a non-null domain item, it MUST be equal to proof.domain or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR." }, "_events": {}, "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=If%20options%20has%20a%20non%2Dnull%20domain%20item%2C%20it%20MUST%20be%20equal%20to%20proof.domain%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 13937, + "_idleStart": 43386, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 49, + "duration": 18, "state": "passed", - "speed": "medium" + "speed": "fast" }, { "type": "test", - "title": "If the \"proof\" field is missing, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('issuedVc');\n delete credential.proof;\n await verificationFail({credential, verifier});\n }", + "title": "If options has a non-null challenge item, it MUST be equal to proof.challenge or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#add-proof:~:text=If%20options%20has%20a%20non%2Dnull%20challenge%20item%2C%20it%20MUST%20be%20equal%20to%20proof.challenge%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.';\n const credential = credentials.clone('invalidChallenge');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example',\n challenge: '1235abcd6789'\n }\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -19370,32 +18881,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "Gzkcizg3ZqNOVK153M4AF", + "parent": "WvyzRIP6TnxLKp9PEVOWp", "ctx": null, - "_testId": "urn:uuid:dda8fd0b-ef0c-4908-8c60-e52b998ba6b1", + "_testId": "urn:uuid:c473912b-8098-4ddb-91fb-875952f1a5e5", "cell": { - "columnId": "Danube Tech", - "rowId": "If the \"proof\" field is missing, an error MUST be raised." + "columnId": "SpruceID", + "rowId": "If options has a non-null challenge item, it MUST be equal to proof.challenge or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR." }, "_events": {}, "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#add-proof:~:text=If%20options%20has%20a%20non%2Dnull%20challenge%20item%2C%20it%20MUST%20be%20equal%20to%20proof.challenge%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 15765, + "_idleStart": 43404, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 792, + "duration": 17, "state": "passed", - "speed": "slow" + "speed": "fast" }, { "type": "test", - "title": "If the \"proof\" field is missing, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('issuedVc');\n delete credential.proof;\n await verificationFail({credential, verifier});\n }", + "title": "(created) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset.", + "body": "async function() {\n this.test.link = 'https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=be%20a%20string.-,created,-The%20date%20and';\n await verificationFail({\n credential: credentials.clone('noOffsetCreated'),\n verifier\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -19405,32 +18917,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "afHD67eaDEinS_JWzRU75", + "parent": "WvyzRIP6TnxLKp9PEVOWp", "ctx": null, - "_testId": "urn:uuid:0a6b227e-be9a-45b0-b7da-6338f882eb12", + "_testId": "urn:uuid:8f093c01-ac08-4d15-a7cc-b0b68e9260ee", "cell": { - "columnId": "Digital Bazaar", - "rowId": "If the \"proof\" field is missing, an error MUST be raised." + "columnId": "SpruceID", + "rowId": "(created) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." }, "_events": {}, "_eventsCount": 1, + "link": "https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=be%20a%20string.-,created,-The%20date%20and", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 25124, + "_idleStart": 43420, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 62, + "duration": 17, "state": "passed", - "speed": "medium" + "speed": "fast" }, { "type": "test", - "title": "If the \"proof\" field is missing, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('issuedVc');\n delete credential.proof;\n await verificationFail({credential, verifier});\n }", + "title": "(expires) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset.", + "body": "async function() {\n this.test.link = 'https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=interpreted%20as%20UTC.-,expires,-The%20expires%20property';\n await verificationFail({\n credential: credentials.clone('noOffsetExpires'),\n verifier\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -19440,32 +18953,37 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "WiCTAagC6srf5khQKfvNc", + "parent": "WvyzRIP6TnxLKp9PEVOWp", "ctx": null, - "_testId": "urn:uuid:d9adee30-d4ff-4728-84ec-fb5d48890270", + "_testId": "urn:uuid:5e0902ea-ac93-4d5e-a0e0-c61dbe0040d6", "cell": { - "columnId": "EWF", - "rowId": "If the \"proof\" field is missing, an error MUST be raised." + "columnId": "SpruceID", + "rowId": "(expires) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." }, "_events": {}, "_eventsCount": 1, + "link": "https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=interpreted%20as%20UTC.-,expires,-The%20expires%20property", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 26350, + "_idleStart": 43438, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 86, + "duration": 17, "state": "passed", - "speed": "slow" - }, + "speed": "fast" + } + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [ { - "type": "test", - "title": "If the \"proof\" field is missing, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('issuedVc');\n delete credential.proof;\n await verificationFail({credential, verifier});\n }", + "title": "\"before each\" hook in \"SpruceID\"", + "body": "function() {\n this.currentTest.cell = {\n columnId: testDescription,\n rowId: this.currentTest.title\n };\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -19474,33 +18992,21 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "fzukTmGunqgrw1pwPErT7", + "type": "hook", + "parent": "WvyzRIP6TnxLKp9PEVOWp", "ctx": null, - "_testId": "urn:uuid:8a489943-036f-46c8-a70b-cab950c389ab", - "cell": { - "columnId": "LearnCard", - "rowId": "If the \"proof\" field is missing, an error MUST be raised." - }, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "originalTitle": "\"before each\" hook", "_events": {}, "_eventsCount": 1, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 36819, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 33, - "state": "passed", - "speed": "fast" - }, + "duration": 0, + "_error": null + } + ], + "_beforeAll": [ { - "type": "test", - "title": "If the \"proof\" field is missing, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('issuedVc');\n delete credential.proof;\n await verificationFail({credential, verifier});\n }", + "title": "\"before all\" hook in \"SpruceID\"", + "body": "async function() {\n proofValueTests = shouldBeProofValue({credentials, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -19509,33 +19015,47 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "f0-mulLPVXI8cAjC5yH-C", + "type": "hook", + "parent": "WvyzRIP6TnxLKp9PEVOWp", "ctx": null, - "_testId": "urn:uuid:5da64bd8-318f-49a3-98ee-7f9eb112201e", - "cell": { - "columnId": "OpSecId", - "rowId": "If the \"proof\" field is missing, an error MUST be raised." - }, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "originalTitle": "\"before all\" hook", "_events": {}, "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38132, + "_idleStart": 42978, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 34, - "state": "passed", - "speed": "fast" - }, + "duration": 0, + "_error": null + } + ], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "KaZqTHEME9mQyu_xdGoIA", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "_testId": "urn:uuid:06daa980-9bcb-463a-9c59-8487b6a61ec1" + }, + { + "title": "Trinsic", + "ctx": null, + "suites": [], + "tests": [ { "type": "test", - "title": "If the \"proof\" field is missing, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('issuedVc');\n delete credential.proof;\n await verificationFail({credential, verifier});\n }", + "title": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=When%20deserializing%20to%20RDF%2C%20implementations%20MUST%20ensure%20that%20the%20base%20URL%20is%20set%20to%20null.';\n const credential = credentials.clone('invalidBaseUrl');\n await verificationFail({\n credential,\n verifier,\n reason: 'Should not verify VC with invalid base URL'\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -19545,32 +19065,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "NRNAY3b3Vtm8PfC-PFvjh", + "parent": "oxQe-kP64Nqi6XD181EqS", "ctx": null, - "_testId": "urn:uuid:1005855d-795e-44ea-8efc-fee325eef010", + "_testId": "urn:uuid:c76255df-0799-47ec-86bf-e8b1b3ceb22c", "cell": { - "columnId": "SpruceID", - "rowId": "If the \"proof\" field is missing, an error MUST be raised." + "columnId": "Trinsic", + "rowId": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null." }, "_events": {}, "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=When%20deserializing%20to%20RDF%2C%20implementations%20MUST%20ensure%20that%20the%20base%20URL%20is%20set%20to%20null.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38686, + "_idleStart": 43457, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 14, + "duration": 434, "state": "passed", - "speed": "fast" + "speed": "slow" }, { "type": "test", - "title": "If the \"proof\" field is missing, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('issuedVc');\n delete credential.proof;\n await verificationFail({credential, verifier});\n }", + "title": "Conforming processors MUST produce errors when non-conforming documents are consumed.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=Conforming%20processors%20MUST%20produce%20errors%20when%20non%2Dconforming%20documents%20are%20consumed.';\n // this could be read as testing all non-confirming docs or just one\n // for this test only one doc is tested as it should throw for any\n // non-conforming doc\n await verificationFail({\n credential: credentials.clone('invalidProofType'),\n verifier,\n reason: 'Should not verify VC with invalid \"proof.type\"'\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -19580,37 +19101,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "rAhKx-OZJpBnB_wNqlSW7", + "parent": "oxQe-kP64Nqi6XD181EqS", "ctx": null, - "_testId": "urn:uuid:2656bf6a-773d-49f4-b3b9-657ec54b310a", + "_testId": "urn:uuid:b3d8a70e-1101-42f0-82e3-c27e40ff8e0f", "cell": { "columnId": "Trinsic", - "rowId": "If the \"proof\" field is missing, an error MUST be raised." + "rowId": "Conforming processors MUST produce errors when non-conforming documents are consumed." }, "_events": {}, "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=Conforming%20processors%20MUST%20produce%20errors%20when%20non%2Dconforming%20documents%20are%20consumed.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 40705, + "_idleStart": 43891, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 23, + "duration": 17, "state": "passed", "speed": "fast" - } - ] - }, - { - "id": "If the \"proof\" field is invalid, an error MUST be raised.", - "cells": [ + }, { "type": "test", - "title": "If the \"proof\" field is invalid, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('issuedVc');\n credential.proof = null;\n await verificationFail({credential, verifier});\n }", + "title": "If the \"proof\" field is missing, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('issuedVc');\n delete credential.proof;\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -19620,12 +19137,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "sB84IWOcTXVtgkn0L_FP3", + "parent": "oxQe-kP64Nqi6XD181EqS", "ctx": null, - "_testId": "urn:uuid:f44df773-bdf1-4cb3-87d7-3bfca5f1949e", + "_testId": "urn:uuid:3ee12295-bc49-43e7-bde8-a72f9983fb93", "cell": { - "columnId": "apicatalog.com", - "rowId": "If the \"proof\" field is invalid, an error MUST be raised." + "columnId": "Trinsic", + "rowId": "If the \"proof\" field is missing, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, @@ -19633,14 +19150,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 13987, + "_idleStart": 43909, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 55, + "duration": 19, "state": "passed", - "speed": "medium" + "speed": "fast" }, { "type": "test", @@ -19655,11 +19172,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "Gzkcizg3ZqNOVK153M4AF", + "parent": "oxQe-kP64Nqi6XD181EqS", "ctx": null, - "_testId": "urn:uuid:485469d9-c66a-416b-9d0d-2aa4c7442591", + "_testId": "urn:uuid:a5e299cc-aeb3-4746-bbb8-8b10703b18e6", "cell": { - "columnId": "Danube Tech", + "columnId": "Trinsic", "rowId": "If the \"proof\" field is invalid, an error MUST be raised." }, "_events": {}, @@ -19668,19 +19185,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 16557, + "_idleStart": 43928, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 538, + "duration": 17, "state": "passed", - "speed": "slow" + "speed": "fast" }, { "type": "test", - "title": "If the \"proof\" field is invalid, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('issuedVc');\n credential.proof = null;\n await verificationFail({credential, verifier});\n }", + "title": "If the \"proof.type\" field is missing, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('issuedVc');\n delete credential.proof.type;\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -19690,12 +19207,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "afHD67eaDEinS_JWzRU75", + "parent": "oxQe-kP64Nqi6XD181EqS", "ctx": null, - "_testId": "urn:uuid:7ef92dd6-12a7-4469-94d8-104b502af43c", + "_testId": "urn:uuid:1d87aca4-7780-46ac-9c2b-c134264e9ff9", "cell": { - "columnId": "Digital Bazaar", - "rowId": "If the \"proof\" field is invalid, an error MUST be raised." + "columnId": "Trinsic", + "rowId": "If the \"proof.type\" field is missing, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, @@ -19703,19 +19220,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 25187, + "_idleStart": 43945, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 41, + "duration": 20, "state": "passed", - "speed": "medium" + "speed": "fast" }, { "type": "test", - "title": "If the \"proof\" field is invalid, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('issuedVc');\n credential.proof = null;\n await verificationFail({credential, verifier});\n }", + "title": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('invalidProofType');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -19725,12 +19242,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "WiCTAagC6srf5khQKfvNc", + "parent": "oxQe-kP64Nqi6XD181EqS", "ctx": null, - "_testId": "urn:uuid:84ab822d-6548-4336-a9e8-2c11f2af2deb", + "_testId": "urn:uuid:83af0126-586c-4be1-a3fa-9cf4a03b1e36", "cell": { - "columnId": "EWF", - "rowId": "If the \"proof\" field is invalid, an error MUST be raised." + "columnId": "Trinsic", + "rowId": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised." }, "_events": {}, "_eventsCount": 1, @@ -19738,19 +19255,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 26435, + "_idleStart": 43965, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 88, + "duration": 18, "state": "passed", - "speed": "slow" + "speed": "fast" }, { "type": "test", - "title": "If the \"proof\" field is invalid, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('issuedVc');\n credential.proof = null;\n await verificationFail({credential, verifier});\n }", + "title": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('noVm');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -19760,12 +19277,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "fzukTmGunqgrw1pwPErT7", + "parent": "oxQe-kP64Nqi6XD181EqS", "ctx": null, - "_testId": "urn:uuid:f8ae2799-3d5f-4982-ae51-479201cd72ac", + "_testId": "urn:uuid:40488352-9760-42e7-b37a-cd3b31f7da84", "cell": { - "columnId": "LearnCard", - "rowId": "If the \"proof\" field is invalid, an error MUST be raised." + "columnId": "Trinsic", + "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, @@ -19773,19 +19290,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 36851, + "_idleStart": 43984, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 40, + "duration": 20, "state": "passed", - "speed": "medium" + "speed": "fast" }, { "type": "test", - "title": "If the \"proof\" field is invalid, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('issuedVc');\n credential.proof = null;\n await verificationFail({credential, verifier});\n }", + "title": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('invalidVm');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -19795,12 +19312,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "f0-mulLPVXI8cAjC5yH-C", + "parent": "oxQe-kP64Nqi6XD181EqS", "ctx": null, - "_testId": "urn:uuid:a8311ee4-b0ba-4d4a-89da-6be60e94bd47", + "_testId": "urn:uuid:708db87b-2a42-4794-89c1-1e21caf0dc23", "cell": { - "columnId": "OpSecId", - "rowId": "If the \"proof\" field is invalid, an error MUST be raised." + "columnId": "Trinsic", + "rowId": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, @@ -19808,19 +19325,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38166, + "_idleStart": 44003, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 26, + "duration": 25, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "If the \"proof\" field is invalid, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('issuedVc');\n credential.proof = null;\n await verificationFail({credential, verifier});\n }", + "title": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('noProofPurpose');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -19830,12 +19347,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "NRNAY3b3Vtm8PfC-PFvjh", + "parent": "oxQe-kP64Nqi6XD181EqS", "ctx": null, - "_testId": "urn:uuid:b0e82af9-1b8a-4bda-9131-cbca531be8d6", + "_testId": "urn:uuid:93df03db-b5e7-4a3d-80c0-6e918feb11bb", "cell": { - "columnId": "SpruceID", - "rowId": "If the \"proof\" field is invalid, an error MUST be raised." + "columnId": "Trinsic", + "rowId": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, @@ -19843,19 +19360,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38701, + "_idleStart": 44029, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 18, + "duration": 19, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "If the \"proof\" field is invalid, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('issuedVc');\n credential.proof = null;\n await verificationFail({credential, verifier});\n }", + "title": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('invalidProofPurpose');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -19865,12 +19382,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "rAhKx-OZJpBnB_wNqlSW7", + "parent": "oxQe-kP64Nqi6XD181EqS", "ctx": null, - "_testId": "urn:uuid:54b5a863-9820-48d6-a452-fd7cbea2ab50", + "_testId": "urn:uuid:0dcbda31-ccb2-4457-8e4b-5761841646c5", "cell": { "columnId": "Trinsic", - "rowId": "If the \"proof\" field is invalid, an error MUST be raised." + "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, @@ -19878,7 +19395,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 40728, + "_idleStart": 44048, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -19886,16 +19403,11 @@ "duration": 20, "state": "passed", "speed": "fast" - } - ] - }, - { - "id": "If the \"proof.type\" field is missing, an error MUST be raised.", - "cells": [ + }, { "type": "test", - "title": "If the \"proof.type\" field is missing, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('issuedVc');\n delete credential.proof.type;\n await verificationFail({credential, verifier});\n }", + "title": "If expectedProofPurpose was given, and it does not match proof.proofPurpose, an error MUST be raised and SHOULD convey an error type of PROOF_VERIFICATION_ERROR.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#:~:text=If%20expectedProofPurpose%20was%20given%2C%20and%20it%20does%20not%20match%20proof.proofPurpose%2C%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_VERIFICATION_ERROR.';\n // NOTE: expectedProofPurpose should be specified by verifiers internally\n // it is very unlikely to be invalidProofPurpose\n await verificationFail({\n credential: credentials.clone('invalidProofPurpose'),\n verifier,\n reason: 'Verifier should reject VC with invalid proof purpose.'\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -19905,32 +19417,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "sB84IWOcTXVtgkn0L_FP3", + "parent": "oxQe-kP64Nqi6XD181EqS", "ctx": null, - "_testId": "urn:uuid:525d6c97-9ca0-4f6f-ad5b-fb98ec37c76d", + "_testId": "urn:uuid:06c08f22-660e-4684-b83d-21a4ad5adaa3", "cell": { - "columnId": "apicatalog.com", - "rowId": "If the \"proof.type\" field is missing, an error MUST be raised." + "columnId": "Trinsic", + "rowId": "If expectedProofPurpose was given, and it does not match proof.proofPurpose, an error MUST be raised and SHOULD convey an error type of PROOF_VERIFICATION_ERROR." }, "_events": {}, "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#:~:text=If%20expectedProofPurpose%20was%20given%2C%20and%20it%20does%20not%20match%20proof.proofPurpose%2C%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_VERIFICATION_ERROR.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 14042, + "_idleStart": 44068, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 47, + "duration": 19, "state": "passed", - "speed": "medium" + "speed": "fast" }, { "type": "test", - "title": "If the \"proof.type\" field is missing, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('issuedVc');\n delete credential.proof.type;\n await verificationFail({credential, verifier});\n }", + "title": "The proofValue property MUST be used, as specified in 2.1 Proofs.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20proofValue%20property%20MUST%20be%20used%2C%20as%20specified%20in%202.1%20Proofs.';\n await proofValueTests;\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -19940,32 +19453,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "Gzkcizg3ZqNOVK153M4AF", + "parent": "oxQe-kP64Nqi6XD181EqS", "ctx": null, - "_testId": "urn:uuid:d3de7895-f01d-43e8-a304-7e67f72061d4", + "_testId": "urn:uuid:9266cd64-b28f-4c11-b7e3-0468d5a27c1d", "cell": { - "columnId": "Danube Tech", - "rowId": "If the \"proof.type\" field is missing, an error MUST be raised." + "columnId": "Trinsic", + "rowId": "The proofValue property MUST be used, as specified in 2.1 Proofs." }, "_events": {}, "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20proofValue%20property%20MUST%20be%20used%2C%20as%20specified%20in%202.1%20Proofs.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 17095, + "_idleStart": 44087, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 225, + "duration": 0, "state": "passed", - "speed": "slow" + "speed": "fast" }, { "type": "test", - "title": "If the \"proof.type\" field is missing, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('issuedVc');\n delete credential.proof.type;\n await verificationFail({credential, verifier});\n }", + "title": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof';\n await proofValueTests;\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -19975,32 +19489,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "afHD67eaDEinS_JWzRU75", + "parent": "oxQe-kP64Nqi6XD181EqS", "ctx": null, - "_testId": "urn:uuid:3850ecbe-51bd-4817-9f4f-f3340ce91509", + "_testId": "urn:uuid:f5047005-d045-4014-870f-6c3b6b89bd9b", "cell": { - "columnId": "Digital Bazaar", - "rowId": "If the \"proof.type\" field is missing, an error MUST be raised." + "columnId": "Trinsic", + "rowId": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification." }, "_events": {}, "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 25228, + "_idleStart": 44087, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 40, + "duration": 0, "state": "passed", - "speed": "medium" + "speed": "fast" }, { "type": "test", - "title": "If the \"proof.type\" field is missing, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('issuedVc');\n delete credential.proof.type;\n await verificationFail({credential, verifier});\n }", + "title": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.';\n await verificationFail({\n credential: credentials.clone('undefinedTerm'),\n verifier,\n reason: 'Should fail to verify VC when data is dropped by JSON-LD'\n });\n const undefinedTerm = credentials.clone('issuedVc');\n undefinedTerm.credentialSubject.undefinedTerm = 'IfDroppedWillVerify';\n await verificationFail({\n credential: undefinedTerm,\n verifier,\n reason: 'Should fail to verify VC if an undefined term is added ' +\n 'after issuance.'\n });\n const undefinedType = credentials.clone('issuedVc');\n undefinedType.type.push('UndefinedType');\n await verificationFail({\n credential: undefinedType,\n verifier,\n reason: 'Should fail to verify VC if an undefined type is added ' +\n 'after issuance.'\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -20010,32 +19525,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "WiCTAagC6srf5khQKfvNc", + "parent": "oxQe-kP64Nqi6XD181EqS", "ctx": null, - "_testId": "urn:uuid:4b9e48e2-27d4-4c43-85f7-0268fe4b7452", + "_testId": "urn:uuid:90ffeb41-cda6-435b-aeaf-a57fe3ed3ba7", "cell": { - "columnId": "EWF", - "rowId": "If the \"proof.type\" field is missing, an error MUST be raised." + "columnId": "Trinsic", + "rowId": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document." }, "_events": {}, "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 26523, + "_idleStart": 44087, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 87, + "duration": 132, "state": "passed", "speed": "slow" }, { "type": "test", - "title": "If the \"proof.type\" field is missing, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('issuedVc');\n delete credential.proof.type;\n await verificationFail({credential, verifier});\n }", + "title": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC';\n const credential = credentials.clone('invalidCreated');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -20045,32 +19561,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "fzukTmGunqgrw1pwPErT7", + "parent": "oxQe-kP64Nqi6XD181EqS", "ctx": null, - "_testId": "urn:uuid:6e317d62-f731-49fd-a63d-beb0fad3ff3d", + "_testId": "urn:uuid:8edd4714-7d6c-4184-a81d-57084eaedf35", "cell": { - "columnId": "LearnCard", - "rowId": "If the \"proof.type\" field is missing, an error MUST be raised." + "columnId": "Trinsic", + "rowId": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." }, "_events": {}, "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 36892, + "_idleStart": 44220, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 36, + "duration": 19, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "If the \"proof.type\" field is missing, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('issuedVc');\n delete credential.proof.type;\n await verificationFail({credential, verifier});\n }", + "title": "The value of the cryptosuite property MUST be a string that identifies the cryptographic suite. If the processing environment supports subtypes of string, the type of the cryptosuite value MUST be the https://w3id.org/security#cryptosuiteString subtype of string.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=The%20value%20of%20the%20cryptosuite%20property%20MUST%20be%20a%20string%20that%20identifies%20the%20cryptographic%20suite.%20If%20the%20processing%20environment%20supports%20subtypes%20of%20string%2C%20the%20type%20of%20the%20cryptosuite%20value%20MUST%20be%20the%20https%3A//w3id.org/security%23cryptosuiteString%20subtype%20of%20string.';\n const credential = credentials.clone('invalidCryptosuite');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -20080,32 +19597,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "f0-mulLPVXI8cAjC5yH-C", + "parent": "oxQe-kP64Nqi6XD181EqS", "ctx": null, - "_testId": "urn:uuid:2ad6d355-07e4-4670-9c44-6dc924f50a18", + "_testId": "urn:uuid:1c604017-cdae-4942-89c8-24ef81b7354e", "cell": { - "columnId": "OpSecId", - "rowId": "If the \"proof.type\" field is missing, an error MUST be raised." + "columnId": "Trinsic", + "rowId": "The value of the cryptosuite property MUST be a string that identifies the cryptographic suite. If the processing environment supports subtypes of string, the type of the cryptosuite value MUST be the https://w3id.org/security#cryptosuiteString subtype of string." }, "_events": {}, "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#introduction:~:text=The%20value%20of%20the%20cryptosuite%20property%20MUST%20be%20a%20string%20that%20identifies%20the%20cryptographic%20suite.%20If%20the%20processing%20environment%20supports%20subtypes%20of%20string%2C%20the%20type%20of%20the%20cryptosuite%20value%20MUST%20be%20the%20https%3A//w3id.org/security%23cryptosuiteString%20subtype%20of%20string.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38192, + "_idleStart": 44239, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 31, + "duration": 19, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "If the \"proof.type\" field is missing, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('issuedVc');\n delete credential.proof.type;\n await verificationFail({credential, verifier});\n }", + "title": "If options has a non-null domain item, it MUST be equal to proof.domain or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=If%20options%20has%20a%20non%2Dnull%20domain%20item%2C%20it%20MUST%20be%20equal%20to%20proof.domain%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.';\n const credential = credentials.clone('invalidDomain');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example'\n }\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -20115,32 +19633,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "NRNAY3b3Vtm8PfC-PFvjh", + "parent": "oxQe-kP64Nqi6XD181EqS", "ctx": null, - "_testId": "urn:uuid:5a35de1d-6321-46db-8e37-a58037d56485", + "_testId": "urn:uuid:4c223e5c-897e-4d69-a2b1-631149997b7a", "cell": { - "columnId": "SpruceID", - "rowId": "If the \"proof.type\" field is missing, an error MUST be raised." + "columnId": "Trinsic", + "rowId": "If options has a non-null domain item, it MUST be equal to proof.domain or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR." }, "_events": {}, "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=If%20options%20has%20a%20non%2Dnull%20domain%20item%2C%20it%20MUST%20be%20equal%20to%20proof.domain%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38719, + "_idleStart": 44258, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 18, + "duration": 22, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "If the \"proof.type\" field is missing, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('issuedVc');\n delete credential.proof.type;\n await verificationFail({credential, verifier});\n }", + "title": "If options has a non-null challenge item, it MUST be equal to proof.challenge or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#add-proof:~:text=If%20options%20has%20a%20non%2Dnull%20challenge%20item%2C%20it%20MUST%20be%20equal%20to%20proof.challenge%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.';\n const credential = credentials.clone('invalidChallenge');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example',\n challenge: '1235abcd6789'\n }\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -20150,37 +19669,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "rAhKx-OZJpBnB_wNqlSW7", + "parent": "oxQe-kP64Nqi6XD181EqS", "ctx": null, - "_testId": "urn:uuid:278c3fb7-3a20-4b82-bfd9-9194c8e302e3", + "_testId": "urn:uuid:35dc4229-586a-4d4b-9b26-08439937df35", "cell": { "columnId": "Trinsic", - "rowId": "If the \"proof.type\" field is missing, an error MUST be raised." + "rowId": "If options has a non-null challenge item, it MUST be equal to proof.challenge or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR." }, "_events": {}, "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#add-proof:~:text=If%20options%20has%20a%20non%2Dnull%20challenge%20item%2C%20it%20MUST%20be%20equal%20to%20proof.challenge%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 40749, + "_idleStart": 44281, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 17, + "duration": 23, "state": "passed", "speed": "fast" - } - ] - }, - { - "id": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised.", - "cells": [ + }, { "type": "test", - "title": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('invalidProofType');\n await verificationFail({credential, verifier});\n }", + "title": "(created) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset.", + "body": "async function() {\n this.test.link = 'https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=be%20a%20string.-,created,-The%20date%20and';\n await verificationFail({\n credential: credentials.clone('noOffsetCreated'),\n verifier\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -20190,32 +19705,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "sB84IWOcTXVtgkn0L_FP3", + "parent": "oxQe-kP64Nqi6XD181EqS", "ctx": null, - "_testId": "urn:uuid:c9cc17c0-ef47-4ab8-8192-9100a24fa7b2", + "_testId": "urn:uuid:3ea983ed-00f4-4eca-bdbb-b78efbd04d10", "cell": { - "columnId": "apicatalog.com", - "rowId": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised." + "columnId": "Trinsic", + "rowId": "(created) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." }, "_events": {}, "_eventsCount": 1, + "link": "https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=be%20a%20string.-,created,-The%20date%20and", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 14089, + "_idleStart": 44303, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 49, + "duration": 44, "state": "passed", "speed": "medium" }, { "type": "test", - "title": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('invalidProofType');\n await verificationFail({credential, verifier});\n }", + "title": "(expires) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset.", + "body": "async function() {\n this.test.link = 'https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=interpreted%20as%20UTC.-,expires,-The%20expires%20property';\n await verificationFail({\n credential: credentials.clone('noOffsetExpires'),\n verifier\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -20225,32 +19741,37 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "Gzkcizg3ZqNOVK153M4AF", + "parent": "oxQe-kP64Nqi6XD181EqS", "ctx": null, - "_testId": "urn:uuid:ee175e47-057a-4360-ba5d-3a0f0451a023", + "_testId": "urn:uuid:c5312da1-1679-4aa2-be7c-34ab42fc1d8a", "cell": { - "columnId": "Danube Tech", - "rowId": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised." + "columnId": "Trinsic", + "rowId": "(expires) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." }, "_events": {}, "_eventsCount": 1, + "link": "https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=interpreted%20as%20UTC.-,expires,-The%20expires%20property", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 17320, + "_idleStart": 44348, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 225, + "duration": 37, "state": "passed", - "speed": "slow" - }, + "speed": "fast" + } + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [ { - "type": "test", - "title": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('invalidProofType');\n await verificationFail({credential, verifier});\n }", + "title": "\"before each\" hook in \"Trinsic\"", + "body": "function() {\n this.currentTest.cell = {\n columnId: testDescription,\n rowId: this.currentTest.title\n };\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -20259,33 +19780,132 @@ "timedOut": false, "_currentRetry": 0, "pending": false, + "type": "hook", + "parent": "oxQe-kP64Nqi6XD181EqS", + "ctx": null, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "afHD67eaDEinS_JWzRU75", + "originalTitle": "\"before each\" hook", + "_events": {}, + "_eventsCount": 1, + "duration": 0, + "_error": null + } + ], + "_beforeAll": [ + { + "title": "\"before all\" hook in \"Trinsic\"", + "body": "async function() {\n proofValueTests = shouldBeProofValue({credentials, verifier});\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "type": "hook", + "parent": "oxQe-kP64Nqi6XD181EqS", "ctx": null, - "_testId": "urn:uuid:6a33a33c-b412-4ad9-9594-2ecb5db83b4e", - "cell": { - "columnId": "Digital Bazaar", - "rowId": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised." - }, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "originalTitle": "\"before all\" hook", "_events": {}, "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 25268, + "_idleStart": 43456, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 39, - "state": "passed", - "speed": "medium" - }, + "duration": 0, + "_error": null + } + ], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "KaZqTHEME9mQyu_xdGoIA", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "_testId": "urn:uuid:1dd95122-6cc7-4862-b1ea-56187961b40f" + } + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [], + "_beforeAll": [ + { + "title": "\"before all\" hook in \"Data Integrity (verifier)\"", + "body": "async function() {\n const data = await generateTestData({...testDataOptions, optionalTests});\n // this might seem weird, but mocha won't wait for credentials to be set\n // before passing the credentials var to the tests\n // so we just update the credentials passed to the actual test suite\n Object.assign(credentials, data);\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "type": "hook", + "parent": "KaZqTHEME9mQyu_xdGoIA", + "ctx": null, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "originalTitle": "\"before all\" hook", + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 18009, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 45, + "_error": null + } + ], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "1bAByKXLEABclbGMq-v2s", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "matrix": true, + "report": true, + "rowLabel": "Test Name", + "columnLabel": "Verifier", + "_testId": "urn:uuid:c6a3fb94-8d7e-47eb-942b-d712a53a025d", + "columns": [ + "apicatalog.com", + "Danube Tech", + "Digital Bazaar", + "EWF", + "LearnCard", + "OpSecId", + "SpruceID", + "Trinsic" + ], + "rows": [ + { + "id": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null.", + "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=When%20deserializing%20to%20RDF%2C%20implementations%20MUST%20ensure%20that%20the%20base%20URL%20is%20set%20to%20null.", + "cells": [ { "type": "test", - "title": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('invalidProofType');\n await verificationFail({credential, verifier});\n }", + "title": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=When%20deserializing%20to%20RDF%2C%20implementations%20MUST%20ensure%20that%20the%20base%20URL%20is%20set%20to%20null.';\n const credential = credentials.clone('invalidBaseUrl');\n await verificationFail({\n credential,\n verifier,\n reason: 'Should not verify VC with invalid base URL'\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -20295,32 +19915,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "WiCTAagC6srf5khQKfvNc", + "parent": "4lbuxdf6TSMBdUCatK9o7", "ctx": null, - "_testId": "urn:uuid:579141f4-f3c6-4dfd-9d1b-7b7f894bf79d", + "_testId": "urn:uuid:378753f4-492e-44b1-a84f-84eba55e55dc", "cell": { - "columnId": "EWF", - "rowId": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised." + "columnId": "apicatalog.com", + "rowId": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null." }, "_events": {}, "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=When%20deserializing%20to%20RDF%2C%20implementations%20MUST%20ensure%20that%20the%20base%20URL%20is%20set%20to%20null.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 26610, + "_idleStart": 18056, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 85, + "duration": 92, "state": "passed", "speed": "slow" }, { "type": "test", - "title": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('invalidProofType');\n await verificationFail({credential, verifier});\n }", + "title": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=When%20deserializing%20to%20RDF%2C%20implementations%20MUST%20ensure%20that%20the%20base%20URL%20is%20set%20to%20null.';\n const credential = credentials.clone('invalidBaseUrl');\n await verificationFail({\n credential,\n verifier,\n reason: 'Should not verify VC with invalid base URL'\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -20330,32 +19951,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "fzukTmGunqgrw1pwPErT7", + "parent": "m-95LkeEjgnUOl8RA2_qH", "ctx": null, - "_testId": "urn:uuid:1b01e3a9-49f4-4b0f-b5d0-ecd96d4f58cc", + "_testId": "urn:uuid:3fadbf7c-2a30-4854-8caf-00752b3d8c8c", "cell": { - "columnId": "LearnCard", - "rowId": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised." + "columnId": "Danube Tech", + "rowId": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null." }, "_events": {}, "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=When%20deserializing%20to%20RDF%2C%20implementations%20MUST%20ensure%20that%20the%20base%20URL%20is%20set%20to%20null.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 36928, + "_idleStart": 19170, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 79, + "duration": 1036, "state": "passed", "speed": "slow" }, { "type": "test", - "title": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('invalidProofType');\n await verificationFail({credential, verifier});\n }", + "title": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=When%20deserializing%20to%20RDF%2C%20implementations%20MUST%20ensure%20that%20the%20base%20URL%20is%20set%20to%20null.';\n const credential = credentials.clone('invalidBaseUrl');\n await verificationFail({\n credential,\n verifier,\n reason: 'Should not verify VC with invalid base URL'\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -20365,32 +19987,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "f0-mulLPVXI8cAjC5yH-C", + "parent": "vjCbcL73Y3Hj-3-3Vt2xr", "ctx": null, - "_testId": "urn:uuid:fb60abd3-1e69-408c-a109-af204fa04a1d", + "_testId": "urn:uuid:e9153cde-f129-42a8-a792-7ba38f933f23", "cell": { - "columnId": "OpSecId", - "rowId": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised." + "columnId": "Digital Bazaar", + "rowId": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null." }, "_events": {}, "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=When%20deserializing%20to%20RDF%2C%20implementations%20MUST%20ensure%20that%20the%20base%20URL%20is%20set%20to%20null.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38223, + "_idleStart": 28416, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 23, + "duration": 200, "state": "passed", - "speed": "fast" + "speed": "slow" }, { "type": "test", - "title": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('invalidProofType');\n await verificationFail({credential, verifier});\n }", + "title": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=When%20deserializing%20to%20RDF%2C%20implementations%20MUST%20ensure%20that%20the%20base%20URL%20is%20set%20to%20null.';\n const credential = credentials.clone('invalidBaseUrl');\n await verificationFail({\n credential,\n verifier,\n reason: 'Should not verify VC with invalid base URL'\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -20400,32 +20023,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "NRNAY3b3Vtm8PfC-PFvjh", + "parent": "kI_ZSoLzqZSvNBsn3jzIQ", "ctx": null, - "_testId": "urn:uuid:6e59a1ec-fdd8-401d-bb6c-f0a0e3c12c4a", + "_testId": "urn:uuid:49a09ed8-5d21-42e6-9645-9375a34a0244", "cell": { - "columnId": "SpruceID", - "rowId": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised." + "columnId": "EWF", + "rowId": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null." }, "_events": {}, "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=When%20deserializing%20to%20RDF%2C%20implementations%20MUST%20ensure%20that%20the%20base%20URL%20is%20set%20to%20null.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38736, + "_idleStart": 29901, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 14, + "duration": 370, "state": "passed", - "speed": "fast" + "speed": "slow" }, { "type": "test", - "title": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('invalidProofType');\n await verificationFail({credential, verifier});\n }", + "title": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=When%20deserializing%20to%20RDF%2C%20implementations%20MUST%20ensure%20that%20the%20base%20URL%20is%20set%20to%20null.';\n const credential = credentials.clone('invalidBaseUrl');\n await verificationFail({\n credential,\n verifier,\n reason: 'Should not verify VC with invalid base URL'\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -20435,37 +20059,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "rAhKx-OZJpBnB_wNqlSW7", + "parent": "4tSBZN6UnobQjWlMYrZJM", "ctx": null, - "_testId": "urn:uuid:48407f36-7ca9-42e9-a9bb-7298fb55954a", + "_testId": "urn:uuid:fcd0cffd-e6af-4983-9c1d-15dd54d1ae37", "cell": { - "columnId": "Trinsic", - "rowId": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised." + "columnId": "LearnCard", + "rowId": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null." }, "_events": {}, "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=When%20deserializing%20to%20RDF%2C%20implementations%20MUST%20ensure%20that%20the%20base%20URL%20is%20set%20to%20null.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 40766, + "_idleStart": 32097, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 18, + "duration": 125, "state": "passed", - "speed": "fast" - } - ] - }, - { - "id": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised.", - "cells": [ + "speed": "slow" + }, { "type": "test", - "title": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('noVm');\n await verificationFail({credential, verifier});\n }", + "title": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=When%20deserializing%20to%20RDF%2C%20implementations%20MUST%20ensure%20that%20the%20base%20URL%20is%20set%20to%20null.';\n const credential = credentials.clone('invalidBaseUrl');\n await verificationFail({\n credential,\n verifier,\n reason: 'Should not verify VC with invalid base URL'\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -20475,32 +20095,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "sB84IWOcTXVtgkn0L_FP3", + "parent": "eS-Sz740TQReObqQ_sP03", "ctx": null, - "_testId": "urn:uuid:518a393c-d214-4bf6-b7ca-ae8b14dcbce6", + "_testId": "urn:uuid:9a26e3b8-8e3e-4b3f-9471-da4e5d8eea90", "cell": { - "columnId": "apicatalog.com", - "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." + "columnId": "OpSecId", + "rowId": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null." }, "_events": {}, "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=When%20deserializing%20to%20RDF%2C%20implementations%20MUST%20ensure%20that%20the%20base%20URL%20is%20set%20to%20null.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 14138, + "_idleStart": 42304, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 41, + "duration": 130, "state": "passed", - "speed": "medium" + "speed": "slow" }, { "type": "test", - "title": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('noVm');\n await verificationFail({credential, verifier});\n }", + "title": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=When%20deserializing%20to%20RDF%2C%20implementations%20MUST%20ensure%20that%20the%20base%20URL%20is%20set%20to%20null.';\n const credential = credentials.clone('invalidBaseUrl');\n await verificationFail({\n credential,\n verifier,\n reason: 'Should not verify VC with invalid base URL'\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -20510,38 +20131,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "Gzkcizg3ZqNOVK153M4AF", + "parent": "WvyzRIP6TnxLKp9PEVOWp", "ctx": null, - "_testId": "urn:uuid:47aa23f7-4cf6-4933-859c-7030a7de0c80", + "_testId": "urn:uuid:ae854740-bf6d-477c-ba9e-d086badf4ac2", "cell": { - "columnId": "Danube Tech", - "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." + "columnId": "SpruceID", + "rowId": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null." }, "_events": {}, "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=When%20deserializing%20to%20RDF%2C%20implementations%20MUST%20ensure%20that%20the%20base%20URL%20is%20set%20to%20null.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 17546, + "_idleStart": 42980, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 108, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected \"response.status\" to exist.: expected undefined to exist", - "showDiff": false, - "operator": "strictEqual", - "stack": "AssertionError: Expected \"response.status\" to exist.: expected undefined to exist\n at should.exist (node_modules/chai/lib/chai/interface/should.js:144:34)\n at shouldBeErrorResponse (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:228:10)\n at verificationFail (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:51:3)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/verify.js:81:7)" - } + "duration": 43, + "state": "passed", + "speed": "medium" }, { "type": "test", - "title": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('noVm');\n await verificationFail({credential, verifier});\n }", + "title": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=When%20deserializing%20to%20RDF%2C%20implementations%20MUST%20ensure%20that%20the%20base%20URL%20is%20set%20to%20null.';\n const credential = credentials.clone('invalidBaseUrl');\n await verificationFail({\n credential,\n verifier,\n reason: 'Should not verify VC with invalid base URL'\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -20551,32 +20167,39 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "afHD67eaDEinS_JWzRU75", + "parent": "oxQe-kP64Nqi6XD181EqS", "ctx": null, - "_testId": "urn:uuid:fdbfc512-7af6-472b-923c-3d9929f1e1e7", + "_testId": "urn:uuid:c76255df-0799-47ec-86bf-e8b1b3ceb22c", "cell": { - "columnId": "Digital Bazaar", - "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." + "columnId": "Trinsic", + "rowId": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null." }, "_events": {}, "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=When%20deserializing%20to%20RDF%2C%20implementations%20MUST%20ensure%20that%20the%20base%20URL%20is%20set%20to%20null.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 25307, + "_idleStart": 43457, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 32, + "duration": 434, "state": "passed", - "speed": "fast" - }, + "speed": "slow" + } + ] + }, + { + "id": "Conforming processors MUST produce errors when non-conforming documents are consumed.", + "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=Conforming%20processors%20MUST%20produce%20errors%20when%20non%2Dconforming%20documents%20are%20consumed.", + "cells": [ { "type": "test", - "title": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('noVm');\n await verificationFail({credential, verifier});\n }", + "title": "Conforming processors MUST produce errors when non-conforming documents are consumed.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=Conforming%20processors%20MUST%20produce%20errors%20when%20non%2Dconforming%20documents%20are%20consumed.';\n // this could be read as testing all non-confirming docs or just one\n // for this test only one doc is tested as it should throw for any\n // non-conforming doc\n await verificationFail({\n credential: credentials.clone('invalidProofType'),\n verifier,\n reason: 'Should not verify VC with invalid \"proof.type\"'\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -20586,32 +20209,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "WiCTAagC6srf5khQKfvNc", + "parent": "4lbuxdf6TSMBdUCatK9o7", "ctx": null, - "_testId": "urn:uuid:9c4781d7-4376-45cf-9cf0-fd5f64610b4b", + "_testId": "urn:uuid:c612e816-033e-4448-8ca5-a0913e21377d", "cell": { - "columnId": "EWF", - "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." + "columnId": "apicatalog.com", + "rowId": "Conforming processors MUST produce errors when non-conforming documents are consumed." }, "_events": {}, "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=Conforming%20processors%20MUST%20produce%20errors%20when%20non%2Dconforming%20documents%20are%20consumed.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 26696, + "_idleStart": 18149, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 87, + "duration": 61, "state": "passed", - "speed": "slow" + "speed": "medium" }, { "type": "test", - "title": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('noVm');\n await verificationFail({credential, verifier});\n }", + "title": "Conforming processors MUST produce errors when non-conforming documents are consumed.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=Conforming%20processors%20MUST%20produce%20errors%20when%20non%2Dconforming%20documents%20are%20consumed.';\n // this could be read as testing all non-confirming docs or just one\n // for this test only one doc is tested as it should throw for any\n // non-conforming doc\n await verificationFail({\n credential: credentials.clone('invalidProofType'),\n verifier,\n reason: 'Should not verify VC with invalid \"proof.type\"'\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -20621,32 +20245,141 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "fzukTmGunqgrw1pwPErT7", + "parent": "m-95LkeEjgnUOl8RA2_qH", "ctx": null, - "_testId": "urn:uuid:34d76fd1-f700-49e1-b611-c767b1928552", + "_testId": "urn:uuid:0e42fa7a-76ae-4035-9e15-e7b7b98f95d9", "cell": { - "columnId": "LearnCard", - "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." + "columnId": "Danube Tech", + "rowId": "Conforming processors MUST produce errors when non-conforming documents are consumed." }, "_events": {}, "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=Conforming%20processors%20MUST%20produce%20errors%20when%20non%2Dconforming%20documents%20are%20consumed.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 37006, + "_idleStart": 20206, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 33, + "duration": 220, "state": "passed", - "speed": "fast" + "speed": "slow" }, { "type": "test", - "title": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('noVm');\n await verificationFail({credential, verifier});\n }", + "title": "Conforming processors MUST produce errors when non-conforming documents are consumed.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=Conforming%20processors%20MUST%20produce%20errors%20when%20non%2Dconforming%20documents%20are%20consumed.';\n // this could be read as testing all non-confirming docs or just one\n // for this test only one doc is tested as it should throw for any\n // non-conforming doc\n await verificationFail({\n credential: credentials.clone('invalidProofType'),\n verifier,\n reason: 'Should not verify VC with invalid \"proof.type\"'\n });\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "vjCbcL73Y3Hj-3-3Vt2xr", + "ctx": null, + "_testId": "urn:uuid:603e4317-4469-41b5-8684-f1c7bc78b2af", + "cell": { + "columnId": "Digital Bazaar", + "rowId": "Conforming processors MUST produce errors when non-conforming documents are consumed." + }, + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=Conforming%20processors%20MUST%20produce%20errors%20when%20non%2Dconforming%20documents%20are%20consumed.", + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 28616, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 49, + "state": "passed", + "speed": "medium" + }, + { + "type": "test", + "title": "Conforming processors MUST produce errors when non-conforming documents are consumed.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=Conforming%20processors%20MUST%20produce%20errors%20when%20non%2Dconforming%20documents%20are%20consumed.';\n // this could be read as testing all non-confirming docs or just one\n // for this test only one doc is tested as it should throw for any\n // non-conforming doc\n await verificationFail({\n credential: credentials.clone('invalidProofType'),\n verifier,\n reason: 'Should not verify VC with invalid \"proof.type\"'\n });\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "kI_ZSoLzqZSvNBsn3jzIQ", + "ctx": null, + "_testId": "urn:uuid:03016174-d0ac-490e-85c9-f069c2ddbe4f", + "cell": { + "columnId": "EWF", + "rowId": "Conforming processors MUST produce errors when non-conforming documents are consumed." + }, + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=Conforming%20processors%20MUST%20produce%20errors%20when%20non%2Dconforming%20documents%20are%20consumed.", + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 30271, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 87, + "state": "passed", + "speed": "slow" + }, + { + "type": "test", + "title": "Conforming processors MUST produce errors when non-conforming documents are consumed.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=Conforming%20processors%20MUST%20produce%20errors%20when%20non%2Dconforming%20documents%20are%20consumed.';\n // this could be read as testing all non-confirming docs or just one\n // for this test only one doc is tested as it should throw for any\n // non-conforming doc\n await verificationFail({\n credential: credentials.clone('invalidProofType'),\n verifier,\n reason: 'Should not verify VC with invalid \"proof.type\"'\n });\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "4tSBZN6UnobQjWlMYrZJM", + "ctx": null, + "_testId": "urn:uuid:7fd92d35-3d61-47bb-831e-4ac4744b6c20", + "cell": { + "columnId": "LearnCard", + "rowId": "Conforming processors MUST produce errors when non-conforming documents are consumed." + }, + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=Conforming%20processors%20MUST%20produce%20errors%20when%20non%2Dconforming%20documents%20are%20consumed.", + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 32222, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 8816, + "state": "passed", + "speed": "slow" + }, + { + "type": "test", + "title": "Conforming processors MUST produce errors when non-conforming documents are consumed.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=Conforming%20processors%20MUST%20produce%20errors%20when%20non%2Dconforming%20documents%20are%20consumed.';\n // this could be read as testing all non-confirming docs or just one\n // for this test only one doc is tested as it should throw for any\n // non-conforming doc\n await verificationFail({\n credential: credentials.clone('invalidProofType'),\n verifier,\n reason: 'Should not verify VC with invalid \"proof.type\"'\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -20656,32 +20389,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "f0-mulLPVXI8cAjC5yH-C", + "parent": "eS-Sz740TQReObqQ_sP03", "ctx": null, - "_testId": "urn:uuid:c41b2a49-dbd9-477a-a6fa-663168cab8d9", + "_testId": "urn:uuid:613e5c49-1ac0-41f0-a8b6-d9ccfa933409", "cell": { "columnId": "OpSecId", - "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." + "rowId": "Conforming processors MUST produce errors when non-conforming documents are consumed." }, "_events": {}, "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=Conforming%20processors%20MUST%20produce%20errors%20when%20non%2Dconforming%20documents%20are%20consumed.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38247, + "_idleStart": 42434, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 21, + "duration": 26, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('noVm');\n await verificationFail({credential, verifier});\n }", + "title": "Conforming processors MUST produce errors when non-conforming documents are consumed.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=Conforming%20processors%20MUST%20produce%20errors%20when%20non%2Dconforming%20documents%20are%20consumed.';\n // this could be read as testing all non-confirming docs or just one\n // for this test only one doc is tested as it should throw for any\n // non-conforming doc\n await verificationFail({\n credential: credentials.clone('invalidProofType'),\n verifier,\n reason: 'Should not verify VC with invalid \"proof.type\"'\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -20691,32 +20425,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "NRNAY3b3Vtm8PfC-PFvjh", + "parent": "WvyzRIP6TnxLKp9PEVOWp", "ctx": null, - "_testId": "urn:uuid:4fa5659b-5caa-4831-85f7-a45423c2ce8e", + "_testId": "urn:uuid:e3adaba3-c903-4fe8-a40d-3e2e3742fac6", "cell": { "columnId": "SpruceID", - "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." + "rowId": "Conforming processors MUST produce errors when non-conforming documents are consumed." }, "_events": {}, "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=Conforming%20processors%20MUST%20produce%20errors%20when%20non%2Dconforming%20documents%20are%20consumed.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38752, + "_idleStart": 43023, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 15, + "duration": 18, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('noVm');\n await verificationFail({credential, verifier});\n }", + "title": "Conforming processors MUST produce errors when non-conforming documents are consumed.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#conformance:~:text=Conforming%20processors%20MUST%20produce%20errors%20when%20non%2Dconforming%20documents%20are%20consumed.';\n // this could be read as testing all non-confirming docs or just one\n // for this test only one doc is tested as it should throw for any\n // non-conforming doc\n await verificationFail({\n credential: credentials.clone('invalidProofType'),\n verifier,\n reason: 'Should not verify VC with invalid \"proof.type\"'\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -20726,37 +20461,38 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "rAhKx-OZJpBnB_wNqlSW7", + "parent": "oxQe-kP64Nqi6XD181EqS", "ctx": null, - "_testId": "urn:uuid:6c26a219-0b97-4a52-b51a-20b1d7c96c41", + "_testId": "urn:uuid:b3d8a70e-1101-42f0-82e3-c27e40ff8e0f", "cell": { "columnId": "Trinsic", - "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." + "rowId": "Conforming processors MUST produce errors when non-conforming documents are consumed." }, "_events": {}, "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#conformance:~:text=Conforming%20processors%20MUST%20produce%20errors%20when%20non%2Dconforming%20documents%20are%20consumed.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 40783, + "_idleStart": 43891, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 16, + "duration": 17, "state": "passed", "speed": "fast" } ] }, { - "id": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised.", + "id": "If the \"proof\" field is missing, an error MUST be raised.", "cells": [ { "type": "test", - "title": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('invalidVm');\n await verificationFail({credential, verifier});\n }", + "title": "If the \"proof\" field is missing, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('issuedVc');\n delete credential.proof;\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -20766,12 +20502,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "sB84IWOcTXVtgkn0L_FP3", + "parent": "4lbuxdf6TSMBdUCatK9o7", "ctx": null, - "_testId": "urn:uuid:675a4f38-08bc-4029-9528-1b83047e1a00", + "_testId": "urn:uuid:92110bb5-3a7f-4e7d-b366-eaf79dbfb278", "cell": { "columnId": "apicatalog.com", - "rowId": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised." + "rowId": "If the \"proof\" field is missing, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, @@ -20779,19 +20515,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 14179, + "_idleStart": 18210, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 59, + "duration": 51, "state": "passed", "speed": "medium" }, { "type": "test", - "title": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('invalidVm');\n await verificationFail({credential, verifier});\n }", + "title": "If the \"proof\" field is missing, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('issuedVc');\n delete credential.proof;\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -20801,12 +20537,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "Gzkcizg3ZqNOVK153M4AF", + "parent": "m-95LkeEjgnUOl8RA2_qH", "ctx": null, - "_testId": "urn:uuid:6c5caf56-ab9a-42aa-92d8-39ea85bcc705", + "_testId": "urn:uuid:cc3710e1-b6b3-4a41-8cca-7e990952a1c3", "cell": { "columnId": "Danube Tech", - "rowId": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised." + "rowId": "If the \"proof\" field is missing, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, @@ -20814,19 +20550,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 17654, + "_idleStart": 20426, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 669, + "duration": 546, "state": "passed", "speed": "slow" }, { "type": "test", - "title": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('invalidVm');\n await verificationFail({credential, verifier});\n }", + "title": "If the \"proof\" field is missing, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('issuedVc');\n delete credential.proof;\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -20836,12 +20572,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "afHD67eaDEinS_JWzRU75", + "parent": "vjCbcL73Y3Hj-3-3Vt2xr", "ctx": null, - "_testId": "urn:uuid:8c00d348-7a1d-427f-9c47-dd808941a3c6", + "_testId": "urn:uuid:23881eda-9c8e-4050-bf8f-f694f72b3cb8", "cell": { "columnId": "Digital Bazaar", - "rowId": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised." + "rowId": "If the \"proof\" field is missing, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, @@ -20849,19 +20585,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 25339, + "_idleStart": 28665, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 41, + "duration": 469, "state": "passed", - "speed": "medium" + "speed": "slow" }, { "type": "test", - "title": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('invalidVm');\n await verificationFail({credential, verifier});\n }", + "title": "If the \"proof\" field is missing, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('issuedVc');\n delete credential.proof;\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -20871,12 +20607,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "WiCTAagC6srf5khQKfvNc", + "parent": "kI_ZSoLzqZSvNBsn3jzIQ", "ctx": null, - "_testId": "urn:uuid:38ec7dcd-52c3-420c-b527-602aeb6c13d3", + "_testId": "urn:uuid:fb547bb5-3846-4214-8952-c9712caa9df6", "cell": { "columnId": "EWF", - "rowId": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised." + "rowId": "If the \"proof\" field is missing, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, @@ -20884,19 +20620,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 26783, + "_idleStart": 30358, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 84, + "duration": 90, "state": "passed", "speed": "slow" }, { "type": "test", - "title": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('invalidVm');\n await verificationFail({credential, verifier});\n }", + "title": "If the \"proof\" field is missing, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('issuedVc');\n delete credential.proof;\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -20906,12 +20642,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "fzukTmGunqgrw1pwPErT7", + "parent": "4tSBZN6UnobQjWlMYrZJM", "ctx": null, - "_testId": "urn:uuid:ad6132a1-a713-4720-be5b-dcb322622435", + "_testId": "urn:uuid:2e9d5241-a9d2-4801-8198-362aaa1f1fbe", "cell": { "columnId": "LearnCard", - "rowId": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised." + "rowId": "If the \"proof\" field is missing, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, @@ -20919,19 +20655,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 37040, + "_idleStart": 41038, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 67, + "duration": 40, "state": "passed", "speed": "medium" }, { "type": "test", - "title": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('invalidVm');\n await verificationFail({credential, verifier});\n }", + "title": "If the \"proof\" field is missing, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('issuedVc');\n delete credential.proof;\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -20941,12 +20677,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "f0-mulLPVXI8cAjC5yH-C", + "parent": "eS-Sz740TQReObqQ_sP03", "ctx": null, - "_testId": "urn:uuid:c145449a-abe6-4907-bc38-124019b77aa5", + "_testId": "urn:uuid:ff43f3c8-5c9c-4b45-b9cc-387c07cd92d3", "cell": { "columnId": "OpSecId", - "rowId": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised." + "rowId": "If the \"proof\" field is missing, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, @@ -20954,19 +20690,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38269, + "_idleStart": 42460, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 25, + "duration": 27, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('invalidVm');\n await verificationFail({credential, verifier});\n }", + "title": "If the \"proof\" field is missing, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('issuedVc');\n delete credential.proof;\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -20976,12 +20712,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "NRNAY3b3Vtm8PfC-PFvjh", + "parent": "WvyzRIP6TnxLKp9PEVOWp", "ctx": null, - "_testId": "urn:uuid:178894ea-b257-49ee-8a83-d257884b44a4", + "_testId": "urn:uuid:a4eb47be-ac37-4680-b2bd-8ccb487409bc", "cell": { "columnId": "SpruceID", - "rowId": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised." + "rowId": "If the \"proof\" field is missing, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, @@ -20989,19 +20725,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38768, + "_idleStart": 43040, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 17, + "duration": 101, "state": "passed", - "speed": "fast" + "speed": "slow" }, { "type": "test", - "title": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('invalidVm');\n await verificationFail({credential, verifier});\n }", + "title": "If the \"proof\" field is missing, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('issuedVc');\n delete credential.proof;\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -21011,12 +20747,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "rAhKx-OZJpBnB_wNqlSW7", + "parent": "oxQe-kP64Nqi6XD181EqS", "ctx": null, - "_testId": "urn:uuid:a6160d61-2a86-4462-a5d9-b500a2b2534f", + "_testId": "urn:uuid:3ee12295-bc49-43e7-bde8-a72f9983fb93", "cell": { "columnId": "Trinsic", - "rowId": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised." + "rowId": "If the \"proof\" field is missing, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, @@ -21024,24 +20760,24 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 40800, + "_idleStart": 43909, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 20, + "duration": 19, "state": "passed", "speed": "fast" } ] }, { - "id": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised.", + "id": "If the \"proof\" field is invalid, an error MUST be raised.", "cells": [ { "type": "test", - "title": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('noProofPurpose');\n await verificationFail({credential, verifier});\n }", + "title": "If the \"proof\" field is invalid, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('issuedVc');\n credential.proof = null;\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -21051,12 +20787,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "sB84IWOcTXVtgkn0L_FP3", + "parent": "4lbuxdf6TSMBdUCatK9o7", "ctx": null, - "_testId": "urn:uuid:1235fe69-4dfd-4f35-9b22-3d35178c4780", + "_testId": "urn:uuid:4e68e0f0-03c5-42b1-b46d-030d95f84cab", "cell": { "columnId": "apicatalog.com", - "rowId": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised." + "rowId": "If the \"proof\" field is invalid, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, @@ -21064,19 +20800,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 14238, + "_idleStart": 18261, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 58, + "duration": 53, "state": "passed", "speed": "medium" }, { "type": "test", - "title": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('noProofPurpose');\n await verificationFail({credential, verifier});\n }", + "title": "If the \"proof\" field is invalid, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('issuedVc');\n credential.proof = null;\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -21086,12 +20822,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "Gzkcizg3ZqNOVK153M4AF", + "parent": "m-95LkeEjgnUOl8RA2_qH", "ctx": null, - "_testId": "urn:uuid:d565eb11-20db-48aa-9e11-3b3e70f26827", + "_testId": "urn:uuid:e620e4de-d51f-41a2-a225-1c82a700bb1b", "cell": { "columnId": "Danube Tech", - "rowId": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised." + "rowId": "If the \"proof\" field is invalid, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, @@ -21099,19 +20835,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 18322, + "_idleStart": 20973, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 670, + "duration": 533, "state": "passed", "speed": "slow" }, { "type": "test", - "title": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('noProofPurpose');\n await verificationFail({credential, verifier});\n }", + "title": "If the \"proof\" field is invalid, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('issuedVc');\n credential.proof = null;\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -21121,12 +20857,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "afHD67eaDEinS_JWzRU75", + "parent": "vjCbcL73Y3Hj-3-3Vt2xr", "ctx": null, - "_testId": "urn:uuid:046a101a-2f17-45f8-8993-76aeb24e5854", + "_testId": "urn:uuid:bcf428a3-062f-4772-8db5-a5961e9c19eb", "cell": { "columnId": "Digital Bazaar", - "rowId": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised." + "rowId": "If the \"proof\" field is invalid, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, @@ -21134,7 +20870,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 25381, + "_idleStart": 29134, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -21145,8 +20881,8 @@ }, { "type": "test", - "title": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('noProofPurpose');\n await verificationFail({credential, verifier});\n }", + "title": "If the \"proof\" field is invalid, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('issuedVc');\n credential.proof = null;\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -21156,12 +20892,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "WiCTAagC6srf5khQKfvNc", + "parent": "kI_ZSoLzqZSvNBsn3jzIQ", "ctx": null, - "_testId": "urn:uuid:2fc411d0-2904-4fac-bf8f-79707b6851a6", + "_testId": "urn:uuid:3e6ce608-71b2-4afe-944f-e2b1149255c4", "cell": { "columnId": "EWF", - "rowId": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised." + "rowId": "If the \"proof\" field is invalid, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, @@ -21169,19 +20905,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 26867, + "_idleStart": 30448, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 90, + "duration": 95, "state": "passed", "speed": "slow" }, { "type": "test", - "title": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('noProofPurpose');\n await verificationFail({credential, verifier});\n }", + "title": "If the \"proof\" field is invalid, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('issuedVc');\n credential.proof = null;\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -21191,12 +20927,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "fzukTmGunqgrw1pwPErT7", + "parent": "4tSBZN6UnobQjWlMYrZJM", "ctx": null, - "_testId": "urn:uuid:368bc954-e47b-4262-95dc-127dbbb72ca7", + "_testId": "urn:uuid:575e0912-02f2-4f7e-9f5c-d935f4e5be0a", "cell": { "columnId": "LearnCard", - "rowId": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised." + "rowId": "If the \"proof\" field is invalid, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, @@ -21204,19 +20940,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 37107, + "_idleStart": 41079, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 37, + "duration": 42, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('noProofPurpose');\n await verificationFail({credential, verifier});\n }", + "title": "If the \"proof\" field is invalid, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('issuedVc');\n credential.proof = null;\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -21226,12 +20962,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "f0-mulLPVXI8cAjC5yH-C", + "parent": "eS-Sz740TQReObqQ_sP03", "ctx": null, - "_testId": "urn:uuid:7b6b5e20-1c8d-4672-82cf-e564c6f057d4", + "_testId": "urn:uuid:93a4f38d-0383-4013-b5ba-d059409ac9b7", "cell": { "columnId": "OpSecId", - "rowId": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised." + "rowId": "If the \"proof\" field is invalid, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, @@ -21239,19 +20975,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38294, + "_idleStart": 42487, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 30, + "duration": 24, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('noProofPurpose');\n await verificationFail({credential, verifier});\n }", + "title": "If the \"proof\" field is invalid, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('issuedVc');\n credential.proof = null;\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -21261,12 +20997,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "NRNAY3b3Vtm8PfC-PFvjh", + "parent": "WvyzRIP6TnxLKp9PEVOWp", "ctx": null, - "_testId": "urn:uuid:7e7b1c09-06ca-4977-bb7e-1755e81d11f7", + "_testId": "urn:uuid:d46093f2-2c58-41bc-83f5-1d0575db6997", "cell": { "columnId": "SpruceID", - "rowId": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised." + "rowId": "If the \"proof\" field is invalid, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, @@ -21274,19 +21010,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38784, + "_idleStart": 43143, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 13, + "duration": 19, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('noProofPurpose');\n await verificationFail({credential, verifier});\n }", + "title": "If the \"proof\" field is invalid, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('issuedVc');\n credential.proof = null;\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -21296,12 +21032,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "rAhKx-OZJpBnB_wNqlSW7", + "parent": "oxQe-kP64Nqi6XD181EqS", "ctx": null, - "_testId": "urn:uuid:06d5ed24-366e-48d1-9948-9f3b682b5bc4", + "_testId": "urn:uuid:a5e299cc-aeb3-4746-bbb8-8b10703b18e6", "cell": { "columnId": "Trinsic", - "rowId": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised." + "rowId": "If the \"proof\" field is invalid, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, @@ -21309,24 +21045,24 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 40820, + "_idleStart": 43928, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 19, + "duration": 17, "state": "passed", "speed": "fast" } ] }, { - "id": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised.", + "id": "If the \"proof.type\" field is missing, an error MUST be raised.", "cells": [ { "type": "test", - "title": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('invalidProofPurpose');\n await verificationFail({credential, verifier});\n }", + "title": "If the \"proof.type\" field is missing, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('issuedVc');\n delete credential.proof.type;\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -21336,12 +21072,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "sB84IWOcTXVtgkn0L_FP3", + "parent": "4lbuxdf6TSMBdUCatK9o7", "ctx": null, - "_testId": "urn:uuid:962d152b-e9e3-4a5b-953d-9705c136731a", + "_testId": "urn:uuid:9ba1d9fa-a196-4d7a-90e4-c8c6707bc03d", "cell": { "columnId": "apicatalog.com", - "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." + "rowId": "If the \"proof.type\" field is missing, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, @@ -21349,19 +21085,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 14295, + "_idleStart": 18313, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 48, + "duration": 50, "state": "passed", "speed": "medium" }, { "type": "test", - "title": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('invalidProofPurpose');\n await verificationFail({credential, verifier});\n }", + "title": "If the \"proof.type\" field is missing, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('issuedVc');\n delete credential.proof.type;\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -21371,12 +21107,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "Gzkcizg3ZqNOVK153M4AF", + "parent": "m-95LkeEjgnUOl8RA2_qH", "ctx": null, - "_testId": "urn:uuid:03c5e8b6-3e93-465a-ba13-020d9558eab9", + "_testId": "urn:uuid:9adfde5a-09cf-4e88-98b7-9184293b5adc", "cell": { "columnId": "Danube Tech", - "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." + "rowId": "If the \"proof.type\" field is missing, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, @@ -21384,19 +21120,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 18993, + "_idleStart": 21507, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 225, + "duration": 222, "state": "passed", "speed": "slow" }, { "type": "test", - "title": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('invalidProofPurpose');\n await verificationFail({credential, verifier});\n }", + "title": "If the \"proof.type\" field is missing, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('issuedVc');\n delete credential.proof.type;\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -21406,12 +21142,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "afHD67eaDEinS_JWzRU75", + "parent": "vjCbcL73Y3Hj-3-3Vt2xr", "ctx": null, - "_testId": "urn:uuid:9152faf6-f971-4d15-bda6-b7f8ade9c912", + "_testId": "urn:uuid:b9c337c1-7325-4ae9-97d0-66073b12dd4c", "cell": { "columnId": "Digital Bazaar", - "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." + "rowId": "If the \"proof.type\" field is missing, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, @@ -21419,7 +21155,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 25422, + "_idleStart": 29175, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -21430,8 +21166,8 @@ }, { "type": "test", - "title": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('invalidProofPurpose');\n await verificationFail({credential, verifier});\n }", + "title": "If the \"proof.type\" field is missing, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('issuedVc');\n delete credential.proof.type;\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -21441,12 +21177,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "WiCTAagC6srf5khQKfvNc", + "parent": "kI_ZSoLzqZSvNBsn3jzIQ", "ctx": null, - "_testId": "urn:uuid:7032ecb6-db6e-4be1-8318-fd0a2b8b5bb0", + "_testId": "urn:uuid:bc4f0dda-79a3-4fd6-b4a8-b666dffb29d8", "cell": { "columnId": "EWF", - "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." + "rowId": "If the \"proof.type\" field is missing, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, @@ -21454,19 +21190,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 26957, + "_idleStart": 30543, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 87, + "duration": 99, "state": "passed", "speed": "slow" }, { "type": "test", - "title": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('invalidProofPurpose');\n await verificationFail({credential, verifier});\n }", + "title": "If the \"proof.type\" field is missing, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('issuedVc');\n delete credential.proof.type;\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -21476,12 +21212,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "fzukTmGunqgrw1pwPErT7", + "parent": "4tSBZN6UnobQjWlMYrZJM", "ctx": null, - "_testId": "urn:uuid:7c3769dc-4989-46bf-aaaa-5372a14100b1", + "_testId": "urn:uuid:b684d650-55db-4a7e-9771-7466f3f31d8c", "cell": { "columnId": "LearnCard", - "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." + "rowId": "If the \"proof.type\" field is missing, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, @@ -21489,19 +21225,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 37145, + "_idleStart": 41121, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 74, + "duration": 39, "state": "passed", "speed": "medium" }, { "type": "test", - "title": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('invalidProofPurpose');\n await verificationFail({credential, verifier});\n }", + "title": "If the \"proof.type\" field is missing, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('issuedVc');\n delete credential.proof.type;\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -21511,12 +21247,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "f0-mulLPVXI8cAjC5yH-C", + "parent": "eS-Sz740TQReObqQ_sP03", "ctx": null, - "_testId": "urn:uuid:715c8965-2586-4501-ab9f-2735e9719f57", + "_testId": "urn:uuid:105addb8-f903-4f90-b979-303f7831d716", "cell": { "columnId": "OpSecId", - "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." + "rowId": "If the \"proof.type\" field is missing, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, @@ -21524,19 +21260,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38325, + "_idleStart": 42511, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 24, + "duration": 26, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('invalidProofPurpose');\n await verificationFail({credential, verifier});\n }", + "title": "If the \"proof.type\" field is missing, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('issuedVc');\n delete credential.proof.type;\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -21546,12 +21282,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "NRNAY3b3Vtm8PfC-PFvjh", + "parent": "WvyzRIP6TnxLKp9PEVOWp", "ctx": null, - "_testId": "urn:uuid:0146c715-ca9e-4207-a706-7fc97a329cb0", + "_testId": "urn:uuid:d1adbc36-5b54-4eab-a213-082a9bbe9e24", "cell": { "columnId": "SpruceID", - "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." + "rowId": "If the \"proof.type\" field is missing, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, @@ -21559,19 +21295,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38798, + "_idleStart": 43163, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 13, + "duration": 17, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised.", - "body": "async function() {\n const credential = credentials.clone('invalidProofPurpose');\n await verificationFail({credential, verifier});\n }", + "title": "If the \"proof.type\" field is missing, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('issuedVc');\n delete credential.proof.type;\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -21581,12 +21317,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "rAhKx-OZJpBnB_wNqlSW7", + "parent": "oxQe-kP64Nqi6XD181EqS", "ctx": null, - "_testId": "urn:uuid:247fa1f9-c284-4683-9d5c-c15e67b3abcb", + "_testId": "urn:uuid:1d87aca4-7780-46ac-9c2b-c134264e9ff9", "cell": { "columnId": "Trinsic", - "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." + "rowId": "If the \"proof.type\" field is missing, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, @@ -21594,25 +21330,24 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 40840, + "_idleStart": 43945, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 17, + "duration": 20, "state": "passed", "speed": "fast" } ] }, { - "id": "If expectedProofPurpose was given, and it does not match proof.proofPurpose, an error MUST be raised and SHOULD convey an error type of PROOF_VERIFICATION_ERROR.", - "link": "https://w3c.github.io/vc-data-integrity/#:~:text=If%20expectedProofPurpose%20was%20given%2C%20and%20it%20does%20not%20match%20proof.proofPurpose%2C%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_VERIFICATION_ERROR.", + "id": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised.", "cells": [ { "type": "test", - "title": "If expectedProofPurpose was given, and it does not match proof.proofPurpose, an error MUST be raised and SHOULD convey an error type of PROOF_VERIFICATION_ERROR.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#:~:text=If%20expectedProofPurpose%20was%20given%2C%20and%20it%20does%20not%20match%20proof.proofPurpose%2C%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_VERIFICATION_ERROR.';\n // NOTE: expectedProofPurpose should be specified by verifiers internally\n // it is very unlikely to be invalidProofPurpose\n await verificationFail({\n credential: credentials.clone('invalidProofPurpose'),\n verifier,\n reason: 'Verifier should reject VC with invalid proof purpose.'\n });\n }", + "title": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('invalidProofType');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -21622,33 +21357,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "sB84IWOcTXVtgkn0L_FP3", + "parent": "4lbuxdf6TSMBdUCatK9o7", "ctx": null, - "_testId": "urn:uuid:c12c1fde-24e0-4b88-ad0b-be1bcbd1464b", + "_testId": "urn:uuid:41eb2c0d-7d39-4d3a-a9b5-b16edbcffa10", "cell": { "columnId": "apicatalog.com", - "rowId": "If expectedProofPurpose was given, and it does not match proof.proofPurpose, an error MUST be raised and SHOULD convey an error type of PROOF_VERIFICATION_ERROR." + "rowId": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#:~:text=If%20expectedProofPurpose%20was%20given%2C%20and%20it%20does%20not%20match%20proof.proofPurpose%2C%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_VERIFICATION_ERROR.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 14344, + "_idleStart": 18364, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 44, + "duration": 57, "state": "passed", "speed": "medium" }, { "type": "test", - "title": "If expectedProofPurpose was given, and it does not match proof.proofPurpose, an error MUST be raised and SHOULD convey an error type of PROOF_VERIFICATION_ERROR.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#:~:text=If%20expectedProofPurpose%20was%20given%2C%20and%20it%20does%20not%20match%20proof.proofPurpose%2C%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_VERIFICATION_ERROR.';\n // NOTE: expectedProofPurpose should be specified by verifiers internally\n // it is very unlikely to be invalidProofPurpose\n await verificationFail({\n credential: credentials.clone('invalidProofPurpose'),\n verifier,\n reason: 'Verifier should reject VC with invalid proof purpose.'\n });\n }", + "title": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('invalidProofType');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -21658,33 +21392,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "Gzkcizg3ZqNOVK153M4AF", + "parent": "m-95LkeEjgnUOl8RA2_qH", "ctx": null, - "_testId": "urn:uuid:b892233c-65bf-4e49-8cfc-ed1fb5c4c3d5", + "_testId": "urn:uuid:52b9762f-7b7c-48e0-becc-267a1d57334b", "cell": { "columnId": "Danube Tech", - "rowId": "If expectedProofPurpose was given, and it does not match proof.proofPurpose, an error MUST be raised and SHOULD convey an error type of PROOF_VERIFICATION_ERROR." + "rowId": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#:~:text=If%20expectedProofPurpose%20was%20given%2C%20and%20it%20does%20not%20match%20proof.proofPurpose%2C%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_VERIFICATION_ERROR.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 19218, + "_idleStart": 21730, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 225, + "duration": 220, "state": "passed", "speed": "slow" }, { "type": "test", - "title": "If expectedProofPurpose was given, and it does not match proof.proofPurpose, an error MUST be raised and SHOULD convey an error type of PROOF_VERIFICATION_ERROR.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#:~:text=If%20expectedProofPurpose%20was%20given%2C%20and%20it%20does%20not%20match%20proof.proofPurpose%2C%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_VERIFICATION_ERROR.';\n // NOTE: expectedProofPurpose should be specified by verifiers internally\n // it is very unlikely to be invalidProofPurpose\n await verificationFail({\n credential: credentials.clone('invalidProofPurpose'),\n verifier,\n reason: 'Verifier should reject VC with invalid proof purpose.'\n });\n }", + "title": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('invalidProofType');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -21694,33 +21427,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "afHD67eaDEinS_JWzRU75", + "parent": "vjCbcL73Y3Hj-3-3Vt2xr", "ctx": null, - "_testId": "urn:uuid:653ba25e-dbfa-487b-ab1a-fd1a58c6d0b2", + "_testId": "urn:uuid:84350ec0-eefa-43ea-8a7a-cab4162ee3b6", "cell": { "columnId": "Digital Bazaar", - "rowId": "If expectedProofPurpose was given, and it does not match proof.proofPurpose, an error MUST be raised and SHOULD convey an error type of PROOF_VERIFICATION_ERROR." + "rowId": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#:~:text=If%20expectedProofPurpose%20was%20given%2C%20and%20it%20does%20not%20match%20proof.proofPurpose%2C%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_VERIFICATION_ERROR.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 25462, + "_idleStart": 29214, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 38, + "duration": 59, "state": "passed", "speed": "medium" }, { "type": "test", - "title": "If expectedProofPurpose was given, and it does not match proof.proofPurpose, an error MUST be raised and SHOULD convey an error type of PROOF_VERIFICATION_ERROR.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#:~:text=If%20expectedProofPurpose%20was%20given%2C%20and%20it%20does%20not%20match%20proof.proofPurpose%2C%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_VERIFICATION_ERROR.';\n // NOTE: expectedProofPurpose should be specified by verifiers internally\n // it is very unlikely to be invalidProofPurpose\n await verificationFail({\n credential: credentials.clone('invalidProofPurpose'),\n verifier,\n reason: 'Verifier should reject VC with invalid proof purpose.'\n });\n }", + "title": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('invalidProofType');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -21730,33 +21462,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "WiCTAagC6srf5khQKfvNc", + "parent": "kI_ZSoLzqZSvNBsn3jzIQ", "ctx": null, - "_testId": "urn:uuid:3b08d6dd-73dc-4239-b19b-ed05d25d28cb", + "_testId": "urn:uuid:7d71d42f-71f4-4678-8b9d-be778ed3175b", "cell": { "columnId": "EWF", - "rowId": "If expectedProofPurpose was given, and it does not match proof.proofPurpose, an error MUST be raised and SHOULD convey an error type of PROOF_VERIFICATION_ERROR." + "rowId": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#:~:text=If%20expectedProofPurpose%20was%20given%2C%20and%20it%20does%20not%20match%20proof.proofPurpose%2C%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_VERIFICATION_ERROR.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 27044, + "_idleStart": 30643, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 85, + "duration": 90, "state": "passed", "speed": "slow" }, { "type": "test", - "title": "If expectedProofPurpose was given, and it does not match proof.proofPurpose, an error MUST be raised and SHOULD convey an error type of PROOF_VERIFICATION_ERROR.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#:~:text=If%20expectedProofPurpose%20was%20given%2C%20and%20it%20does%20not%20match%20proof.proofPurpose%2C%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_VERIFICATION_ERROR.';\n // NOTE: expectedProofPurpose should be specified by verifiers internally\n // it is very unlikely to be invalidProofPurpose\n await verificationFail({\n credential: credentials.clone('invalidProofPurpose'),\n verifier,\n reason: 'Verifier should reject VC with invalid proof purpose.'\n });\n }", + "title": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('invalidProofType');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -21766,33 +21497,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "fzukTmGunqgrw1pwPErT7", + "parent": "4tSBZN6UnobQjWlMYrZJM", "ctx": null, - "_testId": "urn:uuid:71893a0b-1965-4b96-8707-4756fc217e50", + "_testId": "urn:uuid:ebd6ff1c-28a7-4910-8eb4-25b66e7d84f7", "cell": { "columnId": "LearnCard", - "rowId": "If expectedProofPurpose was given, and it does not match proof.proofPurpose, an error MUST be raised and SHOULD convey an error type of PROOF_VERIFICATION_ERROR." + "rowId": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#:~:text=If%20expectedProofPurpose%20was%20given%2C%20and%20it%20does%20not%20match%20proof.proofPurpose%2C%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_VERIFICATION_ERROR.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 37219, + "_idleStart": 41161, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 73, + "duration": 87, "state": "passed", - "speed": "medium" + "speed": "slow" }, { "type": "test", - "title": "If expectedProofPurpose was given, and it does not match proof.proofPurpose, an error MUST be raised and SHOULD convey an error type of PROOF_VERIFICATION_ERROR.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#:~:text=If%20expectedProofPurpose%20was%20given%2C%20and%20it%20does%20not%20match%20proof.proofPurpose%2C%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_VERIFICATION_ERROR.';\n // NOTE: expectedProofPurpose should be specified by verifiers internally\n // it is very unlikely to be invalidProofPurpose\n await verificationFail({\n credential: credentials.clone('invalidProofPurpose'),\n verifier,\n reason: 'Verifier should reject VC with invalid proof purpose.'\n });\n }", + "title": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('invalidProofType');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -21802,33 +21532,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "f0-mulLPVXI8cAjC5yH-C", + "parent": "eS-Sz740TQReObqQ_sP03", "ctx": null, - "_testId": "urn:uuid:91d9ff5e-d7b9-4ed8-a08e-c37e680ea7c2", + "_testId": "urn:uuid:7d1bec78-0472-480b-b4fb-fdce3915020b", "cell": { "columnId": "OpSecId", - "rowId": "If expectedProofPurpose was given, and it does not match proof.proofPurpose, an error MUST be raised and SHOULD convey an error type of PROOF_VERIFICATION_ERROR." + "rowId": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#:~:text=If%20expectedProofPurpose%20was%20given%2C%20and%20it%20does%20not%20match%20proof.proofPurpose%2C%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_VERIFICATION_ERROR.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38350, + "_idleStart": 42538, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 25, + "duration": 29, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "If expectedProofPurpose was given, and it does not match proof.proofPurpose, an error MUST be raised and SHOULD convey an error type of PROOF_VERIFICATION_ERROR.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#:~:text=If%20expectedProofPurpose%20was%20given%2C%20and%20it%20does%20not%20match%20proof.proofPurpose%2C%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_VERIFICATION_ERROR.';\n // NOTE: expectedProofPurpose should be specified by verifiers internally\n // it is very unlikely to be invalidProofPurpose\n await verificationFail({\n credential: credentials.clone('invalidProofPurpose'),\n verifier,\n reason: 'Verifier should reject VC with invalid proof purpose.'\n });\n }", + "title": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('invalidProofType');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -21838,33 +21567,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "NRNAY3b3Vtm8PfC-PFvjh", + "parent": "WvyzRIP6TnxLKp9PEVOWp", "ctx": null, - "_testId": "urn:uuid:7d87df43-592a-4331-9c55-bd47b58e8cbb", + "_testId": "urn:uuid:cecb8d53-53d4-45e4-972a-e2f51b3bec25", "cell": { "columnId": "SpruceID", - "rowId": "If expectedProofPurpose was given, and it does not match proof.proofPurpose, an error MUST be raised and SHOULD convey an error type of PROOF_VERIFICATION_ERROR." + "rowId": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#:~:text=If%20expectedProofPurpose%20was%20given%2C%20and%20it%20does%20not%20match%20proof.proofPurpose%2C%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_VERIFICATION_ERROR.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38811, + "_idleStart": 43180, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 14, + "duration": 19, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "If expectedProofPurpose was given, and it does not match proof.proofPurpose, an error MUST be raised and SHOULD convey an error type of PROOF_VERIFICATION_ERROR.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#:~:text=If%20expectedProofPurpose%20was%20given%2C%20and%20it%20does%20not%20match%20proof.proofPurpose%2C%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_VERIFICATION_ERROR.';\n // NOTE: expectedProofPurpose should be specified by verifiers internally\n // it is very unlikely to be invalidProofPurpose\n await verificationFail({\n credential: credentials.clone('invalidProofPurpose'),\n verifier,\n reason: 'Verifier should reject VC with invalid proof purpose.'\n });\n }", + "title": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('invalidProofType');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -21874,39 +21602,37 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "rAhKx-OZJpBnB_wNqlSW7", + "parent": "oxQe-kP64Nqi6XD181EqS", "ctx": null, - "_testId": "urn:uuid:f3f4348a-23bf-4a03-85ec-8c5048894499", + "_testId": "urn:uuid:83af0126-586c-4be1-a3fa-9cf4a03b1e36", "cell": { "columnId": "Trinsic", - "rowId": "If expectedProofPurpose was given, and it does not match proof.proofPurpose, an error MUST be raised and SHOULD convey an error type of PROOF_VERIFICATION_ERROR." + "rowId": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#:~:text=If%20expectedProofPurpose%20was%20given%2C%20and%20it%20does%20not%20match%20proof.proofPurpose%2C%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_VERIFICATION_ERROR.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 40857, + "_idleStart": 43965, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 17, + "duration": 18, "state": "passed", "speed": "fast" } ] }, { - "id": "The proofValue property MUST be used, as specified in 2.1 Proofs.", - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20proofValue%20property%20MUST%20be%20used%2C%20as%20specified%20in%202.1%20Proofs.", + "id": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised.", "cells": [ { "type": "test", - "title": "The proofValue property MUST be used, as specified in 2.1 Proofs.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20proofValue%20property%20MUST%20be%20used%2C%20as%20specified%20in%202.1%20Proofs.';\n await proofValueTests;\n }", + "title": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('noVm');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -21916,33 +21642,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "sB84IWOcTXVtgkn0L_FP3", + "parent": "4lbuxdf6TSMBdUCatK9o7", "ctx": null, - "_testId": "urn:uuid:7214bbf3-e76d-436a-bd74-0e561042d4f9", + "_testId": "urn:uuid:f4c7c8c7-07ec-4bdc-96f8-73f1476e4bc6", "cell": { "columnId": "apicatalog.com", - "rowId": "The proofValue property MUST be used, as specified in 2.1 Proofs." + "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20proofValue%20property%20MUST%20be%20used%2C%20as%20specified%20in%202.1%20Proofs.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 14388, + "_idleStart": 18421, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 43, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "The proofValue property MUST be used, as specified in 2.1 Proofs.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20proofValue%20property%20MUST%20be%20used%2C%20as%20specified%20in%202.1%20Proofs.';\n await proofValueTests;\n }", + "title": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('noVm');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -21952,33 +21677,38 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "Gzkcizg3ZqNOVK153M4AF", + "parent": "m-95LkeEjgnUOl8RA2_qH", "ctx": null, - "_testId": "urn:uuid:d4507e3d-9e2a-40e5-8f63-c6a3ede7f65e", + "_testId": "urn:uuid:122302c7-fb73-44e1-a20e-ce40ad31caad", "cell": { "columnId": "Danube Tech", - "rowId": "The proofValue property MUST be used, as specified in 2.1 Proofs." + "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20proofValue%20property%20MUST%20be%20used%2C%20as%20specified%20in%202.1%20Proofs.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 19443, + "_idleStart": 21950, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, - "state": "passed", - "speed": "fast" + "duration": 104, + "state": "failed", + "err": { + "name": "AssertionError", + "message": "Expected \"response.status\" to exist.: expected undefined to exist", + "showDiff": false, + "operator": "strictEqual", + "stack": "AssertionError: Expected \"response.status\" to exist.: expected undefined to exist\n at should.exist (node_modules/chai/lib/chai/interface/should.js:144:34)\n at shouldBeErrorResponse (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:240:10)\n at verificationFail (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:51:3)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/suites/verify.js:81:7)" + } }, { "type": "test", - "title": "The proofValue property MUST be used, as specified in 2.1 Proofs.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20proofValue%20property%20MUST%20be%20used%2C%20as%20specified%20in%202.1%20Proofs.';\n await proofValueTests;\n }", + "title": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('noVm');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -21988,33 +21718,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "afHD67eaDEinS_JWzRU75", + "parent": "vjCbcL73Y3Hj-3-3Vt2xr", "ctx": null, - "_testId": "urn:uuid:4bb0f2c1-1f12-4fec-8543-0acad01e6320", + "_testId": "urn:uuid:e280038d-346e-4dcc-ac99-60c9e5c8e4e7", "cell": { "columnId": "Digital Bazaar", - "rowId": "The proofValue property MUST be used, as specified in 2.1 Proofs." + "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20proofValue%20property%20MUST%20be%20used%2C%20as%20specified%20in%202.1%20Proofs.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 25500, + "_idleStart": 29273, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 34, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "The proofValue property MUST be used, as specified in 2.1 Proofs.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20proofValue%20property%20MUST%20be%20used%2C%20as%20specified%20in%202.1%20Proofs.';\n await proofValueTests;\n }", + "title": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('noVm');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -22024,33 +21753,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "WiCTAagC6srf5khQKfvNc", + "parent": "kI_ZSoLzqZSvNBsn3jzIQ", "ctx": null, - "_testId": "urn:uuid:5e229bbf-ca44-4c40-8621-f5f08e8f0dd6", + "_testId": "urn:uuid:82625b50-fafb-4fe1-ad0e-015d89386fe0", "cell": { "columnId": "EWF", - "rowId": "The proofValue property MUST be used, as specified in 2.1 Proofs." + "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20proofValue%20property%20MUST%20be%20used%2C%20as%20specified%20in%202.1%20Proofs.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 27129, + "_idleStart": 30734, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 132, "state": "passed", - "speed": "fast" + "speed": "slow" }, { "type": "test", - "title": "The proofValue property MUST be used, as specified in 2.1 Proofs.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20proofValue%20property%20MUST%20be%20used%2C%20as%20specified%20in%202.1%20Proofs.';\n await proofValueTests;\n }", + "title": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('noVm');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -22060,33 +21788,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "fzukTmGunqgrw1pwPErT7", + "parent": "4tSBZN6UnobQjWlMYrZJM", "ctx": null, - "_testId": "urn:uuid:583b9a96-5433-495f-983f-5ee0bf1f369c", + "_testId": "urn:uuid:e49a4952-07a2-427c-b5e0-d2fdf1f10b1c", "cell": { "columnId": "LearnCard", - "rowId": "The proofValue property MUST be used, as specified in 2.1 Proofs." + "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20proofValue%20property%20MUST%20be%20used%2C%20as%20specified%20in%202.1%20Proofs.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 37292, + "_idleStart": 41248, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 37, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "The proofValue property MUST be used, as specified in 2.1 Proofs.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20proofValue%20property%20MUST%20be%20used%2C%20as%20specified%20in%202.1%20Proofs.';\n await proofValueTests;\n }", + "title": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('noVm');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -22096,33 +21823,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "f0-mulLPVXI8cAjC5yH-C", + "parent": "eS-Sz740TQReObqQ_sP03", "ctx": null, - "_testId": "urn:uuid:174fb2b7-d6d5-4e76-b05f-8bf29ae961af", + "_testId": "urn:uuid:3193fd45-8436-4894-ad0a-08e1f001dbca", "cell": { "columnId": "OpSecId", - "rowId": "The proofValue property MUST be used, as specified in 2.1 Proofs." + "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20proofValue%20property%20MUST%20be%20used%2C%20as%20specified%20in%202.1%20Proofs.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38375, + "_idleStart": 42567, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 22, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "The proofValue property MUST be used, as specified in 2.1 Proofs.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20proofValue%20property%20MUST%20be%20used%2C%20as%20specified%20in%202.1%20Proofs.';\n await proofValueTests;\n }", + "title": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('noVm');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -22132,33 +21858,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "NRNAY3b3Vtm8PfC-PFvjh", + "parent": "WvyzRIP6TnxLKp9PEVOWp", "ctx": null, - "_testId": "urn:uuid:986bc239-1f9b-48db-ab20-5e29723b7568", + "_testId": "urn:uuid:b109b09f-f6a4-4e40-a267-3928f555699d", "cell": { "columnId": "SpruceID", - "rowId": "The proofValue property MUST be used, as specified in 2.1 Proofs." + "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20proofValue%20property%20MUST%20be%20used%2C%20as%20specified%20in%202.1%20Proofs.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38825, + "_idleStart": 43199, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 18, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "The proofValue property MUST be used, as specified in 2.1 Proofs.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20proofValue%20property%20MUST%20be%20used%2C%20as%20specified%20in%202.1%20Proofs.';\n await proofValueTests;\n }", + "title": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('noVm');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -22168,39 +21893,37 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "rAhKx-OZJpBnB_wNqlSW7", + "parent": "oxQe-kP64Nqi6XD181EqS", "ctx": null, - "_testId": "urn:uuid:d68b7dec-4af2-498e-863c-e6ea91067c88", + "_testId": "urn:uuid:40488352-9760-42e7-b37a-cd3b31f7da84", "cell": { "columnId": "Trinsic", - "rowId": "The proofValue property MUST be used, as specified in 2.1 Proofs." + "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20proofValue%20property%20MUST%20be%20used%2C%20as%20specified%20in%202.1%20Proofs.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 40875, + "_idleStart": 43984, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 20, "state": "passed", "speed": "fast" } ] }, { - "id": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification.", - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof", + "id": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised.", "cells": [ { "type": "test", - "title": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof';\n await proofValueTests;\n }", + "title": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('invalidVm');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -22210,33 +21933,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "sB84IWOcTXVtgkn0L_FP3", + "parent": "4lbuxdf6TSMBdUCatK9o7", "ctx": null, - "_testId": "urn:uuid:b2a6e459-2c67-4451-8c81-35360b7d7fbc", + "_testId": "urn:uuid:9ffee054-c021-44b1-a12a-3a33facf6b14", "cell": { "columnId": "apicatalog.com", - "rowId": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification." + "rowId": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 14388, + "_idleStart": 18464, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 116, "state": "passed", - "speed": "fast" + "speed": "slow" }, { "type": "test", - "title": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof';\n await proofValueTests;\n }", + "title": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('invalidVm');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -22246,33 +21968,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "Gzkcizg3ZqNOVK153M4AF", + "parent": "m-95LkeEjgnUOl8RA2_qH", "ctx": null, - "_testId": "urn:uuid:f6d618b9-40de-44ed-a2b8-4cadf7f20d91", + "_testId": "urn:uuid:89c9614d-9e09-415f-bbad-c453a1184c0c", "cell": { "columnId": "Danube Tech", - "rowId": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification." + "rowId": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 19443, + "_idleStart": 22055, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 647, "state": "passed", - "speed": "fast" + "speed": "slow" }, { "type": "test", - "title": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof';\n await proofValueTests;\n }", + "title": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('invalidVm');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -22282,33 +22003,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "afHD67eaDEinS_JWzRU75", + "parent": "vjCbcL73Y3Hj-3-3Vt2xr", "ctx": null, - "_testId": "urn:uuid:f2772284-192f-41a7-8b8d-f219c2ed80ab", + "_testId": "urn:uuid:3e6e7bc2-578c-45d7-9c37-b37b8d1ad000", "cell": { "columnId": "Digital Bazaar", - "rowId": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification." + "rowId": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 25501, + "_idleStart": 29307, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 45, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof';\n await proofValueTests;\n }", + "title": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('invalidVm');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -22318,33 +22038,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "WiCTAagC6srf5khQKfvNc", + "parent": "kI_ZSoLzqZSvNBsn3jzIQ", "ctx": null, - "_testId": "urn:uuid:ac056cc5-626e-4913-96b8-78708b199ae2", + "_testId": "urn:uuid:6472c33e-83d7-4654-a6cb-87d51511b458", "cell": { "columnId": "EWF", - "rowId": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification." + "rowId": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 27129, + "_idleStart": 30867, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 90, "state": "passed", - "speed": "fast" + "speed": "slow" }, { "type": "test", - "title": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof';\n await proofValueTests;\n }", + "title": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('invalidVm');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -22354,33 +22073,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "fzukTmGunqgrw1pwPErT7", + "parent": "4tSBZN6UnobQjWlMYrZJM", "ctx": null, - "_testId": "urn:uuid:4685d794-b3e3-4c49-9235-3085f3c1986f", + "_testId": "urn:uuid:48acff62-67a3-4a4f-a747-16e344b87d95", "cell": { "columnId": "LearnCard", - "rowId": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification." + "rowId": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 37292, + "_idleStart": 41285, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 78, "state": "passed", - "speed": "fast" + "speed": "slow" }, { "type": "test", - "title": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof';\n await proofValueTests;\n }", + "title": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('invalidVm');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -22390,33 +22108,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "f0-mulLPVXI8cAjC5yH-C", + "parent": "eS-Sz740TQReObqQ_sP03", "ctx": null, - "_testId": "urn:uuid:a5afb667-89d2-4291-a4f0-c79c80571e3e", + "_testId": "urn:uuid:9f5b917b-05d9-4663-b5d6-4347c666bb62", "cell": { "columnId": "OpSecId", - "rowId": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification." + "rowId": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38375, + "_idleStart": 42589, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 38, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof';\n await proofValueTests;\n }", + "title": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('invalidVm');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -22426,33 +22143,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "NRNAY3b3Vtm8PfC-PFvjh", + "parent": "WvyzRIP6TnxLKp9PEVOWp", "ctx": null, - "_testId": "urn:uuid:91d65f3c-ec4b-497b-85c7-a4cc64f37a9f", + "_testId": "urn:uuid:41998895-106b-4da2-a082-684549f6c16c", "cell": { "columnId": "SpruceID", - "rowId": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification." + "rowId": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38826, + "_idleStart": 43217, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 16, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof';\n await proofValueTests;\n }", + "title": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('invalidVm');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -22462,39 +22178,37 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "rAhKx-OZJpBnB_wNqlSW7", + "parent": "oxQe-kP64Nqi6XD181EqS", "ctx": null, - "_testId": "urn:uuid:ce464a5d-00f0-49bd-8f46-c5422282c93d", + "_testId": "urn:uuid:708db87b-2a42-4794-89c1-1e21caf0dc23", "cell": { "columnId": "Trinsic", - "rowId": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification." + "rowId": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 40875, + "_idleStart": 44003, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 25, "state": "passed", "speed": "fast" } ] }, { - "id": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document.", - "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.", + "id": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised.", "cells": [ { "type": "test", - "title": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.';\n await verificationFail({\n credential: credentials.clone('undefinedTerm'),\n verifier,\n reason: 'Should fail to verify VC when data is dropped by JSON-LD'\n });\n const undefinedTerm = credentials.clone('issuedVc');\n undefinedTerm.credentialSubject.undefinedTerm = 'IfDroppedWillVerify';\n await verificationFail({\n credential: undefinedTerm,\n verifier,\n reason: 'Should fail to verify VC if an undefined term is added ' +\n 'after issuance.'\n });\n const undefinedType = credentials.clone('issuedVc');\n undefinedType.type.push('UndefinedType');\n await verificationFail({\n credential: undefinedType,\n verifier,\n reason: 'Should fail to verify VC if an undefined type is added ' +\n 'after issuance.'\n });\n }", + "title": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('noProofPurpose');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -22504,33 +22218,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "sB84IWOcTXVtgkn0L_FP3", + "parent": "4lbuxdf6TSMBdUCatK9o7", "ctx": null, - "_testId": "urn:uuid:9dd3bb36-12eb-4099-9d09-5dc5adae2055", + "_testId": "urn:uuid:b728b270-bf9b-438e-9cd6-66c8e0228740", "cell": { "columnId": "apicatalog.com", - "rowId": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document." + "rowId": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 14388, + "_idleStart": 18580, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 140, + "duration": 41, "state": "passed", - "speed": "slow" + "speed": "medium" }, { "type": "test", - "title": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.';\n await verificationFail({\n credential: credentials.clone('undefinedTerm'),\n verifier,\n reason: 'Should fail to verify VC when data is dropped by JSON-LD'\n });\n const undefinedTerm = credentials.clone('issuedVc');\n undefinedTerm.credentialSubject.undefinedTerm = 'IfDroppedWillVerify';\n await verificationFail({\n credential: undefinedTerm,\n verifier,\n reason: 'Should fail to verify VC if an undefined term is added ' +\n 'after issuance.'\n });\n const undefinedType = credentials.clone('issuedVc');\n undefinedType.type.push('UndefinedType');\n await verificationFail({\n credential: undefinedType,\n verifier,\n reason: 'Should fail to verify VC if an undefined type is added ' +\n 'after issuance.'\n });\n }", + "title": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('noProofPurpose');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -22540,33 +22253,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "Gzkcizg3ZqNOVK153M4AF", + "parent": "m-95LkeEjgnUOl8RA2_qH", "ctx": null, - "_testId": "urn:uuid:93a3c77d-08e6-4f4a-bfa7-0fda908668b3", + "_testId": "urn:uuid:02009654-075d-4760-855c-d72cda8db368", "cell": { "columnId": "Danube Tech", - "rowId": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document." + "rowId": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 19443, + "_idleStart": 22703, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 678, + "duration": 647, "state": "passed", "speed": "slow" }, { "type": "test", - "title": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.';\n await verificationFail({\n credential: credentials.clone('undefinedTerm'),\n verifier,\n reason: 'Should fail to verify VC when data is dropped by JSON-LD'\n });\n const undefinedTerm = credentials.clone('issuedVc');\n undefinedTerm.credentialSubject.undefinedTerm = 'IfDroppedWillVerify';\n await verificationFail({\n credential: undefinedTerm,\n verifier,\n reason: 'Should fail to verify VC if an undefined term is added ' +\n 'after issuance.'\n });\n const undefinedType = credentials.clone('issuedVc');\n undefinedType.type.push('UndefinedType');\n await verificationFail({\n credential: undefinedType,\n verifier,\n reason: 'Should fail to verify VC if an undefined type is added ' +\n 'after issuance.'\n });\n }", + "title": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('noProofPurpose');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -22576,33 +22288,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "afHD67eaDEinS_JWzRU75", + "parent": "vjCbcL73Y3Hj-3-3Vt2xr", "ctx": null, - "_testId": "urn:uuid:62681695-9f23-4e30-a997-a7aaccf4d226", + "_testId": "urn:uuid:4a34c4ea-d2ca-4fbd-88d7-58c66470e576", "cell": { "columnId": "Digital Bazaar", - "rowId": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document." + "rowId": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 25501, + "_idleStart": 29352, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 129, + "duration": 59, "state": "passed", - "speed": "slow" + "speed": "medium" }, { "type": "test", - "title": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.';\n await verificationFail({\n credential: credentials.clone('undefinedTerm'),\n verifier,\n reason: 'Should fail to verify VC when data is dropped by JSON-LD'\n });\n const undefinedTerm = credentials.clone('issuedVc');\n undefinedTerm.credentialSubject.undefinedTerm = 'IfDroppedWillVerify';\n await verificationFail({\n credential: undefinedTerm,\n verifier,\n reason: 'Should fail to verify VC if an undefined term is added ' +\n 'after issuance.'\n });\n const undefinedType = credentials.clone('issuedVc');\n undefinedType.type.push('UndefinedType');\n await verificationFail({\n credential: undefinedType,\n verifier,\n reason: 'Should fail to verify VC if an undefined type is added ' +\n 'after issuance.'\n });\n }", + "title": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('noProofPurpose');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -22612,33 +22323,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "WiCTAagC6srf5khQKfvNc", + "parent": "kI_ZSoLzqZSvNBsn3jzIQ", "ctx": null, - "_testId": "urn:uuid:5af49b65-a51b-419d-86e0-3775cadd3c4a", + "_testId": "urn:uuid:76a2a4ed-535b-43cc-a48c-ba4dd776bba3", "cell": { "columnId": "EWF", - "rowId": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document." + "rowId": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 27130, + "_idleStart": 30958, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 285, + "duration": 91, "state": "passed", "speed": "slow" }, { "type": "test", - "title": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.';\n await verificationFail({\n credential: credentials.clone('undefinedTerm'),\n verifier,\n reason: 'Should fail to verify VC when data is dropped by JSON-LD'\n });\n const undefinedTerm = credentials.clone('issuedVc');\n undefinedTerm.credentialSubject.undefinedTerm = 'IfDroppedWillVerify';\n await verificationFail({\n credential: undefinedTerm,\n verifier,\n reason: 'Should fail to verify VC if an undefined term is added ' +\n 'after issuance.'\n });\n const undefinedType = credentials.clone('issuedVc');\n undefinedType.type.push('UndefinedType');\n await verificationFail({\n credential: undefinedType,\n verifier,\n reason: 'Should fail to verify VC if an undefined type is added ' +\n 'after issuance.'\n });\n }", + "title": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('noProofPurpose');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -22648,33 +22358,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "fzukTmGunqgrw1pwPErT7", + "parent": "4tSBZN6UnobQjWlMYrZJM", "ctx": null, - "_testId": "urn:uuid:ab2b1502-f5f6-4cd9-8ab9-1b789fdf150e", + "_testId": "urn:uuid:5dbc31fe-ff8e-453c-96f6-d87cfd355550", "cell": { "columnId": "LearnCard", - "rowId": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document." + "rowId": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 37292, + "_idleStart": 41363, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 199, + "duration": 42, "state": "passed", - "speed": "slow" + "speed": "medium" }, { "type": "test", - "title": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.';\n await verificationFail({\n credential: credentials.clone('undefinedTerm'),\n verifier,\n reason: 'Should fail to verify VC when data is dropped by JSON-LD'\n });\n const undefinedTerm = credentials.clone('issuedVc');\n undefinedTerm.credentialSubject.undefinedTerm = 'IfDroppedWillVerify';\n await verificationFail({\n credential: undefinedTerm,\n verifier,\n reason: 'Should fail to verify VC if an undefined term is added ' +\n 'after issuance.'\n });\n const undefinedType = credentials.clone('issuedVc');\n undefinedType.type.push('UndefinedType');\n await verificationFail({\n credential: undefinedType,\n verifier,\n reason: 'Should fail to verify VC if an undefined type is added ' +\n 'after issuance.'\n });\n }", + "title": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('noProofPurpose');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -22684,33 +22393,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "f0-mulLPVXI8cAjC5yH-C", + "parent": "eS-Sz740TQReObqQ_sP03", "ctx": null, - "_testId": "urn:uuid:0989e9c3-e488-4cfe-9b7d-7506947421e8", + "_testId": "urn:uuid:57ebb192-b89b-4fa9-83ac-193697e1fd05", "cell": { "columnId": "OpSecId", - "rowId": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document." + "rowId": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38376, + "_idleStart": 42627, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 75, + "duration": 26, "state": "passed", - "speed": "medium" + "speed": "fast" }, { "type": "test", - "title": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.';\n await verificationFail({\n credential: credentials.clone('undefinedTerm'),\n verifier,\n reason: 'Should fail to verify VC when data is dropped by JSON-LD'\n });\n const undefinedTerm = credentials.clone('issuedVc');\n undefinedTerm.credentialSubject.undefinedTerm = 'IfDroppedWillVerify';\n await verificationFail({\n credential: undefinedTerm,\n verifier,\n reason: 'Should fail to verify VC if an undefined term is added ' +\n 'after issuance.'\n });\n const undefinedType = credentials.clone('issuedVc');\n undefinedType.type.push('UndefinedType');\n await verificationFail({\n credential: undefinedType,\n verifier,\n reason: 'Should fail to verify VC if an undefined type is added ' +\n 'after issuance.'\n });\n }", + "title": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('noProofPurpose');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -22720,33 +22428,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "NRNAY3b3Vtm8PfC-PFvjh", + "parent": "WvyzRIP6TnxLKp9PEVOWp", "ctx": null, - "_testId": "urn:uuid:b88efc5e-b6ec-4806-af16-dd4ba27efe50", + "_testId": "urn:uuid:cf585086-d05e-410d-8728-f10d55c137a0", "cell": { "columnId": "SpruceID", - "rowId": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document." + "rowId": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38826, + "_idleStart": 43232, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 45, + "duration": 22, "state": "passed", - "speed": "medium" + "speed": "fast" }, { "type": "test", - "title": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.';\n await verificationFail({\n credential: credentials.clone('undefinedTerm'),\n verifier,\n reason: 'Should fail to verify VC when data is dropped by JSON-LD'\n });\n const undefinedTerm = credentials.clone('issuedVc');\n undefinedTerm.credentialSubject.undefinedTerm = 'IfDroppedWillVerify';\n await verificationFail({\n credential: undefinedTerm,\n verifier,\n reason: 'Should fail to verify VC if an undefined term is added ' +\n 'after issuance.'\n });\n const undefinedType = credentials.clone('issuedVc');\n undefinedType.type.push('UndefinedType');\n await verificationFail({\n credential: undefinedType,\n verifier,\n reason: 'Should fail to verify VC if an undefined type is added ' +\n 'after issuance.'\n });\n }", + "title": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('noProofPurpose');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -22756,39 +22463,37 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "rAhKx-OZJpBnB_wNqlSW7", + "parent": "oxQe-kP64Nqi6XD181EqS", "ctx": null, - "_testId": "urn:uuid:28cca128-a8f7-4cf1-b3f1-a622ea25a401", + "_testId": "urn:uuid:93df03db-b5e7-4a3d-80c0-6e918feb11bb", "cell": { "columnId": "Trinsic", - "rowId": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document." + "rowId": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 40875, + "_idleStart": 44029, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 122, + "duration": 19, "state": "passed", - "speed": "slow" + "speed": "fast" } ] }, { - "id": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC", + "id": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised.", "cells": [ { "type": "test", - "title": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC';\n const credential = credentials.clone('invalidCreated');\n await verificationFail({credential, verifier});\n }", + "title": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('invalidProofPurpose');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -22798,33 +22503,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "sB84IWOcTXVtgkn0L_FP3", + "parent": "4lbuxdf6TSMBdUCatK9o7", "ctx": null, - "_testId": "urn:uuid:8cf24f73-d023-4304-9864-27de93ed7fba", + "_testId": "urn:uuid:9ce1fb4d-cdf2-457d-965f-da9ba12e64fc", "cell": { "columnId": "apicatalog.com", - "rowId": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." + "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 14528, + "_idleStart": 18622, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 48, + "duration": 49, "state": "passed", "speed": "medium" }, { "type": "test", - "title": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC';\n const credential = credentials.clone('invalidCreated');\n await verificationFail({credential, verifier});\n }", + "title": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('invalidProofPurpose');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -22834,33 +22538,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "Gzkcizg3ZqNOVK153M4AF", + "parent": "m-95LkeEjgnUOl8RA2_qH", "ctx": null, - "_testId": "urn:uuid:759e03a3-6b71-4b37-a514-8c9e191ec915", + "_testId": "urn:uuid:bef42972-6bd7-4a93-ad7a-73a16a03e77f", "cell": { "columnId": "Danube Tech", - "rowId": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." + "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 20121, + "_idleStart": 23350, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 713, + "duration": 225, "state": "passed", "speed": "slow" }, { "type": "test", - "title": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC';\n const credential = credentials.clone('invalidCreated');\n await verificationFail({credential, verifier});\n }", + "title": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('invalidProofPurpose');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -22870,33 +22573,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "afHD67eaDEinS_JWzRU75", + "parent": "vjCbcL73Y3Hj-3-3Vt2xr", "ctx": null, - "_testId": "urn:uuid:c590d8bb-a741-43b4-aa4a-5e6188e033de", + "_testId": "urn:uuid:2db1ddf7-3854-416b-8c89-c68dba9e3a58", "cell": { "columnId": "Digital Bazaar", - "rowId": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." + "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 25629, + "_idleStart": 29411, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 48, + "duration": 43, "state": "passed", "speed": "medium" }, { "type": "test", - "title": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC';\n const credential = credentials.clone('invalidCreated');\n await verificationFail({credential, verifier});\n }", + "title": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('invalidProofPurpose');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -22906,33 +22608,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "WiCTAagC6srf5khQKfvNc", + "parent": "kI_ZSoLzqZSvNBsn3jzIQ", "ctx": null, - "_testId": "urn:uuid:ff8197a3-18cf-46df-bc89-92a6f7c3727f", + "_testId": "urn:uuid:81a1a06e-930f-4769-900d-a26d4fda2f49", "cell": { "columnId": "EWF", - "rowId": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." + "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 27415, + "_idleStart": 31049, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 85, + "duration": 92, "state": "passed", "speed": "slow" }, { "type": "test", - "title": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC';\n const credential = credentials.clone('invalidCreated');\n await verificationFail({credential, verifier});\n }", + "title": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('invalidProofPurpose');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -22942,33 +22643,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "fzukTmGunqgrw1pwPErT7", + "parent": "4tSBZN6UnobQjWlMYrZJM", "ctx": null, - "_testId": "urn:uuid:c960dc2a-6fb7-4e3c-aa84-d2674fd022c4", + "_testId": "urn:uuid:24863afb-7ab0-4506-8b16-60a53dcdeff5", "cell": { "columnId": "LearnCard", - "rowId": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." + "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 37491, + "_idleStart": 41405, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 56, + "duration": 85, "state": "passed", - "speed": "medium" + "speed": "slow" }, { "type": "test", - "title": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC';\n const credential = credentials.clone('invalidCreated');\n await verificationFail({credential, verifier});\n }", + "title": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('invalidProofPurpose');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -22978,21 +22678,20 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "f0-mulLPVXI8cAjC5yH-C", + "parent": "eS-Sz740TQReObqQ_sP03", "ctx": null, - "_testId": "urn:uuid:6b32e7bf-7952-4015-9097-6e7b6c6fdc19", + "_testId": "urn:uuid:02700d36-f296-4fb8-b00d-e1243b4e5cb5", "cell": { "columnId": "OpSecId", - "rowId": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." + "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38450, + "_idleStart": 42653, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -23003,8 +22702,8 @@ }, { "type": "test", - "title": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC';\n const credential = credentials.clone('invalidCreated');\n await verificationFail({credential, verifier});\n }", + "title": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('invalidProofPurpose');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -23014,33 +22713,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "NRNAY3b3Vtm8PfC-PFvjh", + "parent": "WvyzRIP6TnxLKp9PEVOWp", "ctx": null, - "_testId": "urn:uuid:f8609c50-9bcd-4273-955f-8417e2543ba3", + "_testId": "urn:uuid:5bc584db-11f4-45e7-8dfc-4bca52fcbf7a", "cell": { "columnId": "SpruceID", - "rowId": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." + "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38871, + "_idleStart": 43254, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 14, + "duration": 18, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC';\n const credential = credentials.clone('invalidCreated');\n await verificationFail({credential, verifier});\n }", + "title": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised.", + "body": "async function() {\n const credential = credentials.clone('invalidProofPurpose');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -23050,39 +22748,38 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "rAhKx-OZJpBnB_wNqlSW7", + "parent": "oxQe-kP64Nqi6XD181EqS", "ctx": null, - "_testId": "urn:uuid:5a43a975-6c18-4479-9102-cdc192b02112", + "_testId": "urn:uuid:0dcbda31-ccb2-4457-8e4b-5761841646c5", "cell": { "columnId": "Trinsic", - "rowId": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." + "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 40998, + "_idleStart": 44048, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 18, + "duration": 20, "state": "passed", "speed": "fast" } ] }, { - "id": "The value of the cryptosuite property MUST be a string that identifies the cryptographic suite. If the processing environment supports subtypes of string, the type of the cryptosuite value MUST be the https://w3id.org/security#cryptosuiteString subtype of string.", - "link": "https://w3c.github.io/vc-data-integrity/#introduction:~:text=The%20value%20of%20the%20cryptosuite%20property%20MUST%20be%20a%20string%20that%20identifies%20the%20cryptographic%20suite.%20If%20the%20processing%20environment%20supports%20subtypes%20of%20string%2C%20the%20type%20of%20the%20cryptosuite%20value%20MUST%20be%20the%20https%3A//w3id.org/security%23cryptosuiteString%20subtype%20of%20string.", + "id": "If expectedProofPurpose was given, and it does not match proof.proofPurpose, an error MUST be raised and SHOULD convey an error type of PROOF_VERIFICATION_ERROR.", + "link": "https://w3c.github.io/vc-data-integrity/#:~:text=If%20expectedProofPurpose%20was%20given%2C%20and%20it%20does%20not%20match%20proof.proofPurpose%2C%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_VERIFICATION_ERROR.", "cells": [ { "type": "test", - "title": "The value of the cryptosuite property MUST be a string that identifies the cryptographic suite. If the processing environment supports subtypes of string, the type of the cryptosuite value MUST be the https://w3id.org/security#cryptosuiteString subtype of string.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=The%20value%20of%20the%20cryptosuite%20property%20MUST%20be%20a%20string%20that%20identifies%20the%20cryptographic%20suite.%20If%20the%20processing%20environment%20supports%20subtypes%20of%20string%2C%20the%20type%20of%20the%20cryptosuite%20value%20MUST%20be%20the%20https%3A//w3id.org/security%23cryptosuiteString%20subtype%20of%20string.';\n const credential = credentials.clone('invalidCryptosuite');\n await verificationFail({credential, verifier});\n }", + "title": "If expectedProofPurpose was given, and it does not match proof.proofPurpose, an error MUST be raised and SHOULD convey an error type of PROOF_VERIFICATION_ERROR.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#:~:text=If%20expectedProofPurpose%20was%20given%2C%20and%20it%20does%20not%20match%20proof.proofPurpose%2C%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_VERIFICATION_ERROR.';\n // NOTE: expectedProofPurpose should be specified by verifiers internally\n // it is very unlikely to be invalidProofPurpose\n await verificationFail({\n credential: credentials.clone('invalidProofPurpose'),\n verifier,\n reason: 'Verifier should reject VC with invalid proof purpose.'\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -23092,33 +22789,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "sB84IWOcTXVtgkn0L_FP3", + "parent": "4lbuxdf6TSMBdUCatK9o7", "ctx": null, - "_testId": "urn:uuid:eec067c6-5067-468e-b806-48d6295cb0ae", + "_testId": "urn:uuid:29280216-24af-4b13-92c7-ff0c6268a9a5", "cell": { "columnId": "apicatalog.com", - "rowId": "The value of the cryptosuite property MUST be a string that identifies the cryptographic suite. If the processing environment supports subtypes of string, the type of the cryptosuite value MUST be the https://w3id.org/security#cryptosuiteString subtype of string." + "rowId": "If expectedProofPurpose was given, and it does not match proof.proofPurpose, an error MUST be raised and SHOULD convey an error type of PROOF_VERIFICATION_ERROR." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#introduction:~:text=The%20value%20of%20the%20cryptosuite%20property%20MUST%20be%20a%20string%20that%20identifies%20the%20cryptographic%20suite.%20If%20the%20processing%20environment%20supports%20subtypes%20of%20string%2C%20the%20type%20of%20the%20cryptosuite%20value%20MUST%20be%20the%20https%3A//w3id.org/security%23cryptosuiteString%20subtype%20of%20string.", + "link": "https://w3c.github.io/vc-data-integrity/#:~:text=If%20expectedProofPurpose%20was%20given%2C%20and%20it%20does%20not%20match%20proof.proofPurpose%2C%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_VERIFICATION_ERROR.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 14577, + "_idleStart": 18671, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 51, + "duration": 65, "state": "passed", "speed": "medium" }, { "type": "test", - "title": "The value of the cryptosuite property MUST be a string that identifies the cryptographic suite. If the processing environment supports subtypes of string, the type of the cryptosuite value MUST be the https://w3id.org/security#cryptosuiteString subtype of string.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=The%20value%20of%20the%20cryptosuite%20property%20MUST%20be%20a%20string%20that%20identifies%20the%20cryptographic%20suite.%20If%20the%20processing%20environment%20supports%20subtypes%20of%20string%2C%20the%20type%20of%20the%20cryptosuite%20value%20MUST%20be%20the%20https%3A//w3id.org/security%23cryptosuiteString%20subtype%20of%20string.';\n const credential = credentials.clone('invalidCryptosuite');\n await verificationFail({credential, verifier});\n }", + "title": "If expectedProofPurpose was given, and it does not match proof.proofPurpose, an error MUST be raised and SHOULD convey an error type of PROOF_VERIFICATION_ERROR.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#:~:text=If%20expectedProofPurpose%20was%20given%2C%20and%20it%20does%20not%20match%20proof.proofPurpose%2C%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_VERIFICATION_ERROR.';\n // NOTE: expectedProofPurpose should be specified by verifiers internally\n // it is very unlikely to be invalidProofPurpose\n await verificationFail({\n credential: credentials.clone('invalidProofPurpose'),\n verifier,\n reason: 'Verifier should reject VC with invalid proof purpose.'\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -23128,33 +22825,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "Gzkcizg3ZqNOVK153M4AF", + "parent": "m-95LkeEjgnUOl8RA2_qH", "ctx": null, - "_testId": "urn:uuid:76d5f968-dac8-4e21-ac95-8fb0cb2fcc14", + "_testId": "urn:uuid:e288d3ce-f7f1-4341-9806-fc3f64afa9f0", "cell": { "columnId": "Danube Tech", - "rowId": "The value of the cryptosuite property MUST be a string that identifies the cryptographic suite. If the processing environment supports subtypes of string, the type of the cryptosuite value MUST be the https://w3id.org/security#cryptosuiteString subtype of string." + "rowId": "If expectedProofPurpose was given, and it does not match proof.proofPurpose, an error MUST be raised and SHOULD convey an error type of PROOF_VERIFICATION_ERROR." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#introduction:~:text=The%20value%20of%20the%20cryptosuite%20property%20MUST%20be%20a%20string%20that%20identifies%20the%20cryptographic%20suite.%20If%20the%20processing%20environment%20supports%20subtypes%20of%20string%2C%20the%20type%20of%20the%20cryptosuite%20value%20MUST%20be%20the%20https%3A//w3id.org/security%23cryptosuiteString%20subtype%20of%20string.", + "link": "https://w3c.github.io/vc-data-integrity/#:~:text=If%20expectedProofPurpose%20was%20given%2C%20and%20it%20does%20not%20match%20proof.proofPurpose%2C%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_VERIFICATION_ERROR.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 20835, + "_idleStart": 23575, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 659, + "duration": 221, "state": "passed", "speed": "slow" }, { "type": "test", - "title": "The value of the cryptosuite property MUST be a string that identifies the cryptographic suite. If the processing environment supports subtypes of string, the type of the cryptosuite value MUST be the https://w3id.org/security#cryptosuiteString subtype of string.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=The%20value%20of%20the%20cryptosuite%20property%20MUST%20be%20a%20string%20that%20identifies%20the%20cryptographic%20suite.%20If%20the%20processing%20environment%20supports%20subtypes%20of%20string%2C%20the%20type%20of%20the%20cryptosuite%20value%20MUST%20be%20the%20https%3A//w3id.org/security%23cryptosuiteString%20subtype%20of%20string.';\n const credential = credentials.clone('invalidCryptosuite');\n await verificationFail({credential, verifier});\n }", + "title": "If expectedProofPurpose was given, and it does not match proof.proofPurpose, an error MUST be raised and SHOULD convey an error type of PROOF_VERIFICATION_ERROR.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#:~:text=If%20expectedProofPurpose%20was%20given%2C%20and%20it%20does%20not%20match%20proof.proofPurpose%2C%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_VERIFICATION_ERROR.';\n // NOTE: expectedProofPurpose should be specified by verifiers internally\n // it is very unlikely to be invalidProofPurpose\n await verificationFail({\n credential: credentials.clone('invalidProofPurpose'),\n verifier,\n reason: 'Verifier should reject VC with invalid proof purpose.'\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -23164,33 +22861,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "afHD67eaDEinS_JWzRU75", + "parent": "vjCbcL73Y3Hj-3-3Vt2xr", "ctx": null, - "_testId": "urn:uuid:0c15d388-ce29-4a49-afb3-bd491b4de810", + "_testId": "urn:uuid:d9d40cbe-bf54-4e78-8d42-46b414ecd304", "cell": { "columnId": "Digital Bazaar", - "rowId": "The value of the cryptosuite property MUST be a string that identifies the cryptographic suite. If the processing environment supports subtypes of string, the type of the cryptosuite value MUST be the https://w3id.org/security#cryptosuiteString subtype of string." + "rowId": "If expectedProofPurpose was given, and it does not match proof.proofPurpose, an error MUST be raised and SHOULD convey an error type of PROOF_VERIFICATION_ERROR." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#introduction:~:text=The%20value%20of%20the%20cryptosuite%20property%20MUST%20be%20a%20string%20that%20identifies%20the%20cryptographic%20suite.%20If%20the%20processing%20environment%20supports%20subtypes%20of%20string%2C%20the%20type%20of%20the%20cryptosuite%20value%20MUST%20be%20the%20https%3A//w3id.org/security%23cryptosuiteString%20subtype%20of%20string.", + "link": "https://w3c.github.io/vc-data-integrity/#:~:text=If%20expectedProofPurpose%20was%20given%2C%20and%20it%20does%20not%20match%20proof.proofPurpose%2C%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_VERIFICATION_ERROR.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 25678, + "_idleStart": 29455, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 45, + "duration": 42, "state": "passed", "speed": "medium" }, { "type": "test", - "title": "The value of the cryptosuite property MUST be a string that identifies the cryptographic suite. If the processing environment supports subtypes of string, the type of the cryptosuite value MUST be the https://w3id.org/security#cryptosuiteString subtype of string.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=The%20value%20of%20the%20cryptosuite%20property%20MUST%20be%20a%20string%20that%20identifies%20the%20cryptographic%20suite.%20If%20the%20processing%20environment%20supports%20subtypes%20of%20string%2C%20the%20type%20of%20the%20cryptosuite%20value%20MUST%20be%20the%20https%3A//w3id.org/security%23cryptosuiteString%20subtype%20of%20string.';\n const credential = credentials.clone('invalidCryptosuite');\n await verificationFail({credential, verifier});\n }", + "title": "If expectedProofPurpose was given, and it does not match proof.proofPurpose, an error MUST be raised and SHOULD convey an error type of PROOF_VERIFICATION_ERROR.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#:~:text=If%20expectedProofPurpose%20was%20given%2C%20and%20it%20does%20not%20match%20proof.proofPurpose%2C%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_VERIFICATION_ERROR.';\n // NOTE: expectedProofPurpose should be specified by verifiers internally\n // it is very unlikely to be invalidProofPurpose\n await verificationFail({\n credential: credentials.clone('invalidProofPurpose'),\n verifier,\n reason: 'Verifier should reject VC with invalid proof purpose.'\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -23200,33 +22897,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "WiCTAagC6srf5khQKfvNc", + "parent": "kI_ZSoLzqZSvNBsn3jzIQ", "ctx": null, - "_testId": "urn:uuid:b8911032-6d3f-48dc-906c-463290be8765", + "_testId": "urn:uuid:fe69de0b-9f4e-41e6-b3df-d03ebe6f0b2d", "cell": { "columnId": "EWF", - "rowId": "The value of the cryptosuite property MUST be a string that identifies the cryptographic suite. If the processing environment supports subtypes of string, the type of the cryptosuite value MUST be the https://w3id.org/security#cryptosuiteString subtype of string." + "rowId": "If expectedProofPurpose was given, and it does not match proof.proofPurpose, an error MUST be raised and SHOULD convey an error type of PROOF_VERIFICATION_ERROR." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#introduction:~:text=The%20value%20of%20the%20cryptosuite%20property%20MUST%20be%20a%20string%20that%20identifies%20the%20cryptographic%20suite.%20If%20the%20processing%20environment%20supports%20subtypes%20of%20string%2C%20the%20type%20of%20the%20cryptosuite%20value%20MUST%20be%20the%20https%3A//w3id.org/security%23cryptosuiteString%20subtype%20of%20string.", + "link": "https://w3c.github.io/vc-data-integrity/#:~:text=If%20expectedProofPurpose%20was%20given%2C%20and%20it%20does%20not%20match%20proof.proofPurpose%2C%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_VERIFICATION_ERROR.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 27501, + "_idleStart": 31141, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 88, + "duration": 92, "state": "passed", "speed": "slow" }, { "type": "test", - "title": "The value of the cryptosuite property MUST be a string that identifies the cryptographic suite. If the processing environment supports subtypes of string, the type of the cryptosuite value MUST be the https://w3id.org/security#cryptosuiteString subtype of string.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=The%20value%20of%20the%20cryptosuite%20property%20MUST%20be%20a%20string%20that%20identifies%20the%20cryptographic%20suite.%20If%20the%20processing%20environment%20supports%20subtypes%20of%20string%2C%20the%20type%20of%20the%20cryptosuite%20value%20MUST%20be%20the%20https%3A//w3id.org/security%23cryptosuiteString%20subtype%20of%20string.';\n const credential = credentials.clone('invalidCryptosuite');\n await verificationFail({credential, verifier});\n }", + "title": "If expectedProofPurpose was given, and it does not match proof.proofPurpose, an error MUST be raised and SHOULD convey an error type of PROOF_VERIFICATION_ERROR.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#:~:text=If%20expectedProofPurpose%20was%20given%2C%20and%20it%20does%20not%20match%20proof.proofPurpose%2C%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_VERIFICATION_ERROR.';\n // NOTE: expectedProofPurpose should be specified by verifiers internally\n // it is very unlikely to be invalidProofPurpose\n await verificationFail({\n credential: credentials.clone('invalidProofPurpose'),\n verifier,\n reason: 'Verifier should reject VC with invalid proof purpose.'\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -23236,33 +22933,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "fzukTmGunqgrw1pwPErT7", + "parent": "4tSBZN6UnobQjWlMYrZJM", "ctx": null, - "_testId": "urn:uuid:df9dd942-b80e-4f1a-b3b9-1d4cad93065c", + "_testId": "urn:uuid:1a40b692-4134-47c7-b9b4-e9694bc29d09", "cell": { "columnId": "LearnCard", - "rowId": "The value of the cryptosuite property MUST be a string that identifies the cryptographic suite. If the processing environment supports subtypes of string, the type of the cryptosuite value MUST be the https://w3id.org/security#cryptosuiteString subtype of string." + "rowId": "If expectedProofPurpose was given, and it does not match proof.proofPurpose, an error MUST be raised and SHOULD convey an error type of PROOF_VERIFICATION_ERROR." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#introduction:~:text=The%20value%20of%20the%20cryptosuite%20property%20MUST%20be%20a%20string%20that%20identifies%20the%20cryptographic%20suite.%20If%20the%20processing%20environment%20supports%20subtypes%20of%20string%2C%20the%20type%20of%20the%20cryptosuite%20value%20MUST%20be%20the%20https%3A//w3id.org/security%23cryptosuiteString%20subtype%20of%20string.", + "link": "https://w3c.github.io/vc-data-integrity/#:~:text=If%20expectedProofPurpose%20was%20given%2C%20and%20it%20does%20not%20match%20proof.proofPurpose%2C%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_VERIFICATION_ERROR.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 37548, + "_idleStart": 41490, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 68, + "duration": 119, "state": "passed", - "speed": "medium" + "speed": "slow" }, { "type": "test", - "title": "The value of the cryptosuite property MUST be a string that identifies the cryptographic suite. If the processing environment supports subtypes of string, the type of the cryptosuite value MUST be the https://w3id.org/security#cryptosuiteString subtype of string.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=The%20value%20of%20the%20cryptosuite%20property%20MUST%20be%20a%20string%20that%20identifies%20the%20cryptographic%20suite.%20If%20the%20processing%20environment%20supports%20subtypes%20of%20string%2C%20the%20type%20of%20the%20cryptosuite%20value%20MUST%20be%20the%20https%3A//w3id.org/security%23cryptosuiteString%20subtype%20of%20string.';\n const credential = credentials.clone('invalidCryptosuite');\n await verificationFail({credential, verifier});\n }", + "title": "If expectedProofPurpose was given, and it does not match proof.proofPurpose, an error MUST be raised and SHOULD convey an error type of PROOF_VERIFICATION_ERROR.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#:~:text=If%20expectedProofPurpose%20was%20given%2C%20and%20it%20does%20not%20match%20proof.proofPurpose%2C%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_VERIFICATION_ERROR.';\n // NOTE: expectedProofPurpose should be specified by verifiers internally\n // it is very unlikely to be invalidProofPurpose\n await verificationFail({\n credential: credentials.clone('invalidProofPurpose'),\n verifier,\n reason: 'Verifier should reject VC with invalid proof purpose.'\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -23272,21 +22969,21 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "f0-mulLPVXI8cAjC5yH-C", + "parent": "eS-Sz740TQReObqQ_sP03", "ctx": null, - "_testId": "urn:uuid:b2646bb2-ace7-4d74-a1e9-5ec1d9676180", + "_testId": "urn:uuid:4c3fc7aa-6aa5-4301-945b-03151a4d1456", "cell": { "columnId": "OpSecId", - "rowId": "The value of the cryptosuite property MUST be a string that identifies the cryptographic suite. If the processing environment supports subtypes of string, the type of the cryptosuite value MUST be the https://w3id.org/security#cryptosuiteString subtype of string." + "rowId": "If expectedProofPurpose was given, and it does not match proof.proofPurpose, an error MUST be raised and SHOULD convey an error type of PROOF_VERIFICATION_ERROR." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#introduction:~:text=The%20value%20of%20the%20cryptosuite%20property%20MUST%20be%20a%20string%20that%20identifies%20the%20cryptographic%20suite.%20If%20the%20processing%20environment%20supports%20subtypes%20of%20string%2C%20the%20type%20of%20the%20cryptosuite%20value%20MUST%20be%20the%20https%3A//w3id.org/security%23cryptosuiteString%20subtype%20of%20string.", + "link": "https://w3c.github.io/vc-data-integrity/#:~:text=If%20expectedProofPurpose%20was%20given%2C%20and%20it%20does%20not%20match%20proof.proofPurpose%2C%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_VERIFICATION_ERROR.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38476, + "_idleStart": 42680, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -23297,8 +22994,8 @@ }, { "type": "test", - "title": "The value of the cryptosuite property MUST be a string that identifies the cryptographic suite. If the processing environment supports subtypes of string, the type of the cryptosuite value MUST be the https://w3id.org/security#cryptosuiteString subtype of string.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=The%20value%20of%20the%20cryptosuite%20property%20MUST%20be%20a%20string%20that%20identifies%20the%20cryptographic%20suite.%20If%20the%20processing%20environment%20supports%20subtypes%20of%20string%2C%20the%20type%20of%20the%20cryptosuite%20value%20MUST%20be%20the%20https%3A//w3id.org/security%23cryptosuiteString%20subtype%20of%20string.';\n const credential = credentials.clone('invalidCryptosuite');\n await verificationFail({credential, verifier});\n }", + "title": "If expectedProofPurpose was given, and it does not match proof.proofPurpose, an error MUST be raised and SHOULD convey an error type of PROOF_VERIFICATION_ERROR.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#:~:text=If%20expectedProofPurpose%20was%20given%2C%20and%20it%20does%20not%20match%20proof.proofPurpose%2C%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_VERIFICATION_ERROR.';\n // NOTE: expectedProofPurpose should be specified by verifiers internally\n // it is very unlikely to be invalidProofPurpose\n await verificationFail({\n credential: credentials.clone('invalidProofPurpose'),\n verifier,\n reason: 'Verifier should reject VC with invalid proof purpose.'\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -23308,33 +23005,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "NRNAY3b3Vtm8PfC-PFvjh", + "parent": "WvyzRIP6TnxLKp9PEVOWp", "ctx": null, - "_testId": "urn:uuid:f5b415d2-cdf5-4924-925e-d78e09068766", + "_testId": "urn:uuid:869b6d7c-3f7e-4dc0-a798-8d26c6d9987a", "cell": { "columnId": "SpruceID", - "rowId": "The value of the cryptosuite property MUST be a string that identifies the cryptographic suite. If the processing environment supports subtypes of string, the type of the cryptosuite value MUST be the https://w3id.org/security#cryptosuiteString subtype of string." + "rowId": "If expectedProofPurpose was given, and it does not match proof.proofPurpose, an error MUST be raised and SHOULD convey an error type of PROOF_VERIFICATION_ERROR." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#introduction:~:text=The%20value%20of%20the%20cryptosuite%20property%20MUST%20be%20a%20string%20that%20identifies%20the%20cryptographic%20suite.%20If%20the%20processing%20environment%20supports%20subtypes%20of%20string%2C%20the%20type%20of%20the%20cryptosuite%20value%20MUST%20be%20the%20https%3A//w3id.org/security%23cryptosuiteString%20subtype%20of%20string.", + "link": "https://w3c.github.io/vc-data-integrity/#:~:text=If%20expectedProofPurpose%20was%20given%2C%20and%20it%20does%20not%20match%20proof.proofPurpose%2C%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_VERIFICATION_ERROR.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38885, + "_idleStart": 43273, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 21, + "duration": 16, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "The value of the cryptosuite property MUST be a string that identifies the cryptographic suite. If the processing environment supports subtypes of string, the type of the cryptosuite value MUST be the https://w3id.org/security#cryptosuiteString subtype of string.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=The%20value%20of%20the%20cryptosuite%20property%20MUST%20be%20a%20string%20that%20identifies%20the%20cryptographic%20suite.%20If%20the%20processing%20environment%20supports%20subtypes%20of%20string%2C%20the%20type%20of%20the%20cryptosuite%20value%20MUST%20be%20the%20https%3A//w3id.org/security%23cryptosuiteString%20subtype%20of%20string.';\n const credential = credentials.clone('invalidCryptosuite');\n await verificationFail({credential, verifier});\n }", + "title": "If expectedProofPurpose was given, and it does not match proof.proofPurpose, an error MUST be raised and SHOULD convey an error type of PROOF_VERIFICATION_ERROR.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#:~:text=If%20expectedProofPurpose%20was%20given%2C%20and%20it%20does%20not%20match%20proof.proofPurpose%2C%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_VERIFICATION_ERROR.';\n // NOTE: expectedProofPurpose should be specified by verifiers internally\n // it is very unlikely to be invalidProofPurpose\n await verificationFail({\n credential: credentials.clone('invalidProofPurpose'),\n verifier,\n reason: 'Verifier should reject VC with invalid proof purpose.'\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -23344,39 +23041,39 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "rAhKx-OZJpBnB_wNqlSW7", + "parent": "oxQe-kP64Nqi6XD181EqS", "ctx": null, - "_testId": "urn:uuid:eb62d0cc-678f-4959-8004-66dc30b502dd", + "_testId": "urn:uuid:06c08f22-660e-4684-b83d-21a4ad5adaa3", "cell": { "columnId": "Trinsic", - "rowId": "The value of the cryptosuite property MUST be a string that identifies the cryptographic suite. If the processing environment supports subtypes of string, the type of the cryptosuite value MUST be the https://w3id.org/security#cryptosuiteString subtype of string." + "rowId": "If expectedProofPurpose was given, and it does not match proof.proofPurpose, an error MUST be raised and SHOULD convey an error type of PROOF_VERIFICATION_ERROR." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#introduction:~:text=The%20value%20of%20the%20cryptosuite%20property%20MUST%20be%20a%20string%20that%20identifies%20the%20cryptographic%20suite.%20If%20the%20processing%20environment%20supports%20subtypes%20of%20string%2C%20the%20type%20of%20the%20cryptosuite%20value%20MUST%20be%20the%20https%3A//w3id.org/security%23cryptosuiteString%20subtype%20of%20string.", + "link": "https://w3c.github.io/vc-data-integrity/#:~:text=If%20expectedProofPurpose%20was%20given%2C%20and%20it%20does%20not%20match%20proof.proofPurpose%2C%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_VERIFICATION_ERROR.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 41017, + "_idleStart": 44068, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 16, + "duration": 19, "state": "passed", "speed": "fast" } ] }, { - "id": "If options has a non-null domain item, it MUST be equal to proof.domain or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR.", - "link": "https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=If%20options%20has%20a%20non%2Dnull%20domain%20item%2C%20it%20MUST%20be%20equal%20to%20proof.domain%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.", + "id": "The proofValue property MUST be used, as specified in 2.1 Proofs.", + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20proofValue%20property%20MUST%20be%20used%2C%20as%20specified%20in%202.1%20Proofs.", "cells": [ { "type": "test", - "title": "If options has a non-null domain item, it MUST be equal to proof.domain or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=If%20options%20has%20a%20non%2Dnull%20domain%20item%2C%20it%20MUST%20be%20equal%20to%20proof.domain%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.';\n const credential = credentials.clone('invalidDomain');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example'\n }\n });\n }", + "title": "The proofValue property MUST be used, as specified in 2.1 Proofs.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20proofValue%20property%20MUST%20be%20used%2C%20as%20specified%20in%202.1%20Proofs.';\n await proofValueTests;\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -23386,33 +23083,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "sB84IWOcTXVtgkn0L_FP3", + "parent": "4lbuxdf6TSMBdUCatK9o7", "ctx": null, - "_testId": "urn:uuid:000c46dd-02e3-4fc9-b6a7-215a8af4adcd", + "_testId": "urn:uuid:b09a6c2d-8830-4622-b74f-a8a923b32b29", "cell": { "columnId": "apicatalog.com", - "rowId": "If options has a non-null domain item, it MUST be equal to proof.domain or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR." + "rowId": "The proofValue property MUST be used, as specified in 2.1 Proofs." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=If%20options%20has%20a%20non%2Dnull%20domain%20item%2C%20it%20MUST%20be%20equal%20to%20proof.domain%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.", + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20proofValue%20property%20MUST%20be%20used%2C%20as%20specified%20in%202.1%20Proofs.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 14629, + "_idleStart": 18735, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 57, + "duration": 0, "state": "passed", - "speed": "medium" + "speed": "fast" }, { "type": "test", - "title": "If options has a non-null domain item, it MUST be equal to proof.domain or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=If%20options%20has%20a%20non%2Dnull%20domain%20item%2C%20it%20MUST%20be%20equal%20to%20proof.domain%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.';\n const credential = credentials.clone('invalidDomain');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example'\n }\n });\n }", + "title": "The proofValue property MUST be used, as specified in 2.1 Proofs.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20proofValue%20property%20MUST%20be%20used%2C%20as%20specified%20in%202.1%20Proofs.';\n await proofValueTests;\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -23422,33 +23119,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "Gzkcizg3ZqNOVK153M4AF", + "parent": "m-95LkeEjgnUOl8RA2_qH", "ctx": null, - "_testId": "urn:uuid:ff2e238e-5f9c-43ef-bad5-c8c6746977a2", + "_testId": "urn:uuid:b626214e-708a-4253-abe0-1465aa49c001", "cell": { "columnId": "Danube Tech", - "rowId": "If options has a non-null domain item, it MUST be equal to proof.domain or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR." + "rowId": "The proofValue property MUST be used, as specified in 2.1 Proofs." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=If%20options%20has%20a%20non%2Dnull%20domain%20item%2C%20it%20MUST%20be%20equal%20to%20proof.domain%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.", + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20proofValue%20property%20MUST%20be%20used%2C%20as%20specified%20in%202.1%20Proofs.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 21494, + "_idleStart": 23795, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 659, + "duration": 0, "state": "passed", - "speed": "slow" + "speed": "fast" }, { "type": "test", - "title": "If options has a non-null domain item, it MUST be equal to proof.domain or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=If%20options%20has%20a%20non%2Dnull%20domain%20item%2C%20it%20MUST%20be%20equal%20to%20proof.domain%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.';\n const credential = credentials.clone('invalidDomain');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example'\n }\n });\n }", + "title": "The proofValue property MUST be used, as specified in 2.1 Proofs.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20proofValue%20property%20MUST%20be%20used%2C%20as%20specified%20in%202.1%20Proofs.';\n await proofValueTests;\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -23458,33 +23155,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "afHD67eaDEinS_JWzRU75", + "parent": "vjCbcL73Y3Hj-3-3Vt2xr", "ctx": null, - "_testId": "urn:uuid:964c0323-eb03-436f-8fd0-429cf7f3934e", + "_testId": "urn:uuid:ae89f609-d45b-4715-8a5d-fb63f2b00f6e", "cell": { "columnId": "Digital Bazaar", - "rowId": "If options has a non-null domain item, it MUST be equal to proof.domain or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR." + "rowId": "The proofValue property MUST be used, as specified in 2.1 Proofs." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=If%20options%20has%20a%20non%2Dnull%20domain%20item%2C%20it%20MUST%20be%20equal%20to%20proof.domain%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.", + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20proofValue%20property%20MUST%20be%20used%2C%20as%20specified%20in%202.1%20Proofs.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 25723, + "_idleStart": 29497, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 40, + "duration": 0, "state": "passed", - "speed": "medium" + "speed": "fast" }, { "type": "test", - "title": "If options has a non-null domain item, it MUST be equal to proof.domain or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=If%20options%20has%20a%20non%2Dnull%20domain%20item%2C%20it%20MUST%20be%20equal%20to%20proof.domain%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.';\n const credential = credentials.clone('invalidDomain');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example'\n }\n });\n }", + "title": "The proofValue property MUST be used, as specified in 2.1 Proofs.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20proofValue%20property%20MUST%20be%20used%2C%20as%20specified%20in%202.1%20Proofs.';\n await proofValueTests;\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -23494,33 +23191,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "WiCTAagC6srf5khQKfvNc", + "parent": "kI_ZSoLzqZSvNBsn3jzIQ", "ctx": null, - "_testId": "urn:uuid:1a803004-51a6-4e47-aba1-e56cf47ec230", + "_testId": "urn:uuid:d32d095d-9b6e-4bf6-a713-a2354a38c0c2", "cell": { "columnId": "EWF", - "rowId": "If options has a non-null domain item, it MUST be equal to proof.domain or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR." + "rowId": "The proofValue property MUST be used, as specified in 2.1 Proofs." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=If%20options%20has%20a%20non%2Dnull%20domain%20item%2C%20it%20MUST%20be%20equal%20to%20proof.domain%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.", + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20proofValue%20property%20MUST%20be%20used%2C%20as%20specified%20in%202.1%20Proofs.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 27589, + "_idleStart": 31234, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 86, + "duration": 0, "state": "passed", - "speed": "slow" + "speed": "fast" }, { "type": "test", - "title": "If options has a non-null domain item, it MUST be equal to proof.domain or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=If%20options%20has%20a%20non%2Dnull%20domain%20item%2C%20it%20MUST%20be%20equal%20to%20proof.domain%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.';\n const credential = credentials.clone('invalidDomain');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example'\n }\n });\n }", + "title": "The proofValue property MUST be used, as specified in 2.1 Proofs.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20proofValue%20property%20MUST%20be%20used%2C%20as%20specified%20in%202.1%20Proofs.';\n await proofValueTests;\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -23530,33 +23227,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "fzukTmGunqgrw1pwPErT7", + "parent": "4tSBZN6UnobQjWlMYrZJM", "ctx": null, - "_testId": "urn:uuid:f45dd2af-8b3e-41ee-b36c-1643a605c1a6", + "_testId": "urn:uuid:019e92ad-ec24-4ca2-b307-b51e7b00c067", "cell": { "columnId": "LearnCard", - "rowId": "If options has a non-null domain item, it MUST be equal to proof.domain or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR." + "rowId": "The proofValue property MUST be used, as specified in 2.1 Proofs." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=If%20options%20has%20a%20non%2Dnull%20domain%20item%2C%20it%20MUST%20be%20equal%20to%20proof.domain%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.", + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20proofValue%20property%20MUST%20be%20used%2C%20as%20specified%20in%202.1%20Proofs.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 37615, + "_idleStart": 41609, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 61, + "duration": 0, "state": "passed", - "speed": "medium" + "speed": "fast" }, { "type": "test", - "title": "If options has a non-null domain item, it MUST be equal to proof.domain or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=If%20options%20has%20a%20non%2Dnull%20domain%20item%2C%20it%20MUST%20be%20equal%20to%20proof.domain%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.';\n const credential = credentials.clone('invalidDomain');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example'\n }\n });\n }", + "title": "The proofValue property MUST be used, as specified in 2.1 Proofs.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20proofValue%20property%20MUST%20be%20used%2C%20as%20specified%20in%202.1%20Proofs.';\n await proofValueTests;\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -23566,33 +23263,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "f0-mulLPVXI8cAjC5yH-C", + "parent": "eS-Sz740TQReObqQ_sP03", "ctx": null, - "_testId": "urn:uuid:48026d37-bae7-4a98-9fcf-e7ef9b3f817d", + "_testId": "urn:uuid:5a649be7-9596-4ced-97e4-7b906cc15a9b", "cell": { "columnId": "OpSecId", - "rowId": "If options has a non-null domain item, it MUST be equal to proof.domain or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR." + "rowId": "The proofValue property MUST be used, as specified in 2.1 Proofs." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=If%20options%20has%20a%20non%2Dnull%20domain%20item%2C%20it%20MUST%20be%20equal%20to%20proof.domain%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.", + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20proofValue%20property%20MUST%20be%20used%2C%20as%20specified%20in%202.1%20Proofs.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38501, + "_idleStart": 42704, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 28, + "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "If options has a non-null domain item, it MUST be equal to proof.domain or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=If%20options%20has%20a%20non%2Dnull%20domain%20item%2C%20it%20MUST%20be%20equal%20to%20proof.domain%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.';\n const credential = credentials.clone('invalidDomain');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example'\n }\n });\n }", + "title": "The proofValue property MUST be used, as specified in 2.1 Proofs.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20proofValue%20property%20MUST%20be%20used%2C%20as%20specified%20in%202.1%20Proofs.';\n await proofValueTests;\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -23602,33 +23299,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "NRNAY3b3Vtm8PfC-PFvjh", + "parent": "WvyzRIP6TnxLKp9PEVOWp", "ctx": null, - "_testId": "urn:uuid:95bd1543-20f3-4bb2-ac60-602997595126", + "_testId": "urn:uuid:02bd08f1-e74b-4750-9b89-2454e16e0ba5", "cell": { "columnId": "SpruceID", - "rowId": "If options has a non-null domain item, it MUST be equal to proof.domain or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR." + "rowId": "The proofValue property MUST be used, as specified in 2.1 Proofs." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=If%20options%20has%20a%20non%2Dnull%20domain%20item%2C%20it%20MUST%20be%20equal%20to%20proof.domain%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.", + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20proofValue%20property%20MUST%20be%20used%2C%20as%20specified%20in%202.1%20Proofs.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38905, + "_idleStart": 43290, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 17, + "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "If options has a non-null domain item, it MUST be equal to proof.domain or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=If%20options%20has%20a%20non%2Dnull%20domain%20item%2C%20it%20MUST%20be%20equal%20to%20proof.domain%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.';\n const credential = credentials.clone('invalidDomain');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example'\n }\n });\n }", + "title": "The proofValue property MUST be used, as specified in 2.1 Proofs.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20proofValue%20property%20MUST%20be%20used%2C%20as%20specified%20in%202.1%20Proofs.';\n await proofValueTests;\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -23638,39 +23335,39 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "rAhKx-OZJpBnB_wNqlSW7", + "parent": "oxQe-kP64Nqi6XD181EqS", "ctx": null, - "_testId": "urn:uuid:9ce88759-77e8-402a-add8-87c1956990a4", + "_testId": "urn:uuid:9266cd64-b28f-4c11-b7e3-0468d5a27c1d", "cell": { "columnId": "Trinsic", - "rowId": "If options has a non-null domain item, it MUST be equal to proof.domain or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR." + "rowId": "The proofValue property MUST be used, as specified in 2.1 Proofs." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=If%20options%20has%20a%20non%2Dnull%20domain%20item%2C%20it%20MUST%20be%20equal%20to%20proof.domain%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.", + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=The%20proofValue%20property%20MUST%20be%20used%2C%20as%20specified%20in%202.1%20Proofs.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 41033, + "_idleStart": 44087, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 20, + "duration": 0, "state": "passed", "speed": "fast" } ] }, { - "id": "If options has a non-null challenge item, it MUST be equal to proof.challenge or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR.", - "link": "https://w3c.github.io/vc-data-integrity/#add-proof:~:text=If%20options%20has%20a%20non%2Dnull%20challenge%20item%2C%20it%20MUST%20be%20equal%20to%20proof.challenge%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.", + "id": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification.", + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof", "cells": [ { "type": "test", - "title": "If options has a non-null challenge item, it MUST be equal to proof.challenge or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#add-proof:~:text=If%20options%20has%20a%20non%2Dnull%20challenge%20item%2C%20it%20MUST%20be%20equal%20to%20proof.challenge%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.';\n const credential = credentials.clone('invalidChallenge');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example',\n challenge: '1235abcd6789'\n }\n });\n }", + "title": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof';\n await proofValueTests;\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -23680,33 +23377,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "sB84IWOcTXVtgkn0L_FP3", + "parent": "4lbuxdf6TSMBdUCatK9o7", "ctx": null, - "_testId": "urn:uuid:e56c2c0e-31e2-4fc6-b705-0cce67ca1835", + "_testId": "urn:uuid:0e9af8dd-c8aa-4836-84e1-6c0227b68892", "cell": { "columnId": "apicatalog.com", - "rowId": "If options has a non-null challenge item, it MUST be equal to proof.challenge or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR." + "rowId": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#add-proof:~:text=If%20options%20has%20a%20non%2Dnull%20challenge%20item%2C%20it%20MUST%20be%20equal%20to%20proof.challenge%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.", + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 14686, + "_idleStart": 18736, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 50, + "duration": 0, "state": "passed", - "speed": "medium" + "speed": "fast" }, { "type": "test", - "title": "If options has a non-null challenge item, it MUST be equal to proof.challenge or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#add-proof:~:text=If%20options%20has%20a%20non%2Dnull%20challenge%20item%2C%20it%20MUST%20be%20equal%20to%20proof.challenge%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.';\n const credential = credentials.clone('invalidChallenge');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example',\n challenge: '1235abcd6789'\n }\n });\n }", + "title": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof';\n await proofValueTests;\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -23716,33 +23413,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "Gzkcizg3ZqNOVK153M4AF", + "parent": "m-95LkeEjgnUOl8RA2_qH", "ctx": null, - "_testId": "urn:uuid:328538d1-55c4-440c-be86-a995a7393764", + "_testId": "urn:uuid:c70f5484-d04c-4cb7-b593-6c6c128ac2a2", "cell": { "columnId": "Danube Tech", - "rowId": "If options has a non-null challenge item, it MUST be equal to proof.challenge or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR." + "rowId": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#add-proof:~:text=If%20options%20has%20a%20non%2Dnull%20challenge%20item%2C%20it%20MUST%20be%20equal%20to%20proof.challenge%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.", + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 22153, + "_idleStart": 23796, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 659, + "duration": 0, "state": "passed", - "speed": "slow" + "speed": "fast" }, { "type": "test", - "title": "If options has a non-null challenge item, it MUST be equal to proof.challenge or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#add-proof:~:text=If%20options%20has%20a%20non%2Dnull%20challenge%20item%2C%20it%20MUST%20be%20equal%20to%20proof.challenge%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.';\n const credential = credentials.clone('invalidChallenge');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example',\n challenge: '1235abcd6789'\n }\n });\n }", + "title": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof';\n await proofValueTests;\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -23752,33 +23449,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "afHD67eaDEinS_JWzRU75", + "parent": "vjCbcL73Y3Hj-3-3Vt2xr", "ctx": null, - "_testId": "urn:uuid:ab078991-b544-48d4-91ec-4b6abd3fa151", + "_testId": "urn:uuid:af1f9ffd-9ebd-40d8-a7af-7f81fc732283", "cell": { "columnId": "Digital Bazaar", - "rowId": "If options has a non-null challenge item, it MUST be equal to proof.challenge or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR." + "rowId": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#add-proof:~:text=If%20options%20has%20a%20non%2Dnull%20challenge%20item%2C%20it%20MUST%20be%20equal%20to%20proof.challenge%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.", + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 25763, + "_idleStart": 29497, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 50, + "duration": 0, "state": "passed", - "speed": "medium" + "speed": "fast" }, { "type": "test", - "title": "If options has a non-null challenge item, it MUST be equal to proof.challenge or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#add-proof:~:text=If%20options%20has%20a%20non%2Dnull%20challenge%20item%2C%20it%20MUST%20be%20equal%20to%20proof.challenge%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.';\n const credential = credentials.clone('invalidChallenge');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example',\n challenge: '1235abcd6789'\n }\n });\n }", + "title": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof';\n await proofValueTests;\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -23788,33 +23485,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "WiCTAagC6srf5khQKfvNc", + "parent": "kI_ZSoLzqZSvNBsn3jzIQ", "ctx": null, - "_testId": "urn:uuid:96f52d57-7be6-4bf3-8063-e8ec4e8f4f84", + "_testId": "urn:uuid:0fce23b2-eb69-43cb-aa77-82de2a022ae4", "cell": { "columnId": "EWF", - "rowId": "If options has a non-null challenge item, it MUST be equal to proof.challenge or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR." + "rowId": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#add-proof:~:text=If%20options%20has%20a%20non%2Dnull%20challenge%20item%2C%20it%20MUST%20be%20equal%20to%20proof.challenge%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.", + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 27675, + "_idleStart": 31234, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 86, + "duration": 0, "state": "passed", - "speed": "slow" + "speed": "fast" }, { "type": "test", - "title": "If options has a non-null challenge item, it MUST be equal to proof.challenge or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#add-proof:~:text=If%20options%20has%20a%20non%2Dnull%20challenge%20item%2C%20it%20MUST%20be%20equal%20to%20proof.challenge%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.';\n const credential = credentials.clone('invalidChallenge');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example',\n challenge: '1235abcd6789'\n }\n });\n }", + "title": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof';\n await proofValueTests;\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -23824,33 +23521,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "fzukTmGunqgrw1pwPErT7", + "parent": "4tSBZN6UnobQjWlMYrZJM", "ctx": null, - "_testId": "urn:uuid:039a8f5e-6f63-4dca-a5d7-e073e547e95b", + "_testId": "urn:uuid:625a78a2-8e97-419e-8e44-b60e35d6befa", "cell": { "columnId": "LearnCard", - "rowId": "If options has a non-null challenge item, it MUST be equal to proof.challenge or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR." + "rowId": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#add-proof:~:text=If%20options%20has%20a%20non%2Dnull%20challenge%20item%2C%20it%20MUST%20be%20equal%20to%20proof.challenge%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.", + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 37677, + "_idleStart": 41609, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 77, + "duration": 0, "state": "passed", - "speed": "slow" + "speed": "fast" }, { "type": "test", - "title": "If options has a non-null challenge item, it MUST be equal to proof.challenge or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#add-proof:~:text=If%20options%20has%20a%20non%2Dnull%20challenge%20item%2C%20it%20MUST%20be%20equal%20to%20proof.challenge%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.';\n const credential = credentials.clone('invalidChallenge');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example',\n challenge: '1235abcd6789'\n }\n });\n }", + "title": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof';\n await proofValueTests;\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -23860,33 +23557,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "f0-mulLPVXI8cAjC5yH-C", + "parent": "eS-Sz740TQReObqQ_sP03", "ctx": null, - "_testId": "urn:uuid:663b8aaf-5368-4290-8e39-f00f0c7fb8f9", + "_testId": "urn:uuid:52007502-6900-4e07-bf7d-6c570f128b72", "cell": { "columnId": "OpSecId", - "rowId": "If options has a non-null challenge item, it MUST be equal to proof.challenge or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR." + "rowId": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#add-proof:~:text=If%20options%20has%20a%20non%2Dnull%20challenge%20item%2C%20it%20MUST%20be%20equal%20to%20proof.challenge%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.", + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38530, + "_idleStart": 42704, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 25, + "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "If options has a non-null challenge item, it MUST be equal to proof.challenge or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#add-proof:~:text=If%20options%20has%20a%20non%2Dnull%20challenge%20item%2C%20it%20MUST%20be%20equal%20to%20proof.challenge%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.';\n const credential = credentials.clone('invalidChallenge');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example',\n challenge: '1235abcd6789'\n }\n });\n }", + "title": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof';\n await proofValueTests;\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -23896,33 +23593,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "NRNAY3b3Vtm8PfC-PFvjh", + "parent": "WvyzRIP6TnxLKp9PEVOWp", "ctx": null, - "_testId": "urn:uuid:f960eee6-1cea-42ea-be12-6bfe8399abe4", + "_testId": "urn:uuid:224b2170-a9c6-4475-9e2d-726a8ba2f635", "cell": { "columnId": "SpruceID", - "rowId": "If options has a non-null challenge item, it MUST be equal to proof.challenge or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR." + "rowId": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#add-proof:~:text=If%20options%20has%20a%20non%2Dnull%20challenge%20item%2C%20it%20MUST%20be%20equal%20to%20proof.challenge%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.", + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38922, + "_idleStart": 43290, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 34, + "duration": 0, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "If options has a non-null challenge item, it MUST be equal to proof.challenge or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR.", - "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#add-proof:~:text=If%20options%20has%20a%20non%2Dnull%20challenge%20item%2C%20it%20MUST%20be%20equal%20to%20proof.challenge%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.';\n const credential = credentials.clone('invalidChallenge');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example',\n challenge: '1235abcd6789'\n }\n });\n }", + "title": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof';\n await proofValueTests;\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -23932,39 +23629,39 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "rAhKx-OZJpBnB_wNqlSW7", + "parent": "oxQe-kP64Nqi6XD181EqS", "ctx": null, - "_testId": "urn:uuid:5a9bd768-8191-4043-a7b5-546082cd6cd9", + "_testId": "urn:uuid:f5047005-d045-4014-870f-6c3b6b89bd9b", "cell": { "columnId": "Trinsic", - "rowId": "If options has a non-null challenge item, it MUST be equal to proof.challenge or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR." + "rowId": "(\"proof.proofValue\") A string value that contains the base-encoded binary data necessary to verify the digital proof using the verificationMethod specified. The contents of the value MUST be expressed with a header and encoding as described in Section 2.4 Multibase of the Controller Documents 1.0 specification." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#add-proof:~:text=If%20options%20has%20a%20non%2Dnull%20challenge%20item%2C%20it%20MUST%20be%20equal%20to%20proof.challenge%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.", + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 41053, + "_idleStart": 44087, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 16, + "duration": 0, "state": "passed", "speed": "fast" } ] }, { - "id": "(created) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset.", - "link": "https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=be%20a%20string.-,created,-The%20date%20and", + "id": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document.", + "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.", "cells": [ { "type": "test", - "title": "(created) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset.", - "body": "async function() {\n this.test.link = 'https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=be%20a%20string.-,created,-The%20date%20and';\n await verificationFail({\n credential: credentials.clone('noOffsetCreated'),\n verifier\n });\n }", + "title": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.';\n await verificationFail({\n credential: credentials.clone('undefinedTerm'),\n verifier,\n reason: 'Should fail to verify VC when data is dropped by JSON-LD'\n });\n const undefinedTerm = credentials.clone('issuedVc');\n undefinedTerm.credentialSubject.undefinedTerm = 'IfDroppedWillVerify';\n await verificationFail({\n credential: undefinedTerm,\n verifier,\n reason: 'Should fail to verify VC if an undefined term is added ' +\n 'after issuance.'\n });\n const undefinedType = credentials.clone('issuedVc');\n undefinedType.type.push('UndefinedType');\n await verificationFail({\n credential: undefinedType,\n verifier,\n reason: 'Should fail to verify VC if an undefined type is added ' +\n 'after issuance.'\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -23974,33 +23671,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "sB84IWOcTXVtgkn0L_FP3", + "parent": "4lbuxdf6TSMBdUCatK9o7", "ctx": null, - "_testId": "urn:uuid:2b893520-2ca4-41ce-aade-b90498d1e357", + "_testId": "urn:uuid:4d43e6b7-b8ef-4810-a6bc-a8af1760e2dd", "cell": { "columnId": "apicatalog.com", - "rowId": "(created) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." + "rowId": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document." }, "_events": {}, "_eventsCount": 1, - "link": "https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=be%20a%20string.-,created,-The%20date%20and", + "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 14735, + "_idleStart": 18736, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 50, + "duration": 154, "state": "passed", - "speed": "medium" + "speed": "slow" }, { "type": "test", - "title": "(created) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset.", - "body": "async function() {\n this.test.link = 'https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=be%20a%20string.-,created,-The%20date%20and';\n await verificationFail({\n credential: credentials.clone('noOffsetCreated'),\n verifier\n });\n }", + "title": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.';\n await verificationFail({\n credential: credentials.clone('undefinedTerm'),\n verifier,\n reason: 'Should fail to verify VC when data is dropped by JSON-LD'\n });\n const undefinedTerm = credentials.clone('issuedVc');\n undefinedTerm.credentialSubject.undefinedTerm = 'IfDroppedWillVerify';\n await verificationFail({\n credential: undefinedTerm,\n verifier,\n reason: 'Should fail to verify VC if an undefined term is added ' +\n 'after issuance.'\n });\n const undefinedType = credentials.clone('issuedVc');\n undefinedType.type.push('UndefinedType');\n await verificationFail({\n credential: undefinedType,\n verifier,\n reason: 'Should fail to verify VC if an undefined type is added ' +\n 'after issuance.'\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -24010,33 +23707,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "Gzkcizg3ZqNOVK153M4AF", + "parent": "m-95LkeEjgnUOl8RA2_qH", "ctx": null, - "_testId": "urn:uuid:07be11fd-7931-4398-a804-770bdb12a897", + "_testId": "urn:uuid:c55db6ac-9f59-4c86-a003-db5c6daba9ba", "cell": { "columnId": "Danube Tech", - "rowId": "(created) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." + "rowId": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document." }, "_events": {}, "_eventsCount": 1, - "link": "https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=be%20a%20string.-,created,-The%20date%20and", + "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 22813, + "_idleStart": 23796, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 658, + "duration": 665, "state": "passed", "speed": "slow" }, { "type": "test", - "title": "(created) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset.", - "body": "async function() {\n this.test.link = 'https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=be%20a%20string.-,created,-The%20date%20and';\n await verificationFail({\n credential: credentials.clone('noOffsetCreated'),\n verifier\n });\n }", + "title": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.';\n await verificationFail({\n credential: credentials.clone('undefinedTerm'),\n verifier,\n reason: 'Should fail to verify VC when data is dropped by JSON-LD'\n });\n const undefinedTerm = credentials.clone('issuedVc');\n undefinedTerm.credentialSubject.undefinedTerm = 'IfDroppedWillVerify';\n await verificationFail({\n credential: undefinedTerm,\n verifier,\n reason: 'Should fail to verify VC if an undefined term is added ' +\n 'after issuance.'\n });\n const undefinedType = credentials.clone('issuedVc');\n undefinedType.type.push('UndefinedType');\n await verificationFail({\n credential: undefinedType,\n verifier,\n reason: 'Should fail to verify VC if an undefined type is added ' +\n 'after issuance.'\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -24046,33 +23743,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "afHD67eaDEinS_JWzRU75", + "parent": "vjCbcL73Y3Hj-3-3Vt2xr", "ctx": null, - "_testId": "urn:uuid:b3a81327-c1c0-461f-b9cb-aee31a019f59", + "_testId": "urn:uuid:d7e7de2f-c0d4-4d14-9195-f4f5f39072d0", "cell": { "columnId": "Digital Bazaar", - "rowId": "(created) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." + "rowId": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document." }, "_events": {}, "_eventsCount": 1, - "link": "https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=be%20a%20string.-,created,-The%20date%20and", + "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 25814, + "_idleStart": 29497, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 44, + "duration": 142, "state": "passed", - "speed": "medium" + "speed": "slow" }, { "type": "test", - "title": "(created) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset.", - "body": "async function() {\n this.test.link = 'https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=be%20a%20string.-,created,-The%20date%20and';\n await verificationFail({\n credential: credentials.clone('noOffsetCreated'),\n verifier\n });\n }", + "title": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.';\n await verificationFail({\n credential: credentials.clone('undefinedTerm'),\n verifier,\n reason: 'Should fail to verify VC when data is dropped by JSON-LD'\n });\n const undefinedTerm = credentials.clone('issuedVc');\n undefinedTerm.credentialSubject.undefinedTerm = 'IfDroppedWillVerify';\n await verificationFail({\n credential: undefinedTerm,\n verifier,\n reason: 'Should fail to verify VC if an undefined term is added ' +\n 'after issuance.'\n });\n const undefinedType = credentials.clone('issuedVc');\n undefinedType.type.push('UndefinedType');\n await verificationFail({\n credential: undefinedType,\n verifier,\n reason: 'Should fail to verify VC if an undefined type is added ' +\n 'after issuance.'\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -24082,33 +23779,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "WiCTAagC6srf5khQKfvNc", + "parent": "kI_ZSoLzqZSvNBsn3jzIQ", "ctx": null, - "_testId": "urn:uuid:697f87f3-bd7b-42a5-93c9-18074eb27638", + "_testId": "urn:uuid:b987caef-7016-436f-9be3-0f6ef65b44b9", "cell": { "columnId": "EWF", - "rowId": "(created) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." + "rowId": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document." }, "_events": {}, "_eventsCount": 1, - "link": "https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=be%20a%20string.-,created,-The%20date%20and", + "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 27762, + "_idleStart": 31234, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 86, + "duration": 309, "state": "passed", "speed": "slow" }, { "type": "test", - "title": "(created) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset.", - "body": "async function() {\n this.test.link = 'https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=be%20a%20string.-,created,-The%20date%20and';\n await verificationFail({\n credential: credentials.clone('noOffsetCreated'),\n verifier\n });\n }", + "title": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.';\n await verificationFail({\n credential: credentials.clone('undefinedTerm'),\n verifier,\n reason: 'Should fail to verify VC when data is dropped by JSON-LD'\n });\n const undefinedTerm = credentials.clone('issuedVc');\n undefinedTerm.credentialSubject.undefinedTerm = 'IfDroppedWillVerify';\n await verificationFail({\n credential: undefinedTerm,\n verifier,\n reason: 'Should fail to verify VC if an undefined term is added ' +\n 'after issuance.'\n });\n const undefinedType = credentials.clone('issuedVc');\n undefinedType.type.push('UndefinedType');\n await verificationFail({\n credential: undefinedType,\n verifier,\n reason: 'Should fail to verify VC if an undefined type is added ' +\n 'after issuance.'\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -24118,33 +23815,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "fzukTmGunqgrw1pwPErT7", + "parent": "4tSBZN6UnobQjWlMYrZJM", "ctx": null, - "_testId": "urn:uuid:42712b79-dff1-4f55-8c84-6cf535e1068f", + "_testId": "urn:uuid:d9dd7403-8a17-45fa-b7b7-a3217b524aac", "cell": { "columnId": "LearnCard", - "rowId": "(created) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." + "rowId": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document." }, "_events": {}, "_eventsCount": 1, - "link": "https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=be%20a%20string.-,created,-The%20date%20and", + "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 37753, + "_idleStart": 41609, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 83, + "duration": 238, "state": "passed", "speed": "slow" }, { "type": "test", - "title": "(created) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset.", - "body": "async function() {\n this.test.link = 'https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=be%20a%20string.-,created,-The%20date%20and';\n await verificationFail({\n credential: credentials.clone('noOffsetCreated'),\n verifier\n });\n }", + "title": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.';\n await verificationFail({\n credential: credentials.clone('undefinedTerm'),\n verifier,\n reason: 'Should fail to verify VC when data is dropped by JSON-LD'\n });\n const undefinedTerm = credentials.clone('issuedVc');\n undefinedTerm.credentialSubject.undefinedTerm = 'IfDroppedWillVerify';\n await verificationFail({\n credential: undefinedTerm,\n verifier,\n reason: 'Should fail to verify VC if an undefined term is added ' +\n 'after issuance.'\n });\n const undefinedType = credentials.clone('issuedVc');\n undefinedType.type.push('UndefinedType');\n await verificationFail({\n credential: undefinedType,\n verifier,\n reason: 'Should fail to verify VC if an undefined type is added ' +\n 'after issuance.'\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -24154,33 +23851,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "f0-mulLPVXI8cAjC5yH-C", + "parent": "eS-Sz740TQReObqQ_sP03", "ctx": null, - "_testId": "urn:uuid:cf3c47ba-fb82-4fe8-a0d8-7863143c260a", + "_testId": "urn:uuid:44d007ff-5570-489c-ac46-445e6c4f06a9", "cell": { "columnId": "OpSecId", - "rowId": "(created) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." + "rowId": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document." }, "_events": {}, "_eventsCount": 1, - "link": "https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=be%20a%20string.-,created,-The%20date%20and", + "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38554, + "_idleStart": 42704, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 25, + "duration": 75, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "(created) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset.", - "body": "async function() {\n this.test.link = 'https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=be%20a%20string.-,created,-The%20date%20and';\n await verificationFail({\n credential: credentials.clone('noOffsetCreated'),\n verifier\n });\n }", + "title": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.';\n await verificationFail({\n credential: credentials.clone('undefinedTerm'),\n verifier,\n reason: 'Should fail to verify VC when data is dropped by JSON-LD'\n });\n const undefinedTerm = credentials.clone('issuedVc');\n undefinedTerm.credentialSubject.undefinedTerm = 'IfDroppedWillVerify';\n await verificationFail({\n credential: undefinedTerm,\n verifier,\n reason: 'Should fail to verify VC if an undefined term is added ' +\n 'after issuance.'\n });\n const undefinedType = credentials.clone('issuedVc');\n undefinedType.type.push('UndefinedType');\n await verificationFail({\n credential: undefinedType,\n verifier,\n reason: 'Should fail to verify VC if an undefined type is added ' +\n 'after issuance.'\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -24190,33 +23887,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "NRNAY3b3Vtm8PfC-PFvjh", + "parent": "WvyzRIP6TnxLKp9PEVOWp", "ctx": null, - "_testId": "urn:uuid:2f62348b-2f72-46f5-acba-04b7f9cd89ee", + "_testId": "urn:uuid:2e6a44f5-e798-4e28-8a29-1d0211ae52e9", "cell": { "columnId": "SpruceID", - "rowId": "(created) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." + "rowId": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document." }, "_events": {}, "_eventsCount": 1, - "link": "https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=be%20a%20string.-,created,-The%20date%20and", + "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38956, + "_idleStart": 43290, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 28, + "duration": 56, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "(created) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset.", - "body": "async function() {\n this.test.link = 'https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=be%20a%20string.-,created,-The%20date%20and';\n await verificationFail({\n credential: credentials.clone('noOffsetCreated'),\n verifier\n });\n }", + "title": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.';\n await verificationFail({\n credential: credentials.clone('undefinedTerm'),\n verifier,\n reason: 'Should fail to verify VC when data is dropped by JSON-LD'\n });\n const undefinedTerm = credentials.clone('issuedVc');\n undefinedTerm.credentialSubject.undefinedTerm = 'IfDroppedWillVerify';\n await verificationFail({\n credential: undefinedTerm,\n verifier,\n reason: 'Should fail to verify VC if an undefined term is added ' +\n 'after issuance.'\n });\n const undefinedType = credentials.clone('issuedVc');\n undefinedType.type.push('UndefinedType');\n await verificationFail({\n credential: undefinedType,\n verifier,\n reason: 'Should fail to verify VC if an undefined type is added ' +\n 'after issuance.'\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -24226,39 +23923,39 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "rAhKx-OZJpBnB_wNqlSW7", + "parent": "oxQe-kP64Nqi6XD181EqS", "ctx": null, - "_testId": "urn:uuid:0229889b-fc26-4066-9e6e-8fb9adc727f4", + "_testId": "urn:uuid:90ffeb41-cda6-435b-aeaf-a57fe3ed3ba7", "cell": { "columnId": "Trinsic", - "rowId": "(created) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." + "rowId": "Implementations that use JSON-LD processing, such as RDF Dataset Canonicalization [RDF-CANON], MUST throw an error, which SHOULD be DATA_LOSS_DETECTION_ERROR, when data is dropped by a JSON-LD processor, such as when an undefined term is detected in an input document." }, "_events": {}, "_eventsCount": 1, - "link": "https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=be%20a%20string.-,created,-The%20date%20and", + "link": "https://w3c.github.io/vc-data-integrity/#securing-data-losslessly:~:text=Implementations%20that%20use%20JSON%2DLD%20processing%2C%20such%20as%20RDF%20Dataset%20Canonicalization%20%5BRDF%2DCANON%5D%2C%20MUST%20throw%20an%20error%2C%20which%20SHOULD%20be%20DATA_LOSS_DETECTION_ERROR%2C%20when%20data%20is%20dropped%20by%20a%20JSON%2DLD%20processor%2C%20such%20as%20when%20an%20undefined%20term%20is%20detected%20in%20an%20input%20document.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 41070, + "_idleStart": 44087, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 34, + "duration": 132, "state": "passed", - "speed": "fast" + "speed": "slow" } ] }, { - "id": "(expires) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset.", - "link": "https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=interpreted%20as%20UTC.-,expires,-The%20expires%20property", + "id": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC", "cells": [ { "type": "test", - "title": "(expires) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset.", - "body": "async function() {\n this.test.link = 'https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=interpreted%20as%20UTC.-,expires,-The%20expires%20property';\n await verificationFail({\n credential: credentials.clone('noOffsetExpires'),\n verifier\n });\n }", + "title": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC';\n const credential = credentials.clone('invalidCreated');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -24268,33 +23965,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "sB84IWOcTXVtgkn0L_FP3", + "parent": "4lbuxdf6TSMBdUCatK9o7", "ctx": null, - "_testId": "urn:uuid:fcdcfad1-159a-4ee8-b666-74c08fc58ede", + "_testId": "urn:uuid:c45c4b2b-30f1-45e9-af6b-d4c7a9e63dd2", "cell": { "columnId": "apicatalog.com", - "rowId": "(expires) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." + "rowId": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." }, "_events": {}, "_eventsCount": 1, - "link": "https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=interpreted%20as%20UTC.-,expires,-The%20expires%20property", + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 14785, + "_idleStart": 18890, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 51, + "duration": 40, "state": "passed", "speed": "medium" }, { "type": "test", - "title": "(expires) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset.", - "body": "async function() {\n this.test.link = 'https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=interpreted%20as%20UTC.-,expires,-The%20expires%20property';\n await verificationFail({\n credential: credentials.clone('noOffsetExpires'),\n verifier\n });\n }", + "title": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC';\n const credential = credentials.clone('invalidCreated');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -24304,33 +24001,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "Gzkcizg3ZqNOVK153M4AF", + "parent": "m-95LkeEjgnUOl8RA2_qH", "ctx": null, - "_testId": "urn:uuid:cd72383f-bb43-4a12-86e0-b3f29d43d69b", + "_testId": "urn:uuid:14838ffe-e632-4ad9-aa97-365ce962e9de", "cell": { "columnId": "Danube Tech", - "rowId": "(expires) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." + "rowId": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." }, "_events": {}, "_eventsCount": 1, - "link": "https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=interpreted%20as%20UTC.-,expires,-The%20expires%20property", + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 23470, + "_idleStart": 24461, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 676, + "duration": 654, "state": "passed", "speed": "slow" }, { "type": "test", - "title": "(expires) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset.", - "body": "async function() {\n this.test.link = 'https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=interpreted%20as%20UTC.-,expires,-The%20expires%20property';\n await verificationFail({\n credential: credentials.clone('noOffsetExpires'),\n verifier\n });\n }", + "title": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC';\n const credential = credentials.clone('invalidCreated');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -24340,33 +24037,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "afHD67eaDEinS_JWzRU75", + "parent": "vjCbcL73Y3Hj-3-3Vt2xr", "ctx": null, - "_testId": "urn:uuid:77919a5d-f694-4f1e-bf34-851df1f2e750", + "_testId": "urn:uuid:7824b6d5-c7fa-4990-a75d-8e4c52a9caa5", "cell": { "columnId": "Digital Bazaar", - "rowId": "(expires) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." + "rowId": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." }, "_events": {}, "_eventsCount": 1, - "link": "https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=interpreted%20as%20UTC.-,expires,-The%20expires%20property", + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 25858, + "_idleStart": 29640, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 43, + "duration": 44, "state": "passed", "speed": "medium" }, { "type": "test", - "title": "(expires) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset.", - "body": "async function() {\n this.test.link = 'https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=interpreted%20as%20UTC.-,expires,-The%20expires%20property';\n await verificationFail({\n credential: credentials.clone('noOffsetExpires'),\n verifier\n });\n }", + "title": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC';\n const credential = credentials.clone('invalidCreated');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -24376,33 +24073,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "WiCTAagC6srf5khQKfvNc", + "parent": "kI_ZSoLzqZSvNBsn3jzIQ", "ctx": null, - "_testId": "urn:uuid:7053ec89-67ac-4c79-ad2b-1236b16f198d", + "_testId": "urn:uuid:2f5e00d0-d373-43bc-90cf-392c75a89dbc", "cell": { "columnId": "EWF", - "rowId": "(expires) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." + "rowId": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." }, "_events": {}, "_eventsCount": 1, - "link": "https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=interpreted%20as%20UTC.-,expires,-The%20expires%20property", + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 27847, + "_idleStart": 31543, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 86, + "duration": 93, "state": "passed", "speed": "slow" }, { "type": "test", - "title": "(expires) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset.", - "body": "async function() {\n this.test.link = 'https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=interpreted%20as%20UTC.-,expires,-The%20expires%20property';\n await verificationFail({\n credential: credentials.clone('noOffsetExpires'),\n verifier\n });\n }", + "title": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC';\n const credential = credentials.clone('invalidCreated');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -24412,33 +24109,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "fzukTmGunqgrw1pwPErT7", + "parent": "4tSBZN6UnobQjWlMYrZJM", "ctx": null, - "_testId": "urn:uuid:fce18713-4664-41ca-a757-3941303f8e31", + "_testId": "urn:uuid:31eb72b9-d7a9-4b72-86f2-8685d76a26b2", "cell": { "columnId": "LearnCard", - "rowId": "(expires) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." + "rowId": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." }, "_events": {}, "_eventsCount": 1, - "link": "https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=interpreted%20as%20UTC.-,expires,-The%20expires%20property", + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 37836, + "_idleStart": 41850, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 63, + "duration": 109, "state": "passed", - "speed": "medium" + "speed": "slow" }, { "type": "test", - "title": "(expires) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset.", - "body": "async function() {\n this.test.link = 'https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=interpreted%20as%20UTC.-,expires,-The%20expires%20property';\n await verificationFail({\n credential: credentials.clone('noOffsetExpires'),\n verifier\n });\n }", + "title": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC';\n const credential = credentials.clone('invalidCreated');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -24448,33 +24145,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "f0-mulLPVXI8cAjC5yH-C", + "parent": "eS-Sz740TQReObqQ_sP03", "ctx": null, - "_testId": "urn:uuid:d994a238-3f5f-4cf2-a5df-100375e08255", + "_testId": "urn:uuid:0e5abd5b-ac9c-4078-b5e3-b341d8f364ed", "cell": { "columnId": "OpSecId", - "rowId": "(expires) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." + "rowId": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." }, "_events": {}, "_eventsCount": 1, - "link": "https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=interpreted%20as%20UTC.-,expires,-The%20expires%20property", + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38579, + "_idleStart": 42780, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 24, + "duration": 27, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "(expires) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset.", - "body": "async function() {\n this.test.link = 'https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=interpreted%20as%20UTC.-,expires,-The%20expires%20property';\n await verificationFail({\n credential: credentials.clone('noOffsetExpires'),\n verifier\n });\n }", + "title": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC';\n const credential = credentials.clone('invalidCreated');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -24484,33 +24181,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "NRNAY3b3Vtm8PfC-PFvjh", + "parent": "WvyzRIP6TnxLKp9PEVOWp", "ctx": null, - "_testId": "urn:uuid:2f0b40b8-05c7-48a1-b5bd-07621290b1fe", + "_testId": "urn:uuid:65729849-e9e5-468d-ac33-eed648628bda", "cell": { "columnId": "SpruceID", - "rowId": "(expires) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." + "rowId": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." }, "_events": {}, "_eventsCount": 1, - "link": "https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=interpreted%20as%20UTC.-,expires,-The%20expires%20property", + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 38985, + "_idleStart": 43346, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 20, + "duration": 21, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "(expires) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset.", - "body": "async function() {\n this.test.link = 'https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=interpreted%20as%20UTC.-,expires,-The%20expires%20property';\n await verificationFail({\n credential: credentials.clone('noOffsetExpires'),\n verifier\n });\n }", + "title": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC';\n const credential = credentials.clone('invalidCreated');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -24520,46 +24217,39 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "rAhKx-OZJpBnB_wNqlSW7", + "parent": "oxQe-kP64Nqi6XD181EqS", "ctx": null, - "_testId": "urn:uuid:2fa92b35-8713-46f6-a9bc-17c3f3c5f9a6", + "_testId": "urn:uuid:8edd4714-7d6c-4184-a81d-57084eaedf35", "cell": { "columnId": "Trinsic", - "rowId": "(expires) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." + "rowId": "The date and time the proof was created is OPTIONAL and, if included, MUST be specified as an [XMLSCHEMA11-2] dateTimeStamp string, either in Universal Coordinated Time (UTC), denoted by a Z at the end of the value, or with a time zone offset relative to UTC." }, "_events": {}, "_eventsCount": 1, - "link": "https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=interpreted%20as%20UTC.-,expires,-The%20expires%20property", + "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=MUST%20be%20specified%20as%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time%20(UTC)%2C%20denoted%20by%20a%20Z%20at%20the%20end%20of%20the%20value%2C%20or%20with%20a%20time%20zone%20offset%20relative%20to%20UTC", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 41104, + "_idleStart": 44220, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 35, + "duration": 19, "state": "passed", "speed": "fast" } ] - } - ] - }, - { - "title": "Ed25519Signature2020 (verifier)", - "ctx": null, - "suites": [ + }, { - "title": "apicatalog.com", - "ctx": null, - "suites": [], - "tests": [ + "id": "The value of the cryptosuite property MUST be a string that identifies the cryptographic suite. If the processing environment supports subtypes of string, the type of the cryptosuite value MUST be the https://w3id.org/security#cryptosuiteString subtype of string.", + "link": "https://w3c.github.io/vc-data-integrity/#introduction:~:text=The%20value%20of%20the%20cryptosuite%20property%20MUST%20be%20a%20string%20that%20identifies%20the%20cryptographic%20suite.%20If%20the%20processing%20environment%20supports%20subtypes%20of%20string%2C%20the%20type%20of%20the%20cryptosuite%20value%20MUST%20be%20the%20https%3A//w3id.org/security%23cryptosuiteString%20subtype%20of%20string.", + "cells": [ { "type": "test", - "title": "MUST verify a valid VC with an Ed25519Signature2020 proof", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(issuedVc);\n await verificationSuccess({credential, verifier});\n }", + "title": "The value of the cryptosuite property MUST be a string that identifies the cryptographic suite. If the processing environment supports subtypes of string, the type of the cryptosuite value MUST be the https://w3id.org/security#cryptosuiteString subtype of string.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=The%20value%20of%20the%20cryptosuite%20property%20MUST%20be%20a%20string%20that%20identifies%20the%20cryptographic%20suite.%20If%20the%20processing%20environment%20supports%20subtypes%20of%20string%2C%20the%20type%20of%20the%20cryptosuite%20value%20MUST%20be%20the%20https%3A//w3id.org/security%23cryptosuiteString%20subtype%20of%20string.';\n const credential = credentials.clone('invalidCryptosuite');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -24569,32 +24259,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "zN_lLqY6ZBjPIBkSvoGU5", + "parent": "4lbuxdf6TSMBdUCatK9o7", "ctx": null, - "_testId": "urn:uuid:eb5910dc-9087-4262-8c77-b6d08541c1d3", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:020baa7e-b321-4d34-870e-378cc1918572", "cell": { "columnId": "apicatalog.com", - "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" + "rowId": "The value of the cryptosuite property MUST be a string that identifies the cryptographic suite. If the processing environment supports subtypes of string, the type of the cryptosuite value MUST be the https://w3id.org/security#cryptosuiteString subtype of string." }, + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#introduction:~:text=The%20value%20of%20the%20cryptosuite%20property%20MUST%20be%20a%20string%20that%20identifies%20the%20cryptographic%20suite.%20If%20the%20processing%20environment%20supports%20subtypes%20of%20string%2C%20the%20type%20of%20the%20cryptosuite%20value%20MUST%20be%20the%20https%3A//w3id.org/security%23cryptosuiteString%20subtype%20of%20string.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 41139, + "_idleStart": 18930, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 85, + "duration": 48, "state": "passed", - "speed": "slow" + "speed": "medium" }, { "type": "test", - "title": "If the \"proofValue\" field, when decoded to raw bytes, is not 64 bytes in length if the associated public key is 32 bytes in length, or 114 bytes in length if the public key is 57 bytes in length, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(issuedVc);\n const proofBytes = bs58Decode({id: credential.proof.proofValue});\n const randomBytes = new Uint8Array(32).map(\n () => Math.floor(Math.random() * 255));\n credential.proof.proofValue = bs58Encode(\n new Uint8Array([...proofBytes, ...randomBytes]));\n await verificationFail({credential, verifier});\n }", + "title": "The value of the cryptosuite property MUST be a string that identifies the cryptographic suite. If the processing environment supports subtypes of string, the type of the cryptosuite value MUST be the https://w3id.org/security#cryptosuiteString subtype of string.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=The%20value%20of%20the%20cryptosuite%20property%20MUST%20be%20a%20string%20that%20identifies%20the%20cryptographic%20suite.%20If%20the%20processing%20environment%20supports%20subtypes%20of%20string%2C%20the%20type%20of%20the%20cryptosuite%20value%20MUST%20be%20the%20https%3A//w3id.org/security%23cryptosuiteString%20subtype%20of%20string.';\n const credential = credentials.clone('invalidCryptosuite');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -24604,32 +24295,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "zN_lLqY6ZBjPIBkSvoGU5", + "parent": "m-95LkeEjgnUOl8RA2_qH", "ctx": null, - "_testId": "urn:uuid:e487b8bb-bfdd-4602-8236-cf0c0f11b5d1", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:b52a3c26-df64-4a2f-a274-28d996f6a382", "cell": { - "columnId": "apicatalog.com", - "rowId": "If the \"proofValue\" field, when decoded to raw bytes, is not 64 bytes in length if the associated public key is 32 bytes in length, or 114 bytes in length if the public key is 57 bytes in length, an error MUST be raised." + "columnId": "Danube Tech", + "rowId": "The value of the cryptosuite property MUST be a string that identifies the cryptographic suite. If the processing environment supports subtypes of string, the type of the cryptosuite value MUST be the https://w3id.org/security#cryptosuiteString subtype of string." }, + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#introduction:~:text=The%20value%20of%20the%20cryptosuite%20property%20MUST%20be%20a%20string%20that%20identifies%20the%20cryptographic%20suite.%20If%20the%20processing%20environment%20supports%20subtypes%20of%20string%2C%20the%20type%20of%20the%20cryptosuite%20value%20MUST%20be%20the%20https%3A//w3id.org/security%23cryptosuiteString%20subtype%20of%20string.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 41225, + "_idleStart": 25115, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 59, + "duration": 653, "state": "passed", - "speed": "medium" + "speed": "slow" }, { "type": "test", - "title": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(incorrectCannonization);\n await verificationFail({credential, verifier});\n }", + "title": "The value of the cryptosuite property MUST be a string that identifies the cryptographic suite. If the processing environment supports subtypes of string, the type of the cryptosuite value MUST be the https://w3id.org/security#cryptosuiteString subtype of string.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=The%20value%20of%20the%20cryptosuite%20property%20MUST%20be%20a%20string%20that%20identifies%20the%20cryptographic%20suite.%20If%20the%20processing%20environment%20supports%20subtypes%20of%20string%2C%20the%20type%20of%20the%20cryptosuite%20value%20MUST%20be%20the%20https%3A//w3id.org/security%23cryptosuiteString%20subtype%20of%20string.';\n const credential = credentials.clone('invalidCryptosuite');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -24639,32 +24331,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "zN_lLqY6ZBjPIBkSvoGU5", + "parent": "vjCbcL73Y3Hj-3-3Vt2xr", "ctx": null, - "_testId": "urn:uuid:703ece54-6e70-4825-8b2f-0b35d1745e50", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:06f586df-e076-4796-a5c5-291bfddb81d6", "cell": { - "columnId": "apicatalog.com", - "rowId": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised." + "columnId": "Digital Bazaar", + "rowId": "The value of the cryptosuite property MUST be a string that identifies the cryptographic suite. If the processing environment supports subtypes of string, the type of the cryptosuite value MUST be the https://w3id.org/security#cryptosuiteString subtype of string." }, + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#introduction:~:text=The%20value%20of%20the%20cryptosuite%20property%20MUST%20be%20a%20string%20that%20identifies%20the%20cryptographic%20suite.%20If%20the%20processing%20environment%20supports%20subtypes%20of%20string%2C%20the%20type%20of%20the%20cryptosuite%20value%20MUST%20be%20the%20https%3A//w3id.org/security%23cryptosuiteString%20subtype%20of%20string.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 41284, + "_idleStart": 29683, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 58, + "duration": 40, "state": "passed", "speed": "medium" }, { "type": "test", - "title": "If a canonicalization data hashing algorithm SHA-2-256 is used, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(incorrectHash);\n await verificationFail({credential, verifier});\n }", + "title": "The value of the cryptosuite property MUST be a string that identifies the cryptographic suite. If the processing environment supports subtypes of string, the type of the cryptosuite value MUST be the https://w3id.org/security#cryptosuiteString subtype of string.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=The%20value%20of%20the%20cryptosuite%20property%20MUST%20be%20a%20string%20that%20identifies%20the%20cryptographic%20suite.%20If%20the%20processing%20environment%20supports%20subtypes%20of%20string%2C%20the%20type%20of%20the%20cryptosuite%20value%20MUST%20be%20the%20https%3A//w3id.org/security%23cryptosuiteString%20subtype%20of%20string.';\n const credential = credentials.clone('invalidCryptosuite');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -24674,55 +24367,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "zN_lLqY6ZBjPIBkSvoGU5", + "parent": "kI_ZSoLzqZSvNBsn3jzIQ", "ctx": null, - "_testId": "urn:uuid:33196940-3ef2-4a22-b0bd-dd6f5a92af31", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:6f4b5940-855f-45ee-bbdb-3110d9b1eaec", "cell": { - "columnId": "apicatalog.com", - "rowId": "If a canonicalization data hashing algorithm SHA-2-256 is used, an error MUST be raised." + "columnId": "EWF", + "rowId": "The value of the cryptosuite property MUST be a string that identifies the cryptographic suite. If the processing environment supports subtypes of string, the type of the cryptosuite value MUST be the https://w3id.org/security#cryptosuiteString subtype of string." }, + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#introduction:~:text=The%20value%20of%20the%20cryptosuite%20property%20MUST%20be%20a%20string%20that%20identifies%20the%20cryptographic%20suite.%20If%20the%20processing%20environment%20supports%20subtypes%20of%20string%2C%20the%20type%20of%20the%20cryptosuite%20value%20MUST%20be%20the%20https%3A//w3id.org/security%23cryptosuiteString%20subtype%20of%20string.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 41342, + "_idleStart": 31636, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 72, + "duration": 91, "state": "passed", - "speed": "medium" - } - ], - "root": false, - "pending": false, - "_retries": -1, - "_beforeEach": [], - "_beforeAll": [], - "_afterEach": [], - "_afterAll": [], - "_timeout": 15000, - "_slow": 75, - "_bail": false, - "_onlyTests": [], - "_onlySuites": [], - "delayed": false, - "parent": "HTq7ohaZjhloJmRguAciz", - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "_testId": "urn:uuid:ff9c561f-fcf3-4978-a282-4f1b35f8b54e" - }, - { - "title": "Danube Tech", - "ctx": null, - "suites": [], - "tests": [ + "speed": "slow" + }, { "type": "test", - "title": "MUST verify a valid VC with an Ed25519Signature2020 proof", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(issuedVc);\n await verificationSuccess({credential, verifier});\n }", + "title": "The value of the cryptosuite property MUST be a string that identifies the cryptographic suite. If the processing environment supports subtypes of string, the type of the cryptosuite value MUST be the https://w3id.org/security#cryptosuiteString subtype of string.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=The%20value%20of%20the%20cryptosuite%20property%20MUST%20be%20a%20string%20that%20identifies%20the%20cryptographic%20suite.%20If%20the%20processing%20environment%20supports%20subtypes%20of%20string%2C%20the%20type%20of%20the%20cryptosuite%20value%20MUST%20be%20the%20https%3A//w3id.org/security%23cryptosuiteString%20subtype%20of%20string.';\n const credential = credentials.clone('invalidCryptosuite');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -24732,32 +24403,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "xuxVV5EaKv0fm5LtACVfw", + "parent": "4tSBZN6UnobQjWlMYrZJM", "ctx": null, - "_testId": "urn:uuid:769fcc82-2816-4fe9-9167-c0e8cbb044ff", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:ee497998-b79c-4d7a-9295-ceaa9e61d408", "cell": { - "columnId": "Danube Tech", - "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" + "columnId": "LearnCard", + "rowId": "The value of the cryptosuite property MUST be a string that identifies the cryptographic suite. If the processing environment supports subtypes of string, the type of the cryptosuite value MUST be the https://w3id.org/security#cryptosuiteString subtype of string." }, + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#introduction:~:text=The%20value%20of%20the%20cryptosuite%20property%20MUST%20be%20a%20string%20that%20identifies%20the%20cryptographic%20suite.%20If%20the%20processing%20environment%20supports%20subtypes%20of%20string%2C%20the%20type%20of%20the%20cryptosuite%20value%20MUST%20be%20the%20https%3A//w3id.org/security%23cryptosuiteString%20subtype%20of%20string.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 41414, + "_idleStart": 41959, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 653, + "duration": 68, "state": "passed", - "speed": "slow" + "speed": "medium" }, { "type": "test", - "title": "If the \"proofValue\" field, when decoded to raw bytes, is not 64 bytes in length if the associated public key is 32 bytes in length, or 114 bytes in length if the public key is 57 bytes in length, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(issuedVc);\n const proofBytes = bs58Decode({id: credential.proof.proofValue});\n const randomBytes = new Uint8Array(32).map(\n () => Math.floor(Math.random() * 255));\n credential.proof.proofValue = bs58Encode(\n new Uint8Array([...proofBytes, ...randomBytes]));\n await verificationFail({credential, verifier});\n }", + "title": "The value of the cryptosuite property MUST be a string that identifies the cryptographic suite. If the processing environment supports subtypes of string, the type of the cryptosuite value MUST be the https://w3id.org/security#cryptosuiteString subtype of string.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=The%20value%20of%20the%20cryptosuite%20property%20MUST%20be%20a%20string%20that%20identifies%20the%20cryptographic%20suite.%20If%20the%20processing%20environment%20supports%20subtypes%20of%20string%2C%20the%20type%20of%20the%20cryptosuite%20value%20MUST%20be%20the%20https%3A//w3id.org/security%23cryptosuiteString%20subtype%20of%20string.';\n const credential = credentials.clone('invalidCryptosuite');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -24767,32 +24439,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "xuxVV5EaKv0fm5LtACVfw", + "parent": "eS-Sz740TQReObqQ_sP03", "ctx": null, - "_testId": "urn:uuid:ca8c9f2e-c3e3-4d9e-a99f-90f71e21bd9b", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:be5072cd-e492-408f-87ce-38eadf8e9ea6", "cell": { - "columnId": "Danube Tech", - "rowId": "If the \"proofValue\" field, when decoded to raw bytes, is not 64 bytes in length if the associated public key is 32 bytes in length, or 114 bytes in length if the public key is 57 bytes in length, an error MUST be raised." + "columnId": "OpSecId", + "rowId": "The value of the cryptosuite property MUST be a string that identifies the cryptographic suite. If the processing environment supports subtypes of string, the type of the cryptosuite value MUST be the https://w3id.org/security#cryptosuiteString subtype of string." }, + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#introduction:~:text=The%20value%20of%20the%20cryptosuite%20property%20MUST%20be%20a%20string%20that%20identifies%20the%20cryptographic%20suite.%20If%20the%20processing%20environment%20supports%20subtypes%20of%20string%2C%20the%20type%20of%20the%20cryptosuite%20value%20MUST%20be%20the%20https%3A//w3id.org/security%23cryptosuiteString%20subtype%20of%20string.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 42068, + "_idleStart": 42807, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 444, + "duration": 24, "state": "passed", - "speed": "slow" + "speed": "fast" }, { "type": "test", - "title": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(incorrectCannonization);\n await verificationFail({credential, verifier});\n }", + "title": "The value of the cryptosuite property MUST be a string that identifies the cryptographic suite. If the processing environment supports subtypes of string, the type of the cryptosuite value MUST be the https://w3id.org/security#cryptosuiteString subtype of string.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=The%20value%20of%20the%20cryptosuite%20property%20MUST%20be%20a%20string%20that%20identifies%20the%20cryptographic%20suite.%20If%20the%20processing%20environment%20supports%20subtypes%20of%20string%2C%20the%20type%20of%20the%20cryptosuite%20value%20MUST%20be%20the%20https%3A//w3id.org/security%23cryptosuiteString%20subtype%20of%20string.';\n const credential = credentials.clone('invalidCryptosuite');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -24802,32 +24475,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "xuxVV5EaKv0fm5LtACVfw", + "parent": "WvyzRIP6TnxLKp9PEVOWp", "ctx": null, - "_testId": "urn:uuid:6927a447-4bb9-45fe-a648-c3222c401eb9", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:667f429c-aabb-4df6-a839-c448667a1633", "cell": { - "columnId": "Danube Tech", - "rowId": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised." + "columnId": "SpruceID", + "rowId": "The value of the cryptosuite property MUST be a string that identifies the cryptographic suite. If the processing environment supports subtypes of string, the type of the cryptosuite value MUST be the https://w3id.org/security#cryptosuiteString subtype of string." }, + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#introduction:~:text=The%20value%20of%20the%20cryptosuite%20property%20MUST%20be%20a%20string%20that%20identifies%20the%20cryptographic%20suite.%20If%20the%20processing%20environment%20supports%20subtypes%20of%20string%2C%20the%20type%20of%20the%20cryptosuite%20value%20MUST%20be%20the%20https%3A//w3id.org/security%23cryptosuiteString%20subtype%20of%20string.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 42511, + "_idleStart": 43367, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 438, + "duration": 19, "state": "passed", - "speed": "slow" + "speed": "fast" }, { "type": "test", - "title": "If a canonicalization data hashing algorithm SHA-2-256 is used, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(incorrectHash);\n await verificationFail({credential, verifier});\n }", + "title": "The value of the cryptosuite property MUST be a string that identifies the cryptographic suite. If the processing environment supports subtypes of string, the type of the cryptosuite value MUST be the https://w3id.org/security#cryptosuiteString subtype of string.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#introduction:~:text=The%20value%20of%20the%20cryptosuite%20property%20MUST%20be%20a%20string%20that%20identifies%20the%20cryptographic%20suite.%20If%20the%20processing%20environment%20supports%20subtypes%20of%20string%2C%20the%20type%20of%20the%20cryptosuite%20value%20MUST%20be%20the%20https%3A//w3id.org/security%23cryptosuiteString%20subtype%20of%20string.';\n const credential = credentials.clone('invalidCryptosuite');\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -24837,55 +24511,39 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "xuxVV5EaKv0fm5LtACVfw", + "parent": "oxQe-kP64Nqi6XD181EqS", "ctx": null, - "_testId": "urn:uuid:7588aa96-ba95-4d62-8e33-85141097b032", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:1c604017-cdae-4942-89c8-24ef81b7354e", "cell": { - "columnId": "Danube Tech", - "rowId": "If a canonicalization data hashing algorithm SHA-2-256 is used, an error MUST be raised." + "columnId": "Trinsic", + "rowId": "The value of the cryptosuite property MUST be a string that identifies the cryptographic suite. If the processing environment supports subtypes of string, the type of the cryptosuite value MUST be the https://w3id.org/security#cryptosuiteString subtype of string." }, + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#introduction:~:text=The%20value%20of%20the%20cryptosuite%20property%20MUST%20be%20a%20string%20that%20identifies%20the%20cryptographic%20suite.%20If%20the%20processing%20environment%20supports%20subtypes%20of%20string%2C%20the%20type%20of%20the%20cryptosuite%20value%20MUST%20be%20the%20https%3A//w3id.org/security%23cryptosuiteString%20subtype%20of%20string.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 42950, + "_idleStart": 44239, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 440, + "duration": 19, "state": "passed", - "speed": "slow" + "speed": "fast" } - ], - "root": false, - "pending": false, - "_retries": -1, - "_beforeEach": [], - "_beforeAll": [], - "_afterEach": [], - "_afterAll": [], - "_timeout": 15000, - "_slow": 75, - "_bail": false, - "_onlyTests": [], - "_onlySuites": [], - "delayed": false, - "parent": "HTq7ohaZjhloJmRguAciz", - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "_testId": "urn:uuid:8869c2a6-a119-4fbe-b400-1227379852a7" + ] }, { - "title": "Digital Bazaar", - "ctx": null, - "suites": [], - "tests": [ + "id": "If options has a non-null domain item, it MUST be equal to proof.domain or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR.", + "link": "https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=If%20options%20has%20a%20non%2Dnull%20domain%20item%2C%20it%20MUST%20be%20equal%20to%20proof.domain%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.", + "cells": [ { "type": "test", - "title": "MUST verify a valid VC with an Ed25519Signature2020 proof", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(issuedVc);\n await verificationSuccess({credential, verifier});\n }", + "title": "If options has a non-null domain item, it MUST be equal to proof.domain or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=If%20options%20has%20a%20non%2Dnull%20domain%20item%2C%20it%20MUST%20be%20equal%20to%20proof.domain%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.';\n const credential = credentials.clone('invalidDomain');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example'\n }\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -24895,32 +24553,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "nKdPR_uc1_pkMnT_UQ9vk", + "parent": "4lbuxdf6TSMBdUCatK9o7", "ctx": null, - "_testId": "urn:uuid:8e64c9d8-ab69-47f5-b54b-6dcd034cdcb1", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:dbde9073-27ad-4b7d-be43-b03941c6c53a", "cell": { - "columnId": "Digital Bazaar", - "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" + "columnId": "apicatalog.com", + "rowId": "If options has a non-null domain item, it MUST be equal to proof.domain or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR." }, + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=If%20options%20has%20a%20non%2Dnull%20domain%20item%2C%20it%20MUST%20be%20equal%20to%20proof.domain%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 43391, + "_idleStart": 18979, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 232, + "duration": 48, "state": "passed", - "speed": "slow" + "speed": "medium" }, { "type": "test", - "title": "If the \"proofValue\" field, when decoded to raw bytes, is not 64 bytes in length if the associated public key is 32 bytes in length, or 114 bytes in length if the public key is 57 bytes in length, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(issuedVc);\n const proofBytes = bs58Decode({id: credential.proof.proofValue});\n const randomBytes = new Uint8Array(32).map(\n () => Math.floor(Math.random() * 255));\n credential.proof.proofValue = bs58Encode(\n new Uint8Array([...proofBytes, ...randomBytes]));\n await verificationFail({credential, verifier});\n }", + "title": "If options has a non-null domain item, it MUST be equal to proof.domain or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=If%20options%20has%20a%20non%2Dnull%20domain%20item%2C%20it%20MUST%20be%20equal%20to%20proof.domain%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.';\n const credential = credentials.clone('invalidDomain');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example'\n }\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -24930,32 +24589,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "nKdPR_uc1_pkMnT_UQ9vk", + "parent": "m-95LkeEjgnUOl8RA2_qH", "ctx": null, - "_testId": "urn:uuid:18b02758-3d77-4f11-a31e-4a5f9347945a", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:4df582bc-92a2-485f-a446-f7a9e1e198a6", "cell": { - "columnId": "Digital Bazaar", - "rowId": "If the \"proofValue\" field, when decoded to raw bytes, is not 64 bytes in length if the associated public key is 32 bytes in length, or 114 bytes in length if the public key is 57 bytes in length, an error MUST be raised." + "columnId": "Danube Tech", + "rowId": "If options has a non-null domain item, it MUST be equal to proof.domain or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR." }, + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=If%20options%20has%20a%20non%2Dnull%20domain%20item%2C%20it%20MUST%20be%20equal%20to%20proof.domain%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 43622, + "_idleStart": 25769, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 51, + "duration": 646, "state": "passed", - "speed": "medium" + "speed": "slow" }, { "type": "test", - "title": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(incorrectCannonization);\n await verificationFail({credential, verifier});\n }", + "title": "If options has a non-null domain item, it MUST be equal to proof.domain or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=If%20options%20has%20a%20non%2Dnull%20domain%20item%2C%20it%20MUST%20be%20equal%20to%20proof.domain%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.';\n const credential = credentials.clone('invalidDomain');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example'\n }\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -24965,32 +24625,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "nKdPR_uc1_pkMnT_UQ9vk", + "parent": "vjCbcL73Y3Hj-3-3Vt2xr", "ctx": null, - "_testId": "urn:uuid:5796de37-9286-4e0a-880b-97ce2a23cf86", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:9328b7ee-629f-4944-bd02-836e48b3b207", "cell": { "columnId": "Digital Bazaar", - "rowId": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised." + "rowId": "If options has a non-null domain item, it MUST be equal to proof.domain or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR." }, + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=If%20options%20has%20a%20non%2Dnull%20domain%20item%2C%20it%20MUST%20be%20equal%20to%20proof.domain%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 43674, + "_idleStart": 29724, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 44, + "duration": 42, "state": "passed", "speed": "medium" }, { "type": "test", - "title": "If a canonicalization data hashing algorithm SHA-2-256 is used, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(incorrectHash);\n await verificationFail({credential, verifier});\n }", + "title": "If options has a non-null domain item, it MUST be equal to proof.domain or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=If%20options%20has%20a%20non%2Dnull%20domain%20item%2C%20it%20MUST%20be%20equal%20to%20proof.domain%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.';\n const credential = credentials.clone('invalidDomain');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example'\n }\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -25000,55 +24661,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "nKdPR_uc1_pkMnT_UQ9vk", + "parent": "kI_ZSoLzqZSvNBsn3jzIQ", "ctx": null, - "_testId": "urn:uuid:98c73556-cbbd-4beb-b7c4-ad8f7f790596", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:eeba5961-25ca-4c32-a6a1-95c12da3d17e", "cell": { - "columnId": "Digital Bazaar", - "rowId": "If a canonicalization data hashing algorithm SHA-2-256 is used, an error MUST be raised." + "columnId": "EWF", + "rowId": "If options has a non-null domain item, it MUST be equal to proof.domain or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR." }, + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=If%20options%20has%20a%20non%2Dnull%20domain%20item%2C%20it%20MUST%20be%20equal%20to%20proof.domain%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 43718, + "_idleStart": 31728, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 61, + "duration": 91, "state": "passed", - "speed": "medium" - } - ], - "root": false, - "pending": false, - "_retries": -1, - "_beforeEach": [], - "_beforeAll": [], - "_afterEach": [], - "_afterAll": [], - "_timeout": 15000, - "_slow": 75, - "_bail": false, - "_onlyTests": [], - "_onlySuites": [], - "delayed": false, - "parent": "HTq7ohaZjhloJmRguAciz", - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "_testId": "urn:uuid:6c6d4a62-256b-441b-b4f1-1d91f9ac228b" - }, - { - "title": "EWF", - "ctx": null, - "suites": [], - "tests": [ + "speed": "slow" + }, { "type": "test", - "title": "MUST verify a valid VC with an Ed25519Signature2020 proof", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(issuedVc);\n await verificationSuccess({credential, verifier});\n }", + "title": "If options has a non-null domain item, it MUST be equal to proof.domain or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=If%20options%20has%20a%20non%2Dnull%20domain%20item%2C%20it%20MUST%20be%20equal%20to%20proof.domain%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.';\n const credential = credentials.clone('invalidDomain');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example'\n }\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -25058,32 +24697,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "9pb6wYJW19zUMUkHQswKs", + "parent": "4tSBZN6UnobQjWlMYrZJM", "ctx": null, - "_testId": "urn:uuid:cd2ed9b8-3d8f-4e40-a9d9-69ac75765b49", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:82f9df8e-d4a5-4b5a-8b7b-a6fe121e7e4f", "cell": { - "columnId": "EWF", - "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" + "columnId": "LearnCard", + "rowId": "If options has a non-null domain item, it MUST be equal to proof.domain or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR." }, + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=If%20options%20has%20a%20non%2Dnull%20domain%20item%2C%20it%20MUST%20be%20equal%20to%20proof.domain%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 43780, + "_idleStart": 42027, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 391, + "duration": 64, "state": "passed", - "speed": "slow" + "speed": "medium" }, { "type": "test", - "title": "If the \"proofValue\" field, when decoded to raw bytes, is not 64 bytes in length if the associated public key is 32 bytes in length, or 114 bytes in length if the public key is 57 bytes in length, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(issuedVc);\n const proofBytes = bs58Decode({id: credential.proof.proofValue});\n const randomBytes = new Uint8Array(32).map(\n () => Math.floor(Math.random() * 255));\n credential.proof.proofValue = bs58Encode(\n new Uint8Array([...proofBytes, ...randomBytes]));\n await verificationFail({credential, verifier});\n }", + "title": "If options has a non-null domain item, it MUST be equal to proof.domain or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=If%20options%20has%20a%20non%2Dnull%20domain%20item%2C%20it%20MUST%20be%20equal%20to%20proof.domain%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.';\n const credential = credentials.clone('invalidDomain');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example'\n }\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -25093,32 +24733,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "9pb6wYJW19zUMUkHQswKs", + "parent": "eS-Sz740TQReObqQ_sP03", "ctx": null, - "_testId": "urn:uuid:45684fe3-92df-41d1-b7d0-8f28778ded47", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:b5e33f53-133f-4def-9b89-51b41e6432a5", "cell": { - "columnId": "EWF", - "rowId": "If the \"proofValue\" field, when decoded to raw bytes, is not 64 bytes in length if the associated public key is 32 bytes in length, or 114 bytes in length if the public key is 57 bytes in length, an error MUST be raised." + "columnId": "OpSecId", + "rowId": "If options has a non-null domain item, it MUST be equal to proof.domain or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR." }, + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=If%20options%20has%20a%20non%2Dnull%20domain%20item%2C%20it%20MUST%20be%20equal%20to%20proof.domain%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 44171, + "_idleStart": 42831, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 97, + "duration": 39, "state": "passed", - "speed": "slow" + "speed": "medium" }, { "type": "test", - "title": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(incorrectCannonization);\n await verificationFail({credential, verifier});\n }", + "title": "If options has a non-null domain item, it MUST be equal to proof.domain or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=If%20options%20has%20a%20non%2Dnull%20domain%20item%2C%20it%20MUST%20be%20equal%20to%20proof.domain%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.';\n const credential = credentials.clone('invalidDomain');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example'\n }\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -25128,32 +24769,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "9pb6wYJW19zUMUkHQswKs", + "parent": "WvyzRIP6TnxLKp9PEVOWp", "ctx": null, - "_testId": "urn:uuid:8a503531-1022-4e14-9b71-85beea486df5", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:06ff9560-3c8e-4187-841d-c4c590656b86", "cell": { - "columnId": "EWF", - "rowId": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised." + "columnId": "SpruceID", + "rowId": "If options has a non-null domain item, it MUST be equal to proof.domain or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR." }, + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=If%20options%20has%20a%20non%2Dnull%20domain%20item%2C%20it%20MUST%20be%20equal%20to%20proof.domain%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 44268, + "_idleStart": 43386, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 94, + "duration": 18, "state": "passed", - "speed": "slow" + "speed": "fast" }, { "type": "test", - "title": "If a canonicalization data hashing algorithm SHA-2-256 is used, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(incorrectHash);\n await verificationFail({credential, verifier});\n }", + "title": "If options has a non-null domain item, it MUST be equal to proof.domain or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=If%20options%20has%20a%20non%2Dnull%20domain%20item%2C%20it%20MUST%20be%20equal%20to%20proof.domain%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.';\n const credential = credentials.clone('invalidDomain');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example'\n }\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -25163,55 +24805,39 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "9pb6wYJW19zUMUkHQswKs", + "parent": "oxQe-kP64Nqi6XD181EqS", "ctx": null, - "_testId": "urn:uuid:5c81336e-d1ef-44a5-8d8e-48d2af3b49db", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:4c223e5c-897e-4d69-a2b1-631149997b7a", "cell": { - "columnId": "EWF", - "rowId": "If a canonicalization data hashing algorithm SHA-2-256 is used, an error MUST be raised." + "columnId": "Trinsic", + "rowId": "If options has a non-null domain item, it MUST be equal to proof.domain or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR." }, + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#verify-proof:~:text=If%20options%20has%20a%20non%2Dnull%20domain%20item%2C%20it%20MUST%20be%20equal%20to%20proof.domain%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 44362, + "_idleStart": 44258, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 94, + "duration": 22, "state": "passed", - "speed": "slow" + "speed": "fast" } - ], - "root": false, - "pending": false, - "_retries": -1, - "_beforeEach": [], - "_beforeAll": [], - "_afterEach": [], - "_afterAll": [], - "_timeout": 15000, - "_slow": 75, - "_bail": false, - "_onlyTests": [], - "_onlySuites": [], - "delayed": false, - "parent": "HTq7ohaZjhloJmRguAciz", - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "_testId": "urn:uuid:c12af280-028f-4880-a3d1-56f169097ead" + ] }, { - "title": "LearnCard", - "ctx": null, - "suites": [], - "tests": [ + "id": "If options has a non-null challenge item, it MUST be equal to proof.challenge or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR.", + "link": "https://w3c.github.io/vc-data-integrity/#add-proof:~:text=If%20options%20has%20a%20non%2Dnull%20challenge%20item%2C%20it%20MUST%20be%20equal%20to%20proof.challenge%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.", + "cells": [ { "type": "test", - "title": "MUST verify a valid VC with an Ed25519Signature2020 proof", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(issuedVc);\n await verificationSuccess({credential, verifier});\n }", + "title": "If options has a non-null challenge item, it MUST be equal to proof.challenge or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#add-proof:~:text=If%20options%20has%20a%20non%2Dnull%20challenge%20item%2C%20it%20MUST%20be%20equal%20to%20proof.challenge%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.';\n const credential = credentials.clone('invalidChallenge');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example',\n challenge: '1235abcd6789'\n }\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -25221,32 +24847,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "RLtTWikvnR8raSzAg_hFM", + "parent": "4lbuxdf6TSMBdUCatK9o7", "ctx": null, - "_testId": "urn:uuid:593c29a3-5aa5-4132-b674-371ada3631b2", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:699707d0-7fd8-46b7-a171-89e4e4a5b6fb", "cell": { - "columnId": "LearnCard", - "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" + "columnId": "apicatalog.com", + "rowId": "If options has a non-null challenge item, it MUST be equal to proof.challenge or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR." }, + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#add-proof:~:text=If%20options%20has%20a%20non%2Dnull%20challenge%20item%2C%20it%20MUST%20be%20equal%20to%20proof.challenge%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 44456, + "_idleStart": 19027, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 101, + "duration": 44, "state": "passed", - "speed": "slow" + "speed": "medium" }, { "type": "test", - "title": "If the \"proofValue\" field, when decoded to raw bytes, is not 64 bytes in length if the associated public key is 32 bytes in length, or 114 bytes in length if the public key is 57 bytes in length, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(issuedVc);\n const proofBytes = bs58Decode({id: credential.proof.proofValue});\n const randomBytes = new Uint8Array(32).map(\n () => Math.floor(Math.random() * 255));\n credential.proof.proofValue = bs58Encode(\n new Uint8Array([...proofBytes, ...randomBytes]));\n await verificationFail({credential, verifier});\n }", + "title": "If options has a non-null challenge item, it MUST be equal to proof.challenge or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#add-proof:~:text=If%20options%20has%20a%20non%2Dnull%20challenge%20item%2C%20it%20MUST%20be%20equal%20to%20proof.challenge%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.';\n const credential = credentials.clone('invalidChallenge');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example',\n challenge: '1235abcd6789'\n }\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -25256,32 +24883,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "RLtTWikvnR8raSzAg_hFM", + "parent": "m-95LkeEjgnUOl8RA2_qH", "ctx": null, - "_testId": "urn:uuid:310560d4-a9b4-43fc-98d2-7d74bfbe6f9b", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:79c408d5-7613-4aee-a1f4-ba99ba2c4d2a", "cell": { - "columnId": "LearnCard", - "rowId": "If the \"proofValue\" field, when decoded to raw bytes, is not 64 bytes in length if the associated public key is 32 bytes in length, or 114 bytes in length if the public key is 57 bytes in length, an error MUST be raised." + "columnId": "Danube Tech", + "rowId": "If options has a non-null challenge item, it MUST be equal to proof.challenge or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR." }, + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#add-proof:~:text=If%20options%20has%20a%20non%2Dnull%20challenge%20item%2C%20it%20MUST%20be%20equal%20to%20proof.challenge%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 44558, + "_idleStart": 26415, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 65, + "duration": 649, "state": "passed", - "speed": "medium" + "speed": "slow" }, { "type": "test", - "title": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(incorrectCannonization);\n await verificationFail({credential, verifier});\n }", + "title": "If options has a non-null challenge item, it MUST be equal to proof.challenge or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#add-proof:~:text=If%20options%20has%20a%20non%2Dnull%20challenge%20item%2C%20it%20MUST%20be%20equal%20to%20proof.challenge%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.';\n const credential = credentials.clone('invalidChallenge');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example',\n challenge: '1235abcd6789'\n }\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -25291,32 +24919,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "RLtTWikvnR8raSzAg_hFM", + "parent": "vjCbcL73Y3Hj-3-3Vt2xr", "ctx": null, - "_testId": "urn:uuid:18c68c5a-6be3-4717-a03b-96715129d9d0", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:0d8542fb-1b13-4dd2-ae96-c2510d7e7d00", "cell": { - "columnId": "LearnCard", - "rowId": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised." + "columnId": "Digital Bazaar", + "rowId": "If options has a non-null challenge item, it MUST be equal to proof.challenge or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR." }, + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#add-proof:~:text=If%20options%20has%20a%20non%2Dnull%20challenge%20item%2C%20it%20MUST%20be%20equal%20to%20proof.challenge%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 44623, + "_idleStart": 29766, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 65, + "duration": 41, "state": "passed", "speed": "medium" }, { "type": "test", - "title": "If a canonicalization data hashing algorithm SHA-2-256 is used, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(incorrectHash);\n await verificationFail({credential, verifier});\n }", + "title": "If options has a non-null challenge item, it MUST be equal to proof.challenge or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#add-proof:~:text=If%20options%20has%20a%20non%2Dnull%20challenge%20item%2C%20it%20MUST%20be%20equal%20to%20proof.challenge%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.';\n const credential = credentials.clone('invalidChallenge');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example',\n challenge: '1235abcd6789'\n }\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -25326,55 +24955,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "RLtTWikvnR8raSzAg_hFM", + "parent": "kI_ZSoLzqZSvNBsn3jzIQ", "ctx": null, - "_testId": "urn:uuid:55a825a3-c925-4bba-a7b8-f55d1204b9a0", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:ed0cbd64-cc6e-4b75-a75c-78b42609bdf7", "cell": { - "columnId": "LearnCard", - "rowId": "If a canonicalization data hashing algorithm SHA-2-256 is used, an error MUST be raised." + "columnId": "EWF", + "rowId": "If options has a non-null challenge item, it MUST be equal to proof.challenge or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR." }, + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#add-proof:~:text=If%20options%20has%20a%20non%2Dnull%20challenge%20item%2C%20it%20MUST%20be%20equal%20to%20proof.challenge%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 44689, + "_idleStart": 31819, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 58, + "duration": 91, "state": "passed", - "speed": "medium" - } - ], - "root": false, - "pending": false, - "_retries": -1, - "_beforeEach": [], - "_beforeAll": [], - "_afterEach": [], - "_afterAll": [], - "_timeout": 15000, - "_slow": 75, - "_bail": false, - "_onlyTests": [], - "_onlySuites": [], - "delayed": false, - "parent": "HTq7ohaZjhloJmRguAciz", - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "_testId": "urn:uuid:a9c8ba73-a503-40c4-96d7-7b7e7b996e71" - }, - { - "title": "OpSecId", - "ctx": null, - "suites": [], - "tests": [ + "speed": "slow" + }, { "type": "test", - "title": "MUST verify a valid VC with an Ed25519Signature2020 proof", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(issuedVc);\n await verificationSuccess({credential, verifier});\n }", + "title": "If options has a non-null challenge item, it MUST be equal to proof.challenge or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#add-proof:~:text=If%20options%20has%20a%20non%2Dnull%20challenge%20item%2C%20it%20MUST%20be%20equal%20to%20proof.challenge%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.';\n const credential = credentials.clone('invalidChallenge');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example',\n challenge: '1235abcd6789'\n }\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -25384,32 +24991,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "Q5th1j6xY0y1B5inCQ4z1", + "parent": "4tSBZN6UnobQjWlMYrZJM", "ctx": null, - "_testId": "urn:uuid:bedf11a2-f863-4489-a4e9-d8238b5b352d", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:d31ed693-8377-4c5f-a8a7-d15b6b8abe2d", "cell": { - "columnId": "OpSecId", - "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" + "columnId": "LearnCard", + "rowId": "If options has a non-null challenge item, it MUST be equal to proof.challenge or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR." }, + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#add-proof:~:text=If%20options%20has%20a%20non%2Dnull%20challenge%20item%2C%20it%20MUST%20be%20equal%20to%20proof.challenge%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 44748, + "_idleStart": 42092, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 142, + "duration": 58, "state": "passed", - "speed": "slow" + "speed": "medium" }, { "type": "test", - "title": "If the \"proofValue\" field, when decoded to raw bytes, is not 64 bytes in length if the associated public key is 32 bytes in length, or 114 bytes in length if the public key is 57 bytes in length, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(issuedVc);\n const proofBytes = bs58Decode({id: credential.proof.proofValue});\n const randomBytes = new Uint8Array(32).map(\n () => Math.floor(Math.random() * 255));\n credential.proof.proofValue = bs58Encode(\n new Uint8Array([...proofBytes, ...randomBytes]));\n await verificationFail({credential, verifier});\n }", + "title": "If options has a non-null challenge item, it MUST be equal to proof.challenge or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#add-proof:~:text=If%20options%20has%20a%20non%2Dnull%20challenge%20item%2C%20it%20MUST%20be%20equal%20to%20proof.challenge%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.';\n const credential = credentials.clone('invalidChallenge');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example',\n challenge: '1235abcd6789'\n }\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -25419,39 +25027,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "Q5th1j6xY0y1B5inCQ4z1", + "parent": "eS-Sz740TQReObqQ_sP03", "ctx": null, - "_testId": "urn:uuid:444f730b-4ffa-4587-afed-481d90f17c2f", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:05fb3680-7332-4f8b-8d09-79537c4d3c9f", "cell": { "columnId": "OpSecId", - "rowId": "If the \"proofValue\" field, when decoded to raw bytes, is not 64 bytes in length if the associated public key is 32 bytes in length, or 114 bytes in length if the public key is 57 bytes in length, an error MUST be raised." + "rowId": "If options has a non-null challenge item, it MUST be equal to proof.challenge or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR." }, + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#add-proof:~:text=If%20options%20has%20a%20non%2Dnull%20challenge%20item%2C%20it%20MUST%20be%20equal%20to%20proof.challenge%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 44891, + "_idleStart": 42869, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 30, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'content-length': '638', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 25 Aug 2024 05:02:18 GMT', server: 'Python/3.12 aiohttp/3.10.5', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist", - "showDiff": false, - "actual": {}, - "operator": "notStrictEqual", - "stack": "AssertionError: Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'content-length': '638', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 25 Aug 2024 05:02:18 GMT', server: 'Python/3.12 aiohttp/3.10.5', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at verificationFail (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/assertions.js:49:14)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js:73:11)" - } + "duration": 25, + "state": "passed", + "speed": "fast" }, { "type": "test", - "title": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(incorrectCannonization);\n await verificationFail({credential, verifier});\n }", + "title": "If options has a non-null challenge item, it MUST be equal to proof.challenge or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#add-proof:~:text=If%20options%20has%20a%20non%2Dnull%20challenge%20item%2C%20it%20MUST%20be%20equal%20to%20proof.challenge%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.';\n const credential = credentials.clone('invalidChallenge');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example',\n challenge: '1235abcd6789'\n }\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -25461,39 +25063,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "Q5th1j6xY0y1B5inCQ4z1", + "parent": "WvyzRIP6TnxLKp9PEVOWp", "ctx": null, - "_testId": "urn:uuid:1586c4e4-4533-4f62-8330-2bfe3ca15774", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:c473912b-8098-4ddb-91fb-875952f1a5e5", "cell": { - "columnId": "OpSecId", - "rowId": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised." + "columnId": "SpruceID", + "rowId": "If options has a non-null challenge item, it MUST be equal to proof.challenge or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR." }, + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#add-proof:~:text=If%20options%20has%20a%20non%2Dnull%20challenge%20item%2C%20it%20MUST%20be%20equal%20to%20proof.challenge%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 44921, + "_idleStart": 43404, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 29, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'content-length': '638', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 25 Aug 2024 05:02:18 GMT', server: 'Python/3.12 aiohttp/3.10.5', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist", - "showDiff": false, - "actual": {}, - "operator": "notStrictEqual", - "stack": "AssertionError: Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'content-length': '638', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 25 Aug 2024 05:02:18 GMT', server: 'Python/3.12 aiohttp/3.10.5', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at verificationFail (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/assertions.js:49:14)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js:82:11)" - } + "duration": 17, + "state": "passed", + "speed": "fast" }, { "type": "test", - "title": "If a canonicalization data hashing algorithm SHA-2-256 is used, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(incorrectHash);\n await verificationFail({credential, verifier});\n }", + "title": "If options has a non-null challenge item, it MUST be equal to proof.challenge or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR.", + "body": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#add-proof:~:text=If%20options%20has%20a%20non%2Dnull%20challenge%20item%2C%20it%20MUST%20be%20equal%20to%20proof.challenge%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.';\n const credential = credentials.clone('invalidChallenge');\n await verificationFail({\n credential, verifier, options: {\n domain: 'domain.example',\n challenge: '1235abcd6789'\n }\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -25503,62 +25099,39 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "Q5th1j6xY0y1B5inCQ4z1", + "parent": "oxQe-kP64Nqi6XD181EqS", "ctx": null, - "_testId": "urn:uuid:98bfe230-7603-4b7a-add3-3172244b9dd8", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:35dc4229-586a-4d4b-9b26-08439937df35", "cell": { - "columnId": "OpSecId", - "rowId": "If a canonicalization data hashing algorithm SHA-2-256 is used, an error MUST be raised." + "columnId": "Trinsic", + "rowId": "If options has a non-null challenge item, it MUST be equal to proof.challenge or an error MUST be raised and SHOULD convey an error type of PROOF_GENERATION_ERROR." }, + "_events": {}, + "_eventsCount": 1, + "link": "https://w3c.github.io/vc-data-integrity/#add-proof:~:text=If%20options%20has%20a%20non%2Dnull%20challenge%20item%2C%20it%20MUST%20be%20equal%20to%20proof.challenge%20or%20an%20error%20MUST%20be%20raised%20and%20SHOULD%20convey%20an%20error%20type%20of%20PROOF_GENERATION_ERROR.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 44951, + "_idleStart": 44281, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 31, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'content-length': '638', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 25 Aug 2024 05:02:18 GMT', server: 'Python/3.12 aiohttp/3.10.5', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist", - "showDiff": false, - "actual": {}, - "operator": "notStrictEqual", - "stack": "AssertionError: Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'content-length': '638', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 25 Aug 2024 05:02:18 GMT', server: 'Python/3.12 aiohttp/3.10.5', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at verificationFail (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/assertions.js:49:14)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js:91:11)" - } + "duration": 23, + "state": "passed", + "speed": "fast" } - ], - "root": false, - "pending": false, - "_retries": -1, - "_beforeEach": [], - "_beforeAll": [], - "_afterEach": [], - "_afterAll": [], - "_timeout": 15000, - "_slow": 75, - "_bail": false, - "_onlyTests": [], - "_onlySuites": [], - "delayed": false, - "parent": "HTq7ohaZjhloJmRguAciz", - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "_testId": "urn:uuid:4416821b-cb01-4a06-a0ca-42e0cecba0f9" + ] }, { - "title": "SpruceID", - "ctx": null, - "suites": [], - "tests": [ + "id": "(created) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset.", + "link": "https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=be%20a%20string.-,created,-The%20date%20and", + "cells": [ { "type": "test", - "title": "MUST verify a valid VC with an Ed25519Signature2020 proof", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(issuedVc);\n await verificationSuccess({credential, verifier});\n }", + "title": "(created) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset.", + "body": "async function() {\n this.test.link = 'https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=be%20a%20string.-,created,-The%20date%20and';\n await verificationFail({\n credential: credentials.clone('noOffsetCreated'),\n verifier\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -25568,32 +25141,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "Tvu2UupzAWy4w3PokBbNu", + "parent": "4lbuxdf6TSMBdUCatK9o7", "ctx": null, - "_testId": "urn:uuid:e4b0080c-65cf-447c-86c2-de7af2e0404f", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:4e4e976f-a73f-4d45-bc7c-8936cae5ecad", "cell": { - "columnId": "SpruceID", - "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" + "columnId": "apicatalog.com", + "rowId": "(created) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." }, + "_events": {}, + "_eventsCount": 1, + "link": "https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=be%20a%20string.-,created,-The%20date%20and", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 44983, + "_idleStart": 19071, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 55, + "duration": 54, "state": "passed", "speed": "medium" }, { "type": "test", - "title": "If the \"proofValue\" field, when decoded to raw bytes, is not 64 bytes in length if the associated public key is 32 bytes in length, or 114 bytes in length if the public key is 57 bytes in length, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(issuedVc);\n const proofBytes = bs58Decode({id: credential.proof.proofValue});\n const randomBytes = new Uint8Array(32).map(\n () => Math.floor(Math.random() * 255));\n credential.proof.proofValue = bs58Encode(\n new Uint8Array([...proofBytes, ...randomBytes]));\n await verificationFail({credential, verifier});\n }", + "title": "(created) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset.", + "body": "async function() {\n this.test.link = 'https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=be%20a%20string.-,created,-The%20date%20and';\n await verificationFail({\n credential: credentials.clone('noOffsetCreated'),\n verifier\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -25603,32 +25177,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "Tvu2UupzAWy4w3PokBbNu", + "parent": "m-95LkeEjgnUOl8RA2_qH", "ctx": null, - "_testId": "urn:uuid:5c850f58-ea32-4f1e-812c-cc00d0ebdf4c", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:fdc330d6-c64b-4c1c-adf3-58267696b1c2", "cell": { - "columnId": "SpruceID", - "rowId": "If the \"proofValue\" field, when decoded to raw bytes, is not 64 bytes in length if the associated public key is 32 bytes in length, or 114 bytes in length if the public key is 57 bytes in length, an error MUST be raised." + "columnId": "Danube Tech", + "rowId": "(created) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." }, + "_events": {}, + "_eventsCount": 1, + "link": "https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=be%20a%20string.-,created,-The%20date%20and", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 45038, + "_idleStart": 27064, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 29, + "duration": 651, "state": "passed", - "speed": "fast" + "speed": "slow" }, { "type": "test", - "title": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(incorrectCannonization);\n await verificationFail({credential, verifier});\n }", + "title": "(created) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset.", + "body": "async function() {\n this.test.link = 'https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=be%20a%20string.-,created,-The%20date%20and';\n await verificationFail({\n credential: credentials.clone('noOffsetCreated'),\n verifier\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -25638,32 +25213,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "Tvu2UupzAWy4w3PokBbNu", + "parent": "vjCbcL73Y3Hj-3-3Vt2xr", "ctx": null, - "_testId": "urn:uuid:f20c3830-5b7a-4cd1-8fc5-f9b9e55a92c2", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:58a72898-87f0-463c-8d5d-33f0e37460da", "cell": { - "columnId": "SpruceID", - "rowId": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised." + "columnId": "Digital Bazaar", + "rowId": "(created) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." }, + "_events": {}, + "_eventsCount": 1, + "link": "https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=be%20a%20string.-,created,-The%20date%20and", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 45067, + "_idleStart": 29806, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 31, + "duration": 43, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "If a canonicalization data hashing algorithm SHA-2-256 is used, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(incorrectHash);\n await verificationFail({credential, verifier});\n }", + "title": "(created) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset.", + "body": "async function() {\n this.test.link = 'https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=be%20a%20string.-,created,-The%20date%20and';\n await verificationFail({\n credential: credentials.clone('noOffsetCreated'),\n verifier\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -25673,55 +25249,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "Tvu2UupzAWy4w3PokBbNu", + "parent": "kI_ZSoLzqZSvNBsn3jzIQ", "ctx": null, - "_testId": "urn:uuid:ac9e9997-bb7b-44af-9d8a-a5db20e8e901", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:ddf1ff43-a0ff-4bd6-b644-46da7752ca0a", "cell": { - "columnId": "SpruceID", - "rowId": "If a canonicalization data hashing algorithm SHA-2-256 is used, an error MUST be raised." + "columnId": "EWF", + "rowId": "(created) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." }, + "_events": {}, + "_eventsCount": 1, + "link": "https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=be%20a%20string.-,created,-The%20date%20and", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 45099, + "_idleStart": 31911, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 25, + "duration": 90, "state": "passed", - "speed": "fast" - } - ], - "root": false, - "pending": false, - "_retries": -1, - "_beforeEach": [], - "_beforeAll": [], - "_afterEach": [], - "_afterAll": [], - "_timeout": 15000, - "_slow": 75, - "_bail": false, - "_onlyTests": [], - "_onlySuites": [], - "delayed": false, - "parent": "HTq7ohaZjhloJmRguAciz", - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "_testId": "urn:uuid:38eab88f-44b8-4262-a9db-8a13715ce48e" - }, - { - "title": "Trinsic", - "ctx": null, - "suites": [], - "tests": [ + "speed": "slow" + }, { "type": "test", - "title": "MUST verify a valid VC with an Ed25519Signature2020 proof", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(issuedVc);\n await verificationSuccess({credential, verifier});\n }", + "title": "(created) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset.", + "body": "async function() {\n this.test.link = 'https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=be%20a%20string.-,created,-The%20date%20and';\n await verificationFail({\n credential: credentials.clone('noOffsetCreated'),\n verifier\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -25731,32 +25285,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "-MFVokgttZe8A13luhHK0", + "parent": "4tSBZN6UnobQjWlMYrZJM", "ctx": null, - "_testId": "urn:uuid:0c8cca76-c9fc-4952-ab70-8623c67130e5", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:f5eeb53f-2fea-4baa-af23-52c7bf2008ee", "cell": { - "columnId": "Trinsic", - "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" + "columnId": "LearnCard", + "rowId": "(created) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." }, + "_events": {}, + "_eventsCount": 1, + "link": "https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=be%20a%20string.-,created,-The%20date%20and", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 45124, + "_idleStart": 42151, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 1097, + "duration": 70, "state": "passed", - "speed": "slow" + "speed": "medium" }, { "type": "test", - "title": "If the \"proofValue\" field, when decoded to raw bytes, is not 64 bytes in length if the associated public key is 32 bytes in length, or 114 bytes in length if the public key is 57 bytes in length, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(issuedVc);\n const proofBytes = bs58Decode({id: credential.proof.proofValue});\n const randomBytes = new Uint8Array(32).map(\n () => Math.floor(Math.random() * 255));\n credential.proof.proofValue = bs58Encode(\n new Uint8Array([...proofBytes, ...randomBytes]));\n await verificationFail({credential, verifier});\n }", + "title": "(created) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset.", + "body": "async function() {\n this.test.link = 'https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=be%20a%20string.-,created,-The%20date%20and';\n await verificationFail({\n credential: credentials.clone('noOffsetCreated'),\n verifier\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -25766,32 +25321,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "-MFVokgttZe8A13luhHK0", + "parent": "eS-Sz740TQReObqQ_sP03", "ctx": null, - "_testId": "urn:uuid:4559fbd0-efde-4271-af1f-ff822cb5ea98", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:bc86a7fb-17f6-48c4-a0e0-2c1deb2fb228", "cell": { - "columnId": "Trinsic", - "rowId": "If the \"proofValue\" field, when decoded to raw bytes, is not 64 bytes in length if the associated public key is 32 bytes in length, or 114 bytes in length if the public key is 57 bytes in length, an error MUST be raised." + "columnId": "OpSecId", + "rowId": "(created) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." }, + "_events": {}, + "_eventsCount": 1, + "link": "https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=be%20a%20string.-,created,-The%20date%20and", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 46221, + "_idleStart": 42895, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 351, + "duration": 40, "state": "passed", - "speed": "slow" + "speed": "medium" }, { "type": "test", - "title": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(incorrectCannonization);\n await verificationFail({credential, verifier});\n }", + "title": "(created) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset.", + "body": "async function() {\n this.test.link = 'https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=be%20a%20string.-,created,-The%20date%20and';\n await verificationFail({\n credential: credentials.clone('noOffsetCreated'),\n verifier\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -25801,32 +25357,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "-MFVokgttZe8A13luhHK0", + "parent": "WvyzRIP6TnxLKp9PEVOWp", "ctx": null, - "_testId": "urn:uuid:b80fa2fd-4c23-43bd-b84d-0cbae1cef241", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:8f093c01-ac08-4d15-a7cc-b0b68e9260ee", "cell": { - "columnId": "Trinsic", - "rowId": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised." + "columnId": "SpruceID", + "rowId": "(created) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." }, + "_events": {}, + "_eventsCount": 1, + "link": "https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=be%20a%20string.-,created,-The%20date%20and", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 46572, + "_idleStart": 43420, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 33, + "duration": 17, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "If a canonicalization data hashing algorithm SHA-2-256 is used, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(incorrectHash);\n await verificationFail({credential, verifier});\n }", + "title": "(created) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset.", + "body": "async function() {\n this.test.link = 'https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=be%20a%20string.-,created,-The%20date%20and';\n await verificationFail({\n credential: credentials.clone('noOffsetCreated'),\n verifier\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -25836,85 +25393,39 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "-MFVokgttZe8A13luhHK0", + "parent": "oxQe-kP64Nqi6XD181EqS", "ctx": null, - "_testId": "urn:uuid:897e2253-6dc7-4cde-b18c-d6337b1cd4da", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:3ea983ed-00f4-4eca-bdbb-b78efbd04d10", "cell": { "columnId": "Trinsic", - "rowId": "If a canonicalization data hashing algorithm SHA-2-256 is used, an error MUST be raised." + "rowId": "(created) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." }, + "_events": {}, + "_eventsCount": 1, + "link": "https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=be%20a%20string.-,created,-The%20date%20and", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 46605, + "_idleStart": 44303, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 39, + "duration": 44, "state": "passed", "speed": "medium" } - ], - "root": false, - "pending": false, - "_retries": -1, - "_beforeEach": [], - "_beforeAll": [], - "_afterEach": [], - "_afterAll": [], - "_timeout": 15000, - "_slow": 75, - "_bail": false, - "_onlyTests": [], - "_onlySuites": [], - "delayed": false, - "parent": "HTq7ohaZjhloJmRguAciz", - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "_testId": "urn:uuid:7ba642e9-c301-4890-bb8d-e778c2b3a4e6" - } - ], - "root": false, - "pending": false, - "_retries": -1, - "_beforeEach": [], - "_beforeAll": [], - "_afterEach": [], - "_afterAll": [], - "_timeout": 15000, - "_slow": 75, - "_bail": false, - "_onlyTests": [], - "_onlySuites": [], - "delayed": false, - "parent": "16Ju9Vz7aZ4mZFgY7ltoK", - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "matrix": true, - "report": true, - "rowLabel": "Test Name", - "columnLabel": "Verifier", - "_testId": "urn:uuid:477775f1-eb06-42b9-94c6-02d0d4819fe3", - "columns": [ - "apicatalog.com", - "Danube Tech", - "Digital Bazaar", - "EWF", - "LearnCard", - "OpSecId", - "SpruceID", - "Trinsic" - ], - "rows": [ + ] + }, { - "id": "MUST verify a valid VC with an Ed25519Signature2020 proof", + "id": "(expires) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset.", + "link": "https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=interpreted%20as%20UTC.-,expires,-The%20expires%20property", "cells": [ { "type": "test", - "title": "MUST verify a valid VC with an Ed25519Signature2020 proof", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(issuedVc);\n await verificationSuccess({credential, verifier});\n }", + "title": "(expires) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset.", + "body": "async function() {\n this.test.link = 'https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=interpreted%20as%20UTC.-,expires,-The%20expires%20property';\n await verificationFail({\n credential: credentials.clone('noOffsetExpires'),\n verifier\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -25924,32 +25435,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "zN_lLqY6ZBjPIBkSvoGU5", + "parent": "4lbuxdf6TSMBdUCatK9o7", "ctx": null, - "_testId": "urn:uuid:eb5910dc-9087-4262-8c77-b6d08541c1d3", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:cb45aec3-228d-4adc-b530-f6cce7106e3c", "cell": { "columnId": "apicatalog.com", - "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" + "rowId": "(expires) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." }, + "_events": {}, + "_eventsCount": 1, + "link": "https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=interpreted%20as%20UTC.-,expires,-The%20expires%20property", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 41139, + "_idleStart": 19125, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 85, + "duration": 42, "state": "passed", - "speed": "slow" + "speed": "medium" }, { "type": "test", - "title": "MUST verify a valid VC with an Ed25519Signature2020 proof", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(issuedVc);\n await verificationSuccess({credential, verifier});\n }", + "title": "(expires) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset.", + "body": "async function() {\n this.test.link = 'https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=interpreted%20as%20UTC.-,expires,-The%20expires%20property';\n await verificationFail({\n credential: credentials.clone('noOffsetExpires'),\n verifier\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -25959,32 +25471,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "xuxVV5EaKv0fm5LtACVfw", + "parent": "m-95LkeEjgnUOl8RA2_qH", "ctx": null, - "_testId": "urn:uuid:769fcc82-2816-4fe9-9167-c0e8cbb044ff", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:a254b769-8c1c-4ea6-9899-38e374be2f0e", "cell": { "columnId": "Danube Tech", - "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" + "rowId": "(expires) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." }, + "_events": {}, + "_eventsCount": 1, + "link": "https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=interpreted%20as%20UTC.-,expires,-The%20expires%20property", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 41414, + "_idleStart": 27715, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 653, + "duration": 693, "state": "passed", "speed": "slow" }, { "type": "test", - "title": "MUST verify a valid VC with an Ed25519Signature2020 proof", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(issuedVc);\n await verificationSuccess({credential, verifier});\n }", + "title": "(expires) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset.", + "body": "async function() {\n this.test.link = 'https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=interpreted%20as%20UTC.-,expires,-The%20expires%20property';\n await verificationFail({\n credential: credentials.clone('noOffsetExpires'),\n verifier\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -25994,32 +25507,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "nKdPR_uc1_pkMnT_UQ9vk", + "parent": "vjCbcL73Y3Hj-3-3Vt2xr", "ctx": null, - "_testId": "urn:uuid:8e64c9d8-ab69-47f5-b54b-6dcd034cdcb1", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:6692c742-77ff-4d9c-8e16-8c0a0d92c99b", "cell": { "columnId": "Digital Bazaar", - "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" + "rowId": "(expires) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." }, + "_events": {}, + "_eventsCount": 1, + "link": "https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=interpreted%20as%20UTC.-,expires,-The%20expires%20property", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 43391, + "_idleStart": 29850, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 232, + "duration": 49, "state": "passed", - "speed": "slow" + "speed": "medium" }, { "type": "test", - "title": "MUST verify a valid VC with an Ed25519Signature2020 proof", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(issuedVc);\n await verificationSuccess({credential, verifier});\n }", + "title": "(expires) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset.", + "body": "async function() {\n this.test.link = 'https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=interpreted%20as%20UTC.-,expires,-The%20expires%20property';\n await verificationFail({\n credential: credentials.clone('noOffsetExpires'),\n verifier\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -26029,32 +25543,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "9pb6wYJW19zUMUkHQswKs", + "parent": "kI_ZSoLzqZSvNBsn3jzIQ", "ctx": null, - "_testId": "urn:uuid:cd2ed9b8-3d8f-4e40-a9d9-69ac75765b49", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:31de5196-139b-404f-b9f6-e045ea984c63", "cell": { "columnId": "EWF", - "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" + "rowId": "(expires) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." }, + "_events": {}, + "_eventsCount": 1, + "link": "https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=interpreted%20as%20UTC.-,expires,-The%20expires%20property", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 43780, + "_idleStart": 32001, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 391, + "duration": 93, "state": "passed", "speed": "slow" }, { "type": "test", - "title": "MUST verify a valid VC with an Ed25519Signature2020 proof", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(issuedVc);\n await verificationSuccess({credential, verifier});\n }", + "title": "(expires) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset.", + "body": "async function() {\n this.test.link = 'https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=interpreted%20as%20UTC.-,expires,-The%20expires%20property';\n await verificationFail({\n credential: credentials.clone('noOffsetExpires'),\n verifier\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -26064,32 +25579,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "RLtTWikvnR8raSzAg_hFM", + "parent": "4tSBZN6UnobQjWlMYrZJM", "ctx": null, - "_testId": "urn:uuid:593c29a3-5aa5-4132-b674-371ada3631b2", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:34f8cc7b-99aa-488c-bf5c-72cec17373aa", "cell": { "columnId": "LearnCard", - "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" + "rowId": "(expires) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." }, + "_events": {}, + "_eventsCount": 1, + "link": "https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=interpreted%20as%20UTC.-,expires,-The%20expires%20property", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 44456, + "_idleStart": 42222, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 101, + "duration": 80, "state": "passed", "speed": "slow" }, { "type": "test", - "title": "MUST verify a valid VC with an Ed25519Signature2020 proof", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(issuedVc);\n await verificationSuccess({credential, verifier});\n }", + "title": "(expires) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset.", + "body": "async function() {\n this.test.link = 'https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=interpreted%20as%20UTC.-,expires,-The%20expires%20property';\n await verificationFail({\n credential: credentials.clone('noOffsetExpires'),\n verifier\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -26099,32 +25615,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "Q5th1j6xY0y1B5inCQ4z1", + "parent": "eS-Sz740TQReObqQ_sP03", "ctx": null, - "_testId": "urn:uuid:bedf11a2-f863-4489-a4e9-d8238b5b352d", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:5955d36f-41f1-4a19-999e-268a0ebf0f31", "cell": { "columnId": "OpSecId", - "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" + "rowId": "(expires) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." }, + "_events": {}, + "_eventsCount": 1, + "link": "https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=interpreted%20as%20UTC.-,expires,-The%20expires%20property", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 44748, + "_idleStart": 42936, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 142, + "duration": 42, "state": "passed", - "speed": "slow" + "speed": "medium" }, { "type": "test", - "title": "MUST verify a valid VC with an Ed25519Signature2020 proof", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(issuedVc);\n await verificationSuccess({credential, verifier});\n }", + "title": "(expires) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset.", + "body": "async function() {\n this.test.link = 'https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=interpreted%20as%20UTC.-,expires,-The%20expires%20property';\n await verificationFail({\n credential: credentials.clone('noOffsetExpires'),\n verifier\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -26134,32 +25651,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "Tvu2UupzAWy4w3PokBbNu", + "parent": "WvyzRIP6TnxLKp9PEVOWp", "ctx": null, - "_testId": "urn:uuid:e4b0080c-65cf-447c-86c2-de7af2e0404f", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:5e0902ea-ac93-4d5e-a0e0-c61dbe0040d6", "cell": { "columnId": "SpruceID", - "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" + "rowId": "(expires) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." }, + "_events": {}, + "_eventsCount": 1, + "link": "https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=interpreted%20as%20UTC.-,expires,-The%20expires%20property", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 44983, + "_idleStart": 43438, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 55, + "duration": 17, "state": "passed", - "speed": "medium" + "speed": "fast" }, { "type": "test", - "title": "MUST verify a valid VC with an Ed25519Signature2020 proof", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(issuedVc);\n await verificationSuccess({credential, verifier});\n }", + "title": "(expires) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset.", + "body": "async function() {\n this.test.link = 'https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=interpreted%20as%20UTC.-,expires,-The%20expires%20property';\n await verificationFail({\n credential: credentials.clone('noOffsetExpires'),\n verifier\n });\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -26169,37 +25687,46 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "-MFVokgttZe8A13luhHK0", + "parent": "oxQe-kP64Nqi6XD181EqS", "ctx": null, - "_testId": "urn:uuid:0c8cca76-c9fc-4952-ab70-8623c67130e5", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:c5312da1-1679-4aa2-be7c-34ab42fc1d8a", "cell": { "columnId": "Trinsic", - "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" + "rowId": "(expires) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." }, + "_events": {}, + "_eventsCount": 1, + "link": "https://www.w3.org/TR/vc-data-integrity/#proofs:~:text=interpreted%20as%20UTC.-,expires,-The%20expires%20property", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 45124, + "_idleStart": 44348, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 1097, + "duration": 37, "state": "passed", - "speed": "slow" + "speed": "fast" } ] - }, + } + ] + }, + { + "title": "Ed25519Signature2020 (verifier)", + "ctx": null, + "suites": [ { - "id": "If the \"proofValue\" field, when decoded to raw bytes, is not 64 bytes in length if the associated public key is 32 bytes in length, or 114 bytes in length if the public key is 57 bytes in length, an error MUST be raised.", - "cells": [ + "title": "apicatalog.com", + "ctx": null, + "suites": [], + "tests": [ { "type": "test", - "title": "If the \"proofValue\" field, when decoded to raw bytes, is not 64 bytes in length if the associated public key is 32 bytes in length, or 114 bytes in length if the public key is 57 bytes in length, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(issuedVc);\n const proofBytes = bs58Decode({id: credential.proof.proofValue});\n const randomBytes = new Uint8Array(32).map(\n () => Math.floor(Math.random() * 255));\n credential.proof.proofValue = bs58Encode(\n new Uint8Array([...proofBytes, ...randomBytes]));\n await verificationFail({credential, verifier});\n }", + "title": "MUST verify a valid VC with an Ed25519Signature2020 proof", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(issuedVc);\n await verificationSuccess({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -26209,27 +25736,27 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "zN_lLqY6ZBjPIBkSvoGU5", + "parent": "SYk__RoIcNevhL9oBlZRQ", "ctx": null, - "_testId": "urn:uuid:e487b8bb-bfdd-4602-8236-cf0c0f11b5d1", + "_testId": "urn:uuid:61bdc118-0659-4728-a3b2-0274374e35e4", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "apicatalog.com", - "rowId": "If the \"proofValue\" field, when decoded to raw bytes, is not 64 bytes in length if the associated public key is 32 bytes in length, or 114 bytes in length if the public key is 57 bytes in length, an error MUST be raised." + "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 41225, + "_idleStart": 44385, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 59, + "duration": 99, "state": "passed", - "speed": "medium" + "speed": "slow" }, { "type": "test", @@ -26244,32 +25771,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "xuxVV5EaKv0fm5LtACVfw", + "parent": "SYk__RoIcNevhL9oBlZRQ", "ctx": null, - "_testId": "urn:uuid:ca8c9f2e-c3e3-4d9e-a99f-90f71e21bd9b", + "_testId": "urn:uuid:b663b0c6-fb25-4a5c-bba7-b37392ea4749", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "Danube Tech", + "columnId": "apicatalog.com", "rowId": "If the \"proofValue\" field, when decoded to raw bytes, is not 64 bytes in length if the associated public key is 32 bytes in length, or 114 bytes in length if the public key is 57 bytes in length, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 42068, + "_idleStart": 44486, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 444, + "duration": 51, "state": "passed", - "speed": "slow" + "speed": "medium" }, { "type": "test", - "title": "If the \"proofValue\" field, when decoded to raw bytes, is not 64 bytes in length if the associated public key is 32 bytes in length, or 114 bytes in length if the public key is 57 bytes in length, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(issuedVc);\n const proofBytes = bs58Decode({id: credential.proof.proofValue});\n const randomBytes = new Uint8Array(32).map(\n () => Math.floor(Math.random() * 255));\n credential.proof.proofValue = bs58Encode(\n new Uint8Array([...proofBytes, ...randomBytes]));\n await verificationFail({credential, verifier});\n }", + "title": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(incorrectCannonization);\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -26279,32 +25806,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "nKdPR_uc1_pkMnT_UQ9vk", + "parent": "SYk__RoIcNevhL9oBlZRQ", "ctx": null, - "_testId": "urn:uuid:18b02758-3d77-4f11-a31e-4a5f9347945a", + "_testId": "urn:uuid:e78c2841-61d0-4a39-b3fd-de37269e5335", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "Digital Bazaar", - "rowId": "If the \"proofValue\" field, when decoded to raw bytes, is not 64 bytes in length if the associated public key is 32 bytes in length, or 114 bytes in length if the public key is 57 bytes in length, an error MUST be raised." + "columnId": "apicatalog.com", + "rowId": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 43622, + "_idleStart": 44537, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 51, + "duration": 52, "state": "passed", "speed": "medium" }, { "type": "test", - "title": "If the \"proofValue\" field, when decoded to raw bytes, is not 64 bytes in length if the associated public key is 32 bytes in length, or 114 bytes in length if the public key is 57 bytes in length, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(issuedVc);\n const proofBytes = bs58Decode({id: credential.proof.proofValue});\n const randomBytes = new Uint8Array(32).map(\n () => Math.floor(Math.random() * 255));\n credential.proof.proofValue = bs58Encode(\n new Uint8Array([...proofBytes, ...randomBytes]));\n await verificationFail({credential, verifier});\n }", + "title": "If a canonicalization data hashing algorithm SHA-2-256 is used, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(incorrectHash);\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -26314,32 +25841,55 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "9pb6wYJW19zUMUkHQswKs", + "parent": "SYk__RoIcNevhL9oBlZRQ", "ctx": null, - "_testId": "urn:uuid:45684fe3-92df-41d1-b7d0-8f28778ded47", + "_testId": "urn:uuid:42f63759-af9f-4b83-a7bc-e7ad929c9709", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "EWF", - "rowId": "If the \"proofValue\" field, when decoded to raw bytes, is not 64 bytes in length if the associated public key is 32 bytes in length, or 114 bytes in length if the public key is 57 bytes in length, an error MUST be raised." + "columnId": "apicatalog.com", + "rowId": "If a canonicalization data hashing algorithm SHA-2-256 is used, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 44171, + "_idleStart": 44589, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 97, + "duration": 52, "state": "passed", - "speed": "slow" - }, + "speed": "medium" + } + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [], + "_beforeAll": [], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "VXdW2NB5XqDJjeMQOCVtK", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "_testId": "urn:uuid:f0669e67-2d0f-4fa9-9f88-d7ca444b8318" + }, + { + "title": "Danube Tech", + "ctx": null, + "suites": [], + "tests": [ { "type": "test", - "title": "If the \"proofValue\" field, when decoded to raw bytes, is not 64 bytes in length if the associated public key is 32 bytes in length, or 114 bytes in length if the public key is 57 bytes in length, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(issuedVc);\n const proofBytes = bs58Decode({id: credential.proof.proofValue});\n const randomBytes = new Uint8Array(32).map(\n () => Math.floor(Math.random() * 255));\n credential.proof.proofValue = bs58Encode(\n new Uint8Array([...proofBytes, ...randomBytes]));\n await verificationFail({credential, verifier});\n }", + "title": "MUST verify a valid VC with an Ed25519Signature2020 proof", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(issuedVc);\n await verificationSuccess({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -26349,27 +25899,27 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "RLtTWikvnR8raSzAg_hFM", + "parent": "NQ-Cpmwho3QjhxjyGQ0zo", "ctx": null, - "_testId": "urn:uuid:310560d4-a9b4-43fc-98d2-7d74bfbe6f9b", + "_testId": "urn:uuid:c361e790-ea02-4fea-9960-03a57ca32364", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "LearnCard", - "rowId": "If the \"proofValue\" field, when decoded to raw bytes, is not 64 bytes in length if the associated public key is 32 bytes in length, or 114 bytes in length if the public key is 57 bytes in length, an error MUST be raised." + "columnId": "Danube Tech", + "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 44558, + "_idleStart": 44641, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 65, + "duration": 918, "state": "passed", - "speed": "medium" + "speed": "slow" }, { "type": "test", @@ -26384,39 +25934,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "Q5th1j6xY0y1B5inCQ4z1", + "parent": "NQ-Cpmwho3QjhxjyGQ0zo", "ctx": null, - "_testId": "urn:uuid:444f730b-4ffa-4587-afed-481d90f17c2f", + "_testId": "urn:uuid:0f0c5f95-9517-46cb-a54e-87fb4013b21f", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "OpSecId", + "columnId": "Danube Tech", "rowId": "If the \"proofValue\" field, when decoded to raw bytes, is not 64 bytes in length if the associated public key is 32 bytes in length, or 114 bytes in length if the public key is 57 bytes in length, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 44891, + "_idleStart": 45560, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 30, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'content-length': '638', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 25 Aug 2024 05:02:18 GMT', server: 'Python/3.12 aiohttp/3.10.5', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist", - "showDiff": false, - "actual": {}, - "operator": "notStrictEqual", - "stack": "AssertionError: Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'content-length': '638', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 25 Aug 2024 05:02:18 GMT', server: 'Python/3.12 aiohttp/3.10.5', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at verificationFail (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/assertions.js:49:14)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js:73:11)" - } + "duration": 432, + "state": "passed", + "speed": "slow" }, { "type": "test", - "title": "If the \"proofValue\" field, when decoded to raw bytes, is not 64 bytes in length if the associated public key is 32 bytes in length, or 114 bytes in length if the public key is 57 bytes in length, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(issuedVc);\n const proofBytes = bs58Decode({id: credential.proof.proofValue});\n const randomBytes = new Uint8Array(32).map(\n () => Math.floor(Math.random() * 255));\n credential.proof.proofValue = bs58Encode(\n new Uint8Array([...proofBytes, ...randomBytes]));\n await verificationFail({credential, verifier});\n }", + "title": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(incorrectCannonization);\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -26426,32 +25969,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "Tvu2UupzAWy4w3PokBbNu", + "parent": "NQ-Cpmwho3QjhxjyGQ0zo", "ctx": null, - "_testId": "urn:uuid:5c850f58-ea32-4f1e-812c-cc00d0ebdf4c", + "_testId": "urn:uuid:7322c48f-6783-439d-bcad-884e52d2e2d2", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "SpruceID", - "rowId": "If the \"proofValue\" field, when decoded to raw bytes, is not 64 bytes in length if the associated public key is 32 bytes in length, or 114 bytes in length if the public key is 57 bytes in length, an error MUST be raised." + "columnId": "Danube Tech", + "rowId": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 45038, + "_idleStart": 45993, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 29, + "duration": 428, "state": "passed", - "speed": "fast" + "speed": "slow" }, { "type": "test", - "title": "If the \"proofValue\" field, when decoded to raw bytes, is not 64 bytes in length if the associated public key is 32 bytes in length, or 114 bytes in length if the public key is 57 bytes in length, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(issuedVc);\n const proofBytes = bs58Decode({id: credential.proof.proofValue});\n const randomBytes = new Uint8Array(32).map(\n () => Math.floor(Math.random() * 255));\n credential.proof.proofValue = bs58Encode(\n new Uint8Array([...proofBytes, ...randomBytes]));\n await verificationFail({credential, verifier});\n }", + "title": "If a canonicalization data hashing algorithm SHA-2-256 is used, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(incorrectHash);\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -26461,37 +26004,55 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "-MFVokgttZe8A13luhHK0", + "parent": "NQ-Cpmwho3QjhxjyGQ0zo", "ctx": null, - "_testId": "urn:uuid:4559fbd0-efde-4271-af1f-ff822cb5ea98", + "_testId": "urn:uuid:bf54cbd4-a70c-49b6-bc60-dce8e6bb54b6", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "Trinsic", - "rowId": "If the \"proofValue\" field, when decoded to raw bytes, is not 64 bytes in length if the associated public key is 32 bytes in length, or 114 bytes in length if the public key is 57 bytes in length, an error MUST be raised." + "columnId": "Danube Tech", + "rowId": "If a canonicalization data hashing algorithm SHA-2-256 is used, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 46221, + "_idleStart": 46422, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 351, + "duration": 453, "state": "passed", "speed": "slow" } - ] + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [], + "_beforeAll": [], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "VXdW2NB5XqDJjeMQOCVtK", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "_testId": "urn:uuid:c5033097-2cbe-417f-a6d5-a0bd87eb1f80" }, { - "id": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised.", - "cells": [ + "title": "Digital Bazaar", + "ctx": null, + "suites": [], + "tests": [ { "type": "test", - "title": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(incorrectCannonization);\n await verificationFail({credential, verifier});\n }", + "title": "MUST verify a valid VC with an Ed25519Signature2020 proof", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(issuedVc);\n await verificationSuccess({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -26501,32 +26062,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "zN_lLqY6ZBjPIBkSvoGU5", + "parent": "5DqiEVwX6wS_Z2SluWABU", "ctx": null, - "_testId": "urn:uuid:703ece54-6e70-4825-8b2f-0b35d1745e50", + "_testId": "urn:uuid:4f6607eb-6b17-4b26-953c-b4f0932fa8d2", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "apicatalog.com", - "rowId": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised." + "columnId": "Digital Bazaar", + "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 41284, + "_idleStart": 46876, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 58, + "duration": 235, "state": "passed", - "speed": "medium" + "speed": "slow" }, { "type": "test", - "title": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(incorrectCannonization);\n await verificationFail({credential, verifier});\n }", + "title": "If the \"proofValue\" field, when decoded to raw bytes, is not 64 bytes in length if the associated public key is 32 bytes in length, or 114 bytes in length if the public key is 57 bytes in length, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(issuedVc);\n const proofBytes = bs58Decode({id: credential.proof.proofValue});\n const randomBytes = new Uint8Array(32).map(\n () => Math.floor(Math.random() * 255));\n credential.proof.proofValue = bs58Encode(\n new Uint8Array([...proofBytes, ...randomBytes]));\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -26536,25 +26097,25 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "xuxVV5EaKv0fm5LtACVfw", + "parent": "5DqiEVwX6wS_Z2SluWABU", "ctx": null, - "_testId": "urn:uuid:6927a447-4bb9-45fe-a648-c3222c401eb9", + "_testId": "urn:uuid:a8dc0dd0-07b2-45d3-af39-081180499351", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "Danube Tech", - "rowId": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised." + "columnId": "Digital Bazaar", + "rowId": "If the \"proofValue\" field, when decoded to raw bytes, is not 64 bytes in length if the associated public key is 32 bytes in length, or 114 bytes in length if the public key is 57 bytes in length, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 42511, + "_idleStart": 47111, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 438, + "duration": 115, "state": "passed", "speed": "slow" }, @@ -26571,9 +26132,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "nKdPR_uc1_pkMnT_UQ9vk", + "parent": "5DqiEVwX6wS_Z2SluWABU", "ctx": null, - "_testId": "urn:uuid:5796de37-9286-4e0a-880b-97ce2a23cf86", + "_testId": "urn:uuid:74a3cd38-b3b7-430f-a398-b6a38b81d484", "_events": {}, "_eventsCount": 1, "cell": { @@ -26584,19 +26145,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 43674, + "_idleStart": 47226, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 44, + "duration": 52, "state": "passed", "speed": "medium" }, { "type": "test", - "title": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(incorrectCannonization);\n await verificationFail({credential, verifier});\n }", + "title": "If a canonicalization data hashing algorithm SHA-2-256 is used, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(incorrectHash);\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -26606,32 +26167,55 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "9pb6wYJW19zUMUkHQswKs", + "parent": "5DqiEVwX6wS_Z2SluWABU", "ctx": null, - "_testId": "urn:uuid:8a503531-1022-4e14-9b71-85beea486df5", + "_testId": "urn:uuid:9247647c-abc1-4072-8bf1-2eea144aeae8", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "EWF", - "rowId": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised." + "columnId": "Digital Bazaar", + "rowId": "If a canonicalization data hashing algorithm SHA-2-256 is used, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 44268, + "_idleStart": 47277, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 94, + "duration": 49, "state": "passed", - "speed": "slow" - }, + "speed": "medium" + } + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [], + "_beforeAll": [], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "VXdW2NB5XqDJjeMQOCVtK", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "_testId": "urn:uuid:c8bf5219-0953-46c9-848c-22a8a9e9bdc2" + }, + { + "title": "EWF", + "ctx": null, + "suites": [], + "tests": [ { "type": "test", - "title": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(incorrectCannonization);\n await verificationFail({credential, verifier});\n }", + "title": "MUST verify a valid VC with an Ed25519Signature2020 proof", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(issuedVc);\n await verificationSuccess({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -26641,32 +26225,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "RLtTWikvnR8raSzAg_hFM", + "parent": "i0xuW3XmFHBfs6bhK6_IC", "ctx": null, - "_testId": "urn:uuid:18c68c5a-6be3-4717-a03b-96715129d9d0", + "_testId": "urn:uuid:7609453c-0c6c-4301-a4e8-6d4e3b30d2fc", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "LearnCard", - "rowId": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised." + "columnId": "EWF", + "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 44623, + "_idleStart": 47326, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 65, + "duration": 378, "state": "passed", - "speed": "medium" + "speed": "slow" }, { "type": "test", - "title": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(incorrectCannonization);\n await verificationFail({credential, verifier});\n }", + "title": "If the \"proofValue\" field, when decoded to raw bytes, is not 64 bytes in length if the associated public key is 32 bytes in length, or 114 bytes in length if the public key is 57 bytes in length, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(issuedVc);\n const proofBytes = bs58Decode({id: credential.proof.proofValue});\n const randomBytes = new Uint8Array(32).map(\n () => Math.floor(Math.random() * 255));\n credential.proof.proofValue = bs58Encode(\n new Uint8Array([...proofBytes, ...randomBytes]));\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -26676,34 +26260,27 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "Q5th1j6xY0y1B5inCQ4z1", + "parent": "i0xuW3XmFHBfs6bhK6_IC", "ctx": null, - "_testId": "urn:uuid:1586c4e4-4533-4f62-8330-2bfe3ca15774", + "_testId": "urn:uuid:ff1a02e8-4d48-4b1b-8fc4-8e30a04dd836", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "OpSecId", - "rowId": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised." + "columnId": "EWF", + "rowId": "If the \"proofValue\" field, when decoded to raw bytes, is not 64 bytes in length if the associated public key is 32 bytes in length, or 114 bytes in length if the public key is 57 bytes in length, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 44921, + "_idleStart": 47705, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 29, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'content-length': '638', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 25 Aug 2024 05:02:18 GMT', server: 'Python/3.12 aiohttp/3.10.5', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist", - "showDiff": false, - "actual": {}, - "operator": "notStrictEqual", - "stack": "AssertionError: Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'content-length': '638', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 25 Aug 2024 05:02:18 GMT', server: 'Python/3.12 aiohttp/3.10.5', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at verificationFail (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/assertions.js:49:14)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js:82:11)" - } + "duration": 101, + "state": "passed", + "speed": "slow" }, { "type": "test", @@ -26718,32 +26295,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "Tvu2UupzAWy4w3PokBbNu", + "parent": "i0xuW3XmFHBfs6bhK6_IC", "ctx": null, - "_testId": "urn:uuid:f20c3830-5b7a-4cd1-8fc5-f9b9e55a92c2", + "_testId": "urn:uuid:117a08bf-ee46-4148-b533-d394dfcf44e8", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "SpruceID", + "columnId": "EWF", "rowId": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 45067, + "_idleStart": 47806, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 31, + "duration": 106, "state": "passed", - "speed": "fast" + "speed": "slow" }, { "type": "test", - "title": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(incorrectCannonization);\n await verificationFail({credential, verifier});\n }", + "title": "If a canonicalization data hashing algorithm SHA-2-256 is used, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(incorrectHash);\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -26753,37 +26330,55 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "-MFVokgttZe8A13luhHK0", + "parent": "i0xuW3XmFHBfs6bhK6_IC", "ctx": null, - "_testId": "urn:uuid:b80fa2fd-4c23-43bd-b84d-0cbae1cef241", + "_testId": "urn:uuid:5463e765-f5fa-4131-b2ff-00b04a635898", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "Trinsic", - "rowId": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised." + "columnId": "EWF", + "rowId": "If a canonicalization data hashing algorithm SHA-2-256 is used, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 46572, + "_idleStart": 47912, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 33, + "duration": 105, "state": "passed", - "speed": "fast" + "speed": "slow" } - ] + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [], + "_beforeAll": [], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "VXdW2NB5XqDJjeMQOCVtK", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "_testId": "urn:uuid:b5b25bf0-2ec6-4277-985f-6ee9649b0d79" }, { - "id": "If a canonicalization data hashing algorithm SHA-2-256 is used, an error MUST be raised.", - "cells": [ + "title": "LearnCard", + "ctx": null, + "suites": [], + "tests": [ { "type": "test", - "title": "If a canonicalization data hashing algorithm SHA-2-256 is used, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(incorrectHash);\n await verificationFail({credential, verifier});\n }", + "title": "MUST verify a valid VC with an Ed25519Signature2020 proof", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(issuedVc);\n await verificationSuccess({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -26793,32 +26388,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "zN_lLqY6ZBjPIBkSvoGU5", + "parent": "jNe7b7VyeLRtboCU_Rv_G", "ctx": null, - "_testId": "urn:uuid:33196940-3ef2-4a22-b0bd-dd6f5a92af31", + "_testId": "urn:uuid:4c8a2049-8783-4948-a7e7-45a47953a248", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "apicatalog.com", - "rowId": "If a canonicalization data hashing algorithm SHA-2-256 is used, an error MUST be raised." + "columnId": "LearnCard", + "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 41342, + "_idleStart": 48017, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 72, + "duration": 101, "state": "passed", - "speed": "medium" + "speed": "slow" }, { "type": "test", - "title": "If a canonicalization data hashing algorithm SHA-2-256 is used, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(incorrectHash);\n await verificationFail({credential, verifier});\n }", + "title": "If the \"proofValue\" field, when decoded to raw bytes, is not 64 bytes in length if the associated public key is 32 bytes in length, or 114 bytes in length if the public key is 57 bytes in length, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(issuedVc);\n const proofBytes = bs58Decode({id: credential.proof.proofValue});\n const randomBytes = new Uint8Array(32).map(\n () => Math.floor(Math.random() * 255));\n credential.proof.proofValue = bs58Encode(\n new Uint8Array([...proofBytes, ...randomBytes]));\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -26828,32 +26423,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "xuxVV5EaKv0fm5LtACVfw", + "parent": "jNe7b7VyeLRtboCU_Rv_G", "ctx": null, - "_testId": "urn:uuid:7588aa96-ba95-4d62-8e33-85141097b032", + "_testId": "urn:uuid:91aa872d-adc7-4920-a66f-f2726131f650", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "Danube Tech", - "rowId": "If a canonicalization data hashing algorithm SHA-2-256 is used, an error MUST be raised." + "columnId": "LearnCard", + "rowId": "If the \"proofValue\" field, when decoded to raw bytes, is not 64 bytes in length if the associated public key is 32 bytes in length, or 114 bytes in length if the public key is 57 bytes in length, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 42950, + "_idleStart": 48119, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 440, + "duration": 66, "state": "passed", - "speed": "slow" + "speed": "medium" }, { "type": "test", - "title": "If a canonicalization data hashing algorithm SHA-2-256 is used, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(incorrectHash);\n await verificationFail({credential, verifier});\n }", + "title": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(incorrectCannonization);\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -26863,25 +26458,25 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "nKdPR_uc1_pkMnT_UQ9vk", + "parent": "jNe7b7VyeLRtboCU_Rv_G", "ctx": null, - "_testId": "urn:uuid:98c73556-cbbd-4beb-b7c4-ad8f7f790596", + "_testId": "urn:uuid:d18ac188-edf5-4cb1-b73d-16ac4e2d1de1", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "Digital Bazaar", - "rowId": "If a canonicalization data hashing algorithm SHA-2-256 is used, an error MUST be raised." + "columnId": "LearnCard", + "rowId": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 43718, + "_idleStart": 48184, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 61, + "duration": 72, "state": "passed", "speed": "medium" }, @@ -26898,32 +26493,55 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "9pb6wYJW19zUMUkHQswKs", + "parent": "jNe7b7VyeLRtboCU_Rv_G", "ctx": null, - "_testId": "urn:uuid:5c81336e-d1ef-44a5-8d8e-48d2af3b49db", + "_testId": "urn:uuid:1535d51b-28df-4370-801f-470fc0736227", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "EWF", + "columnId": "LearnCard", "rowId": "If a canonicalization data hashing algorithm SHA-2-256 is used, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 44362, + "_idleStart": 48257, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 94, + "duration": 81, "state": "passed", "speed": "slow" - }, + } + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [], + "_beforeAll": [], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "VXdW2NB5XqDJjeMQOCVtK", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "_testId": "urn:uuid:6541bafc-49ea-4f1d-b976-e733f1ca563e" + }, + { + "title": "OpSecId", + "ctx": null, + "suites": [], + "tests": [ { "type": "test", - "title": "If a canonicalization data hashing algorithm SHA-2-256 is used, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(incorrectHash);\n await verificationFail({credential, verifier});\n }", + "title": "MUST verify a valid VC with an Ed25519Signature2020 proof", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(issuedVc);\n await verificationSuccess({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -26933,27 +26551,111 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "RLtTWikvnR8raSzAg_hFM", + "parent": "GBtDIvSMqEPlwBidQKbyq", "ctx": null, - "_testId": "urn:uuid:55a825a3-c925-4bba-a7b8-f55d1204b9a0", + "_testId": "urn:uuid:2e1c07c6-743c-4cbf-a3c9-366e753a2145", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "LearnCard", - "rowId": "If a canonicalization data hashing algorithm SHA-2-256 is used, an error MUST be raised." + "columnId": "OpSecId", + "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 44689, + "_idleStart": 48338, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 58, + "duration": 122, "state": "passed", - "speed": "medium" + "speed": "slow" + }, + { + "type": "test", + "title": "If the \"proofValue\" field, when decoded to raw bytes, is not 64 bytes in length if the associated public key is 32 bytes in length, or 114 bytes in length if the public key is 57 bytes in length, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(issuedVc);\n const proofBytes = bs58Decode({id: credential.proof.proofValue});\n const randomBytes = new Uint8Array(32).map(\n () => Math.floor(Math.random() * 255));\n credential.proof.proofValue = bs58Encode(\n new Uint8Array([...proofBytes, ...randomBytes]));\n await verificationFail({credential, verifier});\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "GBtDIvSMqEPlwBidQKbyq", + "ctx": null, + "_testId": "urn:uuid:90ceb68a-2267-47e2-852d-8c9fce2db718", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "OpSecId", + "rowId": "If the \"proofValue\" field, when decoded to raw bytes, is not 64 bytes in length if the associated public key is 32 bytes in length, or 114 bytes in length if the public key is 57 bytes in length, an error MUST be raised." + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 48461, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 38, + "state": "failed", + "err": { + "name": "AssertionError", + "message": "Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'content-length': '638', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 01 Sep 2024 05:02:20 GMT', server: 'Python/3.12 aiohttp/3.10.5', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist", + "showDiff": false, + "actual": {}, + "operator": "notStrictEqual", + "stack": "AssertionError: Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'content-length': '638', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 01 Sep 2024 05:02:20 GMT', server: 'Python/3.12 aiohttp/3.10.5', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at verificationFail (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/assertions.js:49:14)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js:73:11)" + } + }, + { + "type": "test", + "title": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(incorrectCannonization);\n await verificationFail({credential, verifier});\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "GBtDIvSMqEPlwBidQKbyq", + "ctx": null, + "_testId": "urn:uuid:8d494c53-eccc-4d8f-8d7d-e93d2d81aa6b", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "OpSecId", + "rowId": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised." + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 48500, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 34, + "state": "failed", + "err": { + "name": "AssertionError", + "message": "Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'content-length': '638', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 01 Sep 2024 05:02:20 GMT', server: 'Python/3.12 aiohttp/3.10.5', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist", + "showDiff": false, + "actual": {}, + "operator": "notStrictEqual", + "stack": "AssertionError: Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'content-length': '638', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 01 Sep 2024 05:02:20 GMT', server: 'Python/3.12 aiohttp/3.10.5', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at verificationFail (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/assertions.js:49:14)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js:82:11)" + } }, { "type": "test", @@ -26968,9 +26670,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "Q5th1j6xY0y1B5inCQ4z1", + "parent": "GBtDIvSMqEPlwBidQKbyq", "ctx": null, - "_testId": "urn:uuid:98bfe230-7603-4b7a-add3-3172244b9dd8", + "_testId": "urn:uuid:cbe20f64-c4b6-4ce4-96e0-56209a711b39", "_events": {}, "_eventsCount": 1, "cell": { @@ -26981,26 +26683,84 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 44951, + "_idleStart": 48534, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 31, + "duration": 42, "state": "failed", "err": { "name": "AssertionError", - "message": "Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'content-length': '638', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 25 Aug 2024 05:02:18 GMT', server: 'Python/3.12 aiohttp/3.10.5', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist", + "message": "Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'content-length': '638', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 01 Sep 2024 05:02:20 GMT', server: 'Python/3.12 aiohttp/3.10.5', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist", "showDiff": false, "actual": {}, "operator": "notStrictEqual", - "stack": "AssertionError: Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'content-length': '638', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 25 Aug 2024 05:02:18 GMT', server: 'Python/3.12 aiohttp/3.10.5', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at verificationFail (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/assertions.js:49:14)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js:91:11)" + "stack": "AssertionError: Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'content-length': '638', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 01 Sep 2024 05:02:20 GMT', server: 'Python/3.12 aiohttp/3.10.5', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at verificationFail (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/assertions.js:49:14)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js:91:11)" } + } + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [], + "_beforeAll": [], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "VXdW2NB5XqDJjeMQOCVtK", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "_testId": "urn:uuid:c3f24b3b-d0f8-477b-91c4-beaa3d1ed83a" + }, + { + "title": "SpruceID", + "ctx": null, + "suites": [], + "tests": [ + { + "type": "test", + "title": "MUST verify a valid VC with an Ed25519Signature2020 proof", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(issuedVc);\n await verificationSuccess({credential, verifier});\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "RLzBESM9-8OkejA0_Pzy1", + "ctx": null, + "_testId": "urn:uuid:131c859a-016a-49d9-8ba5-02cbb989b987", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "SpruceID", + "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 48576, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 50, + "state": "passed", + "speed": "medium" }, { "type": "test", - "title": "If a canonicalization data hashing algorithm SHA-2-256 is used, an error MUST be raised.", - "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(incorrectHash);\n await verificationFail({credential, verifier});\n }", + "title": "If the \"proofValue\" field, when decoded to raw bytes, is not 64 bytes in length if the associated public key is 32 bytes in length, or 114 bytes in length if the public key is 57 bytes in length, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(issuedVc);\n const proofBytes = bs58Decode({id: credential.proof.proofValue});\n const randomBytes = new Uint8Array(32).map(\n () => Math.floor(Math.random() * 255));\n credential.proof.proofValue = bs58Encode(\n new Uint8Array([...proofBytes, ...randomBytes]));\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -27010,25 +26770,60 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "Tvu2UupzAWy4w3PokBbNu", + "parent": "RLzBESM9-8OkejA0_Pzy1", "ctx": null, - "_testId": "urn:uuid:ac9e9997-bb7b-44af-9d8a-a5db20e8e901", + "_testId": "urn:uuid:31479dd1-aa24-40d6-a665-6804f710d020", "_events": {}, "_eventsCount": 1, "cell": { "columnId": "SpruceID", - "rowId": "If a canonicalization data hashing algorithm SHA-2-256 is used, an error MUST be raised." + "rowId": "If the \"proofValue\" field, when decoded to raw bytes, is not 64 bytes in length if the associated public key is 32 bytes in length, or 114 bytes in length if the public key is 57 bytes in length, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 45099, + "_idleStart": 48626, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 25, + "duration": 26, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(incorrectCannonization);\n await verificationFail({credential, verifier});\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "RLzBESM9-8OkejA0_Pzy1", + "ctx": null, + "_testId": "urn:uuid:7b58ce8a-5e0b-4676-b502-cb2090e13c27", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "SpruceID", + "rowId": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised." + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 48653, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 24, "state": "passed", "speed": "fast" }, @@ -27045,312 +26840,215 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "-MFVokgttZe8A13luhHK0", + "parent": "RLzBESM9-8OkejA0_Pzy1", "ctx": null, - "_testId": "urn:uuid:897e2253-6dc7-4cde-b18c-d6337b1cd4da", + "_testId": "urn:uuid:0dba9400-f87c-4ed8-8b0b-2a92ee659186", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "Trinsic", + "columnId": "SpruceID", "rowId": "If a canonicalization data hashing algorithm SHA-2-256 is used, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 46605, + "_idleStart": 48678, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 39, + "duration": 29, "state": "passed", - "speed": "medium" + "speed": "fast" } - ] - } - ] - }, - { - "title": "Ed25519Signature2020 (interop)", - "ctx": null, - "suites": [], - "root": false, - "pending": false, - "_retries": -1, - "_beforeEach": [], - "_beforeAll": [ - { - "title": "\"before all\" hook in \"Ed25519Signature2020 (interop)\"", - "body": "async function() {\n const credentials = await generateTestData();\n validVc = credentials.get('validVc');\n }", - "async": 0, - "sync": true, + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [], + "_beforeAll": [], + "_afterEach": [], + "_afterAll": [], "_timeout": 15000, "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "type": "hook", - "parent": "rqlqqHnsb0SlY4RsNNNBw", + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "VXdW2NB5XqDJjeMQOCVtK", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "_testId": "urn:uuid:6605d344-cabf-489e-83e3-a7c243e0c678" + }, + { + "title": "Trinsic", "ctx": null, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "originalTitle": "\"before all\" hook", - "_events": {}, - "_eventsCount": 1, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 46645, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 1, - "_error": null - }, - { - "title": "\"before all\" hook in \"Ed25519Signature2020 (interop)\"", - "body": "async function() {\n const issuer = issuers.find(issuer =>\n issuer.tags.has(tag));\n const {settings: {id: issuerId, options}} = issuer;\n const body = {credential: klona(validVc), options};\n body.credential.id = `urn:uuid:${uuidv4()}`;\n body.credential.issuer = issuerId;\n const {data, error} = await issuer.post({json: body});\n issuerError = error;\n issuedVc = data;\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "type": "hook", - "parent": "rqlqqHnsb0SlY4RsNNNBw", - "ctx": null, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "originalTitle": "\"before all\" hook", - "_events": {}, - "_eventsCount": 1, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 46646, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 223, - "_error": null - }, - { - "title": "\"before all\" hook in \"Ed25519Signature2020 (interop)\"", - "body": "async function() {\n const issuer = issuers.find(issuer =>\n issuer.tags.has(tag));\n const {settings: {id: issuerId, options}} = issuer;\n const body = {credential: klona(validVc), options};\n body.credential.id = `urn:uuid:${uuidv4()}`;\n body.credential.issuer = issuerId;\n const {data, error} = await issuer.post({json: body});\n issuerError = error;\n issuedVc = data;\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "type": "hook", - "parent": "rqlqqHnsb0SlY4RsNNNBw", - "ctx": null, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "originalTitle": "\"before all\" hook", - "_events": {}, - "_eventsCount": 1, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 46868, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 545, - "_error": null - }, - { - "title": "\"before all\" hook in \"Ed25519Signature2020 (interop)\"", - "body": "async function() {\n const issuer = issuers.find(issuer =>\n issuer.tags.has(tag));\n const {settings: {id: issuerId, options}} = issuer;\n const body = {credential: klona(validVc), options};\n body.credential.id = `urn:uuid:${uuidv4()}`;\n body.credential.issuer = issuerId;\n const {data, error} = await issuer.post({json: body});\n issuerError = error;\n issuedVc = data;\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, + "suites": [], + "tests": [ + { + "type": "test", + "title": "MUST verify a valid VC with an Ed25519Signature2020 proof", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(issuedVc);\n await verificationSuccess({credential, verifier});\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "Q85gqc88D-dHrnciSy5Ou", + "ctx": null, + "_testId": "urn:uuid:e1751b81-3f68-4f45-a850-e53b1cfd90f5", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "Trinsic", + "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 48707, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 42, + "state": "passed", + "speed": "medium" + }, + { + "type": "test", + "title": "If the \"proofValue\" field, when decoded to raw bytes, is not 64 bytes in length if the associated public key is 32 bytes in length, or 114 bytes in length if the public key is 57 bytes in length, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(issuedVc);\n const proofBytes = bs58Decode({id: credential.proof.proofValue});\n const randomBytes = new Uint8Array(32).map(\n () => Math.floor(Math.random() * 255));\n credential.proof.proofValue = bs58Encode(\n new Uint8Array([...proofBytes, ...randomBytes]));\n await verificationFail({credential, verifier});\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "Q85gqc88D-dHrnciSy5Ou", + "ctx": null, + "_testId": "urn:uuid:70cc89d3-7f7a-4bd2-8968-a60f046c72f6", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "Trinsic", + "rowId": "If the \"proofValue\" field, when decoded to raw bytes, is not 64 bytes in length if the associated public key is 32 bytes in length, or 114 bytes in length if the public key is 57 bytes in length, an error MUST be raised." + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 48748, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 32, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(incorrectCannonization);\n await verificationFail({credential, verifier});\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "Q85gqc88D-dHrnciSy5Ou", + "ctx": null, + "_testId": "urn:uuid:8f009666-695a-409e-8e50-28cd55dd76f9", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "Trinsic", + "rowId": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised." + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 48781, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 42, + "state": "passed", + "speed": "medium" + }, + { + "type": "test", + "title": "If a canonicalization data hashing algorithm SHA-2-256 is used, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(incorrectHash);\n await verificationFail({credential, verifier});\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "Q85gqc88D-dHrnciSy5Ou", + "ctx": null, + "_testId": "urn:uuid:c8e30e5d-2408-4584-814f-ad455f56c5c2", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "Trinsic", + "rowId": "If a canonicalization data hashing algorithm SHA-2-256 is used, an error MUST be raised." + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 48823, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 32, + "state": "passed", + "speed": "fast" + } + ], + "root": false, "pending": false, - "type": "hook", - "parent": "rqlqqHnsb0SlY4RsNNNBw", - "ctx": null, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "originalTitle": "\"before all\" hook", - "_events": {}, - "_eventsCount": 1, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 47414, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 239, - "_error": null - }, - { - "title": "\"before all\" hook in \"Ed25519Signature2020 (interop)\"", - "body": "async function() {\n const issuer = issuers.find(issuer =>\n issuer.tags.has(tag));\n const {settings: {id: issuerId, options}} = issuer;\n const body = {credential: klona(validVc), options};\n body.credential.id = `urn:uuid:${uuidv4()}`;\n body.credential.issuer = issuerId;\n const {data, error} = await issuer.post({json: body});\n issuerError = error;\n issuedVc = data;\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "type": "hook", - "parent": "rqlqqHnsb0SlY4RsNNNBw", - "ctx": null, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "originalTitle": "\"before all\" hook", - "_events": {}, - "_eventsCount": 1, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 47653, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 99, - "_error": null - }, - { - "title": "\"before all\" hook in \"Ed25519Signature2020 (interop)\"", - "body": "async function() {\n const issuer = issuers.find(issuer =>\n issuer.tags.has(tag));\n const {settings: {id: issuerId, options}} = issuer;\n const body = {credential: klona(validVc), options};\n body.credential.id = `urn:uuid:${uuidv4()}`;\n body.credential.issuer = issuerId;\n const {data, error} = await issuer.post({json: body});\n issuerError = error;\n issuedVc = data;\n }", - "async": 0, - "sync": true, + "_beforeEach": [], + "_beforeAll": [], + "_afterEach": [], + "_afterAll": [], "_timeout": 15000, "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "type": "hook", - "parent": "rqlqqHnsb0SlY4RsNNNBw", - "ctx": null, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "originalTitle": "\"before all\" hook", - "_events": {}, - "_eventsCount": 1, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 47752, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 64, - "_error": null - }, - { - "title": "\"before all\" hook in \"Ed25519Signature2020 (interop)\"", - "body": "async function() {\n const issuer = issuers.find(issuer =>\n issuer.tags.has(tag));\n const {settings: {id: issuerId, options}} = issuer;\n const body = {credential: klona(validVc), options};\n body.credential.id = `urn:uuid:${uuidv4()}`;\n body.credential.issuer = issuerId;\n const {data, error} = await issuer.post({json: body});\n issuerError = error;\n issuedVc = data;\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "type": "hook", - "parent": "rqlqqHnsb0SlY4RsNNNBw", - "ctx": null, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "originalTitle": "\"before all\" hook", - "_events": {}, - "_eventsCount": 1, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 47816, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 23, - "_error": null - }, - { - "title": "\"before all\" hook in \"Ed25519Signature2020 (interop)\"", - "body": "async function() {\n const issuer = issuers.find(issuer =>\n issuer.tags.has(tag));\n const {settings: {id: issuerId, options}} = issuer;\n const body = {credential: klona(validVc), options};\n body.credential.id = `urn:uuid:${uuidv4()}`;\n body.credential.issuer = issuerId;\n const {data, error} = await issuer.post({json: body});\n issuerError = error;\n issuedVc = data;\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "type": "hook", - "parent": "rqlqqHnsb0SlY4RsNNNBw", - "ctx": null, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "originalTitle": "\"before all\" hook", - "_events": {}, - "_eventsCount": 1, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 47839, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 29, - "_error": null - }, - { - "title": "\"before all\" hook in \"Ed25519Signature2020 (interop)\"", - "body": "async function() {\n const issuer = issuers.find(issuer =>\n issuer.tags.has(tag));\n const {settings: {id: issuerId, options}} = issuer;\n const body = {credential: klona(validVc), options};\n body.credential.id = `urn:uuid:${uuidv4()}`;\n body.credential.issuer = issuerId;\n const {data, error} = await issuer.post({json: body});\n issuerError = error;\n issuedVc = data;\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "type": "hook", - "parent": "rqlqqHnsb0SlY4RsNNNBw", - "ctx": null, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "originalTitle": "\"before all\" hook", - "_events": {}, - "_eventsCount": 1, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 47867, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 36, - "_error": null + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "VXdW2NB5XqDJjeMQOCVtK", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "_testId": "urn:uuid:95204ac4-98e6-444d-9021-8dc704b0383f" } ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [], + "_beforeAll": [], "_afterEach": [], "_afterAll": [], "_timeout": 15000, @@ -27359,13 +27057,13 @@ "_onlyTests": [], "_onlySuites": [], "delayed": false, - "parent": "ZikjwqaxzKZ8cmsozBK3z", - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", + "parent": "1bAByKXLEABclbGMq-v2s", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", "matrix": true, "report": true, - "rowLabel": "Issuer", + "rowLabel": "Test Name", "columnLabel": "Verifier", - "_testId": "urn:uuid:3ca4b1ce-47eb-4532-88ee-5ad61db4108d", + "_testId": "urn:uuid:88696b6c-b782-4e72-bbaf-ca1b9bc16197", "columns": [ "apicatalog.com", "Danube Tech", @@ -27378,12 +27076,12 @@ ], "rows": [ { - "id": "apicatalog.com", + "id": "MUST verify a valid VC with an Ed25519Signature2020 proof", "cells": [ { "type": "test", - "title": "apicatalog.com should verify apicatalog.com", - "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", + "title": "MUST verify a valid VC with an Ed25519Signature2020 proof", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(issuedVc);\n await verificationSuccess({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -27392,151 +27090,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "SYk__RoIcNevhL9oBlZRQ", "ctx": null, - "_testId": "urn:uuid:acc0ac3e-843e-4e41-aa07-a04771913a2c", + "_testId": "urn:uuid:61bdc118-0659-4728-a3b2-0274374e35e4", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "apicatalog.com", - "columnId": "apicatalog.com" + "columnId": "apicatalog.com", + "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 47903, + "_idleStart": 44385, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 46, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist", - "showDiff": false, - "actual": { - "response": {}, - "request": {}, - "options": { - "credentials": "same-origin", - "headers": {}, - "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",\"https://w3id.org/security/suites/ed25519-2020/v1\"],\"id\":\"urn:uuid:4eb046be-55d8-4d8d-8fc1-d1bbfc85b674\",\"type\":\"VerifiableCredential\",\"issuer\":\"https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"verificationMethod\":\"did:key:z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y#z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y\",\"type\":\"Ed25519Signature2020\",\"proofPurpose\":\"assertionMethod\",\"created\":\"2024-08-25T05:02:19Z\",\"proofValue\":\"z5wJUjfWgAAU9LSj57EzKcT3qbduDryZZ1Aqmp9ZyJfnoiWLKz34woY745bw3m5S7oHcxwwBYhZ6RAy3rBB1eofxs\"}},\"options\":{\"checks\":[\"proof\"]}}", - "method": "POST", - "json": { - "verifiableCredential": { - "@context": [ - "https://www.w3.org/2018/credentials/v1", - "https://w3id.org/security/suites/ed25519-2020/v1" - ], - "id": "urn:uuid:4eb046be-55d8-4d8d-8fc1-d1bbfc85b674", - "type": "VerifiableCredential", - "issuer": "https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020", - "issuanceDate": "2020-03-16T22:37:26.544Z", - "credentialSubject": { - "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" - }, - "proof": { - "verificationMethod": "did:key:z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y#z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y", - "type": "Ed25519Signature2020", - "proofPurpose": "assertionMethod", - "created": "2024-08-25T05:02:19Z", - "proofValue": "z5wJUjfWgAAU9LSj57EzKcT3qbduDryZZ1Aqmp9ZyJfnoiWLKz34woY745bw3m5S7oHcxwwBYhZ6RAy3rBB1eofxs" - } - }, - "options": { - "checks": [ - "proof" - ] - } - }, - "agent": { - "_events": {}, - "_eventsCount": 2, - "defaultPort": 443, - "protocol": "https:", - "options": { - "rejectUnauthorized": false, - "noDelay": true, - "path": null - }, - "requests": {}, - "sockets": {}, - "freeSockets": {}, - "keepAliveMsecs": 1000, - "keepAlive": false, - "maxSockets": null, - "maxFreeSockets": 256, - "scheduling": "lifo", - "maxTotalSockets": null, - "totalSocketCount": 0, - "maxCachedSessions": 100, - "_sessionCache": { - "map": {}, - "list": [] - } - }, - "hooks": { - "beforeRequest": [], - "beforeRetry": [], - "beforeError": [], - "afterResponse": [] - }, - "prefixUrl": "", - "retry": { - "limit": 2, - "methods": [ - "get", - "put", - "head", - "delete", - "options", - "trace" - ], - "statusCodes": [ - 408, - 413, - 429, - 500, - 502, - 503, - 504 - ], - "afterStatusCodes": [ - 413, - 429, - 503 - ], - "maxRetryAfter": null, - "backoffLimit": null - }, - "throwHttpErrors": true, - "timeout": 10000, - "signal": {}, - "duplex": "half" - }, - "name": "HTTPError", - "requestUrl": "https://vc.apicatalog.com/credentials/verify", - "status": 400, - "data": { - "checks": [ - "PROOF", - "INVALID_SIGNATURE" - ], - "warnings": [], - "errors": [] - } - }, - "operator": "notStrictEqual", - "stack": "AssertionError: Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js:66:20)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" - } + "duration": 99, + "state": "passed", + "speed": "slow" }, { "type": "test", - "title": "Danube Tech should verify apicatalog.com", - "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", + "title": "MUST verify a valid VC with an Ed25519Signature2020 proof", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(issuedVc);\n await verificationSuccess({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -27545,146 +27125,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "NQ-Cpmwho3QjhxjyGQ0zo", "ctx": null, - "_testId": "urn:uuid:1f6a05a4-3bbf-4388-9e6e-e2035891cb2f", + "_testId": "urn:uuid:c361e790-ea02-4fea-9960-03a57ca32364", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "apicatalog.com", - "columnId": "Danube Tech" + "columnId": "Danube Tech", + "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 47950, + "_idleStart": 44641, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 244, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist", - "showDiff": false, - "actual": { - "response": {}, - "request": {}, - "options": { - "credentials": "same-origin", - "headers": {}, - "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",\"https://w3id.org/security/suites/ed25519-2020/v1\"],\"id\":\"urn:uuid:4eb046be-55d8-4d8d-8fc1-d1bbfc85b674\",\"type\":\"VerifiableCredential\",\"issuer\":\"https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"verificationMethod\":\"did:key:z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y#z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y\",\"type\":\"Ed25519Signature2020\",\"proofPurpose\":\"assertionMethod\",\"created\":\"2024-08-25T05:02:19Z\",\"proofValue\":\"z5wJUjfWgAAU9LSj57EzKcT3qbduDryZZ1Aqmp9ZyJfnoiWLKz34woY745bw3m5S7oHcxwwBYhZ6RAy3rBB1eofxs\"}},\"options\":{\"checks\":[\"proof\"]}}", - "method": "POST", - "json": { - "verifiableCredential": { - "@context": [ - "https://www.w3.org/2018/credentials/v1", - "https://w3id.org/security/suites/ed25519-2020/v1" - ], - "id": "urn:uuid:4eb046be-55d8-4d8d-8fc1-d1bbfc85b674", - "type": "VerifiableCredential", - "issuer": "https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020", - "issuanceDate": "2020-03-16T22:37:26.544Z", - "credentialSubject": { - "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" - }, - "proof": { - "verificationMethod": "did:key:z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y#z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y", - "type": "Ed25519Signature2020", - "proofPurpose": "assertionMethod", - "created": "2024-08-25T05:02:19Z", - "proofValue": "z5wJUjfWgAAU9LSj57EzKcT3qbduDryZZ1Aqmp9ZyJfnoiWLKz34woY745bw3m5S7oHcxwwBYhZ6RAy3rBB1eofxs" - } - }, - "options": { - "checks": [ - "proof" - ] - } - }, - "agent": { - "_events": {}, - "_eventsCount": 2, - "defaultPort": 443, - "protocol": "https:", - "options": { - "rejectUnauthorized": false, - "noDelay": true, - "path": null - }, - "requests": {}, - "sockets": {}, - "freeSockets": {}, - "keepAliveMsecs": 1000, - "keepAlive": false, - "maxSockets": null, - "maxFreeSockets": 256, - "scheduling": "lifo", - "maxTotalSockets": null, - "totalSocketCount": 0, - "maxCachedSessions": 100, - "_sessionCache": { - "map": {}, - "list": [] - } - }, - "hooks": { - "beforeRequest": [], - "beforeRetry": [], - "beforeError": [], - "afterResponse": [] - }, - "prefixUrl": "", - "retry": { - "limit": 2, - "methods": [ - "get", - "put", - "head", - "delete", - "options", - "trace" - ], - "statusCodes": [ - 408, - 413, - 429, - 500, - 502, - 503, - 504 - ], - "afterStatusCodes": [ - 413, - 429, - 503 - ], - "maxRetryAfter": null, - "backoffLimit": null - }, - "throwHttpErrors": true, - "timeout": 10000, - "signal": {}, - "duplex": "half" - }, - "name": "HTTPError", - "requestUrl": "https://univerifier.io/1.0/credentials/verify", - "status": 400, - "data": { - "checks": [] - } - }, - "operator": "notStrictEqual", - "stack": "AssertionError: Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js:66:20)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" - } + "duration": 918, + "state": "passed", + "speed": "slow" }, { "type": "test", - "title": "Digital Bazaar should verify apicatalog.com", - "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", + "title": "MUST verify a valid VC with an Ed25519Signature2020 proof", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(issuedVc);\n await verificationSuccess({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -27693,449 +27160,505 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "5DqiEVwX6wS_Z2SluWABU", "ctx": null, - "_testId": "urn:uuid:ce2e6408-ac11-43b9-b93c-730f2d42d8b1", + "_testId": "urn:uuid:4f6607eb-6b17-4b26-953c-b4f0932fa8d2", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "apicatalog.com", - "columnId": "Digital Bazaar" + "columnId": "Digital Bazaar", + "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 48196, + "_idleStart": 46876, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 398, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected verifier to not error.: expected HTTPError: A validation error occured in … { …(6) } to not exist", - "showDiff": false, - "actual": { - "response": {}, - "request": {}, - "options": { - "credentials": "same-origin", - "headers": {}, - "method": "POST", - "json": { - "verifiableCredential": { - "@context": [ - "https://www.w3.org/2018/credentials/v1", - "https://w3id.org/security/suites/ed25519-2020/v1" - ], - "id": "urn:uuid:4eb046be-55d8-4d8d-8fc1-d1bbfc85b674", - "type": "VerifiableCredential", - "issuer": "https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020", - "issuanceDate": "2020-03-16T22:37:26.544Z", - "credentialSubject": { - "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" - }, - "proof": { - "verificationMethod": "did:key:z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y#z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y", - "type": "Ed25519Signature2020", - "proofPurpose": "assertionMethod", - "created": "2024-08-25T05:02:19Z", - "proofValue": "z5wJUjfWgAAU9LSj57EzKcT3qbduDryZZ1Aqmp9ZyJfnoiWLKz34woY745bw3m5S7oHcxwwBYhZ6RAy3rBB1eofxs" - } - }, - "options": { - "checks": [ - "proof" - ] - } - }, - "agent": { - "_events": {}, - "_eventsCount": 2, - "defaultPort": 443, - "protocol": "https:", - "options": { - "rejectUnauthorized": false, - "noDelay": true, - "path": null - }, - "requests": {}, - "sockets": {}, - "freeSockets": {}, - "keepAliveMsecs": 1000, - "keepAlive": false, - "maxSockets": null, - "maxFreeSockets": 256, - "scheduling": "lifo", - "maxTotalSockets": null, - "totalSocketCount": 0, - "maxCachedSessions": 100, - "_sessionCache": { - "map": {}, - "list": [] - } - }, - "hooks": { - "beforeRequest": [], - "beforeRetry": [], - "beforeError": [], - "afterResponse": [] - }, - "prefixUrl": "", - "retry": { - "limit": 2, - "methods": [ - "get", - "put", - "head", - "delete", - "options", - "trace" - ], - "statusCodes": [ - 408, - 413, - 429, - 500, - 502, - 503, - 504 - ], - "afterStatusCodes": [ - 413, - 429, - 503 - ], - "maxRetryAfter": null, - "backoffLimit": null - }, - "throwHttpErrors": true, - "timeout": 10000, - "signal": {}, - "duplex": "half", - "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",\"https://w3id.org/security/suites/ed25519-2020/v1\"],\"id\":\"urn:uuid:4eb046be-55d8-4d8d-8fc1-d1bbfc85b674\",\"type\":\"VerifiableCredential\",\"issuer\":\"https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"verificationMethod\":\"did:key:z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y#z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y\",\"type\":\"Ed25519Signature2020\",\"proofPurpose\":\"assertionMethod\",\"created\":\"2024-08-25T05:02:19Z\",\"proofValue\":\"z5wJUjfWgAAU9LSj57EzKcT3qbduDryZZ1Aqmp9ZyJfnoiWLKz34woY745bw3m5S7oHcxwwBYhZ6RAy3rBB1eofxs\"}},\"options\":{\"checks\":[\"proof\"]}}" - }, - "name": "HTTPError", - "requestUrl": "https://vc2.veresverifier.dev/verifiers/z19w7KofwvE2nkJeRVLp8NDxz/credentials/verify", - "status": 400, - "data": { - "name": "ValidationError", - "message": "A validation error occured in the 'Verify Credential Body' validator.", - "details": { - "errors": [ - { - "stack": "ValidationError: should be array\n at _createError (file:///home/node/app/node_modules/@bedrock/validation/lib/index.js:240:17)\n at validate (file:///home/node/app/node_modules/@bedrock/validation/lib/index.js:88:14)\n at validate (file:///home/node/app/node_modules/@bedrock/validation/lib/index.js:181:22)\n at Layer.handle [as handle_request] (/home/node/app/node_modules/express/lib/router/layer.js:95:5)\n at next (/home/node/app/node_modules/express/lib/router/route.js:149:13)\n at cors (/home/node/app/node_modules/cors/lib/index.js:188:7)\n at /home/node/app/node_modules/cors/lib/index.js:224:17\n at originCallback (/home/node/app/node_modules/cors/lib/index.js:214:15)\n at /home/node/app/node_modules/cors/lib/index.js:219:13\n at optionsCallback (/home/node/app/node_modules/cors/lib/index.js:199:9)", - "name": "ValidationError", - "message": "should be array", - "details": { - "instance": { - "verifiableCredential": { - "@context": [ - "https://www.w3.org/2018/credentials/v1", - "https://w3id.org/security/suites/ed25519-2020/v1" - ], - "id": "urn:uuid:4eb046be-55d8-4d8d-8fc1-d1bbfc85b674", - "type": "VerifiableCredential", - "issuer": "https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020", - "issuanceDate": "2020-03-16T22:37:26.544Z", - "credentialSubject": { - "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" - }, - "proof": { - "verificationMethod": "did:key:z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y#z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y", - "type": "Ed25519Signature2020", - "proofPurpose": "assertionMethod", - "created": "2024-08-25T05:02:19Z", - "proofValue": "z5wJUjfWgAAU9LSj57EzKcT3qbduDryZZ1Aqmp9ZyJfnoiWLKz34woY745bw3m5S7oHcxwwBYhZ6RAy3rBB1eofxs" - } - }, - "options": { - "checks": [ - "proof" - ] - } - }, - "params": { - "type": "array" - }, - "path": ".verifiableCredential.type", - "public": true, - "schemaPath": "#/properties/verifiableCredential/anyOf/0/properties/type/type", - "schema": { - "description": "", - "title": "" - }, - "value": "VerifiableCredential" - }, - "cause": null - }, - { - "stack": "ValidationError: should NOT have additional properties\n at _createError (file:///home/node/app/node_modules/@bedrock/validation/lib/index.js:240:17)\n at validate (file:///home/node/app/node_modules/@bedrock/validation/lib/index.js:88:14)\n at validate (file:///home/node/app/node_modules/@bedrock/validation/lib/index.js:181:22)\n at Layer.handle [as handle_request] (/home/node/app/node_modules/express/lib/router/layer.js:95:5)\n at next (/home/node/app/node_modules/express/lib/router/route.js:149:13)\n at cors (/home/node/app/node_modules/cors/lib/index.js:188:7)\n at /home/node/app/node_modules/cors/lib/index.js:224:17\n at originCallback (/home/node/app/node_modules/cors/lib/index.js:214:15)\n at /home/node/app/node_modules/cors/lib/index.js:219:13\n at optionsCallback (/home/node/app/node_modules/cors/lib/index.js:199:9)", - "name": "ValidationError", - "message": "should NOT have additional properties", - "details": { - "instance": { - "verifiableCredential": { - "@context": [ - "https://www.w3.org/2018/credentials/v1", - "https://w3id.org/security/suites/ed25519-2020/v1" - ], - "id": "urn:uuid:4eb046be-55d8-4d8d-8fc1-d1bbfc85b674", - "type": "VerifiableCredential", - "issuer": "https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020", - "issuanceDate": "2020-03-16T22:37:26.544Z", - "credentialSubject": { - "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" - }, - "proof": { - "verificationMethod": "did:key:z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y#z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y", - "type": "Ed25519Signature2020", - "proofPurpose": "assertionMethod", - "created": "2024-08-25T05:02:19Z", - "proofValue": "z5wJUjfWgAAU9LSj57EzKcT3qbduDryZZ1Aqmp9ZyJfnoiWLKz34woY745bw3m5S7oHcxwwBYhZ6RAy3rBB1eofxs" - } - }, - "options": { - "checks": [ - "proof" - ] - } - }, - "params": { - "additionalProperty": "issuer" - }, - "path": ".verifiableCredential", - "public": true, - "schemaPath": "#/properties/verifiableCredential/anyOf/1/additionalProperties", - "schema": { - "description": "", - "title": "Enveloped Verifiable Credential" - }, - "value": { - "@context": [ - "https://www.w3.org/2018/credentials/v1", - "https://w3id.org/security/suites/ed25519-2020/v1" - ], - "id": "urn:uuid:4eb046be-55d8-4d8d-8fc1-d1bbfc85b674", - "type": "VerifiableCredential", - "issuer": "https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020", - "issuanceDate": "2020-03-16T22:37:26.544Z", - "credentialSubject": { - "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" - }, - "proof": { - "verificationMethod": "did:key:z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y#z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y", - "type": "Ed25519Signature2020", - "proofPurpose": "assertionMethod", - "created": "2024-08-25T05:02:19Z", - "proofValue": "z5wJUjfWgAAU9LSj57EzKcT3qbduDryZZ1Aqmp9ZyJfnoiWLKz34woY745bw3m5S7oHcxwwBYhZ6RAy3rBB1eofxs" - } - } - }, - "cause": null - }, - { - "stack": "ValidationError: should match some schema in anyOf\n at _createError (file:///home/node/app/node_modules/@bedrock/validation/lib/index.js:240:17)\n at validate (file:///home/node/app/node_modules/@bedrock/validation/lib/index.js:88:14)\n at validate (file:///home/node/app/node_modules/@bedrock/validation/lib/index.js:181:22)\n at Layer.handle [as handle_request] (/home/node/app/node_modules/express/lib/router/layer.js:95:5)\n at next (/home/node/app/node_modules/express/lib/router/route.js:149:13)\n at cors (/home/node/app/node_modules/cors/lib/index.js:188:7)\n at /home/node/app/node_modules/cors/lib/index.js:224:17\n at originCallback (/home/node/app/node_modules/cors/lib/index.js:214:15)\n at /home/node/app/node_modules/cors/lib/index.js:219:13\n at optionsCallback (/home/node/app/node_modules/cors/lib/index.js:199:9)", - "name": "ValidationError", - "message": "should match some schema in anyOf", - "details": { - "instance": { - "verifiableCredential": { - "@context": [ - "https://www.w3.org/2018/credentials/v1", - "https://w3id.org/security/suites/ed25519-2020/v1" - ], - "id": "urn:uuid:4eb046be-55d8-4d8d-8fc1-d1bbfc85b674", - "type": "VerifiableCredential", - "issuer": "https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020", - "issuanceDate": "2020-03-16T22:37:26.544Z", - "credentialSubject": { - "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" - }, - "proof": { - "verificationMethod": "did:key:z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y#z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y", - "type": "Ed25519Signature2020", - "proofPurpose": "assertionMethod", - "created": "2024-08-25T05:02:19Z", - "proofValue": "z5wJUjfWgAAU9LSj57EzKcT3qbduDryZZ1Aqmp9ZyJfnoiWLKz34woY745bw3m5S7oHcxwwBYhZ6RAy3rBB1eofxs" - } - }, - "options": { - "checks": [ - "proof" - ] - } - }, - "params": {}, - "path": ".verifiableCredential", - "public": true, - "schemaPath": "#/properties/verifiableCredential/anyOf", - "schema": { - "description": "", - "title": { - "title": "Verifiable Credential", - "type": "object", - "required": [ - "@context", - "credentialSubject", - "issuer", - "type" - ], - "additionalProperties": true, - "properties": { - "@context": { - "type": "array", - "minItems": 1, - "items": [ - { - "oneOf": [ - { - "const": "https://www.w3.org/2018/credentials/v1" - }, - { - "const": "https://www.w3.org/ns/credentials/v2" - } - ] - } - ], - "additionalItems": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "object" - } - ] - } - }, - "credentialSubject": { - "anyOf": [ - { - "type": "object" - }, - { - "type": "array", - "minItems": 1, - "items": { - "type": "object" - } - } - ] - }, - "id": { - "type": "string" - }, - "issuer": { - "title": "identifier or an object with an id", - "anyOf": [ - { - "title": "ID", - "description": "A unique identifier.", - "type": "string", - "minLength": 1, - "disallow": { - "type": "string", - "enum": [ - "0" - ] - } - }, - { - "type": "object", - "required": [ - "id" - ], - "additionalProperties": true, - "properties": { - "id": { - "title": "ID", - "description": "A unique identifier.", - "type": "string", - "minLength": 1, - "disallow": { - "type": "string", - "enum": [ - "0" - ] - } - } - } - } - ] - }, - "type": { - "type": "array", - "minItems": 1, - "items": [ - { - "const": "VerifiableCredential" - } - ], - "additionalItems": { - "type": "string" - } - }, - "proof": { - "title": "Proof", - "anyOf": [ - { - "type": "object" - }, - { - "type": "array", - "minItems": 1, - "items": { - "type": "object" - } - } - ] - } - } - } - }, - "value": { - "@context": [ - "https://www.w3.org/2018/credentials/v1", - "https://w3id.org/security/suites/ed25519-2020/v1" - ], - "id": "urn:uuid:4eb046be-55d8-4d8d-8fc1-d1bbfc85b674", - "type": "VerifiableCredential", - "issuer": "https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020", - "issuanceDate": "2020-03-16T22:37:26.544Z", - "credentialSubject": { - "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" - }, - "proof": { - "verificationMethod": "did:key:z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y#z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y", - "type": "Ed25519Signature2020", - "proofPurpose": "assertionMethod", - "created": "2024-08-25T05:02:19Z", - "proofValue": "z5wJUjfWgAAU9LSj57EzKcT3qbduDryZZ1Aqmp9ZyJfnoiWLKz34woY745bw3m5S7oHcxwwBYhZ6RAy3rBB1eofxs" - } - } - }, - "cause": null - } - ], - "httpStatusCode": 400 - }, - "cause": null, - "stack": "ValidationError: A validation error occured in the 'Verify Credential Body' validator.\n at _createError (file:///home/node/app/node_modules/@bedrock/validation/lib/index.js:246:17)\n at validate (file:///home/node/app/node_modules/@bedrock/validation/lib/index.js:88:14)\n at validate (file:///home/node/app/node_modules/@bedrock/validation/lib/index.js:181:22)\n at Layer.handle [as handle_request] (/home/node/app/node_modules/express/lib/router/layer.js:95:5)\n at next (/home/node/app/node_modules/express/lib/router/route.js:149:13)\n at cors (/home/node/app/node_modules/cors/lib/index.js:188:7)\n at /home/node/app/node_modules/cors/lib/index.js:224:17\n at originCallback (/home/node/app/node_modules/cors/lib/index.js:214:15)\n at /home/node/app/node_modules/cors/lib/index.js:219:13\n at optionsCallback (/home/node/app/node_modules/cors/lib/index.js:199:9)", - "type": "ValidationError" - } - }, + "duration": 235, + "state": "passed", + "speed": "slow" + }, + { + "type": "test", + "title": "MUST verify a valid VC with an Ed25519Signature2020 proof", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(issuedVc);\n await verificationSuccess({credential, verifier});\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "i0xuW3XmFHBfs6bhK6_IC", + "ctx": null, + "_testId": "urn:uuid:7609453c-0c6c-4301-a4e8-6d4e3b30d2fc", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "EWF", + "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 47326, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 378, + "state": "passed", + "speed": "slow" + }, + { + "type": "test", + "title": "MUST verify a valid VC with an Ed25519Signature2020 proof", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(issuedVc);\n await verificationSuccess({credential, verifier});\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "jNe7b7VyeLRtboCU_Rv_G", + "ctx": null, + "_testId": "urn:uuid:4c8a2049-8783-4948-a7e7-45a47953a248", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "LearnCard", + "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 48017, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 101, + "state": "passed", + "speed": "slow" + }, + { + "type": "test", + "title": "MUST verify a valid VC with an Ed25519Signature2020 proof", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(issuedVc);\n await verificationSuccess({credential, verifier});\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "GBtDIvSMqEPlwBidQKbyq", + "ctx": null, + "_testId": "urn:uuid:2e1c07c6-743c-4cbf-a3c9-366e753a2145", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "OpSecId", + "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 48338, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 122, + "state": "passed", + "speed": "slow" + }, + { + "type": "test", + "title": "MUST verify a valid VC with an Ed25519Signature2020 proof", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(issuedVc);\n await verificationSuccess({credential, verifier});\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "RLzBESM9-8OkejA0_Pzy1", + "ctx": null, + "_testId": "urn:uuid:131c859a-016a-49d9-8ba5-02cbb989b987", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "SpruceID", + "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 48576, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 50, + "state": "passed", + "speed": "medium" + }, + { + "type": "test", + "title": "MUST verify a valid VC with an Ed25519Signature2020 proof", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(issuedVc);\n await verificationSuccess({credential, verifier});\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "Q85gqc88D-dHrnciSy5Ou", + "ctx": null, + "_testId": "urn:uuid:e1751b81-3f68-4f45-a850-e53b1cfd90f5", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "Trinsic", + "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 48707, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 42, + "state": "passed", + "speed": "medium" + } + ] + }, + { + "id": "If the \"proofValue\" field, when decoded to raw bytes, is not 64 bytes in length if the associated public key is 32 bytes in length, or 114 bytes in length if the public key is 57 bytes in length, an error MUST be raised.", + "cells": [ + { + "type": "test", + "title": "If the \"proofValue\" field, when decoded to raw bytes, is not 64 bytes in length if the associated public key is 32 bytes in length, or 114 bytes in length if the public key is 57 bytes in length, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(issuedVc);\n const proofBytes = bs58Decode({id: credential.proof.proofValue});\n const randomBytes = new Uint8Array(32).map(\n () => Math.floor(Math.random() * 255));\n credential.proof.proofValue = bs58Encode(\n new Uint8Array([...proofBytes, ...randomBytes]));\n await verificationFail({credential, verifier});\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "SYk__RoIcNevhL9oBlZRQ", + "ctx": null, + "_testId": "urn:uuid:b663b0c6-fb25-4a5c-bba7-b37392ea4749", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "apicatalog.com", + "rowId": "If the \"proofValue\" field, when decoded to raw bytes, is not 64 bytes in length if the associated public key is 32 bytes in length, or 114 bytes in length if the public key is 57 bytes in length, an error MUST be raised." + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 44486, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 51, + "state": "passed", + "speed": "medium" + }, + { + "type": "test", + "title": "If the \"proofValue\" field, when decoded to raw bytes, is not 64 bytes in length if the associated public key is 32 bytes in length, or 114 bytes in length if the public key is 57 bytes in length, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(issuedVc);\n const proofBytes = bs58Decode({id: credential.proof.proofValue});\n const randomBytes = new Uint8Array(32).map(\n () => Math.floor(Math.random() * 255));\n credential.proof.proofValue = bs58Encode(\n new Uint8Array([...proofBytes, ...randomBytes]));\n await verificationFail({credential, verifier});\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "NQ-Cpmwho3QjhxjyGQ0zo", + "ctx": null, + "_testId": "urn:uuid:0f0c5f95-9517-46cb-a54e-87fb4013b21f", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "Danube Tech", + "rowId": "If the \"proofValue\" field, when decoded to raw bytes, is not 64 bytes in length if the associated public key is 32 bytes in length, or 114 bytes in length if the public key is 57 bytes in length, an error MUST be raised." + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 45560, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 432, + "state": "passed", + "speed": "slow" + }, + { + "type": "test", + "title": "If the \"proofValue\" field, when decoded to raw bytes, is not 64 bytes in length if the associated public key is 32 bytes in length, or 114 bytes in length if the public key is 57 bytes in length, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(issuedVc);\n const proofBytes = bs58Decode({id: credential.proof.proofValue});\n const randomBytes = new Uint8Array(32).map(\n () => Math.floor(Math.random() * 255));\n credential.proof.proofValue = bs58Encode(\n new Uint8Array([...proofBytes, ...randomBytes]));\n await verificationFail({credential, verifier});\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "5DqiEVwX6wS_Z2SluWABU", + "ctx": null, + "_testId": "urn:uuid:a8dc0dd0-07b2-45d3-af39-081180499351", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "Digital Bazaar", + "rowId": "If the \"proofValue\" field, when decoded to raw bytes, is not 64 bytes in length if the associated public key is 32 bytes in length, or 114 bytes in length if the public key is 57 bytes in length, an error MUST be raised." + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 47111, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 115, + "state": "passed", + "speed": "slow" + }, + { + "type": "test", + "title": "If the \"proofValue\" field, when decoded to raw bytes, is not 64 bytes in length if the associated public key is 32 bytes in length, or 114 bytes in length if the public key is 57 bytes in length, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(issuedVc);\n const proofBytes = bs58Decode({id: credential.proof.proofValue});\n const randomBytes = new Uint8Array(32).map(\n () => Math.floor(Math.random() * 255));\n credential.proof.proofValue = bs58Encode(\n new Uint8Array([...proofBytes, ...randomBytes]));\n await verificationFail({credential, verifier});\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "i0xuW3XmFHBfs6bhK6_IC", + "ctx": null, + "_testId": "urn:uuid:ff1a02e8-4d48-4b1b-8fc4-8e30a04dd836", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "EWF", + "rowId": "If the \"proofValue\" field, when decoded to raw bytes, is not 64 bytes in length if the associated public key is 32 bytes in length, or 114 bytes in length if the public key is 57 bytes in length, an error MUST be raised." + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 47705, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 101, + "state": "passed", + "speed": "slow" + }, + { + "type": "test", + "title": "If the \"proofValue\" field, when decoded to raw bytes, is not 64 bytes in length if the associated public key is 32 bytes in length, or 114 bytes in length if the public key is 57 bytes in length, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(issuedVc);\n const proofBytes = bs58Decode({id: credential.proof.proofValue});\n const randomBytes = new Uint8Array(32).map(\n () => Math.floor(Math.random() * 255));\n credential.proof.proofValue = bs58Encode(\n new Uint8Array([...proofBytes, ...randomBytes]));\n await verificationFail({credential, verifier});\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "jNe7b7VyeLRtboCU_Rv_G", + "ctx": null, + "_testId": "urn:uuid:91aa872d-adc7-4920-a66f-f2726131f650", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "LearnCard", + "rowId": "If the \"proofValue\" field, when decoded to raw bytes, is not 64 bytes in length if the associated public key is 32 bytes in length, or 114 bytes in length if the public key is 57 bytes in length, an error MUST be raised." + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 48119, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 66, + "state": "passed", + "speed": "medium" + }, + { + "type": "test", + "title": "If the \"proofValue\" field, when decoded to raw bytes, is not 64 bytes in length if the associated public key is 32 bytes in length, or 114 bytes in length if the public key is 57 bytes in length, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(issuedVc);\n const proofBytes = bs58Decode({id: credential.proof.proofValue});\n const randomBytes = new Uint8Array(32).map(\n () => Math.floor(Math.random() * 255));\n credential.proof.proofValue = bs58Encode(\n new Uint8Array([...proofBytes, ...randomBytes]));\n await verificationFail({credential, verifier});\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "GBtDIvSMqEPlwBidQKbyq", + "ctx": null, + "_testId": "urn:uuid:90ceb68a-2267-47e2-852d-8c9fce2db718", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "OpSecId", + "rowId": "If the \"proofValue\" field, when decoded to raw bytes, is not 64 bytes in length if the associated public key is 32 bytes in length, or 114 bytes in length if the public key is 57 bytes in length, an error MUST be raised." + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 48461, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 38, + "state": "failed", + "err": { + "name": "AssertionError", + "message": "Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'content-length': '638', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 01 Sep 2024 05:02:20 GMT', server: 'Python/3.12 aiohttp/3.10.5', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist", + "showDiff": false, + "actual": {}, "operator": "notStrictEqual", - "stack": "AssertionError: Expected verifier to not error.: expected HTTPError: A validation error occured in … { …(6) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js:66:20)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" + "stack": "AssertionError: Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'content-length': '638', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 01 Sep 2024 05:02:20 GMT', server: 'Python/3.12 aiohttp/3.10.5', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at verificationFail (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/assertions.js:49:14)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js:73:11)" } }, { "type": "test", - "title": "EWF should verify apicatalog.com", - "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", + "title": "If the \"proofValue\" field, when decoded to raw bytes, is not 64 bytes in length if the associated public key is 32 bytes in length, or 114 bytes in length if the public key is 57 bytes in length, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(issuedVc);\n const proofBytes = bs58Decode({id: credential.proof.proofValue});\n const randomBytes = new Uint8Array(32).map(\n () => Math.floor(Math.random() * 255));\n credential.proof.proofValue = bs58Encode(\n new Uint8Array([...proofBytes, ...randomBytes]));\n await verificationFail({credential, verifier});\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "RLzBESM9-8OkejA0_Pzy1", + "ctx": null, + "_testId": "urn:uuid:31479dd1-aa24-40d6-a665-6804f710d020", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "SpruceID", + "rowId": "If the \"proofValue\" field, when decoded to raw bytes, is not 64 bytes in length if the associated public key is 32 bytes in length, or 114 bytes in length if the public key is 57 bytes in length, an error MUST be raised." + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 48626, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 26, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "If the \"proofValue\" field, when decoded to raw bytes, is not 64 bytes in length if the associated public key is 32 bytes in length, or 114 bytes in length if the public key is 57 bytes in length, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(issuedVc);\n const proofBytes = bs58Decode({id: credential.proof.proofValue});\n const randomBytes = new Uint8Array(32).map(\n () => Math.floor(Math.random() * 255));\n credential.proof.proofValue = bs58Encode(\n new Uint8Array([...proofBytes, ...randomBytes]));\n await verificationFail({credential, verifier});\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "Q85gqc88D-dHrnciSy5Ou", + "ctx": null, + "_testId": "urn:uuid:70cc89d3-7f7a-4bd2-8968-a60f046c72f6", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "Trinsic", + "rowId": "If the \"proofValue\" field, when decoded to raw bytes, is not 64 bytes in length if the associated public key is 32 bytes in length, or 114 bytes in length if the public key is 57 bytes in length, an error MUST be raised." + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 48748, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 32, + "state": "passed", + "speed": "fast" + } + ] + }, + { + "id": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised.", + "cells": [ + { + "type": "test", + "title": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(incorrectCannonization);\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -28144,150 +27667,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "SYk__RoIcNevhL9oBlZRQ", "ctx": null, - "_testId": "urn:uuid:10f0d8c9-f4f4-4ddf-be94-dca7f4d71e2c", + "_testId": "urn:uuid:e78c2841-61d0-4a39-b3fd-de37269e5335", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "apicatalog.com", - "columnId": "EWF" + "columnId": "apicatalog.com", + "rowId": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 48594, + "_idleStart": 44537, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 92, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected verifier to not error.: expected HTTPError { …(7) } to not exist", - "showDiff": false, - "actual": { - "response": {}, - "request": {}, - "options": { - "credentials": "same-origin", - "headers": {}, - "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",\"https://w3id.org/security/suites/ed25519-2020/v1\"],\"id\":\"urn:uuid:4eb046be-55d8-4d8d-8fc1-d1bbfc85b674\",\"type\":\"VerifiableCredential\",\"issuer\":\"https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"verificationMethod\":\"did:key:z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y#z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y\",\"type\":\"Ed25519Signature2020\",\"proofPurpose\":\"assertionMethod\",\"created\":\"2024-08-25T05:02:19Z\",\"proofValue\":\"z5wJUjfWgAAU9LSj57EzKcT3qbduDryZZ1Aqmp9ZyJfnoiWLKz34woY745bw3m5S7oHcxwwBYhZ6RAy3rBB1eofxs\"}},\"options\":{\"checks\":[\"proof\"]}}", - "method": "POST", - "json": { - "verifiableCredential": { - "@context": [ - "https://www.w3.org/2018/credentials/v1", - "https://w3id.org/security/suites/ed25519-2020/v1" - ], - "id": "urn:uuid:4eb046be-55d8-4d8d-8fc1-d1bbfc85b674", - "type": "VerifiableCredential", - "issuer": "https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020", - "issuanceDate": "2020-03-16T22:37:26.544Z", - "credentialSubject": { - "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" - }, - "proof": { - "verificationMethod": "did:key:z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y#z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y", - "type": "Ed25519Signature2020", - "proofPurpose": "assertionMethod", - "created": "2024-08-25T05:02:19Z", - "proofValue": "z5wJUjfWgAAU9LSj57EzKcT3qbduDryZZ1Aqmp9ZyJfnoiWLKz34woY745bw3m5S7oHcxwwBYhZ6RAy3rBB1eofxs" - } - }, - "options": { - "checks": [ - "proof" - ] - } - }, - "agent": { - "_events": {}, - "_eventsCount": 2, - "defaultPort": 443, - "protocol": "https:", - "options": { - "rejectUnauthorized": false, - "noDelay": true, - "path": null - }, - "requests": {}, - "sockets": {}, - "freeSockets": {}, - "keepAliveMsecs": 1000, - "keepAlive": false, - "maxSockets": null, - "maxFreeSockets": 256, - "scheduling": "lifo", - "maxTotalSockets": null, - "totalSocketCount": 0, - "maxCachedSessions": 100, - "_sessionCache": { - "map": {}, - "list": [] - } - }, - "hooks": { - "beforeRequest": [], - "beforeRetry": [], - "beforeError": [], - "afterResponse": [] - }, - "prefixUrl": "", - "retry": { - "limit": 2, - "methods": [ - "get", - "put", - "head", - "delete", - "options", - "trace" - ], - "statusCodes": [ - 408, - 413, - 429, - 500, - 502, - 503, - 504 - ], - "afterStatusCodes": [ - 413, - 429, - 503 - ], - "maxRetryAfter": null, - "backoffLimit": null - }, - "throwHttpErrors": true, - "timeout": 10000, - "signal": {}, - "duplex": "half" - }, - "name": "HTTPError", - "requestUrl": "https://vc-api-dev.energyweb.org/v1/vc-api/credentials/verify", - "status": 400, - "data": { - "message": [ - "verifiableCredential.type must be an array" - ], - "error": "Bad Request", - "statusCode": 400 - } - }, - "operator": "notStrictEqual", - "stack": "AssertionError: Expected verifier to not error.: expected HTTPError { …(7) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js:66:20)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" - } + "duration": 52, + "state": "passed", + "speed": "medium" }, { "type": "test", - "title": "LearnCard should verify apicatalog.com", - "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", + "title": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(incorrectCannonization);\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -28296,144 +27702,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "NQ-Cpmwho3QjhxjyGQ0zo", "ctx": null, - "_testId": "urn:uuid:e865c18c-99bc-4ee0-8382-402012b089cb", + "_testId": "urn:uuid:7322c48f-6783-439d-bcad-884e52d2e2d2", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "apicatalog.com", - "columnId": "LearnCard" + "columnId": "Danube Tech", + "rowId": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 48687, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 28, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist", - "showDiff": false, - "actual": { - "response": {}, - "request": {}, - "options": { - "credentials": "same-origin", - "headers": {}, - "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",\"https://w3id.org/security/suites/ed25519-2020/v1\"],\"id\":\"urn:uuid:4eb046be-55d8-4d8d-8fc1-d1bbfc85b674\",\"type\":\"VerifiableCredential\",\"issuer\":\"https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"verificationMethod\":\"did:key:z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y#z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y\",\"type\":\"Ed25519Signature2020\",\"proofPurpose\":\"assertionMethod\",\"created\":\"2024-08-25T05:02:19Z\",\"proofValue\":\"z5wJUjfWgAAU9LSj57EzKcT3qbduDryZZ1Aqmp9ZyJfnoiWLKz34woY745bw3m5S7oHcxwwBYhZ6RAy3rBB1eofxs\"}},\"options\":{\"checks\":[\"proof\"]}}", - "method": "POST", - "json": { - "verifiableCredential": { - "@context": [ - "https://www.w3.org/2018/credentials/v1", - "https://w3id.org/security/suites/ed25519-2020/v1" - ], - "id": "urn:uuid:4eb046be-55d8-4d8d-8fc1-d1bbfc85b674", - "type": "VerifiableCredential", - "issuer": "https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020", - "issuanceDate": "2020-03-16T22:37:26.544Z", - "credentialSubject": { - "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" - }, - "proof": { - "verificationMethod": "did:key:z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y#z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y", - "type": "Ed25519Signature2020", - "proofPurpose": "assertionMethod", - "created": "2024-08-25T05:02:19Z", - "proofValue": "z5wJUjfWgAAU9LSj57EzKcT3qbduDryZZ1Aqmp9ZyJfnoiWLKz34woY745bw3m5S7oHcxwwBYhZ6RAy3rBB1eofxs" - } - }, - "options": { - "checks": [ - "proof" - ] - } - }, - "agent": { - "_events": {}, - "_eventsCount": 2, - "defaultPort": 443, - "protocol": "https:", - "options": { - "rejectUnauthorized": false, - "noDelay": true, - "path": null - }, - "requests": {}, - "sockets": {}, - "freeSockets": {}, - "keepAliveMsecs": 1000, - "keepAlive": false, - "maxSockets": null, - "maxFreeSockets": 256, - "scheduling": "lifo", - "maxTotalSockets": null, - "totalSocketCount": 0, - "maxCachedSessions": 100, - "_sessionCache": { - "map": {}, - "list": [] - } - }, - "hooks": { - "beforeRequest": [], - "beforeRetry": [], - "beforeError": [], - "afterResponse": [] - }, - "prefixUrl": "", - "retry": { - "limit": 2, - "methods": [ - "get", - "put", - "head", - "delete", - "options", - "trace" - ], - "statusCodes": [ - 408, - 413, - 429, - 500, - 502, - 503, - 504 - ], - "afterStatusCodes": [ - 413, - 429, - 503 - ], - "maxRetryAfter": null, - "backoffLimit": null - }, - "throwHttpErrors": true, - "timeout": 10000, - "signal": {}, - "duplex": "half" - }, - "name": "HTTPError", - "requestUrl": "https://bridge.learncard.com/credentials/verify", - "status": 400, - "data": "Invalid input: [\n {\n \"code\": \"invalid_type\",\n \"expected\": \"array\",\n \"received\": \"string\",\n \"path\": [\n \"verifiableCredential\",\n \"type\"\n ],\n \"message\": \"Expected array, received string\"\n }\n]" - }, - "operator": "notStrictEqual", - "stack": "AssertionError: Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js:66:20)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" - } + "_idleStart": 45993, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 428, + "state": "passed", + "speed": "slow" }, { "type": "test", - "title": "OpSecId should verify apicatalog.com", - "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", + "title": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(incorrectCannonization);\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -28442,152 +27737,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "5DqiEVwX6wS_Z2SluWABU", "ctx": null, - "_testId": "urn:uuid:6573a4d9-47c0-45e4-9033-cb8041eb0a5f", + "_testId": "urn:uuid:74a3cd38-b3b7-430f-a398-b6a38b81d484", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "apicatalog.com", - "columnId": "OpSecId" + "columnId": "Digital Bazaar", + "rowId": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 48716, + "_idleStart": 47226, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 24, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist", - "showDiff": false, - "actual": { - "response": {}, - "request": {}, - "options": { - "credentials": "same-origin", - "headers": {}, - "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",\"https://w3id.org/security/suites/ed25519-2020/v1\"],\"id\":\"urn:uuid:4eb046be-55d8-4d8d-8fc1-d1bbfc85b674\",\"type\":\"VerifiableCredential\",\"issuer\":\"https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"verificationMethod\":\"did:key:z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y#z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y\",\"type\":\"Ed25519Signature2020\",\"proofPurpose\":\"assertionMethod\",\"created\":\"2024-08-25T05:02:19Z\",\"proofValue\":\"z5wJUjfWgAAU9LSj57EzKcT3qbduDryZZ1Aqmp9ZyJfnoiWLKz34woY745bw3m5S7oHcxwwBYhZ6RAy3rBB1eofxs\"}},\"options\":{\"checks\":[\"proof\"]}}", - "method": "POST", - "json": { - "verifiableCredential": { - "@context": [ - "https://www.w3.org/2018/credentials/v1", - "https://w3id.org/security/suites/ed25519-2020/v1" - ], - "id": "urn:uuid:4eb046be-55d8-4d8d-8fc1-d1bbfc85b674", - "type": "VerifiableCredential", - "issuer": "https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020", - "issuanceDate": "2020-03-16T22:37:26.544Z", - "credentialSubject": { - "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" - }, - "proof": { - "verificationMethod": "did:key:z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y#z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y", - "type": "Ed25519Signature2020", - "proofPurpose": "assertionMethod", - "created": "2024-08-25T05:02:19Z", - "proofValue": "z5wJUjfWgAAU9LSj57EzKcT3qbduDryZZ1Aqmp9ZyJfnoiWLKz34woY745bw3m5S7oHcxwwBYhZ6RAy3rBB1eofxs" - } - }, - "options": { - "checks": [ - "proof" - ] - } - }, - "agent": { - "_events": {}, - "_eventsCount": 2, - "defaultPort": 443, - "protocol": "https:", - "options": { - "rejectUnauthorized": false, - "noDelay": true, - "path": null - }, - "requests": {}, - "sockets": {}, - "freeSockets": {}, - "keepAliveMsecs": 1000, - "keepAlive": false, - "maxSockets": null, - "maxFreeSockets": 256, - "scheduling": "lifo", - "maxTotalSockets": null, - "totalSocketCount": 0, - "maxCachedSessions": 100, - "_sessionCache": { - "map": {}, - "list": [] - } - }, - "hooks": { - "beforeRequest": [], - "beforeRetry": [], - "beforeError": [], - "afterResponse": [] - }, - "prefixUrl": "", - "retry": { - "limit": 2, - "methods": [ - "get", - "put", - "head", - "delete", - "options", - "trace" - ], - "statusCodes": [ - 408, - 413, - 429, - 500, - 502, - 503, - 504 - ], - "afterStatusCodes": [ - 413, - 429, - 503 - ], - "maxRetryAfter": null, - "backoffLimit": null - }, - "throwHttpErrors": true, - "timeout": 10000, - "signal": {}, - "duplex": "half" - }, - "name": "HTTPError", - "requestUrl": "https://agent.opsec.id/vc/credentials/verify", - "status": 422, - "data": { - "json": { - "verifiableCredential": { - "type": [ - "Not a valid list." - ] - } - } - } - }, - "operator": "notStrictEqual", - "stack": "AssertionError: Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js:66:20)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" - } + "duration": 52, + "state": "passed", + "speed": "medium" }, { "type": "test", - "title": "SpruceID should verify apicatalog.com", - "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", + "title": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(incorrectCannonization);\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -28596,143 +27772,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "i0xuW3XmFHBfs6bhK6_IC", "ctx": null, - "_testId": "urn:uuid:1e16e00b-ff41-48ad-88ae-f77514076ff7", + "_testId": "urn:uuid:117a08bf-ee46-4148-b533-d394dfcf44e8", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "apicatalog.com", - "columnId": "SpruceID" + "columnId": "EWF", + "rowId": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 48740, + "_idleStart": 47806, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 27, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(5) } to not exist", - "showDiff": false, - "actual": { - "response": {}, - "request": {}, - "options": { - "credentials": "same-origin", - "headers": {}, - "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",\"https://w3id.org/security/suites/ed25519-2020/v1\"],\"id\":\"urn:uuid:4eb046be-55d8-4d8d-8fc1-d1bbfc85b674\",\"type\":\"VerifiableCredential\",\"issuer\":\"https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"verificationMethod\":\"did:key:z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y#z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y\",\"type\":\"Ed25519Signature2020\",\"proofPurpose\":\"assertionMethod\",\"created\":\"2024-08-25T05:02:19Z\",\"proofValue\":\"z5wJUjfWgAAU9LSj57EzKcT3qbduDryZZ1Aqmp9ZyJfnoiWLKz34woY745bw3m5S7oHcxwwBYhZ6RAy3rBB1eofxs\"}},\"options\":{\"checks\":[\"proof\"]}}", - "method": "POST", - "json": { - "verifiableCredential": { - "@context": [ - "https://www.w3.org/2018/credentials/v1", - "https://w3id.org/security/suites/ed25519-2020/v1" - ], - "id": "urn:uuid:4eb046be-55d8-4d8d-8fc1-d1bbfc85b674", - "type": "VerifiableCredential", - "issuer": "https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020", - "issuanceDate": "2020-03-16T22:37:26.544Z", - "credentialSubject": { - "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" - }, - "proof": { - "verificationMethod": "did:key:z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y#z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y", - "type": "Ed25519Signature2020", - "proofPurpose": "assertionMethod", - "created": "2024-08-25T05:02:19Z", - "proofValue": "z5wJUjfWgAAU9LSj57EzKcT3qbduDryZZ1Aqmp9ZyJfnoiWLKz34woY745bw3m5S7oHcxwwBYhZ6RAy3rBB1eofxs" - } - }, - "options": { - "checks": [ - "proof" - ] - } - }, - "agent": { - "_events": {}, - "_eventsCount": 2, - "defaultPort": 443, - "protocol": "https:", - "options": { - "rejectUnauthorized": false, - "noDelay": true, - "path": null - }, - "requests": {}, - "sockets": {}, - "freeSockets": {}, - "keepAliveMsecs": 1000, - "keepAlive": false, - "maxSockets": null, - "maxFreeSockets": 256, - "scheduling": "lifo", - "maxTotalSockets": null, - "totalSocketCount": 0, - "maxCachedSessions": 100, - "_sessionCache": { - "map": {}, - "list": [] - } - }, - "hooks": { - "beforeRequest": [], - "beforeRetry": [], - "beforeError": [], - "afterResponse": [] - }, - "prefixUrl": "", - "retry": { - "limit": 2, - "methods": [ - "get", - "put", - "head", - "delete", - "options", - "trace" - ], - "statusCodes": [ - 408, - 413, - 429, - 500, - 502, - 503, - 504 - ], - "afterStatusCodes": [ - 413, - 429, - 503 - ], - "maxRetryAfter": null, - "backoffLimit": null - }, - "throwHttpErrors": true, - "timeout": 10000, - "signal": {}, - "duplex": "half" - }, - "name": "HTTPError", - "requestUrl": "https://vc.spruceid.xyz/credentials/verify", - "status": 400 - }, - "operator": "notStrictEqual", - "stack": "AssertionError: Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(5) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js:66:20)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" - } + "duration": 106, + "state": "passed", + "speed": "slow" }, { "type": "test", - "title": "Trinsic should verify apicatalog.com", - "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", + "title": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(incorrectCannonization);\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -28741,148 +27807,150 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "jNe7b7VyeLRtboCU_Rv_G", "ctx": null, - "_testId": "urn:uuid:47873a4a-66b6-4381-a7f1-62305057aa8c", + "_testId": "urn:uuid:d18ac188-edf5-4cb1-b73d-16ac4e2d1de1", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "apicatalog.com", - "columnId": "Trinsic" + "columnId": "LearnCard", + "rowId": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 48767, + "_idleStart": 48184, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 35, + "duration": 72, + "state": "passed", + "speed": "medium" + }, + { + "type": "test", + "title": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(incorrectCannonization);\n await verificationFail({credential, verifier});\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "GBtDIvSMqEPlwBidQKbyq", + "ctx": null, + "_testId": "urn:uuid:8d494c53-eccc-4d8f-8d7d-e93d2d81aa6b", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "OpSecId", + "rowId": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised." + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 48500, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 34, "state": "failed", "err": { "name": "AssertionError", - "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(5) } to not exist", + "message": "Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'content-length': '638', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 01 Sep 2024 05:02:20 GMT', server: 'Python/3.12 aiohttp/3.10.5', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist", "showDiff": false, - "actual": { - "response": {}, - "request": {}, - "options": { - "credentials": "same-origin", - "headers": {}, - "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",\"https://w3id.org/security/suites/ed25519-2020/v1\"],\"id\":\"urn:uuid:4eb046be-55d8-4d8d-8fc1-d1bbfc85b674\",\"type\":\"VerifiableCredential\",\"issuer\":\"https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"verificationMethod\":\"did:key:z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y#z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y\",\"type\":\"Ed25519Signature2020\",\"proofPurpose\":\"assertionMethod\",\"created\":\"2024-08-25T05:02:19Z\",\"proofValue\":\"z5wJUjfWgAAU9LSj57EzKcT3qbduDryZZ1Aqmp9ZyJfnoiWLKz34woY745bw3m5S7oHcxwwBYhZ6RAy3rBB1eofxs\"}},\"options\":{\"checks\":[\"proof\"]}}", - "method": "POST", - "json": { - "verifiableCredential": { - "@context": [ - "https://www.w3.org/2018/credentials/v1", - "https://w3id.org/security/suites/ed25519-2020/v1" - ], - "id": "urn:uuid:4eb046be-55d8-4d8d-8fc1-d1bbfc85b674", - "type": "VerifiableCredential", - "issuer": "https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020", - "issuanceDate": "2020-03-16T22:37:26.544Z", - "credentialSubject": { - "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" - }, - "proof": { - "verificationMethod": "did:key:z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y#z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y", - "type": "Ed25519Signature2020", - "proofPurpose": "assertionMethod", - "created": "2024-08-25T05:02:19Z", - "proofValue": "z5wJUjfWgAAU9LSj57EzKcT3qbduDryZZ1Aqmp9ZyJfnoiWLKz34woY745bw3m5S7oHcxwwBYhZ6RAy3rBB1eofxs" - } - }, - "options": { - "checks": [ - "proof" - ] - } - }, - "agent": { - "_events": {}, - "_eventsCount": 2, - "defaultPort": 443, - "protocol": "https:", - "options": { - "rejectUnauthorized": false, - "noDelay": true, - "path": null - }, - "requests": {}, - "sockets": {}, - "freeSockets": {}, - "keepAliveMsecs": 1000, - "keepAlive": false, - "maxSockets": null, - "maxFreeSockets": 256, - "scheduling": "lifo", - "maxTotalSockets": null, - "totalSocketCount": 0, - "maxCachedSessions": 100, - "_sessionCache": { - "map": {}, - "list": [] - } - }, - "hooks": { - "beforeRequest": [], - "beforeRetry": [], - "beforeError": [], - "afterResponse": [] - }, - "prefixUrl": "", - "retry": { - "limit": 2, - "methods": [ - "get", - "put", - "head", - "delete", - "options", - "trace" - ], - "statusCodes": [ - 408, - 413, - 429, - 500, - 502, - 503, - 504 - ], - "afterStatusCodes": [ - 413, - 429, - 503 - ], - "maxRetryAfter": null, - "backoffLimit": null - }, - "throwHttpErrors": true, - "timeout": 10000, - "signal": {}, - "duplex": "half" - }, - "name": "HTTPError", - "requestUrl": "https://interop.connect.trinsic.cloud/vc-api/credentials/verify", - "status": 400 - }, + "actual": {}, "operator": "notStrictEqual", - "stack": "AssertionError: Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(5) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js:66:20)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" + "stack": "AssertionError: Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'content-length': '638', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 01 Sep 2024 05:02:20 GMT', server: 'Python/3.12 aiohttp/3.10.5', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at verificationFail (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/assertions.js:49:14)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js:82:11)" } + }, + { + "type": "test", + "title": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(incorrectCannonization);\n await verificationFail({credential, verifier});\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "RLzBESM9-8OkejA0_Pzy1", + "ctx": null, + "_testId": "urn:uuid:7b58ce8a-5e0b-4676-b502-cb2090e13c27", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "SpruceID", + "rowId": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised." + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 48653, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 24, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(incorrectCannonization);\n await verificationFail({credential, verifier});\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "Q85gqc88D-dHrnciSy5Ou", + "ctx": null, + "_testId": "urn:uuid:8f009666-695a-409e-8e50-28cd55dd76f9", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "Trinsic", + "rowId": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised." + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 48781, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 42, + "state": "passed", + "speed": "medium" } ] }, { - "id": "Danube Tech", + "id": "If a canonicalization data hashing algorithm SHA-2-256 is used, an error MUST be raised.", "cells": [ { "type": "test", - "title": "apicatalog.com should verify Danube Tech", - "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", + "title": "If a canonicalization data hashing algorithm SHA-2-256 is used, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(incorrectHash);\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -28891,33 +27959,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "SYk__RoIcNevhL9oBlZRQ", "ctx": null, - "_testId": "urn:uuid:9ade50eb-e9a0-4e36-9351-b1095fba498b", + "_testId": "urn:uuid:42f63759-af9f-4b83-a7bc-e7ad929c9709", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "Danube Tech", - "columnId": "apicatalog.com" + "columnId": "apicatalog.com", + "rowId": "If a canonicalization data hashing algorithm SHA-2-256 is used, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 48803, + "_idleStart": 44589, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 59, + "duration": 52, "state": "passed", "speed": "medium" }, { "type": "test", - "title": "Danube Tech should verify Danube Tech", - "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", + "title": "If a canonicalization data hashing algorithm SHA-2-256 is used, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(incorrectHash);\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -28926,33 +27994,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "NQ-Cpmwho3QjhxjyGQ0zo", "ctx": null, - "_testId": "urn:uuid:f501bab6-ccc7-47aa-a913-890eadfc656c", + "_testId": "urn:uuid:bf54cbd4-a70c-49b6-bc60-dce8e6bb54b6", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "Danube Tech", - "columnId": "Danube Tech" + "columnId": "Danube Tech", + "rowId": "If a canonicalization data hashing algorithm SHA-2-256 is used, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 48863, + "_idleStart": 46422, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 443, + "duration": 453, "state": "passed", "speed": "slow" }, { "type": "test", - "title": "Digital Bazaar should verify Danube Tech", - "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", + "title": "If a canonicalization data hashing algorithm SHA-2-256 is used, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(incorrectHash);\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -28961,33 +28029,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "5DqiEVwX6wS_Z2SluWABU", "ctx": null, - "_testId": "urn:uuid:b3b2679f-cacd-4c11-bb6a-eca6e3d99faf", + "_testId": "urn:uuid:9247647c-abc1-4072-8bf1-2eea144aeae8", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "Danube Tech", - "columnId": "Digital Bazaar" + "columnId": "Digital Bazaar", + "rowId": "If a canonicalization data hashing algorithm SHA-2-256 is used, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 49305, + "_idleStart": 47277, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 47, + "duration": 49, "state": "passed", "speed": "medium" }, { "type": "test", - "title": "EWF should verify Danube Tech", - "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", + "title": "If a canonicalization data hashing algorithm SHA-2-256 is used, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(incorrectHash);\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -28996,33 +28064,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "i0xuW3XmFHBfs6bhK6_IC", "ctx": null, - "_testId": "urn:uuid:e723fa86-ddb1-4984-ae22-7ba161694ade", + "_testId": "urn:uuid:5463e765-f5fa-4131-b2ff-00b04a635898", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "Danube Tech", - "columnId": "EWF" + "columnId": "EWF", + "rowId": "If a canonicalization data hashing algorithm SHA-2-256 is used, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 49353, + "_idleStart": 47912, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 100, + "duration": 105, "state": "passed", "speed": "slow" }, { "type": "test", - "title": "LearnCard should verify Danube Tech", - "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", + "title": "If a canonicalization data hashing algorithm SHA-2-256 is used, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(incorrectHash);\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -29031,33 +28099,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "jNe7b7VyeLRtboCU_Rv_G", "ctx": null, - "_testId": "urn:uuid:3a6ddbde-6fc6-47b4-9be8-0121939da4b4", + "_testId": "urn:uuid:1535d51b-28df-4370-801f-470fc0736227", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "Danube Tech", - "columnId": "LearnCard" + "columnId": "LearnCard", + "rowId": "If a canonicalization data hashing algorithm SHA-2-256 is used, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 49453, + "_idleStart": 48257, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 65, + "duration": 81, "state": "passed", - "speed": "medium" + "speed": "slow" }, { "type": "test", - "title": "OpSecId should verify Danube Tech", - "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", + "title": "If a canonicalization data hashing algorithm SHA-2-256 is used, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(incorrectHash);\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -29066,33 +28134,40 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "GBtDIvSMqEPlwBidQKbyq", "ctx": null, - "_testId": "urn:uuid:3a120374-b56a-4e69-957b-a55bf3e7212f", + "_testId": "urn:uuid:cbe20f64-c4b6-4ce4-96e0-56209a711b39", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "Danube Tech", - "columnId": "OpSecId" + "columnId": "OpSecId", + "rowId": "If a canonicalization data hashing algorithm SHA-2-256 is used, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 49517, + "_idleStart": 48534, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 45, - "state": "passed", - "speed": "medium" + "duration": 42, + "state": "failed", + "err": { + "name": "AssertionError", + "message": "Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'content-length': '638', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 01 Sep 2024 05:02:20 GMT', server: 'Python/3.12 aiohttp/3.10.5', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist", + "showDiff": false, + "actual": {}, + "operator": "notStrictEqual", + "stack": "AssertionError: Expected no result from verifier.: expected Response { status: 200, statusText: 'OK', headers: Headers { 'content-length': '638', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 01 Sep 2024 05:02:20 GMT', server: 'Python/3.12 aiohttp/3.10.5', Authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at verificationFail (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/assertions.js:49:14)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js:91:11)" + } }, { "type": "test", - "title": "SpruceID should verify Danube Tech", - "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", + "title": "If a canonicalization data hashing algorithm SHA-2-256 is used, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(incorrectHash);\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -29101,33 +28176,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "RLzBESM9-8OkejA0_Pzy1", "ctx": null, - "_testId": "urn:uuid:91f4ecda-db46-4ab5-ad11-c4404deda139", + "_testId": "urn:uuid:0dba9400-f87c-4ed8-8b0b-2a92ee659186", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "Danube Tech", - "columnId": "SpruceID" + "columnId": "SpruceID", + "rowId": "If a canonicalization data hashing algorithm SHA-2-256 is used, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 49563, + "_idleStart": 48678, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 28, + "duration": 29, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "Trinsic should verify Danube Tech", - "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", + "title": "If a canonicalization data hashing algorithm SHA-2-256 is used, an error MUST be raised.", + "body": "async function() {\n this.test.cell = {\n columnId: name,\n rowId: this.test.title\n };\n const credential = klona(incorrectHash);\n await verificationFail({credential, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -29136,37 +28211,345 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "Q85gqc88D-dHrnciSy5Ou", "ctx": null, - "_testId": "urn:uuid:f2df30de-3e2d-4640-9d22-ba842f3306f2", + "_testId": "urn:uuid:c8e30e5d-2408-4584-814f-ad455f56c5c2", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "Danube Tech", - "columnId": "Trinsic" + "columnId": "Trinsic", + "rowId": "If a canonicalization data hashing algorithm SHA-2-256 is used, an error MUST be raised." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 49592, + "_idleStart": 48823, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 34, + "duration": 32, "state": "passed", "speed": "fast" } ] + } + ] + }, + { + "title": "Ed25519Signature2020 (interop)", + "ctx": null, + "suites": [], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [], + "_beforeAll": [ + { + "title": "\"before all\" hook in \"Ed25519Signature2020 (interop)\"", + "body": "async function() {\n const credentials = await generateTestData();\n validVc = credentials.get('validVc');\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "type": "hook", + "parent": "Df-YsqubGetRbgav6-8J3", + "ctx": null, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", + "originalTitle": "\"before all\" hook", + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 48857, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 1, + "_error": null + }, + { + "title": "\"before all\" hook in \"Ed25519Signature2020 (interop)\"", + "body": "async function() {\n const issuer = issuers.find(issuer =>\n issuer.tags.has(tag));\n const {settings: {id: issuerId, options}} = issuer;\n const body = {credential: klona(validVc), options};\n body.credential.id = `urn:uuid:${uuidv4()}`;\n body.credential.issuer = issuerId;\n const {data, error} = await issuer.post({json: body});\n issuerError = error;\n issuedVc = data;\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "type": "hook", + "parent": "Df-YsqubGetRbgav6-8J3", + "ctx": null, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", + "originalTitle": "\"before all\" hook", + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 48858, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 168, + "_error": null + }, + { + "title": "\"before all\" hook in \"Ed25519Signature2020 (interop)\"", + "body": "async function() {\n const issuer = issuers.find(issuer =>\n issuer.tags.has(tag));\n const {settings: {id: issuerId, options}} = issuer;\n const body = {credential: klona(validVc), options};\n body.credential.id = `urn:uuid:${uuidv4()}`;\n body.credential.issuer = issuerId;\n const {data, error} = await issuer.post({json: body});\n issuerError = error;\n issuedVc = data;\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "type": "hook", + "parent": "Df-YsqubGetRbgav6-8J3", + "ctx": null, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", + "originalTitle": "\"before all\" hook", + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 49026, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 685, + "_error": null + }, + { + "title": "\"before all\" hook in \"Ed25519Signature2020 (interop)\"", + "body": "async function() {\n const issuer = issuers.find(issuer =>\n issuer.tags.has(tag));\n const {settings: {id: issuerId, options}} = issuer;\n const body = {credential: klona(validVc), options};\n body.credential.id = `urn:uuid:${uuidv4()}`;\n body.credential.issuer = issuerId;\n const {data, error} = await issuer.post({json: body});\n issuerError = error;\n issuedVc = data;\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "type": "hook", + "parent": "Df-YsqubGetRbgav6-8J3", + "ctx": null, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", + "originalTitle": "\"before all\" hook", + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 49710, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 226, + "_error": null + }, + { + "title": "\"before all\" hook in \"Ed25519Signature2020 (interop)\"", + "body": "async function() {\n const issuer = issuers.find(issuer =>\n issuer.tags.has(tag));\n const {settings: {id: issuerId, options}} = issuer;\n const body = {credential: klona(validVc), options};\n body.credential.id = `urn:uuid:${uuidv4()}`;\n body.credential.issuer = issuerId;\n const {data, error} = await issuer.post({json: body});\n issuerError = error;\n issuedVc = data;\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "type": "hook", + "parent": "Df-YsqubGetRbgav6-8J3", + "ctx": null, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", + "originalTitle": "\"before all\" hook", + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 49937, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 112, + "_error": null + }, + { + "title": "\"before all\" hook in \"Ed25519Signature2020 (interop)\"", + "body": "async function() {\n const issuer = issuers.find(issuer =>\n issuer.tags.has(tag));\n const {settings: {id: issuerId, options}} = issuer;\n const body = {credential: klona(validVc), options};\n body.credential.id = `urn:uuid:${uuidv4()}`;\n body.credential.issuer = issuerId;\n const {data, error} = await issuer.post({json: body});\n issuerError = error;\n issuedVc = data;\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "type": "hook", + "parent": "Df-YsqubGetRbgav6-8J3", + "ctx": null, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", + "originalTitle": "\"before all\" hook", + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 50049, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 67, + "_error": null + }, + { + "title": "\"before all\" hook in \"Ed25519Signature2020 (interop)\"", + "body": "async function() {\n const issuer = issuers.find(issuer =>\n issuer.tags.has(tag));\n const {settings: {id: issuerId, options}} = issuer;\n const body = {credential: klona(validVc), options};\n body.credential.id = `urn:uuid:${uuidv4()}`;\n body.credential.issuer = issuerId;\n const {data, error} = await issuer.post({json: body});\n issuerError = error;\n issuedVc = data;\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "type": "hook", + "parent": "Df-YsqubGetRbgav6-8J3", + "ctx": null, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", + "originalTitle": "\"before all\" hook", + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 50116, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 30, + "_error": null }, { - "id": "Digital Bazaar", + "title": "\"before all\" hook in \"Ed25519Signature2020 (interop)\"", + "body": "async function() {\n const issuer = issuers.find(issuer =>\n issuer.tags.has(tag));\n const {settings: {id: issuerId, options}} = issuer;\n const body = {credential: klona(validVc), options};\n body.credential.id = `urn:uuid:${uuidv4()}`;\n body.credential.issuer = issuerId;\n const {data, error} = await issuer.post({json: body});\n issuerError = error;\n issuedVc = data;\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "type": "hook", + "parent": "Df-YsqubGetRbgav6-8J3", + "ctx": null, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", + "originalTitle": "\"before all\" hook", + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 50146, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 22, + "_error": null + }, + { + "title": "\"before all\" hook in \"Ed25519Signature2020 (interop)\"", + "body": "async function() {\n const issuer = issuers.find(issuer =>\n issuer.tags.has(tag));\n const {settings: {id: issuerId, options}} = issuer;\n const body = {credential: klona(validVc), options};\n body.credential.id = `urn:uuid:${uuidv4()}`;\n body.credential.issuer = issuerId;\n const {data, error} = await issuer.post({json: body});\n issuerError = error;\n issuedVc = data;\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "type": "hook", + "parent": "Df-YsqubGetRbgav6-8J3", + "ctx": null, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", + "originalTitle": "\"before all\" hook", + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 50168, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 39, + "_error": null + } + ], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "lBHY2oeJzzsZZyGPAusKI", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", + "matrix": true, + "report": true, + "rowLabel": "Issuer", + "columnLabel": "Verifier", + "_testId": "urn:uuid:12b55ab3-a238-441d-8cd7-a0c6934a174d", + "columns": [ + "apicatalog.com", + "Danube Tech", + "Digital Bazaar", + "EWF", + "LearnCard", + "OpSecId", + "SpruceID", + "Trinsic" + ], + "rows": [ + { + "id": "apicatalog.com", "cells": [ { "type": "test", - "title": "apicatalog.com should verify Digital Bazaar", + "title": "apicatalog.com should verify apicatalog.com", "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", "async": 0, "sync": true, @@ -29177,31 +28560,149 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", + "parent": "Df-YsqubGetRbgav6-8J3", "ctx": null, - "_testId": "urn:uuid:30ff5655-d0c6-4e37-bc03-5da67ef20f68", + "_testId": "urn:uuid:f3a689e3-12d7-423e-97b0-fde21270d3f7", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "Digital Bazaar", + "rowId": "apicatalog.com", "columnId": "apicatalog.com" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 49626, + "_idleStart": 50207, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 46, - "state": "passed", - "speed": "medium" + "duration": 49, + "state": "failed", + "err": { + "name": "AssertionError", + "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist", + "showDiff": false, + "actual": { + "response": {}, + "request": {}, + "options": { + "credentials": "same-origin", + "headers": {}, + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",\"https://w3id.org/security/suites/ed25519-2020/v1\"],\"id\":\"urn:uuid:bed0b929-a417-40e8-82c2-d404ceb022d4\",\"type\":\"VerifiableCredential\",\"issuer\":\"https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"verificationMethod\":\"did:key:z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y#z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y\",\"type\":\"Ed25519Signature2020\",\"proofPurpose\":\"assertionMethod\",\"created\":\"2024-09-01T05:02:20Z\",\"proofValue\":\"zXUkW92o6y3pdQ5MWADopA1NqPzTJQLeggTMS2kjmtF5Fy5au5oDD3yPSD318h7GNYDYPTnVaRDKB3ey85VwkAMb\"}},\"options\":{\"checks\":[\"proof\"]}}", + "method": "POST", + "json": { + "verifiableCredential": { + "@context": [ + "https://www.w3.org/2018/credentials/v1", + "https://w3id.org/security/suites/ed25519-2020/v1" + ], + "id": "urn:uuid:bed0b929-a417-40e8-82c2-d404ceb022d4", + "type": "VerifiableCredential", + "issuer": "https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020", + "issuanceDate": "2020-03-16T22:37:26.544Z", + "credentialSubject": { + "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" + }, + "proof": { + "verificationMethod": "did:key:z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y#z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y", + "type": "Ed25519Signature2020", + "proofPurpose": "assertionMethod", + "created": "2024-09-01T05:02:20Z", + "proofValue": "zXUkW92o6y3pdQ5MWADopA1NqPzTJQLeggTMS2kjmtF5Fy5au5oDD3yPSD318h7GNYDYPTnVaRDKB3ey85VwkAMb" + } + }, + "options": { + "checks": [ + "proof" + ] + } + }, + "agent": { + "_events": {}, + "_eventsCount": 2, + "defaultPort": 443, + "protocol": "https:", + "options": { + "rejectUnauthorized": false, + "noDelay": true, + "path": null + }, + "requests": {}, + "sockets": {}, + "freeSockets": {}, + "keepAliveMsecs": 1000, + "keepAlive": false, + "maxSockets": null, + "maxFreeSockets": 256, + "scheduling": "lifo", + "maxTotalSockets": null, + "totalSocketCount": 0, + "maxCachedSessions": 100, + "_sessionCache": { + "map": {}, + "list": [] + } + }, + "hooks": { + "beforeRequest": [], + "beforeRetry": [], + "beforeError": [], + "afterResponse": [] + }, + "prefixUrl": "", + "retry": { + "limit": 2, + "methods": [ + "get", + "put", + "head", + "delete", + "options", + "trace" + ], + "statusCodes": [ + 408, + 413, + 429, + 500, + 502, + 503, + 504 + ], + "afterStatusCodes": [ + 413, + 429, + 503 + ], + "maxRetryAfter": null, + "backoffLimit": null + }, + "throwHttpErrors": true, + "timeout": 10000, + "signal": {}, + "duplex": "half" + }, + "name": "HTTPError", + "requestUrl": "https://vc.apicatalog.com/credentials/verify", + "status": 400, + "data": { + "checks": [ + "PROOF", + "INVALID_SIGNATURE" + ], + "warnings": [], + "errors": [] + } + }, + "operator": "notStrictEqual", + "stack": "AssertionError: Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js:66:20)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" + } }, { "type": "test", - "title": "Danube Tech should verify Digital Bazaar", + "title": "Danube Tech should verify apicatalog.com", "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", "async": 0, "sync": true, @@ -29212,31 +28713,144 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", + "parent": "Df-YsqubGetRbgav6-8J3", "ctx": null, - "_testId": "urn:uuid:20e24ca8-c3de-41e4-8623-5e1c74dbc87c", + "_testId": "urn:uuid:a4980462-65b7-42fd-9c66-7a594e99660e", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "Digital Bazaar", + "rowId": "apicatalog.com", "columnId": "Danube Tech" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 49671, + "_idleStart": 50256, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 427, - "state": "passed", - "speed": "slow" + "duration": 247, + "state": "failed", + "err": { + "name": "AssertionError", + "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist", + "showDiff": false, + "actual": { + "response": {}, + "request": {}, + "options": { + "credentials": "same-origin", + "headers": {}, + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",\"https://w3id.org/security/suites/ed25519-2020/v1\"],\"id\":\"urn:uuid:bed0b929-a417-40e8-82c2-d404ceb022d4\",\"type\":\"VerifiableCredential\",\"issuer\":\"https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"verificationMethod\":\"did:key:z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y#z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y\",\"type\":\"Ed25519Signature2020\",\"proofPurpose\":\"assertionMethod\",\"created\":\"2024-09-01T05:02:20Z\",\"proofValue\":\"zXUkW92o6y3pdQ5MWADopA1NqPzTJQLeggTMS2kjmtF5Fy5au5oDD3yPSD318h7GNYDYPTnVaRDKB3ey85VwkAMb\"}},\"options\":{\"checks\":[\"proof\"]}}", + "method": "POST", + "json": { + "verifiableCredential": { + "@context": [ + "https://www.w3.org/2018/credentials/v1", + "https://w3id.org/security/suites/ed25519-2020/v1" + ], + "id": "urn:uuid:bed0b929-a417-40e8-82c2-d404ceb022d4", + "type": "VerifiableCredential", + "issuer": "https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020", + "issuanceDate": "2020-03-16T22:37:26.544Z", + "credentialSubject": { + "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" + }, + "proof": { + "verificationMethod": "did:key:z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y#z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y", + "type": "Ed25519Signature2020", + "proofPurpose": "assertionMethod", + "created": "2024-09-01T05:02:20Z", + "proofValue": "zXUkW92o6y3pdQ5MWADopA1NqPzTJQLeggTMS2kjmtF5Fy5au5oDD3yPSD318h7GNYDYPTnVaRDKB3ey85VwkAMb" + } + }, + "options": { + "checks": [ + "proof" + ] + } + }, + "agent": { + "_events": {}, + "_eventsCount": 2, + "defaultPort": 443, + "protocol": "https:", + "options": { + "rejectUnauthorized": false, + "noDelay": true, + "path": null + }, + "requests": {}, + "sockets": {}, + "freeSockets": {}, + "keepAliveMsecs": 1000, + "keepAlive": false, + "maxSockets": null, + "maxFreeSockets": 256, + "scheduling": "lifo", + "maxTotalSockets": null, + "totalSocketCount": 0, + "maxCachedSessions": 100, + "_sessionCache": { + "map": {}, + "list": [] + } + }, + "hooks": { + "beforeRequest": [], + "beforeRetry": [], + "beforeError": [], + "afterResponse": [] + }, + "prefixUrl": "", + "retry": { + "limit": 2, + "methods": [ + "get", + "put", + "head", + "delete", + "options", + "trace" + ], + "statusCodes": [ + 408, + 413, + 429, + 500, + 502, + 503, + 504 + ], + "afterStatusCodes": [ + 413, + 429, + 503 + ], + "maxRetryAfter": null, + "backoffLimit": null + }, + "throwHttpErrors": true, + "timeout": 10000, + "signal": {}, + "duplex": "half" + }, + "name": "HTTPError", + "requestUrl": "https://univerifier.io/1.0/credentials/verify", + "status": 400, + "data": { + "checks": [] + } + }, + "operator": "notStrictEqual", + "stack": "AssertionError: Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js:66:20)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" + } }, { "type": "test", - "title": "Digital Bazaar should verify Digital Bazaar", + "title": "Digital Bazaar should verify apicatalog.com", "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", "async": 0, "sync": true, @@ -29247,31 +28861,447 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", + "parent": "Df-YsqubGetRbgav6-8J3", "ctx": null, - "_testId": "urn:uuid:d6f793d1-89ff-4d83-93a3-a85b765cf75f", + "_testId": "urn:uuid:832dfcde-a3f5-4559-98a3-bd24e2789883", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "Digital Bazaar", + "rowId": "apicatalog.com", "columnId": "Digital Bazaar" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 50099, + "_idleStart": 50503, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 51, - "state": "passed", - "speed": "medium" + "duration": 39, + "state": "failed", + "err": { + "name": "AssertionError", + "message": "Expected verifier to not error.: expected HTTPError: A validation error occured in … { …(6) } to not exist", + "showDiff": false, + "actual": { + "response": {}, + "request": {}, + "options": { + "credentials": "same-origin", + "headers": {}, + "method": "POST", + "json": { + "verifiableCredential": { + "@context": [ + "https://www.w3.org/2018/credentials/v1", + "https://w3id.org/security/suites/ed25519-2020/v1" + ], + "id": "urn:uuid:bed0b929-a417-40e8-82c2-d404ceb022d4", + "type": "VerifiableCredential", + "issuer": "https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020", + "issuanceDate": "2020-03-16T22:37:26.544Z", + "credentialSubject": { + "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" + }, + "proof": { + "verificationMethod": "did:key:z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y#z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y", + "type": "Ed25519Signature2020", + "proofPurpose": "assertionMethod", + "created": "2024-09-01T05:02:20Z", + "proofValue": "zXUkW92o6y3pdQ5MWADopA1NqPzTJQLeggTMS2kjmtF5Fy5au5oDD3yPSD318h7GNYDYPTnVaRDKB3ey85VwkAMb" + } + }, + "options": { + "checks": [ + "proof" + ] + } + }, + "agent": { + "_events": {}, + "_eventsCount": 2, + "defaultPort": 443, + "protocol": "https:", + "options": { + "rejectUnauthorized": false, + "noDelay": true, + "path": null + }, + "requests": {}, + "sockets": {}, + "freeSockets": {}, + "keepAliveMsecs": 1000, + "keepAlive": false, + "maxSockets": null, + "maxFreeSockets": 256, + "scheduling": "lifo", + "maxTotalSockets": null, + "totalSocketCount": 0, + "maxCachedSessions": 100, + "_sessionCache": { + "map": {}, + "list": [] + } + }, + "hooks": { + "beforeRequest": [], + "beforeRetry": [], + "beforeError": [], + "afterResponse": [] + }, + "prefixUrl": "", + "retry": { + "limit": 2, + "methods": [ + "get", + "put", + "head", + "delete", + "options", + "trace" + ], + "statusCodes": [ + 408, + 413, + 429, + 500, + 502, + 503, + 504 + ], + "afterStatusCodes": [ + 413, + 429, + 503 + ], + "maxRetryAfter": null, + "backoffLimit": null + }, + "throwHttpErrors": true, + "timeout": 10000, + "signal": {}, + "duplex": "half", + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",\"https://w3id.org/security/suites/ed25519-2020/v1\"],\"id\":\"urn:uuid:bed0b929-a417-40e8-82c2-d404ceb022d4\",\"type\":\"VerifiableCredential\",\"issuer\":\"https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"verificationMethod\":\"did:key:z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y#z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y\",\"type\":\"Ed25519Signature2020\",\"proofPurpose\":\"assertionMethod\",\"created\":\"2024-09-01T05:02:20Z\",\"proofValue\":\"zXUkW92o6y3pdQ5MWADopA1NqPzTJQLeggTMS2kjmtF5Fy5au5oDD3yPSD318h7GNYDYPTnVaRDKB3ey85VwkAMb\"}},\"options\":{\"checks\":[\"proof\"]}}" + }, + "name": "HTTPError", + "requestUrl": "https://vc2.veresverifier.dev/verifiers/z19w7KofwvE2nkJeRVLp8NDxz/credentials/verify", + "status": 400, + "data": { + "name": "ValidationError", + "message": "A validation error occured in the 'Verify Credential Body' validator.", + "details": { + "errors": [ + { + "stack": "ValidationError: should be array\n at _createError (file:///home/node/app/node_modules/@bedrock/validation/lib/index.js:240:17)\n at validate (file:///home/node/app/node_modules/@bedrock/validation/lib/index.js:88:14)\n at validate (file:///home/node/app/node_modules/@bedrock/validation/lib/index.js:181:22)\n at Layer.handle [as handle_request] (/home/node/app/node_modules/express/lib/router/layer.js:95:5)\n at next (/home/node/app/node_modules/express/lib/router/route.js:149:13)\n at cors (/home/node/app/node_modules/cors/lib/index.js:188:7)\n at /home/node/app/node_modules/cors/lib/index.js:224:17\n at originCallback (/home/node/app/node_modules/cors/lib/index.js:214:15)\n at /home/node/app/node_modules/cors/lib/index.js:219:13\n at optionsCallback (/home/node/app/node_modules/cors/lib/index.js:199:9)", + "name": "ValidationError", + "message": "should be array", + "details": { + "instance": { + "verifiableCredential": { + "@context": [ + "https://www.w3.org/2018/credentials/v1", + "https://w3id.org/security/suites/ed25519-2020/v1" + ], + "id": "urn:uuid:bed0b929-a417-40e8-82c2-d404ceb022d4", + "type": "VerifiableCredential", + "issuer": "https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020", + "issuanceDate": "2020-03-16T22:37:26.544Z", + "credentialSubject": { + "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" + }, + "proof": { + "verificationMethod": "did:key:z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y#z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y", + "type": "Ed25519Signature2020", + "proofPurpose": "assertionMethod", + "created": "2024-09-01T05:02:20Z", + "proofValue": "zXUkW92o6y3pdQ5MWADopA1NqPzTJQLeggTMS2kjmtF5Fy5au5oDD3yPSD318h7GNYDYPTnVaRDKB3ey85VwkAMb" + } + }, + "options": { + "checks": [ + "proof" + ] + } + }, + "params": { + "type": "array" + }, + "path": ".verifiableCredential.type", + "public": true, + "schemaPath": "#/properties/verifiableCredential/anyOf/0/properties/type/type", + "schema": { + "description": "", + "title": "" + }, + "value": "VerifiableCredential" + }, + "cause": null + }, + { + "stack": "ValidationError: should NOT have additional properties\n at _createError (file:///home/node/app/node_modules/@bedrock/validation/lib/index.js:240:17)\n at validate (file:///home/node/app/node_modules/@bedrock/validation/lib/index.js:88:14)\n at validate (file:///home/node/app/node_modules/@bedrock/validation/lib/index.js:181:22)\n at Layer.handle [as handle_request] (/home/node/app/node_modules/express/lib/router/layer.js:95:5)\n at next (/home/node/app/node_modules/express/lib/router/route.js:149:13)\n at cors (/home/node/app/node_modules/cors/lib/index.js:188:7)\n at /home/node/app/node_modules/cors/lib/index.js:224:17\n at originCallback (/home/node/app/node_modules/cors/lib/index.js:214:15)\n at /home/node/app/node_modules/cors/lib/index.js:219:13\n at optionsCallback (/home/node/app/node_modules/cors/lib/index.js:199:9)", + "name": "ValidationError", + "message": "should NOT have additional properties", + "details": { + "instance": { + "verifiableCredential": { + "@context": [ + "https://www.w3.org/2018/credentials/v1", + "https://w3id.org/security/suites/ed25519-2020/v1" + ], + "id": "urn:uuid:bed0b929-a417-40e8-82c2-d404ceb022d4", + "type": "VerifiableCredential", + "issuer": "https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020", + "issuanceDate": "2020-03-16T22:37:26.544Z", + "credentialSubject": { + "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" + }, + "proof": { + "verificationMethod": "did:key:z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y#z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y", + "type": "Ed25519Signature2020", + "proofPurpose": "assertionMethod", + "created": "2024-09-01T05:02:20Z", + "proofValue": "zXUkW92o6y3pdQ5MWADopA1NqPzTJQLeggTMS2kjmtF5Fy5au5oDD3yPSD318h7GNYDYPTnVaRDKB3ey85VwkAMb" + } + }, + "options": { + "checks": [ + "proof" + ] + } + }, + "params": { + "additionalProperty": "issuer" + }, + "path": ".verifiableCredential", + "public": true, + "schemaPath": "#/properties/verifiableCredential/anyOf/1/additionalProperties", + "schema": { + "description": "", + "title": "Enveloped Verifiable Credential" + }, + "value": { + "@context": [ + "https://www.w3.org/2018/credentials/v1", + "https://w3id.org/security/suites/ed25519-2020/v1" + ], + "id": "urn:uuid:bed0b929-a417-40e8-82c2-d404ceb022d4", + "type": "VerifiableCredential", + "issuer": "https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020", + "issuanceDate": "2020-03-16T22:37:26.544Z", + "credentialSubject": { + "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" + }, + "proof": { + "verificationMethod": "did:key:z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y#z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y", + "type": "Ed25519Signature2020", + "proofPurpose": "assertionMethod", + "created": "2024-09-01T05:02:20Z", + "proofValue": "zXUkW92o6y3pdQ5MWADopA1NqPzTJQLeggTMS2kjmtF5Fy5au5oDD3yPSD318h7GNYDYPTnVaRDKB3ey85VwkAMb" + } + } + }, + "cause": null + }, + { + "stack": "ValidationError: should match some schema in anyOf\n at _createError (file:///home/node/app/node_modules/@bedrock/validation/lib/index.js:240:17)\n at validate (file:///home/node/app/node_modules/@bedrock/validation/lib/index.js:88:14)\n at validate (file:///home/node/app/node_modules/@bedrock/validation/lib/index.js:181:22)\n at Layer.handle [as handle_request] (/home/node/app/node_modules/express/lib/router/layer.js:95:5)\n at next (/home/node/app/node_modules/express/lib/router/route.js:149:13)\n at cors (/home/node/app/node_modules/cors/lib/index.js:188:7)\n at /home/node/app/node_modules/cors/lib/index.js:224:17\n at originCallback (/home/node/app/node_modules/cors/lib/index.js:214:15)\n at /home/node/app/node_modules/cors/lib/index.js:219:13\n at optionsCallback (/home/node/app/node_modules/cors/lib/index.js:199:9)", + "name": "ValidationError", + "message": "should match some schema in anyOf", + "details": { + "instance": { + "verifiableCredential": { + "@context": [ + "https://www.w3.org/2018/credentials/v1", + "https://w3id.org/security/suites/ed25519-2020/v1" + ], + "id": "urn:uuid:bed0b929-a417-40e8-82c2-d404ceb022d4", + "type": "VerifiableCredential", + "issuer": "https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020", + "issuanceDate": "2020-03-16T22:37:26.544Z", + "credentialSubject": { + "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" + }, + "proof": { + "verificationMethod": "did:key:z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y#z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y", + "type": "Ed25519Signature2020", + "proofPurpose": "assertionMethod", + "created": "2024-09-01T05:02:20Z", + "proofValue": "zXUkW92o6y3pdQ5MWADopA1NqPzTJQLeggTMS2kjmtF5Fy5au5oDD3yPSD318h7GNYDYPTnVaRDKB3ey85VwkAMb" + } + }, + "options": { + "checks": [ + "proof" + ] + } + }, + "params": {}, + "path": ".verifiableCredential", + "public": true, + "schemaPath": "#/properties/verifiableCredential/anyOf", + "schema": { + "description": "", + "title": { + "title": "Verifiable Credential", + "type": "object", + "required": [ + "@context", + "credentialSubject", + "issuer", + "type" + ], + "additionalProperties": true, + "properties": { + "@context": { + "type": "array", + "minItems": 1, + "items": [ + { + "oneOf": [ + { + "const": "https://www.w3.org/2018/credentials/v1" + }, + { + "const": "https://www.w3.org/ns/credentials/v2" + } + ] + } + ], + "additionalItems": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + } + }, + "credentialSubject": { + "anyOf": [ + { + "type": "object" + }, + { + "type": "array", + "minItems": 1, + "items": { + "type": "object" + } + } + ] + }, + "id": { + "type": "string" + }, + "issuer": { + "title": "identifier or an object with an id", + "anyOf": [ + { + "title": "ID", + "description": "A unique identifier.", + "type": "string", + "minLength": 1, + "disallow": { + "type": "string", + "enum": [ + "0" + ] + } + }, + { + "type": "object", + "required": [ + "id" + ], + "additionalProperties": true, + "properties": { + "id": { + "title": "ID", + "description": "A unique identifier.", + "type": "string", + "minLength": 1, + "disallow": { + "type": "string", + "enum": [ + "0" + ] + } + } + } + } + ] + }, + "type": { + "type": "array", + "minItems": 1, + "items": [ + { + "const": "VerifiableCredential" + } + ], + "additionalItems": { + "type": "string" + } + }, + "proof": { + "title": "Proof", + "anyOf": [ + { + "type": "object" + }, + { + "type": "array", + "minItems": 1, + "items": { + "type": "object" + } + } + ] + } + } + } + }, + "value": { + "@context": [ + "https://www.w3.org/2018/credentials/v1", + "https://w3id.org/security/suites/ed25519-2020/v1" + ], + "id": "urn:uuid:bed0b929-a417-40e8-82c2-d404ceb022d4", + "type": "VerifiableCredential", + "issuer": "https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020", + "issuanceDate": "2020-03-16T22:37:26.544Z", + "credentialSubject": { + "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" + }, + "proof": { + "verificationMethod": "did:key:z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y#z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y", + "type": "Ed25519Signature2020", + "proofPurpose": "assertionMethod", + "created": "2024-09-01T05:02:20Z", + "proofValue": "zXUkW92o6y3pdQ5MWADopA1NqPzTJQLeggTMS2kjmtF5Fy5au5oDD3yPSD318h7GNYDYPTnVaRDKB3ey85VwkAMb" + } + } + }, + "cause": null + } + ], + "httpStatusCode": 400 + }, + "cause": null, + "stack": "ValidationError: A validation error occured in the 'Verify Credential Body' validator.\n at _createError (file:///home/node/app/node_modules/@bedrock/validation/lib/index.js:246:17)\n at validate (file:///home/node/app/node_modules/@bedrock/validation/lib/index.js:88:14)\n at validate (file:///home/node/app/node_modules/@bedrock/validation/lib/index.js:181:22)\n at Layer.handle [as handle_request] (/home/node/app/node_modules/express/lib/router/layer.js:95:5)\n at next (/home/node/app/node_modules/express/lib/router/route.js:149:13)\n at cors (/home/node/app/node_modules/cors/lib/index.js:188:7)\n at /home/node/app/node_modules/cors/lib/index.js:224:17\n at originCallback (/home/node/app/node_modules/cors/lib/index.js:214:15)\n at /home/node/app/node_modules/cors/lib/index.js:219:13\n at optionsCallback (/home/node/app/node_modules/cors/lib/index.js:199:9)", + "type": "ValidationError" + } + }, + "operator": "notStrictEqual", + "stack": "AssertionError: Expected verifier to not error.: expected HTTPError: A validation error occured in … { …(6) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js:66:20)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" + } }, { "type": "test", - "title": "EWF should verify Digital Bazaar", + "title": "EWF should verify apicatalog.com", "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", "async": 0, "sync": true, @@ -29282,31 +29312,148 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", + "parent": "Df-YsqubGetRbgav6-8J3", "ctx": null, - "_testId": "urn:uuid:3059e146-c736-4bb5-b2b7-b7b346f0b011", + "_testId": "urn:uuid:90ec56f7-05f1-4cb2-b9bb-113c26e70f61", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "Digital Bazaar", + "rowId": "apicatalog.com", "columnId": "EWF" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 50150, + "_idleStart": 50544, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 96, - "state": "passed", - "speed": "slow" + "duration": 91, + "state": "failed", + "err": { + "name": "AssertionError", + "message": "Expected verifier to not error.: expected HTTPError { …(7) } to not exist", + "showDiff": false, + "actual": { + "response": {}, + "request": {}, + "options": { + "credentials": "same-origin", + "headers": {}, + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",\"https://w3id.org/security/suites/ed25519-2020/v1\"],\"id\":\"urn:uuid:bed0b929-a417-40e8-82c2-d404ceb022d4\",\"type\":\"VerifiableCredential\",\"issuer\":\"https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"verificationMethod\":\"did:key:z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y#z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y\",\"type\":\"Ed25519Signature2020\",\"proofPurpose\":\"assertionMethod\",\"created\":\"2024-09-01T05:02:20Z\",\"proofValue\":\"zXUkW92o6y3pdQ5MWADopA1NqPzTJQLeggTMS2kjmtF5Fy5au5oDD3yPSD318h7GNYDYPTnVaRDKB3ey85VwkAMb\"}},\"options\":{\"checks\":[\"proof\"]}}", + "method": "POST", + "json": { + "verifiableCredential": { + "@context": [ + "https://www.w3.org/2018/credentials/v1", + "https://w3id.org/security/suites/ed25519-2020/v1" + ], + "id": "urn:uuid:bed0b929-a417-40e8-82c2-d404ceb022d4", + "type": "VerifiableCredential", + "issuer": "https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020", + "issuanceDate": "2020-03-16T22:37:26.544Z", + "credentialSubject": { + "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" + }, + "proof": { + "verificationMethod": "did:key:z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y#z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y", + "type": "Ed25519Signature2020", + "proofPurpose": "assertionMethod", + "created": "2024-09-01T05:02:20Z", + "proofValue": "zXUkW92o6y3pdQ5MWADopA1NqPzTJQLeggTMS2kjmtF5Fy5au5oDD3yPSD318h7GNYDYPTnVaRDKB3ey85VwkAMb" + } + }, + "options": { + "checks": [ + "proof" + ] + } + }, + "agent": { + "_events": {}, + "_eventsCount": 2, + "defaultPort": 443, + "protocol": "https:", + "options": { + "rejectUnauthorized": false, + "noDelay": true, + "path": null + }, + "requests": {}, + "sockets": {}, + "freeSockets": {}, + "keepAliveMsecs": 1000, + "keepAlive": false, + "maxSockets": null, + "maxFreeSockets": 256, + "scheduling": "lifo", + "maxTotalSockets": null, + "totalSocketCount": 0, + "maxCachedSessions": 100, + "_sessionCache": { + "map": {}, + "list": [] + } + }, + "hooks": { + "beforeRequest": [], + "beforeRetry": [], + "beforeError": [], + "afterResponse": [] + }, + "prefixUrl": "", + "retry": { + "limit": 2, + "methods": [ + "get", + "put", + "head", + "delete", + "options", + "trace" + ], + "statusCodes": [ + 408, + 413, + 429, + 500, + 502, + 503, + 504 + ], + "afterStatusCodes": [ + 413, + 429, + 503 + ], + "maxRetryAfter": null, + "backoffLimit": null + }, + "throwHttpErrors": true, + "timeout": 10000, + "signal": {}, + "duplex": "half" + }, + "name": "HTTPError", + "requestUrl": "https://vc-api-dev.energyweb.org/v1/vc-api/credentials/verify", + "status": 400, + "data": { + "message": [ + "verifiableCredential.type must be an array" + ], + "error": "Bad Request", + "statusCode": 400 + } + }, + "operator": "notStrictEqual", + "stack": "AssertionError: Expected verifier to not error.: expected HTTPError { …(7) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js:66:20)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" + } }, { "type": "test", - "title": "LearnCard should verify Digital Bazaar", + "title": "LearnCard should verify apicatalog.com", "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", "async": 0, "sync": true, @@ -29317,31 +29464,142 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", + "parent": "Df-YsqubGetRbgav6-8J3", "ctx": null, - "_testId": "urn:uuid:de62858d-675f-4bb5-b5ea-d4e6ae99f12f", + "_testId": "urn:uuid:105cdbaf-17f1-4501-92fe-a62030bc841a", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "Digital Bazaar", + "rowId": "apicatalog.com", "columnId": "LearnCard" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 50246, + "_idleStart": 50636, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 60, - "state": "passed", - "speed": "medium" + "duration": 44, + "state": "failed", + "err": { + "name": "AssertionError", + "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist", + "showDiff": false, + "actual": { + "response": {}, + "request": {}, + "options": { + "credentials": "same-origin", + "headers": {}, + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",\"https://w3id.org/security/suites/ed25519-2020/v1\"],\"id\":\"urn:uuid:bed0b929-a417-40e8-82c2-d404ceb022d4\",\"type\":\"VerifiableCredential\",\"issuer\":\"https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"verificationMethod\":\"did:key:z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y#z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y\",\"type\":\"Ed25519Signature2020\",\"proofPurpose\":\"assertionMethod\",\"created\":\"2024-09-01T05:02:20Z\",\"proofValue\":\"zXUkW92o6y3pdQ5MWADopA1NqPzTJQLeggTMS2kjmtF5Fy5au5oDD3yPSD318h7GNYDYPTnVaRDKB3ey85VwkAMb\"}},\"options\":{\"checks\":[\"proof\"]}}", + "method": "POST", + "json": { + "verifiableCredential": { + "@context": [ + "https://www.w3.org/2018/credentials/v1", + "https://w3id.org/security/suites/ed25519-2020/v1" + ], + "id": "urn:uuid:bed0b929-a417-40e8-82c2-d404ceb022d4", + "type": "VerifiableCredential", + "issuer": "https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020", + "issuanceDate": "2020-03-16T22:37:26.544Z", + "credentialSubject": { + "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" + }, + "proof": { + "verificationMethod": "did:key:z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y#z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y", + "type": "Ed25519Signature2020", + "proofPurpose": "assertionMethod", + "created": "2024-09-01T05:02:20Z", + "proofValue": "zXUkW92o6y3pdQ5MWADopA1NqPzTJQLeggTMS2kjmtF5Fy5au5oDD3yPSD318h7GNYDYPTnVaRDKB3ey85VwkAMb" + } + }, + "options": { + "checks": [ + "proof" + ] + } + }, + "agent": { + "_events": {}, + "_eventsCount": 2, + "defaultPort": 443, + "protocol": "https:", + "options": { + "rejectUnauthorized": false, + "noDelay": true, + "path": null + }, + "requests": {}, + "sockets": {}, + "freeSockets": {}, + "keepAliveMsecs": 1000, + "keepAlive": false, + "maxSockets": null, + "maxFreeSockets": 256, + "scheduling": "lifo", + "maxTotalSockets": null, + "totalSocketCount": 0, + "maxCachedSessions": 100, + "_sessionCache": { + "map": {}, + "list": [] + } + }, + "hooks": { + "beforeRequest": [], + "beforeRetry": [], + "beforeError": [], + "afterResponse": [] + }, + "prefixUrl": "", + "retry": { + "limit": 2, + "methods": [ + "get", + "put", + "head", + "delete", + "options", + "trace" + ], + "statusCodes": [ + 408, + 413, + 429, + 500, + 502, + 503, + 504 + ], + "afterStatusCodes": [ + 413, + 429, + 503 + ], + "maxRetryAfter": null, + "backoffLimit": null + }, + "throwHttpErrors": true, + "timeout": 10000, + "signal": {}, + "duplex": "half" + }, + "name": "HTTPError", + "requestUrl": "https://bridge.learncard.com/credentials/verify", + "status": 400, + "data": "Invalid input: [\n {\n \"code\": \"invalid_type\",\n \"expected\": \"array\",\n \"received\": \"string\",\n \"path\": [\n \"verifiableCredential\",\n \"type\"\n ],\n \"message\": \"Expected array, received string\"\n }\n]" + }, + "operator": "notStrictEqual", + "stack": "AssertionError: Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js:66:20)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" + } }, { "type": "test", - "title": "OpSecId should verify Digital Bazaar", + "title": "OpSecId should verify apicatalog.com", "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", "async": 0, "sync": true, @@ -29352,31 +29610,150 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", + "parent": "Df-YsqubGetRbgav6-8J3", "ctx": null, - "_testId": "urn:uuid:7191357f-a8f9-4656-8968-1b1ee767ab08", + "_testId": "urn:uuid:0b42661e-4441-45ee-9f13-3fe3e2cb2a19", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "Digital Bazaar", + "rowId": "apicatalog.com", "columnId": "OpSecId" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 50307, + "_idleStart": 50681, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 28, - "state": "passed", - "speed": "fast" + "duration": 26, + "state": "failed", + "err": { + "name": "AssertionError", + "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist", + "showDiff": false, + "actual": { + "response": {}, + "request": {}, + "options": { + "credentials": "same-origin", + "headers": {}, + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",\"https://w3id.org/security/suites/ed25519-2020/v1\"],\"id\":\"urn:uuid:bed0b929-a417-40e8-82c2-d404ceb022d4\",\"type\":\"VerifiableCredential\",\"issuer\":\"https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"verificationMethod\":\"did:key:z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y#z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y\",\"type\":\"Ed25519Signature2020\",\"proofPurpose\":\"assertionMethod\",\"created\":\"2024-09-01T05:02:20Z\",\"proofValue\":\"zXUkW92o6y3pdQ5MWADopA1NqPzTJQLeggTMS2kjmtF5Fy5au5oDD3yPSD318h7GNYDYPTnVaRDKB3ey85VwkAMb\"}},\"options\":{\"checks\":[\"proof\"]}}", + "method": "POST", + "json": { + "verifiableCredential": { + "@context": [ + "https://www.w3.org/2018/credentials/v1", + "https://w3id.org/security/suites/ed25519-2020/v1" + ], + "id": "urn:uuid:bed0b929-a417-40e8-82c2-d404ceb022d4", + "type": "VerifiableCredential", + "issuer": "https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020", + "issuanceDate": "2020-03-16T22:37:26.544Z", + "credentialSubject": { + "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" + }, + "proof": { + "verificationMethod": "did:key:z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y#z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y", + "type": "Ed25519Signature2020", + "proofPurpose": "assertionMethod", + "created": "2024-09-01T05:02:20Z", + "proofValue": "zXUkW92o6y3pdQ5MWADopA1NqPzTJQLeggTMS2kjmtF5Fy5au5oDD3yPSD318h7GNYDYPTnVaRDKB3ey85VwkAMb" + } + }, + "options": { + "checks": [ + "proof" + ] + } + }, + "agent": { + "_events": {}, + "_eventsCount": 2, + "defaultPort": 443, + "protocol": "https:", + "options": { + "rejectUnauthorized": false, + "noDelay": true, + "path": null + }, + "requests": {}, + "sockets": {}, + "freeSockets": {}, + "keepAliveMsecs": 1000, + "keepAlive": false, + "maxSockets": null, + "maxFreeSockets": 256, + "scheduling": "lifo", + "maxTotalSockets": null, + "totalSocketCount": 0, + "maxCachedSessions": 100, + "_sessionCache": { + "map": {}, + "list": [] + } + }, + "hooks": { + "beforeRequest": [], + "beforeRetry": [], + "beforeError": [], + "afterResponse": [] + }, + "prefixUrl": "", + "retry": { + "limit": 2, + "methods": [ + "get", + "put", + "head", + "delete", + "options", + "trace" + ], + "statusCodes": [ + 408, + 413, + 429, + 500, + 502, + 503, + 504 + ], + "afterStatusCodes": [ + 413, + 429, + 503 + ], + "maxRetryAfter": null, + "backoffLimit": null + }, + "throwHttpErrors": true, + "timeout": 10000, + "signal": {}, + "duplex": "half" + }, + "name": "HTTPError", + "requestUrl": "https://agent.opsec.id/vc/credentials/verify", + "status": 422, + "data": { + "json": { + "verifiableCredential": { + "type": [ + "Not a valid list." + ] + } + } + } + }, + "operator": "notStrictEqual", + "stack": "AssertionError: Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js:66:20)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" + } }, { "type": "test", - "title": "SpruceID should verify Digital Bazaar", + "title": "SpruceID should verify apicatalog.com", "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", "async": 0, "sync": true, @@ -29387,31 +29764,141 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", + "parent": "Df-YsqubGetRbgav6-8J3", "ctx": null, - "_testId": "urn:uuid:a3cf4c6a-4c38-4cc4-a9e8-925b55d7dbce", + "_testId": "urn:uuid:10fd33b6-ce3f-4042-ab2d-55e935e7cb1d", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "Digital Bazaar", + "rowId": "apicatalog.com", "columnId": "SpruceID" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 50336, + "_idleStart": 50707, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 31, - "state": "passed", - "speed": "fast" + "duration": 35, + "state": "failed", + "err": { + "name": "AssertionError", + "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(5) } to not exist", + "showDiff": false, + "actual": { + "response": {}, + "request": {}, + "options": { + "credentials": "same-origin", + "headers": {}, + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",\"https://w3id.org/security/suites/ed25519-2020/v1\"],\"id\":\"urn:uuid:bed0b929-a417-40e8-82c2-d404ceb022d4\",\"type\":\"VerifiableCredential\",\"issuer\":\"https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"verificationMethod\":\"did:key:z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y#z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y\",\"type\":\"Ed25519Signature2020\",\"proofPurpose\":\"assertionMethod\",\"created\":\"2024-09-01T05:02:20Z\",\"proofValue\":\"zXUkW92o6y3pdQ5MWADopA1NqPzTJQLeggTMS2kjmtF5Fy5au5oDD3yPSD318h7GNYDYPTnVaRDKB3ey85VwkAMb\"}},\"options\":{\"checks\":[\"proof\"]}}", + "method": "POST", + "json": { + "verifiableCredential": { + "@context": [ + "https://www.w3.org/2018/credentials/v1", + "https://w3id.org/security/suites/ed25519-2020/v1" + ], + "id": "urn:uuid:bed0b929-a417-40e8-82c2-d404ceb022d4", + "type": "VerifiableCredential", + "issuer": "https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020", + "issuanceDate": "2020-03-16T22:37:26.544Z", + "credentialSubject": { + "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" + }, + "proof": { + "verificationMethod": "did:key:z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y#z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y", + "type": "Ed25519Signature2020", + "proofPurpose": "assertionMethod", + "created": "2024-09-01T05:02:20Z", + "proofValue": "zXUkW92o6y3pdQ5MWADopA1NqPzTJQLeggTMS2kjmtF5Fy5au5oDD3yPSD318h7GNYDYPTnVaRDKB3ey85VwkAMb" + } + }, + "options": { + "checks": [ + "proof" + ] + } + }, + "agent": { + "_events": {}, + "_eventsCount": 2, + "defaultPort": 443, + "protocol": "https:", + "options": { + "rejectUnauthorized": false, + "noDelay": true, + "path": null + }, + "requests": {}, + "sockets": {}, + "freeSockets": {}, + "keepAliveMsecs": 1000, + "keepAlive": false, + "maxSockets": null, + "maxFreeSockets": 256, + "scheduling": "lifo", + "maxTotalSockets": null, + "totalSocketCount": 0, + "maxCachedSessions": 100, + "_sessionCache": { + "map": {}, + "list": [] + } + }, + "hooks": { + "beforeRequest": [], + "beforeRetry": [], + "beforeError": [], + "afterResponse": [] + }, + "prefixUrl": "", + "retry": { + "limit": 2, + "methods": [ + "get", + "put", + "head", + "delete", + "options", + "trace" + ], + "statusCodes": [ + 408, + 413, + 429, + 500, + 502, + 503, + 504 + ], + "afterStatusCodes": [ + 413, + 429, + 503 + ], + "maxRetryAfter": null, + "backoffLimit": null + }, + "throwHttpErrors": true, + "timeout": 10000, + "signal": {}, + "duplex": "half" + }, + "name": "HTTPError", + "requestUrl": "https://vc.spruceid.xyz/credentials/verify", + "status": 400 + }, + "operator": "notStrictEqual", + "stack": "AssertionError: Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(5) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js:66:20)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" + } }, { "type": "test", - "title": "Trinsic should verify Digital Bazaar", + "title": "Trinsic should verify apicatalog.com", "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", "async": 0, "sync": true, @@ -29422,69 +29909,29 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", + "parent": "Df-YsqubGetRbgav6-8J3", "ctx": null, - "_testId": "urn:uuid:6c3cdbb8-8e1b-4fa9-aa39-20933aa57067", + "_testId": "urn:uuid:46c3017a-be50-4663-96ea-3986eeb0a11b", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "Digital Bazaar", + "rowId": "apicatalog.com", "columnId": "Trinsic" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 50367, + "_idleStart": 50742, "_onTimeout": null, "_repeat": null, "_destroyed": true }, "duration": 36, - "state": "passed", - "speed": "fast" - } - ] - }, - { - "id": "EWF", - "cells": [ - { - "type": "test", - "title": "apicatalog.com should verify EWF", - "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", - "ctx": null, - "_testId": "urn:uuid:1b9cf00b-362a-4844-a889-4ed93ede2f70", - "_events": {}, - "_eventsCount": 1, - "cell": { - "rowId": "EWF", - "columnId": "apicatalog.com" - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 50402, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 50, "state": "failed", "err": { "name": "AssertionError", - "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist", + "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(5) } to not exist", "showDiff": false, "actual": { "response": {}, @@ -29492,28 +29939,27 @@ "options": { "credentials": "same-origin", "headers": {}, - "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\"],\"id\":\"urn:uuid:a2dfb6f2-f282-4a18-a387-0715402c5594\",\"type\":[\"VerifiableCredential\"],\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"issuer\":\"did:key:z6MksoRPRqnMWiivV4weRGGS9SiHXuqfJEYu95EiYtbvBxW6\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"proof\":{\"type\":\"Ed25519Signature2018\",\"proofPurpose\":\"assertionMethod\",\"verificationMethod\":\"did:key:z6MksoRPRqnMWiivV4weRGGS9SiHXuqfJEYu95EiYtbvBxW6#z6MksoRPRqnMWiivV4weRGGS9SiHXuqfJEYu95EiYtbvBxW6\",\"created\":\"2024-08-25T05:02:20.831Z\",\"jws\":\"eyJhbGciOiJFZERTQSIsImNyaXQiOlsiYjY0Il0sImI2NCI6ZmFsc2V9..9lAsP0bzp_vaz1uMm9vhxESkIfSgwEZQNfxIUZp2NkZ-BUgU5W6O_LOM7yfd0TJ0fhC-gKic55Vh9W_JmJSFAw\"}},\"options\":{\"checks\":[\"proof\"]}}", + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",\"https://w3id.org/security/suites/ed25519-2020/v1\"],\"id\":\"urn:uuid:bed0b929-a417-40e8-82c2-d404ceb022d4\",\"type\":\"VerifiableCredential\",\"issuer\":\"https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"verificationMethod\":\"did:key:z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y#z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y\",\"type\":\"Ed25519Signature2020\",\"proofPurpose\":\"assertionMethod\",\"created\":\"2024-09-01T05:02:20Z\",\"proofValue\":\"zXUkW92o6y3pdQ5MWADopA1NqPzTJQLeggTMS2kjmtF5Fy5au5oDD3yPSD318h7GNYDYPTnVaRDKB3ey85VwkAMb\"}},\"options\":{\"checks\":[\"proof\"]}}", "method": "POST", "json": { "verifiableCredential": { "@context": [ - "https://www.w3.org/2018/credentials/v1" - ], - "id": "urn:uuid:a2dfb6f2-f282-4a18-a387-0715402c5594", - "type": [ - "VerifiableCredential" + "https://www.w3.org/2018/credentials/v1", + "https://w3id.org/security/suites/ed25519-2020/v1" ], + "id": "urn:uuid:bed0b929-a417-40e8-82c2-d404ceb022d4", + "type": "VerifiableCredential", + "issuer": "https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020", + "issuanceDate": "2020-03-16T22:37:26.544Z", "credentialSubject": { "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" }, - "issuer": "did:key:z6MksoRPRqnMWiivV4weRGGS9SiHXuqfJEYu95EiYtbvBxW6", - "issuanceDate": "2020-03-16T22:37:26.544Z", "proof": { - "type": "Ed25519Signature2018", + "verificationMethod": "did:key:z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y#z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y", + "type": "Ed25519Signature2020", "proofPurpose": "assertionMethod", - "verificationMethod": "did:key:z6MksoRPRqnMWiivV4weRGGS9SiHXuqfJEYu95EiYtbvBxW6#z6MksoRPRqnMWiivV4weRGGS9SiHXuqfJEYu95EiYtbvBxW6", - "created": "2024-08-25T05:02:20.831Z", - "jws": "eyJhbGciOiJFZERTQSIsImNyaXQiOlsiYjY0Il0sImI2NCI6ZmFsc2V9..9lAsP0bzp_vaz1uMm9vhxESkIfSgwEZQNfxIUZp2NkZ-BUgU5W6O_LOM7yfd0TJ0fhC-gKic55Vh9W_JmJSFAw" + "created": "2024-09-01T05:02:20Z", + "proofValue": "zXUkW92o6y3pdQ5MWADopA1NqPzTJQLeggTMS2kjmtF5Fy5au5oDD3yPSD318h7GNYDYPTnVaRDKB3ey85VwkAMb" } }, "options": { @@ -29587,25 +30033,57 @@ "signal": {}, "duplex": "half" }, - "name": "HTTPError", - "requestUrl": "https://vc.apicatalog.com/credentials/verify", - "status": 400, - "data": { - "checks": [ - "PROOF", - "INVALID_PROOF_CONFIGURATION" - ], - "warnings": [], - "errors": [] - } + "name": "HTTPError", + "requestUrl": "https://interop.connect.trinsic.cloud/vc-api/credentials/verify", + "status": 400 }, "operator": "notStrictEqual", - "stack": "AssertionError: Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js:66:20)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" + "stack": "AssertionError: Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(5) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js:66:20)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" } + } + ] + }, + { + "id": "Danube Tech", + "cells": [ + { + "type": "test", + "title": "apicatalog.com should verify Danube Tech", + "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", + "parent": "Df-YsqubGetRbgav6-8J3", + "ctx": null, + "_testId": "urn:uuid:2227ce7a-72ed-4641-b1e2-37f1f120e878", + "_events": {}, + "_eventsCount": 1, + "cell": { + "rowId": "Danube Tech", + "columnId": "apicatalog.com" + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 50779, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 47, + "state": "passed", + "speed": "medium" }, { "type": "test", - "title": "Danube Tech should verify EWF", + "title": "Danube Tech should verify Danube Tech", "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", "async": 0, "sync": true, @@ -29616,31 +30094,31 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", + "parent": "Df-YsqubGetRbgav6-8J3", "ctx": null, - "_testId": "urn:uuid:8341639c-55a8-4261-9e86-a33602e3fd28", + "_testId": "urn:uuid:4bb730ab-18f3-4dc4-8f83-8764bd5063ab", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "EWF", + "rowId": "Danube Tech", "columnId": "Danube Tech" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 50454, + "_idleStart": 50826, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 433, + "duration": 452, "state": "passed", "speed": "slow" }, { "type": "test", - "title": "Digital Bazaar should verify EWF", + "title": "Digital Bazaar should verify Danube Tech", "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", "async": 0, "sync": true, @@ -29651,31 +30129,31 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", + "parent": "Df-YsqubGetRbgav6-8J3", "ctx": null, - "_testId": "urn:uuid:6e3875e8-1c18-44ca-985d-d9e94232196a", + "_testId": "urn:uuid:75e614ed-0bb1-48bb-ba9c-80248f235911", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "EWF", + "rowId": "Danube Tech", "columnId": "Digital Bazaar" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 50887, + "_idleStart": 51278, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 43, + "duration": 45, "state": "passed", "speed": "medium" }, { "type": "test", - "title": "EWF should verify EWF", + "title": "EWF should verify Danube Tech", "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", "async": 0, "sync": true, @@ -29686,31 +30164,31 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", + "parent": "Df-YsqubGetRbgav6-8J3", "ctx": null, - "_testId": "urn:uuid:5da40e58-694e-4fcc-87b8-016115c4578c", + "_testId": "urn:uuid:e262f4ec-96cb-4ffd-bad6-ddf90e952c59", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "EWF", + "rowId": "Danube Tech", "columnId": "EWF" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 50930, + "_idleStart": 51323, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 95, + "duration": 102, "state": "passed", "speed": "slow" }, { "type": "test", - "title": "LearnCard should verify EWF", + "title": "LearnCard should verify Danube Tech", "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", "async": 0, "sync": true, @@ -29721,31 +30199,31 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", + "parent": "Df-YsqubGetRbgav6-8J3", "ctx": null, - "_testId": "urn:uuid:7551be6c-7808-49b3-be26-cea53f40077b", + "_testId": "urn:uuid:1b2257d2-1dbe-48ca-b16f-a06fe323b4d9", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "EWF", + "rowId": "Danube Tech", "columnId": "LearnCard" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 51025, + "_idleStart": 51426, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 59, + "duration": 91, "state": "passed", - "speed": "medium" + "speed": "slow" }, { "type": "test", - "title": "OpSecId should verify EWF", + "title": "OpSecId should verify Danube Tech", "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", "async": 0, "sync": true, @@ -29756,153 +30234,141 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", + "parent": "Df-YsqubGetRbgav6-8J3", "ctx": null, - "_testId": "urn:uuid:6a51be35-8a6e-4138-a51f-8db782a3f7d4", + "_testId": "urn:uuid:76236dbd-ac4b-47e3-87b3-19efabf1f444", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "EWF", + "rowId": "Danube Tech", "columnId": "OpSecId" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 51084, + "_idleStart": 51517, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 25, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist", - "showDiff": false, - "actual": { - "response": {}, - "request": {}, - "options": { - "credentials": "same-origin", - "headers": {}, - "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\"],\"id\":\"urn:uuid:a2dfb6f2-f282-4a18-a387-0715402c5594\",\"type\":[\"VerifiableCredential\"],\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"issuer\":\"did:key:z6MksoRPRqnMWiivV4weRGGS9SiHXuqfJEYu95EiYtbvBxW6\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"proof\":{\"type\":\"Ed25519Signature2018\",\"proofPurpose\":\"assertionMethod\",\"verificationMethod\":\"did:key:z6MksoRPRqnMWiivV4weRGGS9SiHXuqfJEYu95EiYtbvBxW6#z6MksoRPRqnMWiivV4weRGGS9SiHXuqfJEYu95EiYtbvBxW6\",\"created\":\"2024-08-25T05:02:20.831Z\",\"jws\":\"eyJhbGciOiJFZERTQSIsImNyaXQiOlsiYjY0Il0sImI2NCI6ZmFsc2V9..9lAsP0bzp_vaz1uMm9vhxESkIfSgwEZQNfxIUZp2NkZ-BUgU5W6O_LOM7yfd0TJ0fhC-gKic55Vh9W_JmJSFAw\"}},\"options\":{\"checks\":[\"proof\"]}}", - "method": "POST", - "json": { - "verifiableCredential": { - "@context": [ - "https://www.w3.org/2018/credentials/v1" - ], - "id": "urn:uuid:a2dfb6f2-f282-4a18-a387-0715402c5594", - "type": [ - "VerifiableCredential" - ], - "credentialSubject": { - "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" - }, - "issuer": "did:key:z6MksoRPRqnMWiivV4weRGGS9SiHXuqfJEYu95EiYtbvBxW6", - "issuanceDate": "2020-03-16T22:37:26.544Z", - "proof": { - "type": "Ed25519Signature2018", - "proofPurpose": "assertionMethod", - "verificationMethod": "did:key:z6MksoRPRqnMWiivV4weRGGS9SiHXuqfJEYu95EiYtbvBxW6#z6MksoRPRqnMWiivV4weRGGS9SiHXuqfJEYu95EiYtbvBxW6", - "created": "2024-08-25T05:02:20.831Z", - "jws": "eyJhbGciOiJFZERTQSIsImNyaXQiOlsiYjY0Il0sImI2NCI6ZmFsc2V9..9lAsP0bzp_vaz1uMm9vhxESkIfSgwEZQNfxIUZp2NkZ-BUgU5W6O_LOM7yfd0TJ0fhC-gKic55Vh9W_JmJSFAw" - } - }, - "options": { - "checks": [ - "proof" - ] - } - }, - "agent": { - "_events": {}, - "_eventsCount": 2, - "defaultPort": 443, - "protocol": "https:", - "options": { - "rejectUnauthorized": false, - "noDelay": true, - "path": null - }, - "requests": {}, - "sockets": {}, - "freeSockets": {}, - "keepAliveMsecs": 1000, - "keepAlive": false, - "maxSockets": null, - "maxFreeSockets": 256, - "scheduling": "lifo", - "maxTotalSockets": null, - "totalSocketCount": 0, - "maxCachedSessions": 100, - "_sessionCache": { - "map": {}, - "list": [] - } - }, - "hooks": { - "beforeRequest": [], - "beforeRetry": [], - "beforeError": [], - "afterResponse": [] - }, - "prefixUrl": "", - "retry": { - "limit": 2, - "methods": [ - "get", - "put", - "head", - "delete", - "options", - "trace" - ], - "statusCodes": [ - 408, - 413, - 429, - 500, - 502, - 503, - 504 - ], - "afterStatusCodes": [ - 413, - 429, - 503 - ], - "maxRetryAfter": null, - "backoffLimit": null - }, - "throwHttpErrors": true, - "timeout": 10000, - "signal": {}, - "duplex": "half" - }, - "name": "HTTPError", - "requestUrl": "https://agent.opsec.id/vc/credentials/verify", - "status": 422, - "data": { - "json": { - "verifiableCredential": { - "proof": { - "proofValue": [ - "Missing data for required field." - ] - } - } - } - } - }, - "operator": "notStrictEqual", - "stack": "AssertionError: Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js:66:20)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" - } + "duration": 41, + "state": "passed", + "speed": "medium" + }, + { + "type": "test", + "title": "SpruceID should verify Danube Tech", + "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", + "parent": "Df-YsqubGetRbgav6-8J3", + "ctx": null, + "_testId": "urn:uuid:80af36f5-000a-4887-8d02-682239cc2a41", + "_events": {}, + "_eventsCount": 1, + "cell": { + "rowId": "Danube Tech", + "columnId": "SpruceID" + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 51557, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 24, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "Trinsic should verify Danube Tech", + "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", + "parent": "Df-YsqubGetRbgav6-8J3", + "ctx": null, + "_testId": "urn:uuid:a4f563ad-d44e-44c3-80d5-a6a44e220455", + "_events": {}, + "_eventsCount": 1, + "cell": { + "rowId": "Danube Tech", + "columnId": "Trinsic" + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 51582, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 43, + "state": "passed", + "speed": "medium" + } + ] + }, + { + "id": "Digital Bazaar", + "cells": [ + { + "type": "test", + "title": "apicatalog.com should verify Digital Bazaar", + "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", + "parent": "Df-YsqubGetRbgav6-8J3", + "ctx": null, + "_testId": "urn:uuid:9eca2d2c-c18d-4ae9-953b-816ef95a2d92", + "_events": {}, + "_eventsCount": 1, + "cell": { + "rowId": "Digital Bazaar", + "columnId": "apicatalog.com" + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 51625, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 55, + "state": "passed", + "speed": "medium" }, { "type": "test", - "title": "SpruceID should verify EWF", + "title": "Danube Tech should verify Digital Bazaar", "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", "async": 0, "sync": true, @@ -29913,31 +30379,31 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", + "parent": "Df-YsqubGetRbgav6-8J3", "ctx": null, - "_testId": "urn:uuid:6160e0f0-3f4b-4528-a040-8ff03f2091a0", + "_testId": "urn:uuid:1bf67fc3-e26c-4c6e-b22e-8a51a37554af", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "EWF", - "columnId": "SpruceID" + "rowId": "Digital Bazaar", + "columnId": "Danube Tech" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 51109, + "_idleStart": 51679, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 35, + "duration": 435, "state": "passed", - "speed": "fast" + "speed": "slow" }, { "type": "test", - "title": "Trinsic should verify EWF", + "title": "Digital Bazaar should verify Digital Bazaar", "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", "async": 0, "sync": true, @@ -29948,147 +30414,136 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", + "parent": "Df-YsqubGetRbgav6-8J3", "ctx": null, - "_testId": "urn:uuid:aa3a68e0-cccd-4035-901c-c5302e04a497", + "_testId": "urn:uuid:cf35502a-a980-45c1-a0ba-3a400d7a0166", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "EWF", - "columnId": "Trinsic" + "rowId": "Digital Bazaar", + "columnId": "Digital Bazaar" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 51143, + "_idleStart": 52115, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 17, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(5) } to not exist", - "showDiff": false, - "actual": { - "response": {}, - "request": {}, - "options": { - "credentials": "same-origin", - "headers": {}, - "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\"],\"id\":\"urn:uuid:a2dfb6f2-f282-4a18-a387-0715402c5594\",\"type\":[\"VerifiableCredential\"],\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"issuer\":\"did:key:z6MksoRPRqnMWiivV4weRGGS9SiHXuqfJEYu95EiYtbvBxW6\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"proof\":{\"type\":\"Ed25519Signature2018\",\"proofPurpose\":\"assertionMethod\",\"verificationMethod\":\"did:key:z6MksoRPRqnMWiivV4weRGGS9SiHXuqfJEYu95EiYtbvBxW6#z6MksoRPRqnMWiivV4weRGGS9SiHXuqfJEYu95EiYtbvBxW6\",\"created\":\"2024-08-25T05:02:20.831Z\",\"jws\":\"eyJhbGciOiJFZERTQSIsImNyaXQiOlsiYjY0Il0sImI2NCI6ZmFsc2V9..9lAsP0bzp_vaz1uMm9vhxESkIfSgwEZQNfxIUZp2NkZ-BUgU5W6O_LOM7yfd0TJ0fhC-gKic55Vh9W_JmJSFAw\"}},\"options\":{\"checks\":[\"proof\"]}}", - "method": "POST", - "json": { - "verifiableCredential": { - "@context": [ - "https://www.w3.org/2018/credentials/v1" - ], - "id": "urn:uuid:a2dfb6f2-f282-4a18-a387-0715402c5594", - "type": [ - "VerifiableCredential" - ], - "credentialSubject": { - "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" - }, - "issuer": "did:key:z6MksoRPRqnMWiivV4weRGGS9SiHXuqfJEYu95EiYtbvBxW6", - "issuanceDate": "2020-03-16T22:37:26.544Z", - "proof": { - "type": "Ed25519Signature2018", - "proofPurpose": "assertionMethod", - "verificationMethod": "did:key:z6MksoRPRqnMWiivV4weRGGS9SiHXuqfJEYu95EiYtbvBxW6#z6MksoRPRqnMWiivV4weRGGS9SiHXuqfJEYu95EiYtbvBxW6", - "created": "2024-08-25T05:02:20.831Z", - "jws": "eyJhbGciOiJFZERTQSIsImNyaXQiOlsiYjY0Il0sImI2NCI6ZmFsc2V9..9lAsP0bzp_vaz1uMm9vhxESkIfSgwEZQNfxIUZp2NkZ-BUgU5W6O_LOM7yfd0TJ0fhC-gKic55Vh9W_JmJSFAw" - } - }, - "options": { - "checks": [ - "proof" - ] - } - }, - "agent": { - "_events": {}, - "_eventsCount": 2, - "defaultPort": 443, - "protocol": "https:", - "options": { - "rejectUnauthorized": false, - "noDelay": true, - "path": null - }, - "requests": {}, - "sockets": {}, - "freeSockets": {}, - "keepAliveMsecs": 1000, - "keepAlive": false, - "maxSockets": null, - "maxFreeSockets": 256, - "scheduling": "lifo", - "maxTotalSockets": null, - "totalSocketCount": 0, - "maxCachedSessions": 100, - "_sessionCache": { - "map": {}, - "list": [] - } - }, - "hooks": { - "beforeRequest": [], - "beforeRetry": [], - "beforeError": [], - "afterResponse": [] - }, - "prefixUrl": "", - "retry": { - "limit": 2, - "methods": [ - "get", - "put", - "head", - "delete", - "options", - "trace" - ], - "statusCodes": [ - 408, - 413, - 429, - 500, - 502, - 503, - 504 - ], - "afterStatusCodes": [ - 413, - 429, - 503 - ], - "maxRetryAfter": null, - "backoffLimit": null - }, - "throwHttpErrors": true, - "timeout": 10000, - "signal": {}, - "duplex": "half" - }, - "name": "HTTPError", - "requestUrl": "https://interop.connect.trinsic.cloud/vc-api/credentials/verify", - "status": 400 - }, - "operator": "notStrictEqual", - "stack": "AssertionError: Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(5) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js:66:20)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" - } - } - ] - }, - { - "id": "LearnCard", - "cells": [ + "duration": 45, + "state": "passed", + "speed": "medium" + }, + { + "type": "test", + "title": "EWF should verify Digital Bazaar", + "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", + "parent": "Df-YsqubGetRbgav6-8J3", + "ctx": null, + "_testId": "urn:uuid:9de1aeee-3b56-45f6-87fe-a8bf81a3d0a3", + "_events": {}, + "_eventsCount": 1, + "cell": { + "rowId": "Digital Bazaar", + "columnId": "EWF" + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 52160, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 94, + "state": "passed", + "speed": "slow" + }, + { + "type": "test", + "title": "LearnCard should verify Digital Bazaar", + "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", + "parent": "Df-YsqubGetRbgav6-8J3", + "ctx": null, + "_testId": "urn:uuid:eefddfd3-464b-4615-ae57-62b7ed91c569", + "_events": {}, + "_eventsCount": 1, + "cell": { + "rowId": "Digital Bazaar", + "columnId": "LearnCard" + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 52254, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 72, + "state": "passed", + "speed": "medium" + }, + { + "type": "test", + "title": "OpSecId should verify Digital Bazaar", + "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", + "parent": "Df-YsqubGetRbgav6-8J3", + "ctx": null, + "_testId": "urn:uuid:f418438d-1ad5-42e0-ae52-0a81c6de5165", + "_events": {}, + "_eventsCount": 1, + "cell": { + "rowId": "Digital Bazaar", + "columnId": "OpSecId" + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 52326, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 38, + "state": "passed", + "speed": "medium" + }, { "type": "test", - "title": "apicatalog.com should verify LearnCard", + "title": "SpruceID should verify Digital Bazaar", "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", "async": 0, "sync": true, @@ -30099,31 +30554,31 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", + "parent": "Df-YsqubGetRbgav6-8J3", "ctx": null, - "_testId": "urn:uuid:e10738f2-201c-4d9c-8b87-6ad31bcc64e0", + "_testId": "urn:uuid:8163bfd9-5a12-4f93-94a2-b8d829e2a13a", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "LearnCard", - "columnId": "apicatalog.com" + "rowId": "Digital Bazaar", + "columnId": "SpruceID" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 51161, + "_idleStart": 52364, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 53, + "duration": 27, "state": "passed", - "speed": "medium" + "speed": "fast" }, { "type": "test", - "title": "Danube Tech should verify LearnCard", + "title": "Trinsic should verify Digital Bazaar", "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", "async": 0, "sync": true, @@ -30134,25 +30589,65 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", + "parent": "Df-YsqubGetRbgav6-8J3", "ctx": null, - "_testId": "urn:uuid:e3a1d0f1-43b9-41e2-b314-26e1abe98fa2", + "_testId": "urn:uuid:6ac3a4fe-0e1d-48a0-86c5-2aa8a79e3c66", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "LearnCard", - "columnId": "Danube Tech" + "rowId": "Digital Bazaar", + "columnId": "Trinsic" + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 52391, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 41, + "state": "passed", + "speed": "medium" + } + ] + }, + { + "id": "EWF", + "cells": [ + { + "type": "test", + "title": "apicatalog.com should verify EWF", + "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", + "parent": "Df-YsqubGetRbgav6-8J3", + "ctx": null, + "_testId": "urn:uuid:669c36c0-9e76-42ef-9e1e-2325ff0960ed", + "_events": {}, + "_eventsCount": 1, + "cell": { + "rowId": "EWF", + "columnId": "apicatalog.com" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 51214, + "_idleStart": 52433, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 430, + "duration": 48, "state": "failed", "err": { "name": "AssertionError", @@ -30164,31 +30659,28 @@ "options": { "credentials": "same-origin", "headers": {}, - "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\"],\"id\":\"urn:uuid:50ff8248-e212-4a32-ab60-2372cfd94b6d\",\"type\":[\"VerifiableCredential\"],\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"issuer\":\"did:key:z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"proof\":{\"@context\":[\"https://w3id.org/security/suites/ed25519-2020/v1\"],\"type\":\"Ed25519Signature2020\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z5LdAymJKN9sAdofJTKjd5G4fFoM8BDSLJUgsbKCeWcrm8mJ9xUBcNjBv228ffj1zpgVegUc7YwD4HDKeKFTNHGZT\",\"verificationMethod\":\"did:key:z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh#z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh\",\"created\":\"2024-08-25T05:02:20.929Z\"}},\"options\":{\"checks\":[\"proof\"]}}", + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\"],\"id\":\"urn:uuid:89bc2afb-9a33-490e-9c0f-d93f9955ac5e\",\"type\":[\"VerifiableCredential\"],\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"issuer\":\"did:key:z6MksoRPRqnMWiivV4weRGGS9SiHXuqfJEYu95EiYtbvBxW6\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"proof\":{\"type\":\"Ed25519Signature2018\",\"proofPurpose\":\"assertionMethod\",\"verificationMethod\":\"did:key:z6MksoRPRqnMWiivV4weRGGS9SiHXuqfJEYu95EiYtbvBxW6#z6MksoRPRqnMWiivV4weRGGS9SiHXuqfJEYu95EiYtbvBxW6\",\"created\":\"2024-09-01T05:02:22.067Z\",\"jws\":\"eyJhbGciOiJFZERTQSIsImNyaXQiOlsiYjY0Il0sImI2NCI6ZmFsc2V9..V5piWdkVNEKuX_4KQtMHJeVEqz2oRSgupU_wBFECn6f1IU7o9L49llQbeDCGR5dUaRTVgYqYBIbu_BM9IMkrDQ\"}},\"options\":{\"checks\":[\"proof\"]}}", "method": "POST", "json": { "verifiableCredential": { "@context": [ "https://www.w3.org/2018/credentials/v1" ], - "id": "urn:uuid:50ff8248-e212-4a32-ab60-2372cfd94b6d", + "id": "urn:uuid:89bc2afb-9a33-490e-9c0f-d93f9955ac5e", "type": [ "VerifiableCredential" ], "credentialSubject": { "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" }, - "issuer": "did:key:z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh", + "issuer": "did:key:z6MksoRPRqnMWiivV4weRGGS9SiHXuqfJEYu95EiYtbvBxW6", "issuanceDate": "2020-03-16T22:37:26.544Z", "proof": { - "@context": [ - "https://w3id.org/security/suites/ed25519-2020/v1" - ], - "type": "Ed25519Signature2020", + "type": "Ed25519Signature2018", "proofPurpose": "assertionMethod", - "proofValue": "z5LdAymJKN9sAdofJTKjd5G4fFoM8BDSLJUgsbKCeWcrm8mJ9xUBcNjBv228ffj1zpgVegUc7YwD4HDKeKFTNHGZT", - "verificationMethod": "did:key:z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh#z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh", - "created": "2024-08-25T05:02:20.929Z" + "verificationMethod": "did:key:z6MksoRPRqnMWiivV4weRGGS9SiHXuqfJEYu95EiYtbvBxW6#z6MksoRPRqnMWiivV4weRGGS9SiHXuqfJEYu95EiYtbvBxW6", + "created": "2024-09-01T05:02:22.067Z", + "jws": "eyJhbGciOiJFZERTQSIsImNyaXQiOlsiYjY0Il0sImI2NCI6ZmFsc2V9..V5piWdkVNEKuX_4KQtMHJeVEqz2oRSgupU_wBFECn6f1IU7o9L49llQbeDCGR5dUaRTVgYqYBIbu_BM9IMkrDQ" } }, "options": { @@ -30263,12 +30755,15 @@ "duplex": "half" }, "name": "HTTPError", - "requestUrl": "https://univerifier.io/1.0/credentials/verify", + "requestUrl": "https://vc.apicatalog.com/credentials/verify", "status": 400, "data": { "checks": [ - "proof" - ] + "PROOF", + "INVALID_PROOF_CONFIGURATION" + ], + "warnings": [], + "errors": [] } }, "operator": "notStrictEqual", @@ -30277,7 +30772,7 @@ }, { "type": "test", - "title": "Digital Bazaar should verify LearnCard", + "title": "Danube Tech should verify EWF", "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", "async": 0, "sync": true, @@ -30288,168 +30783,66 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", + "parent": "Df-YsqubGetRbgav6-8J3", "ctx": null, - "_testId": "urn:uuid:3f3de6fd-8c9a-4936-8f41-3edaaa13f4bc", + "_testId": "urn:uuid:83c86e11-d1b0-41c1-b541-0a84c37d0e25", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "LearnCard", + "rowId": "EWF", + "columnId": "Danube Tech" + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 52481, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 434, + "state": "passed", + "speed": "slow" + }, + { + "type": "test", + "title": "Digital Bazaar should verify EWF", + "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", + "parent": "Df-YsqubGetRbgav6-8J3", + "ctx": null, + "_testId": "urn:uuid:c4d43510-653a-45e3-91c7-240583d09bb4", + "_events": {}, + "_eventsCount": 1, + "cell": { + "rowId": "EWF", "columnId": "Digital Bazaar" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 51646, + "_idleStart": 52916, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 47, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist", - "showDiff": false, - "actual": { - "response": {}, - "request": {}, - "options": { - "credentials": "same-origin", - "headers": {}, - "method": "POST", - "json": { - "verifiableCredential": { - "@context": [ - "https://www.w3.org/2018/credentials/v1" - ], - "id": "urn:uuid:50ff8248-e212-4a32-ab60-2372cfd94b6d", - "type": [ - "VerifiableCredential" - ], - "credentialSubject": { - "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" - }, - "issuer": "did:key:z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh", - "issuanceDate": "2020-03-16T22:37:26.544Z", - "proof": { - "@context": [ - "https://w3id.org/security/suites/ed25519-2020/v1" - ], - "type": "Ed25519Signature2020", - "proofPurpose": "assertionMethod", - "proofValue": "z5LdAymJKN9sAdofJTKjd5G4fFoM8BDSLJUgsbKCeWcrm8mJ9xUBcNjBv228ffj1zpgVegUc7YwD4HDKeKFTNHGZT", - "verificationMethod": "did:key:z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh#z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh", - "created": "2024-08-25T05:02:20.929Z" - } - }, - "options": { - "checks": [ - "proof" - ] - } - }, - "agent": { - "_events": {}, - "_eventsCount": 2, - "defaultPort": 443, - "protocol": "https:", - "options": { - "rejectUnauthorized": false, - "noDelay": true, - "path": null - }, - "requests": {}, - "sockets": {}, - "freeSockets": {}, - "keepAliveMsecs": 1000, - "keepAlive": false, - "maxSockets": null, - "maxFreeSockets": 256, - "scheduling": "lifo", - "maxTotalSockets": null, - "totalSocketCount": 0, - "maxCachedSessions": 100, - "_sessionCache": { - "map": {}, - "list": [] - } - }, - "hooks": { - "beforeRequest": [], - "beforeRetry": [], - "beforeError": [], - "afterResponse": [] - }, - "prefixUrl": "", - "retry": { - "limit": 2, - "methods": [ - "get", - "put", - "head", - "delete", - "options", - "trace" - ], - "statusCodes": [ - 408, - 413, - 429, - 500, - 502, - 503, - 504 - ], - "afterStatusCodes": [ - 413, - 429, - 503 - ], - "maxRetryAfter": null, - "backoffLimit": null - }, - "throwHttpErrors": true, - "timeout": 10000, - "signal": {}, - "duplex": "half", - "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\"],\"id\":\"urn:uuid:50ff8248-e212-4a32-ab60-2372cfd94b6d\",\"type\":[\"VerifiableCredential\"],\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"issuer\":\"did:key:z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"proof\":{\"@context\":[\"https://w3id.org/security/suites/ed25519-2020/v1\"],\"type\":\"Ed25519Signature2020\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z5LdAymJKN9sAdofJTKjd5G4fFoM8BDSLJUgsbKCeWcrm8mJ9xUBcNjBv228ffj1zpgVegUc7YwD4HDKeKFTNHGZT\",\"verificationMethod\":\"did:key:z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh#z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh\",\"created\":\"2024-08-25T05:02:20.929Z\"}},\"options\":{\"checks\":[\"proof\"]}}" - }, - "name": "HTTPError", - "requestUrl": "https://vc2.veresverifier.dev/verifiers/z19w7KofwvE2nkJeRVLp8NDxz/credentials/verify", - "status": 400, - "data": { - "verified": false, - "error": { - "name": "VerificationError", - "errors": [ - { - "name": "NotFoundError", - "message": "Did not verify any proofs; insufficient proofs matched the acceptable suite(s) and required purpose(s).", - "stack": "NotFoundError: Did not verify any proofs; insufficient proofs matched the acceptable suite(s) and required purpose(s).\n at ProofSet.verify (/home/node/app/node_modules/jsonld-signatures/lib/ProofSet.js:194:23)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async Object.verify (/home/node/app/node_modules/jsonld-signatures/lib/jsonld-signatures.js:169:18)\n at async _verifyCredential (file:///home/node/app/node_modules/@digitalbazaar/vc/lib/index.js:328:18)\n at async Module.verifyCredential (file:///home/node/app/node_modules/@digitalbazaar/vc/lib/index.js:277:12)\n at async Module.verifyCredential (file:///home/node/app/node_modules/@bedrock/vc-verifier/lib/di.js:13:18)\n at async file:///home/node/app/node_modules/@bedrock/vc-verifier/lib/http.js:84:24" - } - ], - "message": "Verification error(s)." - }, - "checks": [ - { - "check": [ - "proof" - ], - "id": "urn:uuid:50ff8248-e212-4a32-ab60-2372cfd94b6d", - "error": "Did not verify any proofs; insufficient proofs matched the acceptable suite(s) and required purpose(s)." - } - ] - } - }, - "operator": "notStrictEqual", - "stack": "AssertionError: Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js:66:20)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" - } + "duration": 92, + "state": "passed", + "speed": "slow" }, { "type": "test", - "title": "EWF should verify LearnCard", + "title": "EWF should verify EWF", "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", "async": 0, "sync": true, @@ -30460,20 +30853,20 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", + "parent": "Df-YsqubGetRbgav6-8J3", "ctx": null, - "_testId": "urn:uuid:410964ef-9174-4d26-8ea5-9e7642b30829", + "_testId": "urn:uuid:e4e71659-2e14-4c75-b25c-b51751714ba0", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "LearnCard", + "rowId": "EWF", "columnId": "EWF" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 51692, + "_idleStart": 53009, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -30484,7 +30877,7 @@ }, { "type": "test", - "title": "LearnCard should verify LearnCard", + "title": "LearnCard should verify EWF", "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", "async": 0, "sync": true, @@ -30495,31 +30888,31 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", + "parent": "Df-YsqubGetRbgav6-8J3", "ctx": null, - "_testId": "urn:uuid:3ca896cc-04e7-4004-958a-039587c98bb3", + "_testId": "urn:uuid:5beedf9d-b560-4eb9-b5dc-e5989d319719", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "LearnCard", + "rowId": "EWF", "columnId": "LearnCard" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 51785, + "_idleStart": 53102, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 60, + "duration": 62, "state": "passed", "speed": "medium" }, { "type": "test", - "title": "OpSecId should verify LearnCard", + "title": "OpSecId should verify EWF", "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", "async": 0, "sync": true, @@ -30530,29 +30923,29 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", + "parent": "Df-YsqubGetRbgav6-8J3", "ctx": null, - "_testId": "urn:uuid:81365c2c-0545-4889-bd70-1f843155bd38", + "_testId": "urn:uuid:64793408-9ab6-44c5-81ff-22da122b07ae", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "LearnCard", + "rowId": "EWF", "columnId": "OpSecId" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 51846, + "_idleStart": 53165, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 53, + "duration": 25, "state": "failed", "err": { "name": "AssertionError", - "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(5) } to not exist", + "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist", "showDiff": false, "actual": { "response": {}, @@ -30560,31 +30953,28 @@ "options": { "credentials": "same-origin", "headers": {}, - "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\"],\"id\":\"urn:uuid:50ff8248-e212-4a32-ab60-2372cfd94b6d\",\"type\":[\"VerifiableCredential\"],\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"issuer\":\"did:key:z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"proof\":{\"@context\":[\"https://w3id.org/security/suites/ed25519-2020/v1\"],\"type\":\"Ed25519Signature2020\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z5LdAymJKN9sAdofJTKjd5G4fFoM8BDSLJUgsbKCeWcrm8mJ9xUBcNjBv228ffj1zpgVegUc7YwD4HDKeKFTNHGZT\",\"verificationMethod\":\"did:key:z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh#z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh\",\"created\":\"2024-08-25T05:02:20.929Z\"}},\"options\":{\"checks\":[\"proof\"]}}", + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\"],\"id\":\"urn:uuid:89bc2afb-9a33-490e-9c0f-d93f9955ac5e\",\"type\":[\"VerifiableCredential\"],\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"issuer\":\"did:key:z6MksoRPRqnMWiivV4weRGGS9SiHXuqfJEYu95EiYtbvBxW6\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"proof\":{\"type\":\"Ed25519Signature2018\",\"proofPurpose\":\"assertionMethod\",\"verificationMethod\":\"did:key:z6MksoRPRqnMWiivV4weRGGS9SiHXuqfJEYu95EiYtbvBxW6#z6MksoRPRqnMWiivV4weRGGS9SiHXuqfJEYu95EiYtbvBxW6\",\"created\":\"2024-09-01T05:02:22.067Z\",\"jws\":\"eyJhbGciOiJFZERTQSIsImNyaXQiOlsiYjY0Il0sImI2NCI6ZmFsc2V9..V5piWdkVNEKuX_4KQtMHJeVEqz2oRSgupU_wBFECn6f1IU7o9L49llQbeDCGR5dUaRTVgYqYBIbu_BM9IMkrDQ\"}},\"options\":{\"checks\":[\"proof\"]}}", "method": "POST", "json": { "verifiableCredential": { "@context": [ "https://www.w3.org/2018/credentials/v1" ], - "id": "urn:uuid:50ff8248-e212-4a32-ab60-2372cfd94b6d", + "id": "urn:uuid:89bc2afb-9a33-490e-9c0f-d93f9955ac5e", "type": [ "VerifiableCredential" ], "credentialSubject": { "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" }, - "issuer": "did:key:z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh", + "issuer": "did:key:z6MksoRPRqnMWiivV4weRGGS9SiHXuqfJEYu95EiYtbvBxW6", "issuanceDate": "2020-03-16T22:37:26.544Z", "proof": { - "@context": [ - "https://w3id.org/security/suites/ed25519-2020/v1" - ], - "type": "Ed25519Signature2020", + "type": "Ed25519Signature2018", "proofPurpose": "assertionMethod", - "proofValue": "z5LdAymJKN9sAdofJTKjd5G4fFoM8BDSLJUgsbKCeWcrm8mJ9xUBcNjBv228ffj1zpgVegUc7YwD4HDKeKFTNHGZT", - "verificationMethod": "did:key:z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh#z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh", - "created": "2024-08-25T05:02:20.929Z" + "verificationMethod": "did:key:z6MksoRPRqnMWiivV4weRGGS9SiHXuqfJEYu95EiYtbvBxW6#z6MksoRPRqnMWiivV4weRGGS9SiHXuqfJEYu95EiYtbvBxW6", + "created": "2024-09-01T05:02:22.067Z", + "jws": "eyJhbGciOiJFZERTQSIsImNyaXQiOlsiYjY0Il0sImI2NCI6ZmFsc2V9..V5piWdkVNEKuX_4KQtMHJeVEqz2oRSgupU_wBFECn6f1IU7o9L49llQbeDCGR5dUaRTVgYqYBIbu_BM9IMkrDQ" } }, "options": { @@ -30660,15 +31050,26 @@ }, "name": "HTTPError", "requestUrl": "https://agent.opsec.id/vc/credentials/verify", - "status": 500 + "status": 422, + "data": { + "json": { + "verifiableCredential": { + "proof": { + "proofValue": [ + "Missing data for required field." + ] + } + } + } + } }, "operator": "notStrictEqual", - "stack": "AssertionError: Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(5) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js:66:20)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" + "stack": "AssertionError: Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js:66:20)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" } }, { "type": "test", - "title": "SpruceID should verify LearnCard", + "title": "SpruceID should verify EWF", "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", "async": 0, "sync": true, @@ -30679,31 +31080,31 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", + "parent": "Df-YsqubGetRbgav6-8J3", "ctx": null, - "_testId": "urn:uuid:cde75dfa-c5c8-40c9-9cd1-dbb948f5c44b", + "_testId": "urn:uuid:66f2087c-4581-4af6-bbac-50aab3914fbe", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "LearnCard", + "rowId": "EWF", "columnId": "SpruceID" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 51900, + "_idleStart": 53190, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 31, + "duration": 21, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "Trinsic should verify LearnCard", + "title": "Trinsic should verify EWF", "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", "async": 0, "sync": true, @@ -30714,69 +31115,29 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", + "parent": "Df-YsqubGetRbgav6-8J3", "ctx": null, - "_testId": "urn:uuid:e05968b6-38ed-4e32-af03-dd11ab4bb985", + "_testId": "urn:uuid:53c11f6c-9625-4230-8d34-7092962b9273", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "LearnCard", + "rowId": "EWF", "columnId": "Trinsic" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 51932, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 40, - "state": "passed", - "speed": "medium" - } - ] - }, - { - "id": "OpSecId", - "cells": [ - { - "type": "test", - "title": "apicatalog.com should verify OpSecId", - "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", - "async": 0, - "sync": true, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", - "ctx": null, - "_testId": "urn:uuid:2b46cda3-0cf0-46b5-8e49-a8f21e3ef243", - "_events": {}, - "_eventsCount": 1, - "cell": { - "rowId": "OpSecId", - "columnId": "apicatalog.com" - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 51972, + "_idleStart": 53212, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 27, "state": "failed", "err": { "name": "AssertionError", - "message": "Expected issuer: OpSecId to not error: expected HTTPError: DID not found: did:key:z6MksCe… { …(6) } to not exist", + "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(5) } to not exist", "showDiff": false, "actual": { "response": {}, @@ -30784,29 +31145,34 @@ "options": { "credentials": "same-origin", "headers": {}, - "body": "{\"credential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\"],\"id\":\"urn:uuid:09a66eeb-711d-4704-bda0-c767bbe04f12\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MksCeXh9Jwp4ZTEb5Kei7sJpBLpUyS3oaAib8wbtJQqsQu\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"}},\"options\":{\"type\":\"Ed25519Signature2020\",\"credentialStatus\":{\"type\":\"BitstringStatusListEntry\",\"statusPurpose\":\"suspension\"}}}", + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\"],\"id\":\"urn:uuid:89bc2afb-9a33-490e-9c0f-d93f9955ac5e\",\"type\":[\"VerifiableCredential\"],\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"issuer\":\"did:key:z6MksoRPRqnMWiivV4weRGGS9SiHXuqfJEYu95EiYtbvBxW6\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"proof\":{\"type\":\"Ed25519Signature2018\",\"proofPurpose\":\"assertionMethod\",\"verificationMethod\":\"did:key:z6MksoRPRqnMWiivV4weRGGS9SiHXuqfJEYu95EiYtbvBxW6#z6MksoRPRqnMWiivV4weRGGS9SiHXuqfJEYu95EiYtbvBxW6\",\"created\":\"2024-09-01T05:02:22.067Z\",\"jws\":\"eyJhbGciOiJFZERTQSIsImNyaXQiOlsiYjY0Il0sImI2NCI6ZmFsc2V9..V5piWdkVNEKuX_4KQtMHJeVEqz2oRSgupU_wBFECn6f1IU7o9L49llQbeDCGR5dUaRTVgYqYBIbu_BM9IMkrDQ\"}},\"options\":{\"checks\":[\"proof\"]}}", "method": "POST", "json": { - "credential": { + "verifiableCredential": { "@context": [ "https://www.w3.org/2018/credentials/v1" ], - "id": "urn:uuid:09a66eeb-711d-4704-bda0-c767bbe04f12", + "id": "urn:uuid:89bc2afb-9a33-490e-9c0f-d93f9955ac5e", "type": [ "VerifiableCredential" ], - "issuer": "did:key:z6MksCeXh9Jwp4ZTEb5Kei7sJpBLpUyS3oaAib8wbtJQqsQu", - "issuanceDate": "2020-03-16T22:37:26.544Z", "credentialSubject": { "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" + }, + "issuer": "did:key:z6MksoRPRqnMWiivV4weRGGS9SiHXuqfJEYu95EiYtbvBxW6", + "issuanceDate": "2020-03-16T22:37:26.544Z", + "proof": { + "type": "Ed25519Signature2018", + "proofPurpose": "assertionMethod", + "verificationMethod": "did:key:z6MksoRPRqnMWiivV4weRGGS9SiHXuqfJEYu95EiYtbvBxW6#z6MksoRPRqnMWiivV4weRGGS9SiHXuqfJEYu95EiYtbvBxW6", + "created": "2024-09-01T05:02:22.067Z", + "jws": "eyJhbGciOiJFZERTQSIsImNyaXQiOlsiYjY0Il0sImI2NCI6ZmFsc2V9..V5piWdkVNEKuX_4KQtMHJeVEqz2oRSgupU_wBFECn6f1IU7o9L49llQbeDCGR5dUaRTVgYqYBIbu_BM9IMkrDQ" } }, "options": { - "type": "Ed25519Signature2020", - "credentialStatus": { - "type": "BitstringStatusListEntry", - "statusPurpose": "suspension" - } + "checks": [ + "proof" + ] } }, "agent": { @@ -30875,19 +31241,56 @@ "duplex": "half" }, "name": "HTTPError", - "requestUrl": "https://agent.opsec.id/vc/credentials/issue", - "status": 400, - "data": { - "message": "DID not found: did:key:z6MksCeXh9Jwp4ZTEb5Kei7sJpBLpUyS3oaAib8wbtJQqsQu" - } + "requestUrl": "https://interop.connect.trinsic.cloud/vc-api/credentials/verify", + "status": 400 }, "operator": "notStrictEqual", - "stack": "AssertionError: Expected issuer: OpSecId to not error: expected HTTPError: DID not found: did:key:z6MksCe… { …(6) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js:54:20)\n at process.processImmediate (node:internal/timers:483:21)" + "stack": "AssertionError: Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(5) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js:66:20)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" } + } + ] + }, + { + "id": "LearnCard", + "cells": [ + { + "type": "test", + "title": "apicatalog.com should verify LearnCard", + "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", + "parent": "Df-YsqubGetRbgav6-8J3", + "ctx": null, + "_testId": "urn:uuid:28f97ff4-bfc0-4e98-93b5-feb8e2741f7d", + "_events": {}, + "_eventsCount": 1, + "cell": { + "rowId": "LearnCard", + "columnId": "apicatalog.com" + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 53240, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 54, + "state": "passed", + "speed": "medium" }, { "type": "test", - "title": "Danube Tech should verify OpSecId", + "title": "Danube Tech should verify LearnCard", "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", "async": 0, "sync": true, @@ -30898,29 +31301,29 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", + "parent": "Df-YsqubGetRbgav6-8J3", "ctx": null, - "_testId": "urn:uuid:b4dc01b7-3e12-4852-91a9-e2bc37c3c585", + "_testId": "urn:uuid:1ee81047-59b1-4b0b-8e6f-bdca53c6260b", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "OpSecId", + "rowId": "LearnCard", "columnId": "Danube Tech" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 51972, + "_idleStart": 53294, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 440, "state": "failed", "err": { "name": "AssertionError", - "message": "Expected issuer: OpSecId to not error: expected HTTPError: DID not found: did:key:z6MksCe… { …(6) } to not exist", + "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist", "showDiff": false, "actual": { "response": {}, @@ -30928,29 +31331,37 @@ "options": { "credentials": "same-origin", "headers": {}, - "body": "{\"credential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\"],\"id\":\"urn:uuid:09a66eeb-711d-4704-bda0-c767bbe04f12\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MksCeXh9Jwp4ZTEb5Kei7sJpBLpUyS3oaAib8wbtJQqsQu\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"}},\"options\":{\"type\":\"Ed25519Signature2020\",\"credentialStatus\":{\"type\":\"BitstringStatusListEntry\",\"statusPurpose\":\"suspension\"}}}", + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\"],\"id\":\"urn:uuid:d2f4a224-9a5c-4579-ac2f-c9a285a6bc2f\",\"type\":[\"VerifiableCredential\"],\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"issuer\":\"did:key:z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"proof\":{\"@context\":[\"https://w3id.org/security/suites/ed25519-2020/v1\"],\"type\":\"Ed25519Signature2020\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z3vGvKhQhktNJrYKTXiERD6XNG5dcPmcRGvDwM8rGrVpHyfv7Rs18KPas6gXPyzVo2XK7Yy6VqbUFfgMpp5N2xVpg\",\"verificationMethod\":\"did:key:z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh#z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh\",\"created\":\"2024-09-01T05:02:22.179Z\"}},\"options\":{\"checks\":[\"proof\"]}}", "method": "POST", "json": { - "credential": { + "verifiableCredential": { "@context": [ "https://www.w3.org/2018/credentials/v1" ], - "id": "urn:uuid:09a66eeb-711d-4704-bda0-c767bbe04f12", + "id": "urn:uuid:d2f4a224-9a5c-4579-ac2f-c9a285a6bc2f", "type": [ "VerifiableCredential" ], - "issuer": "did:key:z6MksCeXh9Jwp4ZTEb5Kei7sJpBLpUyS3oaAib8wbtJQqsQu", - "issuanceDate": "2020-03-16T22:37:26.544Z", "credentialSubject": { "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" + }, + "issuer": "did:key:z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh", + "issuanceDate": "2020-03-16T22:37:26.544Z", + "proof": { + "@context": [ + "https://w3id.org/security/suites/ed25519-2020/v1" + ], + "type": "Ed25519Signature2020", + "proofPurpose": "assertionMethod", + "proofValue": "z3vGvKhQhktNJrYKTXiERD6XNG5dcPmcRGvDwM8rGrVpHyfv7Rs18KPas6gXPyzVo2XK7Yy6VqbUFfgMpp5N2xVpg", + "verificationMethod": "did:key:z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh#z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh", + "created": "2024-09-01T05:02:22.179Z" } }, "options": { - "type": "Ed25519Signature2020", - "credentialStatus": { - "type": "BitstringStatusListEntry", - "statusPurpose": "suspension" - } + "checks": [ + "proof" + ] } }, "agent": { @@ -31019,19 +31430,21 @@ "duplex": "half" }, "name": "HTTPError", - "requestUrl": "https://agent.opsec.id/vc/credentials/issue", + "requestUrl": "https://univerifier.io/1.0/credentials/verify", "status": 400, "data": { - "message": "DID not found: did:key:z6MksCeXh9Jwp4ZTEb5Kei7sJpBLpUyS3oaAib8wbtJQqsQu" + "checks": [ + "proof" + ] } }, "operator": "notStrictEqual", - "stack": "AssertionError: Expected issuer: OpSecId to not error: expected HTTPError: DID not found: did:key:z6MksCe… { …(6) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js:54:20)\n at process.processImmediate (node:internal/timers:483:21)" + "stack": "AssertionError: Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js:66:20)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" } }, { "type": "test", - "title": "Digital Bazaar should verify OpSecId", + "title": "Digital Bazaar should verify LearnCard", "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", "async": 0, "sync": true, @@ -31042,29 +31455,29 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", + "parent": "Df-YsqubGetRbgav6-8J3", "ctx": null, - "_testId": "urn:uuid:affdbc43-1838-4641-a5f5-115fdf1bc735", + "_testId": "urn:uuid:b6209cbb-0429-4a1e-bbc3-2e1348d9bbf8", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "OpSecId", + "rowId": "LearnCard", "columnId": "Digital Bazaar" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 51973, + "_idleStart": 53734, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 82, "state": "failed", "err": { "name": "AssertionError", - "message": "Expected issuer: OpSecId to not error: expected HTTPError: DID not found: did:key:z6MksCe… { …(6) } to not exist", + "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist", "showDiff": false, "actual": { "response": {}, @@ -31072,29 +31485,36 @@ "options": { "credentials": "same-origin", "headers": {}, - "body": "{\"credential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\"],\"id\":\"urn:uuid:09a66eeb-711d-4704-bda0-c767bbe04f12\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MksCeXh9Jwp4ZTEb5Kei7sJpBLpUyS3oaAib8wbtJQqsQu\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"}},\"options\":{\"type\":\"Ed25519Signature2020\",\"credentialStatus\":{\"type\":\"BitstringStatusListEntry\",\"statusPurpose\":\"suspension\"}}}", "method": "POST", "json": { - "credential": { + "verifiableCredential": { "@context": [ "https://www.w3.org/2018/credentials/v1" ], - "id": "urn:uuid:09a66eeb-711d-4704-bda0-c767bbe04f12", + "id": "urn:uuid:d2f4a224-9a5c-4579-ac2f-c9a285a6bc2f", "type": [ "VerifiableCredential" ], - "issuer": "did:key:z6MksCeXh9Jwp4ZTEb5Kei7sJpBLpUyS3oaAib8wbtJQqsQu", - "issuanceDate": "2020-03-16T22:37:26.544Z", "credentialSubject": { "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" + }, + "issuer": "did:key:z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh", + "issuanceDate": "2020-03-16T22:37:26.544Z", + "proof": { + "@context": [ + "https://w3id.org/security/suites/ed25519-2020/v1" + ], + "type": "Ed25519Signature2020", + "proofPurpose": "assertionMethod", + "proofValue": "z3vGvKhQhktNJrYKTXiERD6XNG5dcPmcRGvDwM8rGrVpHyfv7Rs18KPas6gXPyzVo2XK7Yy6VqbUFfgMpp5N2xVpg", + "verificationMethod": "did:key:z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh#z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh", + "created": "2024-09-01T05:02:22.179Z" } }, "options": { - "type": "Ed25519Signature2020", - "credentialStatus": { - "type": "BitstringStatusListEntry", - "statusPurpose": "suspension" - } + "checks": [ + "proof" + ] } }, "agent": { @@ -31160,22 +31580,78 @@ "throwHttpErrors": true, "timeout": 10000, "signal": {}, - "duplex": "half" + "duplex": "half", + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\"],\"id\":\"urn:uuid:d2f4a224-9a5c-4579-ac2f-c9a285a6bc2f\",\"type\":[\"VerifiableCredential\"],\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"issuer\":\"did:key:z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"proof\":{\"@context\":[\"https://w3id.org/security/suites/ed25519-2020/v1\"],\"type\":\"Ed25519Signature2020\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z3vGvKhQhktNJrYKTXiERD6XNG5dcPmcRGvDwM8rGrVpHyfv7Rs18KPas6gXPyzVo2XK7Yy6VqbUFfgMpp5N2xVpg\",\"verificationMethod\":\"did:key:z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh#z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh\",\"created\":\"2024-09-01T05:02:22.179Z\"}},\"options\":{\"checks\":[\"proof\"]}}" }, "name": "HTTPError", - "requestUrl": "https://agent.opsec.id/vc/credentials/issue", + "requestUrl": "https://vc2.veresverifier.dev/verifiers/z19w7KofwvE2nkJeRVLp8NDxz/credentials/verify", "status": 400, "data": { - "message": "DID not found: did:key:z6MksCeXh9Jwp4ZTEb5Kei7sJpBLpUyS3oaAib8wbtJQqsQu" + "verified": false, + "error": { + "name": "VerificationError", + "errors": [ + { + "name": "NotFoundError", + "message": "Did not verify any proofs; insufficient proofs matched the acceptable suite(s) and required purpose(s).", + "stack": "NotFoundError: Did not verify any proofs; insufficient proofs matched the acceptable suite(s) and required purpose(s).\n at ProofSet.verify (/home/node/app/node_modules/jsonld-signatures/lib/ProofSet.js:194:23)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async Object.verify (/home/node/app/node_modules/jsonld-signatures/lib/jsonld-signatures.js:169:18)\n at async _verifyCredential (file:///home/node/app/node_modules/@digitalbazaar/vc/lib/index.js:328:18)\n at async Module.verifyCredential (file:///home/node/app/node_modules/@digitalbazaar/vc/lib/index.js:277:12)\n at async Module.verifyCredential (file:///home/node/app/node_modules/@bedrock/vc-verifier/lib/di.js:13:18)\n at async file:///home/node/app/node_modules/@bedrock/vc-verifier/lib/http.js:84:24" + } + ], + "message": "Verification error(s)." + }, + "checks": [ + { + "check": [ + "proof" + ], + "id": "urn:uuid:d2f4a224-9a5c-4579-ac2f-c9a285a6bc2f", + "error": "Did not verify any proofs; insufficient proofs matched the acceptable suite(s) and required purpose(s)." + } + ] } }, "operator": "notStrictEqual", - "stack": "AssertionError: Expected issuer: OpSecId to not error: expected HTTPError: DID not found: did:key:z6MksCe… { …(6) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js:54:20)\n at process.processImmediate (node:internal/timers:483:21)" + "stack": "AssertionError: Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js:66:20)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" } }, { "type": "test", - "title": "EWF should verify OpSecId", + "title": "EWF should verify LearnCard", + "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", + "parent": "Df-YsqubGetRbgav6-8J3", + "ctx": null, + "_testId": "urn:uuid:5577e444-1630-4b00-b997-52f110d785d9", + "_events": {}, + "_eventsCount": 1, + "cell": { + "rowId": "LearnCard", + "columnId": "EWF" + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 53816, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 95, + "state": "passed", + "speed": "slow" + }, + { + "type": "test", + "title": "LearnCard should verify LearnCard", "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", "async": 0, "sync": true, @@ -31186,29 +31662,64 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", + "parent": "Df-YsqubGetRbgav6-8J3", "ctx": null, - "_testId": "urn:uuid:3f9fc45a-c475-4cfd-9eb1-057330d9857a", + "_testId": "urn:uuid:d55832aa-090a-4ce9-9aeb-1a6d39eca8b8", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "OpSecId", - "columnId": "EWF" + "rowId": "LearnCard", + "columnId": "LearnCard" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 51973, + "_idleStart": 53911, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 69, + "state": "passed", + "speed": "medium" + }, + { + "type": "test", + "title": "OpSecId should verify LearnCard", + "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", + "parent": "Df-YsqubGetRbgav6-8J3", + "ctx": null, + "_testId": "urn:uuid:a6c873a3-1986-4682-887f-6c9d6424ac40", + "_events": {}, + "_eventsCount": 1, + "cell": { + "rowId": "LearnCard", + "columnId": "OpSecId" + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 53980, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 34, "state": "failed", "err": { "name": "AssertionError", - "message": "Expected issuer: OpSecId to not error: expected HTTPError: DID not found: did:key:z6MksCe… { …(6) } to not exist", + "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(5) } to not exist", "showDiff": false, "actual": { "response": {}, @@ -31216,29 +31727,37 @@ "options": { "credentials": "same-origin", "headers": {}, - "body": "{\"credential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\"],\"id\":\"urn:uuid:09a66eeb-711d-4704-bda0-c767bbe04f12\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MksCeXh9Jwp4ZTEb5Kei7sJpBLpUyS3oaAib8wbtJQqsQu\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"}},\"options\":{\"type\":\"Ed25519Signature2020\",\"credentialStatus\":{\"type\":\"BitstringStatusListEntry\",\"statusPurpose\":\"suspension\"}}}", + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\"],\"id\":\"urn:uuid:d2f4a224-9a5c-4579-ac2f-c9a285a6bc2f\",\"type\":[\"VerifiableCredential\"],\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"issuer\":\"did:key:z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"proof\":{\"@context\":[\"https://w3id.org/security/suites/ed25519-2020/v1\"],\"type\":\"Ed25519Signature2020\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z3vGvKhQhktNJrYKTXiERD6XNG5dcPmcRGvDwM8rGrVpHyfv7Rs18KPas6gXPyzVo2XK7Yy6VqbUFfgMpp5N2xVpg\",\"verificationMethod\":\"did:key:z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh#z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh\",\"created\":\"2024-09-01T05:02:22.179Z\"}},\"options\":{\"checks\":[\"proof\"]}}", "method": "POST", "json": { - "credential": { + "verifiableCredential": { "@context": [ "https://www.w3.org/2018/credentials/v1" ], - "id": "urn:uuid:09a66eeb-711d-4704-bda0-c767bbe04f12", + "id": "urn:uuid:d2f4a224-9a5c-4579-ac2f-c9a285a6bc2f", "type": [ "VerifiableCredential" ], - "issuer": "did:key:z6MksCeXh9Jwp4ZTEb5Kei7sJpBLpUyS3oaAib8wbtJQqsQu", - "issuanceDate": "2020-03-16T22:37:26.544Z", "credentialSubject": { "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" + }, + "issuer": "did:key:z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh", + "issuanceDate": "2020-03-16T22:37:26.544Z", + "proof": { + "@context": [ + "https://w3id.org/security/suites/ed25519-2020/v1" + ], + "type": "Ed25519Signature2020", + "proofPurpose": "assertionMethod", + "proofValue": "z3vGvKhQhktNJrYKTXiERD6XNG5dcPmcRGvDwM8rGrVpHyfv7Rs18KPas6gXPyzVo2XK7Yy6VqbUFfgMpp5N2xVpg", + "verificationMethod": "did:key:z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh#z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh", + "created": "2024-09-01T05:02:22.179Z" } }, "options": { - "type": "Ed25519Signature2020", - "credentialStatus": { - "type": "BitstringStatusListEntry", - "statusPurpose": "suspension" - } + "checks": [ + "proof" + ] } }, "agent": { @@ -31307,19 +31826,91 @@ "duplex": "half" }, "name": "HTTPError", - "requestUrl": "https://agent.opsec.id/vc/credentials/issue", - "status": 400, - "data": { - "message": "DID not found: did:key:z6MksCeXh9Jwp4ZTEb5Kei7sJpBLpUyS3oaAib8wbtJQqsQu" - } + "requestUrl": "https://agent.opsec.id/vc/credentials/verify", + "status": 500 }, "operator": "notStrictEqual", - "stack": "AssertionError: Expected issuer: OpSecId to not error: expected HTTPError: DID not found: did:key:z6MksCe… { …(6) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js:54:20)\n at process.processImmediate (node:internal/timers:483:21)" + "stack": "AssertionError: Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(5) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js:66:20)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" } }, { "type": "test", - "title": "LearnCard should verify OpSecId", + "title": "SpruceID should verify LearnCard", + "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", + "parent": "Df-YsqubGetRbgav6-8J3", + "ctx": null, + "_testId": "urn:uuid:d8c0d798-caa9-47a9-b9ae-b8ad93d04bcb", + "_events": {}, + "_eventsCount": 1, + "cell": { + "rowId": "LearnCard", + "columnId": "SpruceID" + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 54016, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 32, + "state": "passed", + "speed": "fast" + }, + { + "type": "test", + "title": "Trinsic should verify LearnCard", + "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", + "parent": "Df-YsqubGetRbgav6-8J3", + "ctx": null, + "_testId": "urn:uuid:15d6a594-c50e-4701-9cd1-0b2be92b94e0", + "_events": {}, + "_eventsCount": 1, + "cell": { + "rowId": "LearnCard", + "columnId": "Trinsic" + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 54048, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 43, + "state": "passed", + "speed": "medium" + } + ] + }, + { + "id": "OpSecId", + "cells": [ + { + "type": "test", + "title": "apicatalog.com should verify OpSecId", "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", "async": 0, "sync": true, @@ -31330,29 +31921,134 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", + "parent": "Df-YsqubGetRbgav6-8J3", "ctx": null, - "_testId": "urn:uuid:5a0cae51-fd43-435c-bf06-0319df1b7392", + "_testId": "urn:uuid:f4e50bad-edc9-491a-981e-bb44c263b8f2", "_events": {}, "_eventsCount": 1, "cell": { "rowId": "OpSecId", - "columnId": "LearnCard" + "columnId": "apicatalog.com" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 51974, + "_idleStart": 54091, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 59, + "state": "passed", + "speed": "medium" + }, + { + "type": "test", + "title": "Danube Tech should verify OpSecId", + "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", + "parent": "Df-YsqubGetRbgav6-8J3", + "ctx": null, + "_testId": "urn:uuid:e943772f-e9d3-4f91-beef-decd11d551fc", + "_events": {}, + "_eventsCount": 1, + "cell": { + "rowId": "OpSecId", + "columnId": "Danube Tech" + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 54151, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 433, + "state": "passed", + "speed": "slow" + }, + { + "type": "test", + "title": "Digital Bazaar should verify OpSecId", + "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", + "parent": "Df-YsqubGetRbgav6-8J3", + "ctx": null, + "_testId": "urn:uuid:f9ca3500-c1ed-4b10-a9dc-2dc52aef9522", + "_events": {}, + "_eventsCount": 1, + "cell": { + "rowId": "OpSecId", + "columnId": "Digital Bazaar" + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 54584, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 47, + "state": "passed", + "speed": "medium" + }, + { + "type": "test", + "title": "EWF should verify OpSecId", + "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", + "parent": "Df-YsqubGetRbgav6-8J3", + "ctx": null, + "_testId": "urn:uuid:4047665b-f0df-4f47-a71c-ca8ba656c915", + "_events": {}, + "_eventsCount": 1, + "cell": { + "rowId": "OpSecId", + "columnId": "EWF" + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 54632, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 99, "state": "failed", "err": { "name": "AssertionError", - "message": "Expected issuer: OpSecId to not error: expected HTTPError: DID not found: did:key:z6MksCe… { …(6) } to not exist", + "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist", "showDiff": false, "actual": { "response": {}, @@ -31360,29 +32056,35 @@ "options": { "credentials": "same-origin", "headers": {}, - "body": "{\"credential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\"],\"id\":\"urn:uuid:09a66eeb-711d-4704-bda0-c767bbe04f12\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MksCeXh9Jwp4ZTEb5Kei7sJpBLpUyS3oaAib8wbtJQqsQu\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"}},\"options\":{\"type\":\"Ed25519Signature2020\",\"credentialStatus\":{\"type\":\"BitstringStatusListEntry\",\"statusPurpose\":\"suspension\"}}}", + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",\"https://w3id.org/security/suites/ed25519-2020/v1\"],\"id\":\"urn:uuid:3687a2c6-12c8-419e-9d26-eb38f68aa483\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkmiYjSToh5NdEf9xNuh5mDGXGYinzcAy1s4feRHtkEQJr\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"type\":\"Ed25519Signature2020\",\"verificationMethod\":\"did:key:z6MkmiYjSToh5NdEf9xNuh5mDGXGYinzcAy1s4feRHtkEQJr#z6MkmiYjSToh5NdEf9xNuh5mDGXGYinzcAy1s4feRHtkEQJr\",\"proofPurpose\":\"assertionMethod\",\"created\":\"2024-09-01T05:02:22+00:00\",\"proofValue\":\"zuEbnQbxZ2Vi8ANw4XkRvvAHsBupcWGAtVg6DCt7FsVvsbVnduiHqxoGmxKUK5dTfAw9QzBp5eFuBKwN7BcyPcpj\"}},\"options\":{\"checks\":[\"proof\"]}}", "method": "POST", "json": { - "credential": { + "verifiableCredential": { "@context": [ - "https://www.w3.org/2018/credentials/v1" + "https://www.w3.org/2018/credentials/v1", + "https://w3id.org/security/suites/ed25519-2020/v1" ], - "id": "urn:uuid:09a66eeb-711d-4704-bda0-c767bbe04f12", + "id": "urn:uuid:3687a2c6-12c8-419e-9d26-eb38f68aa483", "type": [ "VerifiableCredential" ], - "issuer": "did:key:z6MksCeXh9Jwp4ZTEb5Kei7sJpBLpUyS3oaAib8wbtJQqsQu", + "issuer": "did:key:z6MkmiYjSToh5NdEf9xNuh5mDGXGYinzcAy1s4feRHtkEQJr", "issuanceDate": "2020-03-16T22:37:26.544Z", "credentialSubject": { "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" + }, + "proof": { + "type": "Ed25519Signature2020", + "verificationMethod": "did:key:z6MkmiYjSToh5NdEf9xNuh5mDGXGYinzcAy1s4feRHtkEQJr#z6MkmiYjSToh5NdEf9xNuh5mDGXGYinzcAy1s4feRHtkEQJr", + "proofPurpose": "assertionMethod", + "created": "2024-09-01T05:02:22+00:00", + "proofValue": "zuEbnQbxZ2Vi8ANw4XkRvvAHsBupcWGAtVg6DCt7FsVvsbVnduiHqxoGmxKUK5dTfAw9QzBp5eFuBKwN7BcyPcpj" } }, "options": { - "type": "Ed25519Signature2020", - "credentialStatus": { - "type": "BitstringStatusListEntry", - "statusPurpose": "suspension" - } + "checks": [ + "proof" + ] } }, "agent": { @@ -31451,19 +32153,25 @@ "duplex": "half" }, "name": "HTTPError", - "requestUrl": "https://agent.opsec.id/vc/credentials/issue", + "requestUrl": "https://vc-api-dev.energyweb.org/v1/vc-api/credentials/verify", "status": 400, "data": { - "message": "DID not found: did:key:z6MksCeXh9Jwp4ZTEb5Kei7sJpBLpUyS3oaAib8wbtJQqsQu" + "checks": [ + "proof" + ], + "warnings": [], + "errors": [ + "signature error: Verification equation was not satisfied" + ] } }, "operator": "notStrictEqual", - "stack": "AssertionError: Expected issuer: OpSecId to not error: expected HTTPError: DID not found: did:key:z6MksCe… { …(6) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js:54:20)\n at process.processImmediate (node:internal/timers:483:21)" + "stack": "AssertionError: Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js:66:20)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" } }, { "type": "test", - "title": "OpSecId should verify OpSecId", + "title": "LearnCard should verify OpSecId", "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", "async": 0, "sync": true, @@ -31474,29 +32182,29 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", + "parent": "Df-YsqubGetRbgav6-8J3", "ctx": null, - "_testId": "urn:uuid:68632c32-1c73-4879-b3e9-3fabd341deda", + "_testId": "urn:uuid:1a1b534f-8d18-4338-a775-18493ca367a2", "_events": {}, "_eventsCount": 1, "cell": { "rowId": "OpSecId", - "columnId": "OpSecId" + "columnId": "LearnCard" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 51974, + "_idleStart": 54733, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 76, "state": "failed", "err": { "name": "AssertionError", - "message": "Expected issuer: OpSecId to not error: expected HTTPError: DID not found: did:key:z6MksCe… { …(6) } to not exist", + "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist", "showDiff": false, "actual": { "response": {}, @@ -31504,29 +32212,35 @@ "options": { "credentials": "same-origin", "headers": {}, - "body": "{\"credential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\"],\"id\":\"urn:uuid:09a66eeb-711d-4704-bda0-c767bbe04f12\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MksCeXh9Jwp4ZTEb5Kei7sJpBLpUyS3oaAib8wbtJQqsQu\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"}},\"options\":{\"type\":\"Ed25519Signature2020\",\"credentialStatus\":{\"type\":\"BitstringStatusListEntry\",\"statusPurpose\":\"suspension\"}}}", + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",\"https://w3id.org/security/suites/ed25519-2020/v1\"],\"id\":\"urn:uuid:3687a2c6-12c8-419e-9d26-eb38f68aa483\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkmiYjSToh5NdEf9xNuh5mDGXGYinzcAy1s4feRHtkEQJr\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"type\":\"Ed25519Signature2020\",\"verificationMethod\":\"did:key:z6MkmiYjSToh5NdEf9xNuh5mDGXGYinzcAy1s4feRHtkEQJr#z6MkmiYjSToh5NdEf9xNuh5mDGXGYinzcAy1s4feRHtkEQJr\",\"proofPurpose\":\"assertionMethod\",\"created\":\"2024-09-01T05:02:22+00:00\",\"proofValue\":\"zuEbnQbxZ2Vi8ANw4XkRvvAHsBupcWGAtVg6DCt7FsVvsbVnduiHqxoGmxKUK5dTfAw9QzBp5eFuBKwN7BcyPcpj\"}},\"options\":{\"checks\":[\"proof\"]}}", "method": "POST", "json": { - "credential": { + "verifiableCredential": { "@context": [ - "https://www.w3.org/2018/credentials/v1" + "https://www.w3.org/2018/credentials/v1", + "https://w3id.org/security/suites/ed25519-2020/v1" ], - "id": "urn:uuid:09a66eeb-711d-4704-bda0-c767bbe04f12", + "id": "urn:uuid:3687a2c6-12c8-419e-9d26-eb38f68aa483", "type": [ "VerifiableCredential" ], - "issuer": "did:key:z6MksCeXh9Jwp4ZTEb5Kei7sJpBLpUyS3oaAib8wbtJQqsQu", + "issuer": "did:key:z6MkmiYjSToh5NdEf9xNuh5mDGXGYinzcAy1s4feRHtkEQJr", "issuanceDate": "2020-03-16T22:37:26.544Z", "credentialSubject": { "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" + }, + "proof": { + "type": "Ed25519Signature2020", + "verificationMethod": "did:key:z6MkmiYjSToh5NdEf9xNuh5mDGXGYinzcAy1s4feRHtkEQJr#z6MkmiYjSToh5NdEf9xNuh5mDGXGYinzcAy1s4feRHtkEQJr", + "proofPurpose": "assertionMethod", + "created": "2024-09-01T05:02:22+00:00", + "proofValue": "zuEbnQbxZ2Vi8ANw4XkRvvAHsBupcWGAtVg6DCt7FsVvsbVnduiHqxoGmxKUK5dTfAw9QzBp5eFuBKwN7BcyPcpj" } }, "options": { - "type": "Ed25519Signature2020", - "credentialStatus": { - "type": "BitstringStatusListEntry", - "statusPurpose": "suspension" - } + "checks": [ + "proof" + ] } }, "agent": { @@ -31595,16 +32309,58 @@ "duplex": "half" }, "name": "HTTPError", - "requestUrl": "https://agent.opsec.id/vc/credentials/issue", + "requestUrl": "https://bridge.learncard.com/credentials/verify", "status": 400, "data": { - "message": "DID not found: did:key:z6MksCeXh9Jwp4ZTEb5Kei7sJpBLpUyS3oaAib8wbtJQqsQu" + "checks": [ + "proof", + "expiration" + ], + "warnings": [], + "errors": [ + "signature error: Verification equation was not satisfied" + ] } }, "operator": "notStrictEqual", - "stack": "AssertionError: Expected issuer: OpSecId to not error: expected HTTPError: DID not found: did:key:z6MksCe… { …(6) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js:54:20)\n at process.processImmediate (node:internal/timers:483:21)" + "stack": "AssertionError: Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js:66:20)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" } }, + { + "type": "test", + "title": "OpSecId should verify OpSecId", + "body": "async function() {\n this.test.cell = {rowId: issuerName, columnId: verifierName};\n should.not.exist(\n issuerError,\n `Expected issuer: ${issuerName} to not error`\n );\n should.exist(issuedVc, `Expected issuer: ${issuerName} to issue a VC`);\n const body = {\n verifiableCredential: issuedVc,\n options: {\n checks: ['proof']\n }\n };\n const {result, error} = await verifier.post({json: body});\n should.not.exist(error, 'Expected verifier to not error.');\n should.exist(result, 'Expected result from verifier.');\n should.exist(result.status, 'Expected verifier to return an HTTP' +\n 'status code');\n result.status.should.equal(200, 'Expected HTTP status code to be 200.');\n }", + "async": 0, + "sync": true, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", + "parent": "Df-YsqubGetRbgav6-8J3", + "ctx": null, + "_testId": "urn:uuid:9cde7e42-32b7-499c-b96f-274bebede6b3", + "_events": {}, + "_eventsCount": 1, + "cell": { + "rowId": "OpSecId", + "columnId": "OpSecId" + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 54809, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 34, + "state": "passed", + "speed": "fast" + }, { "type": "test", "title": "SpruceID should verify OpSecId", @@ -31618,9 +32374,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", + "parent": "Df-YsqubGetRbgav6-8J3", "ctx": null, - "_testId": "urn:uuid:20d35e44-a307-40c3-9345-4aa1f8f1a6cf", + "_testId": "urn:uuid:44ae78e6-8ec5-451e-bd5e-20464b4cd5de", "_events": {}, "_eventsCount": 1, "cell": { @@ -31631,16 +32387,16 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 51975, + "_idleStart": 54843, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 1, + "duration": 33, "state": "failed", "err": { "name": "AssertionError", - "message": "Expected issuer: OpSecId to not error: expected HTTPError: DID not found: did:key:z6MksCe… { …(6) } to not exist", + "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(5) } to not exist", "showDiff": false, "actual": { "response": {}, @@ -31648,29 +32404,35 @@ "options": { "credentials": "same-origin", "headers": {}, - "body": "{\"credential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\"],\"id\":\"urn:uuid:09a66eeb-711d-4704-bda0-c767bbe04f12\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MksCeXh9Jwp4ZTEb5Kei7sJpBLpUyS3oaAib8wbtJQqsQu\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"}},\"options\":{\"type\":\"Ed25519Signature2020\",\"credentialStatus\":{\"type\":\"BitstringStatusListEntry\",\"statusPurpose\":\"suspension\"}}}", + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",\"https://w3id.org/security/suites/ed25519-2020/v1\"],\"id\":\"urn:uuid:3687a2c6-12c8-419e-9d26-eb38f68aa483\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkmiYjSToh5NdEf9xNuh5mDGXGYinzcAy1s4feRHtkEQJr\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"type\":\"Ed25519Signature2020\",\"verificationMethod\":\"did:key:z6MkmiYjSToh5NdEf9xNuh5mDGXGYinzcAy1s4feRHtkEQJr#z6MkmiYjSToh5NdEf9xNuh5mDGXGYinzcAy1s4feRHtkEQJr\",\"proofPurpose\":\"assertionMethod\",\"created\":\"2024-09-01T05:02:22+00:00\",\"proofValue\":\"zuEbnQbxZ2Vi8ANw4XkRvvAHsBupcWGAtVg6DCt7FsVvsbVnduiHqxoGmxKUK5dTfAw9QzBp5eFuBKwN7BcyPcpj\"}},\"options\":{\"checks\":[\"proof\"]}}", "method": "POST", "json": { - "credential": { + "verifiableCredential": { "@context": [ - "https://www.w3.org/2018/credentials/v1" + "https://www.w3.org/2018/credentials/v1", + "https://w3id.org/security/suites/ed25519-2020/v1" ], - "id": "urn:uuid:09a66eeb-711d-4704-bda0-c767bbe04f12", + "id": "urn:uuid:3687a2c6-12c8-419e-9d26-eb38f68aa483", "type": [ "VerifiableCredential" ], - "issuer": "did:key:z6MksCeXh9Jwp4ZTEb5Kei7sJpBLpUyS3oaAib8wbtJQqsQu", + "issuer": "did:key:z6MkmiYjSToh5NdEf9xNuh5mDGXGYinzcAy1s4feRHtkEQJr", "issuanceDate": "2020-03-16T22:37:26.544Z", "credentialSubject": { "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" + }, + "proof": { + "type": "Ed25519Signature2020", + "verificationMethod": "did:key:z6MkmiYjSToh5NdEf9xNuh5mDGXGYinzcAy1s4feRHtkEQJr#z6MkmiYjSToh5NdEf9xNuh5mDGXGYinzcAy1s4feRHtkEQJr", + "proofPurpose": "assertionMethod", + "created": "2024-09-01T05:02:22+00:00", + "proofValue": "zuEbnQbxZ2Vi8ANw4XkRvvAHsBupcWGAtVg6DCt7FsVvsbVnduiHqxoGmxKUK5dTfAw9QzBp5eFuBKwN7BcyPcpj" } }, "options": { - "type": "Ed25519Signature2020", - "credentialStatus": { - "type": "BitstringStatusListEntry", - "statusPurpose": "suspension" - } + "checks": [ + "proof" + ] } }, "agent": { @@ -31739,14 +32501,11 @@ "duplex": "half" }, "name": "HTTPError", - "requestUrl": "https://agent.opsec.id/vc/credentials/issue", - "status": 400, - "data": { - "message": "DID not found: did:key:z6MksCeXh9Jwp4ZTEb5Kei7sJpBLpUyS3oaAib8wbtJQqsQu" - } + "requestUrl": "https://vc.spruceid.xyz/credentials/verify", + "status": 400 }, "operator": "notStrictEqual", - "stack": "AssertionError: Expected issuer: OpSecId to not error: expected HTTPError: DID not found: did:key:z6MksCe… { …(6) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js:54:20)\n at process.processImmediate (node:internal/timers:483:21)" + "stack": "AssertionError: Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(5) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js:66:20)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" } }, { @@ -31762,9 +32521,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", + "parent": "Df-YsqubGetRbgav6-8J3", "ctx": null, - "_testId": "urn:uuid:dddad781-d431-4f74-b880-58a40aeb6bf1", + "_testId": "urn:uuid:4c6a68de-c7ab-452c-8177-ea1e549e9f36", "_events": {}, "_eventsCount": 1, "cell": { @@ -31775,123 +32534,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 51976, + "_idleStart": 54877, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected issuer: OpSecId to not error: expected HTTPError: DID not found: did:key:z6MksCe… { …(6) } to not exist", - "showDiff": false, - "actual": { - "response": {}, - "request": {}, - "options": { - "credentials": "same-origin", - "headers": {}, - "body": "{\"credential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\"],\"id\":\"urn:uuid:09a66eeb-711d-4704-bda0-c767bbe04f12\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MksCeXh9Jwp4ZTEb5Kei7sJpBLpUyS3oaAib8wbtJQqsQu\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"}},\"options\":{\"type\":\"Ed25519Signature2020\",\"credentialStatus\":{\"type\":\"BitstringStatusListEntry\",\"statusPurpose\":\"suspension\"}}}", - "method": "POST", - "json": { - "credential": { - "@context": [ - "https://www.w3.org/2018/credentials/v1" - ], - "id": "urn:uuid:09a66eeb-711d-4704-bda0-c767bbe04f12", - "type": [ - "VerifiableCredential" - ], - "issuer": "did:key:z6MksCeXh9Jwp4ZTEb5Kei7sJpBLpUyS3oaAib8wbtJQqsQu", - "issuanceDate": "2020-03-16T22:37:26.544Z", - "credentialSubject": { - "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" - } - }, - "options": { - "type": "Ed25519Signature2020", - "credentialStatus": { - "type": "BitstringStatusListEntry", - "statusPurpose": "suspension" - } - } - }, - "agent": { - "_events": {}, - "_eventsCount": 2, - "defaultPort": 443, - "protocol": "https:", - "options": { - "rejectUnauthorized": false, - "noDelay": true, - "path": null - }, - "requests": {}, - "sockets": {}, - "freeSockets": {}, - "keepAliveMsecs": 1000, - "keepAlive": false, - "maxSockets": null, - "maxFreeSockets": 256, - "scheduling": "lifo", - "maxTotalSockets": null, - "totalSocketCount": 0, - "maxCachedSessions": 100, - "_sessionCache": { - "map": {}, - "list": [] - } - }, - "hooks": { - "beforeRequest": [], - "beforeRetry": [], - "beforeError": [], - "afterResponse": [] - }, - "prefixUrl": "", - "retry": { - "limit": 2, - "methods": [ - "get", - "put", - "head", - "delete", - "options", - "trace" - ], - "statusCodes": [ - 408, - 413, - 429, - 500, - 502, - 503, - 504 - ], - "afterStatusCodes": [ - 413, - 429, - 503 - ], - "maxRetryAfter": null, - "backoffLimit": null - }, - "throwHttpErrors": true, - "timeout": 10000, - "signal": {}, - "duplex": "half" - }, - "name": "HTTPError", - "requestUrl": "https://agent.opsec.id/vc/credentials/issue", - "status": 400, - "data": { - "message": "DID not found: did:key:z6MksCeXh9Jwp4ZTEb5Kei7sJpBLpUyS3oaAib8wbtJQqsQu" - } - }, - "operator": "notStrictEqual", - "stack": "AssertionError: Expected issuer: OpSecId to not error: expected HTTPError: DID not found: did:key:z6MksCe… { …(6) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at Context. (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js:54:20)\n at process.processImmediate (node:internal/timers:483:21)" - } + "duration": 41, + "state": "passed", + "speed": "medium" } ] }, @@ -31911,9 +32561,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", + "parent": "Df-YsqubGetRbgav6-8J3", "ctx": null, - "_testId": "urn:uuid:bb3c07d5-2fb8-4736-ae3a-a824b75af620", + "_testId": "urn:uuid:aa3df4f4-0d3b-4ae4-80d7-c0c05162d850", "_events": {}, "_eventsCount": 1, "cell": { @@ -31924,12 +32574,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 51976, + "_idleStart": 54918, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 51, + "duration": 45, "state": "failed", "err": { "name": "AssertionError", @@ -31941,7 +32591,7 @@ "options": { "credentials": "same-origin", "headers": {}, - "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",\"https://w3id.org/security/suites/ed25519-2020/v1\"],\"id\":\"urn:uuid:cb38b210-4286-442b-9984-b6a91cbd454c\",\"type\":[\"VerifiableCredential\"],\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"issuer\":\"did:key:z6MkgYAGxLBSXa6Ygk1PnUbK2F7zya8juE9nfsZhrvY7c9GD\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"proof\":{\"type\":\"Ed25519Signature2020\",\"verificationMethod\":\"did:key:z6MkgYAGxLBSXa6Ygk1PnUbK2F7zya8juE9nfsZhrvY7c9GD#z6MkgYAGxLBSXa6Ygk1PnUbK2F7zya8juE9nfsZhrvY7c9GD\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"za3u67wevSPqEUVUnqnmnsHo6XDomX7s53kwYGbW5k5nHaY7iYt2NP6hoMUxxh1oWFnGN2DsmEPQ4e7hBB8uW2Kd\"}},\"options\":{\"checks\":[\"proof\"]}}", + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",\"https://w3id.org/security/suites/ed25519-2020/v1\"],\"id\":\"urn:uuid:5737c178-2680-47ca-879d-e5a0ed4049c6\",\"type\":[\"VerifiableCredential\"],\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"issuer\":\"did:key:z6MkgYAGxLBSXa6Ygk1PnUbK2F7zya8juE9nfsZhrvY7c9GD\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"proof\":{\"type\":\"Ed25519Signature2020\",\"verificationMethod\":\"did:key:z6MkgYAGxLBSXa6Ygk1PnUbK2F7zya8juE9nfsZhrvY7c9GD#z6MkgYAGxLBSXa6Ygk1PnUbK2F7zya8juE9nfsZhrvY7c9GD\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z2os7PNNCzEoy5AvsZYehdGvTKygKUu88fmFvaLiLuaDDKt1GU1XS2UhYDD2nzo1xn7u6cNm1x6sT7YBmwY4nk718\"}},\"options\":{\"checks\":[\"proof\"]}}", "method": "POST", "json": { "verifiableCredential": { @@ -31949,7 +32599,7 @@ "https://www.w3.org/2018/credentials/v1", "https://w3id.org/security/suites/ed25519-2020/v1" ], - "id": "urn:uuid:cb38b210-4286-442b-9984-b6a91cbd454c", + "id": "urn:uuid:5737c178-2680-47ca-879d-e5a0ed4049c6", "type": [ "VerifiableCredential" ], @@ -31962,7 +32612,7 @@ "type": "Ed25519Signature2020", "verificationMethod": "did:key:z6MkgYAGxLBSXa6Ygk1PnUbK2F7zya8juE9nfsZhrvY7c9GD#z6MkgYAGxLBSXa6Ygk1PnUbK2F7zya8juE9nfsZhrvY7c9GD", "proofPurpose": "assertionMethod", - "proofValue": "za3u67wevSPqEUVUnqnmnsHo6XDomX7s53kwYGbW5k5nHaY7iYt2NP6hoMUxxh1oWFnGN2DsmEPQ4e7hBB8uW2Kd" + "proofValue": "z2os7PNNCzEoy5AvsZYehdGvTKygKUu88fmFvaLiLuaDDKt1GU1XS2UhYDD2nzo1xn7u6cNm1x6sT7YBmwY4nk718" } }, "options": { @@ -32067,9 +32717,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", + "parent": "Df-YsqubGetRbgav6-8J3", "ctx": null, - "_testId": "urn:uuid:7976092a-c2c3-41bd-b55d-07974046bd76", + "_testId": "urn:uuid:9801433e-b123-4e65-9a97-bf60a71d03ad", "_events": {}, "_eventsCount": 1, "cell": { @@ -32080,12 +32730,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 52028, + "_idleStart": 54963, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 437, + "duration": 448, "state": "passed", "speed": "slow" }, @@ -32102,9 +32752,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", + "parent": "Df-YsqubGetRbgav6-8J3", "ctx": null, - "_testId": "urn:uuid:1610a118-6df1-4565-9d7d-652fe0c43dc3", + "_testId": "urn:uuid:2333aa3f-f255-4240-9d31-2cb90e7dcb40", "_events": {}, "_eventsCount": 1, "cell": { @@ -32115,12 +32765,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 52466, + "_idleStart": 55411, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 48, + "duration": 40, "state": "passed", "speed": "medium" }, @@ -32137,9 +32787,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", + "parent": "Df-YsqubGetRbgav6-8J3", "ctx": null, - "_testId": "urn:uuid:d8ca9ca2-6231-4ba1-83bd-7dff96240e3c", + "_testId": "urn:uuid:1a846340-25a1-48c8-a3c5-e18199da62e7", "_events": {}, "_eventsCount": 1, "cell": { @@ -32150,12 +32800,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 52515, + "_idleStart": 55452, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 92, + "duration": 91, "state": "failed", "err": { "name": "AssertionError", @@ -32167,7 +32817,7 @@ "options": { "credentials": "same-origin", "headers": {}, - "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",\"https://w3id.org/security/suites/ed25519-2020/v1\"],\"id\":\"urn:uuid:cb38b210-4286-442b-9984-b6a91cbd454c\",\"type\":[\"VerifiableCredential\"],\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"issuer\":\"did:key:z6MkgYAGxLBSXa6Ygk1PnUbK2F7zya8juE9nfsZhrvY7c9GD\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"proof\":{\"type\":\"Ed25519Signature2020\",\"verificationMethod\":\"did:key:z6MkgYAGxLBSXa6Ygk1PnUbK2F7zya8juE9nfsZhrvY7c9GD#z6MkgYAGxLBSXa6Ygk1PnUbK2F7zya8juE9nfsZhrvY7c9GD\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"za3u67wevSPqEUVUnqnmnsHo6XDomX7s53kwYGbW5k5nHaY7iYt2NP6hoMUxxh1oWFnGN2DsmEPQ4e7hBB8uW2Kd\"}},\"options\":{\"checks\":[\"proof\"]}}", + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",\"https://w3id.org/security/suites/ed25519-2020/v1\"],\"id\":\"urn:uuid:5737c178-2680-47ca-879d-e5a0ed4049c6\",\"type\":[\"VerifiableCredential\"],\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"issuer\":\"did:key:z6MkgYAGxLBSXa6Ygk1PnUbK2F7zya8juE9nfsZhrvY7c9GD\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"proof\":{\"type\":\"Ed25519Signature2020\",\"verificationMethod\":\"did:key:z6MkgYAGxLBSXa6Ygk1PnUbK2F7zya8juE9nfsZhrvY7c9GD#z6MkgYAGxLBSXa6Ygk1PnUbK2F7zya8juE9nfsZhrvY7c9GD\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z2os7PNNCzEoy5AvsZYehdGvTKygKUu88fmFvaLiLuaDDKt1GU1XS2UhYDD2nzo1xn7u6cNm1x6sT7YBmwY4nk718\"}},\"options\":{\"checks\":[\"proof\"]}}", "method": "POST", "json": { "verifiableCredential": { @@ -32175,7 +32825,7 @@ "https://www.w3.org/2018/credentials/v1", "https://w3id.org/security/suites/ed25519-2020/v1" ], - "id": "urn:uuid:cb38b210-4286-442b-9984-b6a91cbd454c", + "id": "urn:uuid:5737c178-2680-47ca-879d-e5a0ed4049c6", "type": [ "VerifiableCredential" ], @@ -32188,7 +32838,7 @@ "type": "Ed25519Signature2020", "verificationMethod": "did:key:z6MkgYAGxLBSXa6Ygk1PnUbK2F7zya8juE9nfsZhrvY7c9GD#z6MkgYAGxLBSXa6Ygk1PnUbK2F7zya8juE9nfsZhrvY7c9GD", "proofPurpose": "assertionMethod", - "proofValue": "za3u67wevSPqEUVUnqnmnsHo6XDomX7s53kwYGbW5k5nHaY7iYt2NP6hoMUxxh1oWFnGN2DsmEPQ4e7hBB8uW2Kd" + "proofValue": "z2os7PNNCzEoy5AvsZYehdGvTKygKUu88fmFvaLiLuaDDKt1GU1XS2UhYDD2nzo1xn7u6cNm1x6sT7YBmwY4nk718" } }, "options": { @@ -32290,9 +32940,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", + "parent": "Df-YsqubGetRbgav6-8J3", "ctx": null, - "_testId": "urn:uuid:f6a450e7-1515-4689-a353-6271af2cc6cc", + "_testId": "urn:uuid:f6bc81d6-b8d2-4041-bdbc-10e31643a9a9", "_events": {}, "_eventsCount": 1, "cell": { @@ -32303,12 +32953,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 52607, + "_idleStart": 55544, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 26, + "duration": 30, "state": "failed", "err": { "name": "AssertionError", @@ -32320,7 +32970,7 @@ "options": { "credentials": "same-origin", "headers": {}, - "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",\"https://w3id.org/security/suites/ed25519-2020/v1\"],\"id\":\"urn:uuid:cb38b210-4286-442b-9984-b6a91cbd454c\",\"type\":[\"VerifiableCredential\"],\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"issuer\":\"did:key:z6MkgYAGxLBSXa6Ygk1PnUbK2F7zya8juE9nfsZhrvY7c9GD\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"proof\":{\"type\":\"Ed25519Signature2020\",\"verificationMethod\":\"did:key:z6MkgYAGxLBSXa6Ygk1PnUbK2F7zya8juE9nfsZhrvY7c9GD#z6MkgYAGxLBSXa6Ygk1PnUbK2F7zya8juE9nfsZhrvY7c9GD\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"za3u67wevSPqEUVUnqnmnsHo6XDomX7s53kwYGbW5k5nHaY7iYt2NP6hoMUxxh1oWFnGN2DsmEPQ4e7hBB8uW2Kd\"}},\"options\":{\"checks\":[\"proof\"]}}", + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",\"https://w3id.org/security/suites/ed25519-2020/v1\"],\"id\":\"urn:uuid:5737c178-2680-47ca-879d-e5a0ed4049c6\",\"type\":[\"VerifiableCredential\"],\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"issuer\":\"did:key:z6MkgYAGxLBSXa6Ygk1PnUbK2F7zya8juE9nfsZhrvY7c9GD\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"proof\":{\"type\":\"Ed25519Signature2020\",\"verificationMethod\":\"did:key:z6MkgYAGxLBSXa6Ygk1PnUbK2F7zya8juE9nfsZhrvY7c9GD#z6MkgYAGxLBSXa6Ygk1PnUbK2F7zya8juE9nfsZhrvY7c9GD\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z2os7PNNCzEoy5AvsZYehdGvTKygKUu88fmFvaLiLuaDDKt1GU1XS2UhYDD2nzo1xn7u6cNm1x6sT7YBmwY4nk718\"}},\"options\":{\"checks\":[\"proof\"]}}", "method": "POST", "json": { "verifiableCredential": { @@ -32328,7 +32978,7 @@ "https://www.w3.org/2018/credentials/v1", "https://w3id.org/security/suites/ed25519-2020/v1" ], - "id": "urn:uuid:cb38b210-4286-442b-9984-b6a91cbd454c", + "id": "urn:uuid:5737c178-2680-47ca-879d-e5a0ed4049c6", "type": [ "VerifiableCredential" ], @@ -32341,7 +32991,7 @@ "type": "Ed25519Signature2020", "verificationMethod": "did:key:z6MkgYAGxLBSXa6Ygk1PnUbK2F7zya8juE9nfsZhrvY7c9GD#z6MkgYAGxLBSXa6Ygk1PnUbK2F7zya8juE9nfsZhrvY7c9GD", "proofPurpose": "assertionMethod", - "proofValue": "za3u67wevSPqEUVUnqnmnsHo6XDomX7s53kwYGbW5k5nHaY7iYt2NP6hoMUxxh1oWFnGN2DsmEPQ4e7hBB8uW2Kd" + "proofValue": "z2os7PNNCzEoy5AvsZYehdGvTKygKUu88fmFvaLiLuaDDKt1GU1XS2UhYDD2nzo1xn7u6cNm1x6sT7YBmwY4nk718" } }, "options": { @@ -32437,9 +33087,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", + "parent": "Df-YsqubGetRbgav6-8J3", "ctx": null, - "_testId": "urn:uuid:961a40e6-b2cf-4c4f-a33e-e5632b0059ac", + "_testId": "urn:uuid:ceb11e84-c99e-4aa6-ac0b-8049c4c0b3a1", "_events": {}, "_eventsCount": 1, "cell": { @@ -32450,12 +33100,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 52634, + "_idleStart": 55574, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 35, + "duration": 30, "state": "passed", "speed": "fast" }, @@ -32472,9 +33122,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", + "parent": "Df-YsqubGetRbgav6-8J3", "ctx": null, - "_testId": "urn:uuid:9b6d90b3-e247-42b6-8a6f-783365726a86", + "_testId": "urn:uuid:0030ad95-9082-4395-a183-e9878ab8b581", "_events": {}, "_eventsCount": 1, "cell": { @@ -32485,12 +33135,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 52669, + "_idleStart": 55604, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 28, + "duration": 24, "state": "passed", "speed": "fast" }, @@ -32507,9 +33157,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", + "parent": "Df-YsqubGetRbgav6-8J3", "ctx": null, - "_testId": "urn:uuid:42d58732-677f-407c-808b-666fe0ff557d", + "_testId": "urn:uuid:37887043-3caa-489b-a463-3d7c7f04e3e5", "_events": {}, "_eventsCount": 1, "cell": { @@ -32520,12 +33170,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 52697, + "_idleStart": 55629, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 17, + "duration": 24, "state": "failed", "err": { "name": "AssertionError", @@ -32537,7 +33187,7 @@ "options": { "credentials": "same-origin", "headers": {}, - "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",\"https://w3id.org/security/suites/ed25519-2020/v1\"],\"id\":\"urn:uuid:cb38b210-4286-442b-9984-b6a91cbd454c\",\"type\":[\"VerifiableCredential\"],\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"issuer\":\"did:key:z6MkgYAGxLBSXa6Ygk1PnUbK2F7zya8juE9nfsZhrvY7c9GD\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"proof\":{\"type\":\"Ed25519Signature2020\",\"verificationMethod\":\"did:key:z6MkgYAGxLBSXa6Ygk1PnUbK2F7zya8juE9nfsZhrvY7c9GD#z6MkgYAGxLBSXa6Ygk1PnUbK2F7zya8juE9nfsZhrvY7c9GD\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"za3u67wevSPqEUVUnqnmnsHo6XDomX7s53kwYGbW5k5nHaY7iYt2NP6hoMUxxh1oWFnGN2DsmEPQ4e7hBB8uW2Kd\"}},\"options\":{\"checks\":[\"proof\"]}}", + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",\"https://w3id.org/security/suites/ed25519-2020/v1\"],\"id\":\"urn:uuid:5737c178-2680-47ca-879d-e5a0ed4049c6\",\"type\":[\"VerifiableCredential\"],\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"issuer\":\"did:key:z6MkgYAGxLBSXa6Ygk1PnUbK2F7zya8juE9nfsZhrvY7c9GD\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"proof\":{\"type\":\"Ed25519Signature2020\",\"verificationMethod\":\"did:key:z6MkgYAGxLBSXa6Ygk1PnUbK2F7zya8juE9nfsZhrvY7c9GD#z6MkgYAGxLBSXa6Ygk1PnUbK2F7zya8juE9nfsZhrvY7c9GD\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z2os7PNNCzEoy5AvsZYehdGvTKygKUu88fmFvaLiLuaDDKt1GU1XS2UhYDD2nzo1xn7u6cNm1x6sT7YBmwY4nk718\"}},\"options\":{\"checks\":[\"proof\"]}}", "method": "POST", "json": { "verifiableCredential": { @@ -32545,7 +33195,7 @@ "https://www.w3.org/2018/credentials/v1", "https://w3id.org/security/suites/ed25519-2020/v1" ], - "id": "urn:uuid:cb38b210-4286-442b-9984-b6a91cbd454c", + "id": "urn:uuid:5737c178-2680-47ca-879d-e5a0ed4049c6", "type": [ "VerifiableCredential" ], @@ -32558,7 +33208,7 @@ "type": "Ed25519Signature2020", "verificationMethod": "did:key:z6MkgYAGxLBSXa6Ygk1PnUbK2F7zya8juE9nfsZhrvY7c9GD#z6MkgYAGxLBSXa6Ygk1PnUbK2F7zya8juE9nfsZhrvY7c9GD", "proofPurpose": "assertionMethod", - "proofValue": "za3u67wevSPqEUVUnqnmnsHo6XDomX7s53kwYGbW5k5nHaY7iYt2NP6hoMUxxh1oWFnGN2DsmEPQ4e7hBB8uW2Kd" + "proofValue": "z2os7PNNCzEoy5AvsZYehdGvTKygKUu88fmFvaLiLuaDDKt1GU1XS2UhYDD2nzo1xn7u6cNm1x6sT7YBmwY4nk718" } }, "options": { @@ -32658,9 +33308,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", + "parent": "Df-YsqubGetRbgav6-8J3", "ctx": null, - "_testId": "urn:uuid:2165f09f-aa3e-465b-8fc1-7c52effdfced", + "_testId": "urn:uuid:304f470a-9212-4c84-a4c4-581501a358b7", "_events": {}, "_eventsCount": 1, "cell": { @@ -32671,12 +33321,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 52714, + "_idleStart": 55653, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 57, + "duration": 54, "state": "passed", "speed": "medium" }, @@ -32693,9 +33343,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", + "parent": "Df-YsqubGetRbgav6-8J3", "ctx": null, - "_testId": "urn:uuid:1a06d996-bdfa-4425-9a8e-f8e3c3fb7d3e", + "_testId": "urn:uuid:1f909c98-6df0-427b-b6a1-05bebd9e70f6", "_events": {}, "_eventsCount": 1, "cell": { @@ -32706,12 +33356,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 52772, + "_idleStart": 55708, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 436, + "duration": 421, "state": "passed", "speed": "slow" }, @@ -32728,9 +33378,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", + "parent": "Df-YsqubGetRbgav6-8J3", "ctx": null, - "_testId": "urn:uuid:790f34cb-98ab-4fa6-9301-fed3c421d57b", + "_testId": "urn:uuid:dc6682ac-0edd-4071-a6c3-10a2772826f1", "_events": {}, "_eventsCount": 1, "cell": { @@ -32741,12 +33391,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 53209, + "_idleStart": 56130, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 43, + "duration": 46, "state": "passed", "speed": "medium" }, @@ -32763,9 +33413,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", + "parent": "Df-YsqubGetRbgav6-8J3", "ctx": null, - "_testId": "urn:uuid:b9bcf84c-bb8c-42c7-a856-f65fddcb49f8", + "_testId": "urn:uuid:e6f78e09-9d19-4901-a54e-3399f6819a34", "_events": {}, "_eventsCount": 1, "cell": { @@ -32776,7 +33426,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 53253, + "_idleStart": 56177, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -32793,7 +33443,7 @@ "options": { "credentials": "same-origin", "headers": {}, - "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",\"https://w3id.org/security/suites/ed25519-2020/v1\"],\"id\":\"urn:uuid:eee0f4fc-ef6e-488b-a623-3bd9b3ab5d56\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkqbpLSbqnY1pxVyhBCDYcFsv4ZgGgqP32kzNrf5deWVPU\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"type\":\"Ed25519Signature2020\",\"created\":\"2024-08-25T05:02:21.0119745Z\",\"proofPurpose\":\"assertionMethod\",\"verificationMethod\":\"did:key:z6MkqbpLSbqnY1pxVyhBCDYcFsv4ZgGgqP32kzNrf5deWVPU#z6MkqbpLSbqnY1pxVyhBCDYcFsv4ZgGgqP32kzNrf5deWVPU\",\"proofValue\":\"z3EcdxegKRq62R8TAzwf1otP4cqGq57afDf49wXLsTYeAV5duMSEUZZbBYCzvQg12PvqGS9vFEpw3WmWhpZV1UfeF\"}},\"options\":{\"checks\":[\"proof\"]}}", + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",\"https://w3id.org/security/suites/ed25519-2020/v1\"],\"id\":\"urn:uuid:739ce206-f6d0-4891-a163-e237f8579074\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkqbpLSbqnY1pxVyhBCDYcFsv4ZgGgqP32kzNrf5deWVPU\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"type\":\"Ed25519Signature2020\",\"created\":\"2024-09-01T05:02:22.2642407Z\",\"proofPurpose\":\"assertionMethod\",\"verificationMethod\":\"did:key:z6MkqbpLSbqnY1pxVyhBCDYcFsv4ZgGgqP32kzNrf5deWVPU#z6MkqbpLSbqnY1pxVyhBCDYcFsv4ZgGgqP32kzNrf5deWVPU\",\"proofValue\":\"z3CRiDx1Mhc4xMs9v1dcMr7qzUmd3Bnfhs56x5NXmKBvP85YnGAVcRjsMsjhBxdYZ18JrKWcY4xCf1R7nNsknVGg7\"}},\"options\":{\"checks\":[\"proof\"]}}", "method": "POST", "json": { "verifiableCredential": { @@ -32801,7 +33451,7 @@ "https://www.w3.org/2018/credentials/v1", "https://w3id.org/security/suites/ed25519-2020/v1" ], - "id": "urn:uuid:eee0f4fc-ef6e-488b-a623-3bd9b3ab5d56", + "id": "urn:uuid:739ce206-f6d0-4891-a163-e237f8579074", "type": [ "VerifiableCredential" ], @@ -32812,10 +33462,10 @@ }, "proof": { "type": "Ed25519Signature2020", - "created": "2024-08-25T05:02:21.0119745Z", + "created": "2024-09-01T05:02:22.2642407Z", "proofPurpose": "assertionMethod", "verificationMethod": "did:key:z6MkqbpLSbqnY1pxVyhBCDYcFsv4ZgGgqP32kzNrf5deWVPU#z6MkqbpLSbqnY1pxVyhBCDYcFsv4ZgGgqP32kzNrf5deWVPU", - "proofValue": "z3EcdxegKRq62R8TAzwf1otP4cqGq57afDf49wXLsTYeAV5duMSEUZZbBYCzvQg12PvqGS9vFEpw3WmWhpZV1UfeF" + "proofValue": "z3CRiDx1Mhc4xMs9v1dcMr7qzUmd3Bnfhs56x5NXmKBvP85YnGAVcRjsMsjhBxdYZ18JrKWcY4xCf1R7nNsknVGg7" } }, "options": { @@ -32919,9 +33569,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", + "parent": "Df-YsqubGetRbgav6-8J3", "ctx": null, - "_testId": "urn:uuid:146f6024-8da1-4e29-80b0-d08ea45ce8fb", + "_testId": "urn:uuid:5ed62ea3-8f3b-4827-b760-a1190b011397", "_events": {}, "_eventsCount": 1, "cell": { @@ -32932,12 +33582,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 53354, + "_idleStart": 56277, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 63, + "duration": 60, "state": "failed", "err": { "name": "AssertionError", @@ -32949,7 +33599,7 @@ "options": { "credentials": "same-origin", "headers": {}, - "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",\"https://w3id.org/security/suites/ed25519-2020/v1\"],\"id\":\"urn:uuid:eee0f4fc-ef6e-488b-a623-3bd9b3ab5d56\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkqbpLSbqnY1pxVyhBCDYcFsv4ZgGgqP32kzNrf5deWVPU\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"type\":\"Ed25519Signature2020\",\"created\":\"2024-08-25T05:02:21.0119745Z\",\"proofPurpose\":\"assertionMethod\",\"verificationMethod\":\"did:key:z6MkqbpLSbqnY1pxVyhBCDYcFsv4ZgGgqP32kzNrf5deWVPU#z6MkqbpLSbqnY1pxVyhBCDYcFsv4ZgGgqP32kzNrf5deWVPU\",\"proofValue\":\"z3EcdxegKRq62R8TAzwf1otP4cqGq57afDf49wXLsTYeAV5duMSEUZZbBYCzvQg12PvqGS9vFEpw3WmWhpZV1UfeF\"}},\"options\":{\"checks\":[\"proof\"]}}", + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",\"https://w3id.org/security/suites/ed25519-2020/v1\"],\"id\":\"urn:uuid:739ce206-f6d0-4891-a163-e237f8579074\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkqbpLSbqnY1pxVyhBCDYcFsv4ZgGgqP32kzNrf5deWVPU\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"type\":\"Ed25519Signature2020\",\"created\":\"2024-09-01T05:02:22.2642407Z\",\"proofPurpose\":\"assertionMethod\",\"verificationMethod\":\"did:key:z6MkqbpLSbqnY1pxVyhBCDYcFsv4ZgGgqP32kzNrf5deWVPU#z6MkqbpLSbqnY1pxVyhBCDYcFsv4ZgGgqP32kzNrf5deWVPU\",\"proofValue\":\"z3CRiDx1Mhc4xMs9v1dcMr7qzUmd3Bnfhs56x5NXmKBvP85YnGAVcRjsMsjhBxdYZ18JrKWcY4xCf1R7nNsknVGg7\"}},\"options\":{\"checks\":[\"proof\"]}}", "method": "POST", "json": { "verifiableCredential": { @@ -32957,7 +33607,7 @@ "https://www.w3.org/2018/credentials/v1", "https://w3id.org/security/suites/ed25519-2020/v1" ], - "id": "urn:uuid:eee0f4fc-ef6e-488b-a623-3bd9b3ab5d56", + "id": "urn:uuid:739ce206-f6d0-4891-a163-e237f8579074", "type": [ "VerifiableCredential" ], @@ -32968,10 +33618,10 @@ }, "proof": { "type": "Ed25519Signature2020", - "created": "2024-08-25T05:02:21.0119745Z", + "created": "2024-09-01T05:02:22.2642407Z", "proofPurpose": "assertionMethod", "verificationMethod": "did:key:z6MkqbpLSbqnY1pxVyhBCDYcFsv4ZgGgqP32kzNrf5deWVPU#z6MkqbpLSbqnY1pxVyhBCDYcFsv4ZgGgqP32kzNrf5deWVPU", - "proofValue": "z3EcdxegKRq62R8TAzwf1otP4cqGq57afDf49wXLsTYeAV5duMSEUZZbBYCzvQg12PvqGS9vFEpw3WmWhpZV1UfeF" + "proofValue": "z3CRiDx1Mhc4xMs9v1dcMr7qzUmd3Bnfhs56x5NXmKBvP85YnGAVcRjsMsjhBxdYZ18JrKWcY4xCf1R7nNsknVGg7" } }, "options": { @@ -33076,9 +33726,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", + "parent": "Df-YsqubGetRbgav6-8J3", "ctx": null, - "_testId": "urn:uuid:9ec56fea-5ee1-4270-a070-8570ca5bf493", + "_testId": "urn:uuid:ba10cd8f-32f2-4fda-8760-483a309f58d0", "_events": {}, "_eventsCount": 1, "cell": { @@ -33089,12 +33739,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 53418, + "_idleStart": 56337, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 25, + "duration": 31, "state": "failed", "err": { "name": "AssertionError", @@ -33106,7 +33756,7 @@ "options": { "credentials": "same-origin", "headers": {}, - "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",\"https://w3id.org/security/suites/ed25519-2020/v1\"],\"id\":\"urn:uuid:eee0f4fc-ef6e-488b-a623-3bd9b3ab5d56\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkqbpLSbqnY1pxVyhBCDYcFsv4ZgGgqP32kzNrf5deWVPU\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"type\":\"Ed25519Signature2020\",\"created\":\"2024-08-25T05:02:21.0119745Z\",\"proofPurpose\":\"assertionMethod\",\"verificationMethod\":\"did:key:z6MkqbpLSbqnY1pxVyhBCDYcFsv4ZgGgqP32kzNrf5deWVPU#z6MkqbpLSbqnY1pxVyhBCDYcFsv4ZgGgqP32kzNrf5deWVPU\",\"proofValue\":\"z3EcdxegKRq62R8TAzwf1otP4cqGq57afDf49wXLsTYeAV5duMSEUZZbBYCzvQg12PvqGS9vFEpw3WmWhpZV1UfeF\"}},\"options\":{\"checks\":[\"proof\"]}}", + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",\"https://w3id.org/security/suites/ed25519-2020/v1\"],\"id\":\"urn:uuid:739ce206-f6d0-4891-a163-e237f8579074\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkqbpLSbqnY1pxVyhBCDYcFsv4ZgGgqP32kzNrf5deWVPU\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"type\":\"Ed25519Signature2020\",\"created\":\"2024-09-01T05:02:22.2642407Z\",\"proofPurpose\":\"assertionMethod\",\"verificationMethod\":\"did:key:z6MkqbpLSbqnY1pxVyhBCDYcFsv4ZgGgqP32kzNrf5deWVPU#z6MkqbpLSbqnY1pxVyhBCDYcFsv4ZgGgqP32kzNrf5deWVPU\",\"proofValue\":\"z3CRiDx1Mhc4xMs9v1dcMr7qzUmd3Bnfhs56x5NXmKBvP85YnGAVcRjsMsjhBxdYZ18JrKWcY4xCf1R7nNsknVGg7\"}},\"options\":{\"checks\":[\"proof\"]}}", "method": "POST", "json": { "verifiableCredential": { @@ -33114,7 +33764,7 @@ "https://www.w3.org/2018/credentials/v1", "https://w3id.org/security/suites/ed25519-2020/v1" ], - "id": "urn:uuid:eee0f4fc-ef6e-488b-a623-3bd9b3ab5d56", + "id": "urn:uuid:739ce206-f6d0-4891-a163-e237f8579074", "type": [ "VerifiableCredential" ], @@ -33125,10 +33775,10 @@ }, "proof": { "type": "Ed25519Signature2020", - "created": "2024-08-25T05:02:21.0119745Z", + "created": "2024-09-01T05:02:22.2642407Z", "proofPurpose": "assertionMethod", "verificationMethod": "did:key:z6MkqbpLSbqnY1pxVyhBCDYcFsv4ZgGgqP32kzNrf5deWVPU#z6MkqbpLSbqnY1pxVyhBCDYcFsv4ZgGgqP32kzNrf5deWVPU", - "proofValue": "z3EcdxegKRq62R8TAzwf1otP4cqGq57afDf49wXLsTYeAV5duMSEUZZbBYCzvQg12PvqGS9vFEpw3WmWhpZV1UfeF" + "proofValue": "z3CRiDx1Mhc4xMs9v1dcMr7qzUmd3Bnfhs56x5NXmKBvP85YnGAVcRjsMsjhBxdYZ18JrKWcY4xCf1R7nNsknVGg7" } }, "options": { @@ -33210,7 +33860,7 @@ "verifiableCredential": { "proof": { "created": [ - "Value 2024-08-25T05:02:21.0119745Z is not a date in valid format" + "Value 2024-09-01T05:02:22.2642407Z is not a date in valid format" ] } } @@ -33234,9 +33884,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", + "parent": "Df-YsqubGetRbgav6-8J3", "ctx": null, - "_testId": "urn:uuid:20e2e12f-12f6-41b1-9ade-b16dca100dec", + "_testId": "urn:uuid:78d6251a-60b6-472c-9a37-704abbb79562", "_events": {}, "_eventsCount": 1, "cell": { @@ -33247,12 +33897,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 53444, + "_idleStart": 56369, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 35, + "duration": 22, "state": "passed", "speed": "fast" }, @@ -33269,9 +33919,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "rqlqqHnsb0SlY4RsNNNBw", + "parent": "Df-YsqubGetRbgav6-8J3", "ctx": null, - "_testId": "urn:uuid:75485d55-2dff-41b8-aa82-121c0d9de64e", + "_testId": "urn:uuid:ba366614-b844-47a8-a469-5d589328afb8", "_events": {}, "_eventsCount": 1, "cell": { @@ -33282,14 +33932,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 53480, + "_idleStart": 56392, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 36, + "duration": 45, "state": "passed", - "speed": "fast" + "speed": "medium" } ] } @@ -33331,11 +33981,11 @@ }, "title": "Ed25519Signature 2020 Interoperability Report 1.0", "stats": [ - "Tests passed 345/396 87%", - "Tests failed 53/396 14%", - "Failures 53", + "Tests passed 376/424 88%", + "Tests failed 48/424 12%", + "Failures 48", "Tests skipped 0", - "Total tests 396" + "Total tests 424" ], "statusMarkLabels": { "pending": {