This is a test suite to demonstrate interoperability of issuers using the VC HTTP API.

Conformance Testing Results

Tests passed 143/170 84%

Tests failed 27/170 16%

Failures 27

Tests skipped 12

Total tests 182

These tests were run on

Key

The results of the tests are shown below:

Issue Credential - Data Integrity

Issuer ⇒
Test Name
apicatalog.com Danube Tech Digital Bazaar EWF GS1 US IDLab LearnCard Mavennet Open Security and Identity SecureKey SpruceID Trinsic
MUST successfully issue a credential.
{
                      "name": "AssertionError",
                      "message": "Expected no error, got fetch failed: expected TypeError: fetch failed { …(2) } to not exist",
                      "stack": "AssertionError: Expected no error, got fetch failed: expected TypeError: fetch failed { …(2) } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at shouldReturnResult (file:///home/runner/work/vc-api-issuer-test-suite/vc-api-issuer-test-suite/tests/assertions.js:19:14)\n    at Context. (file:///home/runner/work/vc-api-issuer-test-suite/vc-api-issuer-test-suite/tests/10-issuer.js:41:9)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"
                    }
Request body MUST have property "credential".
{
                      "name": "AssertionError",
                      "message": "Expected an HTTP error response code.: expected undefined to exist",
                      "stack": "AssertionError: Expected an HTTP error response code.: expected undefined to exist\n    at should.exist (node_modules/chai/lib/chai/interface/should.js:144:34)\n    at shouldThrowInvalidInput (file:///home/runner/work/vc-api-issuer-test-suite/vc-api-issuer-test-suite/tests/assertions.js:11:10)\n    at Context. (file:///home/runner/work/vc-api-issuer-test-suite/vc-api-issuer-test-suite/tests/10-issuer.js:55:9)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"
                    }
credential MUST have property "@context".
{
                      "name": "AssertionError",
                      "message": "Expected an HTTP error response code.: expected undefined to exist",
                      "stack": "AssertionError: Expected an HTTP error response code.: expected undefined to exist\n    at should.exist (node_modules/chai/lib/chai/interface/should.js:144:34)\n    at shouldThrowInvalidInput (file:///home/runner/work/vc-api-issuer-test-suite/vc-api-issuer-test-suite/tests/assertions.js:11:10)\n    at Context. (file:///home/runner/work/vc-api-issuer-test-suite/vc-api-issuer-test-suite/tests/10-issuer.js:65:9)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"
                    }
credential "@context" MUST be an array.
{
                      "name": "AssertionError",
                      "message": "Expected an HTTP error response code.: expected undefined to exist",
                      "stack": "AssertionError: Expected an HTTP error response code.: expected undefined to exist\n    at should.exist (node_modules/chai/lib/chai/interface/should.js:144:34)\n    at shouldThrowInvalidInput (file:///home/runner/work/vc-api-issuer-test-suite/vc-api-issuer-test-suite/tests/assertions.js:11:10)\n    at Context. (file:///home/runner/work/vc-api-issuer-test-suite/vc-api-issuer-test-suite/tests/10-issuer.js:75:9)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"
                    }
credential "@context" items MUST be strings.
{
                      "name": "AssertionError",
                      "message": "Expected an HTTP error response code.: expected undefined to exist",
                      "stack": "AssertionError: Expected an HTTP error response code.: expected undefined to exist\n    at should.exist (node_modules/chai/lib/chai/interface/should.js:144:34)\n    at shouldThrowInvalidInput (file:///home/runner/work/vc-api-issuer-test-suite/vc-api-issuer-test-suite/tests/assertions.js:11:10)\n    at Context. (file:///home/runner/work/vc-api-issuer-test-suite/vc-api-issuer-test-suite/tests/10-issuer.js:87:11)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"
                    }
credential MUST have property "type"
{
                      "name": "AssertionError",
                      "message": "Expected status code 400 or 422.: expected 500 to be one of [ 400, 422 ]",
                      "stack": "AssertionError: Expected status code 400 or 422.: expected 500 to be one of [ 400, 422 ]\n    at shouldThrowInvalidInput (file:///home/runner/work/vc-api-issuer-test-suite/vc-api-issuer-test-suite/tests/assertions.js:14:26)\n    at Context. (file:///home/runner/work/vc-api-issuer-test-suite/vc-api-issuer-test-suite/tests/10-issuer.js:98:9)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"
                    }
{
                      "name": "AssertionError",
                      "message": "Expected an HTTP error response code.: expected undefined to exist",
                      "stack": "AssertionError: Expected an HTTP error response code.: expected undefined to exist\n    at should.exist (node_modules/chai/lib/chai/interface/should.js:144:34)\n    at shouldThrowInvalidInput (file:///home/runner/work/vc-api-issuer-test-suite/vc-api-issuer-test-suite/tests/assertions.js:11:10)\n    at Context. (file:///home/runner/work/vc-api-issuer-test-suite/vc-api-issuer-test-suite/tests/10-issuer.js:98:9)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"
                    }
"credential.type" MUST be an array.
{
                      "name": "AssertionError",
                      "message": "Expected status code 400 or 422.: expected 500 to be one of [ 400, 422 ]",
                      "stack": "AssertionError: Expected status code 400 or 422.: expected 500 to be one of [ 400, 422 ]\n    at shouldThrowInvalidInput (file:///home/runner/work/vc-api-issuer-test-suite/vc-api-issuer-test-suite/tests/assertions.js:14:26)\n    at Context. (file:///home/runner/work/vc-api-issuer-test-suite/vc-api-issuer-test-suite/tests/10-issuer.js:108:9)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"
                    }
{
                      "name": "AssertionError",
                      "message": "Expected an HTTP error response code.: expected undefined to exist",
                      "stack": "AssertionError: Expected an HTTP error response code.: expected undefined to exist\n    at should.exist (node_modules/chai/lib/chai/interface/should.js:144:34)\n    at shouldThrowInvalidInput (file:///home/runner/work/vc-api-issuer-test-suite/vc-api-issuer-test-suite/tests/assertions.js:11:10)\n    at Context. (file:///home/runner/work/vc-api-issuer-test-suite/vc-api-issuer-test-suite/tests/10-issuer.js:108:9)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"
                    }
"credential.type" items MUST be strings
{
                      "name": "AssertionError",
                      "message": "Expected status code 400 or 422.: expected 500 to be one of [ 400, 422 ]",
                      "stack": "AssertionError: Expected status code 400 or 422.: expected 500 to be one of [ 400, 422 ]\n    at shouldThrowInvalidInput (file:///home/runner/work/vc-api-issuer-test-suite/vc-api-issuer-test-suite/tests/assertions.js:14:26)\n    at Context. (file:///home/runner/work/vc-api-issuer-test-suite/vc-api-issuer-test-suite/tests/10-issuer.js:120:11)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"
                    }
{
                      "name": "AssertionError",
                      "message": "Expected an HTTP error response code.: expected undefined to exist",
                      "stack": "AssertionError: Expected an HTTP error response code.: expected undefined to exist\n    at should.exist (node_modules/chai/lib/chai/interface/should.js:144:34)\n    at shouldThrowInvalidInput (file:///home/runner/work/vc-api-issuer-test-suite/vc-api-issuer-test-suite/tests/assertions.js:11:10)\n    at Context. (file:///home/runner/work/vc-api-issuer-test-suite/vc-api-issuer-test-suite/tests/10-issuer.js:120:11)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"
                    }
credential MUST have property "issuer"
{
                      "name": "AssertionError",
                      "message": "Expected no result from issuer.: expected Response { status: 201, statusText: 'Created', headers: Headers { 'access-control-allow-origin': '*', 'alt-svc': 'h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000', authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', 'cache-control': 'no-cache, no-store, must-revalidate', 'content-length': '748', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 21 Jul 2024 05:10:06 GMT', etag: 'W/\"2ec-WzuEzn1jBKlpQ1jOVrhexxhv4c8\"', expires: '0', pragma: 'no-cache', server: 'Google Frontend', vary: 'X-HTTP-Method-Override, Accept-Encoding', via: '1.1 google', 'x-cloud-trace-context': '7f39397b63cd20693ab31198916ed513' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist",
                      "stack": "AssertionError: Expected no result from issuer.: expected Response { status: 201, statusText: 'Created', headers: Headers { 'access-control-allow-origin': '*', 'alt-svc': 'h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000', authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', 'cache-control': 'no-cache, no-store, must-revalidate', 'content-length': '748', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 21 Jul 2024 05:10:06 GMT', etag: 'W/\"2ec-WzuEzn1jBKlpQ1jOVrhexxhv4c8\"', expires: '0', pragma: 'no-cache', server: 'Google Frontend', vary: 'X-HTTP-Method-Override, Accept-Encoding', via: '1.1 google', 'x-cloud-trace-context': '7f39397b63cd20693ab31198916ed513' }, 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 shouldThrowInvalidInput (file:///home/runner/work/vc-api-issuer-test-suite/vc-api-issuer-test-suite/tests/assertions.js:9:14)\n    at Context. (file:///home/runner/work/vc-api-issuer-test-suite/vc-api-issuer-test-suite/tests/10-issuer.js:131:9)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"
                    }
{
                      "name": "AssertionError",
                      "message": "Expected an HTTP error response code.: expected undefined to exist",
                      "stack": "AssertionError: Expected an HTTP error response code.: expected undefined to exist\n    at should.exist (node_modules/chai/lib/chai/interface/should.js:144:34)\n    at shouldThrowInvalidInput (file:///home/runner/work/vc-api-issuer-test-suite/vc-api-issuer-test-suite/tests/assertions.js:11:10)\n    at Context. (file:///home/runner/work/vc-api-issuer-test-suite/vc-api-issuer-test-suite/tests/10-issuer.js:131:9)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"
                    }
"credential.issuer" MUST be a string or an object
{
                      "name": "AssertionError",
                      "message": "Expected status code 400 or 422.: expected 500 to be one of [ 400, 422 ]",
                      "stack": "AssertionError: Expected status code 400 or 422.: expected 500 to be one of [ 400, 422 ]\n    at shouldThrowInvalidInput (file:///home/runner/work/vc-api-issuer-test-suite/vc-api-issuer-test-suite/tests/assertions.js:14:26)\n    at Context. (file:///home/runner/work/vc-api-issuer-test-suite/vc-api-issuer-test-suite/tests/10-issuer.js:143:11)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"
                    }
{
                      "name": "AssertionError",
                      "message": "Expected no result from issuer.: expected Response { status: 201, statusText: 'Created', headers: Headers { 'access-control-allow-origin': '*', 'alt-svc': 'h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000', authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', 'cache-control': 'no-cache, no-store, must-revalidate', 'content-length': '755', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 21 Jul 2024 05:10:07 GMT', etag: 'W/\"2f3-G5PLzycmmza0gX4bofNCttAeOVo\"', expires: '0', pragma: 'no-cache', server: 'Google Frontend', vary: 'X-HTTP-Method-Override, Accept-Encoding', via: '1.1 google', 'x-cloud-trace-context': 'a5c268036c4564e2a6bcda75df73210e' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist",
                      "stack": "AssertionError: Expected no result from issuer.: expected Response { status: 201, statusText: 'Created', headers: Headers { 'access-control-allow-origin': '*', 'alt-svc': 'h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000', authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', 'cache-control': 'no-cache, no-store, must-revalidate', 'content-length': '755', 'content-type': 'application/json; charset=utf-8', date: 'Sun, 21 Jul 2024 05:10:07 GMT', etag: 'W/\"2f3-G5PLzycmmza0gX4bofNCttAeOVo\"', expires: '0', pragma: 'no-cache', server: 'Google Frontend', vary: 'X-HTTP-Method-Override, Accept-Encoding', via: '1.1 google', 'x-cloud-trace-context': 'a5c268036c4564e2a6bcda75df73210e' }, 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 shouldThrowInvalidInput (file:///home/runner/work/vc-api-issuer-test-suite/vc-api-issuer-test-suite/tests/assertions.js:9:14)\n    at Context. (file:///home/runner/work/vc-api-issuer-test-suite/vc-api-issuer-test-suite/tests/10-issuer.js:143:11)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"
                    }
{
                      "name": "AssertionError",
                      "message": "Expected no result from issuer.: expected Response { status: 201, statusText: 'Created', headers: Headers { 'access-control-allow-origin': '*', 'access-control-expose-headers': 'Content-Disposition', authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', connection: 'keep-alive', 'content-length': '620', 'content-security-policy': \"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests\", 'content-type': 'application/json; charset=utf-8', 'cross-origin-opener-policy': 'same-origin', 'cross-origin-resource-policy': 'same-origin', date: 'Sun, 21 Jul 2024 05:10:23 GMT', etag: 'W/\"26c-AztTvfe9YztCT2P/pNa2u72mG6o\"', 'origin-agent-cluster': '?1', 'referrer-policy': 'no-referrer', 'strict-transport-security': 'max-age=15552000; includeSubDomains', 'x-content-type-options': 'nosniff', 'x-dns-prefetch-control': 'off', 'x-download-options': 'noopen', 'x-frame-options': 'SAMEORIGIN', 'x-permitted-cross-domain-policies': 'none', 'x-xss-protection': '0' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist",
                      "stack": "AssertionError: Expected no result from issuer.: expected Response { status: 201, statusText: 'Created', headers: Headers { 'access-control-allow-origin': '*', 'access-control-expose-headers': 'Content-Disposition', authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', connection: 'keep-alive', 'content-length': '620', 'content-security-policy': \"default-src 'self';base-uri 'self';font-src 'self' https: data:;form-action 'self';frame-ancestors 'self';img-src 'self' data:;object-src 'none';script-src 'self';script-src-attr 'none';style-src 'self' https: 'unsafe-inline';upgrade-insecure-requests\", 'content-type': 'application/json; charset=utf-8', 'cross-origin-opener-policy': 'same-origin', 'cross-origin-resource-policy': 'same-origin', date: 'Sun, 21 Jul 2024 05:10:23 GMT', etag: 'W/\"26c-AztTvfe9YztCT2P/pNa2u72mG6o\"', 'origin-agent-cluster': '?1', 'referrer-policy': 'no-referrer', 'strict-transport-security': 'max-age=15552000; includeSubDomains', 'x-content-type-options': 'nosniff', 'x-dns-prefetch-control': 'off', 'x-download-options': 'noopen', 'x-frame-options': 'SAMEORIGIN', 'x-permitted-cross-domain-policies': 'none', 'x-xss-protection': '0' }, 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 shouldThrowInvalidInput (file:///home/runner/work/vc-api-issuer-test-suite/vc-api-issuer-test-suite/tests/assertions.js:9:14)\n    at Context. (file:///home/runner/work/vc-api-issuer-test-suite/vc-api-issuer-test-suite/tests/10-issuer.js:143:11)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"
                    }
{
                      "name": "AssertionError",
                      "message": "Expected an HTTP error response code.: expected undefined to exist",
                      "stack": "AssertionError: Expected an HTTP error response code.: expected undefined to exist\n    at should.exist (node_modules/chai/lib/chai/interface/should.js:144:34)\n    at shouldThrowInvalidInput (file:///home/runner/work/vc-api-issuer-test-suite/vc-api-issuer-test-suite/tests/assertions.js:11:10)\n    at Context. (file:///home/runner/work/vc-api-issuer-test-suite/vc-api-issuer-test-suite/tests/10-issuer.js:143:11)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"
                    }
credential MUST have property "credentialSubject"
{
                      "name": "AssertionError",
                      "message": "Expected status code 400 or 422.: expected 500 to be one of [ 400, 422 ]",
                      "stack": "AssertionError: Expected status code 400 or 422.: expected 500 to be one of [ 400, 422 ]\n    at shouldThrowInvalidInput (file:///home/runner/work/vc-api-issuer-test-suite/vc-api-issuer-test-suite/tests/assertions.js:14:26)\n    at Context. (file:///home/runner/work/vc-api-issuer-test-suite/vc-api-issuer-test-suite/tests/10-issuer.js:154:9)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"
                    }
{
                      "name": "AssertionError",
                      "message": "Expected an HTTP error response code.: expected undefined to exist",
                      "stack": "AssertionError: Expected an HTTP error response code.: expected undefined to exist\n    at should.exist (node_modules/chai/lib/chai/interface/should.js:144:34)\n    at shouldThrowInvalidInput (file:///home/runner/work/vc-api-issuer-test-suite/vc-api-issuer-test-suite/tests/assertions.js:11:10)\n    at Context. (file:///home/runner/work/vc-api-issuer-test-suite/vc-api-issuer-test-suite/tests/10-issuer.js:154:9)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"
                    }
{
                      "name": "AssertionError",
                      "message": "Expected no result from issuer.: expected Response { status: 201, statusText: 'Created', headers: Headers { authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', 'cf-cache-status': 'DYNAMIC', 'cf-ray': '8a68af57bb61ce74-SJC', connection: 'keep-alive', 'content-length': '628', 'content-type': 'application/json', date: 'Sun, 21 Jul 2024 05:10:30 GMT', server: 'cloudflare' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist",
                      "stack": "AssertionError: Expected no result from issuer.: expected Response { status: 201, statusText: 'Created', headers: Headers { authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', 'cf-cache-status': 'DYNAMIC', 'cf-ray': '8a68af57bb61ce74-SJC', connection: 'keep-alive', 'content-length': '628', 'content-type': 'application/json', date: 'Sun, 21 Jul 2024 05:10:30 GMT', server: 'cloudflare' }, 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 shouldThrowInvalidInput (file:///home/runner/work/vc-api-issuer-test-suite/vc-api-issuer-test-suite/tests/assertions.js:9:14)\n    at Context. (file:///home/runner/work/vc-api-issuer-test-suite/vc-api-issuer-test-suite/tests/10-issuer.js:154:9)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"
                    }
"credential.credentialSubject" MUST be an object
{
                      "name": "AssertionError",
                      "message": "Expected no result from issuer.: expected Response { status: 201, statusText: 'Created', headers: Headers { authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', 'content-length': '681', 'content-type': 'application/ld+json', date: 'Sun, 21 Jul 2024 05:09:58 GMT', server: 'Google Frontend', 'x-cloud-trace-context': '2624b4de03402e7e83fc5a598bd17ba3' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist",
                      "stack": "AssertionError: Expected no result from issuer.: expected Response { status: 201, statusText: 'Created', headers: Headers { authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', 'content-length': '681', 'content-type': 'application/ld+json', date: 'Sun, 21 Jul 2024 05:09:58 GMT', server: 'Google Frontend', 'x-cloud-trace-context': '2624b4de03402e7e83fc5a598bd17ba3' }, 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 shouldThrowInvalidInput (file:///home/runner/work/vc-api-issuer-test-suite/vc-api-issuer-test-suite/tests/assertions.js:9:14)\n    at Context. (file:///home/runner/work/vc-api-issuer-test-suite/vc-api-issuer-test-suite/tests/10-issuer.js:168:11)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"
                    }
{
                      "name": "AssertionError",
                      "message": "Expected status code 400 or 422.: expected 500 to be one of [ 400, 422 ]",
                      "stack": "AssertionError: Expected status code 400 or 422.: expected 500 to be one of [ 400, 422 ]\n    at shouldThrowInvalidInput (file:///home/runner/work/vc-api-issuer-test-suite/vc-api-issuer-test-suite/tests/assertions.js:14:26)\n    at Context. (file:///home/runner/work/vc-api-issuer-test-suite/vc-api-issuer-test-suite/tests/10-issuer.js:168:11)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"
                    }
{
                      "name": "AssertionError",
                      "message": "Expected an HTTP error response code.: expected undefined to exist",
                      "stack": "AssertionError: Expected an HTTP error response code.: expected undefined to exist\n    at should.exist (node_modules/chai/lib/chai/interface/should.js:144:34)\n    at shouldThrowInvalidInput (file:///home/runner/work/vc-api-issuer-test-suite/vc-api-issuer-test-suite/tests/assertions.js:11:10)\n    at Context. (file:///home/runner/work/vc-api-issuer-test-suite/vc-api-issuer-test-suite/tests/10-issuer.js:168:11)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"
                    }
{
                      "name": "AssertionError",
                      "message": "Expected no result from issuer.: expected Response { status: 201, statusText: 'Created', headers: Headers { authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', 'cf-cache-status': 'DYNAMIC', 'cf-ray': '8a68af59f8de67b5-SJC', connection: 'keep-alive', 'content-length': '629', 'content-type': 'application/json', date: 'Sun, 21 Jul 2024 05:10:30 GMT', server: 'cloudflare' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist",
                      "stack": "AssertionError: Expected no result from issuer.: expected Response { status: 201, statusText: 'Created', headers: Headers { authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', 'cf-cache-status': 'DYNAMIC', 'cf-ray': '8a68af59f8de67b5-SJC', connection: 'keep-alive', 'content-length': '629', 'content-type': 'application/json', date: 'Sun, 21 Jul 2024 05:10:30 GMT', server: 'cloudflare' }, 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 shouldThrowInvalidInput (file:///home/runner/work/vc-api-issuer-test-suite/vc-api-issuer-test-suite/tests/assertions.js:9:14)\n    at Context. (file:///home/runner/work/vc-api-issuer-test-suite/vc-api-issuer-test-suite/tests/10-issuer.js:168:11)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"
                    }
credential MAY have property "expirationDate"
{
                      "name": "AssertionError",
                      "message": "Expected no error, got fetch failed: expected TypeError: fetch failed { …(2) } to not exist",
                      "stack": "AssertionError: Expected no error, got fetch failed: expected TypeError: fetch failed { …(2) } to not exist\n    at should.not.exist (node_modules/chai/lib/chai/interface/should.js:208:38)\n    at shouldReturnResult (file:///home/runner/work/vc-api-issuer-test-suite/vc-api-issuer-test-suite/tests/assertions.js:19:14)\n    at Context. (file:///home/runner/work/vc-api-issuer-test-suite/vc-api-issuer-test-suite/tests/10-issuer.js:193:9)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"
                    }

Issue Credential - JWT

Issuer ⇒
Test Name
SpruceID
MUST successfully issue a credential.
Request body MUST have property "credential".
credential MUST have property "@context".
credential "@context" MUST be an array.
credential "@context" items MUST be strings.
credential MUST have property "type"
"credential.type" MUST be an array.
"credential.type" items MUST be strings
credential MUST have property "issuer"
"credential.issuer" MUST be a string or an object
credential MUST have property "credentialSubject"
{
                      "name": "AssertionError",
                      "message": "Expected no result from issuer.: expected Response { status: 201, statusText: 'Created', headers: Headers { authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', 'cf-cache-status': 'DYNAMIC', 'cf-ray': '8a68af778e57ce74-SJC', connection: 'keep-alive', 'content-length': '629', 'content-type': 'application/json', date: 'Sun, 21 Jul 2024 05:10:35 GMT', server: 'cloudflare' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist",
                      "stack": "AssertionError: Expected no result from issuer.: expected Response { status: 201, statusText: 'Created', headers: Headers { authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', 'cf-cache-status': 'DYNAMIC', 'cf-ray': '8a68af778e57ce74-SJC', connection: 'keep-alive', 'content-length': '629', 'content-type': 'application/json', date: 'Sun, 21 Jul 2024 05:10:35 GMT', server: 'cloudflare' }, 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 shouldThrowInvalidInput (file:///home/runner/work/vc-api-issuer-test-suite/vc-api-issuer-test-suite/tests/assertions.js:9:14)\n    at Context. (file:///home/runner/work/vc-api-issuer-test-suite/vc-api-issuer-test-suite/tests/11-issuer-jwt.js:151:9)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"
                    }
"credential.credentialSubject" MUST be an object
{
                      "name": "AssertionError",
                      "message": "Expected no result from issuer.: expected Response { status: 201, statusText: 'Created', headers: Headers { authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', 'cf-cache-status': 'DYNAMIC', 'cf-ray': '8a68af79ae9467b5-SJC', connection: 'keep-alive', 'content-length': '629', 'content-type': 'application/json', date: 'Sun, 21 Jul 2024 05:10:35 GMT', server: 'cloudflare' }, body: ReadableStream { locked: false, state: 'readable', supportsBYOB: true }, bodyUsed: false, ok: true, redirected: false, type: 'default', url: '' } to not exist",
                      "stack": "AssertionError: Expected no result from issuer.: expected Response { status: 201, statusText: 'Created', headers: Headers { authorization: '** SANITIZED TO PREVENT EXPOSING OF SECRETS ***', 'cf-cache-status': 'DYNAMIC', 'cf-ray': '8a68af79ae9467b5-SJC', connection: 'keep-alive', 'content-length': '629', 'content-type': 'application/json', date: 'Sun, 21 Jul 2024 05:10:35 GMT', server: 'cloudflare' }, 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 shouldThrowInvalidInput (file:///home/runner/work/vc-api-issuer-test-suite/vc-api-issuer-test-suite/tests/assertions.js:9:14)\n    at Context. (file:///home/runner/work/vc-api-issuer-test-suite/vc-api-issuer-test-suite/tests/11-issuer-jwt.js:164:11)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"
                    }
credential MAY have property "issuanceDate"
credential MAY have property "expirationDate"