This test suite demonstrates the interoperability of verifiers using the VC HTTP API.

Conformance Testing Results

Tests passed 184/198 92%

Tests failed 14/198 8%

Failures 14

Tests skipped 0

Total tests 198

These tests were run on

Key

The results of the tests are shown below:

Verify Credential - Data Integrity

Verifier ⇒
Test Name
apicatalog.com Danube Tech Digital Bazaar EWF LearnCard Mavennet mesur.io SecureKey SpruceID Trinsic
MUST verify a valid VC.
{
                      "name": "TypeError",
                      "message": "Cannot construct a Request with a Request object that has already been used.",
                      "stack": "TypeError: Cannot construct a Request with a Request object that has already been used.\n    at new Request (node:internal/deps/undici/undici:7378:19)\n    at _sanitizeErrorHeaders (file:///home/runner/work/vc-api-verifier-test-suite/vc-api-verifier-test-suite/node_modules/vc-api-test-suite-implementations/lib/requests.js:131:21)\n    at makeHttpsRequest (file:///home/runner/work/vc-api-verifier-test-suite/vc-api-verifier-test-suite/node_modules/vc-api-test-suite-implementations/lib/requests.js:50:13)\n    at async Context. (file:///home/runner/work/vc-api-verifier-test-suite/vc-api-verifier-test-suite/tests/10-vc-di.js:57:33)"
                    }
MUST not verify if "@context" property is missing.
{
                      "name": "AssertionError",
                      "message": "Expected no result from verifier: expected Response{ data: { …(2) }, …(3) } to not exist",
                      "stack": "AssertionError: Expected no result from verifier: expected Response{ data: { …(2) }, …(3) } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at testBadRequestError (file:///home/runner/work/vc-api-verifier-test-suite/vc-api-verifier-test-suite/tests/helpers.js:12:14)\n    at Context. (file:///home/runner/work/vc-api-verifier-test-suite/vc-api-verifier-test-suite/tests/10-vc-di.js:73:11)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"
                    }
MUST not verify if "type" property is missing.
MUST not verify if "issuer" property is missing.
{
                      "name": "AssertionError",
                      "message": "Expected no result from verifier: expected Response{ data: { …(2) }, …(3) } to not exist",
                      "stack": "AssertionError: Expected no result from verifier: expected Response{ data: { …(2) }, …(3) } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at testBadRequestError (file:///home/runner/work/vc-api-verifier-test-suite/vc-api-verifier-test-suite/tests/helpers.js:12:14)\n    at Context. (file:///home/runner/work/vc-api-verifier-test-suite/vc-api-verifier-test-suite/tests/10-vc-di.js:95:9)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"
                    }
MUST not verify if "credentialSubject" property is missing.
{
                      "name": "AssertionError",
                      "message": "Expected no result from verifier: expected Response{ data: { …(2) }, …(3) } to not exist",
                      "stack": "AssertionError: Expected no result from verifier: expected Response{ data: { …(2) }, …(3) } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at testBadRequestError (file:///home/runner/work/vc-api-verifier-test-suite/vc-api-verifier-test-suite/tests/helpers.js:12:14)\n    at Context. (file:///home/runner/work/vc-api-verifier-test-suite/vc-api-verifier-test-suite/tests/10-vc-di.js:107:11)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"
                    }
MUST not verify if "proof" property is missing.
MUST not verify if "proof.type" property is missing.
MUST not verify if "proof.created" property is missing.
{
                      "name": "TypeError",
                      "message": "Cannot construct a Request with a Request object that has already been used.",
                      "stack": "TypeError: Cannot construct a Request with a Request object that has already been used.\n    at new Request (node:internal/deps/undici/undici:7378:19)\n    at _sanitizeErrorHeaders (file:///home/runner/work/vc-api-verifier-test-suite/vc-api-verifier-test-suite/node_modules/vc-api-test-suite-implementations/lib/requests.js:131:21)\n    at makeHttpsRequest (file:///home/runner/work/vc-api-verifier-test-suite/vc-api-verifier-test-suite/node_modules/vc-api-test-suite-implementations/lib/requests.js:50:13)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-api-verifier-test-suite/vc-api-verifier-test-suite/tests/10-vc-di.js:141:35)"
                    }
MUST not verify if "proof.verificationMethod" property is missing.
MUST not verify if "proof.proofValue" property is missing.
{
                      "name": "TypeError",
                      "message": "Cannot construct a Request with a Request object that has already been used.",
                      "stack": "TypeError: Cannot construct a Request with a Request object that has already been used.\n    at new Request (node:internal/deps/undici/undici:7378:19)\n    at _sanitizeErrorHeaders (file:///home/runner/work/vc-api-verifier-test-suite/vc-api-verifier-test-suite/node_modules/vc-api-test-suite-implementations/lib/requests.js:131:21)\n    at makeHttpsRequest (file:///home/runner/work/vc-api-verifier-test-suite/vc-api-verifier-test-suite/node_modules/vc-api-test-suite-implementations/lib/requests.js:50:13)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-api-verifier-test-suite/vc-api-verifier-test-suite/tests/10-vc-di.js:165:35)"
                    }
MUST not verify if "proof.proofPurpose" property is missing.
{
                      "name": "TypeError",
                      "message": "Cannot construct a Request with a Request object that has already been used.",
                      "stack": "TypeError: Cannot construct a Request with a Request object that has already been used.\n    at new Request (node:internal/deps/undici/undici:7378:19)\n    at _sanitizeErrorHeaders (file:///home/runner/work/vc-api-verifier-test-suite/vc-api-verifier-test-suite/node_modules/vc-api-test-suite-implementations/lib/requests.js:131:21)\n    at makeHttpsRequest (file:///home/runner/work/vc-api-verifier-test-suite/vc-api-verifier-test-suite/node_modules/vc-api-test-suite-implementations/lib/requests.js:50:13)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Context. (file:///home/runner/work/vc-api-verifier-test-suite/vc-api-verifier-test-suite/tests/10-vc-di.js:177:35)"
                    }
{
                      "name": "AssertionError",
                      "message": "Expected no result from verifier: expected Response{ data: { …(2) }, …(3) } to not exist",
                      "stack": "AssertionError: Expected no result from verifier: expected Response{ data: { …(2) }, …(3) } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at testBadRequestError (file:///home/runner/work/vc-api-verifier-test-suite/vc-api-verifier-test-suite/tests/helpers.js:12:14)\n    at Context. (file:///home/runner/work/vc-api-verifier-test-suite/vc-api-verifier-test-suite/tests/10-vc-di.js:178:11)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"
                    }
MUST not verify if "@context" is not an array.
{
                      "name": "AssertionError",
                      "message": "Expected no result from verifier: expected Response{ data: { …(2) }, …(3) } to not exist",
                      "stack": "AssertionError: Expected no result from verifier: expected Response{ data: { …(2) }, …(3) } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at testBadRequestError (file:///home/runner/work/vc-api-verifier-test-suite/vc-api-verifier-test-suite/tests/helpers.js:12:14)\n    at Context. (file:///home/runner/work/vc-api-verifier-test-suite/vc-api-verifier-test-suite/tests/10-vc-di.js:191:11)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"
                    }
MUST not verify if "@context" items are not strings.
{
                      "name": "AssertionError",
                      "message": "Expected status code 400 Bad Request: expected 500 to equal 400",
                      "stack": "AssertionError: Expected status code 400 Bad Request: expected 500 to equal 400\n    at testBadRequestError (file:///home/runner/work/vc-api-verifier-test-suite/vc-api-verifier-test-suite/tests/helpers.js:15:23)\n    at Context. (file:///home/runner/work/vc-api-verifier-test-suite/vc-api-verifier-test-suite/tests/10-vc-di.js:206:13)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"
                    }
{
                      "name": "AssertionError",
                      "message": "Expected no result from verifier: expected Response{ data: { …(2) }, …(3) } to not exist",
                      "stack": "AssertionError: Expected no result from verifier: expected Response{ data: { …(2) }, …(3) } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at testBadRequestError (file:///home/runner/work/vc-api-verifier-test-suite/vc-api-verifier-test-suite/tests/helpers.js:12:14)\n    at Context. (file:///home/runner/work/vc-api-verifier-test-suite/vc-api-verifier-test-suite/tests/10-vc-di.js:206:13)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"
                    }
MUST not verify if "type" is not an array.
MUST not verify if "type" items are not strings.
MUST not verify if "issuer" is not an object or a string.
{
                      "name": "AssertionError",
                      "message": "Expected no result from verifier: expected Response{ data: { …(2) }, …(3) } to not exist",
                      "stack": "AssertionError: Expected no result from verifier: expected Response{ data: { …(2) }, …(3) } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at testBadRequestError (file:///home/runner/work/vc-api-verifier-test-suite/vc-api-verifier-test-suite/tests/helpers.js:12:14)\n    at Context. (file:///home/runner/work/vc-api-verifier-test-suite/vc-api-verifier-test-suite/tests/10-vc-di.js:249:13)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"
                    }
MUST not verify if "credentialSubject" is not an object.
{
                      "name": "AssertionError",
                      "message": "Expected no result from verifier: expected Response{ data: { …(2) }, …(3) } to not exist",
                      "stack": "AssertionError: Expected no result from verifier: expected Response{ data: { …(2) }, …(3) } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at testBadRequestError (file:///home/runner/work/vc-api-verifier-test-suite/vc-api-verifier-test-suite/tests/helpers.js:12:14)\n    at Context. (file:///home/runner/work/vc-api-verifier-test-suite/vc-api-verifier-test-suite/tests/10-vc-di.js:266:13)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"
                    }
MUST not verify if "proof" is not an object.

Verify Credential - JWT

Verifier ⇒
Test Name
SpruceID
MUST verify a valid VC.
MUST not verify if "@context" property is missing.
MUST not verify if "type" property is missing.
MUST not verify if "issuer" property is missing.
MUST not verify if "credentialSubject" property is missing.
MUST not verify if "proof" property is missing.
MUST not verify if "proof.type" property is missing.
MUST not verify if "proof.created" property is missing.
MUST not verify if "proof.verificationMethod" property is missing.
MUST not verify if "proof.proofValue" property is missing.
{
                      "name": "AssertionError",
                      "message": "Expected no result from verifier: expected Response{ data: { …(3) }, …(3) } to not exist",
                      "stack": "AssertionError: Expected no result from verifier: expected Response{ data: { …(3) }, …(3) } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at testBadRequestError (file:///home/runner/work/vc-api-verifier-test-suite/vc-api-verifier-test-suite/tests/helpers.js:12:14)\n    at Context. (file:///home/runner/work/vc-api-verifier-test-suite/vc-api-verifier-test-suite/tests/11-vc-jwt.js:165:11)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"
                    }
MUST not verify if "proof.proofPurpose" property is missing.
MUST not verify if "@context" is not an array.
MUST not verify if "@context" items are not strings.
MUST not verify if "type" is not an array.
MUST not verify if "type" items are not strings.
MUST not verify if "issuer" is not an object or a string.
MUST not verify if "credentialSubject" is not an object.
MUST not verify if "proof" is not an object.

Verify Presentation - Data Integrity

Verify Presentation - JWT