From 14052fd6a285fe1fc1f3ea05d7cda7c79057af47 Mon Sep 17 00:00:00 2001 From: JSAssassin Date: Sun, 22 Sep 2024 05:02:28 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20w3c/vc-d?= =?UTF-8?q?i-ed25519signature2020-test-suite@f883c761ea2177d4afc34852f28a2?= =?UTF-8?q?b993f97e5d6=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.html | 1438 +-- index.json | 28464 +++++++++++++++------------------------------------ 2 files changed, 8665 insertions(+), 21237 deletions(-) diff --git a/index.html b/index.html index 4abe932..87d591d 100644 --- a/index.html +++ b/index.html @@ -168,22 +168,22 @@

Conformance Testing Results

- Tests passed 360/424 84% + Tests passed 295/336 87%

- Tests failed 64/424 16% + Tests failed 41/336 13%

- Failures 64 + Failures 41

Tests skipped 0

- Total tests 424 + Total tests 336

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

Key

@@ -246,12 +246,12 @@

Data Integrity (issuer)

Test Name + ACA-py apicatalog.com Danube Tech Digital Bazaar EWF LearnCard - OpSecId SpruceID Trinsic @@ -423,6 +423,11 @@

Data Integrity (issuer)

+ +
+
+
+
@@ -431,9 +436,9 @@

Data Integrity (issuer)

AssertionError: Expected "@type" URL to be parsed.: expected TypeError: Invalid URL { …(2) } to not exist
                         at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)
                         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:197:14)
-                        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:86:30
+                        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:82:30
                         at Array.every (<anonymous>)
-                        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:86:17)
+ 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:82:17)
@@ -447,11 +452,6 @@

Data Integrity (issuer)

- -
-
-
- @@ -474,13 +474,18 @@

Data Integrity (issuer)

+ +
+
+
+
expected false to equal true
AssertionError: expected false to equal true
-                        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:135:34)
+                        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:131:34)
                         at process.processImmediate (node:internal/timers:483:21)
@@ -491,7 +496,7 @@

Data Integrity (issuer)

expected false to equal true
AssertionError: expected false to equal true
-                        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:142:39)
+                        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:138:39)
                         at process.processImmediate (node:internal/timers:483:21)
@@ -506,11 +511,6 @@

Data Integrity (issuer)

- -
-
-
- @@ -721,6 +721,11 @@

Data Integrity (issuer)

+ +
+
+
+
@@ -729,7 +734,7 @@

Data Integrity (issuer)

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:293: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:220: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:216:9)
                         at process.processImmediate (node:internal/timers:483:21)
@@ -749,11 +754,6 @@

Data Integrity (issuer)

- -
-
-
- @@ -823,6 +823,11 @@

Data Integrity (issuer)

+ +
+
+
+
@@ -831,7 +836,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:239: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:245: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:241:9)
                         at process.processImmediate (node:internal/timers:483:21)
@@ -851,11 +856,6 @@

Data Integrity (issuer)

- -
-
-
- @@ -867,18 +867,26 @@

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': 'e3c5915d6873e82832232d6091a5e4cd', date: 'Sun, 15 Sep 2024 05:01:45 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': 'e3c5915d6873e82832232d6091a5e4cd', date: 'Sun, 15 Sep 2024 05:01:45 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-length': '797', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 22 Sep 2024 05:01:37 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': '797', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 22 Sep 2024 05:01:37 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:104: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:256: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:252:7)
- -
+ +
+
+ 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': '208f0138f2eb9f5300f55af1f4a111bf', date: 'Sun, 22 Sep 2024 05:01:42 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': '208f0138f2eb9f5300f55af1f4a111bf', date: 'Sun, 22 Sep 2024 05:01:42 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:104: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:252:7)
+
@@ -886,29 +894,21 @@

Data Integrity (issuer)

- -
+ +
-
- Expected issuer to error when VC has an undefined type.: expected Response { status: 201, statusText: 'Created', headers: Headers { date: 'Sun, 15 Sep 2024 05:01:49 GMT', 'content-type': 'application/json; charset=utf-8', 'content-length': '742', connection: 'keep-alive', 'x-powered-by': 'Express', vary: 'Origin', etag: 'W/"2e6-Gg3A9QEsk4Xd//c7yHvGgmtmysE"', 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, 15 Sep 2024 05:01:49 GMT', 'content-type': 'application/json; charset=utf-8', 'content-length': '742', connection: 'keep-alive', 'x-powered-by': 'Express', vary: 'Origin', etag: 'W/"2e6-Gg3A9QEsk4Xd//c7yHvGgmtmysE"', 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:104: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:256:7)
-
- Expected issuer to error when VC has an undefined type.: expected Response { status: 201, statusText: 'Created', headers: Headers { date: 'Sun, 15 Sep 2024 05:01:49 GMT', 'content-type': 'application/json; charset=utf-8', 'content-length': '758', connection: 'keep-alive', etag: 'W/"2f6-MKhNsB9PGFVJh00ltNfbgb+FX+A"', 'x-powered-by': 'Express', 'apigw-requestid': 'eIWJqjzpIAMEZhw=', 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, 15 Sep 2024 05:01:49 GMT', 'content-type': 'application/json; charset=utf-8', 'content-length': '758', connection: 'keep-alive', etag: 'W/"2f6-MKhNsB9PGFVJh00ltNfbgb+FX+A"', 'x-powered-by': 'Express', 'apigw-requestid': 'eIWJqjzpIAMEZhw=', 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, 22 Sep 2024 05:01:47 GMT', 'content-type': 'application/json; charset=utf-8', 'content-length': '742', connection: 'keep-alive', 'x-powered-by': 'Express', vary: 'Origin', etag: 'W/"2e6-VvbXb0cRNcjT6cV4ulsupX932gI"', 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, 22 Sep 2024 05:01:47 GMT', 'content-type': 'application/json; charset=utf-8', 'content-length': '742', connection: 'keep-alive', 'x-powered-by': 'Express', vary: 'Origin', etag: 'W/"2e6-VvbXb0cRNcjT6cV4ulsupX932gI"', 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:104: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:256: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:252:7)
@@ -916,12 +916,12 @@

Data Integrity (issuer)

- Expected issuer to error when VC has an undefined type.: expected Response { status: 201, statusText: 'Created', headers: Headers { 'content-length': '797', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 15 Sep 2024 05:01:49 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': '797', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 15 Sep 2024 05:01:49 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 issuer to error when VC has an undefined type.: expected Response { status: 201, statusText: 'Created', headers: Headers { date: 'Sun, 22 Sep 2024 05:01:47 GMT', 'content-type': 'application/json; charset=utf-8', 'content-length': '758', connection: 'keep-alive', etag: 'W/"2f6-5dCWkl/WNyvWiQKaXeH7t27AkSc"', 'x-powered-by': 'Express', 'apigw-requestid': 'efatTgkwIAMESHg=', 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, 22 Sep 2024 05:01:47 GMT', 'content-type': 'application/json; charset=utf-8', 'content-length': '758', connection: 'keep-alive', etag: 'W/"2f6-5dCWkl/WNyvWiQKaXeH7t27AkSc"', 'x-powered-by': 'Express', 'apigw-requestid': 'efatTgkwIAMESHg=', 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:104: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:256: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:252:7)
@@ -934,123 +934,108 @@

Data Integrity (issuer)

- Expected issuer to error when VC has an undefined type.: expected Response { status: 200, statusText: 'OK', headers: Headers { date: 'Sun, 15 Sep 2024 05:01:50 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': '99', 'cf-cache-status': 'DYNAMIC', 'report-to': '{"endpoints":[{"url":"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=OgnCprwONCBhTIF2A9Vp89NOAsDI93LbPW7BAqOM2dxWuzJD2nsh8PJX8FCUHMWX1W0RtVvS3TpIXalfm2qBt6x31TN0uay6XbMe3SxjRd2bXcVEqGdW4Rvd82xElmDbp0BW0qbA1a%2BQJN50c1Iv"}],"group":"cf-nel","max_age":604800}', nel: '{"success_fraction":0,"report_to":"cf-nel","max_age":604800}', server: 'cloudflare', 'cf-ray': '8c360fa7fca9c947-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, 15 Sep 2024 05:01:50 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': '99', 'cf-cache-status': 'DYNAMIC', 'report-to': '{"endpoints":[{"url":"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=OgnCprwONCBhTIF2A9Vp89NOAsDI93LbPW7BAqOM2dxWuzJD2nsh8PJX8FCUHMWX1W0RtVvS3TpIXalfm2qBt6x31TN0uay6XbMe3SxjRd2bXcVEqGdW4Rvd82xElmDbp0BW0qbA1a%2BQJN50c1Iv"}],"group":"cf-nel","max_age":604800}', nel: '{"success_fraction":0,"report_to":"cf-nel","max_age":604800}', server: 'cloudflare', 'cf-ray': '8c360fa7fca9c947-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, 22 Sep 2024 05:01:48 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': '76', 'cf-cache-status': 'DYNAMIC', 'report-to': '{"endpoints":[{"url":"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=96KFT762vqJ5OyQJEy3QdTYpYp6D4Ds6qkN%2FX96uQQiPh2XJPdlNLcX5El%2FZ2w3OW9kzfmj5RIypet1RhLTvlhusx6UdGhK3TFmot9WP6ySdxwqU%2BvrMkTm7SL924n3rc03w%2BLLZqWZ%2B1WjFoZdI"}],"group":"cf-nel","max_age":604800}', nel: '{"success_fraction":0,"report_to":"cf-nel","max_age":604800}', server: 'cloudflare', 'cf-ray': '8c6fbd37fdcb823c-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, 22 Sep 2024 05:01:48 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': '76', 'cf-cache-status': 'DYNAMIC', 'report-to': '{"endpoints":[{"url":"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=96KFT762vqJ5OyQJEy3QdTYpYp6D4Ds6qkN%2FX96uQQiPh2XJPdlNLcX5El%2FZ2w3OW9kzfmj5RIypet1RhLTvlhusx6UdGhK3TFmot9WP6ySdxwqU%2BvrMkTm7SL924n3rc03w%2BLLZqWZ%2B1WjFoZdI"}],"group":"cf-nel","max_age":604800}', nel: '{"success_fraction":0,"report_to":"cf-nel","max_age":604800}', server: 'cloudflare', 'cf-ray': '8c6fbd37fdcb823c-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:104: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:256: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:252:7)
+ + + +
+
+
+
+
+
+
+
+
+
+

Ed25519Signature2020 (issuer)

+
+ + + + + + + + + + + + + - - - - - - - - + +
+
+ Issuer ⇒ +
+
+ Test Name +
+
ACA-pyapicatalog.comDanube TechDigital BazaarEWFLearnCardSpruceIDTrinsic
- 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). + "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. -
+
+
-
- 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:343:18)
-                        at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
-
-
+
+
-
- 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:343:18)
-                        at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
-
-
+
+
-
- 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:343:18)
-                        at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
-
-
+
+
-
- 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:343:18)
-                        at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
-
- 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:343:18)
-                        at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+ Expected at least one Ed25519 proof.: expected +0 to be at least 1 +
AssertionError: Expected at least one Ed25519 proof.: expected +0 to be at least 1
+                        at Context.<anonymous> (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js:73:42)
+                        at process.processImmediate (node:internal/timers:483:21)
-
+
+
-
- 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:343:18)
-                        at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
-
-
+
+
-
- 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:343:18)
-                        at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
-
-
+
+
-
- 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:343:18)
-                        at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
-
- 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. + "proof" MUST verify when using a conformant verifier. @@ -1058,9 +1043,16 @@

Data Integrity (issuer)

-
+
+
+
+ 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/10-create.js:105:24)
+                        at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+
@@ -1094,10 +1086,45 @@

Data Integrity (issuer)

+
+
+
+
+
+
+
+
+
+
+
+

Data Integrity (verifier)

+ -
-
-
-
-
-
-
-
-
-
-

Ed25519Signature2020 (issuer)

-
- - - - - - - - - - - - - - - - -
-
- Issuer ⇒ -
-
- Test Name -
-
apicatalog.comDanube TechDigital BazaarEWFLearnCardOpSecIdSpruceIDTrinsic
- "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. + If the "proof" field is invalid, an error MUST be raised. @@ -1291,15 +1283,9 @@

Ed25519Signature2020 (issuer)

-
+
+
-
- Expected at least one Ed25519 proof.: expected +0 to be at least 1 -
AssertionError: Expected at least one Ed25519 proof.: expected +0 to be at least 1
-                        at Context.<anonymous> (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js:73:42)
-                        at process.processImmediate (node:internal/timers:483:21)
-
@@ -1326,19 +1312,12 @@

Ed25519Signature2020 (issuer)

- "proof" MUST verify when using a conformant verifier. + If the "proof.type" field is missing, an error MUST be raised. -
+
+
-
- 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/10-create.js:105:24)
-                        at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
-
@@ -1377,45 +1356,10 @@

Ed25519Signature2020 (issuer)

-
-
-
-
-
-
-
-
-
-
-
-

Data Integrity (verifier)

-
- - - - - - - - - - - - - - - + +
-
- Verifier ⇒ -
-
- Test Name -
-
apicatalog.comDanube TechDigital BazaarEWFLearnCardOpSecIdSpruceIDTrinsic
- When deserializing to RDF, implementations MUST ensure that the base URL is set to null. + If the "proof.type" field is not the string "Ed25519Signature2020", an error MUST be raised. @@ -1462,7 +1406,7 @@

Data Integrity (verifier)

- Conforming processors MUST produce errors when non-conforming documents are consumed. + If the "proof.verificationMethod" field is missing, an error MUST be raised. @@ -1475,9 +1419,18 @@

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:273: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:84: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)
+
@@ -1509,7 +1462,7 @@

Data Integrity (verifier)

- If the "proof" field is missing, an error MUST be raised. + If the "proof.verificationMethod" field is invalid, an error MUST be raised. @@ -1556,7 +1509,7 @@

Data Integrity (verifier)

- If the "proof" field is invalid, an error MUST be raised. + If the "proof.proofPurpose" field is missing, an error MUST be raised. @@ -1603,7 +1556,7 @@

Data Integrity (verifier)

- If the "proof.type" field is missing, an error MUST be raised. + If the "proof.proofPurpose" field is invalid, an error MUST be raised. @@ -1650,7 +1603,7 @@

Data Integrity (verifier)

- If the "proof.type" field is not the string "Ed25519Signature2020", an error MUST be raised. + 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. @@ -1697,7 +1650,7 @@

Data Integrity (verifier)

- If the "proof.verificationMethod" field is missing, an error MUST be raised. + The proofValue property MUST be used, as specified in 2.1 Proofs. @@ -1705,18 +1658,9 @@

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:273: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:84: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)
-
@@ -1753,7 +1697,7 @@

Data Integrity (verifier)

- If the "proof.verificationMethod" field is invalid, an error MUST be raised. + ("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. @@ -1800,7 +1744,7 @@

Data Integrity (verifier)

- If the "proof.proofPurpose" field is missing, an error MUST be raised. + 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. @@ -1847,7 +1791,7 @@

Data Integrity (verifier)

- If the "proof.proofPurpose" field is invalid, an error MUST be raised. + 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. @@ -1891,10 +1835,45 @@

Data Integrity (verifier)

+
+
+
+
+
+
+
+
+
+
+
+

Ed25519Signature2020 (verifier)

+
+ + + + + + + + + + + + + - - - + +
+
+ Verifier ⇒ +
+
+ Test Name +
+
ACA-pyapicatalog.comDanube TechDigital BazaarEWFLearnCardSpruceIDTrinsic
- 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. + MUST verify a valid VC with an Ed25519Signature2020 proof @@ -1941,12 +1920,20 @@

Data Integrity (verifier)

- The proofValue property MUST be used, as specified in 2.1 Proofs. + 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. -
+
+
+
+ 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, 22 Sep 2024 05:02:14 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, 22 Sep 2024 05:02:14 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)
+                        at async Context.<anonymous> (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js:73:11)
+
@@ -1988,12 +1975,20 @@

Data Integrity (verifier)

- ("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. + If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised. -
+
+
+
+ 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, 22 Sep 2024 05:02:14 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, 22 Sep 2024 05:02:14 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)
+                        at async Context.<anonymous> (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js:82:11)
+
@@ -2035,12 +2030,20 @@

Data Integrity (verifier)

- 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. + If a canonicalization data hashing algorithm SHA-2-256 is used, an error MUST be raised. -
+
+
+
+ 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, 22 Sep 2024 05:02:14 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, 22 Sep 2024 05:02:14 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)
+                        at async Context.<anonymous> (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js:91:11)
+
@@ -2079,10 +2082,45 @@

Data Integrity (verifier)

+
+
+
+
+
+
+
+
+
+
+
+

Ed25519Signature2020 (interop)

+
+ + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+ Verifier ⇒ +
+
+ Issuer +
+
ACA-pyapicatalog.comDanube TechDigital BazaarEWFLearnCardSpruceIDTrinsic
- 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. + ACA-py @@ -2105,19 +2143,40 @@

Data Integrity (verifier)

-
+
+
+
+ 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:66:20)
+                        at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+
-
+
+
+
+ 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:66:20)
+                        at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+
-
+
+
+
+ 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:66:20)
+                        at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+
@@ -2129,715 +2188,35 @@

Data Integrity (verifier)

- 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. + apicatalog.com -
+
+
+
+ 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:66:20)
+                        at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+
-
+
+
+
+ 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:66:20)
+                        at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- If present (expires), 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. - -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- (created) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset. - -
-
-
- Expected no error from verifier.: expected HTTPError: Request failed with status cod… { …(6) } to not exist -
AssertionError: Expected no error from verifier.: 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 verificationSuccess (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:49: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/verify.js:191:9)
-
-
-
-
-
-
- Expected no error from verifier.: expected HTTPError: Request failed with status cod… { …(6) } to not exist -
AssertionError: Expected no error from verifier.: 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 verificationSuccess (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:49: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/verify.js:191:9)
-
-
-
-
-
-
- Expected no error from verifier.: expected HTTPError: Request failed with status cod… { …(6) } to not exist -
AssertionError: Expected no error from verifier.: 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 verificationSuccess (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:49: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/verify.js:191:9)
-
-
-
-
-
-
- Expected no error from verifier.: expected HTTPError: @spruceid/didkit-wasm-node.ver… { …(6) } to not exist -
AssertionError: Expected no error from verifier.: expected HTTPError: @spruceid/didkit-wasm-node.ver… { …(6) } to not exist
-                        at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)
-                        at verificationSuccess (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:49: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/verify.js:191:9)
-
-
-
-
-
-
- Expected no error from verifier.: expected HTTPError: Request failed with status cod… { …(6) } to not exist -
AssertionError: Expected no error from verifier.: 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 verificationSuccess (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:49: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/verify.js:191:9)
-
-
-
-
-
-
- Expected no error from verifier.: expected HTTPError: Invalid cryptosuite { …(6) } to not exist -
AssertionError: Expected no error from verifier.: expected HTTPError: Invalid cryptosuite { …(6) } to not exist
-                        at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)
-                        at verificationSuccess (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:49: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/verify.js:191:9)
-
-
-
-
-
-
- Expected no error from verifier.: expected HTTPError: Request failed with status cod… { …(5) } to not exist -
AssertionError: Expected no error from verifier.: 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 verificationSuccess (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:49: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/verify.js:191:9)
-
-
-
-
-
-
- Expected no error from verifier.: expected HTTPError: Request failed with status cod… { …(5) } to not exist -
AssertionError: Expected no error from verifier.: 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 verificationSuccess (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:49: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/verify.js:191:9)
-
-
-
- (expires) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset. - -
-
-
- Expected no error from verifier.: expected HTTPError: Request failed with status cod… { …(6) } to not exist -
AssertionError: Expected no error from verifier.: 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 verificationSuccess (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:49: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/verify.js:199:9)
-
-
-
-
-
-
- Expected no error from verifier.: expected HTTPError: Request failed with status cod… { …(6) } to not exist -
AssertionError: Expected no error from verifier.: 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 verificationSuccess (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:49: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/verify.js:199:9)
-
-
-
-
-
-
- Expected no error from verifier.: expected HTTPError: Request failed with status cod… { …(6) } to not exist -
AssertionError: Expected no error from verifier.: 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 verificationSuccess (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:49: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/verify.js:199:9)
-
-
-
-
-
-
- Expected no error from verifier.: expected HTTPError: Request failed with status cod… { …(6) } to not exist -
AssertionError: Expected no error from verifier.: 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 verificationSuccess (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:49: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/verify.js:199:9)
-
-
-
-
-
-
- Expected no error from verifier.: expected HTTPError: Request failed with status cod… { …(6) } to not exist -
AssertionError: Expected no error from verifier.: 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 verificationSuccess (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:49: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/verify.js:199:9)
-
-
-
-
-
-
- Expected no error from verifier.: expected HTTPError: Invalid cryptosuite { …(6) } to not exist -
AssertionError: Expected no error from verifier.: expected HTTPError: Invalid cryptosuite { …(6) } to not exist
-                        at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)
-                        at verificationSuccess (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:49: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/verify.js:199:9)
-
-
-
-
-
-
- Expected no error from verifier.: expected HTTPError: Request failed with status cod… { …(5) } to not exist -
AssertionError: Expected no error from verifier.: 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 verificationSuccess (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:49: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/verify.js:199:9)
-
-
-
-
-
-
- Expected no error from verifier.: expected HTTPError: Request failed with status cod… { …(5) } to not exist -
AssertionError: Expected no error from verifier.: 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 verificationSuccess (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/assertions.js:49: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/verify.js:199:9)
-
-
-
- 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. - -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 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. - -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Ed25519Signature2020 (verifier)

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- Verifier ⇒ -
-
- Test Name -
-
apicatalog.comDanube TechDigital BazaarEWFLearnCardOpSecIdSpruceIDTrinsic
- MUST verify a valid VC with an Ed25519Signature2020 proof - -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 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. - -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 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, 15 Sep 2024 05:02:26 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, 15 Sep 2024 05:02:26 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)
-                        at async Context.<anonymous> (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js:73:11)
-
-
-
-
-
-
-
-
-
-
-
- If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised. - -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 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, 15 Sep 2024 05:02:26 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, 15 Sep 2024 05:02:26 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)
-                        at async Context.<anonymous> (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js:82:11)
-
-
-
-
-
-
-
-
-
-
-
- If a canonicalization data hashing algorithm SHA-2-256 is used, an error MUST be raised. - -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 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, 15 Sep 2024 05:02:26 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, 15 Sep 2024 05:02:26 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)
-                        at async Context.<anonymous> (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js:91:11)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

Ed25519Signature2020 (interop)

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - -
-
- Verifier ⇒ -
-
- Issuer -
-
apicatalog.comDanube TechDigital BazaarEWFLearnCardOpSecIdSpruceIDTrinsic
- apicatalog.com - -
-
-
- 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:66:20)
-                        at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
-
-
-
-
+
+
Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist @@ -2884,18 +2263,6 @@

Ed25519Signature2020 (interop)

-
-
-
- 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:66:20)
-                        at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
-
-
-
@@ -3033,9 +2400,16 @@

Ed25519Signature2020 (interop)

-
+
+
+
+ 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:66:20)
+                        at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+
@@ -3053,16 +2427,9 @@

Ed25519Signature2020 (interop)

-
+
+
-
- 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:66:20)
-                        at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
-
@@ -3089,45 +2456,6 @@

Ed25519Signature2020 (interop)

LearnCard
-
-
-
-
-
-
-
- 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:66:20)
-                        at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
-
-
-
-
-
-
- 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:66:20)
-                        at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
-
-
-
-
-
-
-
-
-
-
-
@@ -3145,33 +2473,6 @@

Ed25519Signature2020 (interop)

-
-
-
-
- OpSecId - -
-
-
-
-
-
-
-
-
-
-
-
@@ -3201,6 +2502,11 @@

Ed25519Signature2020 (interop)

+
+
+
+
@@ -3225,6 +2531,11 @@

Ed25519Signature2020 (interop)

SpruceID
+
+
+
+
@@ -3276,11 +2587,6 @@

Ed25519Signature2020 (interop)

-
-
-
-
@@ -3300,9 +2606,16 @@

Ed25519Signature2020 (interop)

Trinsic
-
+
+
+
+ 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:66:20)
+                        at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+
@@ -3315,16 +2628,9 @@

Ed25519Signature2020 (interop)

-
+
+
-
- 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:66:20)
-                        at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
-
diff --git a/index.json b/index.json index 3d3a8b3..c6e6c2b 100644 --- a/index.json +++ b/index.json @@ -5,7 +5,7 @@ "ctx": null, "suites": [ { - "title": "apicatalog.com", + "title": "ACA-py", "ctx": null, "suites": [], "tests": [ @@ -22,11 +22,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "xiopp9C56jEvyjZJ9hmjo", + "parent": "H9yMS4dvSrKEHx73zE5vi", "ctx": null, - "_testId": "urn:uuid:6ffdeae4-de93-4f7b-a689-c361a4738593", + "_testId": "urn:uuid:47270d9a-1e7e-4bad-91a6-37ba5177780e", "cell": { - "columnId": "apicatalog.com", + "columnId": "ACA-py", "rowId": "When expressing a data integrity proof on an object, a proof property MUST be used." }, "_events": {}, @@ -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": "xiopp9C56jEvyjZJ9hmjo", + "parent": "H9yMS4dvSrKEHx73zE5vi", "ctx": null, - "_testId": "urn:uuid:136ce2f9-33ab-4f16-9304-5910f2a2ca30", + "_testId": "urn:uuid:2edec59e-8644-4104-ba4d-d4c4d0aacada", "cell": { - "columnId": "apicatalog.com", + "columnId": "ACA-py", "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" }, @@ -76,11 +76,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "xiopp9C56jEvyjZJ9hmjo", + "parent": "H9yMS4dvSrKEHx73zE5vi", "ctx": null, - "_testId": "urn:uuid:a8504d6f-fbf5-4775-9f53-355c97f46ee2", + "_testId": "urn:uuid:12f57096-f2e8-4fd8-84ad-6f855fa3d70e", "cell": { - "columnId": "apicatalog.com", + "columnId": "ACA-py", "rowId": "(\"proof.id\") An optional identifier for the proof, which MUST be a URL." }, "_events": {}, @@ -103,11 +103,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "xiopp9C56jEvyjZJ9hmjo", + "parent": "H9yMS4dvSrKEHx73zE5vi", "ctx": null, - "_testId": "urn:uuid:1e7d6736-f94d-480f-825e-86f7ec4d68ac", + "_testId": "urn:uuid:b446f308-6d3c-454c-b251-057a80a7a260", "cell": { - "columnId": "apicatalog.com", + "columnId": "ACA-py", "rowId": "The specific type of proof MUST be specified as a string that maps to a URL." }, "_events": {}, @@ -117,12 +117,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 6302, + "_idleStart": 1546, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 1, + "duration": 2, "state": "passed", "speed": "fast" }, @@ -139,11 +139,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "xiopp9C56jEvyjZJ9hmjo", + "parent": "H9yMS4dvSrKEHx73zE5vi", "ctx": null, - "_testId": "urn:uuid:49adc316-ae0d-4688-9523-ae4492b2d637", + "_testId": "urn:uuid:a301f956-ce6c-4ed4-a719-120a6c4a8e22", "cell": { - "columnId": "apicatalog.com", + "columnId": "ACA-py", "rowId": "\"proof.type\" field MUST be \"Ed25519Signature2020\" and the associated document MUST include expected contexts." }, "_events": {}, @@ -165,11 +165,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "xiopp9C56jEvyjZJ9hmjo", + "parent": "H9yMS4dvSrKEHx73zE5vi", "ctx": null, - "_testId": "urn:uuid:798acf11-a5a8-4a68-ac78-0d90048c1964", + "_testId": "urn:uuid:f9bb6165-de7d-4c9b-a2f7-c2092e79a164", "cell": { - "columnId": "apicatalog.com", + "columnId": "ACA-py", "rowId": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified." }, "_events": {}, @@ -192,11 +192,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "xiopp9C56jEvyjZJ9hmjo", + "parent": "H9yMS4dvSrKEHx73zE5vi", "ctx": null, - "_testId": "urn:uuid:ba4a6758-6169-4f9d-93b1-8e7583b0e7ab", + "_testId": "urn:uuid:ec55c93c-8fea-4d45-8a8e-f2284751d4ee", "cell": { - "columnId": "apicatalog.com", + "columnId": "ACA-py", "rowId": "If specified (proof.cryptosuite), its value MUST be a string." }, "_events": {}, @@ -219,11 +219,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "xiopp9C56jEvyjZJ9hmjo", + "parent": "H9yMS4dvSrKEHx73zE5vi", "ctx": null, - "_testId": "urn:uuid:e64a35cc-356a-48ac-a0ec-fae9a9ed4b25", + "_testId": "urn:uuid:cb8d6d2a-edf4-4088-9a65-73a77f0ec5a3", "cell": { - "columnId": "apicatalog.com", + "columnId": "ACA-py", "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": {}, @@ -233,12 +233,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 6304, + "_idleStart": 1548, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 1, + "duration": 0, "state": "passed", "speed": "fast" }, @@ -255,11 +255,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "xiopp9C56jEvyjZJ9hmjo", + "parent": "H9yMS4dvSrKEHx73zE5vi", "ctx": null, - "_testId": "urn:uuid:80c09f4e-bc8e-4a60-aed3-3feab9b33eb8", + "_testId": "urn:uuid:a66f3b0f-0572-4676-ac03-c068a1c3aaf8", "cell": { - "columnId": "apicatalog.com", + "columnId": "ACA-py", "rowId": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL." }, "_events": {}, @@ -269,12 +269,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 6306, + "_idleStart": 1550, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 1, "state": "passed", "speed": "fast" }, @@ -291,11 +291,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "xiopp9C56jEvyjZJ9hmjo", + "parent": "H9yMS4dvSrKEHx73zE5vi", "ctx": null, - "_testId": "urn:uuid:7af571f6-26e2-4df3-b446-5b85a507e75a", + "_testId": "urn:uuid:f314ecc2-239a-44d2-9ba6-5d20f486822d", "cell": { - "columnId": "apicatalog.com", + "columnId": "ACA-py", "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": {}, @@ -318,11 +318,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "xiopp9C56jEvyjZJ9hmjo", + "parent": "H9yMS4dvSrKEHx73zE5vi", "ctx": null, - "_testId": "urn:uuid:d4a72f14-920f-46ec-9efe-16d896432442", + "_testId": "urn:uuid:2c196684-c7ef-4e4c-9389-2fb5f215e28a", "cell": { - "columnId": "apicatalog.com", + "columnId": "ACA-py", "rowId": "If \"proof.previousProof\" property exists, it MUST be a string value or unordered list of string values." }, "_events": {}, @@ -344,11 +344,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "xiopp9C56jEvyjZJ9hmjo", + "parent": "H9yMS4dvSrKEHx73zE5vi", "ctx": null, - "_testId": "urn:uuid:e8d8547e-1b73-48ce-8b8e-059d2c8e9ebe", + "_testId": "urn:uuid:b22ed7ed-9cf9-4b1b-a72f-c2a8bc1e1648", "cell": { - "columnId": "apicatalog.com", + "columnId": "ACA-py", "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": {}, @@ -358,12 +358,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 6308, + "_idleStart": 1552, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 1, "state": "passed", "speed": "fast" }, @@ -380,11 +380,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "xiopp9C56jEvyjZJ9hmjo", + "parent": "H9yMS4dvSrKEHx73zE5vi", "ctx": null, - "_testId": "urn:uuid:d6df9421-5f10-437d-aaa4-6a07e2288b66", + "_testId": "urn:uuid:1b97870a-809d-4d77-805d-f999af261bad", "cell": { - "columnId": "apicatalog.com", + "columnId": "ACA-py", "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": {}, @@ -394,267 +394,21 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 6308, + "_idleStart": 1553, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 161, + "duration": 38, "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': 'e3c5915d6873e82832232d6091a5e4cd', date: 'Sun, 15 Sep 2024 05:01:45 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-length': '797', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 22 Sep 2024 05:01:37 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-type': 'application/ld+json', 'x-cloud-trace-context': 'e3c5915d6873e82832232d6091a5e4cd', date: 'Sun, 15 Sep 2024 05:01:45 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:104: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:256:7)" - } - }, - { - "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": "xiopp9C56jEvyjZJ9hmjo", - "ctx": null, - "_testId": "urn:uuid:62b431ce-ae0f-472d-a5ad-698964f9256a", - "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)." - }, - "_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": 6471, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 70, - "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:cd9650bd-1e65-48e4-9814-e9c34521555d\",\"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:cd9650bd-1e65-48e4-9814-e9c34521555d", - "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:343:18)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" + "stack": "AssertionError: Expected issuer to error when VC has an undefined type.: expected Response { status: 201, statusText: 'Created', headers: Headers { 'content-length': '797', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 22 Sep 2024 05:01:37 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:104: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:252:7)" } - }, - { - "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": "xiopp9C56jEvyjZJ9hmjo", - "ctx": null, - "_testId": "urn:uuid:32ccba1b-7baf-4488-bd22-ce0d7d6810ca", - "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, - "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": 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 }", - "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": "xiopp9C56jEvyjZJ9hmjo", - "ctx": null, - "_testId": "urn:uuid:37501f7a-0f89-47c5-ac2d-6e4e5f06579f", - "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." - }, - "_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": "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": "xiopp9C56jEvyjZJ9hmjo", - "ctx": null, - "_testId": "urn:uuid:ca98b7ef-15ca-43e1-8284-3857a5b88182", - "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." - }, - "_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": "(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": "xiopp9C56jEvyjZJ9hmjo", - "ctx": null, - "_testId": "urn:uuid:523555e4-7f8a-422f-ad57-1dbf43be2984", - "cell": { - "columnId": "apicatalog.com", - "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": 1, - "state": "passed", - "speed": "fast" } ], "root": false, @@ -662,7 +416,7 @@ "_retries": -1, "_beforeEach": [ { - "title": "\"before each\" hook in \"apicatalog.com\"", + "title": "\"before each\" hook in \"ACA-py\"", "body": "function() {\n this.currentTest.cell = {\n columnId,\n rowId: this.currentTest.title\n };\n }", "async": 0, "sync": true, @@ -673,7 +427,7 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "xiopp9C56jEvyjZJ9hmjo", + "parent": "H9yMS4dvSrKEHx73zE5vi", "ctx": null, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", "originalTitle": "\"before each\" hook", @@ -685,7 +439,7 @@ ], "_beforeAll": [ { - "title": "\"before all\" hook in \"apicatalog.com\"", + "title": "\"before all\" hook in \"ACA-py\"", "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, @@ -696,7 +450,7 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "xiopp9C56jEvyjZJ9hmjo", + "parent": "H9yMS4dvSrKEHx73zE5vi", "ctx": null, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", "originalTitle": "\"before all\" hook", @@ -706,12 +460,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 1291, + "_idleStart": 1311, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 5008, + "duration": 231, "_error": null } ], @@ -723,12 +477,12 @@ "_onlyTests": [], "_onlySuites": [], "delayed": false, - "parent": "0LD0duBmOdjt9v6fHOMOI", + "parent": "EjF7l5fbQpuntiLjGHCQZ", "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "_testId": "urn:uuid:e5e21c18-a570-402e-8ee0-4d08306eea2a" + "_testId": "urn:uuid:7aa32e7a-52fe-4689-acf4-d0993ba29695" }, { - "title": "Danube Tech", + "title": "apicatalog.com", "ctx": null, "suites": [], "tests": [ @@ -745,11 +499,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "MnepsQEcAPTMQkBo-l9WL", + "parent": "sKmiHZXakYePx-cVZAsbs", "ctx": null, - "_testId": "urn:uuid:a74b16ba-6175-41c2-a64e-d19726fae7cb", + "_testId": "urn:uuid:9e2c68e4-3229-4520-ad35-1b7ad1201cbc", "cell": { - "columnId": "Danube Tech", + "columnId": "apicatalog.com", "rowId": "When expressing a data integrity proof on an object, a proof property MUST be used." }, "_events": {}, @@ -772,11 +526,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "MnepsQEcAPTMQkBo-l9WL", + "parent": "sKmiHZXakYePx-cVZAsbs", "ctx": null, - "_testId": "urn:uuid:92653226-3521-4a23-8cb4-8c5ddbbeae23", + "_testId": "urn:uuid:55e1b1ea-ab96-4e4d-a5a2-fc70d4e218c0", "cell": { - "columnId": "Danube Tech", + "columnId": "apicatalog.com", "rowId": "If present (proof), its value MUST be either a single object, or an unordered set of objects." }, "_events": {}, @@ -799,11 +553,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "MnepsQEcAPTMQkBo-l9WL", + "parent": "sKmiHZXakYePx-cVZAsbs", "ctx": null, - "_testId": "urn:uuid:71e5800b-2f5e-4ad9-811d-9d2942043183", + "_testId": "urn:uuid:405ba92d-f3bd-4477-a11d-0e72794c1915", "cell": { - "columnId": "Danube Tech", + "columnId": "apicatalog.com", "rowId": "(\"proof.id\") An optional identifier for the proof, which MUST be a URL." }, "_events": {}, @@ -826,11 +580,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "MnepsQEcAPTMQkBo-l9WL", + "parent": "sKmiHZXakYePx-cVZAsbs", "ctx": null, - "_testId": "urn:uuid:e0a90f63-d92c-4695-a80c-43c83732d5e1", + "_testId": "urn:uuid:52936f10-b83b-447e-b5ea-ea70bb11370a", "cell": { - "columnId": "Danube Tech", + "columnId": "apicatalog.com", "rowId": "The specific type of proof MUST be specified as a string that maps to a URL." }, "_events": {}, @@ -840,12 +594,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7074, + "_idleStart": 6243, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 1, + "duration": 0, "state": "passed", "speed": "fast" }, @@ -862,16 +616,16 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "MnepsQEcAPTMQkBo-l9WL", + "parent": "sKmiHZXakYePx-cVZAsbs", "ctx": null, - "_testId": "urn:uuid:57209aa0-ac11-43a2-a4c3-bce4d8246d04", + "_testId": "urn:uuid:52fedb0e-8933-4cdd-9ff9-681fae85b40f", "cell": { - "columnId": "Danube Tech", + "columnId": "apicatalog.com", "rowId": "\"proof.type\" field MUST be \"Ed25519Signature2020\" and the associated document MUST include expected contexts." }, "_events": {}, "_eventsCount": 1, - "duration": 1, + "duration": 0, "state": "passed", "speed": "fast" }, @@ -888,11 +642,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "MnepsQEcAPTMQkBo-l9WL", + "parent": "sKmiHZXakYePx-cVZAsbs", "ctx": null, - "_testId": "urn:uuid:28c24ec6-0b88-4940-8ccc-87a6dd8a0388", + "_testId": "urn:uuid:414bc3ba-5872-44e1-91df-19a9c76945e1", "cell": { - "columnId": "Danube Tech", + "columnId": "apicatalog.com", "rowId": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified." }, "_events": {}, @@ -915,11 +669,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "MnepsQEcAPTMQkBo-l9WL", + "parent": "sKmiHZXakYePx-cVZAsbs", "ctx": null, - "_testId": "urn:uuid:50c0f7a5-ef44-4ab9-913c-f884dd6bff00", + "_testId": "urn:uuid:c72ec21b-1a14-490f-86cc-220b674da2ad", "cell": { - "columnId": "Danube Tech", + "columnId": "apicatalog.com", "rowId": "If specified (proof.cryptosuite), its value MUST be a string." }, "_events": {}, @@ -942,11 +696,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "MnepsQEcAPTMQkBo-l9WL", + "parent": "sKmiHZXakYePx-cVZAsbs", "ctx": null, - "_testId": "urn:uuid:461404fb-3e63-4702-8dca-acd04f8edc72", + "_testId": "urn:uuid:c93566dc-0a09-4c8e-87b2-952d9a810fe5", "cell": { - "columnId": "Danube Tech", + "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]." }, "_events": {}, @@ -956,7 +710,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7075, + "_idleStart": 6244, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -978,11 +732,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "MnepsQEcAPTMQkBo-l9WL", + "parent": "sKmiHZXakYePx-cVZAsbs", "ctx": null, - "_testId": "urn:uuid:1e3e6b19-232b-4f22-8d10-16e5180cd206", + "_testId": "urn:uuid:dac47b6b-7f64-46be-a9f3-9d330f0cc2da", "cell": { - "columnId": "Danube Tech", + "columnId": "apicatalog.com", "rowId": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL." }, "_events": {}, @@ -992,7 +746,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7076, + "_idleStart": 6245, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -1014,11 +768,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "MnepsQEcAPTMQkBo-l9WL", + "parent": "sKmiHZXakYePx-cVZAsbs", "ctx": null, - "_testId": "urn:uuid:21307f72-ed5d-417b-8055-9f4bfece12d2", + "_testId": "urn:uuid:b88bb24d-c364-4a08-9d72-362e1234260c", "cell": { - "columnId": "Danube Tech", + "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": {}, @@ -1041,11 +795,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "MnepsQEcAPTMQkBo-l9WL", + "parent": "sKmiHZXakYePx-cVZAsbs", "ctx": null, - "_testId": "urn:uuid:1c586b0b-1544-423c-89c2-ba9628c2808c", + "_testId": "urn:uuid:824e650b-e6a9-4efc-a030-4fd14892764f", "cell": { - "columnId": "Danube Tech", + "columnId": "apicatalog.com", "rowId": "If \"proof.previousProof\" property exists, it MUST be a string value or unordered list of string values." }, "_events": {}, @@ -1067,11 +821,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "MnepsQEcAPTMQkBo-l9WL", + "parent": "sKmiHZXakYePx-cVZAsbs", "ctx": null, - "_testId": "urn:uuid:17545335-e30a-4938-bfac-cceb80c8e6dc", + "_testId": "urn:uuid:f7cd1ffa-d120-47bb-9963-4ef015e71c12", "cell": { - "columnId": "Danube Tech", + "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." }, "_events": {}, @@ -1081,7 +835,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7078, + "_idleStart": 6247, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -1103,11 +857,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "MnepsQEcAPTMQkBo-l9WL", + "parent": "sKmiHZXakYePx-cVZAsbs", "ctx": null, - "_testId": "urn:uuid:3eda17b7-879b-4c12-8afd-5f6e4a062dc4", + "_testId": "urn:uuid:0e1a6275-6c22-4a0a-b515-c4b64f9a064a", "cell": { - "columnId": "Danube Tech", + "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": {}, @@ -1117,262 +871,21 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7078, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 710, - "state": "passed", - "speed": "slow" - }, - { - "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": "MnepsQEcAPTMQkBo-l9WL", - "ctx": null, - "_testId": "urn:uuid:4de6492c-4cec-45e4-9b92-7fdcd4129aa8", - "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)." - }, - "_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": 7789, + "_idleStart": 6247, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 109, + "duration": 118, "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", + "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': '208f0138f2eb9f5300f55af1f4a111bf', date: 'Sun, 22 Sep 2024 05:01:42 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": { - "response": {}, - "request": {}, - "options": { - "credentials": "same-origin", - "headers": {}, - "body": "{\"credential\":{\"id\":\"urn:uuid:36cfeaf4-e71d-437f-a067-efa13e1d1c13\",\"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:36cfeaf4-e71d-437f-a067-efa13e1d1c13", - "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)" - } - ] - }, + "actual": {}, "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:343:18)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" + "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': '208f0138f2eb9f5300f55af1f4a111bf', date: 'Sun, 22 Sep 2024 05:01:42 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:104: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:252:7)" } - }, - { - "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": "MnepsQEcAPTMQkBo-l9WL", - "ctx": null, - "_testId": "urn:uuid:29e98971-1df2-4feb-a7ec-3cb385a5129d", - "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, - "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 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": "MnepsQEcAPTMQkBo-l9WL", - "ctx": null, - "_testId": "urn:uuid:7231558a-0737-4d5c-b074-1ce3c2ee5522", - "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." - }, - "_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": "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": "MnepsQEcAPTMQkBo-l9WL", - "ctx": null, - "_testId": "urn:uuid:5cf30e25-0aa8-4523-8f43-2efc2c6a57f4", - "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." - }, - "_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": "(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": "MnepsQEcAPTMQkBo-l9WL", - "ctx": null, - "_testId": "urn:uuid:cffb3427-48f7-445b-a5b5-136dba1f073a", - "cell": { - "columnId": "Danube Tech", - "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": 1, - "state": "passed", - "speed": "fast" } ], "root": false, @@ -1380,7 +893,7 @@ "_retries": -1, "_beforeEach": [ { - "title": "\"before each\" hook in \"Danube Tech\"", + "title": "\"before each\" hook in \"apicatalog.com\"", "body": "function() {\n this.currentTest.cell = {\n columnId,\n rowId: this.currentTest.title\n };\n }", "async": 0, "sync": true, @@ -1391,7 +904,7 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "MnepsQEcAPTMQkBo-l9WL", + "parent": "sKmiHZXakYePx-cVZAsbs", "ctx": null, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", "originalTitle": "\"before each\" hook", @@ -1403,7 +916,7 @@ ], "_beforeAll": [ { - "title": "\"before all\" hook in \"Danube Tech\"", + "title": "\"before all\" hook in \"apicatalog.com\"", "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, @@ -1414,7 +927,7 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "MnepsQEcAPTMQkBo-l9WL", + "parent": "sKmiHZXakYePx-cVZAsbs", "ctx": null, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", "originalTitle": "\"before all\" hook", @@ -1424,12 +937,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 6545, + "_idleStart": 1593, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 527, + "duration": 4649, "_error": null } ], @@ -1441,12 +954,12 @@ "_onlyTests": [], "_onlySuites": [], "delayed": false, - "parent": "0LD0duBmOdjt9v6fHOMOI", + "parent": "EjF7l5fbQpuntiLjGHCQZ", "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "_testId": "urn:uuid:6c73db8b-55d8-4fdc-8fb6-811639c7de2e" + "_testId": "urn:uuid:d69a6955-3467-407a-873a-5ac0324393b0" }, { - "title": "Digital Bazaar", + "title": "Danube Tech", "ctx": null, "suites": [], "tests": [ @@ -1463,17 +976,17 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "728XFktEK1N1HXmV_UDV3", + "parent": "tY5uwgTlUT8B_tY32qQ2T", "ctx": null, - "_testId": "urn:uuid:e05f160c-4b38-4dbe-80ba-ceac5a2eaa16", + "_testId": "urn:uuid:2aafa259-f3fe-421a-85d9-e68c26cad5d6", "cell": { - "columnId": "Digital Bazaar", + "columnId": "Danube Tech", "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" }, @@ -1490,11 +1003,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "728XFktEK1N1HXmV_UDV3", + "parent": "tY5uwgTlUT8B_tY32qQ2T", "ctx": null, - "_testId": "urn:uuid:a9ea418c-2a4f-4047-84c3-d90b66db912f", + "_testId": "urn:uuid:ee121077-7d1c-4490-a457-670fe960e003", "cell": { - "columnId": "Digital Bazaar", + "columnId": "Danube Tech", "rowId": "If present (proof), its value MUST be either a single object, or an unordered set of objects." }, "_events": {}, @@ -1517,11 +1030,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "728XFktEK1N1HXmV_UDV3", + "parent": "tY5uwgTlUT8B_tY32qQ2T", "ctx": null, - "_testId": "urn:uuid:4fa679cf-afc8-42f7-a567-24d831f00206", + "_testId": "urn:uuid:5d1633ca-fb5f-4dc4-8b1b-993125255b6c", "cell": { - "columnId": "Digital Bazaar", + "columnId": "Danube Tech", "rowId": "(\"proof.id\") An optional identifier for the proof, which MUST be a URL." }, "_events": {}, @@ -1544,11 +1057,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "728XFktEK1N1HXmV_UDV3", + "parent": "tY5uwgTlUT8B_tY32qQ2T", "ctx": null, - "_testId": "urn:uuid:e211878e-d763-4ab1-9554-dc9207e13890", + "_testId": "urn:uuid:e3f025a6-f163-46dc-bbc6-8b9dea889ced", "cell": { - "columnId": "Digital Bazaar", + "columnId": "Danube Tech", "rowId": "The specific type of proof MUST be specified as a string that maps to a URL." }, "_events": {}, @@ -1558,12 +1071,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 8671, + "_idleStart": 7023, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 1, + "duration": 0, "state": "passed", "speed": "fast" }, @@ -1580,11 +1093,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "728XFktEK1N1HXmV_UDV3", + "parent": "tY5uwgTlUT8B_tY32qQ2T", "ctx": null, - "_testId": "urn:uuid:34e6cfe3-73df-4b99-9879-d66de4eb61ca", + "_testId": "urn:uuid:0ddd45a1-7b91-4c6f-b53c-5b411c47ad9e", "cell": { - "columnId": "Digital Bazaar", + "columnId": "Danube Tech", "rowId": "\"proof.type\" field MUST be \"Ed25519Signature2020\" and the associated document MUST include expected contexts." }, "_events": {}, @@ -1606,11 +1119,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "728XFktEK1N1HXmV_UDV3", + "parent": "tY5uwgTlUT8B_tY32qQ2T", "ctx": null, - "_testId": "urn:uuid:6f559234-0d68-43f7-949b-746369dc81b6", + "_testId": "urn:uuid:7db94932-a2a4-4274-85b2-b45acd3984f9", "cell": { - "columnId": "Digital Bazaar", + "columnId": "Danube Tech", "rowId": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified." }, "_events": {}, @@ -1633,11 +1146,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "728XFktEK1N1HXmV_UDV3", + "parent": "tY5uwgTlUT8B_tY32qQ2T", "ctx": null, - "_testId": "urn:uuid:96d9aff3-c44d-4b40-9473-30dd9bc5749c", + "_testId": "urn:uuid:ceb7edbc-41f1-427b-b555-34db64bc0edc", "cell": { - "columnId": "Digital Bazaar", + "columnId": "Danube Tech", "rowId": "If specified (proof.cryptosuite), its value MUST be a string." }, "_events": {}, @@ -1660,11 +1173,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "728XFktEK1N1HXmV_UDV3", + "parent": "tY5uwgTlUT8B_tY32qQ2T", "ctx": null, - "_testId": "urn:uuid:25d5bcec-0d2e-4493-8498-88650439e7bf", + "_testId": "urn:uuid:e6451f20-e836-4e63-be14-03f6006c5928", "cell": { - "columnId": "Digital Bazaar", + "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]." }, "_events": {}, @@ -1674,12 +1187,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 8673, + "_idleStart": 7024, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 1, + "duration": 0, "state": "passed", "speed": "fast" }, @@ -1696,11 +1209,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "728XFktEK1N1HXmV_UDV3", + "parent": "tY5uwgTlUT8B_tY32qQ2T", "ctx": null, - "_testId": "urn:uuid:a34195da-61ce-49d3-a42d-4bc6201683ab", + "_testId": "urn:uuid:483eba77-d67f-4bce-9e5d-6a63b5c3a714", "cell": { - "columnId": "Digital Bazaar", + "columnId": "Danube Tech", "rowId": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL." }, "_events": {}, @@ -1710,7 +1223,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 8674, + "_idleStart": 7025, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -1732,17 +1245,17 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "728XFktEK1N1HXmV_UDV3", + "parent": "tY5uwgTlUT8B_tY32qQ2T", "ctx": null, - "_testId": "urn:uuid:33ff6f84-756d-4d29-86a3-8234872d066c", + "_testId": "urn:uuid:7ea14eff-98f8-4e31-9809-f731aaf5495c", "cell": { - "columnId": "Digital Bazaar", + "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/#:~: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": 1, + "duration": 0, "state": "passed", "speed": "fast" }, @@ -1759,11 +1272,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "728XFktEK1N1HXmV_UDV3", + "parent": "tY5uwgTlUT8B_tY32qQ2T", "ctx": null, - "_testId": "urn:uuid:ce80095f-3dfa-4dcc-a095-50017a218426", + "_testId": "urn:uuid:1e871e53-65bc-40b9-a367-f1a5e02f003e", "cell": { - "columnId": "Digital Bazaar", + "columnId": "Danube Tech", "rowId": "If \"proof.previousProof\" property exists, it MUST be a string value or unordered list of string values." }, "_events": {}, @@ -1785,11 +1298,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "728XFktEK1N1HXmV_UDV3", + "parent": "tY5uwgTlUT8B_tY32qQ2T", "ctx": null, - "_testId": "urn:uuid:993c9d77-69cf-467c-8d45-2d0aad73bff3", + "_testId": "urn:uuid:311f89d8-9ed2-4076-9f6d-ce1a0595766a", "cell": { - "columnId": "Digital Bazaar", + "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." }, "_events": {}, @@ -1799,12 +1312,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 8676, + "_idleStart": 7027, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 1, "state": "passed", "speed": "fast" }, @@ -1821,11 +1334,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "728XFktEK1N1HXmV_UDV3", + "parent": "tY5uwgTlUT8B_tY32qQ2T", "ctx": null, - "_testId": "urn:uuid:c07bf189-2fd8-43cf-9d6b-44c2576dff85", + "_testId": "urn:uuid:f74c4053-154f-4cdb-9c7d-53602abac4b3", "cell": { - "columnId": "Digital Bazaar", + "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": {}, @@ -1835,310 +1348,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 8676, + "_idleStart": 7028, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 102, + "duration": 639, "state": "passed", "speed": "slow" - }, - { - "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": "728XFktEK1N1HXmV_UDV3", - "ctx": null, - "_testId": "urn:uuid:cde9c70e-1d7c-4e5d-b10c-24ab8efa788d", - "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)." - }, - "_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": 8779, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 41, - "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:830509fd-97f0-4a8d-be5d-1e0f5c878956", - "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:830509fd-97f0-4a8d-be5d-1e0f5c878956\",\"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:830509fd-97f0-4a8d-be5d-1e0f5c878956", - "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:830509fd-97f0-4a8d-be5d-1e0f5c878956", - "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:343:18)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" - } - }, - { - "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": "728XFktEK1N1HXmV_UDV3", - "ctx": null, - "_testId": "urn:uuid:2857e91d-9364-4d42-aa8d-fddd1fffed33", - "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." - }, - "_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 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": "728XFktEK1N1HXmV_UDV3", - "ctx": null, - "_testId": "urn:uuid:c569a626-f6be-4ad4-9fea-7cbf8ed5702a", - "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, - "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": "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": "728XFktEK1N1HXmV_UDV3", - "ctx": null, - "_testId": "urn:uuid:9e24c36e-8b29-4c81-b97f-c5a8126fc3e9", - "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." - }, - "_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": "(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": "728XFktEK1N1HXmV_UDV3", - "ctx": null, - "_testId": "urn:uuid:461cad3d-8915-4d80-9aa3-b48e93951330", - "cell": { - "columnId": "Digital Bazaar", - "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" } ], "root": false, @@ -2146,7 +1363,7 @@ "_retries": -1, "_beforeEach": [ { - "title": "\"before each\" hook in \"Digital Bazaar\"", + "title": "\"before each\" hook in \"Danube Tech\"", "body": "function() {\n this.currentTest.cell = {\n columnId,\n rowId: this.currentTest.title\n };\n }", "async": 0, "sync": true, @@ -2157,7 +1374,7 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "728XFktEK1N1HXmV_UDV3", + "parent": "tY5uwgTlUT8B_tY32qQ2T", "ctx": null, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", "originalTitle": "\"before each\" hook", @@ -2169,7 +1386,7 @@ ], "_beforeAll": [ { - "title": "\"before all\" hook in \"Digital Bazaar\"", + "title": "\"before all\" hook in \"Danube Tech\"", "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, @@ -2180,7 +1397,7 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "728XFktEK1N1HXmV_UDV3", + "parent": "tY5uwgTlUT8B_tY32qQ2T", "ctx": null, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", "originalTitle": "\"before all\" hook", @@ -2190,12 +1407,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7901, + "_idleStart": 6366, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 769, + "duration": 655, "_error": null } ], @@ -2207,12 +1424,12 @@ "_onlyTests": [], "_onlySuites": [], "delayed": false, - "parent": "0LD0duBmOdjt9v6fHOMOI", + "parent": "EjF7l5fbQpuntiLjGHCQZ", "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "_testId": "urn:uuid:82828c08-a59f-45bf-b75f-2639390cd02d" + "_testId": "urn:uuid:be13caef-88cf-4649-acb0-90ed20abd616" }, { - "title": "EWF", + "title": "Digital Bazaar", "ctx": null, "suites": [], "tests": [ @@ -2229,11 +1446,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "cW_m5sCcuGcxtRpeevqyG", + "parent": "fIZ8P1PNsYL86CHMG9Soq", "ctx": null, - "_testId": "urn:uuid:c3dad447-6d33-4334-b911-e3ac458938a1", + "_testId": "urn:uuid:543753e3-64d6-4271-aaa5-8094fa693b93", "cell": { - "columnId": "EWF", + "columnId": "Digital Bazaar", "rowId": "When expressing a data integrity proof on an object, a proof property MUST be used." }, "_events": {}, @@ -2256,11 +1473,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "cW_m5sCcuGcxtRpeevqyG", + "parent": "fIZ8P1PNsYL86CHMG9Soq", "ctx": null, - "_testId": "urn:uuid:2df1382b-9827-498a-b2b8-e93f573841ef", + "_testId": "urn:uuid:aba4ecae-85f9-4fc3-9661-cc35660a1e55", "cell": { - "columnId": "EWF", + "columnId": "Digital Bazaar", "rowId": "If present (proof), its value MUST be either a single object, or an unordered set of objects." }, "_events": {}, @@ -2283,11 +1500,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "cW_m5sCcuGcxtRpeevqyG", + "parent": "fIZ8P1PNsYL86CHMG9Soq", "ctx": null, - "_testId": "urn:uuid:dda07da5-eb22-43df-a60c-3f631bafb262", + "_testId": "urn:uuid:51b8a7fd-726a-4357-9c95-ed084c4ca16f", "cell": { - "columnId": "EWF", + "columnId": "Digital Bazaar", "rowId": "(\"proof.id\") An optional identifier for the proof, which MUST be a URL." }, "_events": {}, @@ -2310,11 +1527,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "cW_m5sCcuGcxtRpeevqyG", + "parent": "fIZ8P1PNsYL86CHMG9Soq", "ctx": null, - "_testId": "urn:uuid:35e32a95-c5e9-4939-8785-b0d8ca710870", + "_testId": "urn:uuid:dd35df3f-c281-4760-865b-41a5189ca48d", "cell": { - "columnId": "EWF", + "columnId": "Digital Bazaar", "rowId": "The specific type of proof MUST be specified as a string that maps to a URL." }, "_events": {}, @@ -2324,7 +1541,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9435, + "_idleStart": 9020, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -2346,26 +1563,18 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "cW_m5sCcuGcxtRpeevqyG", + "parent": "fIZ8P1PNsYL86CHMG9Soq", "ctx": null, - "_testId": "urn:uuid:4fdf189a-5b5c-4b3e-8e7b-774f26c60994", + "_testId": "urn:uuid:a58d6cc4-bb27-4a70-98f3-4819e5e8c37e", "cell": { - "columnId": "EWF", + "columnId": "Digital Bazaar", "rowId": "\"proof.type\" field MUST be \"Ed25519Signature2020\" and the associated document MUST include expected contexts." }, "_events": {}, "_eventsCount": 1, "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:135:34)\n at process.processImmediate (node:internal/timers:483:21)" - } + "state": "passed", + "speed": "fast" }, { "type": "test", @@ -2380,11 +1589,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "cW_m5sCcuGcxtRpeevqyG", + "parent": "fIZ8P1PNsYL86CHMG9Soq", "ctx": null, - "_testId": "urn:uuid:a737b12b-c73e-444c-a19f-1b6d07e8cad5", + "_testId": "urn:uuid:be3b9457-c4d6-4b00-8af3-a8a78ab3bc30", "cell": { - "columnId": "EWF", + "columnId": "Digital Bazaar", "rowId": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified." }, "_events": {}, @@ -2407,11 +1616,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "cW_m5sCcuGcxtRpeevqyG", + "parent": "fIZ8P1PNsYL86CHMG9Soq", "ctx": null, - "_testId": "urn:uuid:8e66daa3-7873-432e-bd5e-fd4a40e2b72e", + "_testId": "urn:uuid:054c5167-6a1a-4133-a930-5132bf97c1c2", "cell": { - "columnId": "EWF", + "columnId": "Digital Bazaar", "rowId": "If specified (proof.cryptosuite), its value MUST be a string." }, "_events": {}, @@ -2434,11 +1643,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "cW_m5sCcuGcxtRpeevqyG", + "parent": "fIZ8P1PNsYL86CHMG9Soq", "ctx": null, - "_testId": "urn:uuid:adc99fb8-1a56-4664-abd8-6cd8ac207351", + "_testId": "urn:uuid:18429b2f-b0ea-4552-a860-243ae70c94b9", "cell": { - "columnId": "EWF", + "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]." }, "_events": {}, @@ -2448,7 +1657,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9437, + "_idleStart": 9022, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -2470,11 +1679,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "cW_m5sCcuGcxtRpeevqyG", + "parent": "fIZ8P1PNsYL86CHMG9Soq", "ctx": null, - "_testId": "urn:uuid:00c4b3b1-f81d-40d4-924a-682227e4cfaa", + "_testId": "urn:uuid:19256f1f-f4b6-4cd7-8387-19a7c7b60c38", "cell": { - "columnId": "EWF", + "columnId": "Digital Bazaar", "rowId": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL." }, "_events": {}, @@ -2484,7 +1693,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9439, + "_idleStart": 9024, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -2506,25 +1715,19 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "cW_m5sCcuGcxtRpeevqyG", + "parent": "fIZ8P1PNsYL86CHMG9Soq", "ctx": null, - "_testId": "urn:uuid:cad12905-91b8-442d-9e45-f2069ffab633", + "_testId": "urn:uuid:d07b578b-e7a0-4f7c-8c49-5dd064fba093", "cell": { - "columnId": "EWF", + "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/#:~: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": { - "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:293: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:220:9)\n at process.processImmediate (node:internal/timers:483:21)" - } + "state": "passed", + "speed": "fast" }, { "type": "test", @@ -2539,16 +1742,16 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "cW_m5sCcuGcxtRpeevqyG", + "parent": "fIZ8P1PNsYL86CHMG9Soq", "ctx": null, - "_testId": "urn:uuid:60a2f475-47d6-4651-8e51-85c94ca736aa", + "_testId": "urn:uuid:53ecb530-1634-44b9-8ce0-b4bf397a54ca", "cell": { - "columnId": "EWF", + "columnId": "Digital Bazaar", "rowId": "If \"proof.previousProof\" property exists, it MUST be a string value or unordered list of string values." }, "_events": {}, "_eventsCount": 1, - "duration": 1, + "duration": 0, "state": "passed", "speed": "fast" }, @@ -2565,11 +1768,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "cW_m5sCcuGcxtRpeevqyG", + "parent": "fIZ8P1PNsYL86CHMG9Soq", "ctx": null, - "_testId": "urn:uuid:fe59417f-13be-4db1-8092-116ac152f35f", + "_testId": "urn:uuid:9aa03e26-067d-4b32-9c61-96856cfcdce0", "cell": { - "columnId": "EWF", + "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." }, "_events": {}, @@ -2579,20 +1782,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9441, + "_idleStart": 9025, "_onTimeout": null, "_repeat": null, "_destroyed": true }, "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:239: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:245:9)\n at process.processImmediate (node:internal/timers:483:21)" - } + "state": "passed", + "speed": "fast" }, { "type": "test", @@ -2607,11 +1804,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "cW_m5sCcuGcxtRpeevqyG", + "parent": "fIZ8P1PNsYL86CHMG9Soq", "ctx": null, - "_testId": "urn:uuid:a1513307-30e2-4b79-9a6e-9318efd6a9fc", + "_testId": "urn:uuid:7b893cf9-a297-4750-8bf2-0f7810aecf07", "cell": { - "columnId": "EWF", + "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": {}, @@ -2621,26 +1818,23 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9441, + "_idleStart": 9026, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 305, - "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, 15 Sep 2024 05:01:49 GMT', 'content-type': 'application/json; charset=utf-8', 'content-length': '742', connection: 'keep-alive', 'x-powered-by': 'Express', vary: 'Origin', etag: 'W/\"2e6-Gg3A9QEsk4Xd//c7yHvGgmtmysE\"', 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, 15 Sep 2024 05:01:49 GMT', 'content-type': 'application/json; charset=utf-8', 'content-length': '742', connection: 'keep-alive', 'x-powered-by': 'Express', vary: 'Origin', etag: 'W/\"2e6-Gg3A9QEsk4Xd//c7yHvGgmtmysE\"', 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:104: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:256:7)" - } - }, + "duration": 1009, + "state": "passed", + "speed": "slow" + } + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [ { - "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": "\"before each\" hook in \"Digital Bazaar\"", + "body": "function() {\n this.currentTest.cell = {\n columnId,\n rowId: this.currentTest.title\n };\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -2649,138 +1843,70 @@ "timedOut": false, "_currentRetry": 0, "pending": false, + "type": "hook", + "parent": "fIZ8P1PNsYL86CHMG9Soq", + "ctx": null, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "cW_m5sCcuGcxtRpeevqyG", + "originalTitle": "\"before each\" hook", + "_events": {}, + "_eventsCount": 1, + "duration": 0, + "_error": null + } + ], + "_beforeAll": [ + { + "title": "\"before all\" hook in \"Digital Bazaar\"", + "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": "fIZ8P1PNsYL86CHMG9Soq", "ctx": null, - "_testId": "urn:uuid:c8a34d34-8eae-428b-ae86-f812aaf5025c", - "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)." - }, + "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": 9747, + "_idleStart": 7668, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 179, - "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:04f09198-3704-42e9-897f-22d947d55ab1\",\"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:04f09198-3704-42e9-897f-22d947d55ab1", - "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:343:18)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" - } - }, + "duration": 1351, + "_error": null + } + ], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "EjF7l5fbQpuntiLjGHCQZ", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "_testId": "urn:uuid:95d1861b-9736-4d6b-b120-3962d66cf50d" + }, + { + "title": "EWF", + "ctx": null, + "suites": [], + "tests": [ { "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": "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, @@ -2790,24 +1916,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "cW_m5sCcuGcxtRpeevqyG", + "parent": "VLENnNRhOlTJUOmeUeTTx", "ctx": null, - "_testId": "urn:uuid:d5257eb1-2ead-458d-9ce4-0cb4964bd04b", + "_testId": "urn:uuid:ea905b18-5839-4724-b93c-edd6339f959f", "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": "When expressing a data integrity proof on an object, a proof property MUST be used." }, "_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.", + "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 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": "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, @@ -2817,24 +1943,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "cW_m5sCcuGcxtRpeevqyG", + "parent": "VLENnNRhOlTJUOmeUeTTx", "ctx": null, - "_testId": "urn:uuid:3f2d8c96-5db6-4b39-8513-0a1d3bdd0c3d", + "_testId": "urn:uuid:4c43d4ad-bf12-445c-b9e7-647fb7006ed9", "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": "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/#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/#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": "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": "(\"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, @@ -2844,24 +1970,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "cW_m5sCcuGcxtRpeevqyG", + "parent": "VLENnNRhOlTJUOmeUeTTx", "ctx": null, - "_testId": "urn:uuid:4d60dd61-0b38-49f9-86b5-e517745aa6b9", + "_testId": "urn:uuid:503c4571-bbc1-49dd-9826-367a57631d59", "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." + "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/#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", + "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": "(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 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, @@ -2871,28 +1997,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "cW_m5sCcuGcxtRpeevqyG", + "parent": "VLENnNRhOlTJUOmeUeTTx", "ctx": null, - "_testId": "urn:uuid:00371dce-7559-48eb-b04b-cc37ec77bd65", + "_testId": "urn:uuid:4d48c059-0888-474c-9425-75774d9fdbfc", "cell": { "columnId": "EWF", - "rowId": "(challenge) A string value that SHOULD be included in a proof if a domain is specified." + "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/#verify-proof:~:text=A%20string%20value%20that%20SHOULD%20be%20included%20in%20a%20proof%20if%20a%20domain%20is%20specified.", - "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": 10623, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 1, "state": "passed", "speed": "fast" - } - ], - "root": false, - "pending": false, - "_retries": -1, - "_beforeEach": [ + }, { - "title": "\"before each\" hook in \"EWF\"", - "body": "function() {\n this.currentTest.cell = {\n columnId,\n rowId: this.currentTest.title\n };\n }", + "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, @@ -2901,217 +2032,18 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "type": "hook", - "parent": "cW_m5sCcuGcxtRpeevqyG", - "ctx": null, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "originalTitle": "\"before each\" hook", + "parent": "VLENnNRhOlTJUOmeUeTTx", + "ctx": null, + "_testId": "urn:uuid:372d16a8-7c6a-40f0-b2ca-a0c5e4a7bc34", + "cell": { + "columnId": "EWF", + "rowId": "\"proof.type\" field MUST be \"Ed25519Signature2020\" and the associated document MUST include expected contexts." + }, "_events": {}, "_eventsCount": 1, - "duration": 0, - "_error": null - } - ], - "_beforeAll": [ - { - "title": "\"before all\" hook in \"EWF\"", - "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": "cW_m5sCcuGcxtRpeevqyG", - "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": 8822, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 612, - "_error": null - } - ], - "_afterEach": [], - "_afterAll": [], - "_timeout": 15000, - "_slow": 75, - "_bail": false, - "_onlyTests": [], - "_onlySuites": [], - "delayed": false, - "parent": "0LD0duBmOdjt9v6fHOMOI", - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "_testId": "urn:uuid:cfbbb02e-926e-489d-ac49-cfb79b545f3f" - }, - { - "title": "LearnCard", - "ctx": null, - "suites": [], - "tests": [ - { - "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": "nnEIcBn8RJIHJCXQFU4M_", - "ctx": null, - "_testId": "urn:uuid:4f67ade4-7901-4e52-a10d-e83412aa9b40", - "cell": { - "columnId": "LearnCard", - "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.", - "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": "nnEIcBn8RJIHJCXQFU4M_", - "ctx": null, - "_testId": "urn:uuid:32f4f545-48ab-48f5-86f3-54d9657cbee4", - "cell": { - "columnId": "LearnCard", - "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.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": "nnEIcBn8RJIHJCXQFU4M_", - "ctx": null, - "_testId": "urn:uuid:ff012639-df6d-4188-a8f5-e1b03293e0fb", - "cell": { - "columnId": "LearnCard", - "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 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, - "_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": "nnEIcBn8RJIHJCXQFU4M_", - "ctx": null, - "_testId": "urn:uuid:54b529e1-b325-44c5-bf81-ed4c8d831073", - "cell": { - "columnId": "LearnCard", - "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": 10142, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, "duration": 1, "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:197: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:86: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:86:17)" - } - }, - { - "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": "nnEIcBn8RJIHJCXQFU4M_", - "ctx": null, - "_testId": "urn:uuid:1d21d354-9c44-4ce9-bfa4-c206fcae9732", - "cell": { - "columnId": "LearnCard", - "rowId": "\"proof.type\" field MUST be \"Ed25519Signature2020\" and the associated document MUST include expected contexts." - }, - "_events": {}, - "_eventsCount": 1, - "duration": 0, - "state": "failed", "err": { "name": "AssertionError", "message": "expected false to equal true", @@ -3119,7 +2051,7 @@ "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:142:39)\n at process.processImmediate (node:internal/timers:483:21)" + "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:131:34)\n at process.processImmediate (node:internal/timers:483:21)" } }, { @@ -3135,17 +2067,17 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "nnEIcBn8RJIHJCXQFU4M_", + "parent": "VLENnNRhOlTJUOmeUeTTx", "ctx": null, - "_testId": "urn:uuid:a6c48c2d-225e-4065-8c3f-113ce960f67d", + "_testId": "urn:uuid:4bd50fe2-250d-4a84-b865-3dc4a4805342", "cell": { - "columnId": "LearnCard", + "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, + "duration": 1, "state": "passed", "speed": "fast" }, @@ -3162,11 +2094,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "nnEIcBn8RJIHJCXQFU4M_", + "parent": "VLENnNRhOlTJUOmeUeTTx", "ctx": null, - "_testId": "urn:uuid:262a283f-f955-4628-89cc-27f29e93faca", + "_testId": "urn:uuid:b68242df-a583-486b-84fd-92d040377191", "cell": { - "columnId": "LearnCard", + "columnId": "EWF", "rowId": "If specified (proof.cryptosuite), its value MUST be a string." }, "_events": {}, @@ -3189,11 +2121,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "nnEIcBn8RJIHJCXQFU4M_", + "parent": "VLENnNRhOlTJUOmeUeTTx", "ctx": null, - "_testId": "urn:uuid:d9adbb3b-0881-40a1-856d-e09093546389", + "_testId": "urn:uuid:e34e97c6-d4e7-487d-8d55-351cb0b7f1cb", "cell": { - "columnId": "LearnCard", + "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]." }, "_events": {}, @@ -3203,7 +2135,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10144, + "_idleStart": 10626, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -3225,11 +2157,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "nnEIcBn8RJIHJCXQFU4M_", + "parent": "VLENnNRhOlTJUOmeUeTTx", "ctx": null, - "_testId": "urn:uuid:888fc023-96e1-4961-b50a-d0592466ed54", + "_testId": "urn:uuid:4f3f2193-4b0b-4ee6-b102-3fb24491609a", "cell": { - "columnId": "LearnCard", + "columnId": "EWF", "rowId": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL." }, "_events": {}, @@ -3239,12 +2171,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10145, + "_idleStart": 10627, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 1, "state": "passed", "speed": "fast" }, @@ -3261,19 +2193,25 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "nnEIcBn8RJIHJCXQFU4M_", + "parent": "VLENnNRhOlTJUOmeUeTTx", "ctx": null, - "_testId": "urn:uuid:8fd9e252-9440-4ae9-b118-24d967c292d3", + "_testId": "urn:uuid:e3cc47fc-000e-44b6-a818-701118d77560", "cell": { - "columnId": "LearnCard", + "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." }, "_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" + "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:293: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:216:9)\n at process.processImmediate (node:internal/timers:483:21)" + } }, { "type": "test", @@ -3288,11 +2226,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "nnEIcBn8RJIHJCXQFU4M_", + "parent": "VLENnNRhOlTJUOmeUeTTx", "ctx": null, - "_testId": "urn:uuid:1d3255c2-4681-431f-b9da-d7ffbb9f4c90", + "_testId": "urn:uuid:0c922bc7-fbca-4742-824f-21be56b1e977", "cell": { - "columnId": "LearnCard", + "columnId": "EWF", "rowId": "If \"proof.previousProof\" property exists, it MUST be a string value or unordered list of string values." }, "_events": {}, @@ -3314,11 +2252,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "nnEIcBn8RJIHJCXQFU4M_", + "parent": "VLENnNRhOlTJUOmeUeTTx", "ctx": null, - "_testId": "urn:uuid:dce494db-eb29-4efe-a9a1-0dcd0b34140e", + "_testId": "urn:uuid:ae4f921a-78ad-4ffd-ae1e-6fa93040032b", "cell": { - "columnId": "LearnCard", + "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." }, "_events": {}, @@ -3328,14 +2266,20 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10147, + "_idleStart": 10628, "_onTimeout": null, "_repeat": null, "_destroyed": true }, "duration": 1, - "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:239: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:241:9)\n at process.processImmediate (node:internal/timers:483:21)" + } }, { "type": "test", @@ -3350,11 +2294,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "nnEIcBn8RJIHJCXQFU4M_", + "parent": "VLENnNRhOlTJUOmeUeTTx", "ctx": null, - "_testId": "urn:uuid:9a05a682-f658-4105-bf5d-cc25a3ed2511", + "_testId": "urn:uuid:a54059ad-981f-41b2-bb6d-ae8896971dfb", "cell": { - "columnId": "LearnCard", + "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": {}, @@ -3364,26 +2308,30 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10147, + "_idleStart": 10629, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 102, + "duration": 103, "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, 15 Sep 2024 05:01:49 GMT', 'content-type': 'application/json; charset=utf-8', 'content-length': '758', connection: 'keep-alive', etag: 'W/\"2f6-MKhNsB9PGFVJh00ltNfbgb+FX+A\"', 'x-powered-by': 'Express', 'apigw-requestid': 'eIWJqjzpIAMEZhw=', 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, 22 Sep 2024 05:01:47 GMT', 'content-type': 'application/json; charset=utf-8', 'content-length': '742', connection: 'keep-alive', 'x-powered-by': 'Express', vary: 'Origin', etag: 'W/\"2e6-VvbXb0cRNcjT6cV4ulsupX932gI\"', 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, 15 Sep 2024 05:01:49 GMT', 'content-type': 'application/json; charset=utf-8', 'content-length': '758', connection: 'keep-alive', etag: 'W/\"2f6-MKhNsB9PGFVJh00ltNfbgb+FX+A\"', 'x-powered-by': 'Express', 'apigw-requestid': 'eIWJqjzpIAMEZhw=', 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:104: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:256:7)" + "stack": "AssertionError: Expected issuer to error when VC has an undefined type.: expected Response { status: 201, statusText: 'Created', headers: Headers { date: 'Sun, 22 Sep 2024 05:01:47 GMT', 'content-type': 'application/json; charset=utf-8', 'content-length': '742', connection: 'keep-alive', 'x-powered-by': 'Express', vary: 'Origin', etag: 'W/\"2e6-VvbXb0cRNcjT6cV4ulsupX932gI\"', 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:104: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:252:7)" } - }, + } + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [ { - "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": "\"before each\" hook in \"EWF\"", + "body": "function() {\n this.currentTest.cell = {\n columnId,\n rowId: this.currentTest.title\n };\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -3392,257 +2340,11 @@ "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": "nnEIcBn8RJIHJCXQFU4M_", + "type": "hook", + "parent": "VLENnNRhOlTJUOmeUeTTx", "ctx": null, - "_testId": "urn:uuid:5f61a607-240e-414d-a7b7-8e7d6e5a40d6", - "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)." - }, - "_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": 10249, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 55, - "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:964359f5-bb0e-4860-9332-c3181e54d2ab\",\"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:964359f5-bb0e-4860-9332-c3181e54d2ab", - "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:343:18)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" - } - }, - { - "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": "nnEIcBn8RJIHJCXQFU4M_", - "ctx": null, - "_testId": "urn:uuid:5c7ac541-219e-46d1-b6d9-cf1e554df50b", - "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." - }, - "_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 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": "nnEIcBn8RJIHJCXQFU4M_", - "ctx": null, - "_testId": "urn:uuid:5b256314-2da7-4c9e-a4cd-62253936842f", - "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." - }, - "_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": "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": "nnEIcBn8RJIHJCXQFU4M_", - "ctx": null, - "_testId": "urn:uuid:775e9779-d093-4796-ade9-e6297898e149", - "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." - }, - "_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": "(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": "nnEIcBn8RJIHJCXQFU4M_", - "ctx": null, - "_testId": "urn:uuid:3f8878f9-797b-426f-bde5-938dc48e35b1", - "cell": { - "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/#verify-proof:~:text=A%20string%20value%20that%20SHOULD%20be%20included%20in%20a%20proof%20if%20a%20domain%20is%20specified.", - "duration": 0, - "state": "passed", - "speed": "fast" - } - ], - "root": false, - "pending": false, - "_retries": -1, - "_beforeEach": [ - { - "title": "\"before each\" hook in \"LearnCard\"", - "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": "nnEIcBn8RJIHJCXQFU4M_", - "ctx": null, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "originalTitle": "\"before each\" hook", + "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, "duration": 0, @@ -3651,7 +2353,7 @@ ], "_beforeAll": [ { - "title": "\"before all\" hook in \"LearnCard\"", + "title": "\"before all\" hook in \"EWF\"", "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, @@ -3662,7 +2364,7 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "nnEIcBn8RJIHJCXQFU4M_", + "parent": "VLENnNRhOlTJUOmeUeTTx", "ctx": null, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", "originalTitle": "\"before all\" hook", @@ -3672,12 +2374,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9928, + "_idleStart": 10035, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 213, + "duration": 586, "_error": null } ], @@ -3689,12 +2391,12 @@ "_onlyTests": [], "_onlySuites": [], "delayed": false, - "parent": "0LD0duBmOdjt9v6fHOMOI", + "parent": "EjF7l5fbQpuntiLjGHCQZ", "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "_testId": "urn:uuid:f5b1c98c-2492-4b95-b870-d34d5c0a563b" + "_testId": "urn:uuid:23a6dd6f-f4d2-48f7-8ca8-55ab4df98a94" }, { - "title": "OpSecId", + "title": "LearnCard", "ctx": null, "suites": [], "tests": [ @@ -3711,17 +2413,17 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "YJs5thSLW9bKfuQ1vMFqV", + "parent": "uDrPa7KZsPxN1LfkOVPuP", "ctx": null, - "_testId": "urn:uuid:ad11d99e-1d41-44eb-8ad6-93ffc38c2cd8", + "_testId": "urn:uuid:6bab6707-7abd-40a4-962c-b4f952e2abf7", "cell": { - "columnId": "OpSecId", + "columnId": "LearnCard", "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, + "duration": 1, "state": "passed", "speed": "fast" }, @@ -3738,11 +2440,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "YJs5thSLW9bKfuQ1vMFqV", + "parent": "uDrPa7KZsPxN1LfkOVPuP", "ctx": null, - "_testId": "urn:uuid:3678c951-1017-446e-949f-168b834b8cc3", + "_testId": "urn:uuid:2c3ec46f-389f-46a3-ba59-6f4467b5c304", "cell": { - "columnId": "OpSecId", + "columnId": "LearnCard", "rowId": "If present (proof), its value MUST be either a single object, or an unordered set of objects." }, "_events": {}, @@ -3765,11 +2467,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "YJs5thSLW9bKfuQ1vMFqV", + "parent": "uDrPa7KZsPxN1LfkOVPuP", "ctx": null, - "_testId": "urn:uuid:2bd385cb-bb32-40ee-a053-20b4b5acf9df", + "_testId": "urn:uuid:1b128885-98b6-4a04-98b2-43175b9eed6d", "cell": { - "columnId": "OpSecId", + "columnId": "LearnCard", "rowId": "(\"proof.id\") An optional identifier for the proof, which MUST be a URL." }, "_events": {}, @@ -3792,11 +2494,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "YJs5thSLW9bKfuQ1vMFqV", + "parent": "uDrPa7KZsPxN1LfkOVPuP", "ctx": null, - "_testId": "urn:uuid:3ac351d9-5297-4a60-9dc1-77a62ac51b9e", + "_testId": "urn:uuid:a71fd370-424b-4c68-be14-e587555234e4", "cell": { - "columnId": "OpSecId", + "columnId": "LearnCard", "rowId": "The specific type of proof MUST be specified as a string that maps to a URL." }, "_events": {}, @@ -3806,14 +2508,24 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10541, + "_idleStart": 10922, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, - "state": "passed", - "speed": "fast" + "duration": 1, + "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:197: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:82: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:82:17)" + } }, { "type": "test", @@ -3828,18 +2540,26 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "YJs5thSLW9bKfuQ1vMFqV", + "parent": "uDrPa7KZsPxN1LfkOVPuP", "ctx": null, - "_testId": "urn:uuid:00ac813f-52d1-48b2-932e-0ecf565111cb", + "_testId": "urn:uuid:e28301e7-1486-438d-8531-06959ffa865d", "cell": { - "columnId": "OpSecId", + "columnId": "LearnCard", "rowId": "\"proof.type\" field MUST be \"Ed25519Signature2020\" and the associated document MUST include expected contexts." }, "_events": {}, "_eventsCount": 1, "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:138:39)\n at process.processImmediate (node:internal/timers:483:21)" + } }, { "type": "test", @@ -3854,11 +2574,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "YJs5thSLW9bKfuQ1vMFqV", + "parent": "uDrPa7KZsPxN1LfkOVPuP", "ctx": null, - "_testId": "urn:uuid:eebba16f-a853-4180-9243-2b4423f288ed", + "_testId": "urn:uuid:84ba9f62-bd2c-41b5-a99f-180701352d48", "cell": { - "columnId": "OpSecId", + "columnId": "LearnCard", "rowId": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified." }, "_events": {}, @@ -3881,11 +2601,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "YJs5thSLW9bKfuQ1vMFqV", + "parent": "uDrPa7KZsPxN1LfkOVPuP", "ctx": null, - "_testId": "urn:uuid:119aecf4-70ff-4754-b797-2bffb38cfcf4", + "_testId": "urn:uuid:a8ccf3ea-83e6-4fc4-881d-61a0e8ef623a", "cell": { - "columnId": "OpSecId", + "columnId": "LearnCard", "rowId": "If specified (proof.cryptosuite), its value MUST be a string." }, "_events": {}, @@ -3908,11 +2628,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "YJs5thSLW9bKfuQ1vMFqV", + "parent": "uDrPa7KZsPxN1LfkOVPuP", "ctx": null, - "_testId": "urn:uuid:2a5fa18d-ad32-4eff-85b9-946cacee4e38", + "_testId": "urn:uuid:e0594648-8f4f-43da-b9cb-052df195dd33", "cell": { - "columnId": "OpSecId", + "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]." }, "_events": {}, @@ -3922,12 +2642,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10543, + "_idleStart": 10925, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 1, "state": "passed", "speed": "fast" }, @@ -3944,11 +2664,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "YJs5thSLW9bKfuQ1vMFqV", + "parent": "uDrPa7KZsPxN1LfkOVPuP", "ctx": null, - "_testId": "urn:uuid:1d2c8dd8-aaf8-4594-a675-c19ab82e1e02", + "_testId": "urn:uuid:67b6550a-35d9-4e18-8640-5069c1952b2a", "cell": { - "columnId": "OpSecId", + "columnId": "LearnCard", "rowId": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL." }, "_events": {}, @@ -3958,7 +2678,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10544, + "_idleStart": 10926, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -3980,11 +2700,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "YJs5thSLW9bKfuQ1vMFqV", + "parent": "uDrPa7KZsPxN1LfkOVPuP", "ctx": null, - "_testId": "urn:uuid:1f7c3324-1931-4a92-bc6e-8eceefaacc18", + "_testId": "urn:uuid:0c5ecd83-84e4-4879-8763-f4648f5d674c", "cell": { - "columnId": "OpSecId", + "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": {}, @@ -4007,11 +2727,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "YJs5thSLW9bKfuQ1vMFqV", + "parent": "uDrPa7KZsPxN1LfkOVPuP", "ctx": null, - "_testId": "urn:uuid:8592f87c-380a-4054-b9a2-08cec21d067d", + "_testId": "urn:uuid:a7ebb739-97d3-4744-b7d6-c96770f3cee7", "cell": { - "columnId": "OpSecId", + "columnId": "LearnCard", "rowId": "If \"proof.previousProof\" property exists, it MUST be a string value or unordered list of string values." }, "_events": {}, @@ -4033,11 +2753,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "YJs5thSLW9bKfuQ1vMFqV", + "parent": "uDrPa7KZsPxN1LfkOVPuP", "ctx": null, - "_testId": "urn:uuid:15cb6c38-ba74-46e3-bc67-8a1519d49d14", + "_testId": "urn:uuid:19995425-d639-4d52-b8c2-e6c6311c075c", "cell": { - "columnId": "OpSecId", + "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." }, "_events": {}, @@ -4047,7 +2767,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10545, + "_idleStart": 10927, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -4069,11 +2789,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "YJs5thSLW9bKfuQ1vMFqV", + "parent": "uDrPa7KZsPxN1LfkOVPuP", "ctx": null, - "_testId": "urn:uuid:8588a9ce-f6cf-425e-99f7-fc1bd65db32a", + "_testId": "urn:uuid:ac2c485a-5eaa-465f-9ae6-91520585194a", "cell": { - "columnId": "OpSecId", + "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": {}, @@ -4083,26 +2803,30 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10545, + "_idleStart": 10928, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 47, + "duration": 103, "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': '797', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 15 Sep 2024 05:01:49 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 issuer to error when VC has an undefined type.: expected Response { status: 201, statusText: 'Created', headers: Headers { date: 'Sun, 22 Sep 2024 05:01:47 GMT', 'content-type': 'application/json; charset=utf-8', 'content-length': '758', connection: 'keep-alive', etag: 'W/\"2f6-5dCWkl/WNyvWiQKaXeH7t27AkSc\"', 'x-powered-by': 'Express', 'apigw-requestid': 'efatTgkwIAMESHg=', 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': '797', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 15 Sep 2024 05:01:49 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:104: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:256:7)" + "stack": "AssertionError: Expected issuer to error when VC has an undefined type.: expected Response { status: 201, statusText: 'Created', headers: Headers { date: 'Sun, 22 Sep 2024 05:01:47 GMT', 'content-type': 'application/json; charset=utf-8', 'content-length': '758', connection: 'keep-alive', etag: 'W/\"2f6-5dCWkl/WNyvWiQKaXeH7t27AkSc\"', 'x-powered-by': 'Express', 'apigw-requestid': 'efatTgkwIAMESHg=', 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:104: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:252:7)" } - }, + } + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [ { - "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": "\"before each\" hook in \"LearnCard\"", + "body": "function() {\n this.currentTest.cell = {\n columnId,\n rowId: this.currentTest.title\n };\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -4111,271 +2835,11 @@ "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": "YJs5thSLW9bKfuQ1vMFqV", + "type": "hook", + "parent": "uDrPa7KZsPxN1LfkOVPuP", "ctx": null, - "_testId": "urn:uuid:e134098f-7b8d-46ec-b8fe-93855cc20911", - "cell": { - "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": 10593, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 31, - "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:5e8c1503-c319-4162-974c-6aa37455ef41\",\"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:5e8c1503-c319-4162-974c-6aa37455ef41", - "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:343:18)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" - } - }, - { - "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": "YJs5thSLW9bKfuQ1vMFqV", - "ctx": null, - "_testId": "urn:uuid:238387d3-08b8-4f1b-a8db-af95f7ff4f05", - "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": "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": "YJs5thSLW9bKfuQ1vMFqV", - "ctx": null, - "_testId": "urn:uuid:a62e38d1-90fc-4cad-bcfc-788b27e628f3", - "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, - "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": "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": "YJs5thSLW9bKfuQ1vMFqV", - "ctx": null, - "_testId": "urn:uuid:7d91cb5c-35af-4105-8617-1c6540a135c5", - "cell": { - "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": {}, - "_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": "(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": "YJs5thSLW9bKfuQ1vMFqV", - "ctx": null, - "_testId": "urn:uuid:037f105c-b1e2-4831-a100-e781783bc4c5", - "cell": { - "columnId": "OpSecId", - "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" - } - ], - "root": false, - "pending": false, - "_retries": -1, - "_beforeEach": [ - { - "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, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "type": "hook", - "parent": "YJs5thSLW9bKfuQ1vMFqV", - "ctx": null, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "originalTitle": "\"before each\" hook", + "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, "duration": 0, @@ -4384,7 +2848,7 @@ ], "_beforeAll": [ { - "title": "\"before all\" hook in \"OpSecId\"", + "title": "\"before all\" hook in \"LearnCard\"", "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, @@ -4395,7 +2859,7 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "YJs5thSLW9bKfuQ1vMFqV", + "parent": "uDrPa7KZsPxN1LfkOVPuP", "ctx": null, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", "originalTitle": "\"before all\" hook", @@ -4405,12 +2869,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10305, + "_idleStart": 10732, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 235, + "duration": 188, "_error": null } ], @@ -4422,9 +2886,9 @@ "_onlyTests": [], "_onlySuites": [], "delayed": false, - "parent": "0LD0duBmOdjt9v6fHOMOI", + "parent": "EjF7l5fbQpuntiLjGHCQZ", "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "_testId": "urn:uuid:3377b516-12c6-4bd0-9d6b-b689c9ea3b5d" + "_testId": "urn:uuid:6edb336f-60f9-4dbd-95ff-a4f8ac52b367" }, { "title": "SpruceID", @@ -4444,9 +2908,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "VO2RMwyXVwXd48t8IXe1B", + "parent": "avC0UwHNDChNlkpDbFijO", "ctx": null, - "_testId": "urn:uuid:bc44b996-5ea0-437d-91cb-43270dd5a788", + "_testId": "urn:uuid:0093a9ff-340b-4061-becf-5073d419a0b2", "cell": { "columnId": "SpruceID", "rowId": "When expressing a data integrity proof on an object, a proof property MUST be used." @@ -4471,9 +2935,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "VO2RMwyXVwXd48t8IXe1B", + "parent": "avC0UwHNDChNlkpDbFijO", "ctx": null, - "_testId": "urn:uuid:e49a23e2-b0eb-4d81-9fb0-8bc6cd866a42", + "_testId": "urn:uuid:6ba13a56-c72a-46ea-808a-82575753c43a", "cell": { "columnId": "SpruceID", "rowId": "If present (proof), its value MUST be either a single object, or an unordered set of objects." @@ -4481,7 +2945,7 @@ "_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" }, @@ -4498,9 +2962,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "VO2RMwyXVwXd48t8IXe1B", + "parent": "avC0UwHNDChNlkpDbFijO", "ctx": null, - "_testId": "urn:uuid:9fdfa689-ed74-4edf-9f29-77fde4c5a463", + "_testId": "urn:uuid:044b26f1-cfc9-466c-b4cd-864ceebdeae2", "cell": { "columnId": "SpruceID", "rowId": "(\"proof.id\") An optional identifier for the proof, which MUST be a URL." @@ -4525,9 +2989,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "VO2RMwyXVwXd48t8IXe1B", + "parent": "avC0UwHNDChNlkpDbFijO", "ctx": null, - "_testId": "urn:uuid:4c045d5a-03f4-486a-b6d7-b652f4a55977", + "_testId": "urn:uuid:fbdd53cd-1e31-4879-89db-53d5723754a9", "cell": { "columnId": "SpruceID", "rowId": "The specific type of proof MUST be specified as a string that maps to a URL." @@ -4539,12 +3003,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10706, + "_idleStart": 11143, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 1, "state": "passed", "speed": "fast" }, @@ -4561,9 +3025,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "VO2RMwyXVwXd48t8IXe1B", + "parent": "avC0UwHNDChNlkpDbFijO", "ctx": null, - "_testId": "urn:uuid:8e81852f-3bac-4908-8c7f-1742d5e8a5b0", + "_testId": "urn:uuid:1193756e-714c-457c-9aca-257dd70badd8", "cell": { "columnId": "SpruceID", "rowId": "\"proof.type\" field MUST be \"Ed25519Signature2020\" and the associated document MUST include expected contexts." @@ -4587,9 +3051,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "VO2RMwyXVwXd48t8IXe1B", + "parent": "avC0UwHNDChNlkpDbFijO", "ctx": null, - "_testId": "urn:uuid:39bb6c36-d200-4b40-b36f-90b1bf2475e5", + "_testId": "urn:uuid:ec016e75-b969-4a63-a7de-ead29d05c531", "cell": { "columnId": "SpruceID", "rowId": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified." @@ -4614,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": "VO2RMwyXVwXd48t8IXe1B", + "parent": "avC0UwHNDChNlkpDbFijO", "ctx": null, - "_testId": "urn:uuid:5a51a0de-8ead-426f-acb5-1bb96b970dc8", + "_testId": "urn:uuid:9e579196-b113-4775-9fd3-b35c941148cc", "cell": { "columnId": "SpruceID", "rowId": "If specified (proof.cryptosuite), its value MUST be a string." @@ -4641,9 +3105,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "VO2RMwyXVwXd48t8IXe1B", + "parent": "avC0UwHNDChNlkpDbFijO", "ctx": null, - "_testId": "urn:uuid:e07095b7-dbe2-42dd-bb18-1fb0bed1962e", + "_testId": "urn:uuid:c7b5e3f7-cb33-47bb-a163-9c529de8f8d7", "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]." @@ -4655,7 +3119,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10707, + "_idleStart": 11145, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -4677,9 +3141,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "VO2RMwyXVwXd48t8IXe1B", + "parent": "avC0UwHNDChNlkpDbFijO", "ctx": null, - "_testId": "urn:uuid:0b93fc56-81cd-43fe-bdce-7d8cd84f86f7", + "_testId": "urn:uuid:63d97a7d-a73d-4492-8588-36bca48f90ac", "cell": { "columnId": "SpruceID", "rowId": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL." @@ -4691,12 +3155,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10708, + "_idleStart": 11146, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 1, + "duration": 0, "state": "passed", "speed": "fast" }, @@ -4713,9 +3177,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "VO2RMwyXVwXd48t8IXe1B", + "parent": "avC0UwHNDChNlkpDbFijO", "ctx": null, - "_testId": "urn:uuid:924c1a4e-e988-4358-9275-51284f75c1b4", + "_testId": "urn:uuid:b3b84006-2ab5-49ff-88a6-a9cc681437f5", "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." @@ -4740,9 +3204,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "VO2RMwyXVwXd48t8IXe1B", + "parent": "avC0UwHNDChNlkpDbFijO", "ctx": null, - "_testId": "urn:uuid:1f90695c-2e84-4b64-85d3-b200c34466ee", + "_testId": "urn:uuid:b53318cb-a9dd-46e6-adfc-a478bdce5dad", "cell": { "columnId": "SpruceID", "rowId": "If \"proof.previousProof\" property exists, it MUST be a string value or unordered list of string values." @@ -4766,9 +3230,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "VO2RMwyXVwXd48t8IXe1B", + "parent": "avC0UwHNDChNlkpDbFijO", "ctx": null, - "_testId": "urn:uuid:150b8413-71e4-402a-a606-2ac763498525", + "_testId": "urn:uuid:adb713fb-4e94-40e1-897c-1e2db1b4dd5b", "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." @@ -4780,7 +3244,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10710, + "_idleStart": 11147, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -4802,9 +3266,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "VO2RMwyXVwXd48t8IXe1B", + "parent": "avC0UwHNDChNlkpDbFijO", "ctx": null, - "_testId": "urn:uuid:0ed47a4a-9417-4804-9f96-b0199bc41788", + "_testId": "urn:uuid:3eefcbac-5a0f-43b5-b508-03c0edb411f9", "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." @@ -4816,19 +3280,23 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10710, + "_idleStart": 11148, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 100, + "duration": 71, "state": "passed", - "speed": "slow" - }, + "speed": "medium" + } + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [ { - "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": "\"before each\" hook in \"SpruceID\"", + "body": "function() {\n this.currentTest.cell = {\n columnId,\n rowId: this.currentTest.title\n };\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -4837,258 +3305,11 @@ "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": "VO2RMwyXVwXd48t8IXe1B", + "type": "hook", + "parent": "avC0UwHNDChNlkpDbFijO", "ctx": null, - "_testId": "urn:uuid:7b4ebc80-2009-4527-a460-fbef2337fc63", - "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": 10810, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "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", - "showDiff": false, - "actual": { - "response": {}, - "request": {}, - "options": { - "credentials": "same-origin", - "headers": {}, - "body": "{\"credential\":{\"id\":\"urn:uuid:5117e37d-f71e-4932-9f63-fea5d329eecb\",\"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:5117e37d-f71e-4932-9f63-fea5d329eecb", - "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:343:18)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" - } - }, - { - "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": "VO2RMwyXVwXd48t8IXe1B", - "ctx": null, - "_testId": "urn:uuid:5c8c64d1-411e-44a0-a22c-06dc6747211b", - "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" - }, - { - "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": "VO2RMwyXVwXd48t8IXe1B", - "ctx": null, - "_testId": "urn:uuid:fa9b2a97-d027-40ec-ab77-70a91a8175c3", - "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." - }, - "_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": "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": "VO2RMwyXVwXd48t8IXe1B", - "ctx": null, - "_testId": "urn:uuid:c79ce6cd-4d3e-4d0b-ad0c-cb44187a4a67", - "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." - }, - "_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": "(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": "VO2RMwyXVwXd48t8IXe1B", - "ctx": null, - "_testId": "urn:uuid:31806010-d4ff-4e7e-aa86-73a73d4d05a3", - "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" - } - ], - "root": false, - "pending": false, - "_retries": -1, - "_beforeEach": [ - { - "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, - "_timeout": 15000, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "type": "hook", - "parent": "VO2RMwyXVwXd48t8IXe1B", - "ctx": null, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "originalTitle": "\"before each\" hook", + "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, "duration": 0, @@ -5108,7 +3329,7 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "VO2RMwyXVwXd48t8IXe1B", + "parent": "avC0UwHNDChNlkpDbFijO", "ctx": null, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", "originalTitle": "\"before all\" hook", @@ -5118,12 +3339,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10627, + "_idleStart": 11031, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 78, + "duration": 111, "_error": null } ], @@ -5135,9 +3356,9 @@ "_onlyTests": [], "_onlySuites": [], "delayed": false, - "parent": "0LD0duBmOdjt9v6fHOMOI", + "parent": "EjF7l5fbQpuntiLjGHCQZ", "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "_testId": "urn:uuid:7e9c37d6-9193-40d8-8a47-ab4581b1aad7" + "_testId": "urn:uuid:65630cdc-9357-4278-9304-d0804e5a44a4" }, { "title": "Trinsic", @@ -5157,9 +3378,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "JnHIhvZh4PEjUNava_pb9", + "parent": "gOUuRVOzEs7tYiZyr8hi2", "ctx": null, - "_testId": "urn:uuid:f0946996-3ae9-44d1-a6c1-05c8257a3ed9", + "_testId": "urn:uuid:d2c9b7f6-3bfa-4467-9b4a-756fe412db6c", "cell": { "columnId": "Trinsic", "rowId": "When expressing a data integrity proof on an object, a proof property MUST be used." @@ -5184,9 +3405,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "JnHIhvZh4PEjUNava_pb9", + "parent": "gOUuRVOzEs7tYiZyr8hi2", "ctx": null, - "_testId": "urn:uuid:405643a9-4d6a-4e55-9470-c7b66ff2ea91", + "_testId": "urn:uuid:96962468-8fef-4939-8adc-2f584a1b711f", "cell": { "columnId": "Trinsic", "rowId": "If present (proof), its value MUST be either a single object, or an unordered set of objects." @@ -5211,9 +3432,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "JnHIhvZh4PEjUNava_pb9", + "parent": "gOUuRVOzEs7tYiZyr8hi2", "ctx": null, - "_testId": "urn:uuid:21281340-a304-4099-81ec-00091518b55c", + "_testId": "urn:uuid:1f213c76-62de-4483-a6e7-f1904f0a3b75", "cell": { "columnId": "Trinsic", "rowId": "(\"proof.id\") An optional identifier for the proof, which MUST be a URL." @@ -5238,9 +3459,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "JnHIhvZh4PEjUNava_pb9", + "parent": "gOUuRVOzEs7tYiZyr8hi2", "ctx": null, - "_testId": "urn:uuid:c75de50f-05b4-412c-a4e9-a55f5a771b39", + "_testId": "urn:uuid:a3e247b0-afaf-4a71-8d7c-744a6934a5c3", "cell": { "columnId": "Trinsic", "rowId": "The specific type of proof MUST be specified as a string that maps to a URL." @@ -5252,12 +3473,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 11356, + "_idleStart": 11807, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 1, + "duration": 0, "state": "passed", "speed": "fast" }, @@ -5274,16 +3495,16 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "JnHIhvZh4PEjUNava_pb9", + "parent": "gOUuRVOzEs7tYiZyr8hi2", "ctx": null, - "_testId": "urn:uuid:7ad11d80-568f-457c-9448-a9a75ed04bbf", + "_testId": "urn:uuid:313de871-7888-4234-b5b7-cf466fc0e633", "cell": { "columnId": "Trinsic", "rowId": "\"proof.type\" field MUST be \"Ed25519Signature2020\" and the associated document MUST include expected contexts." }, "_events": {}, "_eventsCount": 1, - "duration": 0, + "duration": 1, "state": "passed", "speed": "fast" }, @@ -5300,9 +3521,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "JnHIhvZh4PEjUNava_pb9", + "parent": "gOUuRVOzEs7tYiZyr8hi2", "ctx": null, - "_testId": "urn:uuid:dc0bf635-6c76-4021-8533-6d0c4c7f4597", + "_testId": "urn:uuid:9542057f-7bf5-46d4-bafa-3f75fda27fae", "cell": { "columnId": "Trinsic", "rowId": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified." @@ -5327,9 +3548,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "JnHIhvZh4PEjUNava_pb9", + "parent": "gOUuRVOzEs7tYiZyr8hi2", "ctx": null, - "_testId": "urn:uuid:7f78bc7c-617a-40ae-994e-9b45e6cb1cbd", + "_testId": "urn:uuid:de59c985-973d-4ffb-aa5d-9ca66bc9250a", "cell": { "columnId": "Trinsic", "rowId": "If specified (proof.cryptosuite), its value MUST be a string." @@ -5354,9 +3575,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "JnHIhvZh4PEjUNava_pb9", + "parent": "gOUuRVOzEs7tYiZyr8hi2", "ctx": null, - "_testId": "urn:uuid:a92112ed-b0b2-416a-a9c2-b69091eef37c", + "_testId": "urn:uuid:be8e5caf-0eec-4be3-bf44-646d463404a7", "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]." @@ -5368,7 +3589,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 11359, + "_idleStart": 11808, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -5390,9 +3611,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "JnHIhvZh4PEjUNava_pb9", + "parent": "gOUuRVOzEs7tYiZyr8hi2", "ctx": null, - "_testId": "urn:uuid:bd5153b6-4846-4e60-9bd6-3c0625b86da2", + "_testId": "urn:uuid:99f3c4a4-c288-4506-b4d4-f00ed91308f7", "cell": { "columnId": "Trinsic", "rowId": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL." @@ -5404,7 +3625,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 11360, + "_idleStart": 11809, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -5426,9 +3647,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "JnHIhvZh4PEjUNava_pb9", + "parent": "gOUuRVOzEs7tYiZyr8hi2", "ctx": null, - "_testId": "urn:uuid:61c3375e-889a-443e-ad3a-e06656e1897b", + "_testId": "urn:uuid:8e9ca589-8f70-4a01-acff-d2975cc3c217", "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." @@ -5453,9 +3674,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "JnHIhvZh4PEjUNava_pb9", + "parent": "gOUuRVOzEs7tYiZyr8hi2", "ctx": null, - "_testId": "urn:uuid:b53dd381-3111-4000-b90c-73a86a35c3ea", + "_testId": "urn:uuid:21066183-a642-4146-a143-e5f6286de0c6", "cell": { "columnId": "Trinsic", "rowId": "If \"proof.previousProof\" property exists, it MUST be a string value or unordered list of string values." @@ -5479,9 +3700,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "JnHIhvZh4PEjUNava_pb9", + "parent": "gOUuRVOzEs7tYiZyr8hi2", "ctx": null, - "_testId": "urn:uuid:dfc8733d-0537-48ff-a7cf-a35156fc451c", + "_testId": "urn:uuid:fc4d772c-aebe-4589-89f4-ea00ed10070d", "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." @@ -5493,7 +3714,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 11361, + "_idleStart": 11811, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -5515,9 +3736,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "JnHIhvZh4PEjUNava_pb9", + "parent": "gOUuRVOzEs7tYiZyr8hi2", "ctx": null, - "_testId": "urn:uuid:5f7f28b9-e981-482f-8c98-3d0ff7a86af0", + "_testId": "urn:uuid:c2068455-ee5a-4d5b-8a47-abfb95c1e32a", "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." @@ -5529,26 +3750,30 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 11361, + "_idleStart": 11811, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 119, + "duration": 99, "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, 15 Sep 2024 05:01:50 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': '99', 'cf-cache-status': 'DYNAMIC', 'report-to': '{\"endpoints\":[{\"url\":\"https:\\\\/\\\\/a.nel.cloudflare.com\\\\/report\\\\/v4?s=OgnCprwONCBhTIF2A9Vp89NOAsDI93LbPW7BAqOM2dxWuzJD2nsh8PJX8FCUHMWX1W0RtVvS3TpIXalfm2qBt6x31TN0uay6XbMe3SxjRd2bXcVEqGdW4Rvd82xElmDbp0BW0qbA1a%2BQJN50c1Iv\"}],\"group\":\"cf-nel\",\"max_age\":604800}', nel: '{\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}', server: 'cloudflare', 'cf-ray': '8c360fa7fca9c947-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", + "message": "Expected issuer to error when VC has an undefined type.: expected Response { status: 200, statusText: 'OK', headers: Headers { date: 'Sun, 22 Sep 2024 05:01:48 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': '76', 'cf-cache-status': 'DYNAMIC', 'report-to': '{\"endpoints\":[{\"url\":\"https:\\\\/\\\\/a.nel.cloudflare.com\\\\/report\\\\/v4?s=96KFT762vqJ5OyQJEy3QdTYpYp6D4Ds6qkN%2FX96uQQiPh2XJPdlNLcX5El%2FZ2w3OW9kzfmj5RIypet1RhLTvlhusx6UdGhK3TFmot9WP6ySdxwqU%2BvrMkTm7SL924n3rc03w%2BLLZqWZ%2B1WjFoZdI\"}],\"group\":\"cf-nel\",\"max_age\":604800}', nel: '{\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}', server: 'cloudflare', 'cf-ray': '8c6fbd37fdcb823c-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, 15 Sep 2024 05:01:50 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': '99', 'cf-cache-status': 'DYNAMIC', 'report-to': '{\"endpoints\":[{\"url\":\"https:\\\\/\\\\/a.nel.cloudflare.com\\\\/report\\\\/v4?s=OgnCprwONCBhTIF2A9Vp89NOAsDI93LbPW7BAqOM2dxWuzJD2nsh8PJX8FCUHMWX1W0RtVvS3TpIXalfm2qBt6x31TN0uay6XbMe3SxjRd2bXcVEqGdW4Rvd82xElmDbp0BW0qbA1a%2BQJN50c1Iv\"}],\"group\":\"cf-nel\",\"max_age\":604800}', nel: '{\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}', server: 'cloudflare', 'cf-ray': '8c360fa7fca9c947-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:104: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:256:7)" + "stack": "AssertionError: Expected issuer to error when VC has an undefined type.: expected Response { status: 200, statusText: 'OK', headers: Headers { date: 'Sun, 22 Sep 2024 05:01:48 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': '76', 'cf-cache-status': 'DYNAMIC', 'report-to': '{\"endpoints\":[{\"url\":\"https:\\\\/\\\\/a.nel.cloudflare.com\\\\/report\\\\/v4?s=96KFT762vqJ5OyQJEy3QdTYpYp6D4Ds6qkN%2FX96uQQiPh2XJPdlNLcX5El%2FZ2w3OW9kzfmj5RIypet1RhLTvlhusx6UdGhK3TFmot9WP6ySdxwqU%2BvrMkTm7SL924n3rc03w%2BLLZqWZ%2B1WjFoZdI\"}],\"group\":\"cf-nel\",\"max_age\":604800}', nel: '{\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}', server: 'cloudflare', 'cf-ray': '8c6fbd37fdcb823c-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:104: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:252:7)" } - }, + } + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [ { - "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": "\"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, @@ -5557,294 +3782,46 @@ "timedOut": false, "_currentRetry": 0, "pending": false, + "type": "hook", + "parent": "gOUuRVOzEs7tYiZyr8hi2", + "ctx": null, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "JnHIhvZh4PEjUNava_pb9", + "originalTitle": "\"before each\" hook", + "_events": {}, + "_eventsCount": 1, + "duration": 0, + "_error": null + } + ], + "_beforeAll": [ + { + "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, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "type": "hook", + "parent": "gOUuRVOzEs7tYiZyr8hi2", "ctx": null, - "_testId": "urn:uuid:69430eba-7831-458a-b961-a617a108d2c8", - "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)." - }, + "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": 11481, + "_idleStart": 11219, "_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:b1e3eb89-3e07-436b-8750-761a0e3798d2\",\"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:b1e3eb89-3e07-436b-8750-761a0e3798d2", - "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:343:18)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" - } - }, - { - "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": "JnHIhvZh4PEjUNava_pb9", - "ctx": null, - "_testId": "urn:uuid:909f79f4-99f9-47e4-b553-bdcc0fb35fc6", - "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, - "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 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": "JnHIhvZh4PEjUNava_pb9", - "ctx": null, - "_testId": "urn:uuid:b2155018-00ae-4dd4-a015-fd75e5366ccc", - "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." - }, - "_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": "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": "JnHIhvZh4PEjUNava_pb9", - "ctx": null, - "_testId": "urn:uuid:e12d6693-4ce1-49bd-8ad2-e3561d7b856e", - "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." - }, - "_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": "(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": "JnHIhvZh4PEjUNava_pb9", - "ctx": null, - "_testId": "urn:uuid:b8c6538b-ee80-47b5-a416-783a4dada1ef", - "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" - } - ], - "root": false, - "pending": false, - "_retries": -1, - "_beforeEach": [ - { - "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, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "type": "hook", - "parent": "JnHIhvZh4PEjUNava_pb9", - "ctx": null, - "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, - "duration": 0, - "_error": null - } - ], - "_beforeAll": [ - { - "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, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, - "pending": false, - "type": "hook", - "parent": "JnHIhvZh4PEjUNava_pb9", - "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": 10836, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 519, + "duration": 587, "_error": null } ], @@ -5856,9 +3833,9 @@ "_onlyTests": [], "_onlySuites": [], "delayed": false, - "parent": "0LD0duBmOdjt9v6fHOMOI", + "parent": "EjF7l5fbQpuntiLjGHCQZ", "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "_testId": "urn:uuid:f146c8e9-c291-43cb-a5af-3a7591175a32" + "_testId": "urn:uuid:2db1de0e-8715-4dbd-a5d8-945e5aab9487" } ], "root": false, @@ -5874,20 +3851,20 @@ "_onlyTests": [], "_onlySuites": [], "delayed": false, - "parent": "80HWw4IpbOh2dthU9AhuI", + "parent": "NT834VBWEc1P4o_dkTTfV", "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:5c07376c-074b-455b-92a9-2fee8496c927", + "_testId": "urn:uuid:5274e433-06d2-4d3d-bc5b-b81fc0c65789", "columns": [ + "ACA-py", "apicatalog.com", "Danube Tech", "Digital Bazaar", "EWF", "LearnCard", - "OpSecId", "SpruceID", "Trinsic" ], @@ -5909,11 +3886,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "xiopp9C56jEvyjZJ9hmjo", + "parent": "H9yMS4dvSrKEHx73zE5vi", "ctx": null, - "_testId": "urn:uuid:6ffdeae4-de93-4f7b-a689-c361a4738593", + "_testId": "urn:uuid:47270d9a-1e7e-4bad-91a6-37ba5177780e", "cell": { - "columnId": "apicatalog.com", + "columnId": "ACA-py", "rowId": "When expressing a data integrity proof on an object, a proof property MUST be used." }, "_events": {}, @@ -5936,11 +3913,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "MnepsQEcAPTMQkBo-l9WL", + "parent": "sKmiHZXakYePx-cVZAsbs", "ctx": null, - "_testId": "urn:uuid:a74b16ba-6175-41c2-a64e-d19726fae7cb", + "_testId": "urn:uuid:9e2c68e4-3229-4520-ad35-1b7ad1201cbc", "cell": { - "columnId": "Danube Tech", + "columnId": "apicatalog.com", "rowId": "When expressing a data integrity proof on an object, a proof property MUST be used." }, "_events": {}, @@ -5963,17 +3940,17 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "728XFktEK1N1HXmV_UDV3", + "parent": "tY5uwgTlUT8B_tY32qQ2T", "ctx": null, - "_testId": "urn:uuid:e05f160c-4b38-4dbe-80ba-ceac5a2eaa16", + "_testId": "urn:uuid:2aafa259-f3fe-421a-85d9-e68c26cad5d6", "cell": { - "columnId": "Digital Bazaar", + "columnId": "Danube Tech", "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" }, @@ -5990,11 +3967,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "cW_m5sCcuGcxtRpeevqyG", + "parent": "fIZ8P1PNsYL86CHMG9Soq", "ctx": null, - "_testId": "urn:uuid:c3dad447-6d33-4334-b911-e3ac458938a1", + "_testId": "urn:uuid:543753e3-64d6-4271-aaa5-8094fa693b93", "cell": { - "columnId": "EWF", + "columnId": "Digital Bazaar", "rowId": "When expressing a data integrity proof on an object, a proof property MUST be used." }, "_events": {}, @@ -6017,11 +3994,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "nnEIcBn8RJIHJCXQFU4M_", + "parent": "VLENnNRhOlTJUOmeUeTTx", "ctx": null, - "_testId": "urn:uuid:4f67ade4-7901-4e52-a10d-e83412aa9b40", + "_testId": "urn:uuid:ea905b18-5839-4724-b93c-edd6339f959f", "cell": { - "columnId": "LearnCard", + "columnId": "EWF", "rowId": "When expressing a data integrity proof on an object, a proof property MUST be used." }, "_events": {}, @@ -6044,17 +4021,17 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "YJs5thSLW9bKfuQ1vMFqV", + "parent": "uDrPa7KZsPxN1LfkOVPuP", "ctx": null, - "_testId": "urn:uuid:ad11d99e-1d41-44eb-8ad6-93ffc38c2cd8", + "_testId": "urn:uuid:6bab6707-7abd-40a4-962c-b4f952e2abf7", "cell": { - "columnId": "OpSecId", + "columnId": "LearnCard", "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, + "duration": 1, "state": "passed", "speed": "fast" }, @@ -6071,9 +4048,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "VO2RMwyXVwXd48t8IXe1B", + "parent": "avC0UwHNDChNlkpDbFijO", "ctx": null, - "_testId": "urn:uuid:bc44b996-5ea0-437d-91cb-43270dd5a788", + "_testId": "urn:uuid:0093a9ff-340b-4061-becf-5073d419a0b2", "cell": { "columnId": "SpruceID", "rowId": "When expressing a data integrity proof on an object, a proof property MUST be used." @@ -6098,9 +4075,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "JnHIhvZh4PEjUNava_pb9", + "parent": "gOUuRVOzEs7tYiZyr8hi2", "ctx": null, - "_testId": "urn:uuid:f0946996-3ae9-44d1-a6c1-05c8257a3ed9", + "_testId": "urn:uuid:d2c9b7f6-3bfa-4467-9b4a-756fe412db6c", "cell": { "columnId": "Trinsic", "rowId": "When expressing a data integrity proof on an object, a proof property MUST be used." @@ -6131,17 +4108,17 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "xiopp9C56jEvyjZJ9hmjo", + "parent": "H9yMS4dvSrKEHx73zE5vi", "ctx": null, - "_testId": "urn:uuid:136ce2f9-33ab-4f16-9304-5910f2a2ca30", + "_testId": "urn:uuid:2edec59e-8644-4104-ba4d-d4c4d0aacada", "cell": { - "columnId": "apicatalog.com", + "columnId": "ACA-py", "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" }, @@ -6158,11 +4135,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "MnepsQEcAPTMQkBo-l9WL", + "parent": "sKmiHZXakYePx-cVZAsbs", "ctx": null, - "_testId": "urn:uuid:92653226-3521-4a23-8cb4-8c5ddbbeae23", + "_testId": "urn:uuid:55e1b1ea-ab96-4e4d-a5a2-fc70d4e218c0", "cell": { - "columnId": "Danube Tech", + "columnId": "apicatalog.com", "rowId": "If present (proof), its value MUST be either a single object, or an unordered set of objects." }, "_events": {}, @@ -6185,11 +4162,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "728XFktEK1N1HXmV_UDV3", + "parent": "tY5uwgTlUT8B_tY32qQ2T", "ctx": null, - "_testId": "urn:uuid:a9ea418c-2a4f-4047-84c3-d90b66db912f", + "_testId": "urn:uuid:ee121077-7d1c-4490-a457-670fe960e003", "cell": { - "columnId": "Digital Bazaar", + "columnId": "Danube Tech", "rowId": "If present (proof), its value MUST be either a single object, or an unordered set of objects." }, "_events": {}, @@ -6212,11 +4189,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "cW_m5sCcuGcxtRpeevqyG", + "parent": "fIZ8P1PNsYL86CHMG9Soq", "ctx": null, - "_testId": "urn:uuid:2df1382b-9827-498a-b2b8-e93f573841ef", + "_testId": "urn:uuid:aba4ecae-85f9-4fc3-9661-cc35660a1e55", "cell": { - "columnId": "EWF", + "columnId": "Digital Bazaar", "rowId": "If present (proof), its value MUST be either a single object, or an unordered set of objects." }, "_events": {}, @@ -6239,11 +4216,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "nnEIcBn8RJIHJCXQFU4M_", + "parent": "VLENnNRhOlTJUOmeUeTTx", "ctx": null, - "_testId": "urn:uuid:32f4f545-48ab-48f5-86f3-54d9657cbee4", + "_testId": "urn:uuid:4c43d4ad-bf12-445c-b9e7-647fb7006ed9", "cell": { - "columnId": "LearnCard", + "columnId": "EWF", "rowId": "If present (proof), its value MUST be either a single object, or an unordered set of objects." }, "_events": {}, @@ -6266,11 +4243,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "YJs5thSLW9bKfuQ1vMFqV", + "parent": "uDrPa7KZsPxN1LfkOVPuP", "ctx": null, - "_testId": "urn:uuid:3678c951-1017-446e-949f-168b834b8cc3", + "_testId": "urn:uuid:2c3ec46f-389f-46a3-ba59-6f4467b5c304", "cell": { - "columnId": "OpSecId", + "columnId": "LearnCard", "rowId": "If present (proof), its value MUST be either a single object, or an unordered set of objects." }, "_events": {}, @@ -6293,9 +4270,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "VO2RMwyXVwXd48t8IXe1B", + "parent": "avC0UwHNDChNlkpDbFijO", "ctx": null, - "_testId": "urn:uuid:e49a23e2-b0eb-4d81-9fb0-8bc6cd866a42", + "_testId": "urn:uuid:6ba13a56-c72a-46ea-808a-82575753c43a", "cell": { "columnId": "SpruceID", "rowId": "If present (proof), its value MUST be either a single object, or an unordered set of objects." @@ -6303,7 +4280,7 @@ "_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" }, @@ -6320,9 +4297,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "JnHIhvZh4PEjUNava_pb9", + "parent": "gOUuRVOzEs7tYiZyr8hi2", "ctx": null, - "_testId": "urn:uuid:405643a9-4d6a-4e55-9470-c7b66ff2ea91", + "_testId": "urn:uuid:96962468-8fef-4939-8adc-2f584a1b711f", "cell": { "columnId": "Trinsic", "rowId": "If present (proof), its value MUST be either a single object, or an unordered set of objects." @@ -6353,11 +4330,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "xiopp9C56jEvyjZJ9hmjo", + "parent": "H9yMS4dvSrKEHx73zE5vi", "ctx": null, - "_testId": "urn:uuid:a8504d6f-fbf5-4775-9f53-355c97f46ee2", + "_testId": "urn:uuid:12f57096-f2e8-4fd8-84ad-6f855fa3d70e", "cell": { - "columnId": "apicatalog.com", + "columnId": "ACA-py", "rowId": "(\"proof.id\") An optional identifier for the proof, which MUST be a URL." }, "_events": {}, @@ -6380,11 +4357,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "MnepsQEcAPTMQkBo-l9WL", + "parent": "sKmiHZXakYePx-cVZAsbs", "ctx": null, - "_testId": "urn:uuid:71e5800b-2f5e-4ad9-811d-9d2942043183", + "_testId": "urn:uuid:405ba92d-f3bd-4477-a11d-0e72794c1915", "cell": { - "columnId": "Danube Tech", + "columnId": "apicatalog.com", "rowId": "(\"proof.id\") An optional identifier for the proof, which MUST be a URL." }, "_events": {}, @@ -6407,11 +4384,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "728XFktEK1N1HXmV_UDV3", + "parent": "tY5uwgTlUT8B_tY32qQ2T", "ctx": null, - "_testId": "urn:uuid:4fa679cf-afc8-42f7-a567-24d831f00206", + "_testId": "urn:uuid:5d1633ca-fb5f-4dc4-8b1b-993125255b6c", "cell": { - "columnId": "Digital Bazaar", + "columnId": "Danube Tech", "rowId": "(\"proof.id\") An optional identifier for the proof, which MUST be a URL." }, "_events": {}, @@ -6434,11 +4411,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "cW_m5sCcuGcxtRpeevqyG", + "parent": "fIZ8P1PNsYL86CHMG9Soq", "ctx": null, - "_testId": "urn:uuid:dda07da5-eb22-43df-a60c-3f631bafb262", + "_testId": "urn:uuid:51b8a7fd-726a-4357-9c95-ed084c4ca16f", "cell": { - "columnId": "EWF", + "columnId": "Digital Bazaar", "rowId": "(\"proof.id\") An optional identifier for the proof, which MUST be a URL." }, "_events": {}, @@ -6461,11 +4438,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "nnEIcBn8RJIHJCXQFU4M_", + "parent": "VLENnNRhOlTJUOmeUeTTx", "ctx": null, - "_testId": "urn:uuid:ff012639-df6d-4188-a8f5-e1b03293e0fb", + "_testId": "urn:uuid:503c4571-bbc1-49dd-9826-367a57631d59", "cell": { - "columnId": "LearnCard", + "columnId": "EWF", "rowId": "(\"proof.id\") An optional identifier for the proof, which MUST be a URL." }, "_events": {}, @@ -6488,11 +4465,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "YJs5thSLW9bKfuQ1vMFqV", + "parent": "uDrPa7KZsPxN1LfkOVPuP", "ctx": null, - "_testId": "urn:uuid:2bd385cb-bb32-40ee-a053-20b4b5acf9df", + "_testId": "urn:uuid:1b128885-98b6-4a04-98b2-43175b9eed6d", "cell": { - "columnId": "OpSecId", + "columnId": "LearnCard", "rowId": "(\"proof.id\") An optional identifier for the proof, which MUST be a URL." }, "_events": {}, @@ -6515,9 +4492,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "VO2RMwyXVwXd48t8IXe1B", + "parent": "avC0UwHNDChNlkpDbFijO", "ctx": null, - "_testId": "urn:uuid:9fdfa689-ed74-4edf-9f29-77fde4c5a463", + "_testId": "urn:uuid:044b26f1-cfc9-466c-b4cd-864ceebdeae2", "cell": { "columnId": "SpruceID", "rowId": "(\"proof.id\") An optional identifier for the proof, which MUST be a URL." @@ -6542,9 +4519,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "JnHIhvZh4PEjUNava_pb9", + "parent": "gOUuRVOzEs7tYiZyr8hi2", "ctx": null, - "_testId": "urn:uuid:21281340-a304-4099-81ec-00091518b55c", + "_testId": "urn:uuid:1f213c76-62de-4483-a6e7-f1904f0a3b75", "cell": { "columnId": "Trinsic", "rowId": "(\"proof.id\") An optional identifier for the proof, which MUST be a URL." @@ -6575,11 +4552,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "xiopp9C56jEvyjZJ9hmjo", + "parent": "H9yMS4dvSrKEHx73zE5vi", "ctx": null, - "_testId": "urn:uuid:1e7d6736-f94d-480f-825e-86f7ec4d68ac", + "_testId": "urn:uuid:b446f308-6d3c-454c-b251-057a80a7a260", "cell": { - "columnId": "apicatalog.com", + "columnId": "ACA-py", "rowId": "The specific type of proof MUST be specified as a string that maps to a URL." }, "_events": {}, @@ -6589,12 +4566,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 6302, + "_idleStart": 1546, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 1, + "duration": 2, "state": "passed", "speed": "fast" }, @@ -6611,11 +4588,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "MnepsQEcAPTMQkBo-l9WL", + "parent": "sKmiHZXakYePx-cVZAsbs", "ctx": null, - "_testId": "urn:uuid:e0a90f63-d92c-4695-a80c-43c83732d5e1", + "_testId": "urn:uuid:52936f10-b83b-447e-b5ea-ea70bb11370a", "cell": { - "columnId": "Danube Tech", + "columnId": "apicatalog.com", "rowId": "The specific type of proof MUST be specified as a string that maps to a URL." }, "_events": {}, @@ -6625,12 +4602,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7074, + "_idleStart": 6243, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 1, + "duration": 0, "state": "passed", "speed": "fast" }, @@ -6647,11 +4624,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "728XFktEK1N1HXmV_UDV3", + "parent": "tY5uwgTlUT8B_tY32qQ2T", "ctx": null, - "_testId": "urn:uuid:e211878e-d763-4ab1-9554-dc9207e13890", + "_testId": "urn:uuid:e3f025a6-f163-46dc-bbc6-8b9dea889ced", "cell": { - "columnId": "Digital Bazaar", + "columnId": "Danube Tech", "rowId": "The specific type of proof MUST be specified as a string that maps to a URL." }, "_events": {}, @@ -6661,12 +4638,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 8671, + "_idleStart": 7023, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 1, + "duration": 0, "state": "passed", "speed": "fast" }, @@ -6683,11 +4660,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "cW_m5sCcuGcxtRpeevqyG", + "parent": "fIZ8P1PNsYL86CHMG9Soq", "ctx": null, - "_testId": "urn:uuid:35e32a95-c5e9-4939-8785-b0d8ca710870", + "_testId": "urn:uuid:dd35df3f-c281-4760-865b-41a5189ca48d", "cell": { - "columnId": "EWF", + "columnId": "Digital Bazaar", "rowId": "The specific type of proof MUST be specified as a string that maps to a URL." }, "_events": {}, @@ -6697,7 +4674,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9435, + "_idleStart": 9020, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -6719,11 +4696,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "nnEIcBn8RJIHJCXQFU4M_", + "parent": "VLENnNRhOlTJUOmeUeTTx", "ctx": null, - "_testId": "urn:uuid:54b529e1-b325-44c5-bf81-ed4c8d831073", + "_testId": "urn:uuid:4d48c059-0888-474c-9425-75774d9fdbfc", "cell": { - "columnId": "LearnCard", + "columnId": "EWF", "rowId": "The specific type of proof MUST be specified as a string that maps to a URL." }, "_events": {}, @@ -6733,24 +4710,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10142, + "_idleStart": 10623, "_onTimeout": null, "_repeat": null, "_destroyed": true }, "duration": 1, - "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:197: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:86: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:86:17)" - } + "state": "passed", + "speed": "fast" }, { "type": "test", @@ -6765,11 +4732,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "YJs5thSLW9bKfuQ1vMFqV", + "parent": "uDrPa7KZsPxN1LfkOVPuP", "ctx": null, - "_testId": "urn:uuid:3ac351d9-5297-4a60-9dc1-77a62ac51b9e", + "_testId": "urn:uuid:a71fd370-424b-4c68-be14-e587555234e4", "cell": { - "columnId": "OpSecId", + "columnId": "LearnCard", "rowId": "The specific type of proof MUST be specified as a string that maps to a URL." }, "_events": {}, @@ -6779,14 +4746,24 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10541, + "_idleStart": 10922, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, - "state": "passed", - "speed": "fast" + "duration": 1, + "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:197: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:82: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:82:17)" + } }, { "type": "test", @@ -6801,9 +4778,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "VO2RMwyXVwXd48t8IXe1B", + "parent": "avC0UwHNDChNlkpDbFijO", "ctx": null, - "_testId": "urn:uuid:4c045d5a-03f4-486a-b6d7-b652f4a55977", + "_testId": "urn:uuid:fbdd53cd-1e31-4879-89db-53d5723754a9", "cell": { "columnId": "SpruceID", "rowId": "The specific type of proof MUST be specified as a string that maps to a URL." @@ -6815,12 +4792,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10706, + "_idleStart": 11143, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 1, "state": "passed", "speed": "fast" }, @@ -6837,9 +4814,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "JnHIhvZh4PEjUNava_pb9", + "parent": "gOUuRVOzEs7tYiZyr8hi2", "ctx": null, - "_testId": "urn:uuid:c75de50f-05b4-412c-a4e9-a55f5a771b39", + "_testId": "urn:uuid:a3e247b0-afaf-4a71-8d7c-744a6934a5c3", "cell": { "columnId": "Trinsic", "rowId": "The specific type of proof MUST be specified as a string that maps to a URL." @@ -6851,12 +4828,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 11356, + "_idleStart": 11807, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 1, + "duration": 0, "state": "passed", "speed": "fast" } @@ -6878,11 +4855,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "xiopp9C56jEvyjZJ9hmjo", + "parent": "H9yMS4dvSrKEHx73zE5vi", "ctx": null, - "_testId": "urn:uuid:49adc316-ae0d-4688-9523-ae4492b2d637", + "_testId": "urn:uuid:a301f956-ce6c-4ed4-a719-120a6c4a8e22", "cell": { - "columnId": "apicatalog.com", + "columnId": "ACA-py", "rowId": "\"proof.type\" field MUST be \"Ed25519Signature2020\" and the associated document MUST include expected contexts." }, "_events": {}, @@ -6904,16 +4881,16 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "MnepsQEcAPTMQkBo-l9WL", + "parent": "sKmiHZXakYePx-cVZAsbs", "ctx": null, - "_testId": "urn:uuid:57209aa0-ac11-43a2-a4c3-bce4d8246d04", + "_testId": "urn:uuid:52fedb0e-8933-4cdd-9ff9-681fae85b40f", "cell": { - "columnId": "Danube Tech", + "columnId": "apicatalog.com", "rowId": "\"proof.type\" field MUST be \"Ed25519Signature2020\" and the associated document MUST include expected contexts." }, "_events": {}, "_eventsCount": 1, - "duration": 1, + "duration": 0, "state": "passed", "speed": "fast" }, @@ -6930,11 +4907,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "728XFktEK1N1HXmV_UDV3", + "parent": "tY5uwgTlUT8B_tY32qQ2T", "ctx": null, - "_testId": "urn:uuid:34e6cfe3-73df-4b99-9879-d66de4eb61ca", + "_testId": "urn:uuid:0ddd45a1-7b91-4c6f-b53c-5b411c47ad9e", "cell": { - "columnId": "Digital Bazaar", + "columnId": "Danube Tech", "rowId": "\"proof.type\" field MUST be \"Ed25519Signature2020\" and the associated document MUST include expected contexts." }, "_events": {}, @@ -6956,26 +4933,18 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "cW_m5sCcuGcxtRpeevqyG", + "parent": "fIZ8P1PNsYL86CHMG9Soq", "ctx": null, - "_testId": "urn:uuid:4fdf189a-5b5c-4b3e-8e7b-774f26c60994", + "_testId": "urn:uuid:a58d6cc4-bb27-4a70-98f3-4819e5e8c37e", "cell": { - "columnId": "EWF", + "columnId": "Digital Bazaar", "rowId": "\"proof.type\" field MUST be \"Ed25519Signature2020\" and the associated document MUST include expected contexts." }, "_events": {}, "_eventsCount": 1, "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:135:34)\n at process.processImmediate (node:internal/timers:483:21)" - } + "state": "passed", + "speed": "fast" }, { "type": "test", @@ -6990,16 +4959,16 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "nnEIcBn8RJIHJCXQFU4M_", + "parent": "VLENnNRhOlTJUOmeUeTTx", "ctx": null, - "_testId": "urn:uuid:1d21d354-9c44-4ce9-bfa4-c206fcae9732", + "_testId": "urn:uuid:372d16a8-7c6a-40f0-b2ca-a0c5e4a7bc34", "cell": { - "columnId": "LearnCard", + "columnId": "EWF", "rowId": "\"proof.type\" field MUST be \"Ed25519Signature2020\" and the associated document MUST include expected contexts." }, "_events": {}, "_eventsCount": 1, - "duration": 0, + "duration": 1, "state": "failed", "err": { "name": "AssertionError", @@ -7008,7 +4977,7 @@ "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:142:39)\n at process.processImmediate (node:internal/timers:483:21)" + "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:131:34)\n at process.processImmediate (node:internal/timers:483:21)" } }, { @@ -7024,18 +4993,26 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "YJs5thSLW9bKfuQ1vMFqV", + "parent": "uDrPa7KZsPxN1LfkOVPuP", "ctx": null, - "_testId": "urn:uuid:00ac813f-52d1-48b2-932e-0ecf565111cb", + "_testId": "urn:uuid:e28301e7-1486-438d-8531-06959ffa865d", "cell": { - "columnId": "OpSecId", + "columnId": "LearnCard", "rowId": "\"proof.type\" field MUST be \"Ed25519Signature2020\" and the associated document MUST include expected contexts." }, "_events": {}, "_eventsCount": 1, "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:138:39)\n at process.processImmediate (node:internal/timers:483:21)" + } }, { "type": "test", @@ -7050,9 +5027,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "VO2RMwyXVwXd48t8IXe1B", + "parent": "avC0UwHNDChNlkpDbFijO", "ctx": null, - "_testId": "urn:uuid:8e81852f-3bac-4908-8c7f-1742d5e8a5b0", + "_testId": "urn:uuid:1193756e-714c-457c-9aca-257dd70badd8", "cell": { "columnId": "SpruceID", "rowId": "\"proof.type\" field MUST be \"Ed25519Signature2020\" and the associated document MUST include expected contexts." @@ -7076,16 +5053,16 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "JnHIhvZh4PEjUNava_pb9", + "parent": "gOUuRVOzEs7tYiZyr8hi2", "ctx": null, - "_testId": "urn:uuid:7ad11d80-568f-457c-9448-a9a75ed04bbf", + "_testId": "urn:uuid:313de871-7888-4234-b5b7-cf466fc0e633", "cell": { "columnId": "Trinsic", "rowId": "\"proof.type\" field MUST be \"Ed25519Signature2020\" and the associated document MUST include expected contexts." }, "_events": {}, "_eventsCount": 1, - "duration": 0, + "duration": 1, "state": "passed", "speed": "fast" } @@ -7108,11 +5085,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "xiopp9C56jEvyjZJ9hmjo", + "parent": "H9yMS4dvSrKEHx73zE5vi", "ctx": null, - "_testId": "urn:uuid:798acf11-a5a8-4a68-ac78-0d90048c1964", + "_testId": "urn:uuid:f9bb6165-de7d-4c9b-a2f7-c2092e79a164", "cell": { - "columnId": "apicatalog.com", + "columnId": "ACA-py", "rowId": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified." }, "_events": {}, @@ -7135,11 +5112,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "MnepsQEcAPTMQkBo-l9WL", + "parent": "sKmiHZXakYePx-cVZAsbs", "ctx": null, - "_testId": "urn:uuid:28c24ec6-0b88-4940-8ccc-87a6dd8a0388", + "_testId": "urn:uuid:414bc3ba-5872-44e1-91df-19a9c76945e1", "cell": { - "columnId": "Danube Tech", + "columnId": "apicatalog.com", "rowId": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified." }, "_events": {}, @@ -7162,11 +5139,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "728XFktEK1N1HXmV_UDV3", + "parent": "tY5uwgTlUT8B_tY32qQ2T", "ctx": null, - "_testId": "urn:uuid:6f559234-0d68-43f7-949b-746369dc81b6", + "_testId": "urn:uuid:7db94932-a2a4-4274-85b2-b45acd3984f9", "cell": { - "columnId": "Digital Bazaar", + "columnId": "Danube Tech", "rowId": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified." }, "_events": {}, @@ -7189,11 +5166,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "cW_m5sCcuGcxtRpeevqyG", + "parent": "fIZ8P1PNsYL86CHMG9Soq", "ctx": null, - "_testId": "urn:uuid:a737b12b-c73e-444c-a19f-1b6d07e8cad5", + "_testId": "urn:uuid:be3b9457-c4d6-4b00-8af3-a8a78ab3bc30", "cell": { - "columnId": "EWF", + "columnId": "Digital Bazaar", "rowId": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified." }, "_events": {}, @@ -7216,17 +5193,17 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "nnEIcBn8RJIHJCXQFU4M_", + "parent": "VLENnNRhOlTJUOmeUeTTx", "ctx": null, - "_testId": "urn:uuid:a6c48c2d-225e-4065-8c3f-113ce960f67d", + "_testId": "urn:uuid:4bd50fe2-250d-4a84-b865-3dc4a4805342", "cell": { - "columnId": "LearnCard", + "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, + "duration": 1, "state": "passed", "speed": "fast" }, @@ -7243,11 +5220,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "YJs5thSLW9bKfuQ1vMFqV", + "parent": "uDrPa7KZsPxN1LfkOVPuP", "ctx": null, - "_testId": "urn:uuid:eebba16f-a853-4180-9243-2b4423f288ed", + "_testId": "urn:uuid:84ba9f62-bd2c-41b5-a99f-180701352d48", "cell": { - "columnId": "OpSecId", + "columnId": "LearnCard", "rowId": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified." }, "_events": {}, @@ -7270,9 +5247,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "VO2RMwyXVwXd48t8IXe1B", + "parent": "avC0UwHNDChNlkpDbFijO", "ctx": null, - "_testId": "urn:uuid:39bb6c36-d200-4b40-b36f-90b1bf2475e5", + "_testId": "urn:uuid:ec016e75-b969-4a63-a7de-ead29d05c531", "cell": { "columnId": "SpruceID", "rowId": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified." @@ -7297,9 +5274,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "JnHIhvZh4PEjUNava_pb9", + "parent": "gOUuRVOzEs7tYiZyr8hi2", "ctx": null, - "_testId": "urn:uuid:dc0bf635-6c76-4021-8533-6d0c4c7f4597", + "_testId": "urn:uuid:9542057f-7bf5-46d4-bafa-3f75fda27fae", "cell": { "columnId": "Trinsic", "rowId": "If the proof type is DataIntegrityProof, cryptosuite MUST be specified; otherwise, cryptosuite MAY be specified." @@ -7330,11 +5307,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "xiopp9C56jEvyjZJ9hmjo", + "parent": "H9yMS4dvSrKEHx73zE5vi", "ctx": null, - "_testId": "urn:uuid:ba4a6758-6169-4f9d-93b1-8e7583b0e7ab", + "_testId": "urn:uuid:ec55c93c-8fea-4d45-8a8e-f2284751d4ee", "cell": { - "columnId": "apicatalog.com", + "columnId": "ACA-py", "rowId": "If specified (proof.cryptosuite), its value MUST be a string." }, "_events": {}, @@ -7357,11 +5334,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "MnepsQEcAPTMQkBo-l9WL", + "parent": "sKmiHZXakYePx-cVZAsbs", "ctx": null, - "_testId": "urn:uuid:50c0f7a5-ef44-4ab9-913c-f884dd6bff00", + "_testId": "urn:uuid:c72ec21b-1a14-490f-86cc-220b674da2ad", "cell": { - "columnId": "Danube Tech", + "columnId": "apicatalog.com", "rowId": "If specified (proof.cryptosuite), its value MUST be a string." }, "_events": {}, @@ -7384,11 +5361,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "728XFktEK1N1HXmV_UDV3", + "parent": "tY5uwgTlUT8B_tY32qQ2T", "ctx": null, - "_testId": "urn:uuid:96d9aff3-c44d-4b40-9473-30dd9bc5749c", + "_testId": "urn:uuid:ceb7edbc-41f1-427b-b555-34db64bc0edc", "cell": { - "columnId": "Digital Bazaar", + "columnId": "Danube Tech", "rowId": "If specified (proof.cryptosuite), its value MUST be a string." }, "_events": {}, @@ -7411,11 +5388,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "cW_m5sCcuGcxtRpeevqyG", + "parent": "fIZ8P1PNsYL86CHMG9Soq", "ctx": null, - "_testId": "urn:uuid:8e66daa3-7873-432e-bd5e-fd4a40e2b72e", + "_testId": "urn:uuid:054c5167-6a1a-4133-a930-5132bf97c1c2", "cell": { - "columnId": "EWF", + "columnId": "Digital Bazaar", "rowId": "If specified (proof.cryptosuite), its value MUST be a string." }, "_events": {}, @@ -7438,11 +5415,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "nnEIcBn8RJIHJCXQFU4M_", + "parent": "VLENnNRhOlTJUOmeUeTTx", "ctx": null, - "_testId": "urn:uuid:262a283f-f955-4628-89cc-27f29e93faca", + "_testId": "urn:uuid:b68242df-a583-486b-84fd-92d040377191", "cell": { - "columnId": "LearnCard", + "columnId": "EWF", "rowId": "If specified (proof.cryptosuite), its value MUST be a string." }, "_events": {}, @@ -7465,11 +5442,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "YJs5thSLW9bKfuQ1vMFqV", + "parent": "uDrPa7KZsPxN1LfkOVPuP", "ctx": null, - "_testId": "urn:uuid:119aecf4-70ff-4754-b797-2bffb38cfcf4", + "_testId": "urn:uuid:a8ccf3ea-83e6-4fc4-881d-61a0e8ef623a", "cell": { - "columnId": "OpSecId", + "columnId": "LearnCard", "rowId": "If specified (proof.cryptosuite), its value MUST be a string." }, "_events": {}, @@ -7492,9 +5469,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "VO2RMwyXVwXd48t8IXe1B", + "parent": "avC0UwHNDChNlkpDbFijO", "ctx": null, - "_testId": "urn:uuid:5a51a0de-8ead-426f-acb5-1bb96b970dc8", + "_testId": "urn:uuid:9e579196-b113-4775-9fd3-b35c941148cc", "cell": { "columnId": "SpruceID", "rowId": "If specified (proof.cryptosuite), its value MUST be a string." @@ -7519,9 +5496,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "JnHIhvZh4PEjUNava_pb9", + "parent": "gOUuRVOzEs7tYiZyr8hi2", "ctx": null, - "_testId": "urn:uuid:7f78bc7c-617a-40ae-994e-9b45e6cb1cbd", + "_testId": "urn:uuid:de59c985-973d-4ffb-aa5d-9ca66bc9250a", "cell": { "columnId": "Trinsic", "rowId": "If specified (proof.cryptosuite), its value MUST be a string." @@ -7552,11 +5529,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "xiopp9C56jEvyjZJ9hmjo", + "parent": "H9yMS4dvSrKEHx73zE5vi", "ctx": null, - "_testId": "urn:uuid:e64a35cc-356a-48ac-a0ec-fae9a9ed4b25", + "_testId": "urn:uuid:cb8d6d2a-edf4-4088-9a65-73a77f0ec5a3", "cell": { - "columnId": "apicatalog.com", + "columnId": "ACA-py", "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": {}, @@ -7566,12 +5543,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 6304, + "_idleStart": 1548, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 1, + "duration": 0, "state": "passed", "speed": "fast" }, @@ -7588,11 +5565,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "MnepsQEcAPTMQkBo-l9WL", + "parent": "sKmiHZXakYePx-cVZAsbs", "ctx": null, - "_testId": "urn:uuid:461404fb-3e63-4702-8dca-acd04f8edc72", + "_testId": "urn:uuid:c93566dc-0a09-4c8e-87b2-952d9a810fe5", "cell": { - "columnId": "Danube Tech", + "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]." }, "_events": {}, @@ -7602,7 +5579,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7075, + "_idleStart": 6244, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -7624,11 +5601,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "728XFktEK1N1HXmV_UDV3", + "parent": "tY5uwgTlUT8B_tY32qQ2T", "ctx": null, - "_testId": "urn:uuid:25d5bcec-0d2e-4493-8498-88650439e7bf", + "_testId": "urn:uuid:e6451f20-e836-4e63-be14-03f6006c5928", "cell": { - "columnId": "Digital Bazaar", + "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]." }, "_events": {}, @@ -7638,12 +5615,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 8673, + "_idleStart": 7024, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 1, + "duration": 0, "state": "passed", "speed": "fast" }, @@ -7660,11 +5637,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "cW_m5sCcuGcxtRpeevqyG", + "parent": "fIZ8P1PNsYL86CHMG9Soq", "ctx": null, - "_testId": "urn:uuid:adc99fb8-1a56-4664-abd8-6cd8ac207351", + "_testId": "urn:uuid:18429b2f-b0ea-4552-a860-243ae70c94b9", "cell": { - "columnId": "EWF", + "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]." }, "_events": {}, @@ -7674,7 +5651,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9437, + "_idleStart": 9022, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -7696,11 +5673,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "nnEIcBn8RJIHJCXQFU4M_", + "parent": "VLENnNRhOlTJUOmeUeTTx", "ctx": null, - "_testId": "urn:uuid:d9adbb3b-0881-40a1-856d-e09093546389", + "_testId": "urn:uuid:e34e97c6-d4e7-487d-8d55-351cb0b7f1cb", "cell": { - "columnId": "LearnCard", + "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]." }, "_events": {}, @@ -7710,7 +5687,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10144, + "_idleStart": 10626, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -7732,11 +5709,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "YJs5thSLW9bKfuQ1vMFqV", + "parent": "uDrPa7KZsPxN1LfkOVPuP", "ctx": null, - "_testId": "urn:uuid:2a5fa18d-ad32-4eff-85b9-946cacee4e38", + "_testId": "urn:uuid:e0594648-8f4f-43da-b9cb-052df195dd33", "cell": { - "columnId": "OpSecId", + "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]." }, "_events": {}, @@ -7746,12 +5723,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10543, + "_idleStart": 10925, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 1, "state": "passed", "speed": "fast" }, @@ -7768,9 +5745,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "VO2RMwyXVwXd48t8IXe1B", + "parent": "avC0UwHNDChNlkpDbFijO", "ctx": null, - "_testId": "urn:uuid:e07095b7-dbe2-42dd-bb18-1fb0bed1962e", + "_testId": "urn:uuid:c7b5e3f7-cb33-47bb-a163-9c529de8f8d7", "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]." @@ -7782,7 +5759,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10707, + "_idleStart": 11145, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -7804,9 +5781,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "JnHIhvZh4PEjUNava_pb9", + "parent": "gOUuRVOzEs7tYiZyr8hi2", "ctx": null, - "_testId": "urn:uuid:a92112ed-b0b2-416a-a9c2-b69091eef37c", + "_testId": "urn:uuid:be8e5caf-0eec-4be3-bf44-646d463404a7", "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]." @@ -7818,7 +5795,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 11359, + "_idleStart": 11808, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -7846,11 +5823,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "xiopp9C56jEvyjZJ9hmjo", + "parent": "H9yMS4dvSrKEHx73zE5vi", "ctx": null, - "_testId": "urn:uuid:80c09f4e-bc8e-4a60-aed3-3feab9b33eb8", + "_testId": "urn:uuid:a66f3b0f-0572-4676-ac03-c068a1c3aaf8", "cell": { - "columnId": "apicatalog.com", + "columnId": "ACA-py", "rowId": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL." }, "_events": {}, @@ -7860,12 +5837,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 6306, + "_idleStart": 1550, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 1, "state": "passed", "speed": "fast" }, @@ -7882,11 +5859,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "MnepsQEcAPTMQkBo-l9WL", + "parent": "sKmiHZXakYePx-cVZAsbs", "ctx": null, - "_testId": "urn:uuid:1e3e6b19-232b-4f22-8d10-16e5180cd206", + "_testId": "urn:uuid:dac47b6b-7f64-46be-a9f3-9d330f0cc2da", "cell": { - "columnId": "Danube Tech", + "columnId": "apicatalog.com", "rowId": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL." }, "_events": {}, @@ -7896,7 +5873,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7076, + "_idleStart": 6245, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -7918,11 +5895,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "728XFktEK1N1HXmV_UDV3", + "parent": "tY5uwgTlUT8B_tY32qQ2T", "ctx": null, - "_testId": "urn:uuid:a34195da-61ce-49d3-a42d-4bc6201683ab", + "_testId": "urn:uuid:483eba77-d67f-4bce-9e5d-6a63b5c3a714", "cell": { - "columnId": "Digital Bazaar", + "columnId": "Danube Tech", "rowId": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL." }, "_events": {}, @@ -7932,7 +5909,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 8674, + "_idleStart": 7025, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -7954,11 +5931,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "cW_m5sCcuGcxtRpeevqyG", + "parent": "fIZ8P1PNsYL86CHMG9Soq", "ctx": null, - "_testId": "urn:uuid:00c4b3b1-f81d-40d4-924a-682227e4cfaa", + "_testId": "urn:uuid:19256f1f-f4b6-4cd7-8387-19a7c7b60c38", "cell": { - "columnId": "EWF", + "columnId": "Digital Bazaar", "rowId": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL." }, "_events": {}, @@ -7968,7 +5945,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9439, + "_idleStart": 9024, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -7990,11 +5967,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "nnEIcBn8RJIHJCXQFU4M_", + "parent": "VLENnNRhOlTJUOmeUeTTx", "ctx": null, - "_testId": "urn:uuid:888fc023-96e1-4961-b50a-d0592466ed54", + "_testId": "urn:uuid:4f3f2193-4b0b-4ee6-b102-3fb24491609a", "cell": { - "columnId": "LearnCard", + "columnId": "EWF", "rowId": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL." }, "_events": {}, @@ -8004,12 +5981,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10145, + "_idleStart": 10627, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 1, "state": "passed", "speed": "fast" }, @@ -8026,11 +6003,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "YJs5thSLW9bKfuQ1vMFqV", + "parent": "uDrPa7KZsPxN1LfkOVPuP", "ctx": null, - "_testId": "urn:uuid:1d2c8dd8-aaf8-4594-a675-c19ab82e1e02", + "_testId": "urn:uuid:67b6550a-35d9-4e18-8640-5069c1952b2a", "cell": { - "columnId": "OpSecId", + "columnId": "LearnCard", "rowId": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL." }, "_events": {}, @@ -8040,7 +6017,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10544, + "_idleStart": 10926, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -8062,9 +6039,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "VO2RMwyXVwXd48t8IXe1B", + "parent": "avC0UwHNDChNlkpDbFijO", "ctx": null, - "_testId": "urn:uuid:0b93fc56-81cd-43fe-bdce-7d8cd84f86f7", + "_testId": "urn:uuid:63d97a7d-a73d-4492-8588-36bca48f90ac", "cell": { "columnId": "SpruceID", "rowId": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL." @@ -8076,12 +6053,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10708, + "_idleStart": 11146, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 1, + "duration": 0, "state": "passed", "speed": "fast" }, @@ -8098,9 +6075,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "JnHIhvZh4PEjUNava_pb9", + "parent": "gOUuRVOzEs7tYiZyr8hi2", "ctx": null, - "_testId": "urn:uuid:bd5153b6-4846-4e60-9bd6-3c0625b86da2", + "_testId": "urn:uuid:99f3c4a4-c288-4506-b4d4-f00ed91308f7", "cell": { "columnId": "Trinsic", "rowId": "The reason the proof was created (\"proof.proofPurpose\") MUST be specified as a string that maps to a URL." @@ -8112,7 +6089,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 11360, + "_idleStart": 11809, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -8140,11 +6117,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "xiopp9C56jEvyjZJ9hmjo", + "parent": "H9yMS4dvSrKEHx73zE5vi", "ctx": null, - "_testId": "urn:uuid:7af571f6-26e2-4df3-b446-5b85a507e75a", + "_testId": "urn:uuid:f314ecc2-239a-44d2-9ba6-5d20f486822d", "cell": { - "columnId": "apicatalog.com", + "columnId": "ACA-py", "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": {}, @@ -8167,11 +6144,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "MnepsQEcAPTMQkBo-l9WL", + "parent": "sKmiHZXakYePx-cVZAsbs", "ctx": null, - "_testId": "urn:uuid:21307f72-ed5d-417b-8055-9f4bfece12d2", + "_testId": "urn:uuid:b88bb24d-c364-4a08-9d72-362e1234260c", "cell": { - "columnId": "Danube Tech", + "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": {}, @@ -8194,17 +6171,17 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "728XFktEK1N1HXmV_UDV3", + "parent": "tY5uwgTlUT8B_tY32qQ2T", "ctx": null, - "_testId": "urn:uuid:33ff6f84-756d-4d29-86a3-8234872d066c", + "_testId": "urn:uuid:7ea14eff-98f8-4e31-9809-f731aaf5495c", "cell": { - "columnId": "Digital Bazaar", + "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/#:~: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": 1, + "duration": 0, "state": "passed", "speed": "fast" }, @@ -8221,25 +6198,19 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "cW_m5sCcuGcxtRpeevqyG", + "parent": "fIZ8P1PNsYL86CHMG9Soq", "ctx": null, - "_testId": "urn:uuid:cad12905-91b8-442d-9e45-f2069ffab633", + "_testId": "urn:uuid:d07b578b-e7a0-4f7c-8c49-5dd064fba093", "cell": { - "columnId": "EWF", + "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/#:~: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": { - "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:293: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:220:9)\n at process.processImmediate (node:internal/timers:483:21)" - } + "state": "passed", + "speed": "fast" }, { "type": "test", @@ -8254,19 +6225,25 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "nnEIcBn8RJIHJCXQFU4M_", + "parent": "VLENnNRhOlTJUOmeUeTTx", "ctx": null, - "_testId": "urn:uuid:8fd9e252-9440-4ae9-b118-24d967c292d3", + "_testId": "urn:uuid:e3cc47fc-000e-44b6-a818-701118d77560", "cell": { - "columnId": "LearnCard", + "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." }, "_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" + "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:293: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:216:9)\n at process.processImmediate (node:internal/timers:483:21)" + } }, { "type": "test", @@ -8281,11 +6258,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "YJs5thSLW9bKfuQ1vMFqV", + "parent": "uDrPa7KZsPxN1LfkOVPuP", "ctx": null, - "_testId": "urn:uuid:1f7c3324-1931-4a92-bc6e-8eceefaacc18", + "_testId": "urn:uuid:0c5ecd83-84e4-4879-8763-f4648f5d674c", "cell": { - "columnId": "OpSecId", + "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": {}, @@ -8308,9 +6285,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "VO2RMwyXVwXd48t8IXe1B", + "parent": "avC0UwHNDChNlkpDbFijO", "ctx": null, - "_testId": "urn:uuid:924c1a4e-e988-4358-9275-51284f75c1b4", + "_testId": "urn:uuid:b3b84006-2ab5-49ff-88a6-a9cc681437f5", "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." @@ -8335,9 +6312,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "JnHIhvZh4PEjUNava_pb9", + "parent": "gOUuRVOzEs7tYiZyr8hi2", "ctx": null, - "_testId": "urn:uuid:61c3375e-889a-443e-ad3a-e06656e1897b", + "_testId": "urn:uuid:8e9ca589-8f70-4a01-acff-d2975cc3c217", "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." @@ -8367,11 +6344,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "xiopp9C56jEvyjZJ9hmjo", + "parent": "H9yMS4dvSrKEHx73zE5vi", "ctx": null, - "_testId": "urn:uuid:d4a72f14-920f-46ec-9efe-16d896432442", + "_testId": "urn:uuid:2c196684-c7ef-4e4c-9389-2fb5f215e28a", "cell": { - "columnId": "apicatalog.com", + "columnId": "ACA-py", "rowId": "If \"proof.previousProof\" property exists, it MUST be a string value or unordered list of string values." }, "_events": {}, @@ -8393,11 +6370,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "MnepsQEcAPTMQkBo-l9WL", + "parent": "sKmiHZXakYePx-cVZAsbs", "ctx": null, - "_testId": "urn:uuid:1c586b0b-1544-423c-89c2-ba9628c2808c", + "_testId": "urn:uuid:824e650b-e6a9-4efc-a030-4fd14892764f", "cell": { - "columnId": "Danube Tech", + "columnId": "apicatalog.com", "rowId": "If \"proof.previousProof\" property exists, it MUST be a string value or unordered list of string values." }, "_events": {}, @@ -8419,11 +6396,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "728XFktEK1N1HXmV_UDV3", + "parent": "tY5uwgTlUT8B_tY32qQ2T", "ctx": null, - "_testId": "urn:uuid:ce80095f-3dfa-4dcc-a095-50017a218426", + "_testId": "urn:uuid:1e871e53-65bc-40b9-a367-f1a5e02f003e", "cell": { - "columnId": "Digital Bazaar", + "columnId": "Danube Tech", "rowId": "If \"proof.previousProof\" property exists, it MUST be a string value or unordered list of string values." }, "_events": {}, @@ -8445,16 +6422,16 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "cW_m5sCcuGcxtRpeevqyG", + "parent": "fIZ8P1PNsYL86CHMG9Soq", "ctx": null, - "_testId": "urn:uuid:60a2f475-47d6-4651-8e51-85c94ca736aa", + "_testId": "urn:uuid:53ecb530-1634-44b9-8ce0-b4bf397a54ca", "cell": { - "columnId": "EWF", + "columnId": "Digital Bazaar", "rowId": "If \"proof.previousProof\" property exists, it MUST be a string value or unordered list of string values." }, "_events": {}, "_eventsCount": 1, - "duration": 1, + "duration": 0, "state": "passed", "speed": "fast" }, @@ -8471,11 +6448,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "nnEIcBn8RJIHJCXQFU4M_", + "parent": "VLENnNRhOlTJUOmeUeTTx", "ctx": null, - "_testId": "urn:uuid:1d3255c2-4681-431f-b9da-d7ffbb9f4c90", + "_testId": "urn:uuid:0c922bc7-fbca-4742-824f-21be56b1e977", "cell": { - "columnId": "LearnCard", + "columnId": "EWF", "rowId": "If \"proof.previousProof\" property exists, it MUST be a string value or unordered list of string values." }, "_events": {}, @@ -8497,11 +6474,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "YJs5thSLW9bKfuQ1vMFqV", + "parent": "uDrPa7KZsPxN1LfkOVPuP", "ctx": null, - "_testId": "urn:uuid:8592f87c-380a-4054-b9a2-08cec21d067d", + "_testId": "urn:uuid:a7ebb739-97d3-4744-b7d6-c96770f3cee7", "cell": { - "columnId": "OpSecId", + "columnId": "LearnCard", "rowId": "If \"proof.previousProof\" property exists, it MUST be a string value or unordered list of string values." }, "_events": {}, @@ -8523,9 +6500,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "VO2RMwyXVwXd48t8IXe1B", + "parent": "avC0UwHNDChNlkpDbFijO", "ctx": null, - "_testId": "urn:uuid:1f90695c-2e84-4b64-85d3-b200c34466ee", + "_testId": "urn:uuid:b53318cb-a9dd-46e6-adfc-a478bdce5dad", "cell": { "columnId": "SpruceID", "rowId": "If \"proof.previousProof\" property exists, it MUST be a string value or unordered list of string values." @@ -8549,9 +6526,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "JnHIhvZh4PEjUNava_pb9", + "parent": "gOUuRVOzEs7tYiZyr8hi2", "ctx": null, - "_testId": "urn:uuid:b53dd381-3111-4000-b90c-73a86a35c3ea", + "_testId": "urn:uuid:21066183-a642-4146-a143-e5f6286de0c6", "cell": { "columnId": "Trinsic", "rowId": "If \"proof.previousProof\" property exists, it MUST be a string value or unordered list of string values." @@ -8581,11 +6558,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "xiopp9C56jEvyjZJ9hmjo", + "parent": "H9yMS4dvSrKEHx73zE5vi", "ctx": null, - "_testId": "urn:uuid:e8d8547e-1b73-48ce-8b8e-059d2c8e9ebe", + "_testId": "urn:uuid:b22ed7ed-9cf9-4b1b-a72f-c2a8bc1e1648", "cell": { - "columnId": "apicatalog.com", + "columnId": "ACA-py", "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": {}, @@ -8595,12 +6572,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 6308, + "_idleStart": 1552, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 1, "state": "passed", "speed": "fast" }, @@ -8617,11 +6594,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "MnepsQEcAPTMQkBo-l9WL", + "parent": "sKmiHZXakYePx-cVZAsbs", "ctx": null, - "_testId": "urn:uuid:17545335-e30a-4938-bfac-cceb80c8e6dc", + "_testId": "urn:uuid:f7cd1ffa-d120-47bb-9963-4ef015e71c12", "cell": { - "columnId": "Danube Tech", + "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." }, "_events": {}, @@ -8631,7 +6608,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7078, + "_idleStart": 6247, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -8653,11 +6630,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "728XFktEK1N1HXmV_UDV3", + "parent": "tY5uwgTlUT8B_tY32qQ2T", "ctx": null, - "_testId": "urn:uuid:993c9d77-69cf-467c-8d45-2d0aad73bff3", + "_testId": "urn:uuid:311f89d8-9ed2-4076-9f6d-ce1a0595766a", "cell": { - "columnId": "Digital Bazaar", + "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." }, "_events": {}, @@ -8667,12 +6644,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 8676, + "_idleStart": 7027, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 1, "state": "passed", "speed": "fast" }, @@ -8689,11 +6666,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "cW_m5sCcuGcxtRpeevqyG", + "parent": "fIZ8P1PNsYL86CHMG9Soq", "ctx": null, - "_testId": "urn:uuid:fe59417f-13be-4db1-8092-116ac152f35f", + "_testId": "urn:uuid:9aa03e26-067d-4b32-9c61-96856cfcdce0", "cell": { - "columnId": "EWF", + "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." }, "_events": {}, @@ -8703,20 +6680,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9441, + "_idleStart": 9025, "_onTimeout": null, "_repeat": null, "_destroyed": true }, "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:239: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:245:9)\n at process.processImmediate (node:internal/timers:483:21)" - } + "state": "passed", + "speed": "fast" }, { "type": "test", @@ -8731,11 +6702,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "nnEIcBn8RJIHJCXQFU4M_", + "parent": "VLENnNRhOlTJUOmeUeTTx", "ctx": null, - "_testId": "urn:uuid:dce494db-eb29-4efe-a9a1-0dcd0b34140e", + "_testId": "urn:uuid:ae4f921a-78ad-4ffd-ae1e-6fa93040032b", "cell": { - "columnId": "LearnCard", + "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." }, "_events": {}, @@ -8745,14 +6716,20 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10147, + "_idleStart": 10628, "_onTimeout": null, "_repeat": null, "_destroyed": true }, "duration": 1, - "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:239: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:241:9)\n at process.processImmediate (node:internal/timers:483:21)" + } }, { "type": "test", @@ -8767,11 +6744,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "YJs5thSLW9bKfuQ1vMFqV", + "parent": "uDrPa7KZsPxN1LfkOVPuP", "ctx": null, - "_testId": "urn:uuid:15cb6c38-ba74-46e3-bc67-8a1519d49d14", + "_testId": "urn:uuid:19995425-d639-4d52-b8c2-e6c6311c075c", "cell": { - "columnId": "OpSecId", + "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." }, "_events": {}, @@ -8781,7 +6758,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10545, + "_idleStart": 10927, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -8803,9 +6780,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "VO2RMwyXVwXd48t8IXe1B", + "parent": "avC0UwHNDChNlkpDbFijO", "ctx": null, - "_testId": "urn:uuid:150b8413-71e4-402a-a606-2ac763498525", + "_testId": "urn:uuid:adb713fb-4e94-40e1-897c-1e2db1b4dd5b", "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." @@ -8817,7 +6794,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10710, + "_idleStart": 11147, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -8839,9 +6816,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "JnHIhvZh4PEjUNava_pb9", + "parent": "gOUuRVOzEs7tYiZyr8hi2", "ctx": null, - "_testId": "urn:uuid:dfc8733d-0537-48ff-a7cf-a35156fc451c", + "_testId": "urn:uuid:fc4d772c-aebe-4589-89f4-ea00ed10070d", "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." @@ -8853,7 +6830,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 11361, + "_idleStart": 11811, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -8881,11 +6858,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "xiopp9C56jEvyjZJ9hmjo", + "parent": "H9yMS4dvSrKEHx73zE5vi", "ctx": null, - "_testId": "urn:uuid:d6df9421-5f10-437d-aaa4-6a07e2288b66", + "_testId": "urn:uuid:1b97870a-809d-4d77-805d-f999af261bad", "cell": { - "columnId": "apicatalog.com", + "columnId": "ACA-py", "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": {}, @@ -8895,20 +6872,20 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 6308, + "_idleStart": 1553, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 161, + "duration": 38, "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': 'e3c5915d6873e82832232d6091a5e4cd', date: 'Sun, 15 Sep 2024 05:01:45 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-length': '797', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 22 Sep 2024 05:01:37 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-type': 'application/ld+json', 'x-cloud-trace-context': 'e3c5915d6873e82832232d6091a5e4cd', date: 'Sun, 15 Sep 2024 05:01:45 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:104: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:256:7)" + "stack": "AssertionError: Expected issuer to error when VC has an undefined type.: expected Response { status: 201, statusText: 'Created', headers: Headers { 'content-length': '797', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 22 Sep 2024 05:01:37 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:104: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:252:7)" } }, { @@ -8924,11 +6901,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "MnepsQEcAPTMQkBo-l9WL", + "parent": "sKmiHZXakYePx-cVZAsbs", "ctx": null, - "_testId": "urn:uuid:3eda17b7-879b-4c12-8afd-5f6e4a062dc4", + "_testId": "urn:uuid:0e1a6275-6c22-4a0a-b515-c4b64f9a064a", "cell": { - "columnId": "Danube Tech", + "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": {}, @@ -8938,14 +6915,21 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 7078, + "_idleStart": 6247, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 710, - "state": "passed", - "speed": "slow" + "duration": 118, + "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': '208f0138f2eb9f5300f55af1f4a111bf', date: 'Sun, 22 Sep 2024 05:01:42 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': '208f0138f2eb9f5300f55af1f4a111bf', date: 'Sun, 22 Sep 2024 05:01:42 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:104: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:252:7)" + } }, { "type": "test", @@ -8960,11 +6944,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "728XFktEK1N1HXmV_UDV3", + "parent": "tY5uwgTlUT8B_tY32qQ2T", "ctx": null, - "_testId": "urn:uuid:c07bf189-2fd8-43cf-9d6b-44c2576dff85", + "_testId": "urn:uuid:f74c4053-154f-4cdb-9c7d-53602abac4b3", "cell": { - "columnId": "Digital Bazaar", + "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": {}, @@ -8974,12 +6958,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 8676, + "_idleStart": 7028, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 102, + "duration": 639, "state": "passed", "speed": "slow" }, @@ -8996,11 +6980,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "cW_m5sCcuGcxtRpeevqyG", + "parent": "fIZ8P1PNsYL86CHMG9Soq", "ctx": null, - "_testId": "urn:uuid:a1513307-30e2-4b79-9a6e-9318efd6a9fc", + "_testId": "urn:uuid:7b893cf9-a297-4750-8bf2-0f7810aecf07", "cell": { - "columnId": "EWF", + "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": {}, @@ -9010,21 +6994,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 9441, + "_idleStart": 9026, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 305, - "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, 15 Sep 2024 05:01:49 GMT', 'content-type': 'application/json; charset=utf-8', 'content-length': '742', connection: 'keep-alive', 'x-powered-by': 'Express', vary: 'Origin', etag: 'W/\"2e6-Gg3A9QEsk4Xd//c7yHvGgmtmysE\"', 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, 15 Sep 2024 05:01:49 GMT', 'content-type': 'application/json; charset=utf-8', 'content-length': '742', connection: 'keep-alive', 'x-powered-by': 'Express', vary: 'Origin', etag: 'W/\"2e6-Gg3A9QEsk4Xd//c7yHvGgmtmysE\"', 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:104: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:256:7)" - } + "duration": 1009, + "state": "passed", + "speed": "slow" }, { "type": "test", @@ -9039,11 +7016,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "nnEIcBn8RJIHJCXQFU4M_", + "parent": "VLENnNRhOlTJUOmeUeTTx", "ctx": null, - "_testId": "urn:uuid:9a05a682-f658-4105-bf5d-cc25a3ed2511", + "_testId": "urn:uuid:a54059ad-981f-41b2-bb6d-ae8896971dfb", "cell": { - "columnId": "LearnCard", + "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": {}, @@ -9053,20 +7030,20 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10147, + "_idleStart": 10629, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 102, + "duration": 103, "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, 15 Sep 2024 05:01:49 GMT', 'content-type': 'application/json; charset=utf-8', 'content-length': '758', connection: 'keep-alive', etag: 'W/\"2f6-MKhNsB9PGFVJh00ltNfbgb+FX+A\"', 'x-powered-by': 'Express', 'apigw-requestid': 'eIWJqjzpIAMEZhw=', 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, 22 Sep 2024 05:01:47 GMT', 'content-type': 'application/json; charset=utf-8', 'content-length': '742', connection: 'keep-alive', 'x-powered-by': 'Express', vary: 'Origin', etag: 'W/\"2e6-VvbXb0cRNcjT6cV4ulsupX932gI\"', 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, 15 Sep 2024 05:01:49 GMT', 'content-type': 'application/json; charset=utf-8', 'content-length': '758', connection: 'keep-alive', etag: 'W/\"2f6-MKhNsB9PGFVJh00ltNfbgb+FX+A\"', 'x-powered-by': 'Express', 'apigw-requestid': 'eIWJqjzpIAMEZhw=', 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:104: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:256:7)" + "stack": "AssertionError: Expected issuer to error when VC has an undefined type.: expected Response { status: 201, statusText: 'Created', headers: Headers { date: 'Sun, 22 Sep 2024 05:01:47 GMT', 'content-type': 'application/json; charset=utf-8', 'content-length': '742', connection: 'keep-alive', 'x-powered-by': 'Express', vary: 'Origin', etag: 'W/\"2e6-VvbXb0cRNcjT6cV4ulsupX932gI\"', 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:104: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:252:7)" } }, { @@ -9082,11 +7059,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "YJs5thSLW9bKfuQ1vMFqV", + "parent": "uDrPa7KZsPxN1LfkOVPuP", "ctx": null, - "_testId": "urn:uuid:8588a9ce-f6cf-425e-99f7-fc1bd65db32a", + "_testId": "urn:uuid:ac2c485a-5eaa-465f-9ae6-91520585194a", "cell": { - "columnId": "OpSecId", + "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": {}, @@ -9096,20 +7073,20 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10545, + "_idleStart": 10928, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 47, + "duration": 103, "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': '797', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 15 Sep 2024 05:01:49 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 issuer to error when VC has an undefined type.: expected Response { status: 201, statusText: 'Created', headers: Headers { date: 'Sun, 22 Sep 2024 05:01:47 GMT', 'content-type': 'application/json; charset=utf-8', 'content-length': '758', connection: 'keep-alive', etag: 'W/\"2f6-5dCWkl/WNyvWiQKaXeH7t27AkSc\"', 'x-powered-by': 'Express', 'apigw-requestid': 'efatTgkwIAMESHg=', 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': '797', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 15 Sep 2024 05:01:49 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:104: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:256:7)" + "stack": "AssertionError: Expected issuer to error when VC has an undefined type.: expected Response { status: 201, statusText: 'Created', headers: Headers { date: 'Sun, 22 Sep 2024 05:01:47 GMT', 'content-type': 'application/json; charset=utf-8', 'content-length': '758', connection: 'keep-alive', etag: 'W/\"2f6-5dCWkl/WNyvWiQKaXeH7t27AkSc\"', 'x-powered-by': 'Express', 'apigw-requestid': 'efatTgkwIAMESHg=', 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:104: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:252:7)" } }, { @@ -9125,9 +7102,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "VO2RMwyXVwXd48t8IXe1B", + "parent": "avC0UwHNDChNlkpDbFijO", "ctx": null, - "_testId": "urn:uuid:0ed47a4a-9417-4804-9f96-b0199bc41788", + "_testId": "urn:uuid:3eefcbac-5a0f-43b5-b508-03c0edb411f9", "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." @@ -9139,14 +7116,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 10710, + "_idleStart": 11148, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 100, + "duration": 71, "state": "passed", - "speed": "slow" + "speed": "medium" }, { "type": "test", @@ -9161,9 +7138,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "JnHIhvZh4PEjUNava_pb9", + "parent": "gOUuRVOzEs7tYiZyr8hi2", "ctx": null, - "_testId": "urn:uuid:5f7f28b9-e981-482f-8c98-3d0ff7a86af0", + "_testId": "urn:uuid:c2068455-ee5a-4d5b-8a47-abfb95c1e32a", "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." @@ -9175,34 +7152,165 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 11361, + "_idleStart": 11811, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 119, + "duration": 99, "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, 15 Sep 2024 05:01:50 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': '99', 'cf-cache-status': 'DYNAMIC', 'report-to': '{\"endpoints\":[{\"url\":\"https:\\\\/\\\\/a.nel.cloudflare.com\\\\/report\\\\/v4?s=OgnCprwONCBhTIF2A9Vp89NOAsDI93LbPW7BAqOM2dxWuzJD2nsh8PJX8FCUHMWX1W0RtVvS3TpIXalfm2qBt6x31TN0uay6XbMe3SxjRd2bXcVEqGdW4Rvd82xElmDbp0BW0qbA1a%2BQJN50c1Iv\"}],\"group\":\"cf-nel\",\"max_age\":604800}', nel: '{\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}', server: 'cloudflare', 'cf-ray': '8c360fa7fca9c947-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", + "message": "Expected issuer to error when VC has an undefined type.: expected Response { status: 200, statusText: 'OK', headers: Headers { date: 'Sun, 22 Sep 2024 05:01:48 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': '76', 'cf-cache-status': 'DYNAMIC', 'report-to': '{\"endpoints\":[{\"url\":\"https:\\\\/\\\\/a.nel.cloudflare.com\\\\/report\\\\/v4?s=96KFT762vqJ5OyQJEy3QdTYpYp6D4Ds6qkN%2FX96uQQiPh2XJPdlNLcX5El%2FZ2w3OW9kzfmj5RIypet1RhLTvlhusx6UdGhK3TFmot9WP6ySdxwqU%2BvrMkTm7SL924n3rc03w%2BLLZqWZ%2B1WjFoZdI\"}],\"group\":\"cf-nel\",\"max_age\":604800}', nel: '{\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}', server: 'cloudflare', 'cf-ray': '8c6fbd37fdcb823c-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, 15 Sep 2024 05:01:50 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': '99', 'cf-cache-status': 'DYNAMIC', 'report-to': '{\"endpoints\":[{\"url\":\"https:\\\\/\\\\/a.nel.cloudflare.com\\\\/report\\\\/v4?s=OgnCprwONCBhTIF2A9Vp89NOAsDI93LbPW7BAqOM2dxWuzJD2nsh8PJX8FCUHMWX1W0RtVvS3TpIXalfm2qBt6x31TN0uay6XbMe3SxjRd2bXcVEqGdW4Rvd82xElmDbp0BW0qbA1a%2BQJN50c1Iv\"}],\"group\":\"cf-nel\",\"max_age\":604800}', nel: '{\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}', server: 'cloudflare', 'cf-ray': '8c360fa7fca9c947-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:104: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:256:7)" + "stack": "AssertionError: Expected issuer to error when VC has an undefined type.: expected Response { status: 200, statusText: 'OK', headers: Headers { date: 'Sun, 22 Sep 2024 05:01:48 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': '76', 'cf-cache-status': 'DYNAMIC', 'report-to': '{\"endpoints\":[{\"url\":\"https:\\\\/\\\\/a.nel.cloudflare.com\\\\/report\\\\/v4?s=96KFT762vqJ5OyQJEy3QdTYpYp6D4Ds6qkN%2FX96uQQiPh2XJPdlNLcX5El%2FZ2w3OW9kzfmj5RIypet1RhLTvlhusx6UdGhK3TFmot9WP6ySdxwqU%2BvrMkTm7SL924n3rc03w%2BLLZqWZ%2B1WjFoZdI\"}],\"group\":\"cf-nel\",\"max_age\":604800}', nel: '{\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}', server: 'cloudflare', 'cf-ray': '8c6fbd37fdcb823c-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:104: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:252: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": "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, + } + ] + }, + { + "title": "Ed25519Signature2020 (issuer)", + "ctx": null, + "suites": [ + { + "title": "ACA-py", + "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 }", + "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": "LvAG6Fw_2dRktyxvDlFnc", + "ctx": null, + "_testId": "urn:uuid:316f16c3-6ac2-4e9d-a11c-41a2f14b152a", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "ACA-py", + "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": 12059, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "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": "LvAG6Fw_2dRktyxvDlFnc", + "ctx": null, + "_testId": "urn:uuid:f34c6a16-26d9-4478-8871-040bd5bf6cc5", + "_events": {}, + "_eventsCount": 1, + "cell": { + "columnId": "ACA-py", + "rowId": "\"proof\" MUST verify when using a conformant verifier." + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 12060, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 39, + "state": "passed", + "speed": "medium" + } + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [], + "_beforeAll": [ + { + "title": "\"before all\" hook in \"ACA-py\"", + "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": "LvAG6Fw_2dRktyxvDlFnc", + "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": 11912, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 147, + "_error": null + } + ], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "pycbbPT9fAb6uWKD9JaOt", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "_testId": "urn:uuid:db8813c6-f775-41ef-8ac0-5b9c3c535b80" + }, + { + "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 }", + "async": 0, + "sync": true, "_timeout": 15000, "_slow": 75, "_retries": -1, @@ -9210,30 +7318,64 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "xiopp9C56jEvyjZJ9hmjo", + "parent": "V7twfrXwMczbPwsKE4Ic3", "ctx": null, - "_testId": "urn:uuid:62b431ce-ae0f-472d-a5ad-698964f9256a", + "_testId": "urn:uuid:2b867dd8-8a54-47a0-9014-1a65a65217b9", + "_events": {}, + "_eventsCount": 1, "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": "\"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": 12334, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true }, + "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": "V7twfrXwMczbPwsKE4Ic3", + "ctx": null, + "_testId": "urn:uuid:c266cbdc-5fb8-473e-9f8d-7b96673c4228", "_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", + "cell": { + "columnId": "apicatalog.com", + "rowId": "\"proof\" MUST verify when using a conformant verifier." + }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 6471, + "_idleStart": 12335, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 70, + "duration": 91, "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", + "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist", "showDiff": false, "actual": { "response": {}, @@ -9241,21 +7383,34 @@ "options": { "credentials": "same-origin", "headers": {}, - "body": "{\"credential\":{\"id\":\"urn:uuid:cd9650bd-1e65-48e4-9814-e9c34521555d\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"}},\"options\":{}}", + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",\"https://w3id.org/security/suites/ed25519-2020/v1\"],\"id\":\"urn:uuid:549b21c1-dbe7-421d-ac55-1cd2bbc76b1f\",\"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-22T05:01:48Z\",\"proofValue\":\"z36asCNB46MwxCZkmzf1kooXUby92AEPohVtyekssLqsrKQP8XKa7Qg7xBamwXUYPnqK5Up9VM2JfyiYdPKYbqeZH\"}},\"options\":{\"checks\":[\"proof\"]}}", "method": "POST", "json": { - "credential": { - "id": "urn:uuid:cd9650bd-1e65-48e4-9814-e9c34521555d", - "type": [ - "VerifiableCredential" + "verifiableCredential": { + "@context": [ + "https://www.w3.org/2018/credentials/v1", + "https://w3id.org/security/suites/ed25519-2020/v1" ], + "id": "urn:uuid:549b21c1-dbe7-421d-ac55-1cd2bbc76b1f", + "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-22T05:01:48Z", + "proofValue": "z36asCNB46MwxCZkmzf1kooXUby92AEPohVtyekssLqsrKQP8XKa7Qg7xBamwXUYPnqK5Up9VM2JfyiYdPKYbqeZH" } }, - "options": {} + "options": { + "checks": [ + "proof" + ] + } }, "agent": { "_events": {}, @@ -9323,22 +7478,79 @@ "duplex": "half" }, "name": "HTTPError", - "requestUrl": "https://vc.apicatalog.com/credentials/issue?suite=Ed25519Signature2020", + "requestUrl": "https://vc.apicatalog.com/credentials/verify", "status": 400, "data": { - "id": "MALFORMED", - "code": "INVALID_DOCUMENT", - "message": null + "checks": [ + "PROOF", + "INVALID_SIGNATURE" + ], + "warnings": [], + "errors": [] } }, "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:343:18)\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/10-create.js:105:24)\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": "V7twfrXwMczbPwsKE4Ic3", + "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": 12100, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 234, + "_error": null + } + ], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "pycbbPT9fAb6uWKD9JaOt", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "_testId": "urn:uuid:4a07eccc-8684-4f49-bb4c-599bb1473ede" + }, + { + "title": "Danube Tech", + "ctx": null, + "suites": [], + "tests": [ { "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": "\"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, @@ -9348,137 +7560,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "MnepsQEcAPTMQkBo-l9WL", + "parent": "Q_hJ5ZctqkMDENGmhX-Ph", "ctx": null, - "_testId": "urn:uuid:4de6492c-4cec-45e4-9b92-7fdcd4129aa8", + "_testId": "urn:uuid:e26c8f9c-df4e-43cc-b961-2be6b1006c3c", + "_events": {}, + "_eventsCount": 1, "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": "\"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/#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": 7789, + "_idleStart": 12974, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 109, - "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:36cfeaf4-e71d-437f-a067-efa13e1d1c13\",\"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:36cfeaf4-e71d-437f-a067-efa13e1d1c13", - "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:343:18)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" - } + "duration": 1, + "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": "\"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, @@ -9488,185 +7595,37 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "728XFktEK1N1HXmV_UDV3", + "parent": "Q_hJ5ZctqkMDENGmhX-Ph", "ctx": null, - "_testId": "urn:uuid:cde9c70e-1d7c-4e5d-b10c-24ab8efa788d", - "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)." - }, + "_testId": "urn:uuid:38366e42-ad2e-4ddf-bb71-eabbfd9cbacd", "_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", + "cell": { + "columnId": "Danube Tech", + "rowId": "\"proof\" MUST verify when using a conformant verifier." + }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 8779, + "_idleStart": 12975, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 41, - "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:830509fd-97f0-4a8d-be5d-1e0f5c878956", - "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:830509fd-97f0-4a8d-be5d-1e0f5c878956\",\"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:830509fd-97f0-4a8d-be5d-1e0f5c878956", - "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:830509fd-97f0-4a8d-be5d-1e0f5c878956", - "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:343:18)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" - } - }, + "duration": 1267, + "state": "passed", + "speed": "slow" + } + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [], + "_beforeAll": [ { - "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": "\"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, @@ -9675,138 +7634,47 @@ "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": "cW_m5sCcuGcxtRpeevqyG", + "type": "hook", + "parent": "Q_hJ5ZctqkMDENGmhX-Ph", "ctx": null, - "_testId": "urn:uuid:c8a34d34-8eae-428b-ae86-f812aaf5025c", - "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)." - }, + "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": 9747, + "_idleStart": 12428, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 179, - "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:04f09198-3704-42e9-897f-22d947d55ab1\",\"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:04f09198-3704-42e9-897f-22d947d55ab1", - "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:343:18)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" - } - }, + "duration": 546, + "_error": null + } + ], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "pycbbPT9fAb6uWKD9JaOt", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "_testId": "urn:uuid:38c78047-5226-4613-b55c-9c772c3473cb" + }, + { + "title": "Digital Bazaar", + "ctx": null, + "suites": [], + "tests": [ { "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": "\"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, @@ -9816,131 +7684,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "nnEIcBn8RJIHJCXQFU4M_", + "parent": "O7rptZKfmBbX2g-ro4bjt", "ctx": null, - "_testId": "urn:uuid:5f61a607-240e-414d-a7b7-8e7d6e5a40d6", - "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)." - }, + "_testId": "urn:uuid:b73b2ade-0fcf-4457-b238-2f07f2c477f0", "_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", + "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": 10249, + "_idleStart": 14364, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 55, - "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:964359f5-bb0e-4860-9332-c3181e54d2ab\",\"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:964359f5-bb0e-4860-9332-c3181e54d2ab", - "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:343:18)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" - } + "duration": 1, + "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": "\"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, @@ -9950,145 +7719,86 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "YJs5thSLW9bKfuQ1vMFqV", + "parent": "O7rptZKfmBbX2g-ro4bjt", "ctx": null, - "_testId": "urn:uuid:e134098f-7b8d-46ec-b8fe-93855cc20911", + "_testId": "urn:uuid:39ec91b5-168c-4e19-98c5-06722beec30d", + "_events": {}, + "_eventsCount": 1, "cell": { - "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)." + "columnId": "Digital Bazaar", + "rowId": "\"proof\" MUST verify when using a conformant verifier." + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 14366, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true }, + "duration": 1218, + "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, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "type": "hook", + "parent": "O7rptZKfmBbX2g-ro4bjt", + "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": 10593, + "_idleStart": 14242, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 31, - "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:5e8c1503-c319-4162-974c-6aa37455ef41\",\"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:5e8c1503-c319-4162-974c-6aa37455ef41", - "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:343:18)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" - } - }, + "duration": 122, + "_error": null + } + ], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "pycbbPT9fAb6uWKD9JaOt", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "_testId": "urn:uuid:d9e5cdce-d112-43b5-8224-48f88e6e1ad1" + }, + { + "title": "EWF", + "ctx": null, + "suites": [], + "tests": [ { "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": "\"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, @@ -10098,132 +7808,40 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "VO2RMwyXVwXd48t8IXe1B", + "parent": "T6qc5-yDgk4MQsAl131GR", "ctx": null, - "_testId": "urn:uuid:7b4ebc80-2009-4527-a460-fbef2337fc63", - "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)." - }, + "_testId": "urn:uuid:214b0359-aa7f-485b-9ea9-4048eb192a43", "_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", + "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": 10810, + "_idleStart": 15892, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 25, + "duration": 1, "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:5117e37d-f71e-4932-9f63-fea5d329eecb\",\"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:5117e37d-f71e-4932-9f63-fea5d329eecb", - "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:343:18)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" + "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": "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": "\"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, @@ -10233,139 +7851,37 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "JnHIhvZh4PEjUNava_pb9", + "parent": "T6qc5-yDgk4MQsAl131GR", "ctx": null, - "_testId": "urn:uuid:69430eba-7831-458a-b961-a617a108d2c8", - "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)." - }, + "_testId": "urn:uuid:ccc1aa40-fdf3-4549-8cff-bc963cc9cbe1", "_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", + "cell": { + "columnId": "EWF", + "rowId": "\"proof\" MUST verify when using a conformant verifier." + }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 11481, + "_idleStart": 15893, "_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:b1e3eb89-3e07-436b-8750-761a0e3798d2\",\"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:b1e3eb89-3e07-436b-8750-761a0e3798d2", - "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:343:18)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)" - } + "duration": 96, + "state": "passed", + "speed": "slow" } - ] - }, - { - "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": [ + ], + "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": "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": "\"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, @@ -10374,25 +7890,47 @@ "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": "xiopp9C56jEvyjZJ9hmjo", + "type": "hook", + "parent": "T6qc5-yDgk4MQsAl131GR", "ctx": null, - "_testId": "urn:uuid:32ccba1b-7baf-4488-bd22-ce0d7d6810ca", - "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://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": 1, - "state": "passed", - "speed": "fast" - }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 15584, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 307, + "_error": null + } + ], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "pycbbPT9fAb6uWKD9JaOt", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "_testId": "urn:uuid:e89e3003-9a02-4bc7-a6f4-afe3e75c957d" + }, + { + "title": "LearnCard", + "ctx": null, + "suites": [], + "tests": [ { "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": "\"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, @@ -10402,51 +7940,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "MnepsQEcAPTMQkBo-l9WL", + "parent": "94uVrWeDQdnUrV1CXbl29", "ctx": null, - "_testId": "urn:uuid:29e98971-1df2-4feb-a7ec-3cb385a5129d", - "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:6d406591-afdb-452e-ba7a-fe2ca18d031a", "_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 }", - "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": "728XFktEK1N1HXmV_UDV3", - "ctx": null, - "_testId": "urn:uuid:2857e91d-9364-4d42-aa8d-fddd1fffed33", "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": "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": 16110, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true }, - "_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": "\"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, @@ -10456,24 +7975,37 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "cW_m5sCcuGcxtRpeevqyG", + "parent": "94uVrWeDQdnUrV1CXbl29", "ctx": null, - "_testId": "urn:uuid:d5257eb1-2ead-458d-9ce4-0cb4964bd04b", - "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." - }, + "_testId": "urn:uuid:b4029784-e943-4aaa-a613-368e6979e8e9", "_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, + "cell": { + "columnId": "LearnCard", + "rowId": "\"proof\" MUST verify when using a conformant verifier." + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 16110, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 73, "state": "passed", - "speed": "fast" - }, + "speed": "medium" + } + ], + "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": "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": "\"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, @@ -10482,25 +8014,47 @@ "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": "nnEIcBn8RJIHJCXQFU4M_", + "type": "hook", + "parent": "94uVrWeDQdnUrV1CXbl29", "ctx": null, - "_testId": "urn:uuid:5c7ac541-219e-46d1-b6d9-cf1e554df50b", - "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." - }, + "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://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" - }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 15989, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 121, + "_error": null + } + ], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "pycbbPT9fAb6uWKD9JaOt", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "_testId": "urn:uuid:87cf8fcb-4bd7-453e-a739-18336807050f" + }, + { + "title": "SpruceID", + "ctx": null, + "suites": [], + "tests": [ { "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": "\"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, @@ -10510,24 +8064,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "YJs5thSLW9bKfuQ1vMFqV", + "parent": "ZJbubX3nYpT86jmv4_OTr", "ctx": null, - "_testId": "urn:uuid:238387d3-08b8-4f1b-a8db-af95f7ff4f05", - "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." - }, + "_testId": "urn:uuid:6f291b34-8181-414a-9105-47b613e95ccc", "_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, + "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": 16293, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 1, "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": "\"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, @@ -10537,24 +8099,37 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "VO2RMwyXVwXd48t8IXe1B", + "parent": "ZJbubX3nYpT86jmv4_OTr", "ctx": null, - "_testId": "urn:uuid:5c8c64d1-411e-44a0-a22c-06dc6747211b", + "_testId": "urn:uuid:6381d489-b6bb-4ecd-910f-d7a27b8f7709", + "_events": {}, + "_eventsCount": 1, "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": "\"proof\" MUST verify when using a conformant verifier." }, - "_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 }", + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 16294, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 39, + "state": "passed", + "speed": "medium" + } + ], + "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 }", "async": 0, "sync": true, "_timeout": 15000, @@ -10563,31 +8138,47 @@ "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": "JnHIhvZh4PEjUNava_pb9", + "type": "hook", + "parent": "ZJbubX3nYpT86jmv4_OTr", "ctx": null, - "_testId": "urn:uuid:909f79f4-99f9-47e4-b553-bdcc0fb35fc6", - "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." - }, + "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://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" + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 16184, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 108, + "_error": null } - ] + ], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "pycbbPT9fAb6uWKD9JaOt", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "_testId": "urn:uuid:910d566b-b0a7-4c1c-9b0d-4c05ac0e043d" }, { - "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": [ + "title": "Trinsic", + "ctx": null, + "suites": [], + "tests": [ { "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": "\"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, @@ -10597,24 +8188,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "xiopp9C56jEvyjZJ9hmjo", + "parent": "fwPM9l80m4n7-sIhcGwkl", "ctx": null, - "_testId": "urn:uuid:37501f7a-0f89-47c5-ac2d-6e4e5f06579f", - "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." - }, + "_testId": "urn:uuid:a300332d-230d-4b4f-903d-ccf339eee674", "_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", + "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": 16401, + "_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": "\"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, @@ -10624,24 +8223,37 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "MnepsQEcAPTMQkBo-l9WL", + "parent": "fwPM9l80m4n7-sIhcGwkl", "ctx": null, - "_testId": "urn:uuid:7231558a-0737-4d5c-b074-1ce3c2ee5522", - "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." - }, + "_testId": "urn:uuid:a268a1bc-73cb-48cf-9d18-9d363e0a3bcf", "_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, + "cell": { + "columnId": "Trinsic", + "rowId": "\"proof\" MUST verify when using a conformant verifier." + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 16401, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 85, "state": "passed", - "speed": "fast" - }, + "speed": "slow" + } + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [], + "_beforeAll": [ { - "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": "\"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, @@ -10650,25 +8262,77 @@ "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": "728XFktEK1N1HXmV_UDV3", + "type": "hook", + "parent": "fwPM9l80m4n7-sIhcGwkl", "ctx": null, - "_testId": "urn:uuid:c569a626-f6be-4ad4-9fea-7cbf8ed5702a", - "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." - }, + "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%20an%20%5BXMLSCHEMA11%2D2%5D%20dateTimeStamp%20string%2C%20either%20in%20Universal%20Coordinated%20Time", - "duration": 0, - "state": "passed", - "speed": "fast" - }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 16333, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 67, + "_error": null + } + ], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "pycbbPT9fAb6uWKD9JaOt", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "_testId": "urn:uuid:cd0185da-8e11-4eda-9921-4de3c052f4b3" + } + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [], + "_beforeAll": [], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "NT834VBWEc1P4o_dkTTfV", + "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:ceab1881-c96e-4c22-a21f-5fb55ec72e6f", + "columns": [ + "ACA-py", + "apicatalog.com", + "Danube Tech", + "Digital Bazaar", + "EWF", + "LearnCard", + "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 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": "\"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, @@ -10678,24 +8342,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "cW_m5sCcuGcxtRpeevqyG", + "parent": "LvAG6Fw_2dRktyxvDlFnc", "ctx": null, - "_testId": "urn:uuid:3f2d8c96-5db6-4b39-8513-0a1d3bdd0c3d", - "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." - }, + "_testId": "urn:uuid:316f16c3-6ac2-4e9d-a11c-41a2f14b152a", "_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, + "cell": { + "columnId": "ACA-py", + "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": 12059, + "_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": "\"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, @@ -10705,24 +8377,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "nnEIcBn8RJIHJCXQFU4M_", + "parent": "V7twfrXwMczbPwsKE4Ic3", "ctx": null, - "_testId": "urn:uuid:5b256314-2da7-4c9e-a4cd-62253936842f", - "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." - }, + "_testId": "urn:uuid:2b867dd8-8a54-47a0-9014-1a65a65217b9", "_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, + "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": 12334, + "_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": "\"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, @@ -10732,24 +8412,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "YJs5thSLW9bKfuQ1vMFqV", + "parent": "Q_hJ5ZctqkMDENGmhX-Ph", "ctx": null, - "_testId": "urn:uuid:a62e38d1-90fc-4cad-bcfc-788b27e628f3", - "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." - }, + "_testId": "urn:uuid:e26c8f9c-df4e-43cc-b961-2be6b1006c3c", "_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, + "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": 12974, + "_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": "\"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, @@ -10759,24 +8447,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "VO2RMwyXVwXd48t8IXe1B", + "parent": "O7rptZKfmBbX2g-ro4bjt", "ctx": null, - "_testId": "urn:uuid:fa9b2a97-d027-40ec-ab77-70a91a8175c3", - "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." - }, + "_testId": "urn:uuid:b73b2ade-0fcf-4457-b238-2f07f2c477f0", "_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, + "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": 14364, + "_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": "\"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, @@ -10786,111 +8482,40 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "JnHIhvZh4PEjUNava_pb9", + "parent": "T6qc5-yDgk4MQsAl131GR", "ctx": null, - "_testId": "urn:uuid:b2155018-00ae-4dd4-a015-fd75e5366ccc", - "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." - }, + "_testId": "urn:uuid:214b0359-aa7f-485b-9ea9-4048eb192a43", "_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": "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": "xiopp9C56jEvyjZJ9hmjo", - "ctx": null, - "_testId": "urn:uuid:ca98b7ef-15ca-43e1-8284-3857a5b88182", - "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." - }, - "_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": "MnepsQEcAPTMQkBo-l9WL", - "ctx": null, - "_testId": "urn:uuid:5cf30e25-0aa8-4523-8f43-2efc2c6a57f4", "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." + "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." }, - "_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": "728XFktEK1N1HXmV_UDV3", - "ctx": null, - "_testId": "urn:uuid:9e24c36e-8b29-4c81-b97f-c5a8126fc3e9", - "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." + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 15892, + "_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, - "state": "passed", - "speed": "fast" + "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)" + } }, { "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": "\"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, @@ -10900,51 +8525,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "cW_m5sCcuGcxtRpeevqyG", + "parent": "94uVrWeDQdnUrV1CXbl29", "ctx": null, - "_testId": "urn:uuid:4d60dd61-0b38-49f9-86b5-e517745aa6b9", - "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." - }, + "_testId": "urn:uuid:6d406591-afdb-452e-ba7a-fe2ca18d031a", "_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": "nnEIcBn8RJIHJCXQFU4M_", - "ctx": null, - "_testId": "urn:uuid:775e9779-d093-4796-ade9-e6297898e149", "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." + "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": 16110, + "_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, "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 }", + "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, @@ -10954,51 +8560,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "YJs5thSLW9bKfuQ1vMFqV", + "parent": "ZJbubX3nYpT86jmv4_OTr", "ctx": null, - "_testId": "urn:uuid:7d91cb5c-35af-4105-8617-1c6540a135c5", - "cell": { - "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." - }, + "_testId": "urn:uuid:6f291b34-8181-414a-9105-47b613e95ccc", "_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": "VO2RMwyXVwXd48t8IXe1B", - "ctx": null, - "_testId": "urn:uuid:c79ce6cd-4d3e-4d0b-ad0c-cb44187a4a67", "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." + "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/#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, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 16293, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 1, "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 }", + "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, @@ -11008,16 +8595,24 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "JnHIhvZh4PEjUNava_pb9", + "parent": "fwPM9l80m4n7-sIhcGwkl", "ctx": null, - "_testId": "urn:uuid:e12d6693-4ce1-49bd-8ad2-e3561d7b856e", + "_testId": "urn:uuid:a300332d-230d-4b4f-903d-ccf339eee674", + "_events": {}, + "_eventsCount": 1, "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." + "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": 16401, + "_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, "state": "passed", "speed": "fast" @@ -11025,13 +8620,12 @@ ] }, { - "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.", + "id": "\"proof\" MUST verify when using a conformant verifier.", "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": "\"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, @@ -11041,78 +8635,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "xiopp9C56jEvyjZJ9hmjo", + "parent": "LvAG6Fw_2dRktyxvDlFnc", "ctx": null, - "_testId": "urn:uuid:523555e4-7f8a-422f-ad57-1dbf43be2984", - "cell": { - "columnId": "apicatalog.com", - "rowId": "(challenge) A string value that SHOULD be included in a proof if a domain is specified." - }, + "_testId": "urn:uuid:f34c6a16-26d9-4478-8871-040bd5bf6cc5", "_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": "MnepsQEcAPTMQkBo-l9WL", - "ctx": null, - "_testId": "urn:uuid:cffb3427-48f7-445b-a5b5-136dba1f073a", "cell": { - "columnId": "Danube Tech", - "rowId": "(challenge) A string value that SHOULD be included in a proof if a domain is specified." + "columnId": "ACA-py", + "rowId": "\"proof\" MUST verify when using a conformant verifier." }, - "_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": "728XFktEK1N1HXmV_UDV3", - "ctx": null, - "_testId": "urn:uuid:461cad3d-8915-4d80-9aa3-b48e93951330", - "cell": { - "columnId": "Digital Bazaar", - "rowId": "(challenge) A string value that SHOULD be included in a proof if a domain is specified." + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 12060, + "_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": 39, "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": "\"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, @@ -11122,208 +8670,25 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "cW_m5sCcuGcxtRpeevqyG", + "parent": "V7twfrXwMczbPwsKE4Ic3", "ctx": null, - "_testId": "urn:uuid:00371dce-7559-48eb-b04b-cc37ec77bd65", - "cell": { - "columnId": "EWF", - "rowId": "(challenge) A string value that SHOULD be included in a proof if a domain is specified." - }, + "_testId": "urn:uuid:c266cbdc-5fb8-473e-9f8d-7b96673c4228", "_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" - }, - { - "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": "nnEIcBn8RJIHJCXQFU4M_", - "ctx": null, - "_testId": "urn:uuid:3f8878f9-797b-426f-bde5-938dc48e35b1", "cell": { - "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/#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": "(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": "YJs5thSLW9bKfuQ1vMFqV", - "ctx": null, - "_testId": "urn:uuid:037f105c-b1e2-4831-a100-e781783bc4c5", - "cell": { - "columnId": "OpSecId", - "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" - }, - { - "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": "VO2RMwyXVwXd48t8IXe1B", - "ctx": null, - "_testId": "urn:uuid:31806010-d4ff-4e7e-aa86-73a73d4d05a3", - "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" - }, - { - "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": "JnHIhvZh4PEjUNava_pb9", - "ctx": null, - "_testId": "urn:uuid:b8c6538b-ee80-47b5-a416-783a4dada1ef", - "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 }", - "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": "lfiUsPhEOAKSx6_zMhmWh", - "ctx": null, - "_testId": "urn:uuid:35c8b2c1-59e7-49ed-9fe4-46f3bef5d6c8", - "_events": {}, - "_eventsCount": 1, - "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": 11680, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 2, - "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": "lfiUsPhEOAKSx6_zMhmWh", - "ctx": null, - "_testId": "urn:uuid:093c52a6-7c6c-404a-be5f-50f7b43da75e", - "_events": {}, - "_eventsCount": 1, - "cell": { - "columnId": "apicatalog.com", - "rowId": "\"proof\" MUST verify when using a conformant verifier." + "columnId": "apicatalog.com", + "rowId": "\"proof\" MUST verify when using a conformant verifier." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 11681, + "_idleStart": 12335, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 97, + "duration": 91, "state": "failed", "err": { "name": "AssertionError", @@ -11335,7 +8700,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:7a1526a5-bc1b-4e8d-81b4-61269bfb9bd7\",\"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-15T05:01:50Z\",\"proofValue\":\"z2ygR6C6RZ2wuS48GRRXFZM3yzXYSB4DrrtL6KNE16FpJSDGGAEt8q97Gkd4SePB1fRhVWeTMqwukrMzs5Nysg6Hz\"}},\"options\":{\"checks\":[\"proof\"]}}", + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",\"https://w3id.org/security/suites/ed25519-2020/v1\"],\"id\":\"urn:uuid:549b21c1-dbe7-421d-ac55-1cd2bbc76b1f\",\"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-22T05:01:48Z\",\"proofValue\":\"z36asCNB46MwxCZkmzf1kooXUby92AEPohVtyekssLqsrKQP8XKa7Qg7xBamwXUYPnqK5Up9VM2JfyiYdPKYbqeZH\"}},\"options\":{\"checks\":[\"proof\"]}}", "method": "POST", "json": { "verifiableCredential": { @@ -11343,7 +8708,7 @@ "https://www.w3.org/2018/credentials/v1", "https://w3id.org/security/suites/ed25519-2020/v1" ], - "id": "urn:uuid:7a1526a5-bc1b-4e8d-81b4-61269bfb9bd7", + "id": "urn:uuid:549b21c1-dbe7-421d-ac55-1cd2bbc76b1f", "type": "VerifiableCredential", "issuer": "https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020", "issuanceDate": "2020-03-16T22:37:26.544Z", @@ -11354,8 +8719,8 @@ "verificationMethod": "did:key:z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y#z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y", "type": "Ed25519Signature2020", "proofPurpose": "assertionMethod", - "created": "2024-09-15T05:01:50Z", - "proofValue": "z2ygR6C6RZ2wuS48GRRXFZM3yzXYSB4DrrtL6KNE16FpJSDGGAEt8q97Gkd4SePB1fRhVWeTMqwukrMzs5Nysg6Hz" + "created": "2024-09-22T05:01:48Z", + "proofValue": "z36asCNB46MwxCZkmzf1kooXUby92AEPohVtyekssLqsrKQP8XKa7Qg7xBamwXUYPnqK5Up9VM2JfyiYdPKYbqeZH" } }, "options": { @@ -11444,16 +8809,11 @@ "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": [ + }, { - "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 }", + "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, @@ -11462,47 +8822,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "type": "hook", - "parent": "lfiUsPhEOAKSx6_zMhmWh", - "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": "Q_hJ5ZctqkMDENGmhX-Ph", + "ctx": null, + "_testId": "urn:uuid:38366e42-ad2e-4ddf-bb71-eabbfd9cbacd", "_events": {}, "_eventsCount": 1, + "cell": { + "columnId": "Danube Tech", + "rowId": "\"proof\" MUST verify when using a conformant verifier." + }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 11509, + "_idleStart": 12975, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 171, - "_error": null - } - ], - "_afterEach": [], - "_afterAll": [], - "_timeout": 15000, - "_slow": 75, - "_bail": false, - "_onlyTests": [], - "_onlySuites": [], - "delayed": false, - "parent": "yC7XfAo6CSQKGaRToTnW_", - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "_testId": "urn:uuid:5bf71720-e0e0-4609-92a4-e67d6d7bbe4f" - }, - { - "title": "Danube Tech", - "ctx": null, - "suites": [], - "tests": [ + "duration": 1267, + "state": "passed", + "speed": "slow" + }, { "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": "\"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, @@ -11512,27 +8858,27 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "bGsMa7N3F4ToxFYNoUXT6", + "parent": "O7rptZKfmBbX2g-ro4bjt", "ctx": null, - "_testId": "urn:uuid:d719088c-9260-48f3-b061-2f9102022d6e", + "_testId": "urn:uuid:39ec91b5-168c-4e19-98c5-06722beec30d", "_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." + "columnId": "Digital Bazaar", + "rowId": "\"proof\" MUST verify when using a conformant verifier." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 11965, + "_idleStart": 14366, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 1, + "duration": 1218, "state": "passed", - "speed": "fast" + "speed": "slow" }, { "type": "test", @@ -11547,37 +8893,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "bGsMa7N3F4ToxFYNoUXT6", + "parent": "T6qc5-yDgk4MQsAl131GR", "ctx": null, - "_testId": "urn:uuid:cebd645d-e1ad-4ee5-8cc6-82c39c5a5829", + "_testId": "urn:uuid:ccc1aa40-fdf3-4549-8cff-bc963cc9cbe1", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "Danube Tech", + "columnId": "EWF", "rowId": "\"proof\" MUST verify when using a conformant verifier." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 11966, + "_idleStart": 15893, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 1339, + "duration": 96, "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 }", + "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, @@ -11586,47 +8927,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "type": "hook", - "parent": "bGsMa7N3F4ToxFYNoUXT6", - "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": "94uVrWeDQdnUrV1CXbl29", + "ctx": null, + "_testId": "urn:uuid:b4029784-e943-4aaa-a613-368e6979e8e9", "_events": {}, "_eventsCount": 1, + "cell": { + "columnId": "LearnCard", + "rowId": "\"proof\" MUST verify when using a conformant verifier." + }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 11779, + "_idleStart": 16110, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 186, - "_error": null - } - ], - "_afterEach": [], - "_afterAll": [], - "_timeout": 15000, - "_slow": 75, - "_bail": false, - "_onlyTests": [], - "_onlySuites": [], - "delayed": false, - "parent": "yC7XfAo6CSQKGaRToTnW_", - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "_testId": "urn:uuid:b7bae627-6ad2-4996-a6af-7171b4eb8902" - }, - { - "title": "Digital Bazaar", - "ctx": null, - "suites": [], - "tests": [ + "duration": 73, + "state": "passed", + "speed": "medium" + }, { "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": "\"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, @@ -11636,27 +8963,27 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "8v4XESKhWvQkRQrK1krje", + "parent": "ZJbubX3nYpT86jmv4_OTr", "ctx": null, - "_testId": "urn:uuid:42ec5a14-a4d0-49d0-934f-d74786e0a4e2", + "_testId": "urn:uuid:6381d489-b6bb-4ecd-910f-d7a27b8f7709", "_events": {}, "_eventsCount": 1, "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": "SpruceID", + "rowId": "\"proof\" MUST verify when using a conformant verifier." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 13914, + "_idleStart": 16294, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 1, + "duration": 39, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", @@ -11671,37 +8998,45 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "parent": "8v4XESKhWvQkRQrK1krje", + "parent": "fwPM9l80m4n7-sIhcGwkl", "ctx": null, - "_testId": "urn:uuid:0108c832-833f-451d-9872-2f4ae89c445b", + "_testId": "urn:uuid:a268a1bc-73cb-48cf-9d18-9d363e0a3bcf", "_events": {}, "_eventsCount": 1, "cell": { - "columnId": "Digital Bazaar", + "columnId": "Trinsic", "rowId": "\"proof\" MUST verify when using a conformant verifier." }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 13915, + "_idleStart": 16401, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 641, + "duration": 85, "state": "passed", "speed": "slow" } - ], - "root": false, - "pending": false, - "_retries": -1, - "_beforeEach": [], - "_beforeAll": [ + ] + } + ] + }, + { + "title": "Data Integrity (verifier)", + "ctx": null, + "suites": [ + { + "title": "ACA-py", + "ctx": null, + "suites": [], + "tests": [ { - "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 }", + "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 }", "async": 0, "sync": true, "_timeout": 15000, @@ -11710,47 +9045,34 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "type": "hook", - "parent": "8v4XESKhWvQkRQrK1krje", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "kmG8XZyUxDUPZ6BLYMr9P", "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:1aa95047-6784-41ed-90fc-f4a85d57d60a", + "cell": { + "columnId": "ACA-py", + "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": 13305, + "_idleStart": 16522, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 609, - "_error": null - } - ], - "_afterEach": [], - "_afterAll": [], - "_timeout": 15000, - "_slow": 75, - "_bail": false, - "_onlyTests": [], - "_onlySuites": [], - "delayed": false, - "parent": "yC7XfAo6CSQKGaRToTnW_", - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "_testId": "urn:uuid:d8aa1bd7-7ddb-4ed9-a0d6-359dcdd10374" - }, - { - "title": "EWF", - "ctx": null, - "suites": [], - "tests": [ + "duration": 173, + "state": "passed", + "speed": "slow" + }, { "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": "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, @@ -11759,41 +9081,34 @@ "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": "KED5x0KehZdSXzo7zQiTG", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "kmG8XZyUxDUPZ6BLYMr9P", "ctx": null, - "_testId": "urn:uuid:7d7dedb5-0230-4f78-b47c-36e6cefe9936", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:5fd7bf6f-4d6e-40a8-a657-ded8f781adcd", "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": "ACA-py", + "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": 14971, + "_idleStart": 16696, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "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)" - } + "duration": 25, + "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": "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, @@ -11802,38 +9117,33 @@ "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": "KED5x0KehZdSXzo7zQiTG", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "kmG8XZyUxDUPZ6BLYMr9P", "ctx": null, - "_testId": "urn:uuid:6ec6bb91-06f0-45d0-b8cf-4216b6682665", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:393d6f28-d592-4d38-96b8-b125630b5ff9", "cell": { - "columnId": "EWF", - "rowId": "\"proof\" MUST verify when using a conformant verifier." + "columnId": "ACA-py", + "rowId": "If the \"proof\" field is missing, an error MUST be raised." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 14972, + "_idleStart": 16721, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 118, + "duration": 25, "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": "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, @@ -11842,47 +9152,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "type": "hook", - "parent": "KED5x0KehZdSXzo7zQiTG", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "kmG8XZyUxDUPZ6BLYMr9P", "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:6f7bf3d3-01c3-418f-a53b-490b15616860", + "cell": { + "columnId": "ACA-py", + "rowId": "If the \"proof\" field is invalid, an error MUST be raised." + }, "_events": {}, "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 14557, + "_idleStart": 16748, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 414, - "_error": null - } - ], - "_afterEach": [], - "_afterAll": [], - "_timeout": 15000, - "_slow": 75, - "_bail": false, - "_onlyTests": [], - "_onlySuites": [], - "delayed": false, - "parent": "yC7XfAo6CSQKGaRToTnW_", - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "_testId": "urn:uuid:2e45b150-ab2c-4f84-b1ee-84923f7c3773" - }, - { - "title": "LearnCard", - "ctx": null, - "suites": [], - "tests": [ + "duration": 26, + "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": "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, @@ -11891,33 +9187,33 @@ "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": "L4fxO0t9x7edtGACx8ivm", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "kmG8XZyUxDUPZ6BLYMr9P", "ctx": null, - "_testId": "urn:uuid:67aadd28-7808-442f-8c1d-62490341e88d", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:b5cd852b-ef12-4acc-bdde-029c91b52467", "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." + "columnId": "ACA-py", + "rowId": "If the \"proof.type\" field is missing, an error MUST be raised." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 15225, + "_idleStart": 16774, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 29, "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": "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, @@ -11926,38 +9222,33 @@ "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": "L4fxO0t9x7edtGACx8ivm", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "kmG8XZyUxDUPZ6BLYMr9P", "ctx": null, - "_testId": "urn:uuid:a5778d38-ed97-4ed6-8265-863592440bb2", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:0bb5ba7f-f808-4602-a1f8-a4be99f0450b", "cell": { - "columnId": "LearnCard", - "rowId": "\"proof\" MUST verify when using a conformant verifier." + "columnId": "ACA-py", + "rowId": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 15225, + "_idleStart": 16803, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 80, + "duration": 25, "state": "passed", - "speed": "slow" - } - ], - "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": "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, @@ -11966,47 +9257,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "type": "hook", - "parent": "L4fxO0t9x7edtGACx8ivm", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "kmG8XZyUxDUPZ6BLYMr9P", "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:defe5538-e323-434e-89e5-72ca33287c2a", + "cell": { + "columnId": "ACA-py", + "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." + }, "_events": {}, "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 15090, + "_idleStart": 16829, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 134, - "_error": null - } - ], - "_afterEach": [], - "_afterAll": [], - "_timeout": 15000, - "_slow": 75, - "_bail": false, - "_onlyTests": [], - "_onlySuites": [], - "delayed": false, - "parent": "yC7XfAo6CSQKGaRToTnW_", - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "_testId": "urn:uuid:fbf26b99-6be7-4ef9-bde2-1ec3e54dd1e1" - }, - { - "title": "OpSecId", - "ctx": null, - "suites": [], - "tests": [ + "duration": 23, + "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": "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, @@ -12015,33 +9292,33 @@ "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": "7QMjtYs7K1azzxGtIRk0m", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "kmG8XZyUxDUPZ6BLYMr9P", "ctx": null, - "_testId": "urn:uuid:2a9466a4-277e-4438-a95f-57ac22e9493e", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:5c78ba6b-a173-4ad3-bbce-3ca7e3a9410b", "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." + "columnId": "ACA-py", + "rowId": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 15346, + "_idleStart": 16852, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 1, + "duration": 25, "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": "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, @@ -12050,38 +9327,33 @@ "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": "7QMjtYs7K1azzxGtIRk0m", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "kmG8XZyUxDUPZ6BLYMr9P", "ctx": null, - "_testId": "urn:uuid:61900ee2-72bd-434e-a751-45b4eaaa176f", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:c48c87b5-d0e6-4913-afe5-2725e8ead66a", "cell": { - "columnId": "OpSecId", - "rowId": "\"proof\" MUST verify when using a conformant verifier." + "columnId": "ACA-py", + "rowId": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 15347, + "_idleStart": 16877, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 36, + "duration": 26, "state": "passed", "speed": "fast" - } - ], - "root": false, - "pending": false, - "_retries": -1, - "_beforeEach": [], - "_beforeAll": [ + }, { - "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 }", + "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 }", "async": 0, "sync": true, "_timeout": 15000, @@ -12090,47 +9362,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "type": "hook", - "parent": "7QMjtYs7K1azzxGtIRk0m", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "kmG8XZyUxDUPZ6BLYMr9P", "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:9565f12e-926b-4721-bda7-eda362fe66d6", + "cell": { + "columnId": "ACA-py", + "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." + }, "_events": {}, "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 15305, + "_idleStart": 16903, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 41, - "_error": null - } - ], - "_afterEach": [], - "_afterAll": [], - "_timeout": 15000, - "_slow": 75, - "_bail": false, - "_onlyTests": [], - "_onlySuites": [], - "delayed": false, - "parent": "yC7XfAo6CSQKGaRToTnW_", - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "_testId": "urn:uuid:4f68e5f6-5b82-4696-9a38-a23ed2ee1d86" - }, - { - "title": "SpruceID", - "ctx": null, - "suites": [], - "tests": [ + "duration": 25, + "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": "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, @@ -12139,33 +9397,34 @@ "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": "9RG68r8Nx6QFFLr22i45g", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "kmG8XZyUxDUPZ6BLYMr9P", "ctx": null, - "_testId": "urn:uuid:6c09dcc2-e6c2-4256-94c0-d34bf3317877", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:e4c8bb53-c82f-4af4-9d33-8d0db2ec0dae", "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." + "columnId": "ACA-py", + "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": 15412, + "_idleStart": 16929, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 25, "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 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, @@ -12174,38 +9433,34 @@ "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": "9RG68r8Nx6QFFLr22i45g", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "kmG8XZyUxDUPZ6BLYMr9P", "ctx": null, - "_testId": "urn:uuid:5f76863e-b8f7-4f1d-8db8-7347adb1aafc", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:630d9d15-5f9d-4d95-a81e-d25aeffd6bbe", "cell": { - "columnId": "SpruceID", - "rowId": "\"proof\" MUST verify when using a conformant verifier." + "columnId": "ACA-py", + "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": 15413, + "_idleStart": 16954, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 30, + "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": "(\"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, @@ -12214,47 +9469,34 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "type": "hook", - "parent": "9RG68r8Nx6QFFLr22i45g", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "kmG8XZyUxDUPZ6BLYMr9P", "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:cfcc6dbe-fae1-4602-a8fd-4fc831fe9686", + "cell": { + "columnId": "ACA-py", + "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": 15383, + "_idleStart": 16955, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 29, - "_error": null - } - ], - "_afterEach": [], - "_afterAll": [], - "_timeout": 15000, - "_slow": 75, - "_bail": false, - "_onlyTests": [], - "_onlySuites": [], - "delayed": false, - "parent": "yC7XfAo6CSQKGaRToTnW_", - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "_testId": "urn:uuid:144b0018-b234-4e52-9274-48ba482376ef" - }, - { - "title": "Trinsic", - "ctx": null, - "suites": [], - "tests": [ + "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": "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, @@ -12263,33 +9505,34 @@ "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": "N72wHf6VUT98pJU6jXmCi", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "kmG8XZyUxDUPZ6BLYMr9P", "ctx": null, - "_testId": "urn:uuid:2fd5a22c-4101-473c-a11c-1faf5137dea6", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:6129c431-45e2-473e-a351-9dfc125d130c", "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." + "columnId": "ACA-py", + "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": 15494, + "_idleStart": 16955, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 77, "state": "passed", - "speed": "fast" + "speed": "slow" }, { "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 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, @@ -12298,38 +9541,61 @@ "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": "N72wHf6VUT98pJU6jXmCi", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "kmG8XZyUxDUPZ6BLYMr9P", "ctx": null, - "_testId": "urn:uuid:597c8dae-2727-4bfb-87ca-8e2a04fad780", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:bbb6390b-bdfc-414c-879f-d2b6cb4a8037", "cell": { - "columnId": "Trinsic", - "rowId": "\"proof\" MUST verify when using a conformant verifier." + "columnId": "ACA-py", + "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": 15495, + "_idleStart": 17032, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 99, + "duration": 26, "state": "passed", - "speed": "slow" + "speed": "fast" } ], "root": false, "pending": false, "_retries": -1, - "_beforeEach": [], + "_beforeEach": [ + { + "title": "\"before each\" hook in \"ACA-py\"", + "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": "kmG8XZyUxDUPZ6BLYMr9P", + "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 \"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 }", + "title": "\"before all\" hook in \"ACA-py\"", + "body": "async function() {\n proofValueTests = shouldBeProofValue({credentials, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -12339,9 +9605,9 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "N72wHf6VUT98pJU6jXmCi", + "parent": "kmG8XZyUxDUPZ6BLYMr9P", "ctx": null, - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", + "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, @@ -12349,12 +9615,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 15443, + "_idleStart": 16519, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 51, + "duration": 0, "_error": null } ], @@ -12366,49 +9632,19 @@ "_onlyTests": [], "_onlySuites": [], "delayed": false, - "parent": "yC7XfAo6CSQKGaRToTnW_", - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/10-create.js", - "_testId": "urn:uuid:a35648ec-58bb-482c-9836-3e70462a50ad" - } - ], - "root": false, - "pending": false, - "_retries": -1, - "_beforeEach": [], - "_beforeAll": [], - "_afterEach": [], - "_afterAll": [], - "_timeout": 15000, - "_slow": 75, - "_bail": false, - "_onlyTests": [], - "_onlySuites": [], - "delayed": false, - "parent": "80HWw4IpbOh2dthU9AhuI", - "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:24aa8eae-5970-4c13-a7e7-c025e2fa2500", - "columns": [ - "apicatalog.com", - "Danube Tech", - "Digital Bazaar", - "EWF", - "LearnCard", - "OpSecId", - "SpruceID", - "Trinsic" - ], - "rows": [ + "parent": "M21B637dnU9eXk0bAsAA1", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "_testId": "urn:uuid:9e0d8885-4c23-4378-bab5-fc3c2ebe32ee" + }, { - "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": [ + "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 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, @@ -12417,33 +9653,34 @@ "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": "lfiUsPhEOAKSx6_zMhmWh", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "RaxdbvT1t4jg8M1E4Yot7", "ctx": null, - "_testId": "urn:uuid:35c8b2c1-59e7-49ed-9fe4-46f3bef5d6c8", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:5ab7e18b-c458-41f6-93c1-b2a798e61fc0", "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." + "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": 11680, + "_idleStart": 17059, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 2, + "duration": 118, "state": "passed", - "speed": "fast" + "speed": "slow" }, { "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": "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, @@ -12452,33 +9689,34 @@ "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": "bGsMa7N3F4ToxFYNoUXT6", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "RaxdbvT1t4jg8M1E4Yot7", "ctx": null, - "_testId": "urn:uuid:d719088c-9260-48f3-b061-2f9102022d6e", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:469448d2-4402-4a81-9e54-c59a06292d69", "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": "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": 11965, + "_idleStart": 17178, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 1, + "duration": 55, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "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": "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, @@ -12487,33 +9725,33 @@ "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": "8v4XESKhWvQkRQrK1krje", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "RaxdbvT1t4jg8M1E4Yot7", "ctx": null, - "_testId": "urn:uuid:42ec5a14-a4d0-49d0-934f-d74786e0a4e2", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:47be16ca-c13c-4a40-935f-a46b8bb0c86f", "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": "apicatalog.com", + "rowId": "If the \"proof\" field is missing, an error MUST be raised." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 13914, + "_idleStart": 17233, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 1, + "duration": 64, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "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": "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, @@ -12522,41 +9760,33 @@ "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": "KED5x0KehZdSXzo7zQiTG", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "RaxdbvT1t4jg8M1E4Yot7", "ctx": null, - "_testId": "urn:uuid:7d7dedb5-0230-4f78-b47c-36e6cefe9936", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:3dc807e2-d270-4d04-abe0-87f2b377eb37", "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": "apicatalog.com", + "rowId": "If the \"proof\" field is invalid, an error MUST be raised." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 14971, + "_idleStart": 17297, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "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)" - } + "duration": 57, + "state": "passed", + "speed": "medium" }, { "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": "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, @@ -12565,33 +9795,33 @@ "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": "L4fxO0t9x7edtGACx8ivm", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "RaxdbvT1t4jg8M1E4Yot7", "ctx": null, - "_testId": "urn:uuid:67aadd28-7808-442f-8c1d-62490341e88d", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:dbcc3823-ec11-472f-9b31-19f4bb9edf56", "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." + "columnId": "apicatalog.com", + "rowId": "If the \"proof.type\" field is missing, an error MUST be raised." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 15225, + "_idleStart": 17354, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 46, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "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": "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, @@ -12600,33 +9830,33 @@ "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": "7QMjtYs7K1azzxGtIRk0m", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "RaxdbvT1t4jg8M1E4Yot7", "ctx": null, - "_testId": "urn:uuid:2a9466a4-277e-4438-a95f-57ac22e9493e", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:4b269338-ab63-42c4-bf80-35263ea24b3a", "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." + "columnId": "apicatalog.com", + "rowId": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 15346, + "_idleStart": 17400, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 1, + "duration": 56, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "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": "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, @@ -12635,33 +9865,33 @@ "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": "9RG68r8Nx6QFFLr22i45g", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "RaxdbvT1t4jg8M1E4Yot7", "ctx": null, - "_testId": "urn:uuid:6c09dcc2-e6c2-4256-94c0-d34bf3317877", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:d26836e1-f123-47fc-92c4-3f13a7567bc2", "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." + "columnId": "apicatalog.com", + "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 15412, + "_idleStart": 17456, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 41, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "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": "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, @@ -12670,38 +9900,33 @@ "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": "N72wHf6VUT98pJU6jXmCi", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "RaxdbvT1t4jg8M1E4Yot7", "ctx": null, - "_testId": "urn:uuid:2fd5a22c-4101-473c-a11c-1faf5137dea6", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:075fc458-924d-45a3-b3f7-7e07076a1174", "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." + "columnId": "apicatalog.com", + "rowId": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 15494, + "_idleStart": 17497, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 66, "state": "passed", - "speed": "fast" - } - ] - }, - { - "id": "\"proof\" MUST verify when using a conformant verifier.", - "cells": [ + "speed": "medium" + }, { "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": "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, @@ -12710,151 +9935,33 @@ "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": "lfiUsPhEOAKSx6_zMhmWh", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "RaxdbvT1t4jg8M1E4Yot7", "ctx": null, - "_testId": "urn:uuid:093c52a6-7c6c-404a-be5f-50f7b43da75e", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:b4304616-df6f-43c2-9f8e-1a16520e7076", "cell": { "columnId": "apicatalog.com", - "rowId": "\"proof\" MUST verify when using a conformant verifier." + "rowId": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 11681, + "_idleStart": 17563, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 97, - "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:7a1526a5-bc1b-4e8d-81b4-61269bfb9bd7\",\"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-15T05:01:50Z\",\"proofValue\":\"z2ygR6C6RZ2wuS48GRRXFZM3yzXYSB4DrrtL6KNE16FpJSDGGAEt8q97Gkd4SePB1fRhVWeTMqwukrMzs5Nysg6Hz\"}},\"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:7a1526a5-bc1b-4e8d-81b4-61269bfb9bd7", - "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-15T05:01:50Z", - "proofValue": "z2ygR6C6RZ2wuS48GRRXFZM3yzXYSB4DrrtL6KNE16FpJSDGGAEt8q97Gkd4SePB1fRhVWeTMqwukrMzs5Nysg6Hz" - } - }, - "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)" - } + "duration": 53, + "state": "passed", + "speed": "medium" }, { "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": "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, @@ -12863,33 +9970,33 @@ "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": "bGsMa7N3F4ToxFYNoUXT6", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "RaxdbvT1t4jg8M1E4Yot7", "ctx": null, - "_testId": "urn:uuid:cebd645d-e1ad-4ee5-8cc6-82c39c5a5829", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:b503cf1d-afd2-4411-b1a0-d01d3b5afc53", "cell": { - "columnId": "Danube Tech", - "rowId": "\"proof\" MUST verify when using a conformant verifier." + "columnId": "apicatalog.com", + "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." }, + "_events": {}, + "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 11966, + "_idleStart": 17617, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 1339, + "duration": 58, "state": "passed", - "speed": "slow" + "speed": "medium" }, { "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": "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, @@ -12898,33 +10005,34 @@ "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": "8v4XESKhWvQkRQrK1krje", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "RaxdbvT1t4jg8M1E4Yot7", "ctx": null, - "_testId": "urn:uuid:0108c832-833f-451d-9872-2f4ae89c445b", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:f0a02df2-3846-4e47-a41f-615cfca0749c", "cell": { - "columnId": "Digital Bazaar", - "rowId": "\"proof\" MUST verify when using a conformant verifier." + "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/#:~: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": 13915, + "_idleStart": 17675, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 641, + "duration": 47, "state": "passed", - "speed": "slow" + "speed": "medium" }, { "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 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, @@ -12933,33 +10041,34 @@ "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": "KED5x0KehZdSXzo7zQiTG", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "RaxdbvT1t4jg8M1E4Yot7", "ctx": null, - "_testId": "urn:uuid:6ec6bb91-06f0-45d0-b8cf-4216b6682665", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:95116e55-e13a-4441-958e-7570e4062d0a", "cell": { - "columnId": "EWF", - "rowId": "\"proof\" MUST verify when using a conformant verifier." + "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/#proofs:~:text=The%20proofValue%20property%20MUST%20be%20used%2C%20as%20specified%20in%202.1%20Proofs.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 14972, + "_idleStart": 17723, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 118, + "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": "(\"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, @@ -12968,33 +10077,34 @@ "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": "L4fxO0t9x7edtGACx8ivm", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "RaxdbvT1t4jg8M1E4Yot7", "ctx": null, - "_testId": "urn:uuid:a5778d38-ed97-4ed6-8265-863592440bb2", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:27cd5c47-a8a5-489b-9665-113bd559ad43", "cell": { - "columnId": "LearnCard", - "rowId": "\"proof\" MUST verify when using a conformant verifier." + "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://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": 15225, + "_idleStart": 17723, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 80, + "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": "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, @@ -13003,33 +10113,34 @@ "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": "7QMjtYs7K1azzxGtIRk0m", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "RaxdbvT1t4jg8M1E4Yot7", "ctx": null, - "_testId": "urn:uuid:61900ee2-72bd-434e-a751-45b4eaaa176f", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:a49512cc-9f67-4d5a-97de-8fd4a8791583", "cell": { - "columnId": "OpSecId", - "rowId": "\"proof\" MUST verify when using a conformant verifier." + "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://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": 15347, + "_idleStart": 17724, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 36, + "duration": 163, "state": "passed", - "speed": "fast" + "speed": "slow" }, { "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 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, @@ -13038,33 +10149,38 @@ "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": "9RG68r8Nx6QFFLr22i45g", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "parent": "RaxdbvT1t4jg8M1E4Yot7", "ctx": null, - "_testId": "urn:uuid:5f76863e-b8f7-4f1d-8db8-7347adb1aafc", - "_events": {}, - "_eventsCount": 1, + "_testId": "urn:uuid:6d2dae7f-e755-4dcc-b647-37a3c5e54e6f", "cell": { - "columnId": "SpruceID", - "rowId": "\"proof\" MUST verify when using a conformant verifier." + "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": 15413, + "_idleStart": 17887, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 30, + "duration": 52, "state": "passed", - "speed": "fast" - }, + "speed": "medium" + } + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [ { - "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": "\"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, @@ -13073,39 +10189,63 @@ "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": "N72wHf6VUT98pJU6jXmCi", + "type": "hook", + "parent": "RaxdbvT1t4jg8M1E4Yot7", "ctx": null, - "_testId": "urn:uuid:597c8dae-2727-4bfb-87ca-8e2a04fad780", + "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": "RaxdbvT1t4jg8M1E4Yot7", + "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, - "cell": { - "columnId": "Trinsic", - "rowId": "\"proof\" MUST verify when using a conformant verifier." - }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 15495, + "_idleStart": 17058, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 99, - "state": "passed", - "speed": "slow" + "duration": 0, + "_error": null } - ] - } - ] - }, - { - "title": "Data Integrity (verifier)", - "ctx": null, - "suites": [ + ], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "M21B637dnU9eXk0bAsAA1", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "_testId": "urn:uuid:13611222-2f81-4c69-8620-992ea9e932db" + }, { - "title": "apicatalog.com", + "title": "Danube Tech", "ctx": null, "suites": [], "tests": [ @@ -13122,11 +10262,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8FUVhOgQKJ4jYmejg3oJ5", + "parent": "tP2ofxvtbCGvWsW_3gpVj", "ctx": null, - "_testId": "urn:uuid:65b8dcd6-91bf-484a-a2a3-c000bbee59e2", + "_testId": "urn:uuid:c5f7bd95-5edc-4f8c-ae63-47c3502d7c08", "cell": { - "columnId": "apicatalog.com", + "columnId": "Danube Tech", "rowId": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null." }, "_events": {}, @@ -13136,12 +10276,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 15646, + "_idleStart": 17941, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 108, + "duration": 678, "state": "passed", "speed": "slow" }, @@ -13158,11 +10298,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8FUVhOgQKJ4jYmejg3oJ5", + "parent": "tP2ofxvtbCGvWsW_3gpVj", "ctx": null, - "_testId": "urn:uuid:0a15032b-6ef5-4b5a-aede-a51e96535a94", + "_testId": "urn:uuid:6a1da42f-0428-4d70-94b8-4a518d156301", "cell": { - "columnId": "apicatalog.com", + "columnId": "Danube Tech", "rowId": "Conforming processors MUST produce errors when non-conforming documents are consumed." }, "_events": {}, @@ -13172,14 +10312,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 15754, + "_idleStart": 18619, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 57, + "duration": 224, "state": "passed", - "speed": "medium" + "speed": "slow" }, { "type": "test", @@ -13194,11 +10334,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8FUVhOgQKJ4jYmejg3oJ5", + "parent": "tP2ofxvtbCGvWsW_3gpVj", "ctx": null, - "_testId": "urn:uuid:428482c2-ba79-4056-ad71-3660f1c9ccf5", + "_testId": "urn:uuid:54d8eaed-3f21-49b8-99e3-96b250480783", "cell": { - "columnId": "apicatalog.com", + "columnId": "Danube Tech", "rowId": "If the \"proof\" field is missing, an error MUST be raised." }, "_events": {}, @@ -13207,14 +10347,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 15811, + "_idleStart": 18843, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 63, + "duration": 517, "state": "passed", - "speed": "medium" + "speed": "slow" }, { "type": "test", @@ -13229,11 +10369,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8FUVhOgQKJ4jYmejg3oJ5", + "parent": "tP2ofxvtbCGvWsW_3gpVj", "ctx": null, - "_testId": "urn:uuid:ade66e41-fa34-44e4-80ee-0914ba9f16a0", + "_testId": "urn:uuid:de31f75e-3cba-4519-b8b5-1abc3c2f7cab", "cell": { - "columnId": "apicatalog.com", + "columnId": "Danube Tech", "rowId": "If the \"proof\" field is invalid, an error MUST be raised." }, "_events": {}, @@ -13242,14 +10382,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 15875, + "_idleStart": 19361, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 48, + "duration": 541, "state": "passed", - "speed": "medium" + "speed": "slow" }, { "type": "test", @@ -13264,11 +10404,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8FUVhOgQKJ4jYmejg3oJ5", + "parent": "tP2ofxvtbCGvWsW_3gpVj", "ctx": null, - "_testId": "urn:uuid:e847cce2-f8c9-4bb9-b766-f17c4632894c", + "_testId": "urn:uuid:69245226-7e1d-4c23-a943-9dcd1c3c20f8", "cell": { - "columnId": "apicatalog.com", + "columnId": "Danube Tech", "rowId": "If the \"proof.type\" field is missing, an error MUST be raised." }, "_events": {}, @@ -13277,14 +10417,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 15923, + "_idleStart": 19903, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 54, + "duration": 217, "state": "passed", - "speed": "medium" + "speed": "slow" }, { "type": "test", @@ -13299,11 +10439,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8FUVhOgQKJ4jYmejg3oJ5", + "parent": "tP2ofxvtbCGvWsW_3gpVj", "ctx": null, - "_testId": "urn:uuid:83e25a4f-c42a-4925-bdbe-3b85e7b29e04", + "_testId": "urn:uuid:67643db0-1590-4c30-9621-017eb8a772b9", "cell": { - "columnId": "apicatalog.com", + "columnId": "Danube Tech", "rowId": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised." }, "_events": {}, @@ -13312,14 +10452,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 15978, + "_idleStart": 20120, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 53, + "duration": 218, "state": "passed", - "speed": "medium" + "speed": "slow" }, { "type": "test", @@ -13334,11 +10474,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8FUVhOgQKJ4jYmejg3oJ5", + "parent": "tP2ofxvtbCGvWsW_3gpVj", "ctx": null, - "_testId": "urn:uuid:2f9859e8-178f-48ac-b18a-7164eddb47fb", + "_testId": "urn:uuid:f708987e-c6c3-45b0-97fa-0e20db64d1bf", "cell": { - "columnId": "apicatalog.com", + "columnId": "Danube Tech", "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." }, "_events": {}, @@ -13347,14 +10487,20 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 16032, + "_idleStart": 20339, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 49, - "state": "passed", - "speed": "medium" + "duration": 105, + "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:273: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:84: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", @@ -13369,11 +10515,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8FUVhOgQKJ4jYmejg3oJ5", + "parent": "tP2ofxvtbCGvWsW_3gpVj", "ctx": null, - "_testId": "urn:uuid:d94233a2-6713-4068-80dd-88d734266b0e", + "_testId": "urn:uuid:c991ef67-fc09-4ced-b8ff-d1b1ea97edb0", "cell": { - "columnId": "apicatalog.com", + "columnId": "Danube Tech", "rowId": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised." }, "_events": {}, @@ -13382,14 +10528,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 16082, + "_idleStart": 20445, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 73, + "duration": 644, "state": "passed", - "speed": "medium" + "speed": "slow" }, { "type": "test", @@ -13404,11 +10550,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8FUVhOgQKJ4jYmejg3oJ5", + "parent": "tP2ofxvtbCGvWsW_3gpVj", "ctx": null, - "_testId": "urn:uuid:693021e3-668c-4a1b-bf7b-ddfe068b3860", + "_testId": "urn:uuid:cd1c4a73-cf08-4bcd-87d2-a8365c4f0b8c", "cell": { - "columnId": "apicatalog.com", + "columnId": "Danube Tech", "rowId": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised." }, "_events": {}, @@ -13417,14 +10563,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 16154, + "_idleStart": 21089, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 59, + "duration": 652, "state": "passed", - "speed": "medium" + "speed": "slow" }, { "type": "test", @@ -13439,11 +10585,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8FUVhOgQKJ4jYmejg3oJ5", + "parent": "tP2ofxvtbCGvWsW_3gpVj", "ctx": null, - "_testId": "urn:uuid:31991102-01d8-4219-ae8e-ba1e70069879", + "_testId": "urn:uuid:c6a5d306-6caf-432b-841f-1f8f04bf8063", "cell": { - "columnId": "apicatalog.com", + "columnId": "Danube Tech", "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." }, "_events": {}, @@ -13452,14 +10598,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 16213, + "_idleStart": 21742, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 58, + "duration": 224, "state": "passed", - "speed": "medium" + "speed": "slow" }, { "type": "test", @@ -13474,11 +10620,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8FUVhOgQKJ4jYmejg3oJ5", + "parent": "tP2ofxvtbCGvWsW_3gpVj", "ctx": null, - "_testId": "urn:uuid:e3d5e289-1be0-42b7-9fca-f6a32840d1ad", + "_testId": "urn:uuid:fa079f6d-8c96-4783-a8e3-9b7ac6ad2cc3", "cell": { - "columnId": "apicatalog.com", + "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": {}, @@ -13488,14 +10634,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 16272, + "_idleStart": 21968, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 49, + "duration": 220, "state": "passed", - "speed": "medium" + "speed": "slow" }, { "type": "test", @@ -13510,11 +10656,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8FUVhOgQKJ4jYmejg3oJ5", + "parent": "tP2ofxvtbCGvWsW_3gpVj", "ctx": null, - "_testId": "urn:uuid:628c76d0-11a1-42e2-8eb1-58e90dac8d6b", + "_testId": "urn:uuid:a3135857-ca9e-4978-ab47-9c58ce524439", "cell": { - "columnId": "apicatalog.com", + "columnId": "Danube Tech", "rowId": "The proofValue property MUST be used, as specified in 2.1 Proofs." }, "_events": {}, @@ -13524,7 +10670,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 16321, + "_idleStart": 22188, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -13546,11 +10692,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8FUVhOgQKJ4jYmejg3oJ5", + "parent": "tP2ofxvtbCGvWsW_3gpVj", "ctx": null, - "_testId": "urn:uuid:8cdfe789-8246-41a3-9eb4-355a6625aa66", + "_testId": "urn:uuid:70d9d0c2-266b-4969-b150-580fa72c04a9", "cell": { - "columnId": "apicatalog.com", + "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": {}, @@ -13560,7 +10706,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 16321, + "_idleStart": 22188, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -13582,11 +10728,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8FUVhOgQKJ4jYmejg3oJ5", + "parent": "tP2ofxvtbCGvWsW_3gpVj", "ctx": null, - "_testId": "urn:uuid:6f9dd9c0-4618-4c53-8d96-f11ecb3cb673", + "_testId": "urn:uuid:5ea582f1-3d4f-48f3-8da9-12915c68d461", "cell": { - "columnId": "apicatalog.com", + "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": {}, @@ -13596,12 +10742,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 16322, + "_idleStart": 22188, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 166, + "duration": 664, "state": "passed", "speed": "slow" }, @@ -13618,11 +10764,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8FUVhOgQKJ4jYmejg3oJ5", + "parent": "tP2ofxvtbCGvWsW_3gpVj", "ctx": null, - "_testId": "urn:uuid:5c13973f-b623-40dd-81b0-04df5635b2ec", + "_testId": "urn:uuid:cd07f9e1-2e1f-4d19-a8b2-928d8c55e60c", "cell": { - "columnId": "apicatalog.com", + "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": {}, @@ -13632,19 +10778,23 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 16488, + "_idleStart": 22852, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 62, + "duration": 650, "state": "passed", - "speed": "medium" - }, + "speed": "slow" + } + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [ { - "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 await verificationFail({\n credential: credentials.clone('invalidCreated'),\n verifier\n });\n }", + "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, @@ -13653,34 +10803,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": "8FUVhOgQKJ4jYmejg3oJ5", + "type": "hook", + "parent": "tP2ofxvtbCGvWsW_3gpVj", "ctx": null, - "_testId": "urn:uuid:dc51809c-a9c0-4fa1-bca6-ffe31d4f0c09", - "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/20-verify.js", + "originalTitle": "\"before each\" 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": 16550, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 50, - "state": "passed", - "speed": "medium" - }, + "duration": 0, + "_error": null + } + ], + "_beforeAll": [ { - "type": "test", - "title": "If present (expires), 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": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=If%20present%2C%20it%20MUST%20be%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 await verificationFail({\n credential: credentials.clone('invalidExpires'),\n verifier\n });\n }", + "title": "\"before all\" hook in \"Danube Tech\"", + "body": "async function() {\n proofValueTests = shouldBeProofValue({credentials, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -13689,34 +10826,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": "8FUVhOgQKJ4jYmejg3oJ5", + "type": "hook", + "parent": "tP2ofxvtbCGvWsW_3gpVj", "ctx": null, - "_testId": "urn:uuid:64cfcd3a-32e5-4a54-b984-4e18c1305fc0", - "cell": { - "columnId": "apicatalog.com", - "rowId": "If present (expires), 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." - }, + "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, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=If%20present%2C%20it%20MUST%20be%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": 16600, + "_idleStart": 17940, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 56, - "state": "passed", - "speed": "medium" - }, + "duration": 0, + "_error": null + } + ], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "M21B637dnU9eXk0bAsAA1", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "_testId": "urn:uuid:fbfed742-c124-4e44-89ed-f4fe4c01c33a" + }, + { + "title": "Digital Bazaar", + "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 verificationSuccess({\n credential: credentials.clone('noOffsetCreated'),\n verifier\n });\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, @@ -13726,150 +10876,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8FUVhOgQKJ4jYmejg3oJ5", + "parent": "_uaYuFH_jTfDLBT8n9RJ0", "ctx": null, - "_testId": "urn:uuid:1d4ad49d-7b93-46f4-b4b2-bb964751d3dc", + "_testId": "urn:uuid:ba8ff4a3-95b7-4e7e-955a-b76c583f4e57", "cell": { - "columnId": "apicatalog.com", - "rowId": "(created) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." + "columnId": "Digital Bazaar", + "rowId": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null." }, "_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=When%20deserializing%20to%20RDF%2C%20implementations%20MUST%20ensure%20that%20the%20base%20URL%20is%20set%20to%20null.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 16656, + "_idleStart": 23505, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 61, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected no error from verifier.: 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/data-integrity/v2\"],\"id\":\"urn:uuid:86294362-4254-4f36-854f-3952fe42555d\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"type\":\"DataIntegrityProof\",\"created\":\"2024-09-15T05:01:54\",\"verificationMethod\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"cryptosuite\":\"eddsa-2022\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z28QfeN92FuPz6xBFXY5PF2i3Y5BNGdHyoBtE3B3Ac9YqhDuGVtt8NxwAxcrwTEcSKWsPXiNZDmqE74w3TcV9H1N8\"}},\"options\":{}}", - "method": "POST", - "json": { - "verifiableCredential": { - "@context": [ - "https://www.w3.org/2018/credentials/v1", - "https://w3id.org/security/data-integrity/v2" - ], - "id": "urn:uuid:86294362-4254-4f36-854f-3952fe42555d", - "type": [ - "VerifiableCredential" - ], - "issuer": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "issuanceDate": "2020-03-16T22:37:26.544Z", - "credentialSubject": { - "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" - }, - "proof": { - "type": "DataIntegrityProof", - "created": "2024-09-15T05:01:54", - "verificationMethod": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "cryptosuite": "eddsa-2022", - "proofPurpose": "assertionMethod", - "proofValue": "z28QfeN92FuPz6xBFXY5PF2i3Y5BNGdHyoBtE3B3Ac9YqhDuGVtt8NxwAxcrwTEcSKWsPXiNZDmqE74w3TcV9H1N8" - } - }, - "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/verify", - "status": 400, - "data": { - "checks": [ - "PROOF", - "INVALID_PROOF_CONFIGURATION" - ], - "warnings": [], - "errors": [] - } - }, - "operator": "notStrictEqual", - "stack": "AssertionError: Expected no error from verifier.: 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 verificationSuccess (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/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/node_modules/data-integrity-test-suite-assertion/suites/verify.js:191:9)" - } + "duration": 204, + "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 verificationSuccess({\n credential: credentials.clone('noOffsetExpires'),\n verifier\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, @@ -13879,151 +10912,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8FUVhOgQKJ4jYmejg3oJ5", + "parent": "_uaYuFH_jTfDLBT8n9RJ0", "ctx": null, - "_testId": "urn:uuid:19fc1003-6638-4a15-8fb3-a9af68c93fac", + "_testId": "urn:uuid:d7f4835a-86bb-4771-8c25-2a2077b2e4e6", "cell": { - "columnId": "apicatalog.com", - "rowId": "(expires) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." + "columnId": "Digital Bazaar", + "rowId": "Conforming processors MUST produce errors when non-conforming documents are consumed." }, "_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/#conformance:~:text=Conforming%20processors%20MUST%20produce%20errors%20when%20non%2Dconforming%20documents%20are%20consumed.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 16718, + "_idleStart": 23709, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 50, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected no error from verifier.: 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/data-integrity/v2\"],\"id\":\"urn:uuid:86294362-4254-4f36-854f-3952fe42555d\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"expires\":\"2024-09-15T05:01:54\",\"type\":\"DataIntegrityProof\",\"created\":\"2024-09-15T05:01:54Z\",\"verificationMethod\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"cryptosuite\":\"eddsa-2022\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z23aBpJZnxXpwPcaK5pmk6CM2yq5ZZddCxT6HSkRsPtSCJaAepRSpYetBdqxVdeCNLDv8FeayEfqwf6kvh46u4itb\"}},\"options\":{}}", - "method": "POST", - "json": { - "verifiableCredential": { - "@context": [ - "https://www.w3.org/2018/credentials/v1", - "https://w3id.org/security/data-integrity/v2" - ], - "id": "urn:uuid:86294362-4254-4f36-854f-3952fe42555d", - "type": [ - "VerifiableCredential" - ], - "issuer": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "issuanceDate": "2020-03-16T22:37:26.544Z", - "credentialSubject": { - "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" - }, - "proof": { - "expires": "2024-09-15T05:01:54", - "type": "DataIntegrityProof", - "created": "2024-09-15T05:01:54Z", - "verificationMethod": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "cryptosuite": "eddsa-2022", - "proofPurpose": "assertionMethod", - "proofValue": "z23aBpJZnxXpwPcaK5pmk6CM2yq5ZZddCxT6HSkRsPtSCJaAepRSpYetBdqxVdeCNLDv8FeayEfqwf6kvh46u4itb" - } - }, - "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/verify", - "status": 400, - "data": { - "checks": [ - "PROOF", - "INVALID_PROOF_CONFIGURATION" - ], - "warnings": [], - "errors": [] - } - }, - "operator": "notStrictEqual", - "stack": "AssertionError: Expected no error from verifier.: 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 verificationSuccess (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/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/node_modules/data-integrity-test-suite-assertion/suites/verify.js:199:9)" - } + "duration": 1165, + "state": "passed", + "speed": "slow" }, { "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 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, @@ -14033,247 +10948,27 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8FUVhOgQKJ4jYmejg3oJ5", + "parent": "_uaYuFH_jTfDLBT8n9RJ0", "ctx": null, - "_testId": "urn:uuid:61ec9cae-9b8d-4f5f-a08b-a4f2739a8556", + "_testId": "urn:uuid:596462de-acf6-4f92-afe5-072ee4f6acef", "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." + "columnId": "Digital Bazaar", + "rowId": "If the \"proof\" field is missing, an error MUST be raised." }, "_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": 16769, + "_idleStart": 24874, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 66, - "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": "8FUVhOgQKJ4jYmejg3oJ5", - "ctx": null, - "_testId": "urn:uuid:0dfc6d03-eeec-4b5e-a602-fd8ac928de66", - "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": 16836, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 56, + "duration": 69, "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": "8FUVhOgQKJ4jYmejg3oJ5", - "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": "8FUVhOgQKJ4jYmejg3oJ5", - "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": 15644, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 0, - "_error": null - } - ], - "_afterEach": [], - "_afterAll": [], - "_timeout": 15000, - "_slow": 75, - "_bail": false, - "_onlyTests": [], - "_onlySuites": [], - "delayed": false, - "parent": "bklQtFryy0psstU8OU43S", - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "_testId": "urn:uuid:215213ae-0f1f-43b8-83ef-18c109aba5fe" - }, - { - "title": "Danube Tech", - "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 }", - "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": "4rMcTf82al4NVv_78CupS", - "ctx": null, - "_testId": "urn:uuid:b52b18f2-94a6-4469-8323-ad05d26743bc", - "cell": { - "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": 16894, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 712, - "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": "4rMcTf82al4NVv_78CupS", - "ctx": null, - "_testId": "urn:uuid:8b7ae53c-e71b-4413-b1b8-4e290a2f343d", - "cell": { - "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": 17607, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 224, - "state": "passed", - "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 }", - "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": "4rMcTf82al4NVv_78CupS", - "ctx": null, - "_testId": "urn:uuid:6687b9c3-2fe2-42dd-9d81-7a68bb0b395d", - "cell": { - "columnId": "Danube Tech", - "rowId": "If the \"proof\" field is missing, an error MUST be raised." - }, - "_events": {}, - "_eventsCount": 1, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 17832, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 754, - "state": "passed", - "speed": "slow" }, { "type": "test", @@ -14288,11 +10983,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "4rMcTf82al4NVv_78CupS", + "parent": "_uaYuFH_jTfDLBT8n9RJ0", "ctx": null, - "_testId": "urn:uuid:1e06177c-13f2-43e9-99c5-01a4ef6b7b54", + "_testId": "urn:uuid:e0839897-04cd-4022-91a1-1ae09a6c1eb0", "cell": { - "columnId": "Danube Tech", + "columnId": "Digital Bazaar", "rowId": "If the \"proof\" field is invalid, an error MUST be raised." }, "_events": {}, @@ -14301,14 +10996,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 18586, + "_idleStart": 24943, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 518, + "duration": 43, "state": "passed", - "speed": "slow" + "speed": "medium" }, { "type": "test", @@ -14323,11 +11018,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "4rMcTf82al4NVv_78CupS", + "parent": "_uaYuFH_jTfDLBT8n9RJ0", "ctx": null, - "_testId": "urn:uuid:3c0b912e-2bd3-48d6-ab1b-8a3f86c7c256", + "_testId": "urn:uuid:d1650aec-6612-4e90-9060-46a0597a2dc9", "cell": { - "columnId": "Danube Tech", + "columnId": "Digital Bazaar", "rowId": "If the \"proof.type\" field is missing, an error MUST be raised." }, "_events": {}, @@ -14336,14 +11031,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 19104, + "_idleStart": 24987, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 226, + "duration": 66, "state": "passed", - "speed": "slow" + "speed": "medium" }, { "type": "test", @@ -14358,11 +11053,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "4rMcTf82al4NVv_78CupS", + "parent": "_uaYuFH_jTfDLBT8n9RJ0", "ctx": null, - "_testId": "urn:uuid:f856559c-67a9-410a-aed8-8f8ed3b8c5fb", + "_testId": "urn:uuid:cb087230-eb44-480f-99a8-705f5da3ada2", "cell": { - "columnId": "Danube Tech", + "columnId": "Digital Bazaar", "rowId": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised." }, "_events": {}, @@ -14371,14 +11066,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 19330, + "_idleStart": 25054, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 223, + "duration": 58, "state": "passed", - "speed": "slow" + "speed": "medium" }, { "type": "test", @@ -14393,11 +11088,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "4rMcTf82al4NVv_78CupS", + "parent": "_uaYuFH_jTfDLBT8n9RJ0", "ctx": null, - "_testId": "urn:uuid:66eca2ab-38a9-44b7-bc38-328f88c3b0bf", + "_testId": "urn:uuid:cae9e073-9151-4271-88b0-79b907a653b6", "cell": { - "columnId": "Danube Tech", + "columnId": "Digital Bazaar", "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." }, "_events": {}, @@ -14406,20 +11101,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 19553, + "_idleStart": 25112, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 107, - "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:273: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:84: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": 47, + "state": "passed", + "speed": "medium" }, { "type": "test", @@ -14434,11 +11123,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "4rMcTf82al4NVv_78CupS", + "parent": "_uaYuFH_jTfDLBT8n9RJ0", "ctx": null, - "_testId": "urn:uuid:1f1bb113-10c1-4175-8d40-9aceaa3897fd", + "_testId": "urn:uuid:7c956ac3-fc82-4fb3-898c-73925e74698a", "cell": { - "columnId": "Danube Tech", + "columnId": "Digital Bazaar", "rowId": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised." }, "_events": {}, @@ -14447,12 +11136,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 19661, + "_idleStart": 25159, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 649, + "duration": 78, "state": "passed", "speed": "slow" }, @@ -14469,11 +11158,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "4rMcTf82al4NVv_78CupS", + "parent": "_uaYuFH_jTfDLBT8n9RJ0", "ctx": null, - "_testId": "urn:uuid:98af10dc-912f-4199-b966-a6c703d725ef", + "_testId": "urn:uuid:f6e454af-2746-4436-855b-880c9cdf74f7", "cell": { - "columnId": "Danube Tech", + "columnId": "Digital Bazaar", "rowId": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised." }, "_events": {}, @@ -14482,14 +11171,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 20311, + "_idleStart": 25237, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 676, + "duration": 59, "state": "passed", - "speed": "slow" + "speed": "medium" }, { "type": "test", @@ -14504,11 +11193,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "4rMcTf82al4NVv_78CupS", + "parent": "_uaYuFH_jTfDLBT8n9RJ0", "ctx": null, - "_testId": "urn:uuid:89cb38d9-a6fa-458b-bb6f-e5fc302e21d1", + "_testId": "urn:uuid:f4780a3d-8dd6-4f5d-b244-7b134c56064b", "cell": { - "columnId": "Danube Tech", + "columnId": "Digital Bazaar", "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." }, "_events": {}, @@ -14517,14 +11206,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 20987, + "_idleStart": 25296, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 222, + "duration": 59, "state": "passed", - "speed": "slow" + "speed": "medium" }, { "type": "test", @@ -14539,11 +11228,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "4rMcTf82al4NVv_78CupS", + "parent": "_uaYuFH_jTfDLBT8n9RJ0", "ctx": null, - "_testId": "urn:uuid:4fd22ebb-316e-46b5-a06b-dddc00161a6d", + "_testId": "urn:uuid:eea7d3c0-569c-4778-8b1d-645e17a2560d", "cell": { - "columnId": "Danube Tech", + "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": {}, @@ -14553,14 +11242,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 21209, + "_idleStart": 25355, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 223, + "duration": 66, "state": "passed", - "speed": "slow" + "speed": "medium" }, { "type": "test", @@ -14575,11 +11264,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "4rMcTf82al4NVv_78CupS", + "parent": "_uaYuFH_jTfDLBT8n9RJ0", "ctx": null, - "_testId": "urn:uuid:74df4970-fdc9-4936-aaf3-c4cf0828122d", + "_testId": "urn:uuid:09e2de8b-1024-4bde-ab5d-c823fa4057ba", "cell": { - "columnId": "Danube Tech", + "columnId": "Digital Bazaar", "rowId": "The proofValue property MUST be used, as specified in 2.1 Proofs." }, "_events": {}, @@ -14589,7 +11278,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 21432, + "_idleStart": 25421, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -14611,11 +11300,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "4rMcTf82al4NVv_78CupS", + "parent": "_uaYuFH_jTfDLBT8n9RJ0", "ctx": null, - "_testId": "urn:uuid:63271b39-030f-4c8a-8ddd-dd8f65c8e65a", + "_testId": "urn:uuid:20565308-544d-4886-bb80-4fd9dbfaf915", "cell": { - "columnId": "Danube Tech", + "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": {}, @@ -14625,7 +11314,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 21432, + "_idleStart": 25422, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -14647,11 +11336,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "4rMcTf82al4NVv_78CupS", + "parent": "_uaYuFH_jTfDLBT8n9RJ0", "ctx": null, - "_testId": "urn:uuid:cc74bace-eb67-4816-992f-f0d5c6fdd0cd", + "_testId": "urn:uuid:242687f4-01b5-40f1-ad53-21b6ef087675", "cell": { - "columnId": "Danube Tech", + "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": {}, @@ -14661,12 +11350,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 21433, + "_idleStart": 25422, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 668, + "duration": 216, "state": "passed", "speed": "slow" }, @@ -14683,11 +11372,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "4rMcTf82al4NVv_78CupS", + "parent": "_uaYuFH_jTfDLBT8n9RJ0", "ctx": null, - "_testId": "urn:uuid:7a5a0ded-ce37-4250-a748-222b317e23ce", + "_testId": "urn:uuid:36e3db2b-4313-423b-bf6e-4b34bb6cb843", "cell": { - "columnId": "Danube Tech", + "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": {}, @@ -14697,19 +11386,95 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 22101, + "_idleStart": 25639, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 653, + "duration": 54, "state": "passed", - "speed": "slow" - }, - { + "speed": "medium" + } + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [ + { + "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, + "_timeout": 15000, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "type": "hook", + "parent": "_uaYuFH_jTfDLBT8n9RJ0", + "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 \"Digital Bazaar\"", + "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": "_uaYuFH_jTfDLBT8n9RJ0", + "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": 23502, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 1, + "_error": null + } + ], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "M21B637dnU9eXk0bAsAA1", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "_testId": "urn:uuid:b0952148-2f47-49da-b55b-87f8eeface32" + }, + { + "title": "EWF", + "ctx": null, + "suites": [], + "tests": [ + { "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 await verificationFail({\n credential: credentials.clone('invalidCreated'),\n verifier\n });\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, @@ -14719,33 +11484,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "4rMcTf82al4NVv_78CupS", + "parent": "91u2WAU2zJYMNRo8aVT6K", "ctx": null, - "_testId": "urn:uuid:5ee8efff-f0aa-4611-ba57-f3171966fe26", + "_testId": "urn:uuid:76478a70-14cc-4dd7-a8ed-b0fa4aa6d447", "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." + "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/#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", + "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": 22754, + "_idleStart": 25695, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 655, + "duration": 384, "state": "passed", "speed": "slow" }, { "type": "test", - "title": "If present (expires), 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": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=If%20present%2C%20it%20MUST%20be%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 await verificationFail({\n credential: credentials.clone('invalidExpires'),\n verifier\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, @@ -14755,33 +11520,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "4rMcTf82al4NVv_78CupS", + "parent": "91u2WAU2zJYMNRo8aVT6K", "ctx": null, - "_testId": "urn:uuid:9d995ac3-bbe4-439e-8e2f-23cf57093f85", + "_testId": "urn:uuid:7c34d51e-b140-4cb2-a5d0-7bd8a5aab9ef", "cell": { - "columnId": "Danube Tech", - "rowId": "If present (expires), 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." + "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/#proofs:~:text=If%20present%2C%20it%20MUST%20be%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.", + "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": 23409, + "_idleStart": 26082, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 690, + "duration": 94, "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 verificationSuccess({\n credential: credentials.clone('noOffsetCreated'),\n verifier\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, @@ -14791,147 +11556,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "4rMcTf82al4NVv_78CupS", + "parent": "91u2WAU2zJYMNRo8aVT6K", "ctx": null, - "_testId": "urn:uuid:aa5d71c0-ebc7-436e-b810-2f7295d53f8e", + "_testId": "urn:uuid:dc024c20-0a45-4b71-9d65-1a05559d7431", "cell": { - "columnId": "Danube Tech", - "rowId": "(created) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." + "columnId": "EWF", + "rowId": "If the \"proof\" field is missing, an error MUST be raised." }, "_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": 24100, + "_idleStart": 26176, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 652, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected no error from verifier.: 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/data-integrity/v2\"],\"id\":\"urn:uuid:86294362-4254-4f36-854f-3952fe42555d\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"type\":\"DataIntegrityProof\",\"created\":\"2024-09-15T05:01:54\",\"verificationMethod\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"cryptosuite\":\"eddsa-2022\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z28QfeN92FuPz6xBFXY5PF2i3Y5BNGdHyoBtE3B3Ac9YqhDuGVtt8NxwAxcrwTEcSKWsPXiNZDmqE74w3TcV9H1N8\"}},\"options\":{}}", - "method": "POST", - "json": { - "verifiableCredential": { - "@context": [ - "https://www.w3.org/2018/credentials/v1", - "https://w3id.org/security/data-integrity/v2" - ], - "id": "urn:uuid:86294362-4254-4f36-854f-3952fe42555d", - "type": [ - "VerifiableCredential" - ], - "issuer": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "issuanceDate": "2020-03-16T22:37:26.544Z", - "credentialSubject": { - "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" - }, - "proof": { - "type": "DataIntegrityProof", - "created": "2024-09-15T05:01:54", - "verificationMethod": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "cryptosuite": "eddsa-2022", - "proofPurpose": "assertionMethod", - "proofValue": "z28QfeN92FuPz6xBFXY5PF2i3Y5BNGdHyoBtE3B3Ac9YqhDuGVtt8NxwAxcrwTEcSKWsPXiNZDmqE74w3TcV9H1N8" - } - }, - "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://univerifier.io/1.0/credentials/verify", - "status": 400, - "data": { - "checks": [ - "proof" - ] - } - }, - "operator": "notStrictEqual", - "stack": "AssertionError: Expected no error from verifier.: 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 verificationSuccess (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/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/node_modules/data-integrity-test-suite-assertion/suites/verify.js:191:9)" - } + "duration": 95, + "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 verificationSuccess({\n credential: credentials.clone('noOffsetExpires'),\n verifier\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, @@ -14941,148 +11591,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "4rMcTf82al4NVv_78CupS", + "parent": "91u2WAU2zJYMNRo8aVT6K", "ctx": null, - "_testId": "urn:uuid:a2238ad3-37f1-488d-a571-c117bcf40ad3", + "_testId": "urn:uuid:cf97fdb5-2ea7-41c0-82b3-b1df0eb8c981", "cell": { - "columnId": "Danube Tech", - "rowId": "(expires) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." + "columnId": "EWF", + "rowId": "If the \"proof\" field is invalid, an error MUST be raised." }, "_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": 24753, + "_idleStart": 26271, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 702, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected no error from verifier.: 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/data-integrity/v2\"],\"id\":\"urn:uuid:86294362-4254-4f36-854f-3952fe42555d\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"expires\":\"2024-09-15T05:01:54\",\"type\":\"DataIntegrityProof\",\"created\":\"2024-09-15T05:01:54Z\",\"verificationMethod\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"cryptosuite\":\"eddsa-2022\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z23aBpJZnxXpwPcaK5pmk6CM2yq5ZZddCxT6HSkRsPtSCJaAepRSpYetBdqxVdeCNLDv8FeayEfqwf6kvh46u4itb\"}},\"options\":{}}", - "method": "POST", - "json": { - "verifiableCredential": { - "@context": [ - "https://www.w3.org/2018/credentials/v1", - "https://w3id.org/security/data-integrity/v2" - ], - "id": "urn:uuid:86294362-4254-4f36-854f-3952fe42555d", - "type": [ - "VerifiableCredential" - ], - "issuer": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "issuanceDate": "2020-03-16T22:37:26.544Z", - "credentialSubject": { - "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" - }, - "proof": { - "expires": "2024-09-15T05:01:54", - "type": "DataIntegrityProof", - "created": "2024-09-15T05:01:54Z", - "verificationMethod": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "cryptosuite": "eddsa-2022", - "proofPurpose": "assertionMethod", - "proofValue": "z23aBpJZnxXpwPcaK5pmk6CM2yq5ZZddCxT6HSkRsPtSCJaAepRSpYetBdqxVdeCNLDv8FeayEfqwf6kvh46u4itb" - } - }, - "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://univerifier.io/1.0/credentials/verify", - "status": 400, - "data": { - "checks": [ - "proof" - ] - } - }, - "operator": "notStrictEqual", - "stack": "AssertionError: Expected no error from verifier.: 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 verificationSuccess (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/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/node_modules/data-integrity-test-suite-assertion/suites/verify.js:199:9)" - } + "duration": 94, + "state": "passed", + "speed": "slow" }, { "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 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, @@ -15092,33 +11626,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "4rMcTf82al4NVv_78CupS", + "parent": "91u2WAU2zJYMNRo8aVT6K", "ctx": null, - "_testId": "urn:uuid:510843fa-f3df-417b-8bed-765a65bf9f86", + "_testId": "urn:uuid:6c719739-1a0e-4912-a02c-8b9c447c1c38", "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." + "columnId": "EWF", + "rowId": "If the \"proof.type\" field is missing, an error MUST be raised." }, "_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": 25456, + "_idleStart": 26365, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 688, + "duration": 94, "state": "passed", "speed": "slow" }, { "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": "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, @@ -15128,37 +11661,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "4rMcTf82al4NVv_78CupS", + "parent": "91u2WAU2zJYMNRo8aVT6K", "ctx": null, - "_testId": "urn:uuid:bba8b6e3-883d-47bf-8749-7ee6ee23eec4", + "_testId": "urn:uuid:45798cc6-d9e0-4f34-91c4-ae342d349dfe", "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." + "columnId": "EWF", + "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/#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": 26144, + "_idleStart": 26459, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 652, + "duration": 94, "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 }", + "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 }", "async": 0, "sync": true, "_timeout": 15000, @@ -15167,70 +11695,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "type": "hook", - "parent": "4rMcTf82al4NVv_78CupS", - "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 \"Danube Tech\"", - "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": "4rMcTf82al4NVv_78CupS", + "parent": "91u2WAU2zJYMNRo8aVT6K", "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:87592779-dcfe-4b9f-ae71-277736d5f603", + "cell": { + "columnId": "EWF", + "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." + }, "_events": {}, "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 16893, + "_idleStart": 26553, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, - "_error": null - } - ], - "_afterEach": [], - "_afterAll": [], - "_timeout": 15000, - "_slow": 75, - "_bail": false, - "_onlyTests": [], - "_onlySuites": [], - "delayed": false, - "parent": "bklQtFryy0psstU8OU43S", - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "_testId": "urn:uuid:87ea23f1-24e4-42d1-b0eb-0aa719a203bd" - }, - { - "title": "Digital Bazaar", - "ctx": null, - "suites": [], - "tests": [ + "duration": 94, + "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.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, @@ -15240,33 +11731,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "ouesj07FQZNyOL7t06-X-", + "parent": "91u2WAU2zJYMNRo8aVT6K", "ctx": null, - "_testId": "urn:uuid:2b141707-1ce7-4b25-b4c6-a97357c2cd70", + "_testId": "urn:uuid:ccece91f-d5f8-4f89-a48f-f22d82993853", "cell": { - "columnId": "Digital Bazaar", - "rowId": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null." + "columnId": "EWF", + "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": 26800, + "_idleStart": 26647, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 204, + "duration": 96, "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": "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, @@ -15276,33 +11766,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "ouesj07FQZNyOL7t06-X-", + "parent": "91u2WAU2zJYMNRo8aVT6K", "ctx": null, - "_testId": "urn:uuid:39090dbf-758f-4009-9dfd-1efa973a3d26", + "_testId": "urn:uuid:311281f7-3f97-4e0d-8ae1-acf636bac5b6", "cell": { - "columnId": "Digital Bazaar", - "rowId": "Conforming processors MUST produce errors when non-conforming documents are consumed." + "columnId": "EWF", + "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": 27004, + "_idleStart": 26743, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 56, + "duration": 94, "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": "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, @@ -15312,12 +11801,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "ouesj07FQZNyOL7t06-X-", + "parent": "91u2WAU2zJYMNRo8aVT6K", "ctx": null, - "_testId": "urn:uuid:bf8b0029-54b0-408e-9497-dabbfbdb9c64", + "_testId": "urn:uuid:c54723eb-a34b-4b75-8794-9a8bb8f5e7c3", "cell": { - "columnId": "Digital Bazaar", - "rowId": "If the \"proof\" field is missing, an error MUST be raised." + "columnId": "EWF", + "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, @@ -15325,19 +11814,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 27061, + "_idleStart": 26837, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 274, + "duration": 94, "state": "passed", "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": "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, @@ -15347,32 +11836,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "ouesj07FQZNyOL7t06-X-", + "parent": "91u2WAU2zJYMNRo8aVT6K", "ctx": null, - "_testId": "urn:uuid:05acf8c4-d9ce-4cb8-bf13-9572e173d0a0", + "_testId": "urn:uuid:49bafd50-f159-4479-80e3-999b9792281e", "cell": { - "columnId": "Digital Bazaar", - "rowId": "If the \"proof\" field is invalid, an error MUST be raised." + "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": {}, "_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": 27336, + "_idleStart": 26931, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 46, + "duration": 97, "state": "passed", - "speed": "medium" + "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 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, @@ -15382,32 +11872,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "ouesj07FQZNyOL7t06-X-", + "parent": "91u2WAU2zJYMNRo8aVT6K", "ctx": null, - "_testId": "urn:uuid:a68426f3-72a5-47d4-8449-ac425726cfb1", + "_testId": "urn:uuid:dec18b10-bea6-4499-803e-c778780149a3", "cell": { - "columnId": "Digital Bazaar", - "rowId": "If the \"proof.type\" field is missing, an error MUST be raised." + "columnId": "EWF", + "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": 27381, + "_idleStart": 27028, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 64, + "duration": 0, "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.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, @@ -15417,32 +11908,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "ouesj07FQZNyOL7t06-X-", + "parent": "91u2WAU2zJYMNRo8aVT6K", "ctx": null, - "_testId": "urn:uuid:18b1453d-51df-4250-a7bd-32541db59635", + "_testId": "urn:uuid:717af1eb-2656-44a8-9451-f0f6743cefe2", "cell": { - "columnId": "Digital Bazaar", - "rowId": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised." + "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": {}, "_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": 27445, + "_idleStart": 27028, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 46, + "duration": 0, "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": "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, @@ -15452,32 +11944,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "ouesj07FQZNyOL7t06-X-", + "parent": "91u2WAU2zJYMNRo8aVT6K", "ctx": null, - "_testId": "urn:uuid:f08053e3-8b92-4f97-a894-acddf269ee95", + "_testId": "urn:uuid:0443cbc1-c45f-4920-bcf5-3ed8aa892263", "cell": { - "columnId": "Digital Bazaar", - "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." + "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/#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": 27491, + "_idleStart": 27028, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 36, + "duration": 287, "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": "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, @@ -15487,32 +11980,37 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "ouesj07FQZNyOL7t06-X-", + "parent": "91u2WAU2zJYMNRo8aVT6K", "ctx": null, - "_testId": "urn:uuid:f2ccc1db-3424-4966-b08e-5acdd512e21b", + "_testId": "urn:uuid:d14e2169-5606-41a2-adef-8db4600a48b0", "cell": { - "columnId": "Digital Bazaar", - "rowId": "If the \"proof.verificationMethod\" field is invalid, 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": 27528, + "_idleStart": 27316, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 49, + "duration": 100, "state": "passed", - "speed": "medium" - }, + "speed": "slow" + } + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [ { - "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": "\"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, "_timeout": 15000, @@ -15521,33 +12019,106 @@ "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": "ouesj07FQZNyOL7t06-X-", + "type": "hook", + "parent": "91u2WAU2zJYMNRo8aVT6K", "ctx": null, - "_testId": "urn:uuid:92eb8b76-2541-4e0c-a0e3-045ba8e4b035", - "cell": { - "columnId": "Digital Bazaar", - "rowId": "If the \"proof.proofPurpose\" 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": 27577, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true + "duration": 0, + "_error": null + } + ], + "_beforeAll": [ + { + "title": "\"before all\" hook in \"EWF\"", + "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": "91u2WAU2zJYMNRo8aVT6K", + "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": 25693, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true }, - "duration": 84, + "duration": 0, + "_error": null + } + ], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "M21B637dnU9eXk0bAsAA1", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "_testId": "urn:uuid:075de4f1-faa1-4730-ac79-d042e1143e6f" + }, + { + "title": "LearnCard", + "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 }", + "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": "lga9z67djLcSbEtsBUOS8", + "ctx": null, + "_testId": "urn:uuid:816e015d-fba3-4a47-9b9d-c877bbc72a04", + "cell": { + "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": 27418, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 202, "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": "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, @@ -15557,32 +12128,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "ouesj07FQZNyOL7t06-X-", + "parent": "lga9z67djLcSbEtsBUOS8", "ctx": null, - "_testId": "urn:uuid:cccd2b96-f6f0-45f7-aaf1-e11e9d73ea51", + "_testId": "urn:uuid:d4f21cb7-1f1f-4568-b46a-dc93694df7b4", "cell": { - "columnId": "Digital Bazaar", - "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." + "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": 27661, + "_idleStart": 27621, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 47, + "duration": 69, "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\" 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, @@ -15592,33 +12164,67 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "ouesj07FQZNyOL7t06-X-", + "parent": "lga9z67djLcSbEtsBUOS8", "ctx": null, - "_testId": "urn:uuid:b547280d-573c-4413-9677-8b5ab8f7d27f", + "_testId": "urn:uuid:025150aa-93f7-45aa-a092-129f56c38082", "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": "LearnCard", + "rowId": "If the \"proof\" 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": 27708, + "_idleStart": 27691, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 48, + "duration": 1307, + "state": "passed", + "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 }", + "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": "lga9z67djLcSbEtsBUOS8", + "ctx": null, + "_testId": "urn:uuid:34e71dcf-ad38-433a-a562-ebfc6513985e", + "cell": { + "columnId": "LearnCard", + "rowId": "If the \"proof\" field is invalid, an error MUST be raised." + }, + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 28998, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 60, "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 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, @@ -15628,33 +12234,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "ouesj07FQZNyOL7t06-X-", + "parent": "lga9z67djLcSbEtsBUOS8", "ctx": null, - "_testId": "urn:uuid:d925ee6a-e2d7-4d08-8e23-ab270c0b28c6", + "_testId": "urn:uuid:2afee954-b602-4bb8-ab1b-66fb8ac42b23", "cell": { - "columnId": "Digital Bazaar", - "rowId": "The proofValue property MUST be used, as specified in 2.1 Proofs." + "columnId": "LearnCard", + "rowId": "If the \"proof.type\" 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": 27756, + "_idleStart": 29058, "_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.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, @@ -15664,33 +12269,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "ouesj07FQZNyOL7t06-X-", + "parent": "lga9z67djLcSbEtsBUOS8", "ctx": null, - "_testId": "urn:uuid:c19980b5-c8d4-4cfa-a29c-cce6a2d7009b", + "_testId": "urn:uuid:e2d50cec-ab38-4f0d-86ca-0a4670aa75eb", "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": "LearnCard", + "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=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 27757, + "_idleStart": 29096, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 7292, "state": "passed", - "speed": "fast" + "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.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, @@ -15700,33 +12304,67 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "ouesj07FQZNyOL7t06-X-", + "parent": "lga9z67djLcSbEtsBUOS8", "ctx": null, - "_testId": "urn:uuid:846c52d3-25bf-41f2-9696-325265c14e81", + "_testId": "urn:uuid:41e5718b-b7d2-4353-9357-2900e9febd05", "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": "LearnCard", + "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." + }, + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 36388, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 42, + "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 }", + "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": "lga9z67djLcSbEtsBUOS8", + "ctx": null, + "_testId": "urn:uuid:e8ad2a5f-10b8-4489-ba7a-f8c0edc61eb2", + "cell": { + "columnId": "LearnCard", + "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": 27757, + "_idleStart": 36430, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 165, + "duration": 95, "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 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, @@ -15736,33 +12374,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "ouesj07FQZNyOL7t06-X-", + "parent": "lga9z67djLcSbEtsBUOS8", "ctx": null, - "_testId": "urn:uuid:058a2dd5-29cb-4b37-93a9-bfb8b70556f9", + "_testId": "urn:uuid:0d95a760-e9b9-4d2e-897a-9cf59c81c1f0", "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": "LearnCard", + "rowId": "If the \"proof.proofPurpose\" field is missing, 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": 27922, + "_idleStart": 36525, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 45, + "duration": 60, "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 await verificationFail({\n credential: credentials.clone('invalidCreated'),\n verifier\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, @@ -15772,33 +12409,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "ouesj07FQZNyOL7t06-X-", + "parent": "lga9z67djLcSbEtsBUOS8", "ctx": null, - "_testId": "urn:uuid:c9b98c54-b787-4455-92d8-ce2319f9b069", + "_testId": "urn:uuid:99edfcb0-05be-4968-8d5e-7e612c5d72a0", "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": "LearnCard", + "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": 27967, + "_idleStart": 36585, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 59, + "duration": 72, "state": "passed", "speed": "medium" }, { "type": "test", - "title": "If present (expires), 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": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=If%20present%2C%20it%20MUST%20be%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 await verificationFail({\n credential: credentials.clone('invalidExpires'),\n verifier\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, @@ -15808,33 +12444,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "ouesj07FQZNyOL7t06-X-", + "parent": "lga9z67djLcSbEtsBUOS8", "ctx": null, - "_testId": "urn:uuid:8d2448ca-09f9-4e20-bb6e-6358d94e3403", + "_testId": "urn:uuid:9ccc2328-65c3-46e6-9940-9e4cf57f3e64", "cell": { - "columnId": "Digital Bazaar", - "rowId": "If present (expires), 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." + "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": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=If%20present%2C%20it%20MUST%20be%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.", + "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": 28027, + "_idleStart": 36658, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 46, + "duration": 70, "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 verificationSuccess({\n credential: credentials.clone('noOffsetCreated'),\n verifier\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, @@ -15844,343 +12480,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "ouesj07FQZNyOL7t06-X-", + "parent": "lga9z67djLcSbEtsBUOS8", "ctx": null, - "_testId": "urn:uuid:993d68b7-56c2-4c6d-9003-cbf79c965996", + "_testId": "urn:uuid:44b936de-3e03-4612-aa67-1609229add07", "cell": { - "columnId": "Digital Bazaar", - "rowId": "(created) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." + "columnId": "LearnCard", + "rowId": "The proofValue property MUST be used, as specified in 2.1 Proofs." }, "_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=The%20proofValue%20property%20MUST%20be%20used%2C%20as%20specified%20in%202.1%20Proofs.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 28073, + "_idleStart": 36729, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 45, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected no error from verifier.: 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", - "https://w3id.org/security/data-integrity/v2" - ], - "id": "urn:uuid:86294362-4254-4f36-854f-3952fe42555d", - "type": [ - "VerifiableCredential" - ], - "issuer": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "issuanceDate": "2020-03-16T22:37:26.544Z", - "credentialSubject": { - "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" - }, - "proof": { - "type": "DataIntegrityProof", - "created": "2024-09-15T05:01:54", - "verificationMethod": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "cryptosuite": "eddsa-2022", - "proofPurpose": "assertionMethod", - "proofValue": "z28QfeN92FuPz6xBFXY5PF2i3Y5BNGdHyoBtE3B3Ac9YqhDuGVtt8NxwAxcrwTEcSKWsPXiNZDmqE74w3TcV9H1N8" - } - }, - "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/data-integrity/v2\"],\"id\":\"urn:uuid:86294362-4254-4f36-854f-3952fe42555d\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"type\":\"DataIntegrityProof\",\"created\":\"2024-09-15T05:01:54\",\"verificationMethod\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"cryptosuite\":\"eddsa-2022\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z28QfeN92FuPz6xBFXY5PF2i3Y5BNGdHyoBtE3B3Ac9YqhDuGVtt8NxwAxcrwTEcSKWsPXiNZDmqE74w3TcV9H1N8\"}},\"options\":{\"checks\":[\"proof\"]}}" - }, - "name": "HTTPError", - "requestUrl": "https://vc2.veresverifier.dev/verifiers/z19w7KofwvE2nkJeRVLp8NDxz/credentials/verify", - "status": 400, - "data": { - "verified": false, - "results": [ - { - "proof": { - "@context": [ - "https://www.w3.org/2018/credentials/v1", - "https://w3id.org/security/data-integrity/v2" - ], - "type": "DataIntegrityProof", - "created": "2024-09-15T05:01:54", - "verificationMethod": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "cryptosuite": "eddsa-2022", - "proofPurpose": "assertionMethod", - "proofValue": "z28QfeN92FuPz6xBFXY5PF2i3Y5BNGdHyoBtE3B3Ac9YqhDuGVtt8NxwAxcrwTEcSKWsPXiNZDmqE74w3TcV9H1N8" - }, - "verified": false, - "error": { - "name": "jsonld.SyntaxError", - "details": { - "code": "protected term redefinition", - "context": { - "id": "@id", - "type": "@type", - "@protected": true, - "proof": { - "@id": "https://w3id.org/security#proof", - "@type": "@id", - "@container": "@graph" - }, - "DataIntegrityProof": { - "@id": "https://w3id.org/security#DataIntegrityProof", - "@context": { - "@protected": true, - "id": "@id", - "type": "@type", - "challenge": "https://w3id.org/security#challenge", - "created": { - "@id": "http://purl.org/dc/terms/created", - "@type": "http://www.w3.org/2001/XMLSchema#dateTime" - }, - "domain": "https://w3id.org/security#domain", - "expires": { - "@id": "https://w3id.org/security#expiration", - "@type": "http://www.w3.org/2001/XMLSchema#dateTime" - }, - "nonce": "https://w3id.org/security#nonce", - "proofPurpose": { - "@id": "https://w3id.org/security#proofPurpose", - "@type": "@vocab", - "@context": { - "@protected": true, - "id": "@id", - "type": "@type", - "assertionMethod": { - "@id": "https://w3id.org/security#assertionMethod", - "@type": "@id", - "@container": "@set" - }, - "authentication": { - "@id": "https://w3id.org/security#authenticationMethod", - "@type": "@id", - "@container": "@set" - }, - "capabilityInvocation": { - "@id": "https://w3id.org/security#capabilityInvocationMethod", - "@type": "@id", - "@container": "@set" - }, - "capabilityDelegation": { - "@id": "https://w3id.org/security#capabilityDelegationMethod", - "@type": "@id", - "@container": "@set" - }, - "keyAgreement": { - "@id": "https://w3id.org/security#keyAgreementMethod", - "@type": "@id", - "@container": "@set" - } - } - }, - "cryptosuite": "https://w3id.org/security#cryptosuite", - "proofValue": { - "@id": "https://w3id.org/security#proofValue", - "@type": "https://w3id.org/security#multibase" - }, - "verificationMethod": { - "@id": "https://w3id.org/security#verificationMethod", - "@type": "@id" - } - } - } - }, - "term": "DataIntegrityProof" - }, - "message": "Invalid JSON-LD syntax; tried to redefine a protected term." - } - } - ], - "error": { - "name": "VerificationError", - "errors": [ - { - "name": "jsonld.SyntaxError", - "details": { - "code": "protected term redefinition", - "context": { - "id": "@id", - "type": "@type", - "@protected": true, - "proof": { - "@id": "https://w3id.org/security#proof", - "@type": "@id", - "@container": "@graph" - }, - "DataIntegrityProof": { - "@id": "https://w3id.org/security#DataIntegrityProof", - "@context": { - "@protected": true, - "id": "@id", - "type": "@type", - "challenge": "https://w3id.org/security#challenge", - "created": { - "@id": "http://purl.org/dc/terms/created", - "@type": "http://www.w3.org/2001/XMLSchema#dateTime" - }, - "domain": "https://w3id.org/security#domain", - "expires": { - "@id": "https://w3id.org/security#expiration", - "@type": "http://www.w3.org/2001/XMLSchema#dateTime" - }, - "nonce": "https://w3id.org/security#nonce", - "proofPurpose": { - "@id": "https://w3id.org/security#proofPurpose", - "@type": "@vocab", - "@context": { - "@protected": true, - "id": "@id", - "type": "@type", - "assertionMethod": { - "@id": "https://w3id.org/security#assertionMethod", - "@type": "@id", - "@container": "@set" - }, - "authentication": { - "@id": "https://w3id.org/security#authenticationMethod", - "@type": "@id", - "@container": "@set" - }, - "capabilityInvocation": { - "@id": "https://w3id.org/security#capabilityInvocationMethod", - "@type": "@id", - "@container": "@set" - }, - "capabilityDelegation": { - "@id": "https://w3id.org/security#capabilityDelegationMethod", - "@type": "@id", - "@container": "@set" - }, - "keyAgreement": { - "@id": "https://w3id.org/security#keyAgreementMethod", - "@type": "@id", - "@container": "@set" - } - } - }, - "cryptosuite": "https://w3id.org/security#cryptosuite", - "proofValue": { - "@id": "https://w3id.org/security#proofValue", - "@type": "https://w3id.org/security#multibase" - }, - "verificationMethod": { - "@id": "https://w3id.org/security#verificationMethod", - "@type": "@id" - } - } - } - }, - "term": "DataIntegrityProof" - }, - "message": "Invalid JSON-LD syntax; tried to redefine a protected term.", - "stack": "jsonld.SyntaxError: Invalid JSON-LD syntax; tried to redefine a protected term.\n at api.createTermDefinition (/home/node/app/node_modules/jsonld/lib/context.js:988:13)\n at api.process (/home/node/app/node_modules/jsonld/lib/context.js:399:11)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async api.expand (/home/node/app/node_modules/jsonld/lib/expand.js:214:17)\n at async jsonld.expand (/home/node/app/node_modules/jsonld/lib/jsonld.js:322:18)\n at async jsonld.toRDF (/home/node/app/node_modules/jsonld/lib/jsonld.js:687:16)\n at async jsonld.normalize.jsonld.canonize (/home/node/app/node_modules/jsonld/lib/jsonld.js:589:19)" - } - ], - "message": "Verification error(s)." - }, - "checks": [ - { - "check": [ - "proof" - ], - "id": "urn:uuid:86294362-4254-4f36-854f-3952fe42555d", - "error": "Invalid JSON-LD syntax; tried to redefine a protected term.", - "verificationMethod": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT" - } - ] - } - }, - "operator": "notStrictEqual", - "stack": "AssertionError: Expected no error from verifier.: 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 verificationSuccess (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/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/node_modules/data-integrity-test-suite-assertion/suites/verify.js:191:9)" - } + "duration": 0, + "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 verificationSuccess({\n credential: credentials.clone('noOffsetExpires'),\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, @@ -16190,345 +12516,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "ouesj07FQZNyOL7t06-X-", + "parent": "lga9z67djLcSbEtsBUOS8", "ctx": null, - "_testId": "urn:uuid:1212330b-112e-4f13-ac2c-c92590452e5b", + "_testId": "urn:uuid:66e14bfd-1a1e-4cb6-9b1c-d9b802b44b9d", "cell": { - "columnId": "Digital Bazaar", - "rowId": "(expires) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." + "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": {}, "_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=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 28119, + "_idleStart": 36729, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 58, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected no error from verifier.: 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", - "https://w3id.org/security/data-integrity/v2" - ], - "id": "urn:uuid:86294362-4254-4f36-854f-3952fe42555d", - "type": [ - "VerifiableCredential" - ], - "issuer": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "issuanceDate": "2020-03-16T22:37:26.544Z", - "credentialSubject": { - "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" - }, - "proof": { - "expires": "2024-09-15T05:01:54", - "type": "DataIntegrityProof", - "created": "2024-09-15T05:01:54Z", - "verificationMethod": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "cryptosuite": "eddsa-2022", - "proofPurpose": "assertionMethod", - "proofValue": "z23aBpJZnxXpwPcaK5pmk6CM2yq5ZZddCxT6HSkRsPtSCJaAepRSpYetBdqxVdeCNLDv8FeayEfqwf6kvh46u4itb" - } - }, - "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/data-integrity/v2\"],\"id\":\"urn:uuid:86294362-4254-4f36-854f-3952fe42555d\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"expires\":\"2024-09-15T05:01:54\",\"type\":\"DataIntegrityProof\",\"created\":\"2024-09-15T05:01:54Z\",\"verificationMethod\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"cryptosuite\":\"eddsa-2022\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z23aBpJZnxXpwPcaK5pmk6CM2yq5ZZddCxT6HSkRsPtSCJaAepRSpYetBdqxVdeCNLDv8FeayEfqwf6kvh46u4itb\"}},\"options\":{\"checks\":[\"proof\"]}}" - }, - "name": "HTTPError", - "requestUrl": "https://vc2.veresverifier.dev/verifiers/z19w7KofwvE2nkJeRVLp8NDxz/credentials/verify", - "status": 400, - "data": { - "verified": false, - "results": [ - { - "proof": { - "@context": [ - "https://www.w3.org/2018/credentials/v1", - "https://w3id.org/security/data-integrity/v2" - ], - "expires": "2024-09-15T05:01:54", - "type": "DataIntegrityProof", - "created": "2024-09-15T05:01:54Z", - "verificationMethod": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "cryptosuite": "eddsa-2022", - "proofPurpose": "assertionMethod", - "proofValue": "z23aBpJZnxXpwPcaK5pmk6CM2yq5ZZddCxT6HSkRsPtSCJaAepRSpYetBdqxVdeCNLDv8FeayEfqwf6kvh46u4itb" - }, - "verified": false, - "error": { - "name": "jsonld.SyntaxError", - "details": { - "code": "protected term redefinition", - "context": { - "id": "@id", - "type": "@type", - "@protected": true, - "proof": { - "@id": "https://w3id.org/security#proof", - "@type": "@id", - "@container": "@graph" - }, - "DataIntegrityProof": { - "@id": "https://w3id.org/security#DataIntegrityProof", - "@context": { - "@protected": true, - "id": "@id", - "type": "@type", - "challenge": "https://w3id.org/security#challenge", - "created": { - "@id": "http://purl.org/dc/terms/created", - "@type": "http://www.w3.org/2001/XMLSchema#dateTime" - }, - "domain": "https://w3id.org/security#domain", - "expires": { - "@id": "https://w3id.org/security#expiration", - "@type": "http://www.w3.org/2001/XMLSchema#dateTime" - }, - "nonce": "https://w3id.org/security#nonce", - "proofPurpose": { - "@id": "https://w3id.org/security#proofPurpose", - "@type": "@vocab", - "@context": { - "@protected": true, - "id": "@id", - "type": "@type", - "assertionMethod": { - "@id": "https://w3id.org/security#assertionMethod", - "@type": "@id", - "@container": "@set" - }, - "authentication": { - "@id": "https://w3id.org/security#authenticationMethod", - "@type": "@id", - "@container": "@set" - }, - "capabilityInvocation": { - "@id": "https://w3id.org/security#capabilityInvocationMethod", - "@type": "@id", - "@container": "@set" - }, - "capabilityDelegation": { - "@id": "https://w3id.org/security#capabilityDelegationMethod", - "@type": "@id", - "@container": "@set" - }, - "keyAgreement": { - "@id": "https://w3id.org/security#keyAgreementMethod", - "@type": "@id", - "@container": "@set" - } - } - }, - "cryptosuite": "https://w3id.org/security#cryptosuite", - "proofValue": { - "@id": "https://w3id.org/security#proofValue", - "@type": "https://w3id.org/security#multibase" - }, - "verificationMethod": { - "@id": "https://w3id.org/security#verificationMethod", - "@type": "@id" - } - } - } - }, - "term": "DataIntegrityProof" - }, - "message": "Invalid JSON-LD syntax; tried to redefine a protected term." - } - } - ], - "error": { - "name": "VerificationError", - "errors": [ - { - "name": "jsonld.SyntaxError", - "details": { - "code": "protected term redefinition", - "context": { - "id": "@id", - "type": "@type", - "@protected": true, - "proof": { - "@id": "https://w3id.org/security#proof", - "@type": "@id", - "@container": "@graph" - }, - "DataIntegrityProof": { - "@id": "https://w3id.org/security#DataIntegrityProof", - "@context": { - "@protected": true, - "id": "@id", - "type": "@type", - "challenge": "https://w3id.org/security#challenge", - "created": { - "@id": "http://purl.org/dc/terms/created", - "@type": "http://www.w3.org/2001/XMLSchema#dateTime" - }, - "domain": "https://w3id.org/security#domain", - "expires": { - "@id": "https://w3id.org/security#expiration", - "@type": "http://www.w3.org/2001/XMLSchema#dateTime" - }, - "nonce": "https://w3id.org/security#nonce", - "proofPurpose": { - "@id": "https://w3id.org/security#proofPurpose", - "@type": "@vocab", - "@context": { - "@protected": true, - "id": "@id", - "type": "@type", - "assertionMethod": { - "@id": "https://w3id.org/security#assertionMethod", - "@type": "@id", - "@container": "@set" - }, - "authentication": { - "@id": "https://w3id.org/security#authenticationMethod", - "@type": "@id", - "@container": "@set" - }, - "capabilityInvocation": { - "@id": "https://w3id.org/security#capabilityInvocationMethod", - "@type": "@id", - "@container": "@set" - }, - "capabilityDelegation": { - "@id": "https://w3id.org/security#capabilityDelegationMethod", - "@type": "@id", - "@container": "@set" - }, - "keyAgreement": { - "@id": "https://w3id.org/security#keyAgreementMethod", - "@type": "@id", - "@container": "@set" - } - } - }, - "cryptosuite": "https://w3id.org/security#cryptosuite", - "proofValue": { - "@id": "https://w3id.org/security#proofValue", - "@type": "https://w3id.org/security#multibase" - }, - "verificationMethod": { - "@id": "https://w3id.org/security#verificationMethod", - "@type": "@id" - } - } - } - }, - "term": "DataIntegrityProof" - }, - "message": "Invalid JSON-LD syntax; tried to redefine a protected term.", - "stack": "jsonld.SyntaxError: Invalid JSON-LD syntax; tried to redefine a protected term.\n at api.createTermDefinition (/home/node/app/node_modules/jsonld/lib/context.js:988:13)\n at api.process (/home/node/app/node_modules/jsonld/lib/context.js:399:11)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async api.expand (/home/node/app/node_modules/jsonld/lib/expand.js:214:17)\n at async jsonld.expand (/home/node/app/node_modules/jsonld/lib/jsonld.js:322:18)\n at async jsonld.toRDF (/home/node/app/node_modules/jsonld/lib/jsonld.js:687:16)\n at async jsonld.normalize.jsonld.canonize (/home/node/app/node_modules/jsonld/lib/jsonld.js:589:19)" - } - ], - "message": "Verification error(s)." - }, - "checks": [ - { - "check": [ - "proof" - ], - "id": "urn:uuid:86294362-4254-4f36-854f-3952fe42555d", - "error": "Invalid JSON-LD syntax; tried to redefine a protected term.", - "verificationMethod": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT" - } - ] - } - }, - "operator": "notStrictEqual", - "stack": "AssertionError: Expected no error from verifier.: 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 verificationSuccess (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/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/node_modules/data-integrity-test-suite-assertion/suites/verify.js:199:9)" - } + "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": "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, @@ -16538,33 +12552,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "ouesj07FQZNyOL7t06-X-", + "parent": "lga9z67djLcSbEtsBUOS8", "ctx": null, - "_testId": "urn:uuid:61aad51b-1be5-448e-b2e6-3f40e78f9c9d", + "_testId": "urn:uuid:bca43b44-32f1-4e02-8ab1-f24b2f45e838", "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": "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=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/#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": 28178, + "_idleStart": 36729, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 99, + "duration": 386, "state": "passed", "speed": "slow" }, { "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 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, @@ -16574,26 +12588,26 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "ouesj07FQZNyOL7t06-X-", + "parent": "lga9z67djLcSbEtsBUOS8", "ctx": null, - "_testId": "urn:uuid:8d5929a1-24fb-43ad-87ff-4f3f75e3395d", + "_testId": "urn:uuid:f34e8e3a-a7b2-41b3-b49a-ba4873eeda77", "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": "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/#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/#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": 28277, + "_idleStart": 37115, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 50, + "duration": 60, "state": "passed", "speed": "medium" } @@ -16603,7 +12617,7 @@ "_retries": -1, "_beforeEach": [ { - "title": "\"before each\" hook in \"Digital Bazaar\"", + "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, @@ -16614,7 +12628,7 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "ouesj07FQZNyOL7t06-X-", + "parent": "lga9z67djLcSbEtsBUOS8", "ctx": null, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", "originalTitle": "\"before each\" hook", @@ -16626,7 +12640,7 @@ ], "_beforeAll": [ { - "title": "\"before all\" hook in \"Digital Bazaar\"", + "title": "\"before all\" hook in \"LearnCard\"", "body": "async function() {\n proofValueTests = shouldBeProofValue({credentials, verifier});\n }", "async": 0, "sync": true, @@ -16637,7 +12651,7 @@ "_currentRetry": 0, "pending": false, "type": "hook", - "parent": "ouesj07FQZNyOL7t06-X-", + "parent": "lga9z67djLcSbEtsBUOS8", "ctx": null, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", "originalTitle": "\"before all\" hook", @@ -16647,12 +12661,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 26797, + "_idleStart": 27417, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 1, + "duration": 0, "_error": null } ], @@ -16664,12 +12678,12 @@ "_onlyTests": [], "_onlySuites": [], "delayed": false, - "parent": "bklQtFryy0psstU8OU43S", + "parent": "M21B637dnU9eXk0bAsAA1", "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "_testId": "urn:uuid:be4f8e90-72a6-4c04-ba47-033333aa5fa3" + "_testId": "urn:uuid:40d167e1-b92a-45a3-92c7-1afb47582f3f" }, { - "title": "EWF", + "title": "SpruceID", "ctx": null, "suites": [], "tests": [ @@ -16686,11 +12700,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "KEnA8DBEVxZnIEqHqG8ny", + "parent": "gqHHDnM0oYGv-39z2mcsI", "ctx": null, - "_testId": "urn:uuid:9633430f-4de7-4f72-a52e-ad191f4295ca", + "_testId": "urn:uuid:7a0faa6e-6546-4090-8304-3a544aa1e4fd", "cell": { - "columnId": "EWF", + "columnId": "SpruceID", "rowId": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null." }, "_events": {}, @@ -16700,14 +12714,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 28329, + "_idleStart": 37177, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 387, + "duration": 33, "state": "passed", - "speed": "slow" + "speed": "fast" }, { "type": "test", @@ -16722,11 +12736,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "KEnA8DBEVxZnIEqHqG8ny", + "parent": "gqHHDnM0oYGv-39z2mcsI", "ctx": null, - "_testId": "urn:uuid:521d3966-664a-408e-bc10-f9c5aeee0a91", + "_testId": "urn:uuid:709db108-51c7-4371-bb70-bf28cd6f256e", "cell": { - "columnId": "EWF", + "columnId": "SpruceID", "rowId": "Conforming processors MUST produce errors when non-conforming documents are consumed." }, "_events": {}, @@ -16736,14 +12750,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 28717, + "_idleStart": 37210, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 87, + "duration": 23, "state": "passed", - "speed": "slow" + "speed": "fast" }, { "type": "test", @@ -16758,11 +12772,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "KEnA8DBEVxZnIEqHqG8ny", + "parent": "gqHHDnM0oYGv-39z2mcsI", "ctx": null, - "_testId": "urn:uuid:28a2e4e4-cd34-41f9-87dd-9671fbaef552", + "_testId": "urn:uuid:1866ca7b-97d6-4b65-b1fe-249640c47ce3", "cell": { - "columnId": "EWF", + "columnId": "SpruceID", "rowId": "If the \"proof\" field is missing, an error MUST be raised." }, "_events": {}, @@ -16771,14 +12785,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 28804, + "_idleStart": 37233, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 89, + "duration": 22, "state": "passed", - "speed": "slow" + "speed": "fast" }, { "type": "test", @@ -16793,11 +12807,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "KEnA8DBEVxZnIEqHqG8ny", + "parent": "gqHHDnM0oYGv-39z2mcsI", "ctx": null, - "_testId": "urn:uuid:e9bf6bbf-dc1e-4b7b-b17a-8b506c9d42b0", + "_testId": "urn:uuid:f4b4f1cf-a7da-482b-85bd-5937413cac25", "cell": { - "columnId": "EWF", + "columnId": "SpruceID", "rowId": "If the \"proof\" field is invalid, an error MUST be raised." }, "_events": {}, @@ -16806,14 +12820,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 28894, + "_idleStart": 37255, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 88, + "duration": 18, "state": "passed", - "speed": "slow" + "speed": "fast" }, { "type": "test", @@ -16828,11 +12842,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "KEnA8DBEVxZnIEqHqG8ny", + "parent": "gqHHDnM0oYGv-39z2mcsI", "ctx": null, - "_testId": "urn:uuid:8f84eda8-cf07-4561-a373-1fa6c2bec18f", + "_testId": "urn:uuid:1d1c05d6-b69f-47db-9f61-c08da53f8481", "cell": { - "columnId": "EWF", + "columnId": "SpruceID", "rowId": "If the \"proof.type\" field is missing, an error MUST be raised." }, "_events": {}, @@ -16841,14 +12855,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 28982, + "_idleStart": 37274, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 163, + "duration": 20, "state": "passed", - "speed": "slow" + "speed": "fast" }, { "type": "test", @@ -16863,11 +12877,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "KEnA8DBEVxZnIEqHqG8ny", + "parent": "gqHHDnM0oYGv-39z2mcsI", "ctx": null, - "_testId": "urn:uuid:ea22b0f1-ffaf-469b-aaf8-38c02bc84b4f", + "_testId": "urn:uuid:2d5100da-82d4-4bae-b16b-10097a003016", "cell": { - "columnId": "EWF", + "columnId": "SpruceID", "rowId": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised." }, "_events": {}, @@ -16876,14 +12890,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 29146, + "_idleStart": 37294, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 89, + "duration": 18, "state": "passed", - "speed": "slow" + "speed": "fast" }, { "type": "test", @@ -16898,11 +12912,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "KEnA8DBEVxZnIEqHqG8ny", + "parent": "gqHHDnM0oYGv-39z2mcsI", "ctx": null, - "_testId": "urn:uuid:4c5f24cb-dc58-4396-88ef-e161007db55a", + "_testId": "urn:uuid:4704e4e0-681f-4b1d-9cb7-9b2fd01b8fa4", "cell": { - "columnId": "EWF", + "columnId": "SpruceID", "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." }, "_events": {}, @@ -16911,14 +12925,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 29235, + "_idleStart": 37313, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 87, + "duration": 18, "state": "passed", - "speed": "slow" + "speed": "fast" }, { "type": "test", @@ -16933,11 +12947,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "KEnA8DBEVxZnIEqHqG8ny", + "parent": "gqHHDnM0oYGv-39z2mcsI", "ctx": null, - "_testId": "urn:uuid:e5bf15b2-e811-46b6-b1a4-382f6882ff6b", + "_testId": "urn:uuid:e95fd776-4507-4014-a20a-95a7362c7725", "cell": { - "columnId": "EWF", + "columnId": "SpruceID", "rowId": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised." }, "_events": {}, @@ -16946,14 +12960,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 29322, + "_idleStart": 37331, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 92, + "duration": 20, "state": "passed", - "speed": "slow" + "speed": "fast" }, { "type": "test", @@ -16968,11 +12982,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "KEnA8DBEVxZnIEqHqG8ny", + "parent": "gqHHDnM0oYGv-39z2mcsI", "ctx": null, - "_testId": "urn:uuid:90ce9257-bdf7-4728-9c2e-4b8a5f3d07b2", + "_testId": "urn:uuid:d8401554-5bb1-4e07-8969-a97c49d21a39", "cell": { - "columnId": "EWF", + "columnId": "SpruceID", "rowId": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised." }, "_events": {}, @@ -16981,14 +12995,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 29414, + "_idleStart": 37352, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 88, + "duration": 19, "state": "passed", - "speed": "slow" + "speed": "fast" }, { "type": "test", @@ -17003,11 +13017,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "KEnA8DBEVxZnIEqHqG8ny", + "parent": "gqHHDnM0oYGv-39z2mcsI", "ctx": null, - "_testId": "urn:uuid:91cd75e6-9bdc-4bf0-9447-ddc6d1ad8077", + "_testId": "urn:uuid:7b33d8d5-6748-4a19-907f-f62651803da4", "cell": { - "columnId": "EWF", + "columnId": "SpruceID", "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." }, "_events": {}, @@ -17016,14 +13030,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 29502, + "_idleStart": 37373, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 89, + "duration": 18, "state": "passed", - "speed": "slow" + "speed": "fast" }, { "type": "test", @@ -17038,11 +13052,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "KEnA8DBEVxZnIEqHqG8ny", + "parent": "gqHHDnM0oYGv-39z2mcsI", "ctx": null, - "_testId": "urn:uuid:757e1dee-9cab-4f14-81c7-9f8c8a885d62", + "_testId": "urn:uuid:62961073-34df-4502-99e6-8fd794b922d0", "cell": { - "columnId": "EWF", + "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": {}, @@ -17052,14 +13066,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 29591, + "_idleStart": 37391, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 90, + "duration": 19, "state": "passed", - "speed": "slow" + "speed": "fast" }, { "type": "test", @@ -17074,11 +13088,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "KEnA8DBEVxZnIEqHqG8ny", + "parent": "gqHHDnM0oYGv-39z2mcsI", "ctx": null, - "_testId": "urn:uuid:730b0d5e-845a-437d-9886-3adfded063ce", + "_testId": "urn:uuid:f70e9f9c-9d8c-4b40-8f57-f5bc644b5044", "cell": { - "columnId": "EWF", + "columnId": "SpruceID", "rowId": "The proofValue property MUST be used, as specified in 2.1 Proofs." }, "_events": {}, @@ -17088,7 +13102,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 29681, + "_idleStart": 37410, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -17110,11 +13124,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "KEnA8DBEVxZnIEqHqG8ny", + "parent": "gqHHDnM0oYGv-39z2mcsI", "ctx": null, - "_testId": "urn:uuid:24c68316-85d2-4f8e-9133-e659bc1fe27d", + "_testId": "urn:uuid:c095019c-ebf7-4de3-a3e8-2492a313c1cb", "cell": { - "columnId": "EWF", + "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": {}, @@ -17124,7 +13138,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 29681, + "_idleStart": 37410, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -17146,11 +13160,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "KEnA8DBEVxZnIEqHqG8ny", + "parent": "gqHHDnM0oYGv-39z2mcsI", "ctx": null, - "_testId": "urn:uuid:19d73d4e-c7fb-4c4e-bf89-83e72b4b16c9", + "_testId": "urn:uuid:a8e71f04-7f10-4605-ac66-03bb26ba6d94", "cell": { - "columnId": "EWF", + "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": {}, @@ -17160,14 +13174,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 29681, + "_idleStart": 37411, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 272, + "duration": 62, "state": "passed", - "speed": "slow" + "speed": "medium" }, { "type": "test", @@ -17182,11 +13196,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "KEnA8DBEVxZnIEqHqG8ny", + "parent": "gqHHDnM0oYGv-39z2mcsI", "ctx": null, - "_testId": "urn:uuid:8401b0cd-7c5b-401b-ab1e-39c24365e2e5", + "_testId": "urn:uuid:43145434-3644-45d6-bb8e-cc5bde554a76", "cell": { - "columnId": "EWF", + "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": {}, @@ -17196,19 +13210,95 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 29953, + "_idleStart": 37473, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 86, + "duration": 20, "state": "passed", - "speed": "slow" - }, + "speed": "fast" + } + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [ + { + "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, + "_slow": 75, + "_retries": -1, + "timedOut": false, + "_currentRetry": 0, + "pending": false, + "type": "hook", + "parent": "gqHHDnM0oYGv-39z2mcsI", + "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 \"SpruceID\"", + "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": "gqHHDnM0oYGv-39z2mcsI", + "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": 37175, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 0, + "_error": null + } + ], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "M21B637dnU9eXk0bAsAA1", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "_testId": "urn:uuid:2d6e7da4-c312-48d3-88ae-755022672994" + }, + { + "title": "Trinsic", + "ctx": null, + "suites": [], + "tests": [ { "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 await verificationFail({\n credential: credentials.clone('invalidCreated'),\n verifier\n });\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, @@ -17218,33 +13308,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "KEnA8DBEVxZnIEqHqG8ny", + "parent": "IfEsjvRHLDsMDJ1wbOSdY", "ctx": null, - "_testId": "urn:uuid:84261a48-9018-43f1-aaf6-1cbff7f21ac0", + "_testId": "urn:uuid:3f6598ff-f9f0-4df6-a22e-24e04369c5f1", "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." + "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/#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", + "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": 30040, + "_idleStart": 37495, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 86, + "duration": 511, "state": "passed", "speed": "slow" }, { "type": "test", - "title": "If present (expires), 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": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=If%20present%2C%20it%20MUST%20be%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 await verificationFail({\n credential: credentials.clone('invalidExpires'),\n verifier\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, @@ -17254,33 +13344,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "KEnA8DBEVxZnIEqHqG8ny", + "parent": "IfEsjvRHLDsMDJ1wbOSdY", "ctx": null, - "_testId": "urn:uuid:903022ef-fe8a-4bdd-bbc2-71a45a7b8026", + "_testId": "urn:uuid:3da1c9ec-6d1e-49cf-9352-d6603d90e554", "cell": { - "columnId": "EWF", - "rowId": "If present (expires), 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." + "columnId": "Trinsic", + "rowId": "Conforming processors MUST produce errors when non-conforming documents are consumed." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=If%20present%2C%20it%20MUST%20be%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.", + "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": 30126, + "_idleStart": 38006, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 88, + "duration": 19, "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 verificationSuccess({\n credential: credentials.clone('noOffsetCreated'),\n verifier\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, @@ -17290,147 +13380,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "KEnA8DBEVxZnIEqHqG8ny", + "parent": "IfEsjvRHLDsMDJ1wbOSdY", "ctx": null, - "_testId": "urn:uuid:9a02bc57-9609-4787-af35-90a1497744de", + "_testId": "urn:uuid:21428c99-9230-44e0-913d-0c02a83fced7", "cell": { - "columnId": "EWF", - "rowId": "(created) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." + "columnId": "Trinsic", + "rowId": "If the \"proof\" field is missing, an error MUST be raised." }, "_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": 30214, + "_idleStart": 38025, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 87, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected no error from verifier.: expected HTTPError: @spruceid/didkit-wasm-node.ver… { …(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/data-integrity/v2\"],\"id\":\"urn:uuid:86294362-4254-4f36-854f-3952fe42555d\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"type\":\"DataIntegrityProof\",\"created\":\"2024-09-15T05:01:54\",\"verificationMethod\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"cryptosuite\":\"eddsa-2022\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z28QfeN92FuPz6xBFXY5PF2i3Y5BNGdHyoBtE3B3Ac9YqhDuGVtt8NxwAxcrwTEcSKWsPXiNZDmqE74w3TcV9H1N8\"}},\"options\":{}}", - "method": "POST", - "json": { - "verifiableCredential": { - "@context": [ - "https://www.w3.org/2018/credentials/v1", - "https://w3id.org/security/data-integrity/v2" - ], - "id": "urn:uuid:86294362-4254-4f36-854f-3952fe42555d", - "type": [ - "VerifiableCredential" - ], - "issuer": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "issuanceDate": "2020-03-16T22:37:26.544Z", - "credentialSubject": { - "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" - }, - "proof": { - "type": "DataIntegrityProof", - "created": "2024-09-15T05:01:54", - "verificationMethod": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "cryptosuite": "eddsa-2022", - "proofPurpose": "assertionMethod", - "proofValue": "z28QfeN92FuPz6xBFXY5PF2i3Y5BNGdHyoBtE3B3Ac9YqhDuGVtt8NxwAxcrwTEcSKWsPXiNZDmqE74w3TcV9H1N8" - } - }, - "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/verify", - "status": 400, - "data": { - "message": "@spruceid/didkit-wasm-node.verifyCredential error: data did not match any variant of untagged enum OneOrMany at line 1 column 746", - "error": "Bad Request", - "statusCode": 400 - } - }, - "operator": "notStrictEqual", - "stack": "AssertionError: Expected no error from verifier.: expected HTTPError: @spruceid/didkit-wasm-node.ver… { …(6) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at verificationSuccess (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/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/node_modules/data-integrity-test-suite-assertion/suites/verify.js:191:9)" - } + "duration": 23, + "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 verificationSuccess({\n credential: credentials.clone('noOffsetExpires'),\n verifier\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, @@ -17440,152 +13415,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "KEnA8DBEVxZnIEqHqG8ny", + "parent": "IfEsjvRHLDsMDJ1wbOSdY", "ctx": null, - "_testId": "urn:uuid:1eac6bb2-d1fb-4a20-9fc6-f6c8e8f24ff5", + "_testId": "urn:uuid:1f9879d7-5b02-423f-b6de-8e49496a429b", "cell": { - "columnId": "EWF", - "rowId": "(expires) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." + "columnId": "Trinsic", + "rowId": "If the \"proof\" field is invalid, an error MUST be raised." }, "_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": 30302, + "_idleStart": 38051, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 87, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected no error from verifier.: 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/data-integrity/v2\"],\"id\":\"urn:uuid:86294362-4254-4f36-854f-3952fe42555d\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"expires\":\"2024-09-15T05:01:54\",\"type\":\"DataIntegrityProof\",\"created\":\"2024-09-15T05:01:54Z\",\"verificationMethod\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"cryptosuite\":\"eddsa-2022\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z23aBpJZnxXpwPcaK5pmk6CM2yq5ZZddCxT6HSkRsPtSCJaAepRSpYetBdqxVdeCNLDv8FeayEfqwf6kvh46u4itb\"}},\"options\":{}}", - "method": "POST", - "json": { - "verifiableCredential": { - "@context": [ - "https://www.w3.org/2018/credentials/v1", - "https://w3id.org/security/data-integrity/v2" - ], - "id": "urn:uuid:86294362-4254-4f36-854f-3952fe42555d", - "type": [ - "VerifiableCredential" - ], - "issuer": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "issuanceDate": "2020-03-16T22:37:26.544Z", - "credentialSubject": { - "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" - }, - "proof": { - "expires": "2024-09-15T05:01:54", - "type": "DataIntegrityProof", - "created": "2024-09-15T05:01:54Z", - "verificationMethod": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "cryptosuite": "eddsa-2022", - "proofPurpose": "assertionMethod", - "proofValue": "z23aBpJZnxXpwPcaK5pmk6CM2yq5ZZddCxT6HSkRsPtSCJaAepRSpYetBdqxVdeCNLDv8FeayEfqwf6kvh46u4itb" - } - }, - "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/verify", - "status": 400, - "data": { - "checks": [ - "proof" - ], - "warnings": [], - "errors": [ - "Linked Data Proof type not implemented" - ] - } - }, - "operator": "notStrictEqual", - "stack": "AssertionError: Expected no error from verifier.: 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 verificationSuccess (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/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/node_modules/data-integrity-test-suite-assertion/suites/verify.js:199:9)" - } + "duration": 22, + "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": "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, @@ -17595,33 +13450,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "KEnA8DBEVxZnIEqHqG8ny", + "parent": "IfEsjvRHLDsMDJ1wbOSdY", "ctx": null, - "_testId": "urn:uuid:9b12d444-f450-4d8c-a542-a6ae92247f9c", + "_testId": "urn:uuid:c3352b77-f7bc-4a18-9b6f-3c915036d7e0", "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." + "columnId": "Trinsic", + "rowId": "If the \"proof.type\" field is missing, an error MUST be raised." }, "_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": 30390, + "_idleStart": 38073, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 88, + "duration": 21, "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": "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, @@ -17631,37 +13485,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "KEnA8DBEVxZnIEqHqG8ny", + "parent": "IfEsjvRHLDsMDJ1wbOSdY", "ctx": null, - "_testId": "urn:uuid:38a041b1-350f-4b25-a944-1f1cdc86d945", + "_testId": "urn:uuid:7d3882ea-2fa2-4dfc-9e4f-f3d5382382f4", "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." + "columnId": "Trinsic", + "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/#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": 30478, + "_idleStart": 38094, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 89, + "duration": 21, "state": "passed", - "speed": "slow" - } - ], - "root": false, - "pending": false, - "_retries": -1, - "_beforeEach": [ + "speed": "fast" + }, { - "title": "\"before each\" hook in \"EWF\"", - "body": "function() {\n this.currentTest.cell = {\n columnId: testDescription,\n rowId: this.currentTest.title\n };\n }", + "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 }", "async": 0, "sync": true, "_timeout": 15000, @@ -17670,106 +13519,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "type": "hook", - "parent": "KEnA8DBEVxZnIEqHqG8ny", - "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": "IfEsjvRHLDsMDJ1wbOSdY", + "ctx": null, + "_testId": "urn:uuid:df26dcb0-77f2-4a22-a82a-6968294570cc", + "cell": { + "columnId": "Trinsic", + "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." + }, "_events": {}, "_eventsCount": 1, - "duration": 0, - "_error": null - } - ], - "_beforeAll": [ - { - "title": "\"before all\" hook in \"EWF\"", - "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": "KEnA8DBEVxZnIEqHqG8ny", - "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": 28327, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 0, - "_error": null - } - ], - "_afterEach": [], - "_afterAll": [], - "_timeout": 15000, - "_slow": 75, - "_bail": false, - "_onlyTests": [], - "_onlySuites": [], - "delayed": false, - "parent": "bklQtFryy0psstU8OU43S", - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "_testId": "urn:uuid:98fc192b-fbac-4cd8-a1b6-5d11aba28519" - }, - { - "title": "LearnCard", - "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 }", - "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": "XD2-EVL18dB-hOt8puHrL", - "ctx": null, - "_testId": "urn:uuid:ff33efde-7ed2-4a31-8470-378ce8b7228e", - "cell": { - "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": 30569, + "_idleStart": 38115, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 238, + "duration": 21, "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 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, @@ -17779,33 +13555,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "XD2-EVL18dB-hOt8puHrL", + "parent": "IfEsjvRHLDsMDJ1wbOSdY", "ctx": null, - "_testId": "urn:uuid:0173e3e9-966f-48da-a4dd-8c27ee24c698", + "_testId": "urn:uuid:c084f499-8ba0-4f3d-a888-eedaaa0c2a5c", "cell": { - "columnId": "LearnCard", - "rowId": "Conforming processors MUST produce errors when non-conforming documents are consumed." + "columnId": "Trinsic", + "rowId": "If the \"proof.verificationMethod\" 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": 30807, + "_idleStart": 38137, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 79, + "duration": 29, "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": "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, @@ -17815,12 +13590,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "XD2-EVL18dB-hOt8puHrL", + "parent": "IfEsjvRHLDsMDJ1wbOSdY", "ctx": null, - "_testId": "urn:uuid:6e32f533-c4cf-4eb1-81a9-961dd12f7638", + "_testId": "urn:uuid:14899731-f41a-45d2-8626-5404a5274878", "cell": { - "columnId": "LearnCard", - "rowId": "If the \"proof\" field is missing, an error MUST be raised." + "columnId": "Trinsic", + "rowId": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, @@ -17828,19 +13603,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 30886, + "_idleStart": 38166, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 42, + "duration": 29, "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.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, @@ -17850,12 +13625,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "XD2-EVL18dB-hOt8puHrL", + "parent": "IfEsjvRHLDsMDJ1wbOSdY", "ctx": null, - "_testId": "urn:uuid:106245ca-15be-4c55-a9c0-f683ab861aaf", + "_testId": "urn:uuid:ee730b8a-1ab0-48cc-aa01-ffb65e74d6ca", "cell": { - "columnId": "LearnCard", - "rowId": "If the \"proof\" field is invalid, an error MUST be raised." + "columnId": "Trinsic", + "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, @@ -17863,19 +13638,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 30928, + "_idleStart": 38195, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 1177, + "duration": 19, "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": "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, @@ -17885,32 +13660,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "XD2-EVL18dB-hOt8puHrL", + "parent": "IfEsjvRHLDsMDJ1wbOSdY", "ctx": null, - "_testId": "urn:uuid:405ee439-70ae-4d25-aee6-b5a425be4f8c", + "_testId": "urn:uuid:0af547e7-9e07-46d5-8e56-17f7f46134b1", "cell": { - "columnId": "LearnCard", - "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": 32105, + "_idleStart": 38215, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 42, + "duration": 20, "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": "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, @@ -17920,32 +13696,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "XD2-EVL18dB-hOt8puHrL", + "parent": "IfEsjvRHLDsMDJ1wbOSdY", "ctx": null, - "_testId": "urn:uuid:412c1d7c-961d-44e5-bc25-df5ad2c01d9d", + "_testId": "urn:uuid:d1bf5b47-d3ff-4020-a184-2c8b433cfa11", "cell": { - "columnId": "LearnCard", - "rowId": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", 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": 32147, + "_idleStart": 38235, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 7246, + "duration": 0, "state": "passed", - "speed": "slow" + "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.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, @@ -17955,32 +13732,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "XD2-EVL18dB-hOt8puHrL", + "parent": "IfEsjvRHLDsMDJ1wbOSdY", "ctx": null, - "_testId": "urn:uuid:8ce67b08-ca0a-42cd-872d-50699b822f36", + "_testId": "urn:uuid:b9be37ca-d79c-4e13-b0e7-5ac9f945d4b5", "cell": { - "columnId": "LearnCard", - "rowId": "If the \"proof.verificationMethod\" 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": 39393, + "_idleStart": 38235, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 45, + "duration": 0, "state": "passed", - "speed": "medium" + "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": "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, @@ -17990,32 +13768,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "XD2-EVL18dB-hOt8puHrL", + "parent": "IfEsjvRHLDsMDJ1wbOSdY", "ctx": null, - "_testId": "urn:uuid:c95a15ad-d4d9-40c0-9359-d70a62099885", + "_testId": "urn:uuid:5653ae51-019e-46d6-bc14-59e53d771734", "cell": { - "columnId": "LearnCard", - "rowId": "If the \"proof.verificationMethod\" field is invalid, 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": 39438, + "_idleStart": 38236, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 89, + "duration": 110, "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": "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, @@ -18025,32 +13804,37 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "XD2-EVL18dB-hOt8puHrL", + "parent": "IfEsjvRHLDsMDJ1wbOSdY", "ctx": null, - "_testId": "urn:uuid:2f1ecb64-ad25-4d81-8e7e-e024b612a55e", + "_testId": "urn:uuid:6ecb8de8-c2f6-4502-9d80-64fa8941025d", "cell": { - "columnId": "LearnCard", - "rowId": "If the \"proof.proofPurpose\" 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": 39527, + "_idleStart": 38346, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 38, + "duration": 17, "state": "passed", - "speed": "medium" - }, + "speed": "fast" + } + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [ { - "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 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, @@ -18059,69 +13843,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": "XD2-EVL18dB-hOt8puHrL", + "type": "hook", + "parent": "IfEsjvRHLDsMDJ1wbOSdY", "ctx": null, - "_testId": "urn:uuid:eec817ed-0f26-4c29-baef-c32880b6b8fe", - "cell": { - "columnId": "LearnCard", - "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." - }, - "_events": {}, - "_eventsCount": 1, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 39565, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 71, - "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 }", - "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": "XD2-EVL18dB-hOt8puHrL", - "ctx": null, - "_testId": "urn:uuid:3344ba21-7e3f-403e-a617-a476b91346ff", - "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." - }, + "originalTitle": "\"before each\" 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": 39636, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 81, - "state": "passed", - "speed": "slow" - }, + "duration": 0, + "_error": null + } + ], + "_beforeAll": [ { - "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": "\"before all\" hook in \"Trinsic\"", + "body": "async function() {\n proofValueTests = shouldBeProofValue({credentials, verifier});\n }", "async": 0, "sync": true, "_timeout": 15000, @@ -18130,70 +13866,145 @@ "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": "XD2-EVL18dB-hOt8puHrL", + "type": "hook", + "parent": "IfEsjvRHLDsMDJ1wbOSdY", "ctx": null, - "_testId": "urn:uuid:0a4ac65d-d8cb-4da2-a94e-d566862c9d1d", - "cell": { - "columnId": "LearnCard", - "rowId": "The proofValue property MUST be used, as specified in 2.1 Proofs." - }, + "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, - "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": 39717, + "_idleStart": 37493, "_onTimeout": null, "_repeat": null, "_destroyed": true }, "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": "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, - "_slow": 75, - "_retries": -1, - "timedOut": false, - "_currentRetry": 0, + "_error": null + } + ], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "M21B637dnU9eXk0bAsAA1", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "_testId": "urn:uuid:6e0104f9-0e5a-4138-8774-ac00ef096e81" + } + ], + "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": "M21B637dnU9eXk0bAsAA1", + "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": 16490, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 26, + "_error": null + } + ], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "WJJ1i0ogWBUhf0oUoei7K", + "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:36fb310f-94a3-4e68-a8a0-299abe020c00", + "columns": [ + "ACA-py", + "apicatalog.com", + "Danube Tech", + "Digital Bazaar", + "EWF", + "LearnCard", + "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": "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, + "_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": "XD2-EVL18dB-hOt8puHrL", + "parent": "kmG8XZyUxDUPZ6BLYMr9P", "ctx": null, - "_testId": "urn:uuid:c9b11eac-0474-4642-9ca2-2bc642ca484d", + "_testId": "urn:uuid:1aa95047-6784-41ed-90fc-f4a85d57d60a", "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." + "columnId": "ACA-py", + "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/#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/#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": 39717, + "_idleStart": 16522, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 173, "state": "passed", - "speed": "fast" + "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": "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, @@ -18203,33 +14014,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "XD2-EVL18dB-hOt8puHrL", + "parent": "RaxdbvT1t4jg8M1E4Yot7", "ctx": null, - "_testId": "urn:uuid:e8836258-124e-41ba-a1b5-2462b67436e9", + "_testId": "urn:uuid:5ab7e18b-c458-41f6-93c1-b2a798e61fc0", "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": "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=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/#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": 39718, + "_idleStart": 17059, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 324, + "duration": 118, "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": "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, @@ -18239,33 +14050,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "XD2-EVL18dB-hOt8puHrL", + "parent": "tP2ofxvtbCGvWsW_3gpVj", "ctx": null, - "_testId": "urn:uuid:6693215f-2c58-4134-b7eb-f178d772cf11", + "_testId": "urn:uuid:c5f7bd95-5edc-4f8c-ae63-47c3502d7c08", "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." + "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/#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/#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": 40042, + "_idleStart": 17941, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 67, + "duration": 678, "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 await verificationFail({\n credential: credentials.clone('invalidCreated'),\n verifier\n });\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, @@ -18275,33 +14086,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "XD2-EVL18dB-hOt8puHrL", + "parent": "_uaYuFH_jTfDLBT8n9RJ0", "ctx": null, - "_testId": "urn:uuid:6a4661a6-b909-4bc0-bfa8-5d2b66d19b5c", + "_testId": "urn:uuid:ba8ff4a3-95b7-4e7e-955a-b76c583f4e57", "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." + "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/#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", + "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": 40110, + "_idleStart": 23505, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 73, + "duration": 204, "state": "passed", - "speed": "medium" + "speed": "slow" }, { "type": "test", - "title": "If present (expires), 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": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=If%20present%2C%20it%20MUST%20be%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 await verificationFail({\n credential: credentials.clone('invalidExpires'),\n verifier\n });\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, @@ -18311,33 +14122,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "XD2-EVL18dB-hOt8puHrL", + "parent": "91u2WAU2zJYMNRo8aVT6K", "ctx": null, - "_testId": "urn:uuid:872a9cc8-8979-4002-9b86-a4a3d91544bd", + "_testId": "urn:uuid:76478a70-14cc-4dd7-a8ed-b0fa4aa6d447", "cell": { - "columnId": "LearnCard", - "rowId": "If present (expires), 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." + "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/#proofs:~:text=If%20present%2C%20it%20MUST%20be%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.", + "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": 40183, + "_idleStart": 25695, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 64, + "duration": 384, "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 verificationSuccess({\n credential: credentials.clone('noOffsetCreated'),\n verifier\n });\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, @@ -18347,143 +14158,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "XD2-EVL18dB-hOt8puHrL", + "parent": "lga9z67djLcSbEtsBUOS8", "ctx": null, - "_testId": "urn:uuid:600b4ecc-07cc-4f43-8b66-f6bad946c8f0", + "_testId": "urn:uuid:816e015d-fba3-4a47-9b9d-c877bbc72a04", "cell": { "columnId": "LearnCard", - "rowId": "(created) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." + "rowId": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null." }, "_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=When%20deserializing%20to%20RDF%2C%20implementations%20MUST%20ensure%20that%20the%20base%20URL%20is%20set%20to%20null.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 40247, + "_idleStart": 27418, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 72, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected no error from verifier.: 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/data-integrity/v2\"],\"id\":\"urn:uuid:86294362-4254-4f36-854f-3952fe42555d\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"type\":\"DataIntegrityProof\",\"created\":\"2024-09-15T05:01:54\",\"verificationMethod\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"cryptosuite\":\"eddsa-2022\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z28QfeN92FuPz6xBFXY5PF2i3Y5BNGdHyoBtE3B3Ac9YqhDuGVtt8NxwAxcrwTEcSKWsPXiNZDmqE74w3TcV9H1N8\"}},\"options\":{}}", - "method": "POST", - "json": { - "verifiableCredential": { - "@context": [ - "https://www.w3.org/2018/credentials/v1", - "https://w3id.org/security/data-integrity/v2" - ], - "id": "urn:uuid:86294362-4254-4f36-854f-3952fe42555d", - "type": [ - "VerifiableCredential" - ], - "issuer": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "issuanceDate": "2020-03-16T22:37:26.544Z", - "credentialSubject": { - "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" - }, - "proof": { - "type": "DataIntegrityProof", - "created": "2024-09-15T05:01:54", - "verificationMethod": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "cryptosuite": "eddsa-2022", - "proofPurpose": "assertionMethod", - "proofValue": "z28QfeN92FuPz6xBFXY5PF2i3Y5BNGdHyoBtE3B3Ac9YqhDuGVtt8NxwAxcrwTEcSKWsPXiNZDmqE74w3TcV9H1N8" - } - }, - "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/verify", - "status": 400, - "data": "Invalid input: data did not match any variant of untagged enum OneOrMany at line 1 column 746" - }, - "operator": "notStrictEqual", - "stack": "AssertionError: Expected no error from verifier.: 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 verificationSuccess (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/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/node_modules/data-integrity-test-suite-assertion/suites/verify.js:191:9)" - } + "duration": 202, + "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 verificationSuccess({\n credential: credentials.clone('noOffsetExpires'),\n verifier\n });\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, @@ -18493,153 +14194,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "XD2-EVL18dB-hOt8puHrL", + "parent": "gqHHDnM0oYGv-39z2mcsI", "ctx": null, - "_testId": "urn:uuid:105fdf9f-5019-4096-a6c6-5b52ece21928", + "_testId": "urn:uuid:7a0faa6e-6546-4090-8304-3a544aa1e4fd", "cell": { - "columnId": "LearnCard", - "rowId": "(expires) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." + "columnId": "SpruceID", + "rowId": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null." }, "_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=When%20deserializing%20to%20RDF%2C%20implementations%20MUST%20ensure%20that%20the%20base%20URL%20is%20set%20to%20null.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 40320, + "_idleStart": 37177, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 70, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected no error from verifier.: 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/data-integrity/v2\"],\"id\":\"urn:uuid:86294362-4254-4f36-854f-3952fe42555d\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"expires\":\"2024-09-15T05:01:54\",\"type\":\"DataIntegrityProof\",\"created\":\"2024-09-15T05:01:54Z\",\"verificationMethod\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"cryptosuite\":\"eddsa-2022\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z23aBpJZnxXpwPcaK5pmk6CM2yq5ZZddCxT6HSkRsPtSCJaAepRSpYetBdqxVdeCNLDv8FeayEfqwf6kvh46u4itb\"}},\"options\":{}}", - "method": "POST", - "json": { - "verifiableCredential": { - "@context": [ - "https://www.w3.org/2018/credentials/v1", - "https://w3id.org/security/data-integrity/v2" - ], - "id": "urn:uuid:86294362-4254-4f36-854f-3952fe42555d", - "type": [ - "VerifiableCredential" - ], - "issuer": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "issuanceDate": "2020-03-16T22:37:26.544Z", - "credentialSubject": { - "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" - }, - "proof": { - "expires": "2024-09-15T05:01:54", - "type": "DataIntegrityProof", - "created": "2024-09-15T05:01:54Z", - "verificationMethod": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "cryptosuite": "eddsa-2022", - "proofPurpose": "assertionMethod", - "proofValue": "z23aBpJZnxXpwPcaK5pmk6CM2yq5ZZddCxT6HSkRsPtSCJaAepRSpYetBdqxVdeCNLDv8FeayEfqwf6kvh46u4itb" - } - }, - "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/verify", - "status": 400, - "data": { - "checks": [ - "proof", - "expiration" - ], - "warnings": [], - "errors": [ - "Linked Data Proof type not implemented" - ] - } - }, - "operator": "notStrictEqual", - "stack": "AssertionError: Expected no error from verifier.: 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 verificationSuccess (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/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/node_modules/data-integrity-test-suite-assertion/suites/verify.js:199:9)" - } + "duration": 33, + "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": "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, @@ -18649,33 +14230,39 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "XD2-EVL18dB-hOt8puHrL", + "parent": "IfEsjvRHLDsMDJ1wbOSdY", "ctx": null, - "_testId": "urn:uuid:d3fc771c-512d-4ea4-be1f-570a1c74ad3c", + "_testId": "urn:uuid:3f6598ff-f9f0-4df6-a22e-24e04369c5f1", "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." + "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/#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/#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": 40391, + "_idleStart": 37495, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 73, + "duration": 511, "state": "passed", - "speed": "medium" - }, + "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 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": "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, @@ -18685,37 +14272,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "XD2-EVL18dB-hOt8puHrL", + "parent": "kmG8XZyUxDUPZ6BLYMr9P", "ctx": null, - "_testId": "urn:uuid:769f5202-1919-4986-afa6-5a13bb87215b", + "_testId": "urn:uuid:5fd7bf6f-4d6e-40a8-a657-ded8f781adcd", "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." + "columnId": "ACA-py", + "rowId": "Conforming processors MUST produce errors when non-conforming documents are consumed." }, "_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/#conformance:~:text=Conforming%20processors%20MUST%20produce%20errors%20when%20non%2Dconforming%20documents%20are%20consumed.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 40464, + "_idleStart": 16696, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 75, + "duration": 25, "state": "passed", - "speed": "medium" - } - ], - "root": false, - "pending": false, - "_retries": -1, - "_beforeEach": [ + "speed": "fast" + }, { - "title": "\"before each\" hook in \"LearnCard\"", - "body": "function() {\n this.currentTest.cell = {\n columnId: testDescription,\n rowId: this.currentTest.title\n };\n }", + "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, @@ -18724,70 +14307,34 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "type": "hook", - "parent": "XD2-EVL18dB-hOt8puHrL", - "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 \"LearnCard\"", - "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": "XD2-EVL18dB-hOt8puHrL", + "parent": "RaxdbvT1t4jg8M1E4Yot7", "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:469448d2-4402-4a81-9e54-c59a06292d69", + "cell": { + "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": 30568, + "_idleStart": 17178, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, - "_error": null - } - ], - "_afterEach": [], - "_afterAll": [], - "_timeout": 15000, - "_slow": 75, - "_bail": false, - "_onlyTests": [], - "_onlySuites": [], - "delayed": false, - "parent": "bklQtFryy0psstU8OU43S", - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "_testId": "urn:uuid:65a9532e-a13c-4f67-95cd-e8f21f896a59" - }, - { - "title": "OpSecId", - "ctx": null, - "suites": [], - "tests": [ + "duration": 55, + "state": "passed", + "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, @@ -18797,26 +14344,26 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8sPgtTPQiHtoLikfIzMnw", + "parent": "tP2ofxvtbCGvWsW_3gpVj", "ctx": null, - "_testId": "urn:uuid:13b27739-8ba6-4ce2-a19f-b14426008fdf", + "_testId": "urn:uuid:6a1da42f-0428-4d70-94b8-4a518d156301", "cell": { - "columnId": "OpSecId", - "rowId": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null." + "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/#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": 40541, + "_idleStart": 18619, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 227, + "duration": 224, "state": "passed", "speed": "slow" }, @@ -18833,11 +14380,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8sPgtTPQiHtoLikfIzMnw", + "parent": "_uaYuFH_jTfDLBT8n9RJ0", "ctx": null, - "_testId": "urn:uuid:d8eea4cb-b7fd-4de3-a256-f7fe2531af20", + "_testId": "urn:uuid:d7f4835a-86bb-4771-8c25-2a2077b2e4e6", "cell": { - "columnId": "OpSecId", + "columnId": "Digital Bazaar", "rowId": "Conforming processors MUST produce errors when non-conforming documents are consumed." }, "_events": {}, @@ -18847,19 +14394,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 40768, + "_idleStart": 23709, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 29, + "duration": 1165, "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, @@ -18869,32 +14416,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8sPgtTPQiHtoLikfIzMnw", + "parent": "91u2WAU2zJYMNRo8aVT6K", "ctx": null, - "_testId": "urn:uuid:8d2c60de-c104-4dbb-baff-879f0a3369dc", + "_testId": "urn:uuid:7c34d51e-b140-4cb2-a5d0-7bd8a5aab9ef", "cell": { - "columnId": "OpSecId", - "rowId": "If the \"proof\" field is missing, an error MUST be raised." + "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": 40798, + "_idleStart": 26082, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 31, + "duration": 94, "state": "passed", - "speed": "fast" + "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": "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, @@ -18904,32 +14452,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8sPgtTPQiHtoLikfIzMnw", + "parent": "lga9z67djLcSbEtsBUOS8", "ctx": null, - "_testId": "urn:uuid:1a63d9c9-6618-44ba-9195-998104c514bb", + "_testId": "urn:uuid:d4f21cb7-1f1f-4568-b46a-dc93694df7b4", "cell": { - "columnId": "OpSecId", - "rowId": "If the \"proof\" field is invalid, an error MUST be raised." + "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": 40829, + "_idleStart": 27621, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 29, + "duration": 69, "state": "passed", - "speed": "fast" + "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": "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, @@ -18939,32 +14488,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8sPgtTPQiHtoLikfIzMnw", + "parent": "gqHHDnM0oYGv-39z2mcsI", "ctx": null, - "_testId": "urn:uuid:cf7a7ebd-aa3d-4452-8a98-ce9c911c7695", + "_testId": "urn:uuid:709db108-51c7-4371-bb70-bf28cd6f256e", "cell": { - "columnId": "OpSecId", - "rowId": "If the \"proof.type\" field is missing, an error MUST be raised." + "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/#conformance:~:text=Conforming%20processors%20MUST%20produce%20errors%20when%20non%2Dconforming%20documents%20are%20consumed.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 40858, + "_idleStart": 37210, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 29, + "duration": 23, "state": "passed", "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": "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, @@ -18974,33 +14524,39 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8sPgtTPQiHtoLikfIzMnw", + "parent": "IfEsjvRHLDsMDJ1wbOSdY", "ctx": null, - "_testId": "urn:uuid:ba9dbc43-5ec6-4de1-98d2-067b9645c69e", + "_testId": "urn:uuid:3da1c9ec-6d1e-49cf-9352-d6603d90e554", "cell": { - "columnId": "OpSecId", - "rowId": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised." + "columnId": "Trinsic", + "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": 40887, + "_idleStart": 38006, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 29, + "duration": 19, "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 }", - "async": 0, + } + ] + }, + { + "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 }", + "async": 0, "sync": true, "_timeout": 15000, "_slow": 75, @@ -19009,12 +14565,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8sPgtTPQiHtoLikfIzMnw", + "parent": "kmG8XZyUxDUPZ6BLYMr9P", "ctx": null, - "_testId": "urn:uuid:3092eaad-6b35-465c-832c-ef61bd6e3f80", + "_testId": "urn:uuid:393d6f28-d592-4d38-96b8-b125630b5ff9", "cell": { - "columnId": "OpSecId", - "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." + "columnId": "ACA-py", + "rowId": "If the \"proof\" field is missing, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, @@ -19022,19 +14578,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 40916, + "_idleStart": 16721, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 26, + "duration": 25, "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, @@ -19044,12 +14600,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8sPgtTPQiHtoLikfIzMnw", + "parent": "RaxdbvT1t4jg8M1E4Yot7", "ctx": null, - "_testId": "urn:uuid:c15e2678-a253-4b2f-8a88-8af9039af756", + "_testId": "urn:uuid:47be16ca-c13c-4a40-935f-a46b8bb0c86f", "cell": { - "columnId": "OpSecId", - "rowId": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised." + "columnId": "apicatalog.com", + "rowId": "If the \"proof\" field is missing, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, @@ -19057,19 +14613,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 40942, + "_idleStart": 17233, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 34, + "duration": 64, "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 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, @@ -19079,12 +14635,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8sPgtTPQiHtoLikfIzMnw", + "parent": "tP2ofxvtbCGvWsW_3gpVj", "ctx": null, - "_testId": "urn:uuid:734c2ff4-1cc0-4a3e-a3d3-65c748bff011", + "_testId": "urn:uuid:54d8eaed-3f21-49b8-99e3-96b250480783", "cell": { - "columnId": "OpSecId", - "rowId": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised." + "columnId": "Danube Tech", + "rowId": "If the \"proof\" field is missing, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, @@ -19092,19 +14648,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 40976, + "_idleStart": 18843, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 31, + "duration": 517, "state": "passed", - "speed": "fast" + "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\" 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, @@ -19114,12 +14670,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8sPgtTPQiHtoLikfIzMnw", + "parent": "_uaYuFH_jTfDLBT8n9RJ0", "ctx": null, - "_testId": "urn:uuid:723d882b-3699-4db2-9903-ca28a8dcfc23", + "_testId": "urn:uuid:596462de-acf6-4f92-afe5-072ee4f6acef", "cell": { - "columnId": "OpSecId", - "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." + "columnId": "Digital Bazaar", + "rowId": "If the \"proof\" field is missing, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, @@ -19127,19 +14683,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 41008, + "_idleStart": 24874, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 28, + "duration": 69, "state": "passed", - "speed": "fast" + "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\" 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, @@ -19149,33 +14705,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8sPgtTPQiHtoLikfIzMnw", + "parent": "91u2WAU2zJYMNRo8aVT6K", "ctx": null, - "_testId": "urn:uuid:836e15e8-acd8-4e17-bc58-53e85b4ec669", + "_testId": "urn:uuid:dc024c20-0a45-4b71-9d65-1a05559d7431", "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." + "columnId": "EWF", + "rowId": "If the \"proof\" 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": 41036, + "_idleStart": 26176, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 29, + "duration": 95, "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\" 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, @@ -19185,33 +14740,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8sPgtTPQiHtoLikfIzMnw", + "parent": "lga9z67djLcSbEtsBUOS8", "ctx": null, - "_testId": "urn:uuid:8c5cdd82-e0c7-463c-b417-6a2a562f6869", + "_testId": "urn:uuid:025150aa-93f7-45aa-a092-129f56c38082", "cell": { - "columnId": "OpSecId", - "rowId": "The proofValue property MUST be used, as specified in 2.1 Proofs." + "columnId": "LearnCard", + "rowId": "If the \"proof\" 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": 41065, + "_idleStart": 27691, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 1307, "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\" 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, @@ -19221,33 +14775,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8sPgtTPQiHtoLikfIzMnw", + "parent": "gqHHDnM0oYGv-39z2mcsI", "ctx": null, - "_testId": "urn:uuid:8195b8c7-f10c-4307-b8a5-7ef5024be169", + "_testId": "urn:uuid:1866ca7b-97d6-4b65-b1fe-249640c47ce3", "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." + "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/#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": 41065, + "_idleStart": 37233, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 22, "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 }", + "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, @@ -19257,33 +14810,37 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8sPgtTPQiHtoLikfIzMnw", + "parent": "IfEsjvRHLDsMDJ1wbOSdY", "ctx": null, - "_testId": "urn:uuid:5c6aae23-6fa9-4062-a11f-02aae542ec0c", + "_testId": "urn:uuid:21428c99-9230-44e0-913d-0c02a83fced7", "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." + "columnId": "Trinsic", + "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=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": 41066, + "_idleStart": 38025, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 87, + "duration": 23, "state": "passed", - "speed": "slow" - }, + "speed": "fast" + } + ] + }, + { + "id": "If the \"proof\" field is invalid, an error MUST be raised.", + "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 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, @@ -19293,33 +14850,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8sPgtTPQiHtoLikfIzMnw", + "parent": "kmG8XZyUxDUPZ6BLYMr9P", "ctx": null, - "_testId": "urn:uuid:52d522d7-a18a-448a-8728-c309b740cc72", + "_testId": "urn:uuid:6f7bf3d3-01c3-418f-a53b-490b15616860", "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." + "columnId": "ACA-py", + "rowId": "If the \"proof\" 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": 41153, + "_idleStart": 16748, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 29, + "duration": 26, "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 await verificationFail({\n credential: credentials.clone('invalidCreated'),\n verifier\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, @@ -19329,33 +14885,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8sPgtTPQiHtoLikfIzMnw", + "parent": "RaxdbvT1t4jg8M1E4Yot7", "ctx": null, - "_testId": "urn:uuid:70cc3c77-f985-4952-bd63-defa3e0b72aa", + "_testId": "urn:uuid:3dc807e2-d270-4d04-abe0-87f2b377eb37", "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." + "columnId": "apicatalog.com", + "rowId": "If the \"proof\" 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": 41182, + "_idleStart": 17297, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 32, + "duration": 57, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "If present (expires), 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": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=If%20present%2C%20it%20MUST%20be%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 await verificationFail({\n credential: credentials.clone('invalidExpires'),\n verifier\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, @@ -19365,33 +14920,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8sPgtTPQiHtoLikfIzMnw", + "parent": "tP2ofxvtbCGvWsW_3gpVj", "ctx": null, - "_testId": "urn:uuid:6d420b1a-4cfd-41b9-aca2-9af7b9e07370", + "_testId": "urn:uuid:de31f75e-3cba-4519-b8b5-1abc3c2f7cab", "cell": { - "columnId": "OpSecId", - "rowId": "If present (expires), 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." + "columnId": "Danube Tech", + "rowId": "If the \"proof\" field is invalid, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=If%20present%2C%20it%20MUST%20be%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": 41214, + "_idleStart": 19361, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 31, + "duration": 541, "state": "passed", - "speed": "fast" + "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 verificationSuccess({\n credential: credentials.clone('noOffsetCreated'),\n verifier\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, @@ -19401,145 +14955,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8sPgtTPQiHtoLikfIzMnw", + "parent": "_uaYuFH_jTfDLBT8n9RJ0", "ctx": null, - "_testId": "urn:uuid:ee575c3d-4b2f-4342-a8df-44922141feea", + "_testId": "urn:uuid:e0839897-04cd-4022-91a1-1ae09a6c1eb0", "cell": { - "columnId": "OpSecId", - "rowId": "(created) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." + "columnId": "Digital Bazaar", + "rowId": "If the \"proof\" field is invalid, an error MUST be raised." }, "_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": 41245, + "_idleStart": 24943, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 33, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected no error from verifier.: expected HTTPError: Invalid cryptosuite { …(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/data-integrity/v2\"],\"id\":\"urn:uuid:86294362-4254-4f36-854f-3952fe42555d\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"type\":\"DataIntegrityProof\",\"created\":\"2024-09-15T05:01:54\",\"verificationMethod\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"cryptosuite\":\"eddsa-2022\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z28QfeN92FuPz6xBFXY5PF2i3Y5BNGdHyoBtE3B3Ac9YqhDuGVtt8NxwAxcrwTEcSKWsPXiNZDmqE74w3TcV9H1N8\"}},\"options\":{}}", - "method": "POST", - "json": { - "verifiableCredential": { - "@context": [ - "https://www.w3.org/2018/credentials/v1", - "https://w3id.org/security/data-integrity/v2" - ], - "id": "urn:uuid:86294362-4254-4f36-854f-3952fe42555d", - "type": [ - "VerifiableCredential" - ], - "issuer": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "issuanceDate": "2020-03-16T22:37:26.544Z", - "credentialSubject": { - "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" - }, - "proof": { - "type": "DataIntegrityProof", - "created": "2024-09-15T05:01:54", - "verificationMethod": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "cryptosuite": "eddsa-2022", - "proofPurpose": "assertionMethod", - "proofValue": "z28QfeN92FuPz6xBFXY5PF2i3Y5BNGdHyoBtE3B3Ac9YqhDuGVtt8NxwAxcrwTEcSKWsPXiNZDmqE74w3TcV9H1N8" - } - }, - "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://agent.opsec.id/vc/credentials/verify", - "status": 400, - "data": { - "message": "Invalid cryptosuite" - } - }, - "operator": "notStrictEqual", - "stack": "AssertionError: Expected no error from verifier.: expected HTTPError: Invalid cryptosuite { …(6) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at verificationSuccess (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/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/node_modules/data-integrity-test-suite-assertion/suites/verify.js:191:9)" - } + "duration": 43, + "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 verificationSuccess({\n credential: credentials.clone('noOffsetExpires'),\n verifier\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, @@ -19549,146 +14990,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8sPgtTPQiHtoLikfIzMnw", + "parent": "91u2WAU2zJYMNRo8aVT6K", "ctx": null, - "_testId": "urn:uuid:68cfdfad-abfb-4fb2-a109-1201fc33bcaa", + "_testId": "urn:uuid:cf97fdb5-2ea7-41c0-82b3-b1df0eb8c981", "cell": { - "columnId": "OpSecId", - "rowId": "(expires) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." + "columnId": "EWF", + "rowId": "If the \"proof\" field is invalid, an error MUST be raised." }, "_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": 41279, + "_idleStart": 26271, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 28, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected no error from verifier.: expected HTTPError: Invalid cryptosuite { …(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/data-integrity/v2\"],\"id\":\"urn:uuid:86294362-4254-4f36-854f-3952fe42555d\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"expires\":\"2024-09-15T05:01:54\",\"type\":\"DataIntegrityProof\",\"created\":\"2024-09-15T05:01:54Z\",\"verificationMethod\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"cryptosuite\":\"eddsa-2022\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z23aBpJZnxXpwPcaK5pmk6CM2yq5ZZddCxT6HSkRsPtSCJaAepRSpYetBdqxVdeCNLDv8FeayEfqwf6kvh46u4itb\"}},\"options\":{}}", - "method": "POST", - "json": { - "verifiableCredential": { - "@context": [ - "https://www.w3.org/2018/credentials/v1", - "https://w3id.org/security/data-integrity/v2" - ], - "id": "urn:uuid:86294362-4254-4f36-854f-3952fe42555d", - "type": [ - "VerifiableCredential" - ], - "issuer": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "issuanceDate": "2020-03-16T22:37:26.544Z", - "credentialSubject": { - "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" - }, - "proof": { - "expires": "2024-09-15T05:01:54", - "type": "DataIntegrityProof", - "created": "2024-09-15T05:01:54Z", - "verificationMethod": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "cryptosuite": "eddsa-2022", - "proofPurpose": "assertionMethod", - "proofValue": "z23aBpJZnxXpwPcaK5pmk6CM2yq5ZZddCxT6HSkRsPtSCJaAepRSpYetBdqxVdeCNLDv8FeayEfqwf6kvh46u4itb" - } - }, - "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://agent.opsec.id/vc/credentials/verify", - "status": 400, - "data": { - "message": "Invalid cryptosuite" - } - }, - "operator": "notStrictEqual", - "stack": "AssertionError: Expected no error from verifier.: expected HTTPError: Invalid cryptosuite { …(6) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at verificationSuccess (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/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/node_modules/data-integrity-test-suite-assertion/suites/verify.js:199:9)" - } + "duration": 94, + "state": "passed", + "speed": "slow" }, { "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 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, @@ -19698,33 +15025,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8sPgtTPQiHtoLikfIzMnw", + "parent": "lga9z67djLcSbEtsBUOS8", "ctx": null, - "_testId": "urn:uuid:cdfa03ab-00b7-4738-8776-2114b2b33af4", + "_testId": "urn:uuid:34e71dcf-ad38-433a-a562-ebfc6513985e", "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." + "columnId": "LearnCard", + "rowId": "If the \"proof\" field is invalid, an error MUST be raised." }, "_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": 41308, + "_idleStart": 28998, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 28, + "duration": 60, "state": "passed", - "speed": "fast" + "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": "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, @@ -19734,37 +15060,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8sPgtTPQiHtoLikfIzMnw", + "parent": "gqHHDnM0oYGv-39z2mcsI", "ctx": null, - "_testId": "urn:uuid:0b98dccc-e277-421f-b2ef-0069ef31873b", + "_testId": "urn:uuid:f4b4f1cf-a7da-482b-85bd-5937413cac25", "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." + "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/#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": 41337, + "_idleStart": 37255, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 27, + "duration": 18, "state": "passed", "speed": "fast" - } - ], - "root": false, - "pending": false, - "_retries": -1, - "_beforeEach": [ + }, { - "title": "\"before each\" hook in \"OpSecId\"", - "body": "function() {\n this.currentTest.cell = {\n columnId: testDescription,\n rowId: this.currentTest.title\n };\n }", + "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 }", "async": 0, "sync": true, "_timeout": 15000, @@ -19773,70 +15094,38 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "type": "hook", - "parent": "8sPgtTPQiHtoLikfIzMnw", - "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 \"OpSecId\"", - "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": "8sPgtTPQiHtoLikfIzMnw", + "parent": "IfEsjvRHLDsMDJ1wbOSdY", "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:1f9879d7-5b02-423f-b6de-8e49496a429b", + "cell": { + "columnId": "Trinsic", + "rowId": "If the \"proof\" field is invalid, an error MUST be raised." + }, "_events": {}, "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 40540, + "_idleStart": 38051, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, - "_error": null + "duration": 22, + "state": "passed", + "speed": "fast" } - ], - "_afterEach": [], - "_afterAll": [], - "_timeout": 15000, - "_slow": 75, - "_bail": false, - "_onlyTests": [], - "_onlySuites": [], - "delayed": false, - "parent": "bklQtFryy0psstU8OU43S", - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "_testId": "urn:uuid:25794bc6-d275-4393-b783-2a68d12114ab" + ] }, { - "title": "SpruceID", - "ctx": null, - "suites": [], - "tests": [ + "id": "If the \"proof.type\" field is missing, an error MUST be raised.", + "cells": [ { "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, @@ -19846,33 +15135,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I8HfQUCby8c6rnnhicBqw", + "parent": "kmG8XZyUxDUPZ6BLYMr9P", "ctx": null, - "_testId": "urn:uuid:4fe23332-38c6-49b9-bc9d-b1d12fbb3069", + "_testId": "urn:uuid:b5cd852b-ef12-4acc-bdde-029c91b52467", "cell": { - "columnId": "SpruceID", - "rowId": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null." + "columnId": "ACA-py", + "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": 41366, + "_idleStart": 16774, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 55, + "duration": 29, "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.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, @@ -19882,33 +15170,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I8HfQUCby8c6rnnhicBqw", + "parent": "RaxdbvT1t4jg8M1E4Yot7", "ctx": null, - "_testId": "urn:uuid:63b4dc41-c9e1-4cea-9a01-55f3328e7c77", + "_testId": "urn:uuid:dbcc3823-ec11-472f-9b31-19f4bb9edf56", "cell": { - "columnId": "SpruceID", - "rowId": "Conforming processors MUST produce errors when non-conforming documents are consumed." + "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/#conformance:~:text=Conforming%20processors%20MUST%20produce%20errors%20when%20non%2Dconforming%20documents%20are%20consumed.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 41421, + "_idleStart": 17354, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 22, + "duration": 46, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "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 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, @@ -19918,12 +15205,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I8HfQUCby8c6rnnhicBqw", + "parent": "tP2ofxvtbCGvWsW_3gpVj", "ctx": null, - "_testId": "urn:uuid:0f675f75-9cf5-49d4-a3da-c9538bb0a920", + "_testId": "urn:uuid:69245226-7e1d-4c23-a943-9dcd1c3c20f8", "cell": { - "columnId": "SpruceID", - "rowId": "If the \"proof\" field is missing, an error MUST be raised." + "columnId": "Danube Tech", + "rowId": "If the \"proof.type\" field is missing, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, @@ -19931,19 +15218,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 41444, + "_idleStart": 19903, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 21, + "duration": 217, "state": "passed", - "speed": "fast" + "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": "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, @@ -19953,12 +15240,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I8HfQUCby8c6rnnhicBqw", + "parent": "_uaYuFH_jTfDLBT8n9RJ0", "ctx": null, - "_testId": "urn:uuid:3bb66923-0e70-45d0-a18c-ce3c00c4ba0a", + "_testId": "urn:uuid:d1650aec-6612-4e90-9060-46a0597a2dc9", "cell": { - "columnId": "SpruceID", - "rowId": "If the \"proof\" field is invalid, an error MUST be raised." + "columnId": "Digital Bazaar", + "rowId": "If the \"proof.type\" field is missing, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, @@ -19966,14 +15253,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 41465, + "_idleStart": 24987, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 25, + "duration": 66, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", @@ -19988,11 +15275,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I8HfQUCby8c6rnnhicBqw", + "parent": "91u2WAU2zJYMNRo8aVT6K", "ctx": null, - "_testId": "urn:uuid:03c342cb-23a4-43eb-a9a4-55fab0926116", + "_testId": "urn:uuid:6c719739-1a0e-4912-a02c-8b9c447c1c38", "cell": { - "columnId": "SpruceID", + "columnId": "EWF", "rowId": "If the \"proof.type\" field is missing, an error MUST be raised." }, "_events": {}, @@ -20001,19 +15288,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 41490, + "_idleStart": 26365, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 24, + "duration": 94, "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": "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, @@ -20023,12 +15310,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I8HfQUCby8c6rnnhicBqw", + "parent": "lga9z67djLcSbEtsBUOS8", "ctx": null, - "_testId": "urn:uuid:356621a8-908c-496f-a980-9e5bbe959fa7", + "_testId": "urn:uuid:2afee954-b602-4bb8-ab1b-66fb8ac42b23", "cell": { - "columnId": "SpruceID", - "rowId": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised." + "columnId": "LearnCard", + "rowId": "If the \"proof.type\" field is missing, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, @@ -20036,19 +15323,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 41517, + "_idleStart": 29058, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 21, + "duration": 38, "state": "passed", - "speed": "fast" + "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": "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, @@ -20058,12 +15345,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I8HfQUCby8c6rnnhicBqw", + "parent": "gqHHDnM0oYGv-39z2mcsI", "ctx": null, - "_testId": "urn:uuid:d93db2b6-2a1d-4e97-85e6-32c2c3ca86a3", + "_testId": "urn:uuid:1d1c05d6-b69f-47db-9f61-c08da53f8481", "cell": { "columnId": "SpruceID", - "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." + "rowId": "If the \"proof.type\" field is missing, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, @@ -20071,7 +15358,7 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 41538, + "_idleStart": 37274, "_onTimeout": null, "_repeat": null, "_destroyed": true @@ -20082,8 +15369,8 @@ }, { "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.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, @@ -20093,12 +15380,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I8HfQUCby8c6rnnhicBqw", + "parent": "IfEsjvRHLDsMDJ1wbOSdY", "ctx": null, - "_testId": "urn:uuid:e3936c29-e9da-4740-aff2-a485d5c7a8f3", + "_testId": "urn:uuid:c3352b77-f7bc-4a18-9b6f-3c915036d7e0", "cell": { - "columnId": "SpruceID", - "rowId": "If the \"proof.verificationMethod\" 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, @@ -20106,19 +15393,24 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 41559, + "_idleStart": 38073, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 20, + "duration": 21, "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.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.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, @@ -20128,12 +15420,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I8HfQUCby8c6rnnhicBqw", + "parent": "kmG8XZyUxDUPZ6BLYMr9P", "ctx": null, - "_testId": "urn:uuid:db792af1-c94d-449e-a6f5-d25ebbf56af1", + "_testId": "urn:uuid:0bb5ba7f-f808-4602-a1f8-a4be99f0450b", "cell": { - "columnId": "SpruceID", - "rowId": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised." + "columnId": "ACA-py", + "rowId": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised." }, "_events": {}, "_eventsCount": 1, @@ -20141,19 +15433,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 41579, + "_idleStart": 16803, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 22, + "duration": 25, "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 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, @@ -20163,12 +15455,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I8HfQUCby8c6rnnhicBqw", + "parent": "RaxdbvT1t4jg8M1E4Yot7", "ctx": null, - "_testId": "urn:uuid:b0284e87-3076-4df5-8bca-6ea3b7e8f275", + "_testId": "urn:uuid:4b269338-ab63-42c4-bf80-35263ea24b3a", "cell": { - "columnId": "SpruceID", - "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." + "columnId": "apicatalog.com", + "rowId": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised." }, "_events": {}, "_eventsCount": 1, @@ -20176,19 +15468,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 41601, + "_idleStart": 17400, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 25, + "duration": 56, "state": "passed", - "speed": "fast" + "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, @@ -20198,33 +15490,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I8HfQUCby8c6rnnhicBqw", + "parent": "tP2ofxvtbCGvWsW_3gpVj", "ctx": null, - "_testId": "urn:uuid:20e6ef1e-b4b1-450d-9437-9772bba99909", + "_testId": "urn:uuid:67643db0-1590-4c30-9621-017eb8a772b9", "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." + "columnId": "Danube Tech", + "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": 41626, + "_idleStart": 20120, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 22, + "duration": 218, "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.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, @@ -20234,33 +15525,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I8HfQUCby8c6rnnhicBqw", + "parent": "_uaYuFH_jTfDLBT8n9RJ0", "ctx": null, - "_testId": "urn:uuid:783d4a2e-f823-4164-873f-15383b4e124d", + "_testId": "urn:uuid:cb087230-eb44-480f-99a8-705f5da3ada2", "cell": { - "columnId": "SpruceID", - "rowId": "The proofValue property MUST be used, as specified in 2.1 Proofs." + "columnId": "Digital Bazaar", + "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": 41649, + "_idleStart": 25054, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 58, "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.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, @@ -20270,33 +15560,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I8HfQUCby8c6rnnhicBqw", + "parent": "91u2WAU2zJYMNRo8aVT6K", "ctx": null, - "_testId": "urn:uuid:f8fc04ed-2c80-4492-aee9-0b903cf12597", + "_testId": "urn:uuid:45798cc6-d9e0-4f34-91c4-ae342d349dfe", "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." + "columnId": "EWF", + "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=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 41649, + "_idleStart": 26459, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 94, "state": "passed", - "speed": "fast" + "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.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, @@ -20306,33 +15595,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I8HfQUCby8c6rnnhicBqw", + "parent": "lga9z67djLcSbEtsBUOS8", "ctx": null, - "_testId": "urn:uuid:a1997f1e-8451-499f-b0ef-5f68fe84c034", + "_testId": "urn:uuid:e2d50cec-ab38-4f0d-86ca-0a4670aa75eb", "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": "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=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": 41649, + "_idleStart": 29096, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 69, + "duration": 7292, "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 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, @@ -20342,33 +15630,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I8HfQUCby8c6rnnhicBqw", + "parent": "gqHHDnM0oYGv-39z2mcsI", "ctx": null, - "_testId": "urn:uuid:0eb7a4c1-eff5-464f-b9c3-33320b9e6885", + "_testId": "urn:uuid:2d5100da-82d4-4bae-b16b-10097a003016", "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 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/#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": 41718, + "_idleStart": 37294, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 25, + "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 await verificationFail({\n credential: credentials.clone('invalidCreated'),\n verifier\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, @@ -20378,33 +15665,37 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I8HfQUCby8c6rnnhicBqw", + "parent": "IfEsjvRHLDsMDJ1wbOSdY", "ctx": null, - "_testId": "urn:uuid:f7457b2a-2d0c-4c03-a646-03e3c8ce7f38", + "_testId": "urn:uuid:7d3882ea-2fa2-4dfc-9e4f-f3d5382382f4", "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." + "columnId": "Trinsic", + "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=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": 41744, + "_idleStart": 38094, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 20, + "duration": 21, "state": "passed", "speed": "fast" - }, + } + ] + }, + { + "id": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised.", + "cells": [ { "type": "test", - "title": "If present (expires), 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": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=If%20present%2C%20it%20MUST%20be%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 await verificationFail({\n credential: credentials.clone('invalidExpires'),\n verifier\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, @@ -20414,33 +15705,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I8HfQUCby8c6rnnhicBqw", + "parent": "kmG8XZyUxDUPZ6BLYMr9P", "ctx": null, - "_testId": "urn:uuid:61b653a8-532a-4698-b877-0ef1d8ca891a", + "_testId": "urn:uuid:defe5538-e323-434e-89e5-72ca33287c2a", "cell": { - "columnId": "SpruceID", - "rowId": "If present (expires), 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." + "columnId": "ACA-py", + "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=If%20present%2C%20it%20MUST%20be%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": 41764, + "_idleStart": 16829, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 32, + "duration": 23, "state": "passed", "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 verificationSuccess({\n credential: credentials.clone('noOffsetCreated'),\n verifier\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, @@ -20450,142 +15740,73 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I8HfQUCby8c6rnnhicBqw", + "parent": "RaxdbvT1t4jg8M1E4Yot7", "ctx": null, - "_testId": "urn:uuid:45ddcf20-9cbe-4b18-ac26-570c5b71d8a1", + "_testId": "urn:uuid:d26836e1-f123-47fc-92c4-3f13a7567bc2", "cell": { - "columnId": "SpruceID", - "rowId": "(created) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." + "columnId": "apicatalog.com", + "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." }, "_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": 41796, + "_idleStart": 17456, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 29, + "duration": 41, + "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 }", + "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": "tP2ofxvtbCGvWsW_3gpVj", + "ctx": null, + "_testId": "urn:uuid:f708987e-c6c3-45b0-97fa-0e20db64d1bf", + "cell": { + "columnId": "Danube Tech", + "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." + }, + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 20339, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 105, "state": "failed", "err": { "name": "AssertionError", - "message": "Expected no error from verifier.: expected HTTPError: Request failed with status cod… { …(5) } to not exist", + "message": "Expected \"response.status\" to exist.: expected undefined to 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/data-integrity/v2\"],\"id\":\"urn:uuid:86294362-4254-4f36-854f-3952fe42555d\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"type\":\"DataIntegrityProof\",\"created\":\"2024-09-15T05:01:54\",\"verificationMethod\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"cryptosuite\":\"eddsa-2022\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z28QfeN92FuPz6xBFXY5PF2i3Y5BNGdHyoBtE3B3Ac9YqhDuGVtt8NxwAxcrwTEcSKWsPXiNZDmqE74w3TcV9H1N8\"}},\"options\":{}}", - "method": "POST", - "json": { - "verifiableCredential": { - "@context": [ - "https://www.w3.org/2018/credentials/v1", - "https://w3id.org/security/data-integrity/v2" - ], - "id": "urn:uuid:86294362-4254-4f36-854f-3952fe42555d", - "type": [ - "VerifiableCredential" - ], - "issuer": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "issuanceDate": "2020-03-16T22:37:26.544Z", - "credentialSubject": { - "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" - }, - "proof": { - "type": "DataIntegrityProof", - "created": "2024-09-15T05:01:54", - "verificationMethod": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "cryptosuite": "eddsa-2022", - "proofPurpose": "assertionMethod", - "proofValue": "z28QfeN92FuPz6xBFXY5PF2i3Y5BNGdHyoBtE3B3Ac9YqhDuGVtt8NxwAxcrwTEcSKWsPXiNZDmqE74w3TcV9H1N8" - } - }, - "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.spruceid.xyz/credentials/verify", - "status": 400 - }, - "operator": "notStrictEqual", - "stack": "AssertionError: Expected no error from verifier.: 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 verificationSuccess (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/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/node_modules/data-integrity-test-suite-assertion/suites/verify.js:191:9)" + "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:273: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:84: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": "(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 verificationSuccess({\n credential: credentials.clone('noOffsetExpires'),\n verifier\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, @@ -20595,143 +15816,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I8HfQUCby8c6rnnhicBqw", + "parent": "_uaYuFH_jTfDLBT8n9RJ0", "ctx": null, - "_testId": "urn:uuid:9faea90b-0908-4eef-94fc-279e3a0e1192", + "_testId": "urn:uuid:cae9e073-9151-4271-88b0-79b907a653b6", "cell": { - "columnId": "SpruceID", - "rowId": "(expires) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." + "columnId": "Digital Bazaar", + "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." }, "_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": 41826, + "_idleStart": 25112, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 21, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected no error from verifier.: 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/data-integrity/v2\"],\"id\":\"urn:uuid:86294362-4254-4f36-854f-3952fe42555d\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"expires\":\"2024-09-15T05:01:54\",\"type\":\"DataIntegrityProof\",\"created\":\"2024-09-15T05:01:54Z\",\"verificationMethod\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"cryptosuite\":\"eddsa-2022\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z23aBpJZnxXpwPcaK5pmk6CM2yq5ZZddCxT6HSkRsPtSCJaAepRSpYetBdqxVdeCNLDv8FeayEfqwf6kvh46u4itb\"}},\"options\":{}}", - "method": "POST", - "json": { - "verifiableCredential": { - "@context": [ - "https://www.w3.org/2018/credentials/v1", - "https://w3id.org/security/data-integrity/v2" - ], - "id": "urn:uuid:86294362-4254-4f36-854f-3952fe42555d", - "type": [ - "VerifiableCredential" - ], - "issuer": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "issuanceDate": "2020-03-16T22:37:26.544Z", - "credentialSubject": { - "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" - }, - "proof": { - "expires": "2024-09-15T05:01:54", - "type": "DataIntegrityProof", - "created": "2024-09-15T05:01:54Z", - "verificationMethod": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "cryptosuite": "eddsa-2022", - "proofPurpose": "assertionMethod", - "proofValue": "z23aBpJZnxXpwPcaK5pmk6CM2yq5ZZddCxT6HSkRsPtSCJaAepRSpYetBdqxVdeCNLDv8FeayEfqwf6kvh46u4itb" - } - }, - "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.spruceid.xyz/credentials/verify", - "status": 400 - }, - "operator": "notStrictEqual", - "stack": "AssertionError: Expected no error from verifier.: 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 verificationSuccess (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/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/node_modules/data-integrity-test-suite-assertion/suites/verify.js:199:9)" - } + "duration": 47, + "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 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, @@ -20741,33 +15851,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I8HfQUCby8c6rnnhicBqw", + "parent": "91u2WAU2zJYMNRo8aVT6K", "ctx": null, - "_testId": "urn:uuid:95a99add-3809-4228-8dba-512c3cc2abdc", + "_testId": "urn:uuid:87592779-dcfe-4b9f-ae71-277736d5f603", "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." + "columnId": "EWF", + "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." }, "_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": 41847, + "_idleStart": 26553, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 22, + "duration": 94, "state": "passed", - "speed": "fast" + "speed": "slow" }, { "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": "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, @@ -20777,37 +15886,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I8HfQUCby8c6rnnhicBqw", + "parent": "lga9z67djLcSbEtsBUOS8", "ctx": null, - "_testId": "urn:uuid:d54fd007-0d5c-4644-a3f3-ed98879d08bd", + "_testId": "urn:uuid:41e5718b-b7d2-4353-9357-2900e9febd05", "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." + "columnId": "LearnCard", + "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." }, "_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": 41869, + "_idleStart": 36388, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 21, + "duration": 42, "state": "passed", - "speed": "fast" - } - ], - "root": false, - "pending": false, - "_retries": -1, - "_beforeEach": [ + "speed": "medium" + }, { - "title": "\"before each\" hook in \"SpruceID\"", - "body": "function() {\n this.currentTest.cell = {\n columnId: testDescription,\n rowId: this.currentTest.title\n };\n }", + "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 }", "async": 0, "sync": true, "_timeout": 15000, @@ -20816,21 +15920,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "type": "hook", - "parent": "I8HfQUCby8c6rnnhicBqw", - "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": "gqHHDnM0oYGv-39z2mcsI", + "ctx": null, + "_testId": "urn:uuid:4704e4e0-681f-4b1d-9cb7-9b2fd01b8fa4", + "cell": { + "columnId": "SpruceID", + "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." + }, "_events": {}, "_eventsCount": 1, - "duration": 0, - "_error": null - } - ], - "_beforeAll": [ + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 37313, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 18, + "state": "passed", + "speed": "fast" + }, { - "title": "\"before all\" hook in \"SpruceID\"", - "body": "async function() {\n proofValueTests = shouldBeProofValue({credentials, verifier});\n }", + "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 }", "async": 0, "sync": true, "_timeout": 15000, @@ -20839,47 +15955,38 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "type": "hook", - "parent": "I8HfQUCby8c6rnnhicBqw", - "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": "IfEsjvRHLDsMDJ1wbOSdY", + "ctx": null, + "_testId": "urn:uuid:df26dcb0-77f2-4a22-a82a-6968294570cc", + "cell": { + "columnId": "Trinsic", + "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." + }, "_events": {}, "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 41365, + "_idleStart": 38115, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, - "_error": null + "duration": 21, + "state": "passed", + "speed": "fast" } - ], - "_afterEach": [], - "_afterAll": [], - "_timeout": 15000, - "_slow": 75, - "_bail": false, - "_onlyTests": [], - "_onlySuites": [], - "delayed": false, - "parent": "bklQtFryy0psstU8OU43S", - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "_testId": "urn:uuid:8ab157b1-0733-418f-ba7b-7d0f9d665ec7" + ] }, { - "title": "Trinsic", - "ctx": null, - "suites": [], - "tests": [ + "id": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised.", + "cells": [ { "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, @@ -20889,33 +15996,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I5sQwd-elvbwnnYVG_wGF", + "parent": "kmG8XZyUxDUPZ6BLYMr9P", "ctx": null, - "_testId": "urn:uuid:1bade1ee-c249-4606-8b54-49d0eea91cfe", + "_testId": "urn:uuid:5c78ba6b-a173-4ad3-bbce-3ca7e3a9410b", "cell": { - "columnId": "Trinsic", - "rowId": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null." + "columnId": "ACA-py", + "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": 41892, + "_idleStart": 16852, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 685, + "duration": 25, "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 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, @@ -20925,33 +16031,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I5sQwd-elvbwnnYVG_wGF", + "parent": "RaxdbvT1t4jg8M1E4Yot7", "ctx": null, - "_testId": "urn:uuid:fffea75e-4503-4335-828e-b2467455d43b", + "_testId": "urn:uuid:075fc458-924d-45a3-b3f7-7e07076a1174", "cell": { - "columnId": "Trinsic", - "rowId": "Conforming processors MUST produce errors when non-conforming documents are consumed." + "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/#conformance:~:text=Conforming%20processors%20MUST%20produce%20errors%20when%20non%2Dconforming%20documents%20are%20consumed.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 42577, + "_idleStart": 17497, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 29, + "duration": 66, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "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 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, @@ -20961,12 +16066,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I5sQwd-elvbwnnYVG_wGF", + "parent": "tP2ofxvtbCGvWsW_3gpVj", "ctx": null, - "_testId": "urn:uuid:b8398321-9159-4955-9ae6-275e31023310", + "_testId": "urn:uuid:c991ef67-fc09-4ced-b8ff-d1b1ea97edb0", "cell": { - "columnId": "Trinsic", - "rowId": "If the \"proof\" field is missing, an error MUST be raised." + "columnId": "Danube Tech", + "rowId": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, @@ -20974,19 +16079,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 42607, + "_idleStart": 20445, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 27, + "duration": 644, "state": "passed", - "speed": "fast" + "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": "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, @@ -20996,12 +16101,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I5sQwd-elvbwnnYVG_wGF", + "parent": "_uaYuFH_jTfDLBT8n9RJ0", "ctx": null, - "_testId": "urn:uuid:07f52696-d640-4805-b2a9-c47ff532ec43", + "_testId": "urn:uuid:7c956ac3-fc82-4fb3-898c-73925e74698a", "cell": { - "columnId": "Trinsic", - "rowId": "If the \"proof\" field is invalid, an error MUST be raised." + "columnId": "Digital Bazaar", + "rowId": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, @@ -21009,19 +16114,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 42635, + "_idleStart": 25159, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 29, + "duration": 78, "state": "passed", - "speed": "fast" + "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": "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, @@ -21031,12 +16136,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I5sQwd-elvbwnnYVG_wGF", + "parent": "91u2WAU2zJYMNRo8aVT6K", "ctx": null, - "_testId": "urn:uuid:430ab078-0c4e-4bec-a69d-550c56f79e66", + "_testId": "urn:uuid:ccece91f-d5f8-4f89-a48f-f22d82993853", "cell": { - "columnId": "Trinsic", - "rowId": "If the \"proof.type\" field is missing, an error MUST be raised." + "columnId": "EWF", + "rowId": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, @@ -21044,19 +16149,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 42664, + "_idleStart": 26647, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 25, + "duration": 96, "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": "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, @@ -21066,12 +16171,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I5sQwd-elvbwnnYVG_wGF", + "parent": "lga9z67djLcSbEtsBUOS8", "ctx": null, - "_testId": "urn:uuid:f4fbab3b-233c-45e5-be03-9c3f82d0ce0f", + "_testId": "urn:uuid:e8ad2a5f-10b8-4489-ba7a-f8c0edc61eb2", "cell": { - "columnId": "Trinsic", - "rowId": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised." + "columnId": "LearnCard", + "rowId": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, @@ -21079,19 +16184,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 42689, + "_idleStart": 36430, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 31, + "duration": 95, "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": "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, @@ -21101,12 +16206,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I5sQwd-elvbwnnYVG_wGF", + "parent": "gqHHDnM0oYGv-39z2mcsI", "ctx": null, - "_testId": "urn:uuid:7c8dde64-bff5-4162-81dc-300938a0dec8", + "_testId": "urn:uuid:e95fd776-4507-4014-a20a-95a7362c7725", "cell": { - "columnId": "Trinsic", - "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." + "columnId": "SpruceID", + "rowId": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, @@ -21114,12 +16219,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 42720, + "_idleStart": 37331, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 27, + "duration": 20, "state": "passed", "speed": "fast" }, @@ -21136,9 +16241,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I5sQwd-elvbwnnYVG_wGF", + "parent": "IfEsjvRHLDsMDJ1wbOSdY", "ctx": null, - "_testId": "urn:uuid:5d713bad-40a5-40ec-9655-b99bf9179264", + "_testId": "urn:uuid:c084f499-8ba0-4f3d-a888-eedaaa0c2a5c", "cell": { "columnId": "Trinsic", "rowId": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised." @@ -21149,15 +16254,20 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 42748, + "_idleStart": 38137, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 43, + "duration": 29, "state": "passed", - "speed": "medium" - }, + "speed": "fast" + } + ] + }, + { + "id": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised.", + "cells": [ { "type": "test", "title": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised.", @@ -21171,11 +16281,11 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I5sQwd-elvbwnnYVG_wGF", + "parent": "kmG8XZyUxDUPZ6BLYMr9P", "ctx": null, - "_testId": "urn:uuid:ae2d643f-b1db-408b-a756-5726a10c865b", + "_testId": "urn:uuid:c48c87b5-d0e6-4913-afe5-2725e8ead66a", "cell": { - "columnId": "Trinsic", + "columnId": "ACA-py", "rowId": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised." }, "_events": {}, @@ -21184,19 +16294,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 42791, + "_idleStart": 16877, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 23, + "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.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, @@ -21206,12 +16316,12 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I5sQwd-elvbwnnYVG_wGF", + "parent": "RaxdbvT1t4jg8M1E4Yot7", "ctx": null, - "_testId": "urn:uuid:85c4d3a3-cc0b-4038-8acc-81617d46efde", + "_testId": "urn:uuid:b4304616-df6f-43c2-9f8e-1a16520e7076", "cell": { - "columnId": "Trinsic", - "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." + "columnId": "apicatalog.com", + "rowId": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised." }, "_events": {}, "_eventsCount": 1, @@ -21219,19 +16329,19 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 42815, + "_idleStart": 17563, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 29, + "duration": 53, "state": "passed", - "speed": "fast" + "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.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, @@ -21241,33 +16351,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I5sQwd-elvbwnnYVG_wGF", + "parent": "tP2ofxvtbCGvWsW_3gpVj", "ctx": null, - "_testId": "urn:uuid:84421cee-d914-4738-9835-5f4fb13b1f8f", + "_testId": "urn:uuid:cd1c4a73-cf08-4bcd-87d2-a8365c4f0b8c", "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." + "columnId": "Danube Tech", + "rowId": "If the \"proof.proofPurpose\" 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": 42844, + "_idleStart": 21089, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 28, + "duration": 652, "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.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, @@ -21277,33 +16386,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I5sQwd-elvbwnnYVG_wGF", + "parent": "_uaYuFH_jTfDLBT8n9RJ0", "ctx": null, - "_testId": "urn:uuid:c08fc3c6-b2fa-43c6-84ca-181c35479339", + "_testId": "urn:uuid:f6e454af-2746-4436-855b-880c9cdf74f7", "cell": { - "columnId": "Trinsic", - "rowId": "The proofValue property MUST be used, as specified in 2.1 Proofs." + "columnId": "Digital Bazaar", + "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=The%20proofValue%20property%20MUST%20be%20used%2C%20as%20specified%20in%202.1%20Proofs.", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 42872, + "_idleStart": 25237, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 59, "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.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, @@ -21313,33 +16421,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I5sQwd-elvbwnnYVG_wGF", + "parent": "91u2WAU2zJYMNRo8aVT6K", "ctx": null, - "_testId": "urn:uuid:0c551b5f-1d04-43f6-a822-9530c114a334", + "_testId": "urn:uuid:311281f7-3f97-4e0d-8ae1-acf636bac5b6", "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": "EWF", + "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=string%20value%20that%20contains%20the%20base%2Dencoded%20binary%20data%20necessary%20to%20verify%20the%20digital%20proof", "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 42872, + "_idleStart": 26743, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 94, "state": "passed", - "speed": "fast" + "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, @@ -21349,33 +16456,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I5sQwd-elvbwnnYVG_wGF", + "parent": "lga9z67djLcSbEtsBUOS8", "ctx": null, - "_testId": "urn:uuid:549a550d-609f-4231-90b2-eed7074c92b3", + "_testId": "urn:uuid:0d95a760-e9b9-4d2e-897a-9cf59c81c1f0", "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": "LearnCard", + "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": 42872, + "_idleStart": 36525, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 189, + "duration": 60, "state": "passed", - "speed": "slow" + "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 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, @@ -21385,33 +16491,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I5sQwd-elvbwnnYVG_wGF", + "parent": "gqHHDnM0oYGv-39z2mcsI", "ctx": null, - "_testId": "urn:uuid:327b2497-f093-4fc4-97dd-dcb8059e81ba", + "_testId": "urn:uuid:d8401554-5bb1-4e07-8969-a97c49d21a39", "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." + "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/#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": 43062, + "_idleStart": 37352, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 30, + "duration": 19, "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 await verificationFail({\n credential: credentials.clone('invalidCreated'),\n verifier\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, @@ -21421,33 +16526,72 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I5sQwd-elvbwnnYVG_wGF", + "parent": "IfEsjvRHLDsMDJ1wbOSdY", "ctx": null, - "_testId": "urn:uuid:e0410407-335d-44ab-8b23-5a59e99fe9ca", + "_testId": "urn:uuid:14899731-f41a-45d2-8626-5404a5274878", "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 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": 43092, + "_idleStart": 38166, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 31, + "duration": 29, + "state": "passed", + "speed": "fast" + } + ] + }, + { + "id": "If the \"proof.proofPurpose\" field is invalid, 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 }", + "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": "kmG8XZyUxDUPZ6BLYMr9P", + "ctx": null, + "_testId": "urn:uuid:9565f12e-926b-4721-bda7-eda362fe66d6", + "cell": { + "columnId": "ACA-py", + "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." + }, + "_events": {}, + "_eventsCount": 1, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 16903, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 25, "state": "passed", "speed": "fast" }, { "type": "test", - "title": "If present (expires), 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": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=If%20present%2C%20it%20MUST%20be%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 await verificationFail({\n credential: credentials.clone('invalidExpires'),\n verifier\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, @@ -21457,33 +16601,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I5sQwd-elvbwnnYVG_wGF", + "parent": "RaxdbvT1t4jg8M1E4Yot7", "ctx": null, - "_testId": "urn:uuid:85c045ca-4952-411b-ac7c-57f5a94fec34", + "_testId": "urn:uuid:b503cf1d-afd2-4411-b1a0-d01d3b5afc53", "cell": { - "columnId": "Trinsic", - "rowId": "If present (expires), 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." + "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/#proofs:~:text=If%20present%2C%20it%20MUST%20be%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": 43124, + "_idleStart": 17617, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 54, + "duration": 58, "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 verificationSuccess({\n credential: credentials.clone('noOffsetCreated'),\n verifier\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, @@ -21493,142 +16636,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I5sQwd-elvbwnnYVG_wGF", + "parent": "tP2ofxvtbCGvWsW_3gpVj", "ctx": null, - "_testId": "urn:uuid:198f2b73-d12e-4d92-b91a-203b807729e6", + "_testId": "urn:uuid:c6a5d306-6caf-432b-841f-1f8f04bf8063", "cell": { - "columnId": "Trinsic", - "rowId": "(created) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." + "columnId": "Danube Tech", + "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." }, "_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": 43178, + "_idleStart": 21742, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 51, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected no error from verifier.: 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/data-integrity/v2\"],\"id\":\"urn:uuid:86294362-4254-4f36-854f-3952fe42555d\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"type\":\"DataIntegrityProof\",\"created\":\"2024-09-15T05:01:54\",\"verificationMethod\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"cryptosuite\":\"eddsa-2022\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z28QfeN92FuPz6xBFXY5PF2i3Y5BNGdHyoBtE3B3Ac9YqhDuGVtt8NxwAxcrwTEcSKWsPXiNZDmqE74w3TcV9H1N8\"}},\"options\":{}}", - "method": "POST", - "json": { - "verifiableCredential": { - "@context": [ - "https://www.w3.org/2018/credentials/v1", - "https://w3id.org/security/data-integrity/v2" - ], - "id": "urn:uuid:86294362-4254-4f36-854f-3952fe42555d", - "type": [ - "VerifiableCredential" - ], - "issuer": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "issuanceDate": "2020-03-16T22:37:26.544Z", - "credentialSubject": { - "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" - }, - "proof": { - "type": "DataIntegrityProof", - "created": "2024-09-15T05:01:54", - "verificationMethod": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "cryptosuite": "eddsa-2022", - "proofPurpose": "assertionMethod", - "proofValue": "z28QfeN92FuPz6xBFXY5PF2i3Y5BNGdHyoBtE3B3Ac9YqhDuGVtt8NxwAxcrwTEcSKWsPXiNZDmqE74w3TcV9H1N8" - } - }, - "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://interop.connect.trinsic.cloud/vc-api/credentials/verify", - "status": 400 - }, - "operator": "notStrictEqual", - "stack": "AssertionError: Expected no error from verifier.: 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 verificationSuccess (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/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/node_modules/data-integrity-test-suite-assertion/suites/verify.js:191:9)" - } + "duration": 224, + "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 verificationSuccess({\n credential: credentials.clone('noOffsetExpires'),\n verifier\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, @@ -21638,143 +16671,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I5sQwd-elvbwnnYVG_wGF", + "parent": "_uaYuFH_jTfDLBT8n9RJ0", "ctx": null, - "_testId": "urn:uuid:84cb9759-149e-47e1-8ffe-d2aa4e1089a1", + "_testId": "urn:uuid:f4780a3d-8dd6-4f5d-b244-7b134c56064b", "cell": { - "columnId": "Trinsic", - "rowId": "(expires) A conforming processor MAY chose to consume time values that were incorrectly serialized without an offset." + "columnId": "Digital Bazaar", + "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." }, "_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": 43229, + "_idleStart": 25296, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 42, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected no error from verifier.: 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/data-integrity/v2\"],\"id\":\"urn:uuid:86294362-4254-4f36-854f-3952fe42555d\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"expires\":\"2024-09-15T05:01:54\",\"type\":\"DataIntegrityProof\",\"created\":\"2024-09-15T05:01:54Z\",\"verificationMethod\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"cryptosuite\":\"eddsa-2022\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z23aBpJZnxXpwPcaK5pmk6CM2yq5ZZddCxT6HSkRsPtSCJaAepRSpYetBdqxVdeCNLDv8FeayEfqwf6kvh46u4itb\"}},\"options\":{}}", - "method": "POST", - "json": { - "verifiableCredential": { - "@context": [ - "https://www.w3.org/2018/credentials/v1", - "https://w3id.org/security/data-integrity/v2" - ], - "id": "urn:uuid:86294362-4254-4f36-854f-3952fe42555d", - "type": [ - "VerifiableCredential" - ], - "issuer": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "issuanceDate": "2020-03-16T22:37:26.544Z", - "credentialSubject": { - "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" - }, - "proof": { - "expires": "2024-09-15T05:01:54", - "type": "DataIntegrityProof", - "created": "2024-09-15T05:01:54Z", - "verificationMethod": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "cryptosuite": "eddsa-2022", - "proofPurpose": "assertionMethod", - "proofValue": "z23aBpJZnxXpwPcaK5pmk6CM2yq5ZZddCxT6HSkRsPtSCJaAepRSpYetBdqxVdeCNLDv8FeayEfqwf6kvh46u4itb" - } - }, - "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://interop.connect.trinsic.cloud/vc-api/credentials/verify", - "status": 400 - }, - "operator": "notStrictEqual", - "stack": "AssertionError: Expected no error from verifier.: 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 verificationSuccess (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/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/node_modules/data-integrity-test-suite-assertion/suites/verify.js:199:9)" - } + "duration": 59, + "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 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, @@ -21784,33 +16706,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I5sQwd-elvbwnnYVG_wGF", + "parent": "91u2WAU2zJYMNRo8aVT6K", "ctx": null, - "_testId": "urn:uuid:f6b194ac-1d38-4e25-b2ad-7e52adea54c5", + "_testId": "urn:uuid:c54723eb-a34b-4b75-8794-9a8bb8f5e7c3", "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." + "columnId": "EWF", + "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." }, "_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": 43272, + "_idleStart": 26837, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 28, + "duration": 94, "state": "passed", - "speed": "fast" + "speed": "slow" }, { "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": "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, @@ -21820,37 +16741,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I5sQwd-elvbwnnYVG_wGF", + "parent": "lga9z67djLcSbEtsBUOS8", "ctx": null, - "_testId": "urn:uuid:9c38fa4e-41bd-43d3-a01c-e2c532bdbadf", + "_testId": "urn:uuid:99edfcb0-05be-4968-8d5e-7e612c5d72a0", "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." + "columnId": "LearnCard", + "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." }, "_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": 43301, + "_idleStart": 36585, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 22, + "duration": 72, "state": "passed", - "speed": "fast" - } - ], - "root": false, - "pending": false, - "_retries": -1, - "_beforeEach": [ + "speed": "medium" + }, { - "title": "\"before each\" hook in \"Trinsic\"", - "body": "function() {\n this.currentTest.cell = {\n columnId: testDescription,\n rowId: this.currentTest.title\n };\n }", + "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 }", "async": 0, "sync": true, "_timeout": 15000, @@ -21859,21 +16775,33 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "type": "hook", - "parent": "I5sQwd-elvbwnnYVG_wGF", - "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": "gqHHDnM0oYGv-39z2mcsI", + "ctx": null, + "_testId": "urn:uuid:7b33d8d5-6748-4a19-907f-f62651803da4", + "cell": { + "columnId": "SpruceID", + "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." + }, "_events": {}, "_eventsCount": 1, - "duration": 0, - "_error": null - } - ], - "_beforeAll": [ + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 37373, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 18, + "state": "passed", + "speed": "fast" + }, { - "title": "\"before all\" hook in \"Trinsic\"", - "body": "async function() {\n proofValueTests = shouldBeProofValue({credentials, verifier});\n }", + "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 }", "async": 0, "sync": true, "_timeout": 15000, @@ -21882,109 +16810,39 @@ "timedOut": false, "_currentRetry": 0, "pending": false, - "type": "hook", - "parent": "I5sQwd-elvbwnnYVG_wGF", - "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": "IfEsjvRHLDsMDJ1wbOSdY", + "ctx": null, + "_testId": "urn:uuid:ee730b8a-1ab0-48cc-aa01-ffb65e74d6ca", + "cell": { + "columnId": "Trinsic", + "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." + }, "_events": {}, "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 41890, + "_idleStart": 38195, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, - "_error": null + "duration": 19, + "state": "passed", + "speed": "fast" } - ], - "_afterEach": [], - "_afterAll": [], - "_timeout": 15000, - "_slow": 75, - "_bail": false, - "_onlyTests": [], - "_onlySuites": [], - "delayed": false, - "parent": "bklQtFryy0psstU8OU43S", - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "_testId": "urn:uuid:f0f4d088-40b6-432b-a7e2-ad38a3da7d88" - } - ], - "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": "bklQtFryy0psstU8OU43S", - "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": 15599, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 44, - "_error": null - } - ], - "_afterEach": [], - "_afterAll": [], - "_timeout": 15000, - "_slow": 75, - "_bail": false, - "_onlyTests": [], - "_onlySuites": [], - "delayed": false, - "parent": "bOwb9hQpmKuBVNePJZzsk", - "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:e482ca2e-6d2b-4458-a34c-1e5ba15ca2e1", - "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.", + "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": "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 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, @@ -21994,33 +16852,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8FUVhOgQKJ4jYmejg3oJ5", + "parent": "kmG8XZyUxDUPZ6BLYMr9P", "ctx": null, - "_testId": "urn:uuid:65b8dcd6-91bf-484a-a2a3-c000bbee59e2", + "_testId": "urn:uuid:e4c8bb53-c82f-4af4-9d33-8d0db2ec0dae", "cell": { - "columnId": "apicatalog.com", - "rowId": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null." + "columnId": "ACA-py", + "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/#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/#:~: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": 15646, + "_idleStart": 16929, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 108, + "duration": 25, "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 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, @@ -22030,33 +16888,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "4rMcTf82al4NVv_78CupS", + "parent": "RaxdbvT1t4jg8M1E4Yot7", "ctx": null, - "_testId": "urn:uuid:b52b18f2-94a6-4469-8323-ad05d26743bc", + "_testId": "urn:uuid:f0a02df2-3846-4e47-a41f-615cfca0749c", "cell": { - "columnId": "Danube Tech", - "rowId": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null." + "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/#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/#:~: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": 16894, + "_idleStart": 17675, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 712, + "duration": 47, "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": "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, @@ -22066,33 +16924,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "ouesj07FQZNyOL7t06-X-", + "parent": "tP2ofxvtbCGvWsW_3gpVj", "ctx": null, - "_testId": "urn:uuid:2b141707-1ce7-4b25-b4c6-a97357c2cd70", + "_testId": "urn:uuid:fa079f6d-8c96-4783-a8e3-9b7ac6ad2cc3", "cell": { - "columnId": "Digital Bazaar", - "rowId": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null." + "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/#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/#:~: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": 26800, + "_idleStart": 21968, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 204, + "duration": 220, "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 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, @@ -22102,33 +16960,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "KEnA8DBEVxZnIEqHqG8ny", + "parent": "_uaYuFH_jTfDLBT8n9RJ0", "ctx": null, - "_testId": "urn:uuid:9633430f-4de7-4f72-a52e-ad191f4295ca", + "_testId": "urn:uuid:eea7d3c0-569c-4778-8b1d-645e17a2560d", "cell": { - "columnId": "EWF", - "rowId": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null." + "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": {}, "_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/#:~: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": 28329, + "_idleStart": 25355, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 387, + "duration": 66, "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": "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, @@ -22138,33 +16996,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "XD2-EVL18dB-hOt8puHrL", + "parent": "91u2WAU2zJYMNRo8aVT6K", "ctx": null, - "_testId": "urn:uuid:ff33efde-7ed2-4a31-8470-378ce8b7228e", + "_testId": "urn:uuid:49bafd50-f159-4479-80e3-999b9792281e", "cell": { - "columnId": "LearnCard", - "rowId": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null." + "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": {}, "_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/#:~: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": 30569, + "_idleStart": 26931, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 238, + "duration": 97, "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 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, @@ -22174,33 +17032,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8sPgtTPQiHtoLikfIzMnw", + "parent": "lga9z67djLcSbEtsBUOS8", "ctx": null, - "_testId": "urn:uuid:13b27739-8ba6-4ce2-a19f-b14426008fdf", + "_testId": "urn:uuid:9ccc2328-65c3-46e6-9940-9e4cf57f3e64", "cell": { - "columnId": "OpSecId", - "rowId": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null." + "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": {}, "_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/#:~: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": 40541, + "_idleStart": 36658, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 227, + "duration": 70, "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": "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, @@ -22210,33 +17068,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I8HfQUCby8c6rnnhicBqw", + "parent": "gqHHDnM0oYGv-39z2mcsI", "ctx": null, - "_testId": "urn:uuid:4fe23332-38c6-49b9-bc9d-b1d12fbb3069", + "_testId": "urn:uuid:62961073-34df-4502-99e6-8fd794b922d0", "cell": { "columnId": "SpruceID", - "rowId": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null." + "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/#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/#:~: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": 41366, + "_idleStart": 37391, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 55, + "duration": 19, "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 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, @@ -22246,39 +17104,39 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I5sQwd-elvbwnnYVG_wGF", + "parent": "IfEsjvRHLDsMDJ1wbOSdY", "ctx": null, - "_testId": "urn:uuid:1bade1ee-c249-4606-8b54-49d0eea91cfe", + "_testId": "urn:uuid:0af547e7-9e07-46d5-8e56-17f7f46134b1", "cell": { "columnId": "Trinsic", - "rowId": "When deserializing to RDF, implementations MUST ensure that the base URL is set to null." + "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/#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/#:~: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": 41892, + "_idleStart": 38215, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 685, + "duration": 20, "state": "passed", - "speed": "slow" + "speed": "fast" } ] }, { - "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.", + "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": "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, @@ -22288,33 +17146,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8FUVhOgQKJ4jYmejg3oJ5", + "parent": "kmG8XZyUxDUPZ6BLYMr9P", "ctx": null, - "_testId": "urn:uuid:0a15032b-6ef5-4b5a-aede-a51e96535a94", + "_testId": "urn:uuid:630d9d15-5f9d-4d95-a81e-d25aeffd6bbe", "cell": { - "columnId": "apicatalog.com", - "rowId": "Conforming processors MUST produce errors when non-conforming documents are consumed." + "columnId": "ACA-py", + "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": 15754, + "_idleStart": 16954, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 57, + "duration": 0, "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, @@ -22324,33 +17182,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "4rMcTf82al4NVv_78CupS", + "parent": "RaxdbvT1t4jg8M1E4Yot7", "ctx": null, - "_testId": "urn:uuid:8b7ae53c-e71b-4413-b1b8-4e290a2f343d", + "_testId": "urn:uuid:95116e55-e13a-4441-958e-7570e4062d0a", "cell": { - "columnId": "Danube Tech", - "rowId": "Conforming processors MUST produce errors when non-conforming documents are consumed." + "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/#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": 17607, + "_idleStart": 17723, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 224, + "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": "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, @@ -22360,33 +17218,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "ouesj07FQZNyOL7t06-X-", + "parent": "tP2ofxvtbCGvWsW_3gpVj", "ctx": null, - "_testId": "urn:uuid:39090dbf-758f-4009-9dfd-1efa973a3d26", + "_testId": "urn:uuid:a3135857-ca9e-4978-ab47-9c58ce524439", "cell": { - "columnId": "Digital Bazaar", - "rowId": "Conforming processors MUST produce errors when non-conforming documents are consumed." + "columnId": "Danube Tech", + "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": 27004, + "_idleStart": 22188, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 56, + "duration": 0, "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, @@ -22396,33 +17254,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "KEnA8DBEVxZnIEqHqG8ny", + "parent": "_uaYuFH_jTfDLBT8n9RJ0", "ctx": null, - "_testId": "urn:uuid:521d3966-664a-408e-bc10-f9c5aeee0a91", + "_testId": "urn:uuid:09e2de8b-1024-4bde-ab5d-c823fa4057ba", "cell": { - "columnId": "EWF", - "rowId": "Conforming processors MUST produce errors when non-conforming documents are consumed." + "columnId": "Digital Bazaar", + "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": 28717, + "_idleStart": 25421, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 87, + "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": "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, @@ -22432,33 +17290,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "XD2-EVL18dB-hOt8puHrL", + "parent": "91u2WAU2zJYMNRo8aVT6K", "ctx": null, - "_testId": "urn:uuid:0173e3e9-966f-48da-a4dd-8c27ee24c698", + "_testId": "urn:uuid:dec18b10-bea6-4499-803e-c778780149a3", "cell": { - "columnId": "LearnCard", - "rowId": "Conforming processors MUST produce errors when non-conforming documents are consumed." + "columnId": "EWF", + "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": 30807, + "_idleStart": 27028, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 79, + "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": "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, @@ -22468,33 +17326,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8sPgtTPQiHtoLikfIzMnw", + "parent": "lga9z67djLcSbEtsBUOS8", "ctx": null, - "_testId": "urn:uuid:d8eea4cb-b7fd-4de3-a256-f7fe2531af20", + "_testId": "urn:uuid:44b936de-3e03-4612-aa67-1609229add07", "cell": { - "columnId": "OpSecId", - "rowId": "Conforming processors MUST produce errors when non-conforming documents are consumed." + "columnId": "LearnCard", + "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": 40768, + "_idleStart": 36729, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 29, + "duration": 0, "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 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, @@ -22504,33 +17362,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I8HfQUCby8c6rnnhicBqw", + "parent": "gqHHDnM0oYGv-39z2mcsI", "ctx": null, - "_testId": "urn:uuid:63b4dc41-c9e1-4cea-9a01-55f3328e7c77", + "_testId": "urn:uuid:f70e9f9c-9d8c-4b40-8f57-f5bc644b5044", "cell": { "columnId": "SpruceID", - "rowId": "Conforming processors MUST produce errors when non-conforming documents are consumed." + "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": 41421, + "_idleStart": 37410, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 22, + "duration": 0, "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 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, @@ -22540,38 +17398,39 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I5sQwd-elvbwnnYVG_wGF", + "parent": "IfEsjvRHLDsMDJ1wbOSdY", "ctx": null, - "_testId": "urn:uuid:fffea75e-4503-4335-828e-b2467455d43b", + "_testId": "urn:uuid:d1bf5b47-d3ff-4020-a184-2c8b433cfa11", "cell": { "columnId": "Trinsic", - "rowId": "Conforming processors MUST produce errors when non-conforming documents are consumed." + "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": 42577, + "_idleStart": 38235, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 29, + "duration": 0, "state": "passed", "speed": "fast" } ] }, { - "id": "If the \"proof\" field is missing, an error MUST be raised.", + "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 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.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, @@ -22581,32 +17440,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8FUVhOgQKJ4jYmejg3oJ5", + "parent": "kmG8XZyUxDUPZ6BLYMr9P", "ctx": null, - "_testId": "urn:uuid:428482c2-ba79-4056-ad71-3660f1c9ccf5", + "_testId": "urn:uuid:cfcc6dbe-fae1-4602-a8fd-4fc831fe9686", "cell": { - "columnId": "apicatalog.com", - "rowId": "If the \"proof\" field is missing, an error MUST be raised." + "columnId": "ACA-py", + "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": 15811, + "_idleStart": 16955, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 63, + "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": "(\"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, @@ -22616,32 +17476,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "4rMcTf82al4NVv_78CupS", + "parent": "RaxdbvT1t4jg8M1E4Yot7", "ctx": null, - "_testId": "urn:uuid:6687b9c3-2fe2-42dd-9d81-7a68bb0b395d", + "_testId": "urn:uuid:27cd5c47-a8a5-489b-9665-113bd559ad43", "cell": { - "columnId": "Danube Tech", - "rowId": "If the \"proof\" field is missing, an error MUST be raised." + "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://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": 17832, + "_idleStart": 17723, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 754, + "duration": 0, "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.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, @@ -22651,32 +17512,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "ouesj07FQZNyOL7t06-X-", + "parent": "tP2ofxvtbCGvWsW_3gpVj", "ctx": null, - "_testId": "urn:uuid:bf8b0029-54b0-408e-9497-dabbfbdb9c64", + "_testId": "urn:uuid:70d9d0c2-266b-4969-b150-580fa72c04a9", "cell": { - "columnId": "Digital Bazaar", - "rowId": "If the \"proof\" field is missing, an error MUST be raised." + "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": {}, "_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": 27061, + "_idleStart": 22188, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 274, + "duration": 0, "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.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, @@ -22686,32 +17548,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "KEnA8DBEVxZnIEqHqG8ny", + "parent": "_uaYuFH_jTfDLBT8n9RJ0", "ctx": null, - "_testId": "urn:uuid:28a2e4e4-cd34-41f9-87dd-9671fbaef552", + "_testId": "urn:uuid:20565308-544d-4886-bb80-4fd9dbfaf915", "cell": { - "columnId": "EWF", - "rowId": "If the \"proof\" field is missing, an error MUST be raised." + "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": {}, "_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": 28804, + "_idleStart": 25422, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 89, + "duration": 0, "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.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, @@ -22721,32 +17584,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "XD2-EVL18dB-hOt8puHrL", + "parent": "91u2WAU2zJYMNRo8aVT6K", "ctx": null, - "_testId": "urn:uuid:6e32f533-c4cf-4eb1-81a9-961dd12f7638", + "_testId": "urn:uuid:717af1eb-2656-44a8-9451-f0f6743cefe2", "cell": { - "columnId": "LearnCard", - "rowId": "If the \"proof\" field is missing, an error MUST be raised." + "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": {}, "_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": 30886, + "_idleStart": 27028, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 42, + "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": "(\"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, @@ -22756,32 +17620,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8sPgtTPQiHtoLikfIzMnw", + "parent": "lga9z67djLcSbEtsBUOS8", "ctx": null, - "_testId": "urn:uuid:8d2c60de-c104-4dbb-baff-879f0a3369dc", + "_testId": "urn:uuid:66e14bfd-1a1e-4cb6-9b1c-d9b802b44b9d", "cell": { - "columnId": "OpSecId", - "rowId": "If the \"proof\" field is missing, an error MUST be raised." + "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": {}, "_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": 40798, + "_idleStart": 36729, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 31, + "duration": 0, "state": "passed", "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.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, @@ -22791,32 +17656,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I8HfQUCby8c6rnnhicBqw", + "parent": "gqHHDnM0oYGv-39z2mcsI", "ctx": null, - "_testId": "urn:uuid:0f675f75-9cf5-49d4-a3da-c9538bb0a920", + "_testId": "urn:uuid:c095019c-ebf7-4de3-a3e8-2492a313c1cb", "cell": { "columnId": "SpruceID", - "rowId": "If the \"proof\" field is missing, an error MUST be raised." + "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": 41444, + "_idleStart": 37410, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 21, + "duration": 0, "state": "passed", "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.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, @@ -22826,37 +17692,39 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I5sQwd-elvbwnnYVG_wGF", + "parent": "IfEsjvRHLDsMDJ1wbOSdY", "ctx": null, - "_testId": "urn:uuid:b8398321-9159-4955-9ae6-275e31023310", + "_testId": "urn:uuid:b9be37ca-d79c-4e13-b0e7-5ac9f945d4b5", "cell": { "columnId": "Trinsic", - "rowId": "If the \"proof\" field is missing, an error MUST be raised." + "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": 42607, + "_idleStart": 38235, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 27, + "duration": 0, "state": "passed", "speed": "fast" } ] }, { - "id": "If the \"proof\" field is invalid, an error MUST be raised.", + "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": "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": "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, @@ -22866,32 +17734,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8FUVhOgQKJ4jYmejg3oJ5", + "parent": "kmG8XZyUxDUPZ6BLYMr9P", "ctx": null, - "_testId": "urn:uuid:ade66e41-fa34-44e4-80ee-0914ba9f16a0", + "_testId": "urn:uuid:6129c431-45e2-473e-a351-9dfc125d130c", "cell": { - "columnId": "apicatalog.com", - "rowId": "If the \"proof\" field is invalid, an error MUST be raised." + "columnId": "ACA-py", + "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": 15875, + "_idleStart": 16955, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 48, + "duration": 77, "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": "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, @@ -22901,32 +17770,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "4rMcTf82al4NVv_78CupS", + "parent": "RaxdbvT1t4jg8M1E4Yot7", "ctx": null, - "_testId": "urn:uuid:1e06177c-13f2-43e9-99c5-01a4ef6b7b54", + "_testId": "urn:uuid:a49512cc-9f67-4d5a-97de-8fd4a8791583", "cell": { - "columnId": "Danube Tech", - "rowId": "If the \"proof\" field is invalid, an error MUST be raised." + "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://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": 18586, + "_idleStart": 17724, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 518, + "duration": 163, "state": "passed", "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": "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, @@ -22936,32 +17806,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "ouesj07FQZNyOL7t06-X-", + "parent": "tP2ofxvtbCGvWsW_3gpVj", "ctx": null, - "_testId": "urn:uuid:05acf8c4-d9ce-4cb8-bf13-9572e173d0a0", + "_testId": "urn:uuid:5ea582f1-3d4f-48f3-8da9-12915c68d461", "cell": { - "columnId": "Digital Bazaar", - "rowId": "If the \"proof\" field is invalid, an error MUST be raised." + "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": {}, "_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": 27336, + "_idleStart": 22188, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 46, + "duration": 664, "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": "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, @@ -22971,32 +17842,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "KEnA8DBEVxZnIEqHqG8ny", + "parent": "_uaYuFH_jTfDLBT8n9RJ0", "ctx": null, - "_testId": "urn:uuid:e9bf6bbf-dc1e-4b7b-b17a-8b506c9d42b0", + "_testId": "urn:uuid:242687f4-01b5-40f1-ad53-21b6ef087675", "cell": { - "columnId": "EWF", - "rowId": "If the \"proof\" field is invalid, an error MUST be raised." + "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": {}, "_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": 28894, + "_idleStart": 25422, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 88, + "duration": 216, "state": "passed", "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": "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, @@ -23006,32 +17878,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "XD2-EVL18dB-hOt8puHrL", + "parent": "91u2WAU2zJYMNRo8aVT6K", "ctx": null, - "_testId": "urn:uuid:106245ca-15be-4c55-a9c0-f683ab861aaf", + "_testId": "urn:uuid:0443cbc1-c45f-4920-bcf5-3ed8aa892263", "cell": { - "columnId": "LearnCard", - "rowId": "If the \"proof\" field is invalid, an error MUST be raised." + "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/#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": 30928, + "_idleStart": 27028, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 1177, + "duration": 287, "state": "passed", "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": "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, @@ -23041,32 +17914,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8sPgtTPQiHtoLikfIzMnw", + "parent": "lga9z67djLcSbEtsBUOS8", "ctx": null, - "_testId": "urn:uuid:1a63d9c9-6618-44ba-9195-998104c514bb", + "_testId": "urn:uuid:bca43b44-32f1-4e02-8ab1-f24b2f45e838", "cell": { - "columnId": "OpSecId", - "rowId": "If the \"proof\" field is invalid, an error MUST be raised." + "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/#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": 40829, + "_idleStart": 36729, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 29, + "duration": 386, "state": "passed", - "speed": "fast" + "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": "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, @@ -23076,32 +17950,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I8HfQUCby8c6rnnhicBqw", + "parent": "gqHHDnM0oYGv-39z2mcsI", "ctx": null, - "_testId": "urn:uuid:3bb66923-0e70-45d0-a18c-ce3c00c4ba0a", + "_testId": "urn:uuid:a8e71f04-7f10-4605-ac66-03bb26ba6d94", "cell": { "columnId": "SpruceID", - "rowId": "If the \"proof\" field is invalid, an error MUST be raised." + "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": 41465, + "_idleStart": 37411, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 25, + "duration": 62, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "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": "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, @@ -23111,37 +17986,39 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I5sQwd-elvbwnnYVG_wGF", + "parent": "IfEsjvRHLDsMDJ1wbOSdY", "ctx": null, - "_testId": "urn:uuid:07f52696-d640-4805-b2a9-c47ff532ec43", + "_testId": "urn:uuid:5653ae51-019e-46d6-bc14-59e53d771734", "cell": { "columnId": "Trinsic", - "rowId": "If the \"proof\" field is invalid, an error MUST be raised." + "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": 42635, + "_idleStart": 38236, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 29, + "duration": 110, "state": "passed", - "speed": "fast" + "speed": "slow" } ] }, { - "id": "If the \"proof.type\" field is missing, an error MUST be raised.", + "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": "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, @@ -23151,32 +18028,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8FUVhOgQKJ4jYmejg3oJ5", + "parent": "kmG8XZyUxDUPZ6BLYMr9P", "ctx": null, - "_testId": "urn:uuid:e847cce2-f8c9-4bb9-b766-f17c4632894c", + "_testId": "urn:uuid:bbb6390b-bdfc-414c-879f-d2b6cb4a8037", "cell": { - "columnId": "apicatalog.com", - "rowId": "If the \"proof.type\" field is missing, an error MUST be raised." + "columnId": "ACA-py", + "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": 15923, + "_idleStart": 17032, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 54, + "duration": 26, "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 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, @@ -23186,32 +18064,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "4rMcTf82al4NVv_78CupS", + "parent": "RaxdbvT1t4jg8M1E4Yot7", "ctx": null, - "_testId": "urn:uuid:3c0b912e-2bd3-48d6-ab1b-8a3f86c7c256", + "_testId": "urn:uuid:6d2dae7f-e755-4dcc-b647-37a3c5e54e6f", "cell": { - "columnId": "Danube Tech", - "rowId": "If the \"proof.type\" field is missing, an error MUST be raised." + "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": 19104, + "_idleStart": 17887, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 226, + "duration": 52, "state": "passed", - "speed": "slow" + "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": "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, @@ -23221,32 +18100,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "ouesj07FQZNyOL7t06-X-", + "parent": "tP2ofxvtbCGvWsW_3gpVj", "ctx": null, - "_testId": "urn:uuid:a68426f3-72a5-47d4-8449-ac425726cfb1", + "_testId": "urn:uuid:cd07f9e1-2e1f-4d19-a8b2-928d8c55e60c", "cell": { - "columnId": "Digital Bazaar", - "rowId": "If the \"proof.type\" field is missing, 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": 27381, + "_idleStart": 22852, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 64, + "duration": 650, "state": "passed", - "speed": "medium" + "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 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, @@ -23256,32 +18136,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "KEnA8DBEVxZnIEqHqG8ny", + "parent": "_uaYuFH_jTfDLBT8n9RJ0", "ctx": null, - "_testId": "urn:uuid:8f84eda8-cf07-4561-a373-1fa6c2bec18f", + "_testId": "urn:uuid:36e3db2b-4313-423b-bf6e-4b34bb6cb843", "cell": { - "columnId": "EWF", - "rowId": "If the \"proof.type\" field is missing, 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": 28982, + "_idleStart": 25639, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 163, + "duration": 54, "state": "passed", - "speed": "slow" + "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": "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, @@ -23291,32 +18172,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "XD2-EVL18dB-hOt8puHrL", + "parent": "91u2WAU2zJYMNRo8aVT6K", "ctx": null, - "_testId": "urn:uuid:405ee439-70ae-4d25-aee6-b5a425be4f8c", + "_testId": "urn:uuid:d14e2169-5606-41a2-adef-8db4600a48b0", "cell": { - "columnId": "LearnCard", - "rowId": "If the \"proof.type\" field is missing, 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": 32105, + "_idleStart": 27316, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 42, + "duration": 100, "state": "passed", - "speed": "medium" + "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 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, @@ -23326,32 +18208,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8sPgtTPQiHtoLikfIzMnw", + "parent": "lga9z67djLcSbEtsBUOS8", "ctx": null, - "_testId": "urn:uuid:cf7a7ebd-aa3d-4452-8a98-ce9c911c7695", + "_testId": "urn:uuid:f34e8e3a-a7b2-41b3-b49a-ba4873eeda77", "cell": { - "columnId": "OpSecId", - "rowId": "If the \"proof.type\" field is missing, an error MUST be raised." + "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": 40858, + "_idleStart": 37115, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 29, + "duration": 60, "state": "passed", - "speed": "fast" + "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": "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, @@ -23361,32 +18244,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I8HfQUCby8c6rnnhicBqw", + "parent": "gqHHDnM0oYGv-39z2mcsI", "ctx": null, - "_testId": "urn:uuid:03c342cb-23a4-43eb-a9a4-55fab0926116", + "_testId": "urn:uuid:43145434-3644-45d6-bb8e-cc5bde554a76", "cell": { "columnId": "SpruceID", - "rowId": "If the \"proof.type\" field is missing, an error MUST be raised." + "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": 41490, + "_idleStart": 37473, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 24, + "duration": 20, "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, @@ -23396,37 +18280,46 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I5sQwd-elvbwnnYVG_wGF", + "parent": "IfEsjvRHLDsMDJ1wbOSdY", "ctx": null, - "_testId": "urn:uuid:430ab078-0c4e-4bec-a69d-550c56f79e66", + "_testId": "urn:uuid:6ecb8de8-c2f6-4502-9d80-64fa8941025d", "cell": { "columnId": "Trinsic", - "rowId": "If the \"proof.type\" field is missing, an error MUST be raised." + "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": 42664, + "_idleStart": 38346, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 25, + "duration": 17, "state": "passed", "speed": "fast" } ] - }, + } + ] + }, + { + "title": "Ed25519Signature2020 (verifier)", + "ctx": null, + "suites": [ { - "id": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised.", - "cells": [ + "title": "ACA-py", + "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": "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, @@ -23436,32 +18329,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8FUVhOgQKJ4jYmejg3oJ5", + "parent": "uZv_8Rhj9XLYAIagL2sTG", "ctx": null, - "_testId": "urn:uuid:83e25a4f-c42a-4925-bdbe-3b85e7b29e04", - "cell": { - "columnId": "apicatalog.com", - "rowId": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised." - }, + "_testId": "urn:uuid:71674c34-2d63-4bd7-b4d3-7fd96d168d0a", "_events": {}, "_eventsCount": 1, + "cell": { + "columnId": "ACA-py", + "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" + }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 15978, + "_idleStart": 38365, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 53, + "duration": 182, "state": "passed", - "speed": "medium" + "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": "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, @@ -23471,32 +18364,39 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "4rMcTf82al4NVv_78CupS", + "parent": "uZv_8Rhj9XLYAIagL2sTG", "ctx": null, - "_testId": "urn:uuid:f856559c-67a9-410a-aed8-8f8ed3b8c5fb", - "cell": { - "columnId": "Danube Tech", - "rowId": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised." - }, + "_testId": "urn:uuid:d2b1eaaa-a49a-4c19-8d5a-8d38d147d2ef", "_events": {}, "_eventsCount": 1, + "cell": { + "columnId": "ACA-py", + "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": 19330, + "_idleStart": 38547, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 223, - "state": "passed", - "speed": "slow" + "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, 22 Sep 2024 05:02:14 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, 22 Sep 2024 05:02:14 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 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": "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, @@ -23506,32 +18406,39 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "ouesj07FQZNyOL7t06-X-", + "parent": "uZv_8Rhj9XLYAIagL2sTG", "ctx": null, - "_testId": "urn:uuid:18b1453d-51df-4250-a7bd-32541db59635", - "cell": { - "columnId": "Digital Bazaar", - "rowId": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised." - }, + "_testId": "urn:uuid:e8d5bdda-39c7-4290-ad17-4a8018dcd106", "_events": {}, "_eventsCount": 1, + "cell": { + "columnId": "ACA-py", + "rowId": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised." + }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 27445, + "_idleStart": 38578, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 46, - "state": "passed", - "speed": "medium" + "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, 22 Sep 2024 05:02:14 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, 22 Sep 2024 05:02:14 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 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": "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, @@ -23541,32 +18448,62 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "KEnA8DBEVxZnIEqHqG8ny", + "parent": "uZv_8Rhj9XLYAIagL2sTG", "ctx": null, - "_testId": "urn:uuid:ea22b0f1-ffaf-469b-aaf8-38c02bc84b4f", - "cell": { - "columnId": "EWF", - "rowId": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised." - }, + "_testId": "urn:uuid:83515316-6f4f-436f-884e-27e31b93ba28", "_events": {}, "_eventsCount": 1, + "cell": { + "columnId": "ACA-py", + "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": 29146, + "_idleStart": 38609, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 89, - "state": "passed", - "speed": "slow" - }, + "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, 22 Sep 2024 05:02:14 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, 22 Sep 2024 05:02:14 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": "4FGIHj8dGEyCbFlelMS7V", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "_testId": "urn:uuid:f075cf8a-e0d1-4466-a957-df62bb2b21c9" + }, + { + "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": "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, @@ -23576,32 +18513,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "XD2-EVL18dB-hOt8puHrL", + "parent": "qVF3BO_DJk0l6X2J1-sCr", "ctx": null, - "_testId": "urn:uuid:412c1d7c-961d-44e5-bc25-df5ad2c01d9d", - "cell": { - "columnId": "LearnCard", - "rowId": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised." - }, + "_testId": "urn:uuid:a79195a0-27eb-4b57-a31a-02e050a48d5a", "_events": {}, "_eventsCount": 1, + "cell": { + "columnId": "apicatalog.com", + "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" + }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 32147, + "_idleStart": 38639, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 7246, + "duration": 82, "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": "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, @@ -23611,32 +18548,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8sPgtTPQiHtoLikfIzMnw", + "parent": "qVF3BO_DJk0l6X2J1-sCr", "ctx": null, - "_testId": "urn:uuid:ba9dbc43-5ec6-4de1-98d2-067b9645c69e", - "cell": { - "columnId": "OpSecId", - "rowId": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised." - }, + "_testId": "urn:uuid:4698652c-a191-4d07-bc42-17b7119b0343", "_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": 40887, + "_idleStart": 38722, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 29, + "duration": 60, "state": "passed", - "speed": "fast" + "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": "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, @@ -23646,32 +18583,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I8HfQUCby8c6rnnhicBqw", + "parent": "qVF3BO_DJk0l6X2J1-sCr", "ctx": null, - "_testId": "urn:uuid:356621a8-908c-496f-a980-9e5bbe959fa7", - "cell": { - "columnId": "SpruceID", - "rowId": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised." - }, + "_testId": "urn:uuid:e4cf2c40-0650-4255-b120-2c3f7fecde13", "_events": {}, "_eventsCount": 1, + "cell": { + "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": 41517, + "_idleStart": 38782, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 21, + "duration": 48, "state": "passed", - "speed": "fast" + "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": "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, @@ -23681,37 +18618,55 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I5sQwd-elvbwnnYVG_wGF", + "parent": "qVF3BO_DJk0l6X2J1-sCr", "ctx": null, - "_testId": "urn:uuid:f4fbab3b-233c-45e5-be03-9c3f82d0ce0f", - "cell": { - "columnId": "Trinsic", - "rowId": "If the \"proof.type\" field is not the string \"Ed25519Signature2020\", an error MUST be raised." - }, + "_testId": "urn:uuid:f51cb190-e3cf-4bc1-84ba-1f0d7d6c4e64", "_events": {}, "_eventsCount": 1, + "cell": { + "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": 42689, + "_idleStart": 38830, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 31, + "duration": 60, "state": "passed", - "speed": "fast" + "speed": "medium" } - ] + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [], + "_beforeAll": [], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "4FGIHj8dGEyCbFlelMS7V", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "_testId": "urn:uuid:87d5faee-0202-40a0-a235-f1a820582b60" }, { - "id": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised.", - "cells": [ + "title": "Danube Tech", + "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": "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, @@ -23721,32 +18676,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8FUVhOgQKJ4jYmejg3oJ5", + "parent": "Em92VZIlgdmijXvACW8rs", "ctx": null, - "_testId": "urn:uuid:2f9859e8-178f-48ac-b18a-7164eddb47fb", - "cell": { - "columnId": "apicatalog.com", - "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." - }, + "_testId": "urn:uuid:326b459f-ff9a-47a2-8e01-ecb89cfaea32", "_events": {}, "_eventsCount": 1, + "cell": { + "columnId": "Danube Tech", + "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" + }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 16032, + "_idleStart": 38890, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 49, + "duration": 909, "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": "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, @@ -23756,38 +18711,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "4rMcTf82al4NVv_78CupS", + "parent": "Em92VZIlgdmijXvACW8rs", "ctx": null, - "_testId": "urn:uuid:66eca2ab-38a9-44b7-bc38-328f88c3b0bf", + "_testId": "urn:uuid:331f27db-7ff0-49e8-bef0-010aa8379477", + "_events": {}, + "_eventsCount": 1, "cell": { "columnId": "Danube Tech", - "rowId": "If the \"proof.verificationMethod\" field is missing, 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." }, - "_events": {}, - "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 19553, + "_idleStart": 39799, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 107, - "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:273: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:84: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": 422, + "state": "passed", + "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": "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, @@ -23797,32 +18746,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "ouesj07FQZNyOL7t06-X-", + "parent": "Em92VZIlgdmijXvACW8rs", "ctx": null, - "_testId": "urn:uuid:f08053e3-8b92-4f97-a894-acddf269ee95", - "cell": { - "columnId": "Digital Bazaar", - "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." - }, + "_testId": "urn:uuid:2574e9b1-fb11-4253-9c16-e049e64fcf45", "_events": {}, "_eventsCount": 1, + "cell": { + "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": 27491, + "_idleStart": 40221, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 36, + "duration": 433, "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": "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, @@ -23832,32 +18781,55 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "KEnA8DBEVxZnIEqHqG8ny", + "parent": "Em92VZIlgdmijXvACW8rs", "ctx": null, - "_testId": "urn:uuid:4c5f24cb-dc58-4396-88ef-e161007db55a", - "cell": { - "columnId": "EWF", - "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." - }, + "_testId": "urn:uuid:9f16eec7-d9af-4065-a4c4-170696f1546c", "_events": {}, "_eventsCount": 1, + "cell": { + "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": 29235, + "_idleStart": 40654, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 87, + "duration": 438, "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": "4FGIHj8dGEyCbFlelMS7V", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "_testId": "urn:uuid:969b3af6-740e-4b20-b788-50e832c30885" + }, + { + "title": "Digital Bazaar", + "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": "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, @@ -23867,32 +18839,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "XD2-EVL18dB-hOt8puHrL", + "parent": "BAz7LRS1PiIYphY_H-_Zg", "ctx": null, - "_testId": "urn:uuid:8ce67b08-ca0a-42cd-872d-50699b822f36", - "cell": { - "columnId": "LearnCard", - "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." - }, + "_testId": "urn:uuid:c4c5028d-45c0-4812-b4e5-ddc6e87566c8", "_events": {}, "_eventsCount": 1, + "cell": { + "columnId": "Digital Bazaar", + "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" + }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 39393, + "_idleStart": 41093, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 45, + "duration": 167, "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": "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, @@ -23902,32 +18874,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8sPgtTPQiHtoLikfIzMnw", + "parent": "BAz7LRS1PiIYphY_H-_Zg", "ctx": null, - "_testId": "urn:uuid:3092eaad-6b35-465c-832c-ef61bd6e3f80", - "cell": { - "columnId": "OpSecId", - "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." - }, + "_testId": "urn:uuid:2e27b1e3-1c94-413d-a608-1a6cf776b71f", "_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": 40916, + "_idleStart": 41260, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 26, + "duration": 59, "state": "passed", - "speed": "fast" + "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": "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, @@ -23937,33 +18909,33 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I8HfQUCby8c6rnnhicBqw", + "parent": "BAz7LRS1PiIYphY_H-_Zg", "ctx": null, - "_testId": "urn:uuid:d93db2b6-2a1d-4e97-85e6-32c2c3ca86a3", - "cell": { - "columnId": "SpruceID", - "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." - }, + "_testId": "urn:uuid:2b801282-d6bf-41c5-afb6-12723b0e6076", "_events": {}, "_eventsCount": 1, + "cell": { + "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": 41538, + "_idleStart": 41319, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 20, + "duration": 56, "state": "passed", - "speed": "fast" + "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 }", - "async": 0, + "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, @@ -23972,37 +18944,55 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I5sQwd-elvbwnnYVG_wGF", + "parent": "BAz7LRS1PiIYphY_H-_Zg", "ctx": null, - "_testId": "urn:uuid:7c8dde64-bff5-4162-81dc-300938a0dec8", - "cell": { - "columnId": "Trinsic", - "rowId": "If the \"proof.verificationMethod\" field is missing, an error MUST be raised." - }, + "_testId": "urn:uuid:aef1046a-06a9-4cc9-b9c7-4a2def8c8b96", "_events": {}, "_eventsCount": 1, + "cell": { + "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": 42720, + "_idleStart": 41375, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 27, + "duration": 55, "state": "passed", - "speed": "fast" + "speed": "medium" } - ] + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [], + "_beforeAll": [], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "4FGIHj8dGEyCbFlelMS7V", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "_testId": "urn:uuid:6eaef243-f02b-4fa4-90f3-e2adc24513dd" }, { - "id": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised.", - "cells": [ + "title": "EWF", + "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": "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, @@ -24012,32 +19002,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8FUVhOgQKJ4jYmejg3oJ5", + "parent": "CXM6DVz1N4NCHNaISPNFN", "ctx": null, - "_testId": "urn:uuid:d94233a2-6713-4068-80dd-88d734266b0e", - "cell": { - "columnId": "apicatalog.com", - "rowId": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised." - }, + "_testId": "urn:uuid:a528e96c-c77a-499a-bdbd-063c0939c03d", "_events": {}, "_eventsCount": 1, + "cell": { + "columnId": "EWF", + "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" + }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 16082, + "_idleStart": 41430, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 73, + "duration": 364, "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 \"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, @@ -24047,32 +19037,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "4rMcTf82al4NVv_78CupS", + "parent": "CXM6DVz1N4NCHNaISPNFN", "ctx": null, - "_testId": "urn:uuid:1f1bb113-10c1-4175-8d40-9aceaa3897fd", - "cell": { - "columnId": "Danube Tech", - "rowId": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised." - }, + "_testId": "urn:uuid:d39aee96-a1fb-4bc3-bcf5-a20a8ae9112c", "_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": 19661, + "_idleStart": 41794, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 649, + "duration": 91, "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 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, @@ -24082,32 +19072,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "ouesj07FQZNyOL7t06-X-", + "parent": "CXM6DVz1N4NCHNaISPNFN", "ctx": null, - "_testId": "urn:uuid:f2ccc1db-3424-4966-b08e-5acdd512e21b", - "cell": { - "columnId": "Digital Bazaar", - "rowId": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised." - }, + "_testId": "urn:uuid:94515f89-9dbf-4279-b5b4-744f9f31eeb0", "_events": {}, "_eventsCount": 1, + "cell": { + "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": 27528, + "_idleStart": 41885, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 49, + "duration": 91, "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 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, @@ -24117,32 +19107,55 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "KEnA8DBEVxZnIEqHqG8ny", + "parent": "CXM6DVz1N4NCHNaISPNFN", "ctx": null, - "_testId": "urn:uuid:e5bf15b2-e811-46b6-b1a4-382f6882ff6b", + "_testId": "urn:uuid:1c45e8be-c98b-4f1b-9af1-91b131ce481d", + "_events": {}, + "_eventsCount": 1, "cell": { "columnId": "EWF", - "rowId": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised." + "rowId": "If a canonicalization data hashing algorithm SHA-2-256 is used, an error MUST be raised." }, - "_events": {}, - "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 29322, + "_idleStart": 41976, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 92, + "duration": 91, "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": "4FGIHj8dGEyCbFlelMS7V", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "_testId": "urn:uuid:fc49e6db-aeee-4bb9-b9cb-1171ee763763" + }, + { + "title": "LearnCard", + "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": "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, @@ -24152,32 +19165,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "XD2-EVL18dB-hOt8puHrL", + "parent": "6B52dF5qcgUxcUC1j_0VO", "ctx": null, - "_testId": "urn:uuid:c95a15ad-d4d9-40c0-9359-d70a62099885", + "_testId": "urn:uuid:ccd837b2-5bda-4151-82c0-3d0a022ec1e0", + "_events": {}, + "_eventsCount": 1, "cell": { "columnId": "LearnCard", - "rowId": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised." + "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" }, - "_events": {}, - "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 39438, + "_idleStart": 42067, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 89, + "duration": 210, "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 \"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, @@ -24187,32 +19200,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8sPgtTPQiHtoLikfIzMnw", + "parent": "6B52dF5qcgUxcUC1j_0VO", "ctx": null, - "_testId": "urn:uuid:c15e2678-a253-4b2f-8a88-8af9039af756", - "cell": { - "columnId": "OpSecId", - "rowId": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised." - }, + "_testId": "urn:uuid:38c2b9a3-d670-4495-83a7-c6a29476dc8f", "_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": 40942, + "_idleStart": 42277, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 34, + "duration": 77, "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 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, @@ -24222,32 +19235,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I8HfQUCby8c6rnnhicBqw", + "parent": "6B52dF5qcgUxcUC1j_0VO", "ctx": null, - "_testId": "urn:uuid:e3936c29-e9da-4740-aff2-a485d5c7a8f3", - "cell": { - "columnId": "SpruceID", - "rowId": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised." - }, + "_testId": "urn:uuid:0d88f3d2-0308-4e12-a3da-ab45e9c6321a", "_events": {}, "_eventsCount": 1, + "cell": { + "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": 41559, + "_idleStart": 42354, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 20, + "duration": 78, "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 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, @@ -24257,37 +19270,55 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I5sQwd-elvbwnnYVG_wGF", + "parent": "6B52dF5qcgUxcUC1j_0VO", "ctx": null, - "_testId": "urn:uuid:5d713bad-40a5-40ec-9655-b99bf9179264", - "cell": { - "columnId": "Trinsic", - "rowId": "If the \"proof.verificationMethod\" field is invalid, an error MUST be raised." - }, + "_testId": "urn:uuid:2a1c5d73-611a-4b2a-a53d-0e913f2fbffd", "_events": {}, "_eventsCount": 1, + "cell": { + "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": 42748, + "_idleStart": 42432, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 43, + "duration": 67, "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": "4FGIHj8dGEyCbFlelMS7V", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "_testId": "urn:uuid:03e678ab-adde-4bea-971d-60615e18c407" }, { - "id": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised.", - "cells": [ + "title": "SpruceID", + "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": "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, @@ -24297,32 +19328,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8FUVhOgQKJ4jYmejg3oJ5", + "parent": "Hw7jqJIzhqIYowHmvgSJ4", "ctx": null, - "_testId": "urn:uuid:693021e3-668c-4a1b-bf7b-ddfe068b3860", - "cell": { - "columnId": "apicatalog.com", - "rowId": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised." - }, + "_testId": "urn:uuid:f711f32a-ccb7-4845-8e8b-7a6c664c4f5c", "_events": {}, "_eventsCount": 1, + "cell": { + "columnId": "SpruceID", + "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" + }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 16154, + "_idleStart": 42500, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 59, + "duration": 63, "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 \"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, @@ -24332,32 +19363,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "4rMcTf82al4NVv_78CupS", + "parent": "Hw7jqJIzhqIYowHmvgSJ4", "ctx": null, - "_testId": "urn:uuid:98af10dc-912f-4199-b966-a6c703d725ef", - "cell": { - "columnId": "Danube Tech", - "rowId": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised." - }, + "_testId": "urn:uuid:af668dfa-c716-4083-a900-bdc0deb885a1", "_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": 20311, + "_idleStart": 42564, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 676, + "duration": 43, "state": "passed", - "speed": "slow" + "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 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, @@ -24367,32 +19398,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "ouesj07FQZNyOL7t06-X-", + "parent": "Hw7jqJIzhqIYowHmvgSJ4", "ctx": null, - "_testId": "urn:uuid:92eb8b76-2541-4e0c-a0e3-045ba8e4b035", - "cell": { - "columnId": "Digital Bazaar", - "rowId": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised." - }, + "_testId": "urn:uuid:a548fcd4-9a7a-4199-bf2a-62a0cb7765f0", "_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": 27577, + "_idleStart": 42608, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 84, + "duration": 66, "state": "passed", - "speed": "slow" + "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 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, @@ -24402,32 +19433,55 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "KEnA8DBEVxZnIEqHqG8ny", + "parent": "Hw7jqJIzhqIYowHmvgSJ4", "ctx": null, - "_testId": "urn:uuid:90ce9257-bdf7-4728-9c2e-4b8a5f3d07b2", - "cell": { - "columnId": "EWF", - "rowId": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised." - }, + "_testId": "urn:uuid:a4cedbed-fbb8-470d-af9b-e3ec12115abf", "_events": {}, "_eventsCount": 1, + "cell": { + "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": 29414, + "_idleStart": 42674, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 88, + "duration": 41, "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 }", + "speed": "medium" + } + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [], + "_beforeAll": [], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "4FGIHj8dGEyCbFlelMS7V", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "_testId": "urn:uuid:17aebc55-b009-4dea-81e7-9beef17a3354" + }, + { + "title": "Trinsic", + "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, @@ -24437,32 +19491,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "XD2-EVL18dB-hOt8puHrL", + "parent": "wDgLkULeb2no7zGUQM24o", "ctx": null, - "_testId": "urn:uuid:2f1ecb64-ad25-4d81-8e7e-e024b612a55e", - "cell": { - "columnId": "LearnCard", - "rowId": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised." - }, + "_testId": "urn:uuid:09019a4c-da97-4be0-9cb3-1a9737efda38", "_events": {}, "_eventsCount": 1, + "cell": { + "columnId": "Trinsic", + "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" + }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 39527, + "_idleStart": 42715, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 38, + "duration": 84, "state": "passed", - "speed": "medium" + "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 \"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, @@ -24472,32 +19526,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8sPgtTPQiHtoLikfIzMnw", + "parent": "wDgLkULeb2no7zGUQM24o", "ctx": null, - "_testId": "urn:uuid:734c2ff4-1cc0-4a3e-a3d3-65c748bff011", - "cell": { - "columnId": "OpSecId", - "rowId": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised." - }, + "_testId": "urn:uuid:f7ba0db1-ad2b-486c-b0ce-3907cb127b9e", "_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": 40976, + "_idleStart": 42803, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 31, + "duration": 46, "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 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, @@ -24507,32 +19561,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I8HfQUCby8c6rnnhicBqw", + "parent": "wDgLkULeb2no7zGUQM24o", "ctx": null, - "_testId": "urn:uuid:db792af1-c94d-449e-a6f5-d25ebbf56af1", - "cell": { - "columnId": "SpruceID", - "rowId": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised." - }, + "_testId": "urn:uuid:f0b1c4f3-3908-4e2d-9416-fc3fa2d3f6c2", "_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": 41579, + "_idleStart": 42850, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 22, + "duration": 49, "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 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, @@ -24542,37 +19596,85 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I5sQwd-elvbwnnYVG_wGF", + "parent": "wDgLkULeb2no7zGUQM24o", "ctx": null, - "_testId": "urn:uuid:ae2d643f-b1db-408b-a756-5726a10c865b", + "_testId": "urn:uuid:8e58a7fb-9697-4c9c-871b-8d51f41a91af", + "_events": {}, + "_eventsCount": 1, "cell": { "columnId": "Trinsic", - "rowId": "If the \"proof.proofPurpose\" field is missing, an error MUST be raised." + "rowId": "If a canonicalization data hashing algorithm SHA-2-256 is used, an error MUST be raised." }, - "_events": {}, - "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 42791, + "_idleStart": 42900, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 23, + "duration": 64, "state": "passed", - "speed": "fast" + "speed": "medium" } - ] - }, + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [], + "_beforeAll": [], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "4FGIHj8dGEyCbFlelMS7V", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", + "_testId": "urn:uuid:b5d26e0f-9843-42d2-a89a-674ae894f09c" + } + ], + "root": false, + "pending": false, + "_retries": -1, + "_beforeEach": [], + "_beforeAll": [], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "WJJ1i0ogWBUhf0oUoei7K", + "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:31443b8a-0fd3-419f-842b-5f5abd321668", + "columns": [ + "ACA-py", + "apicatalog.com", + "Danube Tech", + "Digital Bazaar", + "EWF", + "LearnCard", + "SpruceID", + "Trinsic" + ], + "rows": [ { - "id": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised.", + "id": "MUST verify a valid VC with an Ed25519Signature2020 proof", "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": "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, @@ -24582,32 +19684,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8FUVhOgQKJ4jYmejg3oJ5", + "parent": "uZv_8Rhj9XLYAIagL2sTG", "ctx": null, - "_testId": "urn:uuid:31991102-01d8-4219-ae8e-ba1e70069879", - "cell": { - "columnId": "apicatalog.com", - "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." - }, + "_testId": "urn:uuid:71674c34-2d63-4bd7-b4d3-7fd96d168d0a", "_events": {}, "_eventsCount": 1, + "cell": { + "columnId": "ACA-py", + "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" + }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 16213, + "_idleStart": 38365, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 58, + "duration": 182, "state": "passed", - "speed": "medium" + "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": "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, @@ -24617,32 +19719,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "4rMcTf82al4NVv_78CupS", + "parent": "qVF3BO_DJk0l6X2J1-sCr", "ctx": null, - "_testId": "urn:uuid:89cb38d9-a6fa-458b-bb6f-e5fc302e21d1", - "cell": { - "columnId": "Danube Tech", - "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." - }, + "_testId": "urn:uuid:a79195a0-27eb-4b57-a31a-02e050a48d5a", "_events": {}, "_eventsCount": 1, + "cell": { + "columnId": "apicatalog.com", + "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" + }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 20987, + "_idleStart": 38639, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 222, + "duration": 82, "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": "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, @@ -24652,32 +19754,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "ouesj07FQZNyOL7t06-X-", + "parent": "Em92VZIlgdmijXvACW8rs", "ctx": null, - "_testId": "urn:uuid:cccd2b96-f6f0-45f7-aaf1-e11e9d73ea51", - "cell": { - "columnId": "Digital Bazaar", - "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." - }, + "_testId": "urn:uuid:326b459f-ff9a-47a2-8e01-ecb89cfaea32", "_events": {}, "_eventsCount": 1, + "cell": { + "columnId": "Danube Tech", + "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" + }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 27661, + "_idleStart": 38890, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 47, + "duration": 909, "state": "passed", - "speed": "medium" + "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": "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, @@ -24687,32 +19789,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "KEnA8DBEVxZnIEqHqG8ny", + "parent": "BAz7LRS1PiIYphY_H-_Zg", "ctx": null, - "_testId": "urn:uuid:91cd75e6-9bdc-4bf0-9447-ddc6d1ad8077", - "cell": { - "columnId": "EWF", - "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." - }, + "_testId": "urn:uuid:c4c5028d-45c0-4812-b4e5-ddc6e87566c8", "_events": {}, "_eventsCount": 1, + "cell": { + "columnId": "Digital Bazaar", + "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" + }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 29502, + "_idleStart": 41093, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 89, + "duration": 167, "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": "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, @@ -24722,32 +19824,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "XD2-EVL18dB-hOt8puHrL", + "parent": "CXM6DVz1N4NCHNaISPNFN", "ctx": null, - "_testId": "urn:uuid:eec817ed-0f26-4c29-baef-c32880b6b8fe", - "cell": { - "columnId": "LearnCard", - "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." - }, + "_testId": "urn:uuid:a528e96c-c77a-499a-bdbd-063c0939c03d", "_events": {}, "_eventsCount": 1, + "cell": { + "columnId": "EWF", + "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" + }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 39565, + "_idleStart": 41430, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 71, + "duration": 364, "state": "passed", - "speed": "medium" + "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": "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, @@ -24757,32 +19859,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8sPgtTPQiHtoLikfIzMnw", + "parent": "6B52dF5qcgUxcUC1j_0VO", "ctx": null, - "_testId": "urn:uuid:723d882b-3699-4db2-9903-ca28a8dcfc23", - "cell": { - "columnId": "OpSecId", - "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." - }, + "_testId": "urn:uuid:ccd837b2-5bda-4151-82c0-3d0a022ec1e0", "_events": {}, "_eventsCount": 1, + "cell": { + "columnId": "LearnCard", + "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" + }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 41008, + "_idleStart": 42067, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 28, + "duration": 210, "state": "passed", - "speed": "fast" + "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": "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, @@ -24792,32 +19894,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I8HfQUCby8c6rnnhicBqw", + "parent": "Hw7jqJIzhqIYowHmvgSJ4", "ctx": null, - "_testId": "urn:uuid:b0284e87-3076-4df5-8bca-6ea3b7e8f275", + "_testId": "urn:uuid:f711f32a-ccb7-4845-8e8b-7a6c664c4f5c", + "_events": {}, + "_eventsCount": 1, "cell": { "columnId": "SpruceID", - "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." + "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" }, - "_events": {}, - "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 41601, + "_idleStart": 42500, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 25, + "duration": 63, "state": "passed", - "speed": "fast" + "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": "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, @@ -24827,38 +19929,37 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I5sQwd-elvbwnnYVG_wGF", + "parent": "wDgLkULeb2no7zGUQM24o", "ctx": null, - "_testId": "urn:uuid:85c4d3a3-cc0b-4038-8acc-81617d46efde", + "_testId": "urn:uuid:09019a4c-da97-4be0-9cb3-1a9737efda38", + "_events": {}, + "_eventsCount": 1, "cell": { "columnId": "Trinsic", - "rowId": "If the \"proof.proofPurpose\" field is invalid, an error MUST be raised." + "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" }, - "_events": {}, - "_eventsCount": 1, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 42815, + "_idleStart": 42715, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 29, + "duration": 84, "state": "passed", - "speed": "fast" + "speed": "slow" } ] }, { - "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 \"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 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 \"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, @@ -24868,33 +19969,39 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8FUVhOgQKJ4jYmejg3oJ5", + "parent": "uZv_8Rhj9XLYAIagL2sTG", "ctx": null, - "_testId": "urn:uuid:e3d5e289-1be0-42b7-9fca-f6a32840d1ad", - "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." - }, + "_testId": "urn:uuid:d2b1eaaa-a49a-4c19-8d5a-8d38d147d2ef", "_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": { + "cell": { + "columnId": "ACA-py", + "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": 16272, + "_idleStart": 38547, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 49, - "state": "passed", - "speed": "medium" + "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, 22 Sep 2024 05:02:14 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, 22 Sep 2024 05:02:14 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 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 \"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, @@ -24904,33 +20011,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "4rMcTf82al4NVv_78CupS", + "parent": "qVF3BO_DJk0l6X2J1-sCr", "ctx": null, - "_testId": "urn:uuid:4fd22ebb-316e-46b5-a06b-dddc00161a6d", - "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." - }, + "_testId": "urn:uuid:4698652c-a191-4d07-bc42-17b7119b0343", "_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.", + "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": 21209, + "_idleStart": 38722, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 223, + "duration": 60, "state": "passed", - "speed": "slow" + "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 \"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, @@ -24940,33 +20046,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "ouesj07FQZNyOL7t06-X-", + "parent": "Em92VZIlgdmijXvACW8rs", "ctx": null, - "_testId": "urn:uuid:b547280d-573c-4413-9677-8b5ab8f7d27f", - "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." - }, + "_testId": "urn:uuid:331f27db-7ff0-49e8-bef0-010aa8379477", "_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.", + "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": 27708, + "_idleStart": 39799, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 48, + "duration": 422, "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 \"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, @@ -24976,33 +20081,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "KEnA8DBEVxZnIEqHqG8ny", + "parent": "BAz7LRS1PiIYphY_H-_Zg", "ctx": null, - "_testId": "urn:uuid:757e1dee-9cab-4f14-81c7-9f8c8a885d62", - "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." - }, + "_testId": "urn:uuid:2e27b1e3-1c94-413d-a608-1a6cf776b71f", "_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.", + "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": 29591, + "_idleStart": 41260, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 90, + "duration": 59, "state": "passed", - "speed": "slow" + "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 \"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, @@ -25012,33 +20116,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "XD2-EVL18dB-hOt8puHrL", + "parent": "CXM6DVz1N4NCHNaISPNFN", "ctx": null, - "_testId": "urn:uuid:3344ba21-7e3f-403e-a617-a476b91346ff", - "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." - }, + "_testId": "urn:uuid:d39aee96-a1fb-4bc3-bcf5-a20a8ae9112c", "_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.", + "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": 39636, + "_idleStart": 41794, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 81, + "duration": 91, "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 \"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, @@ -25048,33 +20151,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8sPgtTPQiHtoLikfIzMnw", + "parent": "6B52dF5qcgUxcUC1j_0VO", "ctx": null, - "_testId": "urn:uuid:836e15e8-acd8-4e17-bc58-53e85b4ec669", - "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." - }, + "_testId": "urn:uuid:38c2b9a3-d670-4495-83a7-c6a29476dc8f", "_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.", + "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": 41036, + "_idleStart": 42277, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 29, + "duration": 77, "state": "passed", - "speed": "fast" + "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 \"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, @@ -25084,33 +20186,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I8HfQUCby8c6rnnhicBqw", + "parent": "Hw7jqJIzhqIYowHmvgSJ4", "ctx": null, - "_testId": "urn:uuid:20e6ef1e-b4b1-450d-9437-9772bba99909", + "_testId": "urn:uuid:af668dfa-c716-4083-a900-bdc0deb885a1", + "_events": {}, + "_eventsCount": 1, "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 \"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." }, - "_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": 41626, + "_idleStart": 42564, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 22, + "duration": 43, "state": "passed", - "speed": "fast" + "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 \"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, @@ -25120,39 +20221,37 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I5sQwd-elvbwnnYVG_wGF", + "parent": "wDgLkULeb2no7zGUQM24o", "ctx": null, - "_testId": "urn:uuid:84421cee-d914-4738-9835-5f4fb13b1f8f", + "_testId": "urn:uuid:f7ba0db1-ad2b-486c-b0ce-3907cb127b9e", + "_events": {}, + "_eventsCount": 1, "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 \"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." }, - "_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": 42844, + "_idleStart": 42803, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 28, + "duration": 46, "state": "passed", - "speed": "fast" + "speed": "medium" } ] }, { - "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 a canonicalization algorithm other than URDNA2015 is used, 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 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, @@ -25162,33 +20261,39 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8FUVhOgQKJ4jYmejg3oJ5", + "parent": "uZv_8Rhj9XLYAIagL2sTG", "ctx": null, - "_testId": "urn:uuid:628c76d0-11a1-42e2-8eb1-58e90dac8d6b", - "cell": { - "columnId": "apicatalog.com", - "rowId": "The proofValue property MUST be used, as specified in 2.1 Proofs." - }, + "_testId": "urn:uuid:e8d5bdda-39c7-4290-ad17-4a8018dcd106", "_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": "ACA-py", + "rowId": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised." + }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 16321, + "_idleStart": 38578, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, - "state": "passed", - "speed": "fast" + "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, 22 Sep 2024 05:02:14 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, 22 Sep 2024 05:02:14 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": "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 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, @@ -25198,33 +20303,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "4rMcTf82al4NVv_78CupS", + "parent": "qVF3BO_DJk0l6X2J1-sCr", "ctx": null, - "_testId": "urn:uuid:74df4970-fdc9-4936-aaf3-c4cf0828122d", - "cell": { - "columnId": "Danube Tech", - "rowId": "The proofValue property MUST be used, as specified in 2.1 Proofs." - }, + "_testId": "urn:uuid:e4cf2c40-0650-4255-b120-2c3f7fecde13", "_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": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised." + }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 21432, + "_idleStart": 38782, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 48, "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 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, @@ -25234,33 +20338,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "ouesj07FQZNyOL7t06-X-", + "parent": "Em92VZIlgdmijXvACW8rs", "ctx": null, - "_testId": "urn:uuid:d925ee6a-e2d7-4d08-8e23-ab270c0b28c6", - "cell": { - "columnId": "Digital Bazaar", - "rowId": "The proofValue property MUST be used, as specified in 2.1 Proofs." - }, + "_testId": "urn:uuid:2574e9b1-fb11-4253-9c16-e049e64fcf45", "_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": "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": 27756, + "_idleStart": 40221, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 433, "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 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, @@ -25270,33 +20373,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "KEnA8DBEVxZnIEqHqG8ny", + "parent": "BAz7LRS1PiIYphY_H-_Zg", "ctx": null, - "_testId": "urn:uuid:730b0d5e-845a-437d-9886-3adfded063ce", - "cell": { - "columnId": "EWF", - "rowId": "The proofValue property MUST be used, as specified in 2.1 Proofs." - }, + "_testId": "urn:uuid:2b801282-d6bf-41c5-afb6-12723b0e6076", "_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": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised." + }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 29681, + "_idleStart": 41319, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 56, "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 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, @@ -25306,33 +20408,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "XD2-EVL18dB-hOt8puHrL", + "parent": "CXM6DVz1N4NCHNaISPNFN", "ctx": null, - "_testId": "urn:uuid:0a4ac65d-d8cb-4da2-a94e-d566862c9d1d", - "cell": { - "columnId": "LearnCard", - "rowId": "The proofValue property MUST be used, as specified in 2.1 Proofs." - }, + "_testId": "urn:uuid:94515f89-9dbf-4279-b5b4-744f9f31eeb0", "_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": "EWF", + "rowId": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised." + }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 39717, + "_idleStart": 41885, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 91, "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 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, @@ -25342,33 +20443,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8sPgtTPQiHtoLikfIzMnw", + "parent": "6B52dF5qcgUxcUC1j_0VO", "ctx": null, - "_testId": "urn:uuid:8c5cdd82-e0c7-463c-b417-6a2a562f6869", - "cell": { - "columnId": "OpSecId", - "rowId": "The proofValue property MUST be used, as specified in 2.1 Proofs." - }, + "_testId": "urn:uuid:0d88f3d2-0308-4e12-a3da-ab45e9c6321a", "_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": "LearnCard", + "rowId": "If a canonicalization algorithm other than URDNA2015 is used, an error MUST be raised." + }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 41065, + "_idleStart": 42354, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 78, "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 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, @@ -25378,33 +20478,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I8HfQUCby8c6rnnhicBqw", + "parent": "Hw7jqJIzhqIYowHmvgSJ4", "ctx": null, - "_testId": "urn:uuid:783d4a2e-f823-4164-873f-15383b4e124d", + "_testId": "urn:uuid:a548fcd4-9a7a-4199-bf2a-62a0cb7765f0", + "_events": {}, + "_eventsCount": 1, "cell": { "columnId": "SpruceID", - "rowId": "The proofValue property MUST be used, as specified in 2.1 Proofs." + "rowId": "If a canonicalization algorithm other than URDNA2015 is used, 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": 41649, + "_idleStart": 42608, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 66, "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 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, @@ -25414,39 +20513,37 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I5sQwd-elvbwnnYVG_wGF", + "parent": "wDgLkULeb2no7zGUQM24o", "ctx": null, - "_testId": "urn:uuid:c08fc3c6-b2fa-43c6-84ca-181c35479339", + "_testId": "urn:uuid:f0b1c4f3-3908-4e2d-9416-fc3fa2d3f6c2", + "_events": {}, + "_eventsCount": 1, "cell": { "columnId": "Trinsic", - "rowId": "The proofValue property MUST be used, as specified in 2.1 Proofs." + "rowId": "If a canonicalization algorithm other than URDNA2015 is used, 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": 42872, + "_idleStart": 42850, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 49, "state": "passed", - "speed": "fast" + "speed": "medium" } ] }, { - "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 a canonicalization data hashing algorithm SHA-2-256 is used, 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 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, @@ -25456,69 +20553,39 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8FUVhOgQKJ4jYmejg3oJ5", + "parent": "uZv_8Rhj9XLYAIagL2sTG", "ctx": null, - "_testId": "urn:uuid:8cdfe789-8246-41a3-9eb4-355a6625aa66", - "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:83515316-6f4f-436f-884e-27e31b93ba28", "_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": 16321, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "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": "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, - "_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": "4rMcTf82al4NVv_78CupS", - "ctx": null, - "_testId": "urn:uuid:63271b39-030f-4c8a-8ddd-dd8f65c8e65a", "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." + "columnId": "ACA-py", + "rowId": "If a canonicalization data hashing algorithm SHA-2-256 is used, 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": 21432, + "_idleStart": 38609, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, - "state": "passed", - "speed": "fast" + "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, 22 Sep 2024 05:02:14 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, 22 Sep 2024 05:02:14 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": "(\"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 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, @@ -25528,69 +20595,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "ouesj07FQZNyOL7t06-X-", + "parent": "qVF3BO_DJk0l6X2J1-sCr", "ctx": null, - "_testId": "urn:uuid:c19980b5-c8d4-4cfa-a29c-cce6a2d7009b", - "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." - }, + "_testId": "urn:uuid:f51cb190-e3cf-4bc1-84ba-1f0d7d6c4e64", "_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": 27757, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "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": "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, - "_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": "KEnA8DBEVxZnIEqHqG8ny", - "ctx": null, - "_testId": "urn:uuid:24c68316-85d2-4f8e-9133-e659bc1fe27d", "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." + "columnId": "apicatalog.com", + "rowId": "If a canonicalization data hashing algorithm SHA-2-256 is used, 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": 29681, + "_idleStart": 38830, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 60, "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 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, @@ -25600,33 +20630,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "XD2-EVL18dB-hOt8puHrL", + "parent": "Em92VZIlgdmijXvACW8rs", "ctx": null, - "_testId": "urn:uuid:c9b11eac-0474-4642-9ca2-2bc642ca484d", - "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." - }, + "_testId": "urn:uuid:9f16eec7-d9af-4065-a4c4-170696f1546c", "_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", + "cell": { + "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": 39717, + "_idleStart": 40654, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 438, "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 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, @@ -25636,33 +20665,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "8sPgtTPQiHtoLikfIzMnw", + "parent": "BAz7LRS1PiIYphY_H-_Zg", "ctx": null, - "_testId": "urn:uuid:8195b8c7-f10c-4307-b8a5-7ef5024be169", - "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." - }, + "_testId": "urn:uuid:aef1046a-06a9-4cc9-b9c7-4a2def8c8b96", "_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", + "cell": { + "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": 41065, + "_idleStart": 41375, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 55, "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 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, @@ -25672,33 +20700,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I8HfQUCby8c6rnnhicBqw", + "parent": "CXM6DVz1N4NCHNaISPNFN", "ctx": null, - "_testId": "urn:uuid:f8fc04ed-2c80-4492-aee9-0b903cf12597", - "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." - }, + "_testId": "urn:uuid:1c45e8be-c98b-4f1b-9af1-91b131ce481d", "_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", + "cell": { + "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": 41649, + "_idleStart": 41976, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 0, + "duration": 91, "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 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, @@ -25708,75 +20735,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "I5sQwd-elvbwnnYVG_wGF", + "parent": "6B52dF5qcgUxcUC1j_0VO", "ctx": null, - "_testId": "urn:uuid:0c551b5f-1d04-43f6-a822-9530c114a334", - "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." - }, + "_testId": "urn:uuid:2a1c5d73-611a-4b2a-a53d-0e913f2fbffd", "_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": 42872, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 0, - "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 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": "8FUVhOgQKJ4jYmejg3oJ5", - "ctx": null, - "_testId": "urn:uuid:6f9dd9c0-4618-4c53-8d96-f11ecb3cb673", "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": "LearnCard", + "rowId": "If a canonicalization data hashing algorithm SHA-2-256 is used, 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": 16322, + "_idleStart": 42432, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 166, + "duration": 67, "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 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, @@ -25786,33 +20770,32 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "4rMcTf82al4NVv_78CupS", + "parent": "Hw7jqJIzhqIYowHmvgSJ4", "ctx": null, - "_testId": "urn:uuid:cc74bace-eb67-4816-992f-f0d5c6fdd0cd", - "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:a4cedbed-fbb8-470d-af9b-e3ec12115abf", "_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": "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": 21433, + "_idleStart": 42674, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 668, + "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 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, @@ -25822,327 +20805,380 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "parent": "ouesj07FQZNyOL7t06-X-", + "parent": "wDgLkULeb2no7zGUQM24o", "ctx": null, - "_testId": "urn:uuid:846c52d3-25bf-41f2-9696-325265c14e81", - "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." - }, + "_testId": "urn:uuid:8e58a7fb-9697-4c9c-871b-8d51f41a91af", "_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": "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": 27757, + "_idleStart": 42900, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 165, - "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 }", - "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": "KEnA8DBEVxZnIEqHqG8ny", - "ctx": null, - "_testId": "urn:uuid:19d73d4e-c7fb-4c4e-bf89-83e72b4b16c9", - "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." - }, - "_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": 29681, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 272, - "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 }", - "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": "XD2-EVL18dB-hOt8puHrL", - "ctx": null, - "_testId": "urn:uuid:e8836258-124e-41ba-a1b5-2462b67436e9", - "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." - }, - "_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": 39718, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 324, - "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 }", - "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": "8sPgtTPQiHtoLikfIzMnw", - "ctx": null, - "_testId": "urn:uuid:5c6aae23-6fa9-4062-a11f-02aae542ec0c", - "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." - }, - "_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": 41066, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 87, - "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 }", - "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": "I8HfQUCby8c6rnnhicBqw", - "ctx": null, - "_testId": "urn:uuid:a1997f1e-8451-499f-b0ef-5f68fe84c034", - "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." - }, - "_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": 41649, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 69, + "duration": 64, "state": "passed", "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 }", - "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": "I5sQwd-elvbwnnYVG_wGF", - "ctx": null, - "_testId": "urn:uuid:549a550d-609f-4231-90b2-eed7074c92b3", - "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." - }, - "_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": 42872, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 189, - "state": "passed", - "speed": "slow" } ] + } + ] + }, + { + "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": "44S12i-2051CZAKzGfMqm", + "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": 42965, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 2, + "_error": null }, { - "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": "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, - "_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": "8FUVhOgQKJ4jYmejg3oJ5", - "ctx": null, - "_testId": "urn:uuid:5c13973f-b623-40dd-81b0-04df5635b2ec", - "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": 16488, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 62, - "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 }", - "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": "4rMcTf82al4NVv_78CupS", - "ctx": null, - "_testId": "urn:uuid:7a5a0ded-ce37-4250-a748-222b317e23ce", - "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." - }, - "_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": 22101, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 653, - "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 }", - "async": 0, - "sync": true, - "_timeout": 15000, + "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": "44S12i-2051CZAKzGfMqm", + "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": 42966, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 30, + "_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": "44S12i-2051CZAKzGfMqm", + "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": 42996, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 191, + "_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": "44S12i-2051CZAKzGfMqm", + "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": 43187, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 662, + "_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": "44S12i-2051CZAKzGfMqm", + "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": 43849, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 299, + "_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": "44S12i-2051CZAKzGfMqm", + "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": 44147, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 94, + "_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": "44S12i-2051CZAKzGfMqm", + "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": 44242, + "_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": "44S12i-2051CZAKzGfMqm", + "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": 44306, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 38, + "_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": "44S12i-2051CZAKzGfMqm", + "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": 44343, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 59, + "_error": null + } + ], + "_afterEach": [], + "_afterAll": [], + "_timeout": 15000, + "_slow": 75, + "_bail": false, + "_onlyTests": [], + "_onlySuites": [], + "delayed": false, + "parent": "KNMcPDiuK13Rs1MYKXVc0", + "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:6d0e051a-e4ff-4973-8b25-83f9317786c8", + "columns": [ + "ACA-py", + "apicatalog.com", + "Danube Tech", + "Digital Bazaar", + "EWF", + "LearnCard", + "SpruceID", + "Trinsic" + ], + "rows": [ + { + "id": "ACA-py", + "cells": [ + { + "type": "test", + "title": "ACA-py should verify ACA-py", + "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/20-verify.js", - "parent": "ouesj07FQZNyOL7t06-X-", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", + "parent": "44S12i-2051CZAKzGfMqm", "ctx": null, - "_testId": "urn:uuid:058a2dd5-29cb-4b37-93a9-bfb8b70556f9", - "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." - }, + "_testId": "urn:uuid:f01761c6-f773-4121-ad38-0d3c2981d43a", "_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": { + "rowId": "ACA-py", + "columnId": "ACA-py" + }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 27922, + "_idleStart": 44403, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 45, + "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": "apicatalog.com should verify ACA-py", + "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, @@ -26151,70 +21187,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": "KEnA8DBEVxZnIEqHqG8ny", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", + "parent": "44S12i-2051CZAKzGfMqm", "ctx": null, - "_testId": "urn:uuid:8401b0cd-7c5b-401b-ab1e-39c24365e2e5", - "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." - }, + "_testId": "urn:uuid:6ee18418-364c-464d-ae66-3b0d1ad8e5ff", "_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": 29953, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 86, - "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 }", - "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": "XD2-EVL18dB-hOt8puHrL", - "ctx": null, - "_testId": "urn:uuid:6693215f-2c58-4134-b7eb-f178d772cf11", "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": "ACA-py", + "columnId": "apicatalog.com" }, - "_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": 40042, + "_idleStart": 44445, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 67, + "duration": 58, "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": "Danube Tech should verify ACA-py", + "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, @@ -26223,34 +21222,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": "8sPgtTPQiHtoLikfIzMnw", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", + "parent": "44S12i-2051CZAKzGfMqm", "ctx": null, - "_testId": "urn:uuid:52d522d7-a18a-448a-8728-c309b740cc72", - "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." - }, + "_testId": "urn:uuid:806d249e-79cc-4253-adb8-924a0da21ee3", "_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": { + "rowId": "ACA-py", + "columnId": "Danube Tech" + }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 41153, + "_idleStart": 44503, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 29, + "duration": 433, "state": "passed", - "speed": "fast" + "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": "Digital Bazaar should verify ACA-py", + "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, @@ -26259,34 +21257,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": "I8HfQUCby8c6rnnhicBqw", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", + "parent": "44S12i-2051CZAKzGfMqm", "ctx": null, - "_testId": "urn:uuid:0eb7a4c1-eff5-464f-b9c3-33320b9e6885", - "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." - }, + "_testId": "urn:uuid:6366e1b6-5cf9-4248-aaa6-1e6c5b251223", "_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": { + "rowId": "ACA-py", + "columnId": "Digital Bazaar" + }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 41718, + "_idleStart": 44936, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 25, + "duration": 52, "state": "passed", - "speed": "fast" + "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": "EWF should verify ACA-py", + "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, @@ -26295,76 +21292,154 @@ "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": "I5sQwd-elvbwnnYVG_wGF", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", + "parent": "44S12i-2051CZAKzGfMqm", "ctx": null, - "_testId": "urn:uuid:327b2497-f093-4fc4-97dd-dcb8059e81ba", - "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." - }, + "_testId": "urn:uuid:4c5d37c5-4f5d-4926-ba8b-84a29b71219b", "_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": 43062, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 30, - "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://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": "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 await verificationFail({\n credential: credentials.clone('invalidCreated'),\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": "8FUVhOgQKJ4jYmejg3oJ5", - "ctx": null, - "_testId": "urn:uuid:dc51809c-a9c0-4fa1-bca6-ffe31d4f0c09", "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": "ACA-py", + "columnId": "EWF" }, - "_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": 16550, + "_idleStart": 44988, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 50, - "state": "passed", - "speed": "medium" + "duration": 102, + "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:778708e9-c476-4b3d-bfb9-5c0a4663e930\",\"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-22T05:02:19+00:00\",\"proofValue\":\"zHWT9ZNKjsbA49T8U5eGz8UQAkmNa9e2MFhc59mV6Yhmaza7q5zLdu1KTc684stmf1sMbmt2DrLZSsEwvXryJMGB\"}},\"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:778708e9-c476-4b3d-bfb9-5c0a4663e930", + "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-22T05:02:19+00:00", + "proofValue": "zHWT9ZNKjsbA49T8U5eGz8UQAkmNa9e2MFhc59mV6Yhmaza7q5zLdu1KTc684stmf1sMbmt2DrLZSsEwvXryJMGB" + } + }, + "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": { + "checks": [ + "proof" + ], + "warnings": [], + "errors": [ + "signature error: Verification equation was not satisfied" + ] + } + }, + "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": "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 await verificationFail({\n credential: credentials.clone('invalidCreated'),\n verifier\n });\n }", + "title": "LearnCard should verify ACA-py", + "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, @@ -26373,34 +21448,155 @@ "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": "4rMcTf82al4NVv_78CupS", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", + "parent": "44S12i-2051CZAKzGfMqm", "ctx": null, - "_testId": "urn:uuid:5ee8efff-f0aa-4611-ba57-f3171966fe26", - "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:13f1b298-573d-4ff2-90e9-d3a104c1345d", "_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": { + "rowId": "ACA-py", + "columnId": "LearnCard" + }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 22754, + "_idleStart": 45090, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 655, - "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 await verificationFail({\n credential: credentials.clone('invalidCreated'),\n verifier\n });\n }", + "duration": 75, + "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:778708e9-c476-4b3d-bfb9-5c0a4663e930\",\"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-22T05:02:19+00:00\",\"proofValue\":\"zHWT9ZNKjsbA49T8U5eGz8UQAkmNa9e2MFhc59mV6Yhmaza7q5zLdu1KTc684stmf1sMbmt2DrLZSsEwvXryJMGB\"}},\"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:778708e9-c476-4b3d-bfb9-5c0a4663e930", + "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-22T05:02:19+00:00", + "proofValue": "zHWT9ZNKjsbA49T8U5eGz8UQAkmNa9e2MFhc59mV6Yhmaza7q5zLdu1KTc684stmf1sMbmt2DrLZSsEwvXryJMGB" + } + }, + "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": { + "checks": [ + "proof", + "expiration" + ], + "warnings": [], + "errors": [ + "signature error: Verification equation was not satisfied" + ] + } + }, + "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 ACA-py", + "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, @@ -26409,34 +21605,145 @@ "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": "ouesj07FQZNyOL7t06-X-", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", + "parent": "44S12i-2051CZAKzGfMqm", "ctx": null, - "_testId": "urn:uuid:c9b98c54-b787-4455-92d8-ce2319f9b069", - "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." - }, + "_testId": "urn:uuid:56ddb97d-3504-4539-8126-d7511951c898", "_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": { + "rowId": "ACA-py", + "columnId": "SpruceID" + }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 27967, + "_idleStart": 45167, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 59, - "state": "passed", - "speed": "medium" + "duration": 42, + "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:778708e9-c476-4b3d-bfb9-5c0a4663e930\",\"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-22T05:02:19+00:00\",\"proofValue\":\"zHWT9ZNKjsbA49T8U5eGz8UQAkmNa9e2MFhc59mV6Yhmaza7q5zLdu1KTc684stmf1sMbmt2DrLZSsEwvXryJMGB\"}},\"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:778708e9-c476-4b3d-bfb9-5c0a4663e930", + "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-22T05:02:19+00:00", + "proofValue": "zHWT9ZNKjsbA49T8U5eGz8UQAkmNa9e2MFhc59mV6Yhmaza7q5zLdu1KTc684stmf1sMbmt2DrLZSsEwvXryJMGB" + } + }, + "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": "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 await verificationFail({\n credential: credentials.clone('invalidCreated'),\n verifier\n });\n }", + "title": "Trinsic should verify ACA-py", + "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, @@ -26445,292 +21752,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": "KEnA8DBEVxZnIEqHqG8ny", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", + "parent": "44S12i-2051CZAKzGfMqm", "ctx": null, - "_testId": "urn:uuid:84261a48-9018-43f1-aaf6-1cbff7f21ac0", - "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." - }, + "_testId": "urn:uuid:4be0eff3-89ba-4ec8-993c-f904fa72eb5b", "_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": { + "rowId": "ACA-py", + "columnId": "Trinsic" + }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 30040, + "_idleStart": 45209, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 86, - "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 await verificationFail({\n credential: credentials.clone('invalidCreated'),\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": "XD2-EVL18dB-hOt8puHrL", - "ctx": null, - "_testId": "urn:uuid:6a4661a6-b909-4bc0-bfa8-5d2b66d19b5c", - "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." - }, - "_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": 40110, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 73, + "duration": 47, "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 await verificationFail({\n credential: credentials.clone('invalidCreated'),\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": "8sPgtTPQiHtoLikfIzMnw", - "ctx": null, - "_testId": "urn:uuid:70cc3c77-f985-4952-bd63-defa3e0b72aa", - "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://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": 41182, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 32, - "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 await verificationFail({\n credential: credentials.clone('invalidCreated'),\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": "I8HfQUCby8c6rnnhicBqw", - "ctx": null, - "_testId": "urn:uuid:f7457b2a-2d0c-4c03-a646-03e3c8ce7f38", - "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://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": 41744, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 20, - "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 await verificationFail({\n credential: credentials.clone('invalidCreated'),\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": "I5sQwd-elvbwnnYVG_wGF", - "ctx": null, - "_testId": "urn:uuid:e0410407-335d-44ab-8b23-5a59e99fe9ca", - "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, - "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": 43092, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 31, - "state": "passed", - "speed": "fast" } ] }, { - "id": "If present (expires), 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=If%20present%2C%20it%20MUST%20be%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": "apicatalog.com", "cells": [ { "type": "test", - "title": "If present (expires), 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": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=If%20present%2C%20it%20MUST%20be%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 await verificationFail({\n credential: credentials.clone('invalidExpires'),\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": "8FUVhOgQKJ4jYmejg3oJ5", - "ctx": null, - "_testId": "urn:uuid:64cfcd3a-32e5-4a54-b984-4e18c1305fc0", - "cell": { - "columnId": "apicatalog.com", - "rowId": "If present (expires), 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=If%20present%2C%20it%20MUST%20be%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": 16600, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 56, - "state": "passed", - "speed": "medium" - }, - { - "type": "test", - "title": "If present (expires), 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": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=If%20present%2C%20it%20MUST%20be%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 await verificationFail({\n credential: credentials.clone('invalidExpires'),\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": "4rMcTf82al4NVv_78CupS", - "ctx": null, - "_testId": "urn:uuid:9d995ac3-bbe4-439e-8e2f-23cf57093f85", - "cell": { - "columnId": "Danube Tech", - "rowId": "If present (expires), 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=If%20present%2C%20it%20MUST%20be%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": 23409, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 690, - "state": "passed", - "speed": "slow" - }, - { - "type": "test", - "title": "If present (expires), 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": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=If%20present%2C%20it%20MUST%20be%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 await verificationFail({\n credential: credentials.clone('invalidExpires'),\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": "ouesj07FQZNyOL7t06-X-", - "ctx": null, - "_testId": "urn:uuid:8d2448ca-09f9-4e20-bb6e-6358d94e3403", - "cell": { - "columnId": "Digital Bazaar", - "rowId": "If present (expires), 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=If%20present%2C%20it%20MUST%20be%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": 28027, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 46, - "state": "passed", - "speed": "medium" - }, - { - "type": "test", - "title": "If present (expires), 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": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=If%20present%2C%20it%20MUST%20be%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 await verificationFail({\n credential: credentials.clone('invalidExpires'),\n verifier\n });\n }", + "title": "ACA-py 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, "_timeout": 15000, @@ -26739,217 +21792,30 @@ "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": "KEnA8DBEVxZnIEqHqG8ny", + "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", + "parent": "44S12i-2051CZAKzGfMqm", "ctx": null, - "_testId": "urn:uuid:903022ef-fe8a-4bdd-bbc2-71a45a7b8026", - "cell": { - "columnId": "EWF", - "rowId": "If present (expires), 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." - }, + "_testId": "urn:uuid:b4995c61-4231-4299-a42c-1d91b1b0b254", "_events": {}, "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=If%20present%2C%20it%20MUST%20be%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": 30126, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 88, - "state": "passed", - "speed": "slow" - }, - { - "type": "test", - "title": "If present (expires), 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": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=If%20present%2C%20it%20MUST%20be%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 await verificationFail({\n credential: credentials.clone('invalidExpires'),\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": "XD2-EVL18dB-hOt8puHrL", - "ctx": null, - "_testId": "urn:uuid:872a9cc8-8979-4002-9b86-a4a3d91544bd", "cell": { - "columnId": "LearnCard", - "rowId": "If present (expires), 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": "apicatalog.com", + "columnId": "ACA-py" }, - "_events": {}, - "_eventsCount": 1, - "link": "https://w3c.github.io/vc-data-integrity/#proofs:~:text=If%20present%2C%20it%20MUST%20be%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": 40183, + "_idleStart": 45257, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 64, - "state": "passed", - "speed": "medium" - }, - { - "type": "test", - "title": "If present (expires), 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": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=If%20present%2C%20it%20MUST%20be%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 await verificationFail({\n credential: credentials.clone('invalidExpires'),\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": "8sPgtTPQiHtoLikfIzMnw", - "ctx": null, - "_testId": "urn:uuid:6d420b1a-4cfd-41b9-aca2-9af7b9e07370", - "cell": { - "columnId": "OpSecId", - "rowId": "If present (expires), 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=If%20present%2C%20it%20MUST%20be%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": 41214, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 31, - "state": "passed", - "speed": "fast" - }, - { - "type": "test", - "title": "If present (expires), 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": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=If%20present%2C%20it%20MUST%20be%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 await verificationFail({\n credential: credentials.clone('invalidExpires'),\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": "I8HfQUCby8c6rnnhicBqw", - "ctx": null, - "_testId": "urn:uuid:61b653a8-532a-4698-b877-0ef1d8ca891a", - "cell": { - "columnId": "SpruceID", - "rowId": "If present (expires), 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=If%20present%2C%20it%20MUST%20be%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": 41764, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 32, - "state": "passed", - "speed": "fast" - }, - { - "type": "test", - "title": "If present (expires), 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": "async function() {\n this.test.link = 'https://w3c.github.io/vc-data-integrity/#proofs:~:text=If%20present%2C%20it%20MUST%20be%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 await verificationFail({\n credential: credentials.clone('invalidExpires'),\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": "I5sQwd-elvbwnnYVG_wGF", - "ctx": null, - "_testId": "urn:uuid:85c045ca-4952-411b-ac7c-57f5a94fec34", - "cell": { - "columnId": "Trinsic", - "rowId": "If present (expires), 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=If%20present%2C%20it%20MUST%20be%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": 43124, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 54, - "state": "passed", - "speed": "medium" - } - ] - }, - { - "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": "(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 verificationSuccess({\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": "8FUVhOgQKJ4jYmejg3oJ5", - "ctx": null, - "_testId": "urn:uuid:1d4ad49d-7b93-46f4-b4b2-bb964751d3dc", - "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": 16656, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 61, + "duration": 25, "state": "failed", "err": { "name": "AssertionError", - "message": "Expected no error from verifier.: expected HTTPError: Request failed with status cod… { …(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": {}, @@ -26957,187 +21823,35 @@ "options": { "credentials": "same-origin", "headers": {}, - "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",\"https://w3id.org/security/data-integrity/v2\"],\"id\":\"urn:uuid:86294362-4254-4f36-854f-3952fe42555d\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"type\":\"DataIntegrityProof\",\"created\":\"2024-09-15T05:01:54\",\"verificationMethod\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"cryptosuite\":\"eddsa-2022\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z28QfeN92FuPz6xBFXY5PF2i3Y5BNGdHyoBtE3B3Ac9YqhDuGVtt8NxwAxcrwTEcSKWsPXiNZDmqE74w3TcV9H1N8\"}},\"options\":{}}", + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",\"https://w3id.org/security/suites/ed25519-2020/v1\"],\"id\":\"urn:uuid:33a2ef26-21eb-45ed-81af-9e923d5cd594\",\"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-22T05:02:19Z\",\"proofValue\":\"z3wBGp8aphz6iyc7t1RBrJpisZYLZbXzbWMe5tYMPqVLZ3BtmFmPWZtSWWibc6uEQFqNLcHoyD7MxNJvme4qLyQW3\"}},\"options\":{\"checks\":[\"proof\"]}}", "method": "POST", "json": { "verifiableCredential": { "@context": [ "https://www.w3.org/2018/credentials/v1", - "https://w3id.org/security/data-integrity/v2" - ], - "id": "urn:uuid:86294362-4254-4f36-854f-3952fe42555d", - "type": [ - "VerifiableCredential" + "https://w3id.org/security/suites/ed25519-2020/v1" ], - "issuer": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", + "id": "urn:uuid:33a2ef26-21eb-45ed-81af-9e923d5cd594", + "type": "VerifiableCredential", + "issuer": "https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020", "issuanceDate": "2020-03-16T22:37:26.544Z", "credentialSubject": { "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" }, "proof": { - "type": "DataIntegrityProof", - "created": "2024-09-15T05:01:54", - "verificationMethod": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "cryptosuite": "eddsa-2022", + "verificationMethod": "did:key:z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y#z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y", + "type": "Ed25519Signature2020", "proofPurpose": "assertionMethod", - "proofValue": "z28QfeN92FuPz6xBFXY5PF2i3Y5BNGdHyoBtE3B3Ac9YqhDuGVtt8NxwAxcrwTEcSKWsPXiNZDmqE74w3TcV9H1N8" + "created": "2024-09-22T05:02:19Z", + "proofValue": "z3wBGp8aphz6iyc7t1RBrJpisZYLZbXzbWMe5tYMPqVLZ3BtmFmPWZtSWWibc6uEQFqNLcHoyD7MxNJvme4qLyQW3" } }, - "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": [] + "checks": [ + "proof" + ] } }, - "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_PROOF_CONFIGURATION" - ], - "warnings": [], - "errors": [] - } - }, - "operator": "notStrictEqual", - "stack": "AssertionError: Expected no error from verifier.: 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 verificationSuccess (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/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/node_modules/data-integrity-test-suite-assertion/suites/verify.js:191:9)" - } - }, - { - "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 verificationSuccess({\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": "4rMcTf82al4NVv_78CupS", - "ctx": null, - "_testId": "urn:uuid:aa5d71c0-ebc7-436e-b810-2f7295d53f8e", - "cell": { - "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": 24100, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 652, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected no error from verifier.: 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/data-integrity/v2\"],\"id\":\"urn:uuid:86294362-4254-4f36-854f-3952fe42555d\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"type\":\"DataIntegrityProof\",\"created\":\"2024-09-15T05:01:54\",\"verificationMethod\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"cryptosuite\":\"eddsa-2022\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z28QfeN92FuPz6xBFXY5PF2i3Y5BNGdHyoBtE3B3Ac9YqhDuGVtt8NxwAxcrwTEcSKWsPXiNZDmqE74w3TcV9H1N8\"}},\"options\":{}}", - "method": "POST", - "json": { - "verifiableCredential": { - "@context": [ - "https://www.w3.org/2018/credentials/v1", - "https://w3id.org/security/data-integrity/v2" - ], - "id": "urn:uuid:86294362-4254-4f36-854f-3952fe42555d", - "type": [ - "VerifiableCredential" - ], - "issuer": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "issuanceDate": "2020-03-16T22:37:26.544Z", - "credentialSubject": { - "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" - }, - "proof": { - "type": "DataIntegrityProof", - "created": "2024-09-15T05:01:54", - "verificationMethod": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "cryptosuite": "eddsa-2022", - "proofPurpose": "assertionMethod", - "proofValue": "z28QfeN92FuPz6xBFXY5PF2i3Y5BNGdHyoBtE3B3Ac9YqhDuGVtt8NxwAxcrwTEcSKWsPXiNZDmqE74w3TcV9H1N8" - } - }, - "options": {} - }, "agent": { "_events": {}, "_eventsCount": 2, @@ -27192,6701 +21906,37 @@ ], "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": [ - "proof" - ] - } - }, - "operator": "notStrictEqual", - "stack": "AssertionError: Expected no error from verifier.: 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 verificationSuccess (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/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/node_modules/data-integrity-test-suite-assertion/suites/verify.js:191:9)" - } - }, - { - "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 verificationSuccess({\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": "ouesj07FQZNyOL7t06-X-", - "ctx": null, - "_testId": "urn:uuid:993d68b7-56c2-4c6d-9003-cbf79c965996", - "cell": { - "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": 28073, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 45, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected no error from verifier.: 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", - "https://w3id.org/security/data-integrity/v2" - ], - "id": "urn:uuid:86294362-4254-4f36-854f-3952fe42555d", - "type": [ - "VerifiableCredential" - ], - "issuer": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "issuanceDate": "2020-03-16T22:37:26.544Z", - "credentialSubject": { - "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" - }, - "proof": { - "type": "DataIntegrityProof", - "created": "2024-09-15T05:01:54", - "verificationMethod": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "cryptosuite": "eddsa-2022", - "proofPurpose": "assertionMethod", - "proofValue": "z28QfeN92FuPz6xBFXY5PF2i3Y5BNGdHyoBtE3B3Ac9YqhDuGVtt8NxwAxcrwTEcSKWsPXiNZDmqE74w3TcV9H1N8" - } - }, - "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/data-integrity/v2\"],\"id\":\"urn:uuid:86294362-4254-4f36-854f-3952fe42555d\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"type\":\"DataIntegrityProof\",\"created\":\"2024-09-15T05:01:54\",\"verificationMethod\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"cryptosuite\":\"eddsa-2022\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z28QfeN92FuPz6xBFXY5PF2i3Y5BNGdHyoBtE3B3Ac9YqhDuGVtt8NxwAxcrwTEcSKWsPXiNZDmqE74w3TcV9H1N8\"}},\"options\":{\"checks\":[\"proof\"]}}" - }, - "name": "HTTPError", - "requestUrl": "https://vc2.veresverifier.dev/verifiers/z19w7KofwvE2nkJeRVLp8NDxz/credentials/verify", - "status": 400, - "data": { - "verified": false, - "results": [ - { - "proof": { - "@context": [ - "https://www.w3.org/2018/credentials/v1", - "https://w3id.org/security/data-integrity/v2" - ], - "type": "DataIntegrityProof", - "created": "2024-09-15T05:01:54", - "verificationMethod": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "cryptosuite": "eddsa-2022", - "proofPurpose": "assertionMethod", - "proofValue": "z28QfeN92FuPz6xBFXY5PF2i3Y5BNGdHyoBtE3B3Ac9YqhDuGVtt8NxwAxcrwTEcSKWsPXiNZDmqE74w3TcV9H1N8" - }, - "verified": false, - "error": { - "name": "jsonld.SyntaxError", - "details": { - "code": "protected term redefinition", - "context": { - "id": "@id", - "type": "@type", - "@protected": true, - "proof": { - "@id": "https://w3id.org/security#proof", - "@type": "@id", - "@container": "@graph" - }, - "DataIntegrityProof": { - "@id": "https://w3id.org/security#DataIntegrityProof", - "@context": { - "@protected": true, - "id": "@id", - "type": "@type", - "challenge": "https://w3id.org/security#challenge", - "created": { - "@id": "http://purl.org/dc/terms/created", - "@type": "http://www.w3.org/2001/XMLSchema#dateTime" - }, - "domain": "https://w3id.org/security#domain", - "expires": { - "@id": "https://w3id.org/security#expiration", - "@type": "http://www.w3.org/2001/XMLSchema#dateTime" - }, - "nonce": "https://w3id.org/security#nonce", - "proofPurpose": { - "@id": "https://w3id.org/security#proofPurpose", - "@type": "@vocab", - "@context": { - "@protected": true, - "id": "@id", - "type": "@type", - "assertionMethod": { - "@id": "https://w3id.org/security#assertionMethod", - "@type": "@id", - "@container": "@set" - }, - "authentication": { - "@id": "https://w3id.org/security#authenticationMethod", - "@type": "@id", - "@container": "@set" - }, - "capabilityInvocation": { - "@id": "https://w3id.org/security#capabilityInvocationMethod", - "@type": "@id", - "@container": "@set" - }, - "capabilityDelegation": { - "@id": "https://w3id.org/security#capabilityDelegationMethod", - "@type": "@id", - "@container": "@set" - }, - "keyAgreement": { - "@id": "https://w3id.org/security#keyAgreementMethod", - "@type": "@id", - "@container": "@set" - } - } - }, - "cryptosuite": "https://w3id.org/security#cryptosuite", - "proofValue": { - "@id": "https://w3id.org/security#proofValue", - "@type": "https://w3id.org/security#multibase" - }, - "verificationMethod": { - "@id": "https://w3id.org/security#verificationMethod", - "@type": "@id" - } - } - } - }, - "term": "DataIntegrityProof" - }, - "message": "Invalid JSON-LD syntax; tried to redefine a protected term." - } - } - ], - "error": { - "name": "VerificationError", - "errors": [ - { - "name": "jsonld.SyntaxError", - "details": { - "code": "protected term redefinition", - "context": { - "id": "@id", - "type": "@type", - "@protected": true, - "proof": { - "@id": "https://w3id.org/security#proof", - "@type": "@id", - "@container": "@graph" - }, - "DataIntegrityProof": { - "@id": "https://w3id.org/security#DataIntegrityProof", - "@context": { - "@protected": true, - "id": "@id", - "type": "@type", - "challenge": "https://w3id.org/security#challenge", - "created": { - "@id": "http://purl.org/dc/terms/created", - "@type": "http://www.w3.org/2001/XMLSchema#dateTime" - }, - "domain": "https://w3id.org/security#domain", - "expires": { - "@id": "https://w3id.org/security#expiration", - "@type": "http://www.w3.org/2001/XMLSchema#dateTime" - }, - "nonce": "https://w3id.org/security#nonce", - "proofPurpose": { - "@id": "https://w3id.org/security#proofPurpose", - "@type": "@vocab", - "@context": { - "@protected": true, - "id": "@id", - "type": "@type", - "assertionMethod": { - "@id": "https://w3id.org/security#assertionMethod", - "@type": "@id", - "@container": "@set" - }, - "authentication": { - "@id": "https://w3id.org/security#authenticationMethod", - "@type": "@id", - "@container": "@set" - }, - "capabilityInvocation": { - "@id": "https://w3id.org/security#capabilityInvocationMethod", - "@type": "@id", - "@container": "@set" - }, - "capabilityDelegation": { - "@id": "https://w3id.org/security#capabilityDelegationMethod", - "@type": "@id", - "@container": "@set" - }, - "keyAgreement": { - "@id": "https://w3id.org/security#keyAgreementMethod", - "@type": "@id", - "@container": "@set" - } - } - }, - "cryptosuite": "https://w3id.org/security#cryptosuite", - "proofValue": { - "@id": "https://w3id.org/security#proofValue", - "@type": "https://w3id.org/security#multibase" - }, - "verificationMethod": { - "@id": "https://w3id.org/security#verificationMethod", - "@type": "@id" - } - } - } - }, - "term": "DataIntegrityProof" - }, - "message": "Invalid JSON-LD syntax; tried to redefine a protected term.", - "stack": "jsonld.SyntaxError: Invalid JSON-LD syntax; tried to redefine a protected term.\n at api.createTermDefinition (/home/node/app/node_modules/jsonld/lib/context.js:988:13)\n at api.process (/home/node/app/node_modules/jsonld/lib/context.js:399:11)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async api.expand (/home/node/app/node_modules/jsonld/lib/expand.js:214:17)\n at async jsonld.expand (/home/node/app/node_modules/jsonld/lib/jsonld.js:322:18)\n at async jsonld.toRDF (/home/node/app/node_modules/jsonld/lib/jsonld.js:687:16)\n at async jsonld.normalize.jsonld.canonize (/home/node/app/node_modules/jsonld/lib/jsonld.js:589:19)" - } - ], - "message": "Verification error(s)." - }, - "checks": [ - { - "check": [ - "proof" - ], - "id": "urn:uuid:86294362-4254-4f36-854f-3952fe42555d", - "error": "Invalid JSON-LD syntax; tried to redefine a protected term.", - "verificationMethod": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT" - } - ] - } - }, - "operator": "notStrictEqual", - "stack": "AssertionError: Expected no error from verifier.: 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 verificationSuccess (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/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/node_modules/data-integrity-test-suite-assertion/suites/verify.js:191:9)" - } - }, - { - "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 verificationSuccess({\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": "KEnA8DBEVxZnIEqHqG8ny", - "ctx": null, - "_testId": "urn:uuid:9a02bc57-9609-4787-af35-90a1497744de", - "cell": { - "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": 30214, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 87, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected no error from verifier.: expected HTTPError: @spruceid/didkit-wasm-node.ver… { …(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/data-integrity/v2\"],\"id\":\"urn:uuid:86294362-4254-4f36-854f-3952fe42555d\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"type\":\"DataIntegrityProof\",\"created\":\"2024-09-15T05:01:54\",\"verificationMethod\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"cryptosuite\":\"eddsa-2022\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z28QfeN92FuPz6xBFXY5PF2i3Y5BNGdHyoBtE3B3Ac9YqhDuGVtt8NxwAxcrwTEcSKWsPXiNZDmqE74w3TcV9H1N8\"}},\"options\":{}}", - "method": "POST", - "json": { - "verifiableCredential": { - "@context": [ - "https://www.w3.org/2018/credentials/v1", - "https://w3id.org/security/data-integrity/v2" - ], - "id": "urn:uuid:86294362-4254-4f36-854f-3952fe42555d", - "type": [ - "VerifiableCredential" - ], - "issuer": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "issuanceDate": "2020-03-16T22:37:26.544Z", - "credentialSubject": { - "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" - }, - "proof": { - "type": "DataIntegrityProof", - "created": "2024-09-15T05:01:54", - "verificationMethod": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "cryptosuite": "eddsa-2022", - "proofPurpose": "assertionMethod", - "proofValue": "z28QfeN92FuPz6xBFXY5PF2i3Y5BNGdHyoBtE3B3Ac9YqhDuGVtt8NxwAxcrwTEcSKWsPXiNZDmqE74w3TcV9H1N8" - } - }, - "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/verify", - "status": 400, - "data": { - "message": "@spruceid/didkit-wasm-node.verifyCredential error: data did not match any variant of untagged enum OneOrMany at line 1 column 746", - "error": "Bad Request", - "statusCode": 400 - } - }, - "operator": "notStrictEqual", - "stack": "AssertionError: Expected no error from verifier.: expected HTTPError: @spruceid/didkit-wasm-node.ver… { …(6) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at verificationSuccess (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/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/node_modules/data-integrity-test-suite-assertion/suites/verify.js:191:9)" - } - }, - { - "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 verificationSuccess({\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": "XD2-EVL18dB-hOt8puHrL", - "ctx": null, - "_testId": "urn:uuid:600b4ecc-07cc-4f43-8b66-f6bad946c8f0", - "cell": { - "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": 40247, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 72, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected no error from verifier.: 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/data-integrity/v2\"],\"id\":\"urn:uuid:86294362-4254-4f36-854f-3952fe42555d\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"type\":\"DataIntegrityProof\",\"created\":\"2024-09-15T05:01:54\",\"verificationMethod\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"cryptosuite\":\"eddsa-2022\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z28QfeN92FuPz6xBFXY5PF2i3Y5BNGdHyoBtE3B3Ac9YqhDuGVtt8NxwAxcrwTEcSKWsPXiNZDmqE74w3TcV9H1N8\"}},\"options\":{}}", - "method": "POST", - "json": { - "verifiableCredential": { - "@context": [ - "https://www.w3.org/2018/credentials/v1", - "https://w3id.org/security/data-integrity/v2" - ], - "id": "urn:uuid:86294362-4254-4f36-854f-3952fe42555d", - "type": [ - "VerifiableCredential" - ], - "issuer": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "issuanceDate": "2020-03-16T22:37:26.544Z", - "credentialSubject": { - "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" - }, - "proof": { - "type": "DataIntegrityProof", - "created": "2024-09-15T05:01:54", - "verificationMethod": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "cryptosuite": "eddsa-2022", - "proofPurpose": "assertionMethod", - "proofValue": "z28QfeN92FuPz6xBFXY5PF2i3Y5BNGdHyoBtE3B3Ac9YqhDuGVtt8NxwAxcrwTEcSKWsPXiNZDmqE74w3TcV9H1N8" - } - }, - "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/verify", - "status": 400, - "data": "Invalid input: data did not match any variant of untagged enum OneOrMany at line 1 column 746" - }, - "operator": "notStrictEqual", - "stack": "AssertionError: Expected no error from verifier.: 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 verificationSuccess (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/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/node_modules/data-integrity-test-suite-assertion/suites/verify.js:191:9)" - } - }, - { - "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 verificationSuccess({\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": "8sPgtTPQiHtoLikfIzMnw", - "ctx": null, - "_testId": "urn:uuid:ee575c3d-4b2f-4342-a8df-44922141feea", - "cell": { - "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": 41245, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 33, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected no error from verifier.: expected HTTPError: Invalid cryptosuite { …(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/data-integrity/v2\"],\"id\":\"urn:uuid:86294362-4254-4f36-854f-3952fe42555d\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"type\":\"DataIntegrityProof\",\"created\":\"2024-09-15T05:01:54\",\"verificationMethod\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"cryptosuite\":\"eddsa-2022\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z28QfeN92FuPz6xBFXY5PF2i3Y5BNGdHyoBtE3B3Ac9YqhDuGVtt8NxwAxcrwTEcSKWsPXiNZDmqE74w3TcV9H1N8\"}},\"options\":{}}", - "method": "POST", - "json": { - "verifiableCredential": { - "@context": [ - "https://www.w3.org/2018/credentials/v1", - "https://w3id.org/security/data-integrity/v2" - ], - "id": "urn:uuid:86294362-4254-4f36-854f-3952fe42555d", - "type": [ - "VerifiableCredential" - ], - "issuer": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "issuanceDate": "2020-03-16T22:37:26.544Z", - "credentialSubject": { - "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" - }, - "proof": { - "type": "DataIntegrityProof", - "created": "2024-09-15T05:01:54", - "verificationMethod": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "cryptosuite": "eddsa-2022", - "proofPurpose": "assertionMethod", - "proofValue": "z28QfeN92FuPz6xBFXY5PF2i3Y5BNGdHyoBtE3B3Ac9YqhDuGVtt8NxwAxcrwTEcSKWsPXiNZDmqE74w3TcV9H1N8" - } - }, - "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://agent.opsec.id/vc/credentials/verify", - "status": 400, - "data": { - "message": "Invalid cryptosuite" - } - }, - "operator": "notStrictEqual", - "stack": "AssertionError: Expected no error from verifier.: expected HTTPError: Invalid cryptosuite { …(6) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at verificationSuccess (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/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/node_modules/data-integrity-test-suite-assertion/suites/verify.js:191:9)" - } - }, - { - "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 verificationSuccess({\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": "I8HfQUCby8c6rnnhicBqw", - "ctx": null, - "_testId": "urn:uuid:45ddcf20-9cbe-4b18-ac26-570c5b71d8a1", - "cell": { - "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": 41796, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 29, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected no error from verifier.: 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/data-integrity/v2\"],\"id\":\"urn:uuid:86294362-4254-4f36-854f-3952fe42555d\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"type\":\"DataIntegrityProof\",\"created\":\"2024-09-15T05:01:54\",\"verificationMethod\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"cryptosuite\":\"eddsa-2022\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z28QfeN92FuPz6xBFXY5PF2i3Y5BNGdHyoBtE3B3Ac9YqhDuGVtt8NxwAxcrwTEcSKWsPXiNZDmqE74w3TcV9H1N8\"}},\"options\":{}}", - "method": "POST", - "json": { - "verifiableCredential": { - "@context": [ - "https://www.w3.org/2018/credentials/v1", - "https://w3id.org/security/data-integrity/v2" - ], - "id": "urn:uuid:86294362-4254-4f36-854f-3952fe42555d", - "type": [ - "VerifiableCredential" - ], - "issuer": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "issuanceDate": "2020-03-16T22:37:26.544Z", - "credentialSubject": { - "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" - }, - "proof": { - "type": "DataIntegrityProof", - "created": "2024-09-15T05:01:54", - "verificationMethod": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "cryptosuite": "eddsa-2022", - "proofPurpose": "assertionMethod", - "proofValue": "z28QfeN92FuPz6xBFXY5PF2i3Y5BNGdHyoBtE3B3Ac9YqhDuGVtt8NxwAxcrwTEcSKWsPXiNZDmqE74w3TcV9H1N8" - } - }, - "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.spruceid.xyz/credentials/verify", - "status": 400 - }, - "operator": "notStrictEqual", - "stack": "AssertionError: Expected no error from verifier.: 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 verificationSuccess (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/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/node_modules/data-integrity-test-suite-assertion/suites/verify.js:191:9)" - } - }, - { - "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 verificationSuccess({\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": "I5sQwd-elvbwnnYVG_wGF", - "ctx": null, - "_testId": "urn:uuid:198f2b73-d12e-4d92-b91a-203b807729e6", - "cell": { - "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": 43178, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 51, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected no error from verifier.: 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/data-integrity/v2\"],\"id\":\"urn:uuid:86294362-4254-4f36-854f-3952fe42555d\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"type\":\"DataIntegrityProof\",\"created\":\"2024-09-15T05:01:54\",\"verificationMethod\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"cryptosuite\":\"eddsa-2022\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z28QfeN92FuPz6xBFXY5PF2i3Y5BNGdHyoBtE3B3Ac9YqhDuGVtt8NxwAxcrwTEcSKWsPXiNZDmqE74w3TcV9H1N8\"}},\"options\":{}}", - "method": "POST", - "json": { - "verifiableCredential": { - "@context": [ - "https://www.w3.org/2018/credentials/v1", - "https://w3id.org/security/data-integrity/v2" - ], - "id": "urn:uuid:86294362-4254-4f36-854f-3952fe42555d", - "type": [ - "VerifiableCredential" - ], - "issuer": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "issuanceDate": "2020-03-16T22:37:26.544Z", - "credentialSubject": { - "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" - }, - "proof": { - "type": "DataIntegrityProof", - "created": "2024-09-15T05:01:54", - "verificationMethod": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "cryptosuite": "eddsa-2022", - "proofPurpose": "assertionMethod", - "proofValue": "z28QfeN92FuPz6xBFXY5PF2i3Y5BNGdHyoBtE3B3Ac9YqhDuGVtt8NxwAxcrwTEcSKWsPXiNZDmqE74w3TcV9H1N8" - } - }, - "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://interop.connect.trinsic.cloud/vc-api/credentials/verify", - "status": 400 - }, - "operator": "notStrictEqual", - "stack": "AssertionError: Expected no error from verifier.: 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 verificationSuccess (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/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/node_modules/data-integrity-test-suite-assertion/suites/verify.js:191:9)" - } - } - ] - }, - { - "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": "(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 verificationSuccess({\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": "8FUVhOgQKJ4jYmejg3oJ5", - "ctx": null, - "_testId": "urn:uuid:19fc1003-6638-4a15-8fb3-a9af68c93fac", - "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": 16718, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 50, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected no error from verifier.: 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/data-integrity/v2\"],\"id\":\"urn:uuid:86294362-4254-4f36-854f-3952fe42555d\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"expires\":\"2024-09-15T05:01:54\",\"type\":\"DataIntegrityProof\",\"created\":\"2024-09-15T05:01:54Z\",\"verificationMethod\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"cryptosuite\":\"eddsa-2022\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z23aBpJZnxXpwPcaK5pmk6CM2yq5ZZddCxT6HSkRsPtSCJaAepRSpYetBdqxVdeCNLDv8FeayEfqwf6kvh46u4itb\"}},\"options\":{}}", - "method": "POST", - "json": { - "verifiableCredential": { - "@context": [ - "https://www.w3.org/2018/credentials/v1", - "https://w3id.org/security/data-integrity/v2" - ], - "id": "urn:uuid:86294362-4254-4f36-854f-3952fe42555d", - "type": [ - "VerifiableCredential" - ], - "issuer": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "issuanceDate": "2020-03-16T22:37:26.544Z", - "credentialSubject": { - "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" - }, - "proof": { - "expires": "2024-09-15T05:01:54", - "type": "DataIntegrityProof", - "created": "2024-09-15T05:01:54Z", - "verificationMethod": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "cryptosuite": "eddsa-2022", - "proofPurpose": "assertionMethod", - "proofValue": "z23aBpJZnxXpwPcaK5pmk6CM2yq5ZZddCxT6HSkRsPtSCJaAepRSpYetBdqxVdeCNLDv8FeayEfqwf6kvh46u4itb" - } - }, - "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/verify", - "status": 400, - "data": { - "checks": [ - "PROOF", - "INVALID_PROOF_CONFIGURATION" - ], - "warnings": [], - "errors": [] - } - }, - "operator": "notStrictEqual", - "stack": "AssertionError: Expected no error from verifier.: 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 verificationSuccess (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/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/node_modules/data-integrity-test-suite-assertion/suites/verify.js:199:9)" - } - }, - { - "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 verificationSuccess({\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": "4rMcTf82al4NVv_78CupS", - "ctx": null, - "_testId": "urn:uuid:a2238ad3-37f1-488d-a571-c117bcf40ad3", - "cell": { - "columnId": "Danube Tech", - "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": 24753, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 702, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected no error from verifier.: 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/data-integrity/v2\"],\"id\":\"urn:uuid:86294362-4254-4f36-854f-3952fe42555d\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"expires\":\"2024-09-15T05:01:54\",\"type\":\"DataIntegrityProof\",\"created\":\"2024-09-15T05:01:54Z\",\"verificationMethod\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"cryptosuite\":\"eddsa-2022\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z23aBpJZnxXpwPcaK5pmk6CM2yq5ZZddCxT6HSkRsPtSCJaAepRSpYetBdqxVdeCNLDv8FeayEfqwf6kvh46u4itb\"}},\"options\":{}}", - "method": "POST", - "json": { - "verifiableCredential": { - "@context": [ - "https://www.w3.org/2018/credentials/v1", - "https://w3id.org/security/data-integrity/v2" - ], - "id": "urn:uuid:86294362-4254-4f36-854f-3952fe42555d", - "type": [ - "VerifiableCredential" - ], - "issuer": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "issuanceDate": "2020-03-16T22:37:26.544Z", - "credentialSubject": { - "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" - }, - "proof": { - "expires": "2024-09-15T05:01:54", - "type": "DataIntegrityProof", - "created": "2024-09-15T05:01:54Z", - "verificationMethod": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "cryptosuite": "eddsa-2022", - "proofPurpose": "assertionMethod", - "proofValue": "z23aBpJZnxXpwPcaK5pmk6CM2yq5ZZddCxT6HSkRsPtSCJaAepRSpYetBdqxVdeCNLDv8FeayEfqwf6kvh46u4itb" - } - }, - "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://univerifier.io/1.0/credentials/verify", - "status": 400, - "data": { - "checks": [ - "proof" - ] - } - }, - "operator": "notStrictEqual", - "stack": "AssertionError: Expected no error from verifier.: 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 verificationSuccess (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/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/node_modules/data-integrity-test-suite-assertion/suites/verify.js:199:9)" - } - }, - { - "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 verificationSuccess({\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": "ouesj07FQZNyOL7t06-X-", - "ctx": null, - "_testId": "urn:uuid:1212330b-112e-4f13-ac2c-c92590452e5b", - "cell": { - "columnId": "Digital Bazaar", - "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": 28119, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 58, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected no error from verifier.: 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", - "https://w3id.org/security/data-integrity/v2" - ], - "id": "urn:uuid:86294362-4254-4f36-854f-3952fe42555d", - "type": [ - "VerifiableCredential" - ], - "issuer": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "issuanceDate": "2020-03-16T22:37:26.544Z", - "credentialSubject": { - "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" - }, - "proof": { - "expires": "2024-09-15T05:01:54", - "type": "DataIntegrityProof", - "created": "2024-09-15T05:01:54Z", - "verificationMethod": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "cryptosuite": "eddsa-2022", - "proofPurpose": "assertionMethod", - "proofValue": "z23aBpJZnxXpwPcaK5pmk6CM2yq5ZZddCxT6HSkRsPtSCJaAepRSpYetBdqxVdeCNLDv8FeayEfqwf6kvh46u4itb" - } - }, - "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/data-integrity/v2\"],\"id\":\"urn:uuid:86294362-4254-4f36-854f-3952fe42555d\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"expires\":\"2024-09-15T05:01:54\",\"type\":\"DataIntegrityProof\",\"created\":\"2024-09-15T05:01:54Z\",\"verificationMethod\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"cryptosuite\":\"eddsa-2022\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z23aBpJZnxXpwPcaK5pmk6CM2yq5ZZddCxT6HSkRsPtSCJaAepRSpYetBdqxVdeCNLDv8FeayEfqwf6kvh46u4itb\"}},\"options\":{\"checks\":[\"proof\"]}}" - }, - "name": "HTTPError", - "requestUrl": "https://vc2.veresverifier.dev/verifiers/z19w7KofwvE2nkJeRVLp8NDxz/credentials/verify", - "status": 400, - "data": { - "verified": false, - "results": [ - { - "proof": { - "@context": [ - "https://www.w3.org/2018/credentials/v1", - "https://w3id.org/security/data-integrity/v2" - ], - "expires": "2024-09-15T05:01:54", - "type": "DataIntegrityProof", - "created": "2024-09-15T05:01:54Z", - "verificationMethod": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "cryptosuite": "eddsa-2022", - "proofPurpose": "assertionMethod", - "proofValue": "z23aBpJZnxXpwPcaK5pmk6CM2yq5ZZddCxT6HSkRsPtSCJaAepRSpYetBdqxVdeCNLDv8FeayEfqwf6kvh46u4itb" - }, - "verified": false, - "error": { - "name": "jsonld.SyntaxError", - "details": { - "code": "protected term redefinition", - "context": { - "id": "@id", - "type": "@type", - "@protected": true, - "proof": { - "@id": "https://w3id.org/security#proof", - "@type": "@id", - "@container": "@graph" - }, - "DataIntegrityProof": { - "@id": "https://w3id.org/security#DataIntegrityProof", - "@context": { - "@protected": true, - "id": "@id", - "type": "@type", - "challenge": "https://w3id.org/security#challenge", - "created": { - "@id": "http://purl.org/dc/terms/created", - "@type": "http://www.w3.org/2001/XMLSchema#dateTime" - }, - "domain": "https://w3id.org/security#domain", - "expires": { - "@id": "https://w3id.org/security#expiration", - "@type": "http://www.w3.org/2001/XMLSchema#dateTime" - }, - "nonce": "https://w3id.org/security#nonce", - "proofPurpose": { - "@id": "https://w3id.org/security#proofPurpose", - "@type": "@vocab", - "@context": { - "@protected": true, - "id": "@id", - "type": "@type", - "assertionMethod": { - "@id": "https://w3id.org/security#assertionMethod", - "@type": "@id", - "@container": "@set" - }, - "authentication": { - "@id": "https://w3id.org/security#authenticationMethod", - "@type": "@id", - "@container": "@set" - }, - "capabilityInvocation": { - "@id": "https://w3id.org/security#capabilityInvocationMethod", - "@type": "@id", - "@container": "@set" - }, - "capabilityDelegation": { - "@id": "https://w3id.org/security#capabilityDelegationMethod", - "@type": "@id", - "@container": "@set" - }, - "keyAgreement": { - "@id": "https://w3id.org/security#keyAgreementMethod", - "@type": "@id", - "@container": "@set" - } - } - }, - "cryptosuite": "https://w3id.org/security#cryptosuite", - "proofValue": { - "@id": "https://w3id.org/security#proofValue", - "@type": "https://w3id.org/security#multibase" - }, - "verificationMethod": { - "@id": "https://w3id.org/security#verificationMethod", - "@type": "@id" - } - } - } - }, - "term": "DataIntegrityProof" - }, - "message": "Invalid JSON-LD syntax; tried to redefine a protected term." - } - } - ], - "error": { - "name": "VerificationError", - "errors": [ - { - "name": "jsonld.SyntaxError", - "details": { - "code": "protected term redefinition", - "context": { - "id": "@id", - "type": "@type", - "@protected": true, - "proof": { - "@id": "https://w3id.org/security#proof", - "@type": "@id", - "@container": "@graph" - }, - "DataIntegrityProof": { - "@id": "https://w3id.org/security#DataIntegrityProof", - "@context": { - "@protected": true, - "id": "@id", - "type": "@type", - "challenge": "https://w3id.org/security#challenge", - "created": { - "@id": "http://purl.org/dc/terms/created", - "@type": "http://www.w3.org/2001/XMLSchema#dateTime" - }, - "domain": "https://w3id.org/security#domain", - "expires": { - "@id": "https://w3id.org/security#expiration", - "@type": "http://www.w3.org/2001/XMLSchema#dateTime" - }, - "nonce": "https://w3id.org/security#nonce", - "proofPurpose": { - "@id": "https://w3id.org/security#proofPurpose", - "@type": "@vocab", - "@context": { - "@protected": true, - "id": "@id", - "type": "@type", - "assertionMethod": { - "@id": "https://w3id.org/security#assertionMethod", - "@type": "@id", - "@container": "@set" - }, - "authentication": { - "@id": "https://w3id.org/security#authenticationMethod", - "@type": "@id", - "@container": "@set" - }, - "capabilityInvocation": { - "@id": "https://w3id.org/security#capabilityInvocationMethod", - "@type": "@id", - "@container": "@set" - }, - "capabilityDelegation": { - "@id": "https://w3id.org/security#capabilityDelegationMethod", - "@type": "@id", - "@container": "@set" - }, - "keyAgreement": { - "@id": "https://w3id.org/security#keyAgreementMethod", - "@type": "@id", - "@container": "@set" - } - } - }, - "cryptosuite": "https://w3id.org/security#cryptosuite", - "proofValue": { - "@id": "https://w3id.org/security#proofValue", - "@type": "https://w3id.org/security#multibase" - }, - "verificationMethod": { - "@id": "https://w3id.org/security#verificationMethod", - "@type": "@id" - } - } - } - }, - "term": "DataIntegrityProof" - }, - "message": "Invalid JSON-LD syntax; tried to redefine a protected term.", - "stack": "jsonld.SyntaxError: Invalid JSON-LD syntax; tried to redefine a protected term.\n at api.createTermDefinition (/home/node/app/node_modules/jsonld/lib/context.js:988:13)\n at api.process (/home/node/app/node_modules/jsonld/lib/context.js:399:11)\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async api.expand (/home/node/app/node_modules/jsonld/lib/expand.js:214:17)\n at async jsonld.expand (/home/node/app/node_modules/jsonld/lib/jsonld.js:322:18)\n at async jsonld.toRDF (/home/node/app/node_modules/jsonld/lib/jsonld.js:687:16)\n at async jsonld.normalize.jsonld.canonize (/home/node/app/node_modules/jsonld/lib/jsonld.js:589:19)" - } - ], - "message": "Verification error(s)." - }, - "checks": [ - { - "check": [ - "proof" - ], - "id": "urn:uuid:86294362-4254-4f36-854f-3952fe42555d", - "error": "Invalid JSON-LD syntax; tried to redefine a protected term.", - "verificationMethod": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT" - } - ] - } - }, - "operator": "notStrictEqual", - "stack": "AssertionError: Expected no error from verifier.: 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 verificationSuccess (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/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/node_modules/data-integrity-test-suite-assertion/suites/verify.js:199:9)" - } - }, - { - "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 verificationSuccess({\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": "KEnA8DBEVxZnIEqHqG8ny", - "ctx": null, - "_testId": "urn:uuid:1eac6bb2-d1fb-4a20-9fc6-f6c8e8f24ff5", - "cell": { - "columnId": "EWF", - "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": 30302, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 87, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected no error from verifier.: 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/data-integrity/v2\"],\"id\":\"urn:uuid:86294362-4254-4f36-854f-3952fe42555d\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"expires\":\"2024-09-15T05:01:54\",\"type\":\"DataIntegrityProof\",\"created\":\"2024-09-15T05:01:54Z\",\"verificationMethod\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"cryptosuite\":\"eddsa-2022\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z23aBpJZnxXpwPcaK5pmk6CM2yq5ZZddCxT6HSkRsPtSCJaAepRSpYetBdqxVdeCNLDv8FeayEfqwf6kvh46u4itb\"}},\"options\":{}}", - "method": "POST", - "json": { - "verifiableCredential": { - "@context": [ - "https://www.w3.org/2018/credentials/v1", - "https://w3id.org/security/data-integrity/v2" - ], - "id": "urn:uuid:86294362-4254-4f36-854f-3952fe42555d", - "type": [ - "VerifiableCredential" - ], - "issuer": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "issuanceDate": "2020-03-16T22:37:26.544Z", - "credentialSubject": { - "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" - }, - "proof": { - "expires": "2024-09-15T05:01:54", - "type": "DataIntegrityProof", - "created": "2024-09-15T05:01:54Z", - "verificationMethod": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "cryptosuite": "eddsa-2022", - "proofPurpose": "assertionMethod", - "proofValue": "z23aBpJZnxXpwPcaK5pmk6CM2yq5ZZddCxT6HSkRsPtSCJaAepRSpYetBdqxVdeCNLDv8FeayEfqwf6kvh46u4itb" - } - }, - "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/verify", - "status": 400, - "data": { - "checks": [ - "proof" - ], - "warnings": [], - "errors": [ - "Linked Data Proof type not implemented" - ] - } - }, - "operator": "notStrictEqual", - "stack": "AssertionError: Expected no error from verifier.: 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 verificationSuccess (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/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/node_modules/data-integrity-test-suite-assertion/suites/verify.js:199:9)" - } - }, - { - "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 verificationSuccess({\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": "XD2-EVL18dB-hOt8puHrL", - "ctx": null, - "_testId": "urn:uuid:105fdf9f-5019-4096-a6c6-5b52ece21928", - "cell": { - "columnId": "LearnCard", - "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": 40320, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 70, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected no error from verifier.: 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/data-integrity/v2\"],\"id\":\"urn:uuid:86294362-4254-4f36-854f-3952fe42555d\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"expires\":\"2024-09-15T05:01:54\",\"type\":\"DataIntegrityProof\",\"created\":\"2024-09-15T05:01:54Z\",\"verificationMethod\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"cryptosuite\":\"eddsa-2022\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z23aBpJZnxXpwPcaK5pmk6CM2yq5ZZddCxT6HSkRsPtSCJaAepRSpYetBdqxVdeCNLDv8FeayEfqwf6kvh46u4itb\"}},\"options\":{}}", - "method": "POST", - "json": { - "verifiableCredential": { - "@context": [ - "https://www.w3.org/2018/credentials/v1", - "https://w3id.org/security/data-integrity/v2" - ], - "id": "urn:uuid:86294362-4254-4f36-854f-3952fe42555d", - "type": [ - "VerifiableCredential" - ], - "issuer": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "issuanceDate": "2020-03-16T22:37:26.544Z", - "credentialSubject": { - "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" - }, - "proof": { - "expires": "2024-09-15T05:01:54", - "type": "DataIntegrityProof", - "created": "2024-09-15T05:01:54Z", - "verificationMethod": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "cryptosuite": "eddsa-2022", - "proofPurpose": "assertionMethod", - "proofValue": "z23aBpJZnxXpwPcaK5pmk6CM2yq5ZZddCxT6HSkRsPtSCJaAepRSpYetBdqxVdeCNLDv8FeayEfqwf6kvh46u4itb" - } - }, - "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/verify", - "status": 400, - "data": { - "checks": [ - "proof", - "expiration" - ], - "warnings": [], - "errors": [ - "Linked Data Proof type not implemented" - ] - } - }, - "operator": "notStrictEqual", - "stack": "AssertionError: Expected no error from verifier.: 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 verificationSuccess (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/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/node_modules/data-integrity-test-suite-assertion/suites/verify.js:199:9)" - } - }, - { - "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 verificationSuccess({\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": "8sPgtTPQiHtoLikfIzMnw", - "ctx": null, - "_testId": "urn:uuid:68cfdfad-abfb-4fb2-a109-1201fc33bcaa", - "cell": { - "columnId": "OpSecId", - "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": 41279, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 28, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected no error from verifier.: expected HTTPError: Invalid cryptosuite { …(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/data-integrity/v2\"],\"id\":\"urn:uuid:86294362-4254-4f36-854f-3952fe42555d\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"expires\":\"2024-09-15T05:01:54\",\"type\":\"DataIntegrityProof\",\"created\":\"2024-09-15T05:01:54Z\",\"verificationMethod\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"cryptosuite\":\"eddsa-2022\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z23aBpJZnxXpwPcaK5pmk6CM2yq5ZZddCxT6HSkRsPtSCJaAepRSpYetBdqxVdeCNLDv8FeayEfqwf6kvh46u4itb\"}},\"options\":{}}", - "method": "POST", - "json": { - "verifiableCredential": { - "@context": [ - "https://www.w3.org/2018/credentials/v1", - "https://w3id.org/security/data-integrity/v2" - ], - "id": "urn:uuid:86294362-4254-4f36-854f-3952fe42555d", - "type": [ - "VerifiableCredential" - ], - "issuer": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "issuanceDate": "2020-03-16T22:37:26.544Z", - "credentialSubject": { - "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" - }, - "proof": { - "expires": "2024-09-15T05:01:54", - "type": "DataIntegrityProof", - "created": "2024-09-15T05:01:54Z", - "verificationMethod": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "cryptosuite": "eddsa-2022", - "proofPurpose": "assertionMethod", - "proofValue": "z23aBpJZnxXpwPcaK5pmk6CM2yq5ZZddCxT6HSkRsPtSCJaAepRSpYetBdqxVdeCNLDv8FeayEfqwf6kvh46u4itb" - } - }, - "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://agent.opsec.id/vc/credentials/verify", - "status": 400, - "data": { - "message": "Invalid cryptosuite" - } - }, - "operator": "notStrictEqual", - "stack": "AssertionError: Expected no error from verifier.: expected HTTPError: Invalid cryptosuite { …(6) } to not exist\n at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n at verificationSuccess (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/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/node_modules/data-integrity-test-suite-assertion/suites/verify.js:199:9)" - } - }, - { - "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 verificationSuccess({\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": "I8HfQUCby8c6rnnhicBqw", - "ctx": null, - "_testId": "urn:uuid:9faea90b-0908-4eef-94fc-279e3a0e1192", - "cell": { - "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": 41826, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 21, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected no error from verifier.: 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/data-integrity/v2\"],\"id\":\"urn:uuid:86294362-4254-4f36-854f-3952fe42555d\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"expires\":\"2024-09-15T05:01:54\",\"type\":\"DataIntegrityProof\",\"created\":\"2024-09-15T05:01:54Z\",\"verificationMethod\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"cryptosuite\":\"eddsa-2022\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z23aBpJZnxXpwPcaK5pmk6CM2yq5ZZddCxT6HSkRsPtSCJaAepRSpYetBdqxVdeCNLDv8FeayEfqwf6kvh46u4itb\"}},\"options\":{}}", - "method": "POST", - "json": { - "verifiableCredential": { - "@context": [ - "https://www.w3.org/2018/credentials/v1", - "https://w3id.org/security/data-integrity/v2" - ], - "id": "urn:uuid:86294362-4254-4f36-854f-3952fe42555d", - "type": [ - "VerifiableCredential" - ], - "issuer": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "issuanceDate": "2020-03-16T22:37:26.544Z", - "credentialSubject": { - "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" - }, - "proof": { - "expires": "2024-09-15T05:01:54", - "type": "DataIntegrityProof", - "created": "2024-09-15T05:01:54Z", - "verificationMethod": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "cryptosuite": "eddsa-2022", - "proofPurpose": "assertionMethod", - "proofValue": "z23aBpJZnxXpwPcaK5pmk6CM2yq5ZZddCxT6HSkRsPtSCJaAepRSpYetBdqxVdeCNLDv8FeayEfqwf6kvh46u4itb" - } - }, - "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.spruceid.xyz/credentials/verify", - "status": 400 - }, - "operator": "notStrictEqual", - "stack": "AssertionError: Expected no error from verifier.: 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 verificationSuccess (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/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/node_modules/data-integrity-test-suite-assertion/suites/verify.js:199:9)" - } - }, - { - "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 verificationSuccess({\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": "I5sQwd-elvbwnnYVG_wGF", - "ctx": null, - "_testId": "urn:uuid:84cb9759-149e-47e1-8ffe-d2aa4e1089a1", - "cell": { - "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": 43229, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 42, - "state": "failed", - "err": { - "name": "AssertionError", - "message": "Expected no error from verifier.: 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/data-integrity/v2\"],\"id\":\"urn:uuid:86294362-4254-4f36-854f-3952fe42555d\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"expires\":\"2024-09-15T05:01:54\",\"type\":\"DataIntegrityProof\",\"created\":\"2024-09-15T05:01:54Z\",\"verificationMethod\":\"did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT\",\"cryptosuite\":\"eddsa-2022\",\"proofPurpose\":\"assertionMethod\",\"proofValue\":\"z23aBpJZnxXpwPcaK5pmk6CM2yq5ZZddCxT6HSkRsPtSCJaAepRSpYetBdqxVdeCNLDv8FeayEfqwf6kvh46u4itb\"}},\"options\":{}}", - "method": "POST", - "json": { - "verifiableCredential": { - "@context": [ - "https://www.w3.org/2018/credentials/v1", - "https://w3id.org/security/data-integrity/v2" - ], - "id": "urn:uuid:86294362-4254-4f36-854f-3952fe42555d", - "type": [ - "VerifiableCredential" - ], - "issuer": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "issuanceDate": "2020-03-16T22:37:26.544Z", - "credentialSubject": { - "id": "did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b" - }, - "proof": { - "expires": "2024-09-15T05:01:54", - "type": "DataIntegrityProof", - "created": "2024-09-15T05:01:54Z", - "verificationMethod": "did:key:z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT#z6MkwXG2WjeQnNxSoynSGYU8V9j3QzP3JSqhdmkHc6SaVWoT", - "cryptosuite": "eddsa-2022", - "proofPurpose": "assertionMethod", - "proofValue": "z23aBpJZnxXpwPcaK5pmk6CM2yq5ZZddCxT6HSkRsPtSCJaAepRSpYetBdqxVdeCNLDv8FeayEfqwf6kvh46u4itb" - } - }, - "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://interop.connect.trinsic.cloud/vc-api/credentials/verify", - "status": 400 - }, - "operator": "notStrictEqual", - "stack": "AssertionError: Expected no error from verifier.: 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 verificationSuccess (file:///home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/node_modules/data-integrity-test-suite-assertion/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/node_modules/data-integrity-test-suite-assertion/suites/verify.js:199:9)" - } - } - ] - }, - { - "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": "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": "8FUVhOgQKJ4jYmejg3oJ5", - "ctx": null, - "_testId": "urn:uuid:61ec9cae-9b8d-4f5f-a08b-a4f2739a8556", - "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": 16769, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 66, - "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": "4rMcTf82al4NVv_78CupS", - "ctx": null, - "_testId": "urn:uuid:510843fa-f3df-417b-8bed-765a65bf9f86", - "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." - }, - "_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": 25456, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 688, - "state": "passed", - "speed": "slow" - }, - { - "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": "ouesj07FQZNyOL7t06-X-", - "ctx": null, - "_testId": "urn:uuid:61aad51b-1be5-448e-b2e6-3f40e78f9c9d", - "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." - }, - "_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": 28178, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 99, - "state": "passed", - "speed": "slow" - }, - { - "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": "KEnA8DBEVxZnIEqHqG8ny", - "ctx": null, - "_testId": "urn:uuid:9b12d444-f450-4d8c-a542-a6ae92247f9c", - "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." - }, - "_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": 30390, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 88, - "state": "passed", - "speed": "slow" - }, - { - "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": "XD2-EVL18dB-hOt8puHrL", - "ctx": null, - "_testId": "urn:uuid:d3fc771c-512d-4ea4-be1f-570a1c74ad3c", - "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." - }, - "_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": 40391, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 73, - "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": "8sPgtTPQiHtoLikfIzMnw", - "ctx": null, - "_testId": "urn:uuid:cdfa03ab-00b7-4738-8776-2114b2b33af4", - "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." - }, - "_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": 41308, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 28, - "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 }", - "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": "I8HfQUCby8c6rnnhicBqw", - "ctx": null, - "_testId": "urn:uuid:95a99add-3809-4228-8dba-512c3cc2abdc", - "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." - }, - "_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": 41847, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 22, - "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 }", - "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": "I5sQwd-elvbwnnYVG_wGF", - "ctx": null, - "_testId": "urn:uuid:f6b194ac-1d38-4e25-b2ad-7e52adea54c5", - "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." - }, - "_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": 43272, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 28, - "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.", - "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 }", - "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": "8FUVhOgQKJ4jYmejg3oJ5", - "ctx": null, - "_testId": "urn:uuid:0dfc6d03-eeec-4b5e-a602-fd8ac928de66", - "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": 16836, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 56, - "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": "4rMcTf82al4NVv_78CupS", - "ctx": null, - "_testId": "urn:uuid:bba8b6e3-883d-47bf-8749-7ee6ee23eec4", - "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." - }, - "_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": 26144, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 652, - "state": "passed", - "speed": "slow" - }, - { - "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": "ouesj07FQZNyOL7t06-X-", - "ctx": null, - "_testId": "urn:uuid:8d5929a1-24fb-43ad-87ff-4f3f75e3395d", - "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." - }, - "_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": 28277, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 50, - "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": "KEnA8DBEVxZnIEqHqG8ny", - "ctx": null, - "_testId": "urn:uuid:38a041b1-350f-4b25-a944-1f1cdc86d945", - "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." - }, - "_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": 30478, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 89, - "state": "passed", - "speed": "slow" - }, - { - "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": "XD2-EVL18dB-hOt8puHrL", - "ctx": null, - "_testId": "urn:uuid:769f5202-1919-4986-afa6-5a13bb87215b", - "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." - }, - "_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": 40464, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 75, - "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": "8sPgtTPQiHtoLikfIzMnw", - "ctx": null, - "_testId": "urn:uuid:0b98dccc-e277-421f-b2ef-0069ef31873b", - "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." - }, - "_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": 41337, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 27, - "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 }", - "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": "I8HfQUCby8c6rnnhicBqw", - "ctx": null, - "_testId": "urn:uuid:d54fd007-0d5c-4644-a3f3-ed98879d08bd", - "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." - }, - "_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": 41869, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 21, - "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 }", - "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": "I5sQwd-elvbwnnYVG_wGF", - "ctx": null, - "_testId": "urn:uuid:9c38fa4e-41bd-43d3-a01c-e2c532bdbadf", - "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." - }, - "_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": 43301, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 22, - "state": "passed", - "speed": "fast" - } - ] - } - ] - }, - { - "title": "Ed25519Signature2020 (verifier)", - "ctx": null, - "suites": [ - { - "title": "apicatalog.com", - "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": "HIuz-q7cwSz4mPdlSML7M", - "ctx": null, - "_testId": "urn:uuid:0d309b5f-7493-425d-81ae-a74aee8cd79c", - "_events": {}, - "_eventsCount": 1, - "cell": { - "columnId": "apicatalog.com", - "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 43324, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 92, - "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": "HIuz-q7cwSz4mPdlSML7M", - "ctx": null, - "_testId": "urn:uuid:004cddd6-2119-4c93-bafb-c168d390ec0e", - "_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": 43418, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "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 }", - "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": "HIuz-q7cwSz4mPdlSML7M", - "ctx": null, - "_testId": "urn:uuid:ade036a9-cc02-4b1b-a883-54a4cf9df353", - "_events": {}, - "_eventsCount": 1, - "cell": { - "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": 43470, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 61, - "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": "HIuz-q7cwSz4mPdlSML7M", - "ctx": null, - "_testId": "urn:uuid:c54be560-a935-452a-b84d-0221e0a79cb4", - "_events": {}, - "_eventsCount": 1, - "cell": { - "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": 43531, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 64, - "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": "Zq2gih5tXroAKjQab4pQ5", - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "_testId": "urn:uuid:fb1f3bba-42e2-424c-877d-e9596241d74a" - }, - { - "title": "Danube Tech", - "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": "DvvAoJHOUzUC0gljZc8C5", - "ctx": null, - "_testId": "urn:uuid:277e8fd0-3c2b-43a9-ab75-9974a978ced2", - "_events": {}, - "_eventsCount": 1, - "cell": { - "columnId": "Danube Tech", - "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 43595, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 938, - "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": "DvvAoJHOUzUC0gljZc8C5", - "ctx": null, - "_testId": "urn:uuid:a121641c-8771-4fcb-89fb-be46f3b4ebf7", - "_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": 44533, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 429, - "state": "passed", - "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 }", - "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": "DvvAoJHOUzUC0gljZc8C5", - "ctx": null, - "_testId": "urn:uuid:fa07eae2-e286-45bf-8be6-85e4945d95ae", - "_events": {}, - "_eventsCount": 1, - "cell": { - "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": 44963, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 456, - "state": "passed", - "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 }", - "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": "DvvAoJHOUzUC0gljZc8C5", - "ctx": null, - "_testId": "urn:uuid:33510701-d917-48b7-8ddc-85b654a10724", - "_events": {}, - "_eventsCount": 1, - "cell": { - "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": 45419, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 420, - "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": "Zq2gih5tXroAKjQab4pQ5", - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "_testId": "urn:uuid:30345eef-2823-4d88-b5c2-e7343b8fb4d6" - }, - { - "title": "Digital Bazaar", - "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": "vA8OCoaq6M7bRL4IfLbwK", - "ctx": null, - "_testId": "urn:uuid:3e258b33-d0e6-42e2-95fb-718b8742439c", - "_events": {}, - "_eventsCount": 1, - "cell": { - "columnId": "Digital Bazaar", - "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 45840, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 137, - "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": "vA8OCoaq6M7bRL4IfLbwK", - "ctx": null, - "_testId": "urn:uuid:f40b2c97-7521-4fa5-aa60-17ffa0bc1dae", - "_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": 45977, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 61, - "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": "vA8OCoaq6M7bRL4IfLbwK", - "ctx": null, - "_testId": "urn:uuid:f6d86af3-941d-42c1-aaf9-38e0b218f094", - "_events": {}, - "_eventsCount": 1, - "cell": { - "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": 46038, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 61, - "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": "vA8OCoaq6M7bRL4IfLbwK", - "ctx": null, - "_testId": "urn:uuid:a555253e-e309-4b9f-83d3-0e4a60223f12", - "_events": {}, - "_eventsCount": 1, - "cell": { - "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": 46099, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 63, - "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": "Zq2gih5tXroAKjQab4pQ5", - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "_testId": "urn:uuid:c2001ab6-f60b-4175-8b24-0425901878af" - }, - { - "title": "EWF", - "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": "8MC1LxWSCROMmz4Lcuea4", - "ctx": null, - "_testId": "urn:uuid:b878c1f2-1025-48b5-97ff-98d9eff80450", - "_events": {}, - "_eventsCount": 1, - "cell": { - "columnId": "EWF", - "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 46162, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 385, - "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": "8MC1LxWSCROMmz4Lcuea4", - "ctx": null, - "_testId": "urn:uuid:476eb530-ee27-4e56-b2ca-6c13710a1b8e", - "_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": 46548, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 107, - "state": "passed", - "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 }", - "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": "8MC1LxWSCROMmz4Lcuea4", - "ctx": null, - "_testId": "urn:uuid:3acc1e44-312b-4e42-81ad-a975c6e87bc2", - "_events": {}, - "_eventsCount": 1, - "cell": { - "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": 46655, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 101, - "state": "passed", - "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 }", - "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": "8MC1LxWSCROMmz4Lcuea4", - "ctx": null, - "_testId": "urn:uuid:8b50037c-4478-492f-a86b-d8e1f5827559", - "_events": {}, - "_eventsCount": 1, - "cell": { - "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": 46756, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 127, - "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": "Zq2gih5tXroAKjQab4pQ5", - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "_testId": "urn:uuid:d5f41ce9-ff18-47e7-b876-c18d92f89563" - }, - { - "title": "LearnCard", - "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": "qI5l7YNC9nLvXjcnLEYb3", - "ctx": null, - "_testId": "urn:uuid:0c2d800d-c61a-4eaf-9f84-18e26ad834f8", - "_events": {}, - "_eventsCount": 1, - "cell": { - "columnId": "LearnCard", - "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 46884, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 130, - "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": "qI5l7YNC9nLvXjcnLEYb3", - "ctx": null, - "_testId": "urn:uuid:6379139f-bbb6-46d1-8d3d-40dc69a69d61", - "_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": 47014, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 80, - "state": "passed", - "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 }", - "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": "qI5l7YNC9nLvXjcnLEYb3", - "ctx": null, - "_testId": "urn:uuid:688210e1-f43c-4e43-9639-adb82ccdbb7b", - "_events": {}, - "_eventsCount": 1, - "cell": { - "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": 47094, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 70, - "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": "qI5l7YNC9nLvXjcnLEYb3", - "ctx": null, - "_testId": "urn:uuid:6bb7b49a-aa89-40b4-b42b-f64599d44b97", - "_events": {}, - "_eventsCount": 1, - "cell": { - "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": 47164, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 78, - "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": "Zq2gih5tXroAKjQab4pQ5", - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "_testId": "urn:uuid:ba6b81c9-919c-48f1-896d-3d7e64e5f496" - }, - { - "title": "OpSecId", - "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": "XB95psL3CkO5denFl_Mgq", - "ctx": null, - "_testId": "urn:uuid:813f9fe8-8045-4f57-86af-01bbfb6c7903", - "_events": {}, - "_eventsCount": 1, - "cell": { - "columnId": "OpSecId", - "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 47243, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 123, - "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": "XB95psL3CkO5denFl_Mgq", - "ctx": null, - "_testId": "urn:uuid:7ab31ebf-9ad8-4cca-8adc-f6adbf2cb921", - "_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": 47367, - "_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, 15 Sep 2024 05:02:26 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, 15 Sep 2024 05:02:26 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": "XB95psL3CkO5denFl_Mgq", - "ctx": null, - "_testId": "urn:uuid:6cefc0ec-31b9-45ee-8cf7-8023cc8b1a93", - "_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": 47401, - "_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, 15 Sep 2024 05:02:26 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, 15 Sep 2024 05:02:26 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 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": "XB95psL3CkO5denFl_Mgq", - "ctx": null, - "_testId": "urn:uuid:4ec347c6-633d-473c-9893-420b5ceb18f0", - "_events": {}, - "_eventsCount": 1, - "cell": { - "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": 47435, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 52, - "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, 15 Sep 2024 05:02:26 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, 15 Sep 2024 05:02:26 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": "Zq2gih5tXroAKjQab4pQ5", - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "_testId": "urn:uuid:414ec947-9d0a-49cb-a225-06e0a26b8fbc" - }, - { - "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": "UeRczibpWQg5hzemlLuPl", - "ctx": null, - "_testId": "urn:uuid:1e1eb780-2a65-4c7b-bed7-89614b9f68c8", - "_events": {}, - "_eventsCount": 1, - "cell": { - "columnId": "SpruceID", - "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 47488, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 56, - "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": "UeRczibpWQg5hzemlLuPl", - "ctx": null, - "_testId": "urn:uuid:555d7389-c794-4490-b86d-f42609922313", - "_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": 47545, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 37, - "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": "UeRczibpWQg5hzemlLuPl", - "ctx": null, - "_testId": "urn:uuid:8c6aa9cf-1d43-42b4-ac89-51e21e1c356d", - "_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": 47583, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 28, - "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 }", - "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": "UeRczibpWQg5hzemlLuPl", - "ctx": null, - "_testId": "urn:uuid:3a62a63b-3066-4c4d-8921-9a7172f5df89", - "_events": {}, - "_eventsCount": 1, - "cell": { - "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": 47611, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 30, - "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": "Zq2gih5tXroAKjQab4pQ5", - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "_testId": "urn:uuid:63491bfd-0bf5-40b3-a11a-95a5b216016f" - }, - { - "title": "Trinsic", - "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": "eXbJdE01umDa72kQ9CCMT", - "ctx": null, - "_testId": "urn:uuid:85db84dc-c635-4491-b07d-4c463c57476b", - "_events": {}, - "_eventsCount": 1, - "cell": { - "columnId": "Trinsic", - "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 47642, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 92, - "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": "eXbJdE01umDa72kQ9CCMT", - "ctx": null, - "_testId": "urn:uuid:a73cf786-6dfa-4836-a716-c3b9eedc347e", - "_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": 47735, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 45, - "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": "eXbJdE01umDa72kQ9CCMT", - "ctx": null, - "_testId": "urn:uuid:11fbc39d-b32c-4991-b523-8de93a2de17e", - "_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": 47781, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 45, - "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": "eXbJdE01umDa72kQ9CCMT", - "ctx": null, - "_testId": "urn:uuid:59ad0770-0da9-4153-9872-7da34640b4e3", - "_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": 47826, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 42, - "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": "Zq2gih5tXroAKjQab4pQ5", - "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/20-verify.js", - "_testId": "urn:uuid:6f5e2de8-def0-409f-bc95-1297eabe90bd" - } - ], - "root": false, - "pending": false, - "_retries": -1, - "_beforeEach": [], - "_beforeAll": [], - "_afterEach": [], - "_afterAll": [], - "_timeout": 15000, - "_slow": 75, - "_bail": false, - "_onlyTests": [], - "_onlySuites": [], - "delayed": false, - "parent": "bOwb9hQpmKuBVNePJZzsk", - "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:ac49027a-363c-4903-9302-947f472100dc", - "columns": [ - "apicatalog.com", - "Danube Tech", - "Digital Bazaar", - "EWF", - "LearnCard", - "OpSecId", - "SpruceID", - "Trinsic" - ], - "rows": [ - { - "id": "MUST verify a valid VC with an Ed25519Signature2020 proof", - "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 }", - "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": "HIuz-q7cwSz4mPdlSML7M", - "ctx": null, - "_testId": "urn:uuid:0d309b5f-7493-425d-81ae-a74aee8cd79c", - "_events": {}, - "_eventsCount": 1, - "cell": { - "columnId": "apicatalog.com", - "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 43324, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 92, - "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": "DvvAoJHOUzUC0gljZc8C5", - "ctx": null, - "_testId": "urn:uuid:277e8fd0-3c2b-43a9-ab75-9974a978ced2", - "_events": {}, - "_eventsCount": 1, - "cell": { - "columnId": "Danube Tech", - "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 43595, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 938, - "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": "vA8OCoaq6M7bRL4IfLbwK", - "ctx": null, - "_testId": "urn:uuid:3e258b33-d0e6-42e2-95fb-718b8742439c", - "_events": {}, - "_eventsCount": 1, - "cell": { - "columnId": "Digital Bazaar", - "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 45840, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 137, - "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": "8MC1LxWSCROMmz4Lcuea4", - "ctx": null, - "_testId": "urn:uuid:b878c1f2-1025-48b5-97ff-98d9eff80450", - "_events": {}, - "_eventsCount": 1, - "cell": { - "columnId": "EWF", - "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 46162, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 385, - "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": "qI5l7YNC9nLvXjcnLEYb3", - "ctx": null, - "_testId": "urn:uuid:0c2d800d-c61a-4eaf-9f84-18e26ad834f8", - "_events": {}, - "_eventsCount": 1, - "cell": { - "columnId": "LearnCard", - "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 46884, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 130, - "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": "XB95psL3CkO5denFl_Mgq", - "ctx": null, - "_testId": "urn:uuid:813f9fe8-8045-4f57-86af-01bbfb6c7903", - "_events": {}, - "_eventsCount": 1, - "cell": { - "columnId": "OpSecId", - "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 47243, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 123, - "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": "UeRczibpWQg5hzemlLuPl", - "ctx": null, - "_testId": "urn:uuid:1e1eb780-2a65-4c7b-bed7-89614b9f68c8", - "_events": {}, - "_eventsCount": 1, - "cell": { - "columnId": "SpruceID", - "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 47488, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 56, - "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": "eXbJdE01umDa72kQ9CCMT", - "ctx": null, - "_testId": "urn:uuid:85db84dc-c635-4491-b07d-4c463c57476b", - "_events": {}, - "_eventsCount": 1, - "cell": { - "columnId": "Trinsic", - "rowId": "MUST verify a valid VC with an Ed25519Signature2020 proof" - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 47642, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 92, - "state": "passed", - "speed": "slow" - } - ] - }, - { - "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": "HIuz-q7cwSz4mPdlSML7M", - "ctx": null, - "_testId": "urn:uuid:004cddd6-2119-4c93-bafb-c168d390ec0e", - "_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": 43418, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "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 }", - "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": "DvvAoJHOUzUC0gljZc8C5", - "ctx": null, - "_testId": "urn:uuid:a121641c-8771-4fcb-89fb-be46f3b4ebf7", - "_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": 44533, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 429, - "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": "vA8OCoaq6M7bRL4IfLbwK", - "ctx": null, - "_testId": "urn:uuid:f40b2c97-7521-4fa5-aa60-17ffa0bc1dae", - "_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": 45977, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 61, - "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": "8MC1LxWSCROMmz4Lcuea4", - "ctx": null, - "_testId": "urn:uuid:476eb530-ee27-4e56-b2ca-6c13710a1b8e", - "_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": 46548, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 107, - "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": "qI5l7YNC9nLvXjcnLEYb3", - "ctx": null, - "_testId": "urn:uuid:6379139f-bbb6-46d1-8d3d-40dc69a69d61", - "_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": 47014, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 80, - "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": "XB95psL3CkO5denFl_Mgq", - "ctx": null, - "_testId": "urn:uuid:7ab31ebf-9ad8-4cca-8adc-f6adbf2cb921", - "_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": 47367, - "_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, 15 Sep 2024 05:02:26 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, 15 Sep 2024 05:02:26 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 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": "UeRczibpWQg5hzemlLuPl", - "ctx": null, - "_testId": "urn:uuid:555d7389-c794-4490-b86d-f42609922313", - "_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": 47545, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 37, - "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": "eXbJdE01umDa72kQ9CCMT", - "ctx": null, - "_testId": "urn:uuid:a73cf786-6dfa-4836-a716-c3b9eedc347e", - "_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": 47735, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 45, - "state": "passed", - "speed": "medium" - } - ] - }, - { - "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, - "_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": "HIuz-q7cwSz4mPdlSML7M", - "ctx": null, - "_testId": "urn:uuid:ade036a9-cc02-4b1b-a883-54a4cf9df353", - "_events": {}, - "_eventsCount": 1, - "cell": { - "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": 43470, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 61, - "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": "DvvAoJHOUzUC0gljZc8C5", - "ctx": null, - "_testId": "urn:uuid:fa07eae2-e286-45bf-8be6-85e4945d95ae", - "_events": {}, - "_eventsCount": 1, - "cell": { - "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": 44963, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 456, - "state": "passed", - "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 }", - "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": "vA8OCoaq6M7bRL4IfLbwK", - "ctx": null, - "_testId": "urn:uuid:f6d86af3-941d-42c1-aaf9-38e0b218f094", - "_events": {}, - "_eventsCount": 1, - "cell": { - "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": 46038, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 61, - "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": "8MC1LxWSCROMmz4Lcuea4", - "ctx": null, - "_testId": "urn:uuid:3acc1e44-312b-4e42-81ad-a975c6e87bc2", - "_events": {}, - "_eventsCount": 1, - "cell": { - "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": 46655, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 101, - "state": "passed", - "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 }", - "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": "qI5l7YNC9nLvXjcnLEYb3", - "ctx": null, - "_testId": "urn:uuid:688210e1-f43c-4e43-9639-adb82ccdbb7b", - "_events": {}, - "_eventsCount": 1, - "cell": { - "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": 47094, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 70, - "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": "XB95psL3CkO5denFl_Mgq", - "ctx": null, - "_testId": "urn:uuid:6cefc0ec-31b9-45ee-8cf7-8023cc8b1a93", - "_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": 47401, - "_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, 15 Sep 2024 05:02:26 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, 15 Sep 2024 05:02:26 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": "UeRczibpWQg5hzemlLuPl", - "ctx": null, - "_testId": "urn:uuid:8c6aa9cf-1d43-42b4-ac89-51e21e1c356d", - "_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": 47583, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 28, - "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": "eXbJdE01umDa72kQ9CCMT", - "ctx": null, - "_testId": "urn:uuid:11fbc39d-b32c-4991-b523-8de93a2de17e", - "_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": 47781, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 45, - "state": "passed", - "speed": "medium" - } - ] - }, - { - "id": "If a canonicalization data hashing algorithm SHA-2-256 is used, an error MUST be raised.", - "cells": [ - { - "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": "HIuz-q7cwSz4mPdlSML7M", - "ctx": null, - "_testId": "urn:uuid:c54be560-a935-452a-b84d-0221e0a79cb4", - "_events": {}, - "_eventsCount": 1, - "cell": { - "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": 43531, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 64, - "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": "DvvAoJHOUzUC0gljZc8C5", - "ctx": null, - "_testId": "urn:uuid:33510701-d917-48b7-8ddc-85b654a10724", - "_events": {}, - "_eventsCount": 1, - "cell": { - "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": 45419, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 420, - "state": "passed", - "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 }", - "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": "vA8OCoaq6M7bRL4IfLbwK", - "ctx": null, - "_testId": "urn:uuid:a555253e-e309-4b9f-83d3-0e4a60223f12", - "_events": {}, - "_eventsCount": 1, - "cell": { - "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": 46099, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 63, - "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": "8MC1LxWSCROMmz4Lcuea4", - "ctx": null, - "_testId": "urn:uuid:8b50037c-4478-492f-a86b-d8e1f5827559", - "_events": {}, - "_eventsCount": 1, - "cell": { - "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": 46756, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 127, - "state": "passed", - "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 }", - "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": "qI5l7YNC9nLvXjcnLEYb3", - "ctx": null, - "_testId": "urn:uuid:6bb7b49a-aa89-40b4-b42b-f64599d44b97", - "_events": {}, - "_eventsCount": 1, - "cell": { - "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": 47164, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 78, - "state": "passed", - "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 }", - "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": "XB95psL3CkO5denFl_Mgq", - "ctx": null, - "_testId": "urn:uuid:4ec347c6-633d-473c-9893-420b5ceb18f0", - "_events": {}, - "_eventsCount": 1, - "cell": { - "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": 47435, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 52, - "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, 15 Sep 2024 05:02:26 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, 15 Sep 2024 05:02:26 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": "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": "UeRczibpWQg5hzemlLuPl", - "ctx": null, - "_testId": "urn:uuid:3a62a63b-3066-4c4d-8921-9a7172f5df89", - "_events": {}, - "_eventsCount": 1, - "cell": { - "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": 47611, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 30, - "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 }", - "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": "eXbJdE01umDa72kQ9CCMT", - "ctx": null, - "_testId": "urn:uuid:59ad0770-0da9-4153-9872-7da34640b4e3", - "_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": 47826, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 42, - "state": "passed", - "speed": "medium" - } - ] - } - ] - }, - { - "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": "hKLJwcJU4lD36hm3qFLRf", - "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": 47870, - "_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": "hKLJwcJU4lD36hm3qFLRf", - "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": 47870, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 194, - "_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": "hKLJwcJU4lD36hm3qFLRf", - "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": 48064, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 504, - "_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": "hKLJwcJU4lD36hm3qFLRf", - "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": 48568, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 197, - "_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": "hKLJwcJU4lD36hm3qFLRf", - "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": 48765, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 97, - "_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": "hKLJwcJU4lD36hm3qFLRf", - "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": 48862, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 63, - "_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": "hKLJwcJU4lD36hm3qFLRf", - "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": 48926, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 34, - "_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": "hKLJwcJU4lD36hm3qFLRf", - "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": 48960, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 27, - "_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": "hKLJwcJU4lD36hm3qFLRf", - "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": 48987, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 110, - "_error": null - } - ], - "_afterEach": [], - "_afterAll": [], - "_timeout": 15000, - "_slow": 75, - "_bail": false, - "_onlyTests": [], - "_onlySuites": [], - "delayed": false, - "parent": "znGa8iNJQo1faN53XlKNL", - "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:40ca476f-1011-45e4-93d5-e0c54dcd3871", - "columns": [ - "apicatalog.com", - "Danube Tech", - "Digital Bazaar", - "EWF", - "LearnCard", - "OpSecId", - "SpruceID", - "Trinsic" - ], - "rows": [ - { - "id": "apicatalog.com", - "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 }", - "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": "hKLJwcJU4lD36hm3qFLRf", - "ctx": null, - "_testId": "urn:uuid:e06cce52-5a7c-441d-aa27-d13860041a49", - "_events": {}, - "_eventsCount": 1, - "cell": { - "rowId": "apicatalog.com", - "columnId": "apicatalog.com" - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 49098, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 72, - "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:5db8235c-be61-4b85-99ac-8398d25b427d\",\"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-15T05:02:27Z\",\"proofValue\":\"z2md2gGArxP78taUF4mHyov9haon26Tua5Jfe5DgAaAgEuGoaFQ5qwqAFAMx2Ay6M43DN9BLAJTXZrPcmxtvAw8WK\"}},\"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:5db8235c-be61-4b85-99ac-8398d25b427d", - "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-15T05:02:27Z", - "proofValue": "z2md2gGArxP78taUF4mHyov9haon26Tua5Jfe5DgAaAgEuGoaFQ5qwqAFAMx2Ay6M43DN9BLAJTXZrPcmxtvAw8WK" - } - }, - "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 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, - "_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": "hKLJwcJU4lD36hm3qFLRf", - "ctx": null, - "_testId": "urn:uuid:b3005209-ad11-4c88-a70a-db2386138a7f", - "_events": {}, - "_eventsCount": 1, - "cell": { - "rowId": "apicatalog.com", - "columnId": "Danube Tech" - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 49171, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 246, - "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:5db8235c-be61-4b85-99ac-8398d25b427d\",\"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-15T05:02:27Z\",\"proofValue\":\"z2md2gGArxP78taUF4mHyov9haon26Tua5Jfe5DgAaAgEuGoaFQ5qwqAFAMx2Ay6M43DN9BLAJTXZrPcmxtvAw8WK\"}},\"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:5db8235c-be61-4b85-99ac-8398d25b427d", - "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-15T05:02:27Z", - "proofValue": "z2md2gGArxP78taUF4mHyov9haon26Tua5Jfe5DgAaAgEuGoaFQ5qwqAFAMx2Ay6M43DN9BLAJTXZrPcmxtvAw8WK" - } - }, - "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 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, - "_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": "hKLJwcJU4lD36hm3qFLRf", - "ctx": null, - "_testId": "urn:uuid:018b85fa-b733-4d9d-9c11-ad3b6e90438d", - "_events": {}, - "_eventsCount": 1, - "cell": { - "rowId": "apicatalog.com", - "columnId": "Digital Bazaar" - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 49418, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 50, - "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:5db8235c-be61-4b85-99ac-8398d25b427d", - "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-15T05:02:27Z", - "proofValue": "z2md2gGArxP78taUF4mHyov9haon26Tua5Jfe5DgAaAgEuGoaFQ5qwqAFAMx2Ay6M43DN9BLAJTXZrPcmxtvAw8WK" - } - }, - "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:5db8235c-be61-4b85-99ac-8398d25b427d\",\"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-15T05:02:27Z\",\"proofValue\":\"z2md2gGArxP78taUF4mHyov9haon26Tua5Jfe5DgAaAgEuGoaFQ5qwqAFAMx2Ay6M43DN9BLAJTXZrPcmxtvAw8WK\"}},\"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:5db8235c-be61-4b85-99ac-8398d25b427d", - "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-15T05:02:27Z", - "proofValue": "z2md2gGArxP78taUF4mHyov9haon26Tua5Jfe5DgAaAgEuGoaFQ5qwqAFAMx2Ay6M43DN9BLAJTXZrPcmxtvAw8WK" - } - }, - "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:5db8235c-be61-4b85-99ac-8398d25b427d", - "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-15T05:02:27Z", - "proofValue": "z2md2gGArxP78taUF4mHyov9haon26Tua5Jfe5DgAaAgEuGoaFQ5qwqAFAMx2Ay6M43DN9BLAJTXZrPcmxtvAw8WK" - } - }, - "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:5db8235c-be61-4b85-99ac-8398d25b427d", - "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-15T05:02:27Z", - "proofValue": "z2md2gGArxP78taUF4mHyov9haon26Tua5Jfe5DgAaAgEuGoaFQ5qwqAFAMx2Ay6M43DN9BLAJTXZrPcmxtvAw8WK" - } - } - }, - "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:5db8235c-be61-4b85-99ac-8398d25b427d", - "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-15T05:02:27Z", - "proofValue": "z2md2gGArxP78taUF4mHyov9haon26Tua5Jfe5DgAaAgEuGoaFQ5qwqAFAMx2Ay6M43DN9BLAJTXZrPcmxtvAw8WK" - } - }, - "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:5db8235c-be61-4b85-99ac-8398d25b427d", - "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-15T05:02:27Z", - "proofValue": "z2md2gGArxP78taUF4mHyov9haon26Tua5Jfe5DgAaAgEuGoaFQ5qwqAFAMx2Ay6M43DN9BLAJTXZrPcmxtvAw8WK" - } - } - }, - "cause": null - } + 429, + 503 ], - "httpStatusCode": 400 + "maxRetryAfter": null, + "backoffLimit": null }, - "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" + "throwHttpErrors": true, + "timeout": 10000, + "signal": {}, + "duplex": "half" + }, + "name": "HTTPError", + "requestUrl": "https://aca-py.test-suite.app/vc/credentials/verify", + "status": 422, + "data": { + "json": { + "verifiableCredential": { + "type": [ + "Not a valid list." + ] + } + } } }, "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 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 apicatalog.com", + "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, @@ -33897,29 +21947,29 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "hKLJwcJU4lD36hm3qFLRf", + "parent": "44S12i-2051CZAKzGfMqm", "ctx": null, - "_testId": "urn:uuid:68adf1c9-7320-4592-a463-c1cb51b7017a", + "_testId": "urn:uuid:050833b5-0acc-4375-aafd-7635a01d6941", "_events": {}, "_eventsCount": 1, "cell": { "rowId": "apicatalog.com", - "columnId": "EWF" + "columnId": "apicatalog.com" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 49468, + "_idleStart": 45283, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 86, + "duration": 47, "state": "failed", "err": { "name": "AssertionError", - "message": "Expected verifier to not error.: expected HTTPError { …(7) } to not exist", + "message": "Expected verifier to not error.: expected HTTPError: Request failed with status cod… { …(6) } to not exist", "showDiff": false, "actual": { "response": {}, @@ -33927,7 +21977,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:5db8235c-be61-4b85-99ac-8398d25b427d\",\"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-15T05:02:27Z\",\"proofValue\":\"z2md2gGArxP78taUF4mHyov9haon26Tua5Jfe5DgAaAgEuGoaFQ5qwqAFAMx2Ay6M43DN9BLAJTXZrPcmxtvAw8WK\"}},\"options\":{\"checks\":[\"proof\"]}}", + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",\"https://w3id.org/security/suites/ed25519-2020/v1\"],\"id\":\"urn:uuid:33a2ef26-21eb-45ed-81af-9e923d5cd594\",\"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-22T05:02:19Z\",\"proofValue\":\"z3wBGp8aphz6iyc7t1RBrJpisZYLZbXzbWMe5tYMPqVLZ3BtmFmPWZtSWWibc6uEQFqNLcHoyD7MxNJvme4qLyQW3\"}},\"options\":{\"checks\":[\"proof\"]}}", "method": "POST", "json": { "verifiableCredential": { @@ -33935,7 +21985,7 @@ "https://www.w3.org/2018/credentials/v1", "https://w3id.org/security/suites/ed25519-2020/v1" ], - "id": "urn:uuid:5db8235c-be61-4b85-99ac-8398d25b427d", + "id": "urn:uuid:33a2ef26-21eb-45ed-81af-9e923d5cd594", "type": "VerifiableCredential", "issuer": "https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020", "issuanceDate": "2020-03-16T22:37:26.544Z", @@ -33946,8 +21996,8 @@ "verificationMethod": "did:key:z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y#z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y", "type": "Ed25519Signature2020", "proofPurpose": "assertionMethod", - "created": "2024-09-15T05:02:27Z", - "proofValue": "z2md2gGArxP78taUF4mHyov9haon26Tua5Jfe5DgAaAgEuGoaFQ5qwqAFAMx2Ay6M43DN9BLAJTXZrPcmxtvAw8WK" + "created": "2024-09-22T05:02:19Z", + "proofValue": "z3wBGp8aphz6iyc7t1RBrJpisZYLZbXzbWMe5tYMPqVLZ3BtmFmPWZtSWWibc6uEQFqNLcHoyD7MxNJvme4qLyQW3" } }, "options": { @@ -34022,23 +22072,24 @@ "duplex": "half" }, "name": "HTTPError", - "requestUrl": "https://vc-api-dev.energyweb.org/v1/vc-api/credentials/verify", + "requestUrl": "https://vc.apicatalog.com/credentials/verify", "status": 400, "data": { - "message": [ - "verifiableCredential.type must be an array" + "checks": [ + "PROOF", + "INVALID_SIGNATURE" ], - "error": "Bad Request", - "statusCode": 400 + "warnings": [], + "errors": [] } }, "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)" + "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": "LearnCard should verify apicatalog.com", + "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, @@ -34049,25 +22100,25 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "hKLJwcJU4lD36hm3qFLRf", + "parent": "44S12i-2051CZAKzGfMqm", "ctx": null, - "_testId": "urn:uuid:2f363624-06f8-4698-9ba3-854010cf92fe", + "_testId": "urn:uuid:71f299b9-3dc4-44e7-8254-022de8e8b203", "_events": {}, "_eventsCount": 1, "cell": { "rowId": "apicatalog.com", - "columnId": "LearnCard" + "columnId": "Danube Tech" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 49555, + "_idleStart": 45330, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 41, + "duration": 244, "state": "failed", "err": { "name": "AssertionError", @@ -34079,7 +22130,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:5db8235c-be61-4b85-99ac-8398d25b427d\",\"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-15T05:02:27Z\",\"proofValue\":\"z2md2gGArxP78taUF4mHyov9haon26Tua5Jfe5DgAaAgEuGoaFQ5qwqAFAMx2Ay6M43DN9BLAJTXZrPcmxtvAw8WK\"}},\"options\":{\"checks\":[\"proof\"]}}", + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",\"https://w3id.org/security/suites/ed25519-2020/v1\"],\"id\":\"urn:uuid:33a2ef26-21eb-45ed-81af-9e923d5cd594\",\"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-22T05:02:19Z\",\"proofValue\":\"z3wBGp8aphz6iyc7t1RBrJpisZYLZbXzbWMe5tYMPqVLZ3BtmFmPWZtSWWibc6uEQFqNLcHoyD7MxNJvme4qLyQW3\"}},\"options\":{\"checks\":[\"proof\"]}}", "method": "POST", "json": { "verifiableCredential": { @@ -34087,7 +22138,7 @@ "https://www.w3.org/2018/credentials/v1", "https://w3id.org/security/suites/ed25519-2020/v1" ], - "id": "urn:uuid:5db8235c-be61-4b85-99ac-8398d25b427d", + "id": "urn:uuid:33a2ef26-21eb-45ed-81af-9e923d5cd594", "type": "VerifiableCredential", "issuer": "https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020", "issuanceDate": "2020-03-16T22:37:26.544Z", @@ -34098,8 +22149,8 @@ "verificationMethod": "did:key:z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y#z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y", "type": "Ed25519Signature2020", "proofPurpose": "assertionMethod", - "created": "2024-09-15T05:02:27Z", - "proofValue": "z2md2gGArxP78taUF4mHyov9haon26Tua5Jfe5DgAaAgEuGoaFQ5qwqAFAMx2Ay6M43DN9BLAJTXZrPcmxtvAw8WK" + "created": "2024-09-22T05:02:19Z", + "proofValue": "z3wBGp8aphz6iyc7t1RBrJpisZYLZbXzbWMe5tYMPqVLZ3BtmFmPWZtSWWibc6uEQFqNLcHoyD7MxNJvme4qLyQW3" } }, "options": { @@ -34174,9 +22225,11 @@ "duplex": "half" }, "name": "HTTPError", - "requestUrl": "https://bridge.learncard.com/credentials/verify", + "requestUrl": "https://univerifier.io/1.0/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]" + "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)" @@ -34184,7 +22237,7 @@ }, { "type": "test", - "title": "OpSecId should verify apicatalog.com", + "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, @@ -34195,29 +22248,29 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "hKLJwcJU4lD36hm3qFLRf", + "parent": "44S12i-2051CZAKzGfMqm", "ctx": null, - "_testId": "urn:uuid:6288b8c5-d9b2-43fa-90b1-388d00e624c9", + "_testId": "urn:uuid:c920f2ee-9b95-4d27-853b-c4d316dc3558", "_events": {}, "_eventsCount": 1, "cell": { "rowId": "apicatalog.com", - "columnId": "OpSecId" + "columnId": "Digital Bazaar" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 49597, + "_idleStart": 45574, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 29, + "duration": 43, "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: A validation error occured in … { …(6) } to not exist", "showDiff": false, "actual": { "response": {}, @@ -34225,7 +22278,6 @@ "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:5db8235c-be61-4b85-99ac-8398d25b427d\",\"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-15T05:02:27Z\",\"proofValue\":\"z2md2gGArxP78taUF4mHyov9haon26Tua5Jfe5DgAaAgEuGoaFQ5qwqAFAMx2Ay6M43DN9BLAJTXZrPcmxtvAw8WK\"}},\"options\":{\"checks\":[\"proof\"]}}", "method": "POST", "json": { "verifiableCredential": { @@ -34233,7 +22285,7 @@ "https://www.w3.org/2018/credentials/v1", "https://w3id.org/security/suites/ed25519-2020/v1" ], - "id": "urn:uuid:5db8235c-be61-4b85-99ac-8398d25b427d", + "id": "urn:uuid:33a2ef26-21eb-45ed-81af-9e923d5cd594", "type": "VerifiableCredential", "issuer": "https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020", "issuanceDate": "2020-03-16T22:37:26.544Z", @@ -34244,101 +22296,399 @@ "verificationMethod": "did:key:z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y#z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y", "type": "Ed25519Signature2020", "proofPurpose": "assertionMethod", - "created": "2024-09-15T05:02:27Z", - "proofValue": "z2md2gGArxP78taUF4mHyov9haon26Tua5Jfe5DgAaAgEuGoaFQ5qwqAFAMx2Ay6M43DN9BLAJTXZrPcmxtvAw8WK" + "created": "2024-09-22T05:02:19Z", + "proofValue": "z3wBGp8aphz6iyc7t1RBrJpisZYLZbXzbWMe5tYMPqVLZ3BtmFmPWZtSWWibc6uEQFqNLcHoyD7MxNJvme4qLyQW3" + } + }, + "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:33a2ef26-21eb-45ed-81af-9e923d5cd594\",\"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-22T05:02:19Z\",\"proofValue\":\"z3wBGp8aphz6iyc7t1RBrJpisZYLZbXzbWMe5tYMPqVLZ3BtmFmPWZtSWWibc6uEQFqNLcHoyD7MxNJvme4qLyQW3\"}},\"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:33a2ef26-21eb-45ed-81af-9e923d5cd594", + "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-22T05:02:19Z", + "proofValue": "z3wBGp8aphz6iyc7t1RBrJpisZYLZbXzbWMe5tYMPqVLZ3BtmFmPWZtSWWibc6uEQFqNLcHoyD7MxNJvme4qLyQW3" + } + }, + "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:33a2ef26-21eb-45ed-81af-9e923d5cd594", + "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-22T05:02:19Z", + "proofValue": "z3wBGp8aphz6iyc7t1RBrJpisZYLZbXzbWMe5tYMPqVLZ3BtmFmPWZtSWWibc6uEQFqNLcHoyD7MxNJvme4qLyQW3" + } + }, + "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:33a2ef26-21eb-45ed-81af-9e923d5cd594", + "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-22T05:02:19Z", + "proofValue": "z3wBGp8aphz6iyc7t1RBrJpisZYLZbXzbWMe5tYMPqVLZ3BtmFmPWZtSWWibc6uEQFqNLcHoyD7MxNJvme4qLyQW3" + } + } + }, + "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:33a2ef26-21eb-45ed-81af-9e923d5cd594", + "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-22T05:02:19Z", + "proofValue": "z3wBGp8aphz6iyc7t1RBrJpisZYLZbXzbWMe5tYMPqVLZ3BtmFmPWZtSWWibc6uEQFqNLcHoyD7MxNJvme4qLyQW3" + } + }, + "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:33a2ef26-21eb-45ed-81af-9e923d5cd594", + "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-22T05:02:19Z", + "proofValue": "z3wBGp8aphz6iyc7t1RBrJpisZYLZbXzbWMe5tYMPqVLZ3BtmFmPWZtSWWibc6uEQFqNLcHoyD7MxNJvme4qLyQW3" + } + } + }, + "cause": null } - }, - "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 + "httpStatusCode": 400 }, - "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." - ] - } - } + "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: 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: 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": "SpruceID should verify apicatalog.com", + "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, @@ -34349,29 +22699,29 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "hKLJwcJU4lD36hm3qFLRf", + "parent": "44S12i-2051CZAKzGfMqm", "ctx": null, - "_testId": "urn:uuid:9db1a292-5ed7-4481-919e-123f143a4630", + "_testId": "urn:uuid:49d2b166-8eaa-4ef6-b910-d37792c4f325", "_events": {}, "_eventsCount": 1, "cell": { "rowId": "apicatalog.com", - "columnId": "SpruceID" + "columnId": "EWF" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 49626, + "_idleStart": 45618, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 35, + "duration": 99, "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 { …(7) } to not exist", "showDiff": false, "actual": { "response": {}, @@ -34379,7 +22729,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:5db8235c-be61-4b85-99ac-8398d25b427d\",\"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-15T05:02:27Z\",\"proofValue\":\"z2md2gGArxP78taUF4mHyov9haon26Tua5Jfe5DgAaAgEuGoaFQ5qwqAFAMx2Ay6M43DN9BLAJTXZrPcmxtvAw8WK\"}},\"options\":{\"checks\":[\"proof\"]}}", + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",\"https://w3id.org/security/suites/ed25519-2020/v1\"],\"id\":\"urn:uuid:33a2ef26-21eb-45ed-81af-9e923d5cd594\",\"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-22T05:02:19Z\",\"proofValue\":\"z3wBGp8aphz6iyc7t1RBrJpisZYLZbXzbWMe5tYMPqVLZ3BtmFmPWZtSWWibc6uEQFqNLcHoyD7MxNJvme4qLyQW3\"}},\"options\":{\"checks\":[\"proof\"]}}", "method": "POST", "json": { "verifiableCredential": { @@ -34387,7 +22737,7 @@ "https://www.w3.org/2018/credentials/v1", "https://w3id.org/security/suites/ed25519-2020/v1" ], - "id": "urn:uuid:5db8235c-be61-4b85-99ac-8398d25b427d", + "id": "urn:uuid:33a2ef26-21eb-45ed-81af-9e923d5cd594", "type": "VerifiableCredential", "issuer": "https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020", "issuanceDate": "2020-03-16T22:37:26.544Z", @@ -34398,8 +22748,8 @@ "verificationMethod": "did:key:z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y#z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y", "type": "Ed25519Signature2020", "proofPurpose": "assertionMethod", - "created": "2024-09-15T05:02:27Z", - "proofValue": "z2md2gGArxP78taUF4mHyov9haon26Tua5Jfe5DgAaAgEuGoaFQ5qwqAFAMx2Ay6M43DN9BLAJTXZrPcmxtvAw8WK" + "created": "2024-09-22T05:02:19Z", + "proofValue": "z3wBGp8aphz6iyc7t1RBrJpisZYLZbXzbWMe5tYMPqVLZ3BtmFmPWZtSWWibc6uEQFqNLcHoyD7MxNJvme4qLyQW3" } }, "options": { @@ -34474,16 +22824,23 @@ "duplex": "half" }, "name": "HTTPError", - "requestUrl": "https://vc.spruceid.xyz/credentials/verify", - "status": 400 + "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: 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 { …(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": "Trinsic should verify apicatalog.com", + "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, @@ -34494,29 +22851,29 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "hKLJwcJU4lD36hm3qFLRf", + "parent": "44S12i-2051CZAKzGfMqm", "ctx": null, - "_testId": "urn:uuid:83c116ee-ca5b-40fe-8cf0-048962ce0558", + "_testId": "urn:uuid:df8d3901-ca5c-424f-8aae-809458bdac09", "_events": {}, "_eventsCount": 1, "cell": { "rowId": "apicatalog.com", - "columnId": "Trinsic" + "columnId": "LearnCard" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 49662, + "_idleStart": 45718, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 56, + "duration": 42, "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": {}, @@ -34524,7 +22881,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:5db8235c-be61-4b85-99ac-8398d25b427d\",\"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-15T05:02:27Z\",\"proofValue\":\"z2md2gGArxP78taUF4mHyov9haon26Tua5Jfe5DgAaAgEuGoaFQ5qwqAFAMx2Ay6M43DN9BLAJTXZrPcmxtvAw8WK\"}},\"options\":{\"checks\":[\"proof\"]}}", + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",\"https://w3id.org/security/suites/ed25519-2020/v1\"],\"id\":\"urn:uuid:33a2ef26-21eb-45ed-81af-9e923d5cd594\",\"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-22T05:02:19Z\",\"proofValue\":\"z3wBGp8aphz6iyc7t1RBrJpisZYLZbXzbWMe5tYMPqVLZ3BtmFmPWZtSWWibc6uEQFqNLcHoyD7MxNJvme4qLyQW3\"}},\"options\":{\"checks\":[\"proof\"]}}", "method": "POST", "json": { "verifiableCredential": { @@ -34532,7 +22889,7 @@ "https://www.w3.org/2018/credentials/v1", "https://w3id.org/security/suites/ed25519-2020/v1" ], - "id": "urn:uuid:5db8235c-be61-4b85-99ac-8398d25b427d", + "id": "urn:uuid:33a2ef26-21eb-45ed-81af-9e923d5cd594", "type": "VerifiableCredential", "issuer": "https://vc.apicatalog.com/issuer/?suite=Ed25519Signature2020", "issuanceDate": "2020-03-16T22:37:26.544Z", @@ -34543,8 +22900,8 @@ "verificationMethod": "did:key:z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y#z6Mkska8oQD7QQQWxqa7L5ai4mH98HfAdSwomPFYKuqNyE2y", "type": "Ed25519Signature2020", "proofPurpose": "assertionMethod", - "created": "2024-09-15T05:02:27Z", - "proofValue": "z2md2gGArxP78taUF4mHyov9haon26Tua5Jfe5DgAaAgEuGoaFQ5qwqAFAMx2Ay6M43DN9BLAJTXZrPcmxtvAw8WK" + "created": "2024-09-22T05:02:19Z", + "proofValue": "z3wBGp8aphz6iyc7t1RBrJpisZYLZbXzbWMe5tYMPqVLZ3BtmFmPWZtSWWibc6uEQFqNLcHoyD7MxNJvme4qLyQW3" } }, "options": { @@ -34617,268 +22974,19 @@ "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": "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": "hKLJwcJU4lD36hm3qFLRf", - "ctx": null, - "_testId": "urn:uuid:278ef7d6-674a-48e0-a2fb-2bf37e869da0", - "_events": {}, - "_eventsCount": 1, - "cell": { - "rowId": "Danube Tech", - "columnId": "apicatalog.com" - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 49719, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 50, - "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 }", - "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": "hKLJwcJU4lD36hm3qFLRf", - "ctx": null, - "_testId": "urn:uuid:0adb9054-2b98-4a6c-b876-7943d8990329", - "_events": {}, - "_eventsCount": 1, - "cell": { - "rowId": "Danube Tech", - "columnId": "Danube Tech" - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 49769, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 425, - "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 }", - "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": "hKLJwcJU4lD36hm3qFLRf", - "ctx": null, - "_testId": "urn:uuid:48cc9ad8-39cc-4ae5-a4e2-e97992292d7e", - "_events": {}, - "_eventsCount": 1, - "cell": { - "rowId": "Danube Tech", - "columnId": "Digital Bazaar" - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 50194, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 63, - "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 }", - "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": "hKLJwcJU4lD36hm3qFLRf", - "ctx": null, - "_testId": "urn:uuid:219f65c0-3286-41e8-a738-8f91a961da16", - "_events": {}, - "_eventsCount": 1, - "cell": { - "rowId": "Danube Tech", - "columnId": "EWF" - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 50257, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 92, - "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 }", - "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": "hKLJwcJU4lD36hm3qFLRf", - "ctx": null, - "_testId": "urn:uuid:6f38408a-8cc2-40f8-aad4-61964a348d71", - "_events": {}, - "_eventsCount": 1, - "cell": { - "rowId": "Danube Tech", - "columnId": "LearnCard" - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 50350, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 65, - "state": "passed", - "speed": "medium" - }, - { - "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 }", - "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": "hKLJwcJU4lD36hm3qFLRf", - "ctx": null, - "_testId": "urn:uuid:e05b4d3c-7ea1-4cd0-a312-895a8e5d5ca0", - "_events": {}, - "_eventsCount": 1, - "cell": { - "rowId": "Danube Tech", - "columnId": "OpSecId" - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 50415, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 33, - "state": "passed", - "speed": "fast" - }, - { - "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": "hKLJwcJU4lD36hm3qFLRf", - "ctx": null, - "_testId": "urn:uuid:a4daafe0-36f2-4931-8032-c4c4f4142ece", - "_events": {}, - "_eventsCount": 1, - "cell": { - "rowId": "Danube Tech", - "columnId": "SpruceID" - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 50448, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 29, - "state": "passed", - "speed": "fast" + }, + "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": "Trinsic should verify Danube Tech", + "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, @@ -34889,36 +22997,141 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "hKLJwcJU4lD36hm3qFLRf", + "parent": "44S12i-2051CZAKzGfMqm", "ctx": null, - "_testId": "urn:uuid:bafaf908-04c2-4ddc-8f96-f652f7bd6c91", + "_testId": "urn:uuid:90b270b5-eec2-493a-8c2b-0b376dd0a508", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "Danube Tech", - "columnId": "Trinsic" + "rowId": "apicatalog.com", + "columnId": "SpruceID" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 50477, + "_idleStart": 45760, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 51, - "state": "passed", - "speed": "medium" - } - ] - }, - { - "id": "Digital Bazaar", - "cells": [ + "duration": 38, + "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:33a2ef26-21eb-45ed-81af-9e923d5cd594\",\"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-22T05:02:19Z\",\"proofValue\":\"z3wBGp8aphz6iyc7t1RBrJpisZYLZbXzbWMe5tYMPqVLZ3BtmFmPWZtSWWibc6uEQFqNLcHoyD7MxNJvme4qLyQW3\"}},\"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:33a2ef26-21eb-45ed-81af-9e923d5cd594", + "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-22T05:02:19Z", + "proofValue": "z3wBGp8aphz6iyc7t1RBrJpisZYLZbXzbWMe5tYMPqVLZ3BtmFmPWZtSWWibc6uEQFqNLcHoyD7MxNJvme4qLyQW3" + } + }, + "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": "apicatalog.com 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, @@ -34929,31 +23142,146 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "hKLJwcJU4lD36hm3qFLRf", + "parent": "44S12i-2051CZAKzGfMqm", "ctx": null, - "_testId": "urn:uuid:1a4f8bf4-fcfa-4a9a-a990-95a7cb5aaa47", + "_testId": "urn:uuid:d0db2fc7-c484-477c-b942-91d70adaaf2a", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "Digital Bazaar", - "columnId": "apicatalog.com" + "rowId": "apicatalog.com", + "columnId": "Trinsic" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 50528, + "_idleStart": 45798, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 61, - "state": "passed", - "speed": "medium" - }, + "duration": 55, + "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:33a2ef26-21eb-45ed-81af-9e923d5cd594\",\"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-22T05:02:19Z\",\"proofValue\":\"z3wBGp8aphz6iyc7t1RBrJpisZYLZbXzbWMe5tYMPqVLZ3BtmFmPWZtSWWibc6uEQFqNLcHoyD7MxNJvme4qLyQW3\"}},\"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:33a2ef26-21eb-45ed-81af-9e923d5cd594", + "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-22T05:02:19Z", + "proofValue": "z3wBGp8aphz6iyc7t1RBrJpisZYLZbXzbWMe5tYMPqVLZ3BtmFmPWZtSWWibc6uEQFqNLcHoyD7MxNJvme4qLyQW3" + } + }, + "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": "Danube Tech", + "cells": [ { "type": "test", - "title": "Danube Tech should verify Digital Bazaar", + "title": "ACA-py 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, @@ -34964,31 +23292,31 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "hKLJwcJU4lD36hm3qFLRf", + "parent": "44S12i-2051CZAKzGfMqm", "ctx": null, - "_testId": "urn:uuid:546c90b5-6193-4057-9ea7-b054dd536218", + "_testId": "urn:uuid:298c0539-60b0-4697-904f-6f43f405330d", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "Digital Bazaar", - "columnId": "Danube Tech" + "rowId": "Danube Tech", + "columnId": "ACA-py" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 50589, + "_idleStart": 45855, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 428, + "duration": 30, "state": "passed", - "speed": "slow" + "speed": "fast" }, { "type": "test", - "title": "Digital Bazaar should verify Digital Bazaar", + "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, @@ -34999,31 +23327,31 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "hKLJwcJU4lD36hm3qFLRf", + "parent": "44S12i-2051CZAKzGfMqm", "ctx": null, - "_testId": "urn:uuid:a99b800c-829c-4c41-8947-b26fd15e0832", + "_testId": "urn:uuid:140ba55e-de7c-443a-a7da-b19d107ee371", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "Digital Bazaar", - "columnId": "Digital Bazaar" + "rowId": "Danube Tech", + "columnId": "apicatalog.com" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 51017, + "_idleStart": 45885, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 49, + "duration": 56, "state": "passed", "speed": "medium" }, { "type": "test", - "title": "EWF should verify Digital Bazaar", + "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, @@ -35034,66 +23362,31 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "hKLJwcJU4lD36hm3qFLRf", + "parent": "44S12i-2051CZAKzGfMqm", "ctx": null, - "_testId": "urn:uuid:68137cdb-0957-405e-bcc6-a472a38b34f0", + "_testId": "urn:uuid:7c816026-f2e0-4a69-8158-a0a111d9c9dd", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "Digital Bazaar", - "columnId": "EWF" + "rowId": "Danube Tech", + "columnId": "Danube Tech" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 51066, + "_idleStart": 45941, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 92, + "duration": 440, "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": "hKLJwcJU4lD36hm3qFLRf", - "ctx": null, - "_testId": "urn:uuid:23fe84c9-14e7-480f-b031-1ef2a7592e09", - "_events": {}, - "_eventsCount": 1, - "cell": { - "rowId": "Digital Bazaar", - "columnId": "LearnCard" - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 51158, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 68, - "state": "passed", - "speed": "medium" - }, - { - "type": "test", - "title": "OpSecId should verify Digital Bazaar", + "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, @@ -35104,66 +23397,31 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "hKLJwcJU4lD36hm3qFLRf", + "parent": "44S12i-2051CZAKzGfMqm", "ctx": null, - "_testId": "urn:uuid:cd02aaa7-3d0a-4872-931f-33ba77581a8f", + "_testId": "urn:uuid:24edd6d5-a622-401f-aec5-45dd16f42d0c", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "Digital Bazaar", - "columnId": "OpSecId" + "rowId": "Danube Tech", + "columnId": "Digital Bazaar" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 51227, + "_idleStart": 46381, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 38, + "duration": 47, "state": "passed", "speed": "medium" }, { "type": "test", - "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, - "_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": "hKLJwcJU4lD36hm3qFLRf", - "ctx": null, - "_testId": "urn:uuid:6c9022dd-6bf5-40c4-aea5-dcf67d0af299", - "_events": {}, - "_eventsCount": 1, - "cell": { - "rowId": "Digital Bazaar", - "columnId": "SpruceID" - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 51265, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 33, - "state": "passed", - "speed": "fast" - }, - { - "type": "test", - "title": "Trinsic should verify Digital Bazaar", + "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, @@ -35174,190 +23432,31 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "hKLJwcJU4lD36hm3qFLRf", + "parent": "44S12i-2051CZAKzGfMqm", "ctx": null, - "_testId": "urn:uuid:4fc5addd-cd6b-4933-aa7c-3fd73d4d0125", + "_testId": "urn:uuid:3226cc0f-96f3-4d7c-a0ae-21c1c9e7dffc", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "Digital Bazaar", - "columnId": "Trinsic" + "rowId": "Danube Tech", + "columnId": "EWF" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 51298, + "_idleStart": 46428, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 47, + "duration": 92, "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": "hKLJwcJU4lD36hm3qFLRf", - "ctx": null, - "_testId": "urn:uuid:9984dab7-6ff2-4be0-8efc-aac44cddc7ba", - "_events": {}, - "_eventsCount": 1, - "cell": { - "rowId": "EWF", - "columnId": "apicatalog.com" - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 51345, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 60, - "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:8ddc6c8f-46d4-46fd-bfa3-bee5355ca9ac\",\"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-15T05:02:28.163Z\",\"jws\":\"eyJhbGciOiJFZERTQSIsImNyaXQiOlsiYjY0Il0sImI2NCI6ZmFsc2V9..Tz9g1L2nnL6LAoaPMQIWfXaNMaBW6VfCMErA44VVujpQJzQjZHHjuWI0IM3xFqBge70HEoHwYzf0s1Hd4LTDBw\"}},\"options\":{\"checks\":[\"proof\"]}}", - "method": "POST", - "json": { - "verifiableCredential": { - "@context": [ - "https://www.w3.org/2018/credentials/v1" - ], - "id": "urn:uuid:8ddc6c8f-46d4-46fd-bfa3-bee5355ca9ac", - "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-15T05:02:28.163Z", - "jws": "eyJhbGciOiJFZERTQSIsImNyaXQiOlsiYjY0Il0sImI2NCI6ZmFsc2V9..Tz9g1L2nnL6LAoaPMQIWfXaNMaBW6VfCMErA44VVujpQJzQjZHHjuWI0IM3xFqBge70HEoHwYzf0s1Hd4LTDBw" - } - }, - "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_PROOF_CONFIGURATION" - ], - "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)" - } + "speed": "slow" }, { "type": "test", - "title": "Danube Tech 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, @@ -35368,31 +23467,31 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "hKLJwcJU4lD36hm3qFLRf", + "parent": "44S12i-2051CZAKzGfMqm", "ctx": null, - "_testId": "urn:uuid:2cd47f2b-a1ad-42d3-97ec-b8a20262f532", + "_testId": "urn:uuid:3b2aa9fb-31ac-41e6-a6e0-3ab934e005a1", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "EWF", - "columnId": "Danube Tech" + "rowId": "Danube Tech", + "columnId": "LearnCard" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 51405, + "_idleStart": 46521, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 439, + "duration": 60, "state": "passed", - "speed": "slow" + "speed": "medium" }, { "type": "test", - "title": "Digital Bazaar should verify EWF", + "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, @@ -35403,31 +23502,31 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "hKLJwcJU4lD36hm3qFLRf", + "parent": "44S12i-2051CZAKzGfMqm", "ctx": null, - "_testId": "urn:uuid:81d304b8-5818-455b-a207-a84af37b3e6c", + "_testId": "urn:uuid:9c3e791a-b8d8-4a84-8dc9-4a8a991826a0", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "EWF", - "columnId": "Digital Bazaar" + "rowId": "Danube Tech", + "columnId": "SpruceID" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 51844, + "_idleStart": 46582, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 54, + "duration": 45, "state": "passed", "speed": "medium" }, { "type": "test", - "title": "EWF should verify EWF", + "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, @@ -35438,31 +23537,71 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "hKLJwcJU4lD36hm3qFLRf", + "parent": "44S12i-2051CZAKzGfMqm", "ctx": null, - "_testId": "urn:uuid:f7d792a5-0311-41ed-9bbc-b6155e96bbcf", + "_testId": "urn:uuid:4deb0fe6-eee7-43df-9f47-6e48e1825b56", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "EWF", - "columnId": "EWF" + "rowId": "Danube Tech", + "columnId": "Trinsic" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 51898, + "_idleStart": 46627, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 94, + "duration": 47, "state": "passed", - "speed": "slow" + "speed": "medium" + } + ] + }, + { + "id": "Digital Bazaar", + "cells": [ + { + "type": "test", + "title": "ACA-py 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": "44S12i-2051CZAKzGfMqm", + "ctx": null, + "_testId": "urn:uuid:a85d98e0-2569-4b49-bcec-f9b13024004b", + "_events": {}, + "_eventsCount": 1, + "cell": { + "rowId": "Digital Bazaar", + "columnId": "ACA-py" + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 46674, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 36, + "state": "passed", + "speed": "fast" }, { "type": "test", - "title": "LearnCard should verify EWF", + "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, @@ -35473,31 +23612,66 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "hKLJwcJU4lD36hm3qFLRf", + "parent": "44S12i-2051CZAKzGfMqm", "ctx": null, - "_testId": "urn:uuid:b7dba7d0-0f25-4f7c-a04a-76e07d79bb8a", + "_testId": "urn:uuid:6bb627b2-bee9-4c1a-9692-0e6879208e67", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "EWF", - "columnId": "LearnCard" + "rowId": "Digital Bazaar", + "columnId": "apicatalog.com" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 51992, + "_idleStart": 46710, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 91, + "duration": 65, + "state": "passed", + "speed": "medium" + }, + { + "type": "test", + "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, + "_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": "44S12i-2051CZAKzGfMqm", + "ctx": null, + "_testId": "urn:uuid:c90d82c9-4e98-4591-b215-d3209792a491", + "_events": {}, + "_eventsCount": 1, + "cell": { + "rowId": "Digital Bazaar", + "columnId": "Danube Tech" + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 46776, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 426, "state": "passed", "speed": "slow" }, { "type": "test", - "title": "OpSecId 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, @@ -35508,153 +23682,66 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "hKLJwcJU4lD36hm3qFLRf", + "parent": "44S12i-2051CZAKzGfMqm", "ctx": null, - "_testId": "urn:uuid:347b13cb-2bb5-456b-a413-08f9bd506b7f", + "_testId": "urn:uuid:d8529d0d-b7f6-4e0c-8e7d-af9ae9f4371d", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "EWF", - "columnId": "OpSecId" + "rowId": "Digital Bazaar", + "columnId": "Digital Bazaar" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 52084, + "_idleStart": 47202, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 29, - "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:8ddc6c8f-46d4-46fd-bfa3-bee5355ca9ac\",\"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-15T05:02:28.163Z\",\"jws\":\"eyJhbGciOiJFZERTQSIsImNyaXQiOlsiYjY0Il0sImI2NCI6ZmFsc2V9..Tz9g1L2nnL6LAoaPMQIWfXaNMaBW6VfCMErA44VVujpQJzQjZHHjuWI0IM3xFqBge70HEoHwYzf0s1Hd4LTDBw\"}},\"options\":{\"checks\":[\"proof\"]}}", - "method": "POST", - "json": { - "verifiableCredential": { - "@context": [ - "https://www.w3.org/2018/credentials/v1" - ], - "id": "urn:uuid:8ddc6c8f-46d4-46fd-bfa3-bee5355ca9ac", - "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-15T05:02:28.163Z", - "jws": "eyJhbGciOiJFZERTQSIsImNyaXQiOlsiYjY0Il0sImI2NCI6ZmFsc2V9..Tz9g1L2nnL6LAoaPMQIWfXaNMaBW6VfCMErA44VVujpQJzQjZHHjuWI0IM3xFqBge70HEoHwYzf0s1Hd4LTDBw" - } - }, - "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": "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": "44S12i-2051CZAKzGfMqm", + "ctx": null, + "_testId": "urn:uuid:da7ab35d-12eb-4cad-9b74-df40d07dc2d0", + "_events": {}, + "_eventsCount": 1, + "cell": { + "rowId": "Digital Bazaar", + "columnId": "EWF" + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 47243, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 93, + "state": "passed", + "speed": "slow" }, { "type": "test", - "title": "SpruceID should verify EWF", + "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, @@ -35665,31 +23752,31 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "hKLJwcJU4lD36hm3qFLRf", + "parent": "44S12i-2051CZAKzGfMqm", "ctx": null, - "_testId": "urn:uuid:8f4b2adb-b786-4d3c-b8cc-89471b7fa203", + "_testId": "urn:uuid:965a4843-da1a-4091-aa9f-3b5b42c57ec0", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "EWF", - "columnId": "SpruceID" + "rowId": "Digital Bazaar", + "columnId": "LearnCard" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 52114, + "_idleStart": 47337, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 30, + "duration": 72, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", - "title": "Trinsic should verify EWF", + "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, @@ -35700,147 +23787,31 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "hKLJwcJU4lD36hm3qFLRf", + "parent": "44S12i-2051CZAKzGfMqm", "ctx": null, - "_testId": "urn:uuid:5acf35d7-5607-4c74-bef9-cce59a7ffaaa", + "_testId": "urn:uuid:b958d2eb-499d-4d4d-93cf-f09d2d2d4b3a", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "EWF", - "columnId": "Trinsic" + "rowId": "Digital Bazaar", + "columnId": "SpruceID" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 52144, + "_idleStart": 47409, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 33, - "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:8ddc6c8f-46d4-46fd-bfa3-bee5355ca9ac\",\"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-15T05:02:28.163Z\",\"jws\":\"eyJhbGciOiJFZERTQSIsImNyaXQiOlsiYjY0Il0sImI2NCI6ZmFsc2V9..Tz9g1L2nnL6LAoaPMQIWfXaNMaBW6VfCMErA44VVujpQJzQjZHHjuWI0IM3xFqBge70HEoHwYzf0s1Hd4LTDBw\"}},\"options\":{\"checks\":[\"proof\"]}}", - "method": "POST", - "json": { - "verifiableCredential": { - "@context": [ - "https://www.w3.org/2018/credentials/v1" - ], - "id": "urn:uuid:8ddc6c8f-46d4-46fd-bfa3-bee5355ca9ac", - "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-15T05:02:28.163Z", - "jws": "eyJhbGciOiJFZERTQSIsImNyaXQiOlsiYjY0Il0sImI2NCI6ZmFsc2V9..Tz9g1L2nnL6LAoaPMQIWfXaNMaBW6VfCMErA44VVujpQJzQjZHHjuWI0IM3xFqBge70HEoHwYzf0s1Hd4LTDBw" - } - }, - "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": 42, + "state": "passed", + "speed": "medium" + }, { "type": "test", - "title": "apicatalog.com 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, @@ -35851,31 +23822,36 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "hKLJwcJU4lD36hm3qFLRf", + "parent": "44S12i-2051CZAKzGfMqm", "ctx": null, - "_testId": "urn:uuid:6732570d-d913-48bc-bdb4-3440b36b5f5c", + "_testId": "urn:uuid:b8452669-ccab-427c-b7d7-f604bd7048c6", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "LearnCard", - "columnId": "apicatalog.com" + "rowId": "Digital Bazaar", + "columnId": "Trinsic" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 52177, + "_idleStart": 47452, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 54, + "duration": 51, "state": "passed", "speed": "medium" - }, + } + ] + }, + { + "id": "EWF", + "cells": [ { "type": "test", - "title": "Danube Tech should verify LearnCard", + "title": "ACA-py 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, @@ -35886,25 +23862,25 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "hKLJwcJU4lD36hm3qFLRf", + "parent": "44S12i-2051CZAKzGfMqm", "ctx": null, - "_testId": "urn:uuid:62f72114-76e9-487f-ab23-9a85afe88b41", + "_testId": "urn:uuid:1d3c9ec3-46b2-436f-8023-025d89d53bda", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "LearnCard", - "columnId": "Danube Tech" + "rowId": "EWF", + "columnId": "ACA-py" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 52231, + "_idleStart": 47502, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 435, + "duration": 27, "state": "failed", "err": { "name": "AssertionError", @@ -35916,31 +23892,28 @@ "options": { "credentials": "same-origin", "headers": {}, - "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\"],\"id\":\"urn:uuid:7f879ad3-b43a-4ae0-bfb7-edcc642edc1d\",\"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\":\"z4os6XJXcLUqhRUFTBCbMAS21G4DWRd9iyfo1K1whQNgrEsL775E1t9aZYHvPiYQjo4hK4Wmn8sE3w4NTHEJJH9a\",\"verificationMethod\":\"did:key:z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh#z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh\",\"created\":\"2024-09-15T05:02:28.261Z\"}},\"options\":{\"checks\":[\"proof\"]}}", + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\"],\"id\":\"urn:uuid:032f8964-fa3f-45fd-b240-282af0e0f498\",\"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-22T05:02:20.542Z\",\"jws\":\"eyJhbGciOiJFZERTQSIsImNyaXQiOlsiYjY0Il0sImI2NCI6ZmFsc2V9..OsnQ5iM55-T7fg0yLFbbXjreq4EonvrmGfKEqBODiZypf2AvPG_SuowAkH-VTPp16-VBr_BVicCgEvetvwNOAQ\"}},\"options\":{\"checks\":[\"proof\"]}}", "method": "POST", "json": { "verifiableCredential": { "@context": [ "https://www.w3.org/2018/credentials/v1" ], - "id": "urn:uuid:7f879ad3-b43a-4ae0-bfb7-edcc642edc1d", + "id": "urn:uuid:032f8964-fa3f-45fd-b240-282af0e0f498", "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": "z4os6XJXcLUqhRUFTBCbMAS21G4DWRd9iyfo1K1whQNgrEsL775E1t9aZYHvPiYQjo4hK4Wmn8sE3w4NTHEJJH9a", - "verificationMethod": "did:key:z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh#z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh", - "created": "2024-09-15T05:02:28.261Z" + "verificationMethod": "did:key:z6MksoRPRqnMWiivV4weRGGS9SiHXuqfJEYu95EiYtbvBxW6#z6MksoRPRqnMWiivV4weRGGS9SiHXuqfJEYu95EiYtbvBxW6", + "created": "2024-09-22T05:02:20.542Z", + "jws": "eyJhbGciOiJFZERTQSIsImNyaXQiOlsiYjY0Il0sImI2NCI6ZmFsc2V9..OsnQ5iM55-T7fg0yLFbbXjreq4EonvrmGfKEqBODiZypf2AvPG_SuowAkH-VTPp16-VBr_BVicCgEvetvwNOAQ" } }, "options": { @@ -36015,12 +23988,18 @@ "duplex": "half" }, "name": "HTTPError", - "requestUrl": "https://univerifier.io/1.0/credentials/verify", - "status": 400, + "requestUrl": "https://aca-py.test-suite.app/vc/credentials/verify", + "status": 422, "data": { - "checks": [ - "proof" - ] + "json": { + "verifiableCredential": { + "proof": { + "proofValue": [ + "Missing data for required field." + ] + } + } + } } }, "operator": "notStrictEqual", @@ -36029,7 +24008,7 @@ }, { "type": "test", - "title": "Digital Bazaar should verify LearnCard", + "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, @@ -36040,25 +24019,25 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "hKLJwcJU4lD36hm3qFLRf", + "parent": "44S12i-2051CZAKzGfMqm", "ctx": null, - "_testId": "urn:uuid:ed527870-9015-4bd6-8bf4-3576166a5ac6", + "_testId": "urn:uuid:56b247db-3e65-4dbe-a0ec-2d547348c6be", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "LearnCard", - "columnId": "Digital Bazaar" + "rowId": "EWF", + "columnId": "apicatalog.com" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 52666, + "_idleStart": 47531, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 43, + "duration": 58, "state": "failed", "err": { "name": "AssertionError", @@ -36070,30 +24049,28 @@ "options": { "credentials": "same-origin", "headers": {}, + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\"],\"id\":\"urn:uuid:032f8964-fa3f-45fd-b240-282af0e0f498\",\"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-22T05:02:20.542Z\",\"jws\":\"eyJhbGciOiJFZERTQSIsImNyaXQiOlsiYjY0Il0sImI2NCI6ZmFsc2V9..OsnQ5iM55-T7fg0yLFbbXjreq4EonvrmGfKEqBODiZypf2AvPG_SuowAkH-VTPp16-VBr_BVicCgEvetvwNOAQ\"}},\"options\":{\"checks\":[\"proof\"]}}", "method": "POST", "json": { "verifiableCredential": { "@context": [ "https://www.w3.org/2018/credentials/v1" ], - "id": "urn:uuid:7f879ad3-b43a-4ae0-bfb7-edcc642edc1d", + "id": "urn:uuid:032f8964-fa3f-45fd-b240-282af0e0f498", "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": "z4os6XJXcLUqhRUFTBCbMAS21G4DWRd9iyfo1K1whQNgrEsL775E1t9aZYHvPiYQjo4hK4Wmn8sE3w4NTHEJJH9a", - "verificationMethod": "did:key:z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh#z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh", - "created": "2024-09-15T05:02:28.261Z" + "verificationMethod": "did:key:z6MksoRPRqnMWiivV4weRGGS9SiHXuqfJEYu95EiYtbvBxW6#z6MksoRPRqnMWiivV4weRGGS9SiHXuqfJEYu95EiYtbvBxW6", + "created": "2024-09-22T05:02:20.542Z", + "jws": "eyJhbGciOiJFZERTQSIsImNyaXQiOlsiYjY0Il0sImI2NCI6ZmFsc2V9..OsnQ5iM55-T7fg0yLFbbXjreq4EonvrmGfKEqBODiZypf2AvPG_SuowAkH-VTPp16-VBr_BVicCgEvetvwNOAQ" } }, "options": { @@ -36165,34 +24142,18 @@ "throwHttpErrors": true, "timeout": 10000, "signal": {}, - "duplex": "half", - "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\"],\"id\":\"urn:uuid:7f879ad3-b43a-4ae0-bfb7-edcc642edc1d\",\"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\":\"z4os6XJXcLUqhRUFTBCbMAS21G4DWRd9iyfo1K1whQNgrEsL775E1t9aZYHvPiYQjo4hK4Wmn8sE3w4NTHEJJH9a\",\"verificationMethod\":\"did:key:z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh#z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh\",\"created\":\"2024-09-15T05:02:28.261Z\"}},\"options\":{\"checks\":[\"proof\"]}}" + "duplex": "half" }, "name": "HTTPError", - "requestUrl": "https://vc2.veresverifier.dev/verifiers/z19w7KofwvE2nkJeRVLp8NDxz/credentials/verify", + "requestUrl": "https://vc.apicatalog.com/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:7f879ad3-b43a-4ae0-bfb7-edcc642edc1d", - "error": "Did not verify any proofs; insufficient proofs matched the acceptable suite(s) and required purpose(s)." - } - ] + "PROOF", + "INVALID_PROOF_CONFIGURATION" + ], + "warnings": [], + "errors": [] } }, "operator": "notStrictEqual", @@ -36201,7 +24162,42 @@ }, { "type": "test", - "title": "EWF 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, + "_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": "44S12i-2051CZAKzGfMqm", + "ctx": null, + "_testId": "urn:uuid:7d700eed-8257-4cdb-9667-94f1cd0b2c37", + "_events": {}, + "_eventsCount": 1, + "cell": { + "rowId": "EWF", + "columnId": "Danube Tech" + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 47589, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 428, + "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, @@ -36212,31 +24208,66 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "hKLJwcJU4lD36hm3qFLRf", + "parent": "44S12i-2051CZAKzGfMqm", "ctx": null, - "_testId": "urn:uuid:c0f063c3-d02d-418f-bcb5-6695cd90521f", + "_testId": "urn:uuid:db610716-7676-43f7-a5bd-c70a466d3497", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "LearnCard", + "rowId": "EWF", + "columnId": "Digital Bazaar" + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 48017, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 60, + "state": "passed", + "speed": "medium" + }, + { + "type": "test", + "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, + "_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": "44S12i-2051CZAKzGfMqm", + "ctx": null, + "_testId": "urn:uuid:8bf0cb4e-1a51-4352-b6d5-7917f30d6331", + "_events": {}, + "_eventsCount": 1, + "cell": { + "rowId": "EWF", "columnId": "EWF" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 52709, + "_idleStart": 48077, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 113, + "duration": 93, "state": "passed", "speed": "slow" }, { "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, @@ -36247,31 +24278,66 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "hKLJwcJU4lD36hm3qFLRf", + "parent": "44S12i-2051CZAKzGfMqm", "ctx": null, - "_testId": "urn:uuid:ac0d50ad-f592-435a-9ad7-ed9932115135", + "_testId": "urn:uuid:f861986e-a813-470d-9113-c9d8a2c7ba4a", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "LearnCard", + "rowId": "EWF", "columnId": "LearnCard" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 52822, + "_idleStart": 48170, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 73, + "duration": 81, + "state": "passed", + "speed": "slow" + }, + { + "type": "test", + "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, + "_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": "44S12i-2051CZAKzGfMqm", + "ctx": null, + "_testId": "urn:uuid:a1a85528-dfc0-409c-b218-63cfb7dd875d", + "_events": {}, + "_eventsCount": 1, + "cell": { + "rowId": "EWF", + "columnId": "SpruceID" + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 48251, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 45, "state": "passed", "speed": "medium" }, { "type": "test", - "title": "OpSecId 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, @@ -36282,25 +24348,25 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "hKLJwcJU4lD36hm3qFLRf", + "parent": "44S12i-2051CZAKzGfMqm", "ctx": null, - "_testId": "urn:uuid:3cda96dd-0f3b-4707-80f5-9f9b73f9b221", + "_testId": "urn:uuid:d71ac02a-f7f3-478f-928e-83db4e3960dc", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "LearnCard", - "columnId": "OpSecId" + "rowId": "EWF", + "columnId": "Trinsic" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 52895, + "_idleStart": 48296, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 38, + "duration": 28, "state": "failed", "err": { "name": "AssertionError", @@ -36312,31 +24378,28 @@ "options": { "credentials": "same-origin", "headers": {}, - "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\"],\"id\":\"urn:uuid:7f879ad3-b43a-4ae0-bfb7-edcc642edc1d\",\"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\":\"z4os6XJXcLUqhRUFTBCbMAS21G4DWRd9iyfo1K1whQNgrEsL775E1t9aZYHvPiYQjo4hK4Wmn8sE3w4NTHEJJH9a\",\"verificationMethod\":\"did:key:z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh#z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh\",\"created\":\"2024-09-15T05:02:28.261Z\"}},\"options\":{\"checks\":[\"proof\"]}}", + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\"],\"id\":\"urn:uuid:032f8964-fa3f-45fd-b240-282af0e0f498\",\"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-22T05:02:20.542Z\",\"jws\":\"eyJhbGciOiJFZERTQSIsImNyaXQiOlsiYjY0Il0sImI2NCI6ZmFsc2V9..OsnQ5iM55-T7fg0yLFbbXjreq4EonvrmGfKEqBODiZypf2AvPG_SuowAkH-VTPp16-VBr_BVicCgEvetvwNOAQ\"}},\"options\":{\"checks\":[\"proof\"]}}", "method": "POST", "json": { "verifiableCredential": { "@context": [ "https://www.w3.org/2018/credentials/v1" ], - "id": "urn:uuid:7f879ad3-b43a-4ae0-bfb7-edcc642edc1d", + "id": "urn:uuid:032f8964-fa3f-45fd-b240-282af0e0f498", "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": "z4os6XJXcLUqhRUFTBCbMAS21G4DWRd9iyfo1K1whQNgrEsL775E1t9aZYHvPiYQjo4hK4Wmn8sE3w4NTHEJJH9a", - "verificationMethod": "did:key:z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh#z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh", - "created": "2024-09-15T05:02:28.261Z" + "verificationMethod": "did:key:z6MksoRPRqnMWiivV4weRGGS9SiHXuqfJEYu95EiYtbvBxW6#z6MksoRPRqnMWiivV4weRGGS9SiHXuqfJEYu95EiYtbvBxW6", + "created": "2024-09-22T05:02:20.542Z", + "jws": "eyJhbGciOiJFZERTQSIsImNyaXQiOlsiYjY0Il0sImI2NCI6ZmFsc2V9..OsnQ5iM55-T7fg0yLFbbXjreq4EonvrmGfKEqBODiZypf2AvPG_SuowAkH-VTPp16-VBr_BVicCgEvetvwNOAQ" } }, "options": { @@ -36411,126 +24474,21 @@ "duplex": "half" }, "name": "HTTPError", - "requestUrl": "https://agent.opsec.id/vc/credentials/verify", - "status": 500 + "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)" } - }, - { - "type": "test", - "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": "hKLJwcJU4lD36hm3qFLRf", - "ctx": null, - "_testId": "urn:uuid:0a17a7d6-2d3d-4262-8e90-bde6ce8ef370", - "_events": {}, - "_eventsCount": 1, - "cell": { - "rowId": "LearnCard", - "columnId": "SpruceID" - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 52934, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 25, - "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": "hKLJwcJU4lD36hm3qFLRf", - "ctx": null, - "_testId": "urn:uuid:4f1ceeff-f161-4ddf-b820-72a6557ef0ba", - "_events": {}, - "_eventsCount": 1, - "cell": { - "rowId": "LearnCard", - "columnId": "Trinsic" - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 52959, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 45, - "state": "passed", - "speed": "medium" } ] }, { - "id": "OpSecId", + "id": "LearnCard", "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": "hKLJwcJU4lD36hm3qFLRf", - "ctx": null, - "_testId": "urn:uuid:057ed9f0-64fe-4cfe-a38b-e3f9ecdcfc92", - "_events": {}, - "_eventsCount": 1, - "cell": { - "rowId": "OpSecId", - "columnId": "apicatalog.com" - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 53004, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 60, - "state": "passed", - "speed": "medium" - }, - { - "type": "test", - "title": "Danube Tech should verify OpSecId", + "title": "ACA-py 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, @@ -36541,31 +24499,145 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "hKLJwcJU4lD36hm3qFLRf", + "parent": "44S12i-2051CZAKzGfMqm", "ctx": null, - "_testId": "urn:uuid:a98ccd2d-915e-40e9-a2ff-5d5f97f67e27", + "_testId": "urn:uuid:65b8475d-f681-4655-9d4c-c2a7e3d2986a", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "OpSecId", - "columnId": "Danube Tech" + "rowId": "LearnCard", + "columnId": "ACA-py" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 53064, + "_idleStart": 48324, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 474, - "state": "passed", - "speed": "slow" + "duration": 47, + "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:9164b7aa-4b87-405f-b124-92d36a404e36\",\"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\":\"z4wND2W89Yh3brzeK7PhTCLkrrem883ptgcJH7vegUrsirYC98ebee1LVzgapNqE6ZvA5HEM3enUPYXTedkA7KHUR\",\"verificationMethod\":\"did:key:z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh#z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh\",\"created\":\"2024-09-22T05:02:20.640Z\"}},\"options\":{\"checks\":[\"proof\"]}}", + "method": "POST", + "json": { + "verifiableCredential": { + "@context": [ + "https://www.w3.org/2018/credentials/v1" + ], + "id": "urn:uuid:9164b7aa-4b87-405f-b124-92d36a404e36", + "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": "z4wND2W89Yh3brzeK7PhTCLkrrem883ptgcJH7vegUrsirYC98ebee1LVzgapNqE6ZvA5HEM3enUPYXTedkA7KHUR", + "verificationMethod": "did:key:z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh#z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh", + "created": "2024-09-22T05:02:20.640Z" + } + }, + "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://aca-py.test-suite.app/vc/credentials/verify", + "status": 500 + }, + "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": "Digital Bazaar should verify OpSecId", + "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, @@ -36576,31 +24648,31 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "hKLJwcJU4lD36hm3qFLRf", + "parent": "44S12i-2051CZAKzGfMqm", "ctx": null, - "_testId": "urn:uuid:eea53861-578b-4892-9b17-f304ef8fecab", + "_testId": "urn:uuid:07494b3a-0e38-43ca-a213-1de7a9e08faf", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "OpSecId", - "columnId": "Digital Bazaar" + "rowId": "LearnCard", + "columnId": "apicatalog.com" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 53539, + "_idleStart": 48372, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 56, + "duration": 63, "state": "passed", "speed": "medium" }, { "type": "test", - "title": "EWF 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, @@ -36611,25 +24683,25 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "hKLJwcJU4lD36hm3qFLRf", + "parent": "44S12i-2051CZAKzGfMqm", "ctx": null, - "_testId": "urn:uuid:36cf381e-48f4-4e90-b1bc-9de6c2fc511f", + "_testId": "urn:uuid:52aa4411-2a08-4ac4-9c7d-ac3abf1bf0a3", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "OpSecId", - "columnId": "EWF" + "rowId": "LearnCard", + "columnId": "Danube Tech" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 53596, + "_idleStart": 48436, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 99, + "duration": 478, "state": "failed", "err": { "name": "AssertionError", @@ -36641,29 +24713,31 @@ "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:39a76544-f506-4eb9-9710-d9c994a9d5cc\",\"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-15T05:02:28+00:00\",\"proofValue\":\"z21Akb7KecuFsttSWWBpppojaq16ycdjYfUftUpz2qrfJge44LeWGrdFW6oDdskgEq8y7fXXYEVJAeRrfF43r35cn\"}},\"options\":{\"checks\":[\"proof\"]}}", + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\"],\"id\":\"urn:uuid:9164b7aa-4b87-405f-b124-92d36a404e36\",\"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\":\"z4wND2W89Yh3brzeK7PhTCLkrrem883ptgcJH7vegUrsirYC98ebee1LVzgapNqE6ZvA5HEM3enUPYXTedkA7KHUR\",\"verificationMethod\":\"did:key:z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh#z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh\",\"created\":\"2024-09-22T05:02:20.640Z\"}},\"options\":{\"checks\":[\"proof\"]}}", "method": "POST", "json": { "verifiableCredential": { "@context": [ - "https://www.w3.org/2018/credentials/v1", - "https://w3id.org/security/suites/ed25519-2020/v1" + "https://www.w3.org/2018/credentials/v1" ], - "id": "urn:uuid:39a76544-f506-4eb9-9710-d9c994a9d5cc", + "id": "urn:uuid:9164b7aa-4b87-405f-b124-92d36a404e36", "type": [ "VerifiableCredential" ], - "issuer": "did:key:z6MkmiYjSToh5NdEf9xNuh5mDGXGYinzcAy1s4feRHtkEQJr", - "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", - "verificationMethod": "did:key:z6MkmiYjSToh5NdEf9xNuh5mDGXGYinzcAy1s4feRHtkEQJr#z6MkmiYjSToh5NdEf9xNuh5mDGXGYinzcAy1s4feRHtkEQJr", "proofPurpose": "assertionMethod", - "created": "2024-09-15T05:02:28+00:00", - "proofValue": "z21Akb7KecuFsttSWWBpppojaq16ycdjYfUftUpz2qrfJge44LeWGrdFW6oDdskgEq8y7fXXYEVJAeRrfF43r35cn" + "proofValue": "z4wND2W89Yh3brzeK7PhTCLkrrem883ptgcJH7vegUrsirYC98ebee1LVzgapNqE6ZvA5HEM3enUPYXTedkA7KHUR", + "verificationMethod": "did:key:z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh#z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh", + "created": "2024-09-22T05:02:20.640Z" } }, "options": { @@ -36738,15 +24812,11 @@ "duplex": "half" }, "name": "HTTPError", - "requestUrl": "https://vc-api-dev.energyweb.org/v1/vc-api/credentials/verify", + "requestUrl": "https://univerifier.io/1.0/credentials/verify", "status": 400, "data": { "checks": [ "proof" - ], - "warnings": [], - "errors": [ - "signature error: Verification equation was not satisfied" ] } }, @@ -36756,7 +24826,7 @@ }, { "type": "test", - "title": "LearnCard 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, @@ -36767,25 +24837,25 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "hKLJwcJU4lD36hm3qFLRf", + "parent": "44S12i-2051CZAKzGfMqm", "ctx": null, - "_testId": "urn:uuid:a3fb8b9a-25c4-457c-9149-8389cafcab7f", + "_testId": "urn:uuid:70ecea1a-6993-47ec-bee0-542822983cbb", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "OpSecId", - "columnId": "LearnCard" + "rowId": "LearnCard", + "columnId": "Digital Bazaar" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 53696, + "_idleStart": 48915, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 77, + "duration": 46, "state": "failed", "err": { "name": "AssertionError", @@ -36797,29 +24867,30 @@ "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:39a76544-f506-4eb9-9710-d9c994a9d5cc\",\"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-15T05:02:28+00:00\",\"proofValue\":\"z21Akb7KecuFsttSWWBpppojaq16ycdjYfUftUpz2qrfJge44LeWGrdFW6oDdskgEq8y7fXXYEVJAeRrfF43r35cn\"}},\"options\":{\"checks\":[\"proof\"]}}", "method": "POST", "json": { "verifiableCredential": { "@context": [ - "https://www.w3.org/2018/credentials/v1", - "https://w3id.org/security/suites/ed25519-2020/v1" + "https://www.w3.org/2018/credentials/v1" ], - "id": "urn:uuid:39a76544-f506-4eb9-9710-d9c994a9d5cc", + "id": "urn:uuid:9164b7aa-4b87-405f-b124-92d36a404e36", "type": [ "VerifiableCredential" ], - "issuer": "did:key:z6MkmiYjSToh5NdEf9xNuh5mDGXGYinzcAy1s4feRHtkEQJr", - "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", - "verificationMethod": "did:key:z6MkmiYjSToh5NdEf9xNuh5mDGXGYinzcAy1s4feRHtkEQJr#z6MkmiYjSToh5NdEf9xNuh5mDGXGYinzcAy1s4feRHtkEQJr", "proofPurpose": "assertionMethod", - "created": "2024-09-15T05:02:28+00:00", - "proofValue": "z21Akb7KecuFsttSWWBpppojaq16ycdjYfUftUpz2qrfJge44LeWGrdFW6oDdskgEq8y7fXXYEVJAeRrfF43r35cn" + "proofValue": "z4wND2W89Yh3brzeK7PhTCLkrrem883ptgcJH7vegUrsirYC98ebee1LVzgapNqE6ZvA5HEM3enUPYXTedkA7KHUR", + "verificationMethod": "did:key:z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh#z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh", + "created": "2024-09-22T05:02:20.640Z" } }, "options": { @@ -36891,19 +24962,33 @@ "throwHttpErrors": true, "timeout": 10000, "signal": {}, - "duplex": "half" + "duplex": "half", + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\"],\"id\":\"urn:uuid:9164b7aa-4b87-405f-b124-92d36a404e36\",\"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\":\"z4wND2W89Yh3brzeK7PhTCLkrrem883ptgcJH7vegUrsirYC98ebee1LVzgapNqE6ZvA5HEM3enUPYXTedkA7KHUR\",\"verificationMethod\":\"did:key:z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh#z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh\",\"created\":\"2024-09-22T05:02:20.640Z\"}},\"options\":{\"checks\":[\"proof\"]}}" }, "name": "HTTPError", - "requestUrl": "https://bridge.learncard.com/credentials/verify", + "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": [ - "proof", - "expiration" - ], - "warnings": [], - "errors": [ - "signature error: Verification equation was not satisfied" + { + "check": [ + "proof" + ], + "id": "urn:uuid:9164b7aa-4b87-405f-b124-92d36a404e36", + "error": "Did not verify any proofs; insufficient proofs matched the acceptable suite(s) and required purpose(s)." + } ] } }, @@ -36913,7 +24998,42 @@ }, { "type": "test", - "title": "OpSecId 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": "44S12i-2051CZAKzGfMqm", + "ctx": null, + "_testId": "urn:uuid:1329da91-942c-4cb4-be4d-b28020008176", + "_events": {}, + "_eventsCount": 1, + "cell": { + "rowId": "LearnCard", + "columnId": "EWF" + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 48962, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 92, + "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, @@ -36924,31 +25044,31 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "hKLJwcJU4lD36hm3qFLRf", + "parent": "44S12i-2051CZAKzGfMqm", "ctx": null, - "_testId": "urn:uuid:ff86fdc4-73f3-417d-a71b-68816cd05a02", + "_testId": "urn:uuid:39f15d5b-4787-4f06-8f99-6a1ddda7ef49", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "OpSecId", - "columnId": "OpSecId" + "rowId": "LearnCard", + "columnId": "LearnCard" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 53774, + "_idleStart": 49054, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 38, + "duration": 56, "state": "passed", "speed": "medium" }, { "type": "test", - "title": "SpruceID 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, @@ -36959,25 +25079,25 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "hKLJwcJU4lD36hm3qFLRf", + "parent": "44S12i-2051CZAKzGfMqm", "ctx": null, - "_testId": "urn:uuid:e07141e1-1cb3-4d72-93b7-f950d3725a21", + "_testId": "urn:uuid:75e2dc9a-8de3-4500-8d5a-0ab59dd42eeb", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "OpSecId", + "rowId": "LearnCard", "columnId": "SpruceID" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 53812, + "_idleStart": 49110, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 29, + "duration": 42, "state": "failed", "err": { "name": "AssertionError", @@ -36989,29 +25109,31 @@ "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:39a76544-f506-4eb9-9710-d9c994a9d5cc\",\"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-15T05:02:28+00:00\",\"proofValue\":\"z21Akb7KecuFsttSWWBpppojaq16ycdjYfUftUpz2qrfJge44LeWGrdFW6oDdskgEq8y7fXXYEVJAeRrfF43r35cn\"}},\"options\":{\"checks\":[\"proof\"]}}", + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\"],\"id\":\"urn:uuid:9164b7aa-4b87-405f-b124-92d36a404e36\",\"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\":\"z4wND2W89Yh3brzeK7PhTCLkrrem883ptgcJH7vegUrsirYC98ebee1LVzgapNqE6ZvA5HEM3enUPYXTedkA7KHUR\",\"verificationMethod\":\"did:key:z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh#z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh\",\"created\":\"2024-09-22T05:02:20.640Z\"}},\"options\":{\"checks\":[\"proof\"]}}", "method": "POST", "json": { "verifiableCredential": { "@context": [ - "https://www.w3.org/2018/credentials/v1", - "https://w3id.org/security/suites/ed25519-2020/v1" + "https://www.w3.org/2018/credentials/v1" ], - "id": "urn:uuid:39a76544-f506-4eb9-9710-d9c994a9d5cc", + "id": "urn:uuid:9164b7aa-4b87-405f-b124-92d36a404e36", "type": [ "VerifiableCredential" ], - "issuer": "did:key:z6MkmiYjSToh5NdEf9xNuh5mDGXGYinzcAy1s4feRHtkEQJr", - "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", - "verificationMethod": "did:key:z6MkmiYjSToh5NdEf9xNuh5mDGXGYinzcAy1s4feRHtkEQJr#z6MkmiYjSToh5NdEf9xNuh5mDGXGYinzcAy1s4feRHtkEQJr", "proofPurpose": "assertionMethod", - "created": "2024-09-15T05:02:28+00:00", - "proofValue": "z21Akb7KecuFsttSWWBpppojaq16ycdjYfUftUpz2qrfJge44LeWGrdFW6oDdskgEq8y7fXXYEVJAeRrfF43r35cn" + "proofValue": "z4wND2W89Yh3brzeK7PhTCLkrrem883ptgcJH7vegUrsirYC98ebee1LVzgapNqE6ZvA5HEM3enUPYXTedkA7KHUR", + "verificationMethod": "did:key:z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh#z6MkjSz4mYqcn7dePGuktJ5PxecMkXQQHWRg8Lm6okATyFVh", + "created": "2024-09-22T05:02:20.640Z" } }, "options": { @@ -37095,7 +25217,7 @@ }, { "type": "test", - "title": "Trinsic should verify OpSecId", + "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, @@ -37106,25 +25228,25 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "hKLJwcJU4lD36hm3qFLRf", + "parent": "44S12i-2051CZAKzGfMqm", "ctx": null, - "_testId": "urn:uuid:b34156d2-4b5f-45d8-93b3-e9f20e1e7551", + "_testId": "urn:uuid:f594cedd-841a-42c8-b992-839a4e81fc45", "_events": {}, "_eventsCount": 1, "cell": { - "rowId": "OpSecId", + "rowId": "LearnCard", "columnId": "Trinsic" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 53843, + "_idleStart": 49153, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 55, + "duration": 45, "state": "passed", "speed": "medium" } @@ -37133,6 +25255,41 @@ { "id": "SpruceID", "cells": [ + { + "type": "test", + "title": "ACA-py should verify SpruceID", + "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": "44S12i-2051CZAKzGfMqm", + "ctx": null, + "_testId": "urn:uuid:ac753f1e-b743-40df-96ac-da51dc004b9c", + "_events": {}, + "_eventsCount": 1, + "cell": { + "rowId": "SpruceID", + "columnId": "ACA-py" + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 49198, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 29, + "state": "passed", + "speed": "fast" + }, { "type": "test", "title": "apicatalog.com should verify SpruceID", @@ -37146,9 +25303,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "hKLJwcJU4lD36hm3qFLRf", + "parent": "44S12i-2051CZAKzGfMqm", "ctx": null, - "_testId": "urn:uuid:a5096ce6-21bd-474b-be38-d1452e847d1a", + "_testId": "urn:uuid:ed354a55-748d-4ef7-8e4d-e97c790481d1", "_events": {}, "_eventsCount": 1, "cell": { @@ -37159,12 +25316,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 53898, + "_idleStart": 49227, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 56, + "duration": 60, "state": "failed", "err": { "name": "AssertionError", @@ -37176,7 +25333,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:ba23aa52-84f7-4cb1-94e8-12bce5b4ab63\",\"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\":\"z5Uh2pQ27qiQ91wAwkKmKcqc2eXWudcMum1XmR21SgYerpERMRcFPjBBPt3TVz4T43TT5HA6qNnmG3uGfj4xmo9XB\"}},\"options\":{\"checks\":[\"proof\"]}}", + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",\"https://w3id.org/security/suites/ed25519-2020/v1\"],\"id\":\"urn:uuid:e4482512-dcbd-4871-b84c-66915375696d\",\"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\":\"z5hTfScdq4fCt2v9ASaYdmGXMph1YFRSgBRVGcHkfk1tLcJiSY5uj25idveJeEmveYxwJH4r9BAoBHWks3wf73WP7\"}},\"options\":{\"checks\":[\"proof\"]}}", "method": "POST", "json": { "verifiableCredential": { @@ -37184,7 +25341,7 @@ "https://www.w3.org/2018/credentials/v1", "https://w3id.org/security/suites/ed25519-2020/v1" ], - "id": "urn:uuid:ba23aa52-84f7-4cb1-94e8-12bce5b4ab63", + "id": "urn:uuid:e4482512-dcbd-4871-b84c-66915375696d", "type": [ "VerifiableCredential" ], @@ -37197,7 +25354,7 @@ "type": "Ed25519Signature2020", "verificationMethod": "did:key:z6MkgYAGxLBSXa6Ygk1PnUbK2F7zya8juE9nfsZhrvY7c9GD#z6MkgYAGxLBSXa6Ygk1PnUbK2F7zya8juE9nfsZhrvY7c9GD", "proofPurpose": "assertionMethod", - "proofValue": "z5Uh2pQ27qiQ91wAwkKmKcqc2eXWudcMum1XmR21SgYerpERMRcFPjBBPt3TVz4T43TT5HA6qNnmG3uGfj4xmo9XB" + "proofValue": "z5hTfScdq4fCt2v9ASaYdmGXMph1YFRSgBRVGcHkfk1tLcJiSY5uj25idveJeEmveYxwJH4r9BAoBHWks3wf73WP7" } }, "options": { @@ -37302,9 +25459,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "hKLJwcJU4lD36hm3qFLRf", + "parent": "44S12i-2051CZAKzGfMqm", "ctx": null, - "_testId": "urn:uuid:1b8b6bb2-2361-4d1c-b0ae-235f456411e5", + "_testId": "urn:uuid:87c55843-705f-4ba7-a864-2410823df10d", "_events": {}, "_eventsCount": 1, "cell": { @@ -37315,12 +25472,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 53955, + "_idleStart": 49288, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 421, + "duration": 436, "state": "passed", "speed": "slow" }, @@ -37337,9 +25494,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "hKLJwcJU4lD36hm3qFLRf", + "parent": "44S12i-2051CZAKzGfMqm", "ctx": null, - "_testId": "urn:uuid:a947b816-cad4-458a-b5ba-cc54322889a5", + "_testId": "urn:uuid:5442944a-778b-4abf-804f-7b7834721636", "_events": {}, "_eventsCount": 1, "cell": { @@ -37350,12 +25507,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 54377, + "_idleStart": 49724, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 59, + "duration": 57, "state": "passed", "speed": "medium" }, @@ -37372,9 +25529,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "hKLJwcJU4lD36hm3qFLRf", + "parent": "44S12i-2051CZAKzGfMqm", "ctx": null, - "_testId": "urn:uuid:f9e0e7dd-e59d-4485-9638-bbb16608031f", + "_testId": "urn:uuid:ce123af6-04d2-4695-8d1d-dacb1cb848ec", "_events": {}, "_eventsCount": 1, "cell": { @@ -37385,12 +25542,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 54436, + "_idleStart": 49782, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 95, + "duration": 87, "state": "failed", "err": { "name": "AssertionError", @@ -37402,7 +25559,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:ba23aa52-84f7-4cb1-94e8-12bce5b4ab63\",\"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\":\"z5Uh2pQ27qiQ91wAwkKmKcqc2eXWudcMum1XmR21SgYerpERMRcFPjBBPt3TVz4T43TT5HA6qNnmG3uGfj4xmo9XB\"}},\"options\":{\"checks\":[\"proof\"]}}", + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",\"https://w3id.org/security/suites/ed25519-2020/v1\"],\"id\":\"urn:uuid:e4482512-dcbd-4871-b84c-66915375696d\",\"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\":\"z5hTfScdq4fCt2v9ASaYdmGXMph1YFRSgBRVGcHkfk1tLcJiSY5uj25idveJeEmveYxwJH4r9BAoBHWks3wf73WP7\"}},\"options\":{\"checks\":[\"proof\"]}}", "method": "POST", "json": { "verifiableCredential": { @@ -37410,7 +25567,7 @@ "https://www.w3.org/2018/credentials/v1", "https://w3id.org/security/suites/ed25519-2020/v1" ], - "id": "urn:uuid:ba23aa52-84f7-4cb1-94e8-12bce5b4ab63", + "id": "urn:uuid:e4482512-dcbd-4871-b84c-66915375696d", "type": [ "VerifiableCredential" ], @@ -37423,7 +25580,7 @@ "type": "Ed25519Signature2020", "verificationMethod": "did:key:z6MkgYAGxLBSXa6Ygk1PnUbK2F7zya8juE9nfsZhrvY7c9GD#z6MkgYAGxLBSXa6Ygk1PnUbK2F7zya8juE9nfsZhrvY7c9GD", "proofPurpose": "assertionMethod", - "proofValue": "z5Uh2pQ27qiQ91wAwkKmKcqc2eXWudcMum1XmR21SgYerpERMRcFPjBBPt3TVz4T43TT5HA6qNnmG3uGfj4xmo9XB" + "proofValue": "z5hTfScdq4fCt2v9ASaYdmGXMph1YFRSgBRVGcHkfk1tLcJiSY5uj25idveJeEmveYxwJH4r9BAoBHWks3wf73WP7" } }, "options": { @@ -37525,9 +25682,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "hKLJwcJU4lD36hm3qFLRf", + "parent": "44S12i-2051CZAKzGfMqm", "ctx": null, - "_testId": "urn:uuid:b7e2015f-de31-457e-8ccd-eccac51d530b", + "_testId": "urn:uuid:74611a34-67f9-4fc7-bd3a-049a81d6edd3", "_events": {}, "_eventsCount": 1, "cell": { @@ -37538,12 +25695,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 54532, + "_idleStart": 49871, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 30, + "duration": 48, "state": "failed", "err": { "name": "AssertionError", @@ -37555,7 +25712,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:ba23aa52-84f7-4cb1-94e8-12bce5b4ab63\",\"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\":\"z5Uh2pQ27qiQ91wAwkKmKcqc2eXWudcMum1XmR21SgYerpERMRcFPjBBPt3TVz4T43TT5HA6qNnmG3uGfj4xmo9XB\"}},\"options\":{\"checks\":[\"proof\"]}}", + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",\"https://w3id.org/security/suites/ed25519-2020/v1\"],\"id\":\"urn:uuid:e4482512-dcbd-4871-b84c-66915375696d\",\"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\":\"z5hTfScdq4fCt2v9ASaYdmGXMph1YFRSgBRVGcHkfk1tLcJiSY5uj25idveJeEmveYxwJH4r9BAoBHWks3wf73WP7\"}},\"options\":{\"checks\":[\"proof\"]}}", "method": "POST", "json": { "verifiableCredential": { @@ -37563,7 +25720,7 @@ "https://www.w3.org/2018/credentials/v1", "https://w3id.org/security/suites/ed25519-2020/v1" ], - "id": "urn:uuid:ba23aa52-84f7-4cb1-94e8-12bce5b4ab63", + "id": "urn:uuid:e4482512-dcbd-4871-b84c-66915375696d", "type": [ "VerifiableCredential" ], @@ -37576,7 +25733,7 @@ "type": "Ed25519Signature2020", "verificationMethod": "did:key:z6MkgYAGxLBSXa6Ygk1PnUbK2F7zya8juE9nfsZhrvY7c9GD#z6MkgYAGxLBSXa6Ygk1PnUbK2F7zya8juE9nfsZhrvY7c9GD", "proofPurpose": "assertionMethod", - "proofValue": "z5Uh2pQ27qiQ91wAwkKmKcqc2eXWudcMum1XmR21SgYerpERMRcFPjBBPt3TVz4T43TT5HA6qNnmG3uGfj4xmo9XB" + "proofValue": "z5hTfScdq4fCt2v9ASaYdmGXMph1YFRSgBRVGcHkfk1tLcJiSY5uj25idveJeEmveYxwJH4r9BAoBHWks3wf73WP7" } }, "options": { @@ -37653,46 +25810,11 @@ "name": "HTTPError", "requestUrl": "https://bridge.learncard.com/credentials/verify", "status": 400, - "data": "Invalid input: [\n {\n \"code\": \"invalid_union\",\n \"unionErrors\": [\n {\n \"issues\": [\n {\n \"code\": \"invalid_type\",\n \"expected\": \"string\",\n \"received\": \"undefined\",\n \"path\": [\n \"verifiableCredential\",\n \"proof\",\n \"created\"\n ],\n \"message\": \"Required\"\n }\n ],\n \"name\": \"ZodError\"\n },\n {\n \"issues\": [\n {\n \"code\": \"invalid_type\",\n \"expected\": \"array\",\n \"received\": \"object\",\n \"path\": [\n \"verifiableCredential\",\n \"proof\"\n ],\n \"message\": \"Expected array, received object\"\n }\n ],\n \"name\": \"ZodError\"\n }\n ],\n \"path\": [\n \"verifiableCredential\",\n \"proof\"\n ],\n \"message\": \"Invalid input\"\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 SpruceID", - "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": "hKLJwcJU4lD36hm3qFLRf", - "ctx": null, - "_testId": "urn:uuid:0b9cd75d-33e9-4b39-ad29-7f9dce4ad18a", - "_events": {}, - "_eventsCount": 1, - "cell": { - "rowId": "SpruceID", - "columnId": "OpSecId" - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 54563, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 35, - "state": "passed", - "speed": "fast" + "data": "Invalid input: [\n {\n \"code\": \"invalid_union\",\n \"unionErrors\": [\n {\n \"issues\": [\n {\n \"code\": \"invalid_type\",\n \"expected\": \"string\",\n \"received\": \"undefined\",\n \"path\": [\n \"verifiableCredential\",\n \"proof\",\n \"created\"\n ],\n \"message\": \"Required\"\n }\n ],\n \"name\": \"ZodError\"\n },\n {\n \"issues\": [\n {\n \"code\": \"invalid_type\",\n \"expected\": \"array\",\n \"received\": \"object\",\n \"path\": [\n \"verifiableCredential\",\n \"proof\"\n ],\n \"message\": \"Expected array, received object\"\n }\n ],\n \"name\": \"ZodError\"\n }\n ],\n \"path\": [\n \"verifiableCredential\",\n \"proof\"\n ],\n \"message\": \"Invalid input\"\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", @@ -37707,9 +25829,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "hKLJwcJU4lD36hm3qFLRf", + "parent": "44S12i-2051CZAKzGfMqm", "ctx": null, - "_testId": "urn:uuid:1d1033a0-d820-4cc2-b4d8-3cbd292a95ee", + "_testId": "urn:uuid:907728b0-7f8f-4bb2-8b80-c27ea26282d7", "_events": {}, "_eventsCount": 1, "cell": { @@ -37720,14 +25842,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 54598, + "_idleStart": 49919, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 34, + "duration": 40, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", @@ -37742,9 +25864,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "hKLJwcJU4lD36hm3qFLRf", + "parent": "44S12i-2051CZAKzGfMqm", "ctx": null, - "_testId": "urn:uuid:3512f405-51dc-4faa-a5d1-33fe7d22a3e0", + "_testId": "urn:uuid:66500537-a0d8-454b-b4f8-997b7e17126b", "_events": {}, "_eventsCount": 1, "cell": { @@ -37755,12 +25877,12 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 54633, + "_idleStart": 49959, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 31, + "duration": 26, "state": "failed", "err": { "name": "AssertionError", @@ -37772,7 +25894,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:ba23aa52-84f7-4cb1-94e8-12bce5b4ab63\",\"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\":\"z5Uh2pQ27qiQ91wAwkKmKcqc2eXWudcMum1XmR21SgYerpERMRcFPjBBPt3TVz4T43TT5HA6qNnmG3uGfj4xmo9XB\"}},\"options\":{\"checks\":[\"proof\"]}}", + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",\"https://w3id.org/security/suites/ed25519-2020/v1\"],\"id\":\"urn:uuid:e4482512-dcbd-4871-b84c-66915375696d\",\"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\":\"z5hTfScdq4fCt2v9ASaYdmGXMph1YFRSgBRVGcHkfk1tLcJiSY5uj25idveJeEmveYxwJH4r9BAoBHWks3wf73WP7\"}},\"options\":{\"checks\":[\"proof\"]}}", "method": "POST", "json": { "verifiableCredential": { @@ -37780,7 +25902,7 @@ "https://www.w3.org/2018/credentials/v1", "https://w3id.org/security/suites/ed25519-2020/v1" ], - "id": "urn:uuid:ba23aa52-84f7-4cb1-94e8-12bce5b4ab63", + "id": "urn:uuid:e4482512-dcbd-4871-b84c-66915375696d", "type": [ "VerifiableCredential" ], @@ -37793,7 +25915,7 @@ "type": "Ed25519Signature2020", "verificationMethod": "did:key:z6MkgYAGxLBSXa6Ygk1PnUbK2F7zya8juE9nfsZhrvY7c9GD#z6MkgYAGxLBSXa6Ygk1PnUbK2F7zya8juE9nfsZhrvY7c9GD", "proofPurpose": "assertionMethod", - "proofValue": "z5Uh2pQ27qiQ91wAwkKmKcqc2eXWudcMum1XmR21SgYerpERMRcFPjBBPt3TVz4T43TT5HA6qNnmG3uGfj4xmo9XB" + "proofValue": "z5hTfScdq4fCt2v9ASaYdmGXMph1YFRSgBRVGcHkfk1tLcJiSY5uj25idveJeEmveYxwJH4r9BAoBHWks3wf73WP7" } }, "options": { @@ -37882,112 +26004,7 @@ "cells": [ { "type": "test", - "title": "apicatalog.com should verify Trinsic", - "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": "hKLJwcJU4lD36hm3qFLRf", - "ctx": null, - "_testId": "urn:uuid:f14c2883-b3c1-4518-9212-2d61d17b5cb6", - "_events": {}, - "_eventsCount": 1, - "cell": { - "rowId": "Trinsic", - "columnId": "apicatalog.com" - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 54664, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 56, - "state": "passed", - "speed": "medium" - }, - { - "type": "test", - "title": "Danube Tech should verify Trinsic", - "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": "hKLJwcJU4lD36hm3qFLRf", - "ctx": null, - "_testId": "urn:uuid:5ea86ae1-5da1-4ba3-8a2e-aba5b677d766", - "_events": {}, - "_eventsCount": 1, - "cell": { - "rowId": "Trinsic", - "columnId": "Danube Tech" - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 54720, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 434, - "state": "passed", - "speed": "slow" - }, - { - "type": "test", - "title": "Digital Bazaar should verify Trinsic", - "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": "hKLJwcJU4lD36hm3qFLRf", - "ctx": null, - "_testId": "urn:uuid:bd0f74ac-6c9e-457f-b691-87b74f9a54e8", - "_events": {}, - "_eventsCount": 1, - "cell": { - "rowId": "Trinsic", - "columnId": "Digital Bazaar" - }, - "timer": { - "_idleTimeout": -1, - "_idlePrev": null, - "_idleNext": null, - "_idleStart": 55154, - "_onTimeout": null, - "_repeat": null, - "_destroyed": true - }, - "duration": 58, - "state": "passed", - "speed": "medium" - }, - { - "type": "test", - "title": "EWF should verify Trinsic", + "title": "ACA-py should verify Trinsic", "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, @@ -37998,25 +26015,25 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "hKLJwcJU4lD36hm3qFLRf", + "parent": "44S12i-2051CZAKzGfMqm", "ctx": null, - "_testId": "urn:uuid:7eac7dec-1115-4289-85c6-4f3cd00a3b3e", + "_testId": "urn:uuid:51503fff-1750-460a-9256-5af54f3d5f2e", "_events": {}, "_eventsCount": 1, "cell": { "rowId": "Trinsic", - "columnId": "EWF" + "columnId": "ACA-py" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 55212, + "_idleStart": 49986, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 98, + "duration": 27, "state": "failed", "err": { "name": "AssertionError", @@ -38028,7 +26045,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:370182c2-922e-481a-b2bf-1bda464c96ac\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkqbpLSbqnY1pxVyhBCDYcFsv4ZgGgqP32kzNrf5deWVPU\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"type\":\"Ed25519Signature2020\",\"created\":\"2024-09-15T05:02:28.4157714Z\",\"proofPurpose\":\"assertionMethod\",\"verificationMethod\":\"did:key:z6MkqbpLSbqnY1pxVyhBCDYcFsv4ZgGgqP32kzNrf5deWVPU#z6MkqbpLSbqnY1pxVyhBCDYcFsv4ZgGgqP32kzNrf5deWVPU\",\"proofValue\":\"zAcvrmxkrfhLopXPaYv1YpeMC6yNW56LsLTC75AQ6WNoVQuZrR8XWfzSn5GZMQY9ChHwXs2wz9wWBYEnW271JMTo\"}},\"options\":{\"checks\":[\"proof\"]}}", + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",\"https://w3id.org/security/suites/ed25519-2020/v1\"],\"id\":\"urn:uuid:806e922a-e57a-4fae-891a-7d360f463ce1\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkqbpLSbqnY1pxVyhBCDYcFsv4ZgGgqP32kzNrf5deWVPU\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"type\":\"Ed25519Signature2020\",\"created\":\"2024-09-22T05:02:20.7249137Z\",\"proofPurpose\":\"assertionMethod\",\"verificationMethod\":\"did:key:z6MkqbpLSbqnY1pxVyhBCDYcFsv4ZgGgqP32kzNrf5deWVPU#z6MkqbpLSbqnY1pxVyhBCDYcFsv4ZgGgqP32kzNrf5deWVPU\",\"proofValue\":\"z21264BEa2W5PTByEdXtFJqztmi5cWAnMDYu4wWNv5ME6ZtwyXUvTjGiqgpkfGfhbrWvA4G9NG5J6i1SDgjWuteix\"}},\"options\":{\"checks\":[\"proof\"]}}", "method": "POST", "json": { "verifiableCredential": { @@ -38036,7 +26053,7 @@ "https://www.w3.org/2018/credentials/v1", "https://w3id.org/security/suites/ed25519-2020/v1" ], - "id": "urn:uuid:370182c2-922e-481a-b2bf-1bda464c96ac", + "id": "urn:uuid:806e922a-e57a-4fae-891a-7d360f463ce1", "type": [ "VerifiableCredential" ], @@ -38047,10 +26064,10 @@ }, "proof": { "type": "Ed25519Signature2020", - "created": "2024-09-15T05:02:28.4157714Z", + "created": "2024-09-22T05:02:20.7249137Z", "proofPurpose": "assertionMethod", "verificationMethod": "did:key:z6MkqbpLSbqnY1pxVyhBCDYcFsv4ZgGgqP32kzNrf5deWVPU#z6MkqbpLSbqnY1pxVyhBCDYcFsv4ZgGgqP32kzNrf5deWVPU", - "proofValue": "zAcvrmxkrfhLopXPaYv1YpeMC6yNW56LsLTC75AQ6WNoVQuZrR8XWfzSn5GZMQY9ChHwXs2wz9wWBYEnW271JMTo" + "proofValue": "z21264BEa2W5PTByEdXtFJqztmi5cWAnMDYu4wWNv5ME6ZtwyXUvTjGiqgpkfGfhbrWvA4G9NG5J6i1SDgjWuteix" } }, "options": { @@ -38125,16 +26142,18 @@ "duplex": "half" }, "name": "HTTPError", - "requestUrl": "https://vc-api-dev.energyweb.org/v1/vc-api/credentials/verify", - "status": 400, + "requestUrl": "https://aca-py.test-suite.app/vc/credentials/verify", + "status": 422, "data": { - "checks": [ - "proof" - ], - "warnings": [], - "errors": [ - "signature error: Verification equation was not satisfied" - ] + "json": { + "verifiableCredential": { + "proof": { + "created": [ + "Value 2024-09-22T05:02:20.7249137Z is not a date in valid format" + ] + } + } + } } }, "operator": "notStrictEqual", @@ -38143,7 +26162,7 @@ }, { "type": "test", - "title": "LearnCard should verify Trinsic", + "title": "apicatalog.com should verify Trinsic", "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, @@ -38154,25 +26173,130 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "hKLJwcJU4lD36hm3qFLRf", + "parent": "44S12i-2051CZAKzGfMqm", "ctx": null, - "_testId": "urn:uuid:6442cdd6-1484-4013-9c6f-e8a762cd421c", + "_testId": "urn:uuid:8a3d1aad-3b07-484e-9869-12938ebc0525", "_events": {}, "_eventsCount": 1, "cell": { "rowId": "Trinsic", - "columnId": "LearnCard" + "columnId": "apicatalog.com" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 55310, + "_idleStart": 50013, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 72, + "duration": 48, + "state": "passed", + "speed": "medium" + }, + { + "type": "test", + "title": "Danube Tech should verify Trinsic", + "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": "44S12i-2051CZAKzGfMqm", + "ctx": null, + "_testId": "urn:uuid:31069d37-f8af-458f-8029-253d108f1858", + "_events": {}, + "_eventsCount": 1, + "cell": { + "rowId": "Trinsic", + "columnId": "Danube Tech" + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 50062, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 430, + "state": "passed", + "speed": "slow" + }, + { + "type": "test", + "title": "Digital Bazaar should verify Trinsic", + "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": "44S12i-2051CZAKzGfMqm", + "ctx": null, + "_testId": "urn:uuid:7fff048e-5f01-4116-a5b3-0d97e436af1e", + "_events": {}, + "_eventsCount": 1, + "cell": { + "rowId": "Trinsic", + "columnId": "Digital Bazaar" + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 50492, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 125, + "state": "passed", + "speed": "slow" + }, + { + "type": "test", + "title": "EWF should verify Trinsic", + "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": "44S12i-2051CZAKzGfMqm", + "ctx": null, + "_testId": "urn:uuid:44349c82-0310-49c6-bfe1-073fee0a161f", + "_events": {}, + "_eventsCount": 1, + "cell": { + "rowId": "Trinsic", + "columnId": "EWF" + }, + "timer": { + "_idleTimeout": -1, + "_idlePrev": null, + "_idleNext": null, + "_idleStart": 50617, + "_onTimeout": null, + "_repeat": null, + "_destroyed": true + }, + "duration": 92, "state": "failed", "err": { "name": "AssertionError", @@ -38184,7 +26308,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:370182c2-922e-481a-b2bf-1bda464c96ac\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkqbpLSbqnY1pxVyhBCDYcFsv4ZgGgqP32kzNrf5deWVPU\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"type\":\"Ed25519Signature2020\",\"created\":\"2024-09-15T05:02:28.4157714Z\",\"proofPurpose\":\"assertionMethod\",\"verificationMethod\":\"did:key:z6MkqbpLSbqnY1pxVyhBCDYcFsv4ZgGgqP32kzNrf5deWVPU#z6MkqbpLSbqnY1pxVyhBCDYcFsv4ZgGgqP32kzNrf5deWVPU\",\"proofValue\":\"zAcvrmxkrfhLopXPaYv1YpeMC6yNW56LsLTC75AQ6WNoVQuZrR8XWfzSn5GZMQY9ChHwXs2wz9wWBYEnW271JMTo\"}},\"options\":{\"checks\":[\"proof\"]}}", + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",\"https://w3id.org/security/suites/ed25519-2020/v1\"],\"id\":\"urn:uuid:806e922a-e57a-4fae-891a-7d360f463ce1\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkqbpLSbqnY1pxVyhBCDYcFsv4ZgGgqP32kzNrf5deWVPU\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"type\":\"Ed25519Signature2020\",\"created\":\"2024-09-22T05:02:20.7249137Z\",\"proofPurpose\":\"assertionMethod\",\"verificationMethod\":\"did:key:z6MkqbpLSbqnY1pxVyhBCDYcFsv4ZgGgqP32kzNrf5deWVPU#z6MkqbpLSbqnY1pxVyhBCDYcFsv4ZgGgqP32kzNrf5deWVPU\",\"proofValue\":\"z21264BEa2W5PTByEdXtFJqztmi5cWAnMDYu4wWNv5ME6ZtwyXUvTjGiqgpkfGfhbrWvA4G9NG5J6i1SDgjWuteix\"}},\"options\":{\"checks\":[\"proof\"]}}", "method": "POST", "json": { "verifiableCredential": { @@ -38192,7 +26316,7 @@ "https://www.w3.org/2018/credentials/v1", "https://w3id.org/security/suites/ed25519-2020/v1" ], - "id": "urn:uuid:370182c2-922e-481a-b2bf-1bda464c96ac", + "id": "urn:uuid:806e922a-e57a-4fae-891a-7d360f463ce1", "type": [ "VerifiableCredential" ], @@ -38203,10 +26327,10 @@ }, "proof": { "type": "Ed25519Signature2020", - "created": "2024-09-15T05:02:28.4157714Z", + "created": "2024-09-22T05:02:20.7249137Z", "proofPurpose": "assertionMethod", "verificationMethod": "did:key:z6MkqbpLSbqnY1pxVyhBCDYcFsv4ZgGgqP32kzNrf5deWVPU#z6MkqbpLSbqnY1pxVyhBCDYcFsv4ZgGgqP32kzNrf5deWVPU", - "proofValue": "zAcvrmxkrfhLopXPaYv1YpeMC6yNW56LsLTC75AQ6WNoVQuZrR8XWfzSn5GZMQY9ChHwXs2wz9wWBYEnW271JMTo" + "proofValue": "z21264BEa2W5PTByEdXtFJqztmi5cWAnMDYu4wWNv5ME6ZtwyXUvTjGiqgpkfGfhbrWvA4G9NG5J6i1SDgjWuteix" } }, "options": { @@ -38281,12 +26405,11 @@ "duplex": "half" }, "name": "HTTPError", - "requestUrl": "https://bridge.learncard.com/credentials/verify", + "requestUrl": "https://vc-api-dev.energyweb.org/v1/vc-api/credentials/verify", "status": 400, "data": { "checks": [ - "proof", - "expiration" + "proof" ], "warnings": [], "errors": [ @@ -38300,7 +26423,7 @@ }, { "type": "test", - "title": "OpSecId should verify Trinsic", + "title": "LearnCard should verify Trinsic", "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, @@ -38311,25 +26434,25 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "hKLJwcJU4lD36hm3qFLRf", + "parent": "44S12i-2051CZAKzGfMqm", "ctx": null, - "_testId": "urn:uuid:a9156abf-585b-43c5-969a-2e938f5373d9", + "_testId": "urn:uuid:7dd1c62c-a298-4a6b-a846-02c5db60e750", "_events": {}, "_eventsCount": 1, "cell": { "rowId": "Trinsic", - "columnId": "OpSecId" + "columnId": "LearnCard" }, "timer": { "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 55383, + "_idleStart": 50710, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 36, + "duration": 76, "state": "failed", "err": { "name": "AssertionError", @@ -38341,7 +26464,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:370182c2-922e-481a-b2bf-1bda464c96ac\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkqbpLSbqnY1pxVyhBCDYcFsv4ZgGgqP32kzNrf5deWVPU\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"type\":\"Ed25519Signature2020\",\"created\":\"2024-09-15T05:02:28.4157714Z\",\"proofPurpose\":\"assertionMethod\",\"verificationMethod\":\"did:key:z6MkqbpLSbqnY1pxVyhBCDYcFsv4ZgGgqP32kzNrf5deWVPU#z6MkqbpLSbqnY1pxVyhBCDYcFsv4ZgGgqP32kzNrf5deWVPU\",\"proofValue\":\"zAcvrmxkrfhLopXPaYv1YpeMC6yNW56LsLTC75AQ6WNoVQuZrR8XWfzSn5GZMQY9ChHwXs2wz9wWBYEnW271JMTo\"}},\"options\":{\"checks\":[\"proof\"]}}", + "body": "{\"verifiableCredential\":{\"@context\":[\"https://www.w3.org/2018/credentials/v1\",\"https://w3id.org/security/suites/ed25519-2020/v1\"],\"id\":\"urn:uuid:806e922a-e57a-4fae-891a-7d360f463ce1\",\"type\":[\"VerifiableCredential\"],\"issuer\":\"did:key:z6MkqbpLSbqnY1pxVyhBCDYcFsv4ZgGgqP32kzNrf5deWVPU\",\"issuanceDate\":\"2020-03-16T22:37:26.544Z\",\"credentialSubject\":{\"id\":\"did:key:z6MktKwz7Ge1Yxzr4JHavN33wiwa8y81QdcMRLXQsrH9T53b\"},\"proof\":{\"type\":\"Ed25519Signature2020\",\"created\":\"2024-09-22T05:02:20.7249137Z\",\"proofPurpose\":\"assertionMethod\",\"verificationMethod\":\"did:key:z6MkqbpLSbqnY1pxVyhBCDYcFsv4ZgGgqP32kzNrf5deWVPU#z6MkqbpLSbqnY1pxVyhBCDYcFsv4ZgGgqP32kzNrf5deWVPU\",\"proofValue\":\"z21264BEa2W5PTByEdXtFJqztmi5cWAnMDYu4wWNv5ME6ZtwyXUvTjGiqgpkfGfhbrWvA4G9NG5J6i1SDgjWuteix\"}},\"options\":{\"checks\":[\"proof\"]}}", "method": "POST", "json": { "verifiableCredential": { @@ -38349,7 +26472,7 @@ "https://www.w3.org/2018/credentials/v1", "https://w3id.org/security/suites/ed25519-2020/v1" ], - "id": "urn:uuid:370182c2-922e-481a-b2bf-1bda464c96ac", + "id": "urn:uuid:806e922a-e57a-4fae-891a-7d360f463ce1", "type": [ "VerifiableCredential" ], @@ -38360,10 +26483,10 @@ }, "proof": { "type": "Ed25519Signature2020", - "created": "2024-09-15T05:02:28.4157714Z", + "created": "2024-09-22T05:02:20.7249137Z", "proofPurpose": "assertionMethod", "verificationMethod": "did:key:z6MkqbpLSbqnY1pxVyhBCDYcFsv4ZgGgqP32kzNrf5deWVPU#z6MkqbpLSbqnY1pxVyhBCDYcFsv4ZgGgqP32kzNrf5deWVPU", - "proofValue": "zAcvrmxkrfhLopXPaYv1YpeMC6yNW56LsLTC75AQ6WNoVQuZrR8XWfzSn5GZMQY9ChHwXs2wz9wWBYEnW271JMTo" + "proofValue": "z21264BEa2W5PTByEdXtFJqztmi5cWAnMDYu4wWNv5ME6ZtwyXUvTjGiqgpkfGfhbrWvA4G9NG5J6i1SDgjWuteix" } }, "options": { @@ -38438,18 +26561,17 @@ "duplex": "half" }, "name": "HTTPError", - "requestUrl": "https://agent.opsec.id/vc/credentials/verify", - "status": 422, + "requestUrl": "https://bridge.learncard.com/credentials/verify", + "status": 400, "data": { - "json": { - "verifiableCredential": { - "proof": { - "created": [ - "Value 2024-09-15T05:02:28.4157714Z is not a date in valid format" - ] - } - } - } + "checks": [ + "proof", + "expiration" + ], + "warnings": [], + "errors": [ + "signature error: Verification equation was not satisfied" + ] } }, "operator": "notStrictEqual", @@ -38469,9 +26591,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "hKLJwcJU4lD36hm3qFLRf", + "parent": "44S12i-2051CZAKzGfMqm", "ctx": null, - "_testId": "urn:uuid:e06f2cf2-7560-438a-8cd7-4fa854be8001", + "_testId": "urn:uuid:149a69aa-c387-48aa-b3bb-52205bf5b231", "_events": {}, "_eventsCount": 1, "cell": { @@ -38482,14 +26604,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 55420, + "_idleStart": 50786, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 34, + "duration": 39, "state": "passed", - "speed": "fast" + "speed": "medium" }, { "type": "test", @@ -38504,9 +26626,9 @@ "_currentRetry": 0, "pending": false, "file": "/home/runner/work/vc-di-ed25519signature2020-test-suite/vc-di-ed25519signature2020-test-suite/tests/30-interop.js", - "parent": "hKLJwcJU4lD36hm3qFLRf", + "parent": "44S12i-2051CZAKzGfMqm", "ctx": null, - "_testId": "urn:uuid:baf97af4-d6ae-4228-b9a9-b07c269b312b", + "_testId": "urn:uuid:7558cbe8-7c9a-4ffc-9f3d-a9be6a9e86bc", "_events": {}, "_eventsCount": 1, "cell": { @@ -38517,14 +26639,14 @@ "_idleTimeout": -1, "_idlePrev": null, "_idleNext": null, - "_idleStart": 55454, + "_idleStart": 50826, "_onTimeout": null, "_repeat": null, "_destroyed": true }, - "duration": 50, + "duration": 617, "state": "passed", - "speed": "medium" + "speed": "slow" } ] } @@ -38566,11 +26688,11 @@ }, "title": "Ed25519Signature 2020 Interoperability Report 1.0", "stats": [ - "Tests passed 360/424 84%", - "Tests failed 64/424 16%", - "Failures 64", + "Tests passed 295/336 87%", + "Tests failed 41/336 13%", + "Failures 41", "Tests skipped 0", - "Total tests 424" + "Total tests 336" ], "statusMarkLabels": { "pending": {