diff --git a/reports/interoperability-1724980304/.gitkeep b/reports/interoperability-1724980304/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/reports/interoperability-1724980304/10625048794-interop-credentials-revocation-BCGov.html b/reports/interoperability-1724980304/10625048794-interop-credentials-revocation-BCGov.html new file mode 100644 index 0000000000..4babe96cee --- /dev/null +++ b/reports/interoperability-1724980304/10625048794-interop-credentials-revocation-BCGov.html @@ -0,0 +1,1783 @@ + + + + + Newman Summary Report + + + + + + + + + +
+
+ + + +
+
+
+ +
+
+
+
+

Newman Run Dashboard

+
Friday, 30 August 2024 01:08:35
+
+
+
+
+
+ +
+
Total Iterations
+

1

+
+
+
+
+
+
+
+ +
+
Total Assertions
+

26

+
+
+
+
+
+
+
+ +
+
Total Failed Tests
+

0

+
+
+
+
+
+
+
+ +
+
Total Skipped Tests
+

0

+
+
+
+
+
+
+
+
+
+
+
+
File Information
+ Collection: Credentials Status Update Tutorial
+ + +
+
+
+
+
+
+
+
+
Timings and Data
+ Total run duration: 34.4s
+ Total data received: 2.67KB
+ Average response time: 5.7s
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary ItemTotalFailed
Requests60
Prerequest Scripts80
Test Scripts120
Assertions260
Skipped Tests0-
+
+
+
+
+
+
+
+
+
+
+ + +
+

There are no failed tests



+
+
+ +
+ + +
+

There are no skipped tests



+
+
+
+ + + +
+ + +
+ +
+
1 Iteration available to view
+ + +
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
Request Information
+ Request Method: POST
+ Request URL: https://traceability.interop.vonx.io/oauth/token
+
+
+
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 548ms
+ Mean size per request: 237B
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
must return `200 Success` status100
response body must include non-empty access_token100
response body must represent `Bearer` token100
returned token must expire in the future100
`access_token` persisted to collectionVariables100
Total500
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+ +
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 2.2s
+ Mean size per request: 1.02KB
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
`access_token` collection variable must be set100
Status code is 200100
must include valid JSON response body100
didDocument must be present in response body100
verification method controller must match did subject100
`credential_issuer_id` persisted to collectionVariables100
Total600
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+ +
+
+
Response Information
+ Response Code: 201 - Created
+ Mean time per request: 17.3s
+ Mean size per request: 1.22KB
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
`access_token` collection variable must be set100
`credential_issuer_id` collection variable must be set100
must return `201 Created` status100
`verifiable_credential` persisted to collectionVariables100
Total400
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+ +
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 6s
+ Mean size per request: 86B
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
`access_token` collection variable must be set100
`verifiable_credential` collection variable must be set100
must return `200 Success` status100
verification should be successful100
Total400
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+ +
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 2.5s
+ Mean size per request: 28B
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
`access_token` collection variable must be set100
`verifiable_credential_id` local variable must be set100
must return `200 Success` status100
Total300
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+ +
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 5.5s
+ Mean size per request: 96B
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
`access_token` collection variable must be set100
`verifiable_credential` collection variable must be set100
must return `200 Success` status100
Response 'verified' property should be false100
Total400
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/reports/interoperability-1724980304/10625048794-interop-credentials-revocation-BCGov.json b/reports/interoperability-1724980304/10625048794-interop-credentials-revocation-BCGov.json new file mode 100644 index 0000000000..2a4336de80 --- /dev/null +++ b/reports/interoperability-1724980304/10625048794-interop-credentials-revocation-BCGov.json @@ -0,0 +1,850 @@ +{ + "collection": { + "info": { + "_postman_id": "85f81550-bf06-4933-9c9f-5dafdf71929d", + "name": "Credentials Status Update Tutorial", + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" + }, + "item": [ + { + "id": "18f66d46-6e58-43b9-9f45-efdf4d231681", + "name": "Get Access Token", + "request": { + "url": { + "host": [ + "{{TOKEN_ENDPOINT}}" + ], + "query": [], + "variable": [] + }, + "method": "POST", + "body": { + "mode": "urlencoded", + "urlencoded": [ + { + "key": "audience", + "value": "{{TOKEN_AUDIENCE}}" + }, + { + "key": "client_id", + "value": "{{CLIENT_ID}}" + }, + { + "key": "client_secret", + "value": "{{CLIENT_SECRET}}" + }, + { + "key": "grant_type", + "value": "client_credentials" + }, + { + "key": "scope", + "value": "{{CLIENT_SCOPE}}" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "1fa8da9c-d79b-4ce2-afa5-3b4b8d76640c", + "type": "text/javascript", + "exec": [ + "// Token requests are expected to return a `200 Success` response code. Any", + "// other response code should trigger a failure.", + "pm.test(\"must return `200 Success` status\", function() {", + " pm.response.to.have.status(200);", + "});", + "", + "// The response should include an `access_token` value - this will be presented", + "// to authenticated API endpoints in the `Authentication` header (see the last", + "// testing code block for details on how this is persisted).", + "pm.test(\"response body must include non-empty access_token\", function () {", + " const { access_token } = pm.response.json()", + " pm.expect(access_token).to.be.a('string').that.is.not.empty;", + "});", + "", + "// The type of `access_token` returned by the token request is expected to be", + "// `Bearer`.", + "pm.test(\"response body must represent `Bearer` token\", function() {", + " const { token_type } = pm.response.json()", + " pm.expect(token_type).to.equal(\"Bearer\");", + "});", + "", + "// The returned data includes an `expires_in` field that indicates time until", + "// token expiration. Validate that this value is a whole number greater than", + "// zero, as anything less than or equal to zero means that the `access_token`", + "// is already expired.", + "pm.test(\"returned token must expire in the future\", function() {", + " const { expires_in } = pm.response.json()", + " pm.expect(expires_in).to.be.above(0);", + "});", + "", + "// The returned `access_token` value is persisted as a Postman collection", + "// variable that can be accessed by other requests in the collection by calling", + "// `pm.collectionVariables.get(\"access_token\")`.", + "pm.test(\"`access_token` persisted to collectionVariables\", function() {", + " const { access_token } = pm.response.json()", + " pm.collectionVariables.set(\"access_token\", access_token);", + "});" + ], + "_lastExecutionId": "e043f37d-0dd7-4500-a6d3-5b6eb0e52d1d" + } + } + ] + }, + { + "id": "f599f84d-5a67-40a0-bc44-90755f23a4e7", + "name": "Get Organization DIDs", + "request": { + "url": { + "path": [ + "identifiers", + "{{ORGANIZATION_DID_WEB}}" + ], + "host": [ + "{{API_BASE_URL}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "string", + "value": "{{access_token}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "4cc264f5-89b8-4c37-8a41-6256f5022b73", + "type": "text/javascript", + "exec": [ + "// This endpoint is authenticated. This test will not prevent the request from", + "// running when the `access_token` collection variable is missing, but it will", + "// give an indication of why the request failed in that scenario.", + "pm.test(\"`access_token` collection variable must be set\", function () {", + " const access_token = pm.collectionVariables.get(\"access_token\");", + " pm.expect(access_token).to.be.a('string').that.is.not.empty;", + "});", + "", + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"must include valid JSON response body\", function() {", + " pm.response.json(); // will throw on parse failure", + "});", + "", + "// The response JSON must include a didDocument property that contains the", + "// resolved DID document.", + "pm.test(\"didDocument must be present in response body\", function() {", + " const jsonData = pm.response.json();", + " pm.expect(jsonData).to.have.property('didDocument');", + "});", + "", + "// If a verificationMethod property is present, the controller property must", + "// match the didDocument.id property.", + "pm.test(\"verification method controller must match did subject\", function() {", + " const { didDocument } = pm.response.json();", + " const vm = didDocument.verificationMethod || [];", + " vm.forEach((m) => pm.expect(m.controller).to.equal(didDocument.id));", + "});", + "", + "// The value of didDocument.id is persisted as a Postman collection variable", + "// that can be accessed by other requests in the collection by calling", + "// pm.collectionVariables.get(\"credential_issuer_id\").", + "pm.test(\"`credential_issuer_id` persisted to collectionVariables\", function() {", + " const { didDocument } = pm.response.json();", + " pm.collectionVariables.set(\"credential_issuer_id\", didDocument.id);", + "});" + ], + "_lastExecutionId": "14a60f86-33f6-47d8-8464-368591739f90" + } + } + ], + "protocolProfileBehavior": { + "disabledSystemHeaders": {} + } + }, + { + "id": "621c78d3-4301-4ead-93c1-95a62e30e8bc", + "name": "Issue Credential", + "request": { + "url": { + "path": [ + "credentials", + "issue" + ], + "host": [ + "{{API_BASE_URL}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/vc+ld+json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"credential\": {\n \"@context\": [\n \"https://www.w3.org/2018/credentials/v1\",\n \"https://w3id.org/vc-revocation-list-2020/v1\"\n ],\n \"id\": \"urn:uuid:{{$randomUUID}}\",\n \"type\": [\n \"VerifiableCredential\"\n ],\n \"issuer\": \"{{credential_issuer_id}}\",\n \"issuanceDate\": \"{{$isoTimestamp}}\",\n \"credentialSubject\": {\n \"id\": \"did:example:123\"\n }\n },\n \"options\": {\n \"type\": \"Ed25519Signature2018\",\n \"created\": \"{{$isoTimestamp}}\",\n \"credentialStatus\": {\n \"type\": \"StatusList2021Entry\"\n }\n }\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "string", + "value": "{{access_token}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "34805962-a810-49b9-90de-9557f5fc539d", + "type": "text/javascript", + "exec": [ + "pm.test(\"`access_token` collection variable must be set\", function () {", + " pm.expect(pm.collectionVariables.get(\"access_token\")).to.not.be.undefined;", + "});", + "", + "pm.test(\"`credential_issuer_id` collection variable must be set\", function () {", + " pm.expect(pm.collectionVariables.get(\"credential_issuer_id\")).to.not.be.undefined;", + "});", + "", + "pm.test(\"must return `201 Created` status\", function () {", + " pm.response.to.have.status(201);", + "});", + "", + "// Verifiable credential must be made available to later requests", + "pm.test(\"`verifiable_credential` persisted to collectionVariables\", function() {", + " const {verifiableCredential} = pm.response.json();", + " pm.collectionVariables.set(\"verifiable_credential\", JSON.stringify(verifiableCredential));", + "});" + ], + "_lastExecutionId": "978b2092-ad6b-4c55-bcce-cc3751805231" + } + }, + { + "listen": "prerequest", + "script": { + "id": "63ef92f4-db15-4bf6-beb6-d44228e1e310", + "type": "text/javascript", + "exec": [ + "" + ], + "_lastExecutionId": "98e3b143-2190-4a88-8d5b-3d2cb406d4ca" + } + } + ] + }, + { + "id": "9d975c8c-c2b8-4bfa-81cb-e6340db33aab", + "name": "Verify Credential", + "request": { + "url": { + "path": [ + "credentials", + "verify" + ], + "host": [ + "{{API_BASE_URL}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"verifiableCredential\": {{verifiable_credential}}\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "string", + "value": "{{access_token}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "c42ca279-c255-4e03-a3a6-d05c9221978a", + "type": "text/javascript", + "exec": [ + "// The `/credentials/verify` endpoint is authenticated. This test will not", + "// prevent the request from running when the `access_token` collection variable", + "// is missing, but it will give an indication of why the request failed in that", + "// scenario.", + "pm.test(\"`access_token` collection variable must be set\", function () {", + " pm.expect(pm.collectionVariables.get(\"access_token\")).to.not.be.undefined;", + "});", + "", + "// The `verifiable_credential` from the \"Credentials Issue\" request is used to", + "// populate part of the request body. If this collection variable is missing,", + "// the request will not be prevented, but this test will raise an error that", + "// will help to identify the problem.", + "pm.test(\"`verifiable_credential` collection variable must be set\", function () {", + " pm.expect(pm.collectionVariables.get(\"verifiable_credential\")).to.not.be.undefined;", + "});", + "", + "// The expected response code for a \"Credentials Verify\" request is", + "// `200 Success`.", + "pm.test(\"must return `200 Success` status\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "// The verification should succeed.", + "pm.test(\"verification should be successful\", function() {", + " const { verified } = pm.response.json()", + " pm.expect(verified).to.be.true;", + "});" + ], + "_lastExecutionId": "c47ddac1-0ada-4ee7-8b5a-aae65a6fc903" + } + } + ] + }, + { + "id": "deabb1b3-adf3-4598-9ac5-35ad4c94fcfc", + "name": "Update Credential Status", + "request": { + "url": { + "path": [ + "credentials", + "status" + ], + "host": [ + "{{API_BASE_URL}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"credentialId\": \"{{verifiable_credential_id}}\",\n \"credentialStatus\": [\n {\n \"type\": \"StatusList2021Entry\",\n \"statusPurpose\": \"revocation\",\n \"status\": \"1\"\n }\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "string", + "value": "{{access_token}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "prerequest", + "script": { + "id": "795b719f-c65e-4f79-892e-219a9542d16d", + "type": "text/javascript", + "exec": [ + "// Extract credential ID from verifiable credential", + "let verifiable_credential_id;", + "try {", + " const { id } = JSON.parse(pm.collectionVariables.get(\"verifiable_credential\"));", + " pm.collectionVariables.set('verifiable_credential_id', id)", + "} catch {}", + "" + ], + "_lastExecutionId": "53797a6e-ad66-4deb-9a14-4fd2e96868e6" + } + }, + { + "listen": "test", + "script": { + "id": "58fbf87f-52f0-4148-b48e-ffc66fcc83cf", + "type": "text/javascript", + "exec": [ + "// The `/credentials/status` endpoint is authenticated. This test will not", + "// prevent the request from running when the `access_token` collection variable", + "// is missing, but it will give an indication of why the request failed in that", + "// scenario.", + "pm.test(\"`access_token` collection variable must be set\", function () {", + " pm.expect(pm.collectionVariables.get(\"access_token\")).to.not.be.undefined;", + "});", + "", + "// Verifiable credential ID is a required element item used in the request body", + "pm.test(\"`verifiable_credential_id` local variable must be set\", function () {", + " pm.expect(\"verifiable_credential\").to.be.a('string').that.is.not.empty;", + "});", + "", + "// The expected response code for a \"Update Credential Status\" request is `200 Success`", + "pm.test(\"must return `200 Success` status\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "_lastExecutionId": "1114a3fb-4bcc-4a16-b6c7-3257feb3fe6a" + } + } + ] + }, + { + "id": "e1689eb7-c4d5-474c-a2a7-1d38cffeb6e1", + "name": "Verify Status Update", + "request": { + "url": { + "path": [ + "credentials", + "verify" + ], + "host": [ + "{{API_BASE_URL}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"verifiableCredential\": {{verifiable_credential}}\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "string", + "value": "{{access_token}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "ef12a4c0-d026-4e88-8f52-cc25e367c69a", + "type": "text/javascript", + "exec": [ + "// The `/credentials/verify` endpoint is authenticated. This test will not", + "// prevent the request from running when the `access_token` collection variable", + "// is missing, but it will give an indication of why the request failed in that", + "// scenario.", + "pm.test(\"`access_token` collection variable must be set\", function () {", + " pm.expect(pm.collectionVariables.get(\"access_token\")).to.not.be.undefined;", + "});", + "", + "// The `verifiable_credential` from the \"Credentials Issue\" request is used to", + "// populate part of the request body. If this collection variable is missing,", + "// the request will not be prevented, but this test will raise an error that", + "// will help to identify the problem.", + "pm.test(\"`verifiable_credential` collection variable must be set\", function () {", + " pm.expect(pm.collectionVariables.get(\"verifiable_credential\")).to.not.be.undefined;", + "});", + "", + "// The expected response code for a \"Credentials Verify\" request is", + "// `200 Success`.", + "pm.test(\"must return `200 Success` status\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "// Confirm error", + "pm.test(\"Response 'verified' property should be false\", function() {", + " const { verified } = pm.response.json()", + " pm.expect(verified).to.be.false;", + "});", + "", + "", + "" + ], + "_lastExecutionId": "fea418fb-b357-4923-ad8f-3616b13c8f4f" + } + } + ] + } + ] + }, + "run": { + "stats": { + "iterations": { + "total": 1, + "pending": 0, + "failed": 0 + }, + "items": { + "total": 6, + "pending": 0, + "failed": 0 + }, + "scripts": { + "total": 20, + "pending": 0, + "failed": 0 + }, + "prerequests": { + "total": 6, + "pending": 0, + "failed": 0 + }, + "requests": { + "total": 6, + "pending": 0, + "failed": 0 + }, + "tests": { + "total": 6, + "pending": 0, + "failed": 0 + }, + "assertions": { + "total": 26, + "pending": 0, + "failed": 0 + }, + "testScripts": { + "total": 12, + "pending": 0, + "failed": 0 + }, + "prerequestScripts": { + "total": 8, + "pending": 0, + "failed": 0 + } + }, + "timings": { + "responseAverage": 5713.5, + "responseMin": 548, + "responseMax": 17300, + "responseSd": 5519.498610985121, + "dnsAverage": 0, + "dnsMin": 0, + "dnsMax": 0, + "dnsSd": 0, + "firstByteAverage": 0, + "firstByteMin": 0, + "firstByteMax": 0, + "firstByteSd": 0, + "started": 1724980081161, + "completed": 1724980115632 + }, + "executions": [ + { + "id": "18f66d46-6e58-43b9-9f45-efdf4d231681", + "cursor": { + "position": 0, + "iteration": 0, + "length": 6, + "cycles": 1, + "empty": false, + "eof": false, + "bof": true, + "cr": false, + "ref": "7dd073a2-b089-41dc-bf41-af7f476532fc", + "httpRequestId": "128826ac-699e-4780-bd9a-e8022dd23942" + }, + "item": { + "id": "18f66d46-6e58-43b9-9f45-efdf4d231681", + "name": "Get Access Token" + }, + "response": { + "id": "3aaef950-630e-4e99-bec7-bd3bb56bd085", + "status": "OK", + "code": 200, + "responseTime": 548, + "responseSize": 237 + }, + "assertions": [ + { + "assertion": "must return `200 Success` status", + "skipped": false + }, + { + "assertion": "response body must include non-empty access_token", + "skipped": false + }, + { + "assertion": "response body must represent `Bearer` token", + "skipped": false + }, + { + "assertion": "returned token must expire in the future", + "skipped": false + }, + { + "assertion": "`access_token` persisted to collectionVariables", + "skipped": false + } + ] + }, + { + "id": "f599f84d-5a67-40a0-bc44-90755f23a4e7", + "cursor": { + "ref": "f9869090-3c4c-4e9f-a773-3777d8a7af4a", + "length": 6, + "cycles": 1, + "position": 1, + "iteration": 0, + "httpRequestId": "9e347705-cd4d-4a07-bf0b-ab52badc5dbb" + }, + "item": { + "id": "f599f84d-5a67-40a0-bc44-90755f23a4e7", + "name": "Get Organization DIDs" + }, + "response": { + "id": "6bb30c70-5492-426d-b5d7-dbea2541eab0", + "status": "OK", + "code": 200, + "responseTime": 2256, + "responseSize": 1040 + }, + "assertions": [ + { + "assertion": "`access_token` collection variable must be set", + "skipped": false + }, + { + "assertion": "Status code is 200", + "skipped": false + }, + { + "assertion": "must include valid JSON response body", + "skipped": false + }, + { + "assertion": "didDocument must be present in response body", + "skipped": false + }, + { + "assertion": "verification method controller must match did subject", + "skipped": false + }, + { + "assertion": "`credential_issuer_id` persisted to collectionVariables", + "skipped": false + } + ] + }, + { + "id": "621c78d3-4301-4ead-93c1-95a62e30e8bc", + "cursor": { + "ref": "66d40a6b-2b49-4d6e-bb84-4e365e2e8316", + "length": 6, + "cycles": 1, + "position": 2, + "iteration": 0, + "httpRequestId": "edcd3ad3-5ab9-4d3a-8ae1-f0605cd3c12f" + }, + "item": { + "id": "621c78d3-4301-4ead-93c1-95a62e30e8bc", + "name": "Issue Credential" + }, + "response": { + "id": "1a5ceccb-c7a0-4cc0-82d8-606f92a1279b", + "status": "Created", + "code": 201, + "responseTime": 17300, + "responseSize": 1250 + }, + "assertions": [ + { + "assertion": "`access_token` collection variable must be set", + "skipped": false + }, + { + "assertion": "`credential_issuer_id` collection variable must be set", + "skipped": false + }, + { + "assertion": "must return `201 Created` status", + "skipped": false + }, + { + "assertion": "`verifiable_credential` persisted to collectionVariables", + "skipped": false + } + ] + }, + { + "id": "9d975c8c-c2b8-4bfa-81cb-e6340db33aab", + "cursor": { + "ref": "b9105f62-67dc-4c19-9549-264dd5ee4a57", + "length": 6, + "cycles": 1, + "position": 3, + "iteration": 0, + "httpRequestId": "84403b7f-f88c-4ab4-9fb0-0be7fb136d08" + }, + "item": { + "id": "9d975c8c-c2b8-4bfa-81cb-e6340db33aab", + "name": "Verify Credential" + }, + "response": { + "id": "99cf37fe-25f1-4bda-8637-c69cce18882e", + "status": "OK", + "code": 200, + "responseTime": 6049, + "responseSize": 86 + }, + "assertions": [ + { + "assertion": "`access_token` collection variable must be set", + "skipped": false + }, + { + "assertion": "`verifiable_credential` collection variable must be set", + "skipped": false + }, + { + "assertion": "must return `200 Success` status", + "skipped": false + }, + { + "assertion": "verification should be successful", + "skipped": false + } + ] + }, + { + "id": "deabb1b3-adf3-4598-9ac5-35ad4c94fcfc", + "cursor": { + "ref": "b9bbe13f-dddf-4370-9907-a4d570f3973f", + "length": 6, + "cycles": 1, + "position": 4, + "iteration": 0, + "httpRequestId": "d857f5f1-4294-4197-94a8-0e2120e9be6c" + }, + "item": { + "id": "deabb1b3-adf3-4598-9ac5-35ad4c94fcfc", + "name": "Update Credential Status" + }, + "response": { + "id": "19fe79ea-a0dd-4b6a-ac3d-3911707dd738", + "status": "OK", + "code": 200, + "responseTime": 2589, + "responseSize": 28 + }, + "assertions": [ + { + "assertion": "`access_token` collection variable must be set", + "skipped": false + }, + { + "assertion": "`verifiable_credential_id` local variable must be set", + "skipped": false + }, + { + "assertion": "must return `200 Success` status", + "skipped": false + } + ] + }, + { + "id": "e1689eb7-c4d5-474c-a2a7-1d38cffeb6e1", + "cursor": { + "ref": "dbe4b201-059b-4d9f-8f99-8534c007a8c1", + "length": 6, + "cycles": 1, + "position": 5, + "iteration": 0, + "httpRequestId": "7b222a12-b289-4568-9af7-851490a35a1b" + }, + "item": { + "id": "e1689eb7-c4d5-474c-a2a7-1d38cffeb6e1", + "name": "Verify Status Update" + }, + "response": { + "id": "168f95eb-bf69-49f8-9261-a1c603996794", + "status": "OK", + "code": 200, + "responseTime": 5539, + "responseSize": 96 + }, + "assertions": [ + { + "assertion": "`access_token` collection variable must be set", + "skipped": false + }, + { + "assertion": "`verifiable_credential` collection variable must be set", + "skipped": false + }, + { + "assertion": "must return `200 Success` status", + "skipped": false + }, + { + "assertion": "Response 'verified' property should be false", + "skipped": false + } + ] + } + ] + } +} \ No newline at end of file diff --git a/reports/interoperability-1724980304/10625048794-interop-credentials-revocation-GS1US.html b/reports/interoperability-1724980304/10625048794-interop-credentials-revocation-GS1US.html new file mode 100644 index 0000000000..871e01816f --- /dev/null +++ b/reports/interoperability-1724980304/10625048794-interop-credentials-revocation-GS1US.html @@ -0,0 +1,2020 @@ + + + + + Newman Summary Report + + + + + + + + + +
+
+ + + +
+
+
+ +
+
+
+
+

Newman Run Dashboard

+
Friday, 30 August 2024 01:08:03
+
+
+
+
+
+ +
+
Total Iterations
+

1

+
+
+
+
+
+
+
+ +
+
Total Assertions
+

26

+
+
+
+
+
+
+
+ +
+
Total Failed Tests
+

6

+
+
+
+
+
+
+
+ +
+
Total Skipped Tests
+

0

+
+
+
+
+
+
+
+
+
+
+
+
File Information
+ Collection: Credentials Status Update Tutorial
+ + +
+
+
+
+
+
+
+
+
Timings and Data
+ Total run duration: 1207ms
+ Total data received: 4.29KB
+ Average response time: 168ms
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary ItemTotalFailed
Requests60
Prerequest Scripts80
Test Scripts120
Assertions266
Skipped Tests0-
+
+
+
+
+
+
+
+
+
+
+ + +
+ +
+
+
+ +
+

Showing 6 Failures

+
+
+
+
+ +
+
+
Failed Test: must return `201 Created` status
+
+
Assertion Error Message
+
+
expected response to have status code 201 but got 400
+
+
+
+
+
+
+
+
+
+ +
+
+
Failed Test: must return `200 Success` status
+
+
Assertion Error Message
+
+
expected response to have status code 200 but got 400
+
+
+
+
+
+
+
+
+
+ +
+
+
Failed Test: verification should be successful
+
+
Assertion Error Message
+
+
expected undefined to be true
+
+
+
+
+
+
+
+
+
+ +
+
+
Failed Test: must return `200 Success` status
+
+
Assertion Error Message
+
+
expected response to have status code 200 but got 400
+
+
+
+
+
+
+
+
+
+ +
+
+
Failed Test: must return `200 Success` status
+
+
Assertion Error Message
+
+
expected response to have status code 200 but got 400
+
+
+
+
+
+
+
+
+
+ +
+
+
Failed Test: Response 'verified' property should be false
+
+
Assertion Error Message
+
+
expected undefined to be false
+
+
+
+
+
+
+
+ +
+ + +
+

There are no skipped tests



+
+
+
+ + + +
+ + + +
+ +
+
1 Iteration available to view
+ + +
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
Request Information
+ Request Method: POST
+ Request URL: https://vc.cbpsvip.gs1us.org/cbpsvip/oauth/token/e5e65807-3d2a-4f67-a262-72f255868da0
+
+
+
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 797ms
+ Mean size per request: 1.31KB
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
must return `200 Success` status100
response body must include non-empty access_token100
response body must represent `Bearer` token100
returned token must expire in the future100
`access_token` persisted to collectionVariables100
Total500
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
Request Information
+ Request Method: GET
+ Request URL: https://vc.cbpsvip.gs1us.org/cbpsvip/identifiers/did:web:cbpvsvip-vc.gs1us.org
+
+
+
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 42ms
+ Mean size per request: 2.39KB
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
`access_token` collection variable must be set100
Status code is 200100
must include valid JSON response body100
didDocument must be present in response body100
verification method controller must match did subject100
`credential_issuer_id` persisted to collectionVariables100
Total600
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
Request Information
+ Request Method: POST
+ Request URL: https://vc.cbpsvip.gs1us.org/cbpsvip/credentials/issue
+
+
+
+
+
Response Information
+ Response Code: 400 - Bad Request
+ Mean time per request: 43ms
+ Mean size per request: 132B
+
+
Test Pass Percentage
+
+
+
+
75 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
`access_token` collection variable must be set100
`credential_issuer_id` collection variable must be set100
must return `201 Created` status010
`verifiable_credential` persisted to collectionVariables100
Total310
+
+
+
+
+
+
+
Test Failure
+
+ + + + + + + + +
Test NameAssertion Error
must return `201 Created` status
expected response to have status code 201 but got 400
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
Request Information
+ Request Method: POST
+ Request URL: https://vc.cbpsvip.gs1us.org/cbpsvip/credentials/verify
+
+
+
+
+
Response Information
+ Response Code: 400 - Bad Request
+ Mean time per request: 41ms
+ Mean size per request: 160B
+
+
Test Pass Percentage
+
+
+
+
50 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
`access_token` collection variable must be set100
`verifiable_credential` collection variable must be set100
must return `200 Success` status010
verification should be successful010
Total220
+
+
+
+
+
+
+
Test Failures
+
+ + + + + + + + + + + + +
Test NameAssertion Error
must return `200 Success` status
expected response to have status code 200 but got 400
verification should be successful
expected undefined to be true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
Request Information
+ Request Method: POST
+ Request URL: https://vc.cbpsvip.gs1us.org/cbpsvip/credentials/status
+
+
+
+
+
Response Information
+ Response Code: 400 - Bad Request
+ Mean time per request: 47ms
+ Mean size per request: 152B
+
+
Test Pass Percentage
+
+
+
+
67 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
`access_token` collection variable must be set100
`verifiable_credential_id` local variable must be set100
must return `200 Success` status010
Total210
+
+
+
+
+
+
+
Test Failure
+
+ + + + + + + + +
Test NameAssertion Error
must return `200 Success` status
expected response to have status code 200 but got 400
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
Request Information
+ Request Method: POST
+ Request URL: https://vc.cbpsvip.gs1us.org/cbpsvip/credentials/verify
+
+
+
+
+
Response Information
+ Response Code: 400 - Bad Request
+ Mean time per request: 38ms
+ Mean size per request: 160B
+
+
Test Pass Percentage
+
+
+
+
50 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
`access_token` collection variable must be set100
`verifiable_credential` collection variable must be set100
must return `200 Success` status010
Response 'verified' property should be false010
Total220
+
+
+
+
+
+
+
Test Failures
+
+ + + + + + + + + + + + +
Test NameAssertion Error
must return `200 Success` status
expected response to have status code 200 but got 400
Response 'verified' property should be false
expected undefined to be false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/reports/interoperability-1724980304/10625048794-interop-credentials-revocation-GS1US.json b/reports/interoperability-1724980304/10625048794-interop-credentials-revocation-GS1US.json new file mode 100644 index 0000000000..4b7d7197a5 --- /dev/null +++ b/reports/interoperability-1724980304/10625048794-interop-credentials-revocation-GS1US.json @@ -0,0 +1,892 @@ +{ + "collection": { + "info": { + "_postman_id": "85f81550-bf06-4933-9c9f-5dafdf71929d", + "name": "Credentials Status Update Tutorial", + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" + }, + "item": [ + { + "id": "a62423dc-321f-4be3-a029-4b2261aa31c8", + "name": "Get Access Token", + "request": { + "url": { + "host": [ + "{{TOKEN_ENDPOINT}}" + ], + "query": [], + "variable": [] + }, + "method": "POST", + "body": { + "mode": "urlencoded", + "urlencoded": [ + { + "key": "audience", + "value": "{{TOKEN_AUDIENCE}}" + }, + { + "key": "client_id", + "value": "{{CLIENT_ID}}" + }, + { + "key": "client_secret", + "value": "{{CLIENT_SECRET}}" + }, + { + "key": "grant_type", + "value": "client_credentials" + }, + { + "key": "scope", + "value": "{{CLIENT_SCOPE}}" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "14836104-780c-45a1-b457-370dea57d35f", + "type": "text/javascript", + "exec": [ + "// Token requests are expected to return a `200 Success` response code. Any", + "// other response code should trigger a failure.", + "pm.test(\"must return `200 Success` status\", function() {", + " pm.response.to.have.status(200);", + "});", + "", + "// The response should include an `access_token` value - this will be presented", + "// to authenticated API endpoints in the `Authentication` header (see the last", + "// testing code block for details on how this is persisted).", + "pm.test(\"response body must include non-empty access_token\", function () {", + " const { access_token } = pm.response.json()", + " pm.expect(access_token).to.be.a('string').that.is.not.empty;", + "});", + "", + "// The type of `access_token` returned by the token request is expected to be", + "// `Bearer`.", + "pm.test(\"response body must represent `Bearer` token\", function() {", + " const { token_type } = pm.response.json()", + " pm.expect(token_type).to.equal(\"Bearer\");", + "});", + "", + "// The returned data includes an `expires_in` field that indicates time until", + "// token expiration. Validate that this value is a whole number greater than", + "// zero, as anything less than or equal to zero means that the `access_token`", + "// is already expired.", + "pm.test(\"returned token must expire in the future\", function() {", + " const { expires_in } = pm.response.json()", + " pm.expect(expires_in).to.be.above(0);", + "});", + "", + "// The returned `access_token` value is persisted as a Postman collection", + "// variable that can be accessed by other requests in the collection by calling", + "// `pm.collectionVariables.get(\"access_token\")`.", + "pm.test(\"`access_token` persisted to collectionVariables\", function() {", + " const { access_token } = pm.response.json()", + " pm.collectionVariables.set(\"access_token\", access_token);", + "});" + ], + "_lastExecutionId": "84b615eb-614e-44b4-b326-c541406e575e" + } + } + ] + }, + { + "id": "8154d8e1-b32a-49f6-8d8b-813eac85bd43", + "name": "Get Organization DIDs", + "request": { + "url": { + "path": [ + "identifiers", + "{{ORGANIZATION_DID_WEB}}" + ], + "host": [ + "{{API_BASE_URL}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "string", + "value": "{{access_token}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "91199786-5c83-4c08-ac68-976d97a8fdb1", + "type": "text/javascript", + "exec": [ + "// This endpoint is authenticated. This test will not prevent the request from", + "// running when the `access_token` collection variable is missing, but it will", + "// give an indication of why the request failed in that scenario.", + "pm.test(\"`access_token` collection variable must be set\", function () {", + " const access_token = pm.collectionVariables.get(\"access_token\");", + " pm.expect(access_token).to.be.a('string').that.is.not.empty;", + "});", + "", + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"must include valid JSON response body\", function() {", + " pm.response.json(); // will throw on parse failure", + "});", + "", + "// The response JSON must include a didDocument property that contains the", + "// resolved DID document.", + "pm.test(\"didDocument must be present in response body\", function() {", + " const jsonData = pm.response.json();", + " pm.expect(jsonData).to.have.property('didDocument');", + "});", + "", + "// If a verificationMethod property is present, the controller property must", + "// match the didDocument.id property.", + "pm.test(\"verification method controller must match did subject\", function() {", + " const { didDocument } = pm.response.json();", + " const vm = didDocument.verificationMethod || [];", + " vm.forEach((m) => pm.expect(m.controller).to.equal(didDocument.id));", + "});", + "", + "// The value of didDocument.id is persisted as a Postman collection variable", + "// that can be accessed by other requests in the collection by calling", + "// pm.collectionVariables.get(\"credential_issuer_id\").", + "pm.test(\"`credential_issuer_id` persisted to collectionVariables\", function() {", + " const { didDocument } = pm.response.json();", + " pm.collectionVariables.set(\"credential_issuer_id\", didDocument.id);", + "});" + ], + "_lastExecutionId": "ac2c2ea4-d914-4a1a-8fc5-121a61edb021" + } + } + ], + "protocolProfileBehavior": { + "disabledSystemHeaders": {} + } + }, + { + "id": "f20f9b4e-a8ff-4119-8cb5-987c6fc3b09e", + "name": "Issue Credential", + "request": { + "url": { + "path": [ + "credentials", + "issue" + ], + "host": [ + "{{API_BASE_URL}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/vc+ld+json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"credential\": {\n \"@context\": [\n \"https://www.w3.org/2018/credentials/v1\",\n \"https://w3id.org/vc-revocation-list-2020/v1\"\n ],\n \"id\": \"urn:uuid:{{$randomUUID}}\",\n \"type\": [\n \"VerifiableCredential\"\n ],\n \"issuer\": \"{{credential_issuer_id}}\",\n \"issuanceDate\": \"{{$isoTimestamp}}\",\n \"credentialSubject\": {\n \"id\": \"did:example:123\"\n }\n },\n \"options\": {\n \"type\": \"Ed25519Signature2018\",\n \"created\": \"{{$isoTimestamp}}\",\n \"credentialStatus\": {\n \"type\": \"StatusList2021Entry\"\n }\n }\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "string", + "value": "{{access_token}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "d977a982-74c2-49b6-8f08-2e71986998d1", + "type": "text/javascript", + "exec": [ + "pm.test(\"`access_token` collection variable must be set\", function () {", + " pm.expect(pm.collectionVariables.get(\"access_token\")).to.not.be.undefined;", + "});", + "", + "pm.test(\"`credential_issuer_id` collection variable must be set\", function () {", + " pm.expect(pm.collectionVariables.get(\"credential_issuer_id\")).to.not.be.undefined;", + "});", + "", + "pm.test(\"must return `201 Created` status\", function () {", + " pm.response.to.have.status(201);", + "});", + "", + "// Verifiable credential must be made available to later requests", + "pm.test(\"`verifiable_credential` persisted to collectionVariables\", function() {", + " const {verifiableCredential} = pm.response.json();", + " pm.collectionVariables.set(\"verifiable_credential\", JSON.stringify(verifiableCredential));", + "});" + ], + "_lastExecutionId": "4c914cc2-3386-4ce1-a52e-8c662559a679" + } + }, + { + "listen": "prerequest", + "script": { + "id": "a0107653-7749-4599-a71f-6291f2b94a0e", + "type": "text/javascript", + "exec": [ + "" + ], + "_lastExecutionId": "b1886f37-4970-46f1-9968-3bf5b3d1857f" + } + } + ] + }, + { + "id": "1c087a1e-5b53-47df-a3bf-47d48cdfb4ca", + "name": "Verify Credential", + "request": { + "url": { + "path": [ + "credentials", + "verify" + ], + "host": [ + "{{API_BASE_URL}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"verifiableCredential\": {{verifiable_credential}}\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "string", + "value": "{{access_token}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "80c79a4c-4c3b-43ff-9d3e-6fc30c430ace", + "type": "text/javascript", + "exec": [ + "// The `/credentials/verify` endpoint is authenticated. This test will not", + "// prevent the request from running when the `access_token` collection variable", + "// is missing, but it will give an indication of why the request failed in that", + "// scenario.", + "pm.test(\"`access_token` collection variable must be set\", function () {", + " pm.expect(pm.collectionVariables.get(\"access_token\")).to.not.be.undefined;", + "});", + "", + "// The `verifiable_credential` from the \"Credentials Issue\" request is used to", + "// populate part of the request body. If this collection variable is missing,", + "// the request will not be prevented, but this test will raise an error that", + "// will help to identify the problem.", + "pm.test(\"`verifiable_credential` collection variable must be set\", function () {", + " pm.expect(pm.collectionVariables.get(\"verifiable_credential\")).to.not.be.undefined;", + "});", + "", + "// The expected response code for a \"Credentials Verify\" request is", + "// `200 Success`.", + "pm.test(\"must return `200 Success` status\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "// The verification should succeed.", + "pm.test(\"verification should be successful\", function() {", + " const { verified } = pm.response.json()", + " pm.expect(verified).to.be.true;", + "});" + ], + "_lastExecutionId": "e00e53b2-755a-439e-8701-e70ea28acfb8" + } + } + ] + }, + { + "id": "ae2bcf46-cba9-4f79-8329-80202c2edbd1", + "name": "Update Credential Status", + "request": { + "url": { + "path": [ + "credentials", + "status" + ], + "host": [ + "{{API_BASE_URL}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"credentialId\": \"{{verifiable_credential_id}}\",\n \"credentialStatus\": [\n {\n \"type\": \"StatusList2021Entry\",\n \"statusPurpose\": \"revocation\",\n \"status\": \"1\"\n }\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "string", + "value": "{{access_token}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "prerequest", + "script": { + "id": "4fcf64b4-43af-49c2-865a-5778b7242e78", + "type": "text/javascript", + "exec": [ + "// Extract credential ID from verifiable credential", + "let verifiable_credential_id;", + "try {", + " const { id } = JSON.parse(pm.collectionVariables.get(\"verifiable_credential\"));", + " pm.collectionVariables.set('verifiable_credential_id', id)", + "} catch {}", + "" + ], + "_lastExecutionId": "78c5bdba-eb2b-4946-8ca7-d10bddb69e2a" + } + }, + { + "listen": "test", + "script": { + "id": "678b1244-8cba-4db9-a80d-92bdac5ab384", + "type": "text/javascript", + "exec": [ + "// The `/credentials/status` endpoint is authenticated. This test will not", + "// prevent the request from running when the `access_token` collection variable", + "// is missing, but it will give an indication of why the request failed in that", + "// scenario.", + "pm.test(\"`access_token` collection variable must be set\", function () {", + " pm.expect(pm.collectionVariables.get(\"access_token\")).to.not.be.undefined;", + "});", + "", + "// Verifiable credential ID is a required element item used in the request body", + "pm.test(\"`verifiable_credential_id` local variable must be set\", function () {", + " pm.expect(\"verifiable_credential\").to.be.a('string').that.is.not.empty;", + "});", + "", + "// The expected response code for a \"Update Credential Status\" request is `200 Success`", + "pm.test(\"must return `200 Success` status\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "_lastExecutionId": "dc68227b-0bf1-49cf-bd53-af3cd1e6bf9b" + } + } + ] + }, + { + "id": "93517530-5258-4654-b10f-bf38188f85cf", + "name": "Verify Status Update", + "request": { + "url": { + "path": [ + "credentials", + "verify" + ], + "host": [ + "{{API_BASE_URL}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"verifiableCredential\": {{verifiable_credential}}\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "string", + "value": "{{access_token}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "52e6c3f3-2227-44f3-a036-a1c732fa7715", + "type": "text/javascript", + "exec": [ + "// The `/credentials/verify` endpoint is authenticated. This test will not", + "// prevent the request from running when the `access_token` collection variable", + "// is missing, but it will give an indication of why the request failed in that", + "// scenario.", + "pm.test(\"`access_token` collection variable must be set\", function () {", + " pm.expect(pm.collectionVariables.get(\"access_token\")).to.not.be.undefined;", + "});", + "", + "// The `verifiable_credential` from the \"Credentials Issue\" request is used to", + "// populate part of the request body. If this collection variable is missing,", + "// the request will not be prevented, but this test will raise an error that", + "// will help to identify the problem.", + "pm.test(\"`verifiable_credential` collection variable must be set\", function () {", + " pm.expect(pm.collectionVariables.get(\"verifiable_credential\")).to.not.be.undefined;", + "});", + "", + "// The expected response code for a \"Credentials Verify\" request is", + "// `200 Success`.", + "pm.test(\"must return `200 Success` status\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "// Confirm error", + "pm.test(\"Response 'verified' property should be false\", function() {", + " const { verified } = pm.response.json()", + " pm.expect(verified).to.be.false;", + "});", + "", + "", + "" + ], + "_lastExecutionId": "2996204b-c4cd-4355-a288-3fb01e01e35d" + } + } + ] + } + ] + }, + "run": { + "stats": { + "iterations": { + "total": 1, + "pending": 0, + "failed": 0 + }, + "items": { + "total": 6, + "pending": 0, + "failed": 0 + }, + "scripts": { + "total": 20, + "pending": 0, + "failed": 0 + }, + "prerequests": { + "total": 6, + "pending": 0, + "failed": 0 + }, + "requests": { + "total": 6, + "pending": 0, + "failed": 0 + }, + "tests": { + "total": 6, + "pending": 0, + "failed": 0 + }, + "assertions": { + "total": 26, + "pending": 0, + "failed": 6 + }, + "testScripts": { + "total": 12, + "pending": 0, + "failed": 0 + }, + "prerequestScripts": { + "total": 8, + "pending": 0, + "failed": 0 + } + }, + "timings": { + "responseAverage": 168, + "responseMin": 38, + "responseMax": 797, + "responseSd": 281.3100306305008, + "dnsAverage": 0, + "dnsMin": 0, + "dnsMax": 0, + "dnsSd": 0, + "firstByteAverage": 0, + "firstByteMin": 0, + "firstByteMax": 0, + "firstByteSd": 0, + "started": 1724980082404, + "completed": 1724980083611 + }, + "executions": [ + { + "id": "a62423dc-321f-4be3-a029-4b2261aa31c8", + "cursor": { + "position": 0, + "iteration": 0, + "length": 6, + "cycles": 1, + "empty": false, + "eof": false, + "bof": true, + "cr": false, + "ref": "5977ed33-107f-4768-a9c0-ce8c6f33bd7e", + "httpRequestId": "7dde17dd-ce1a-4245-b84e-f1866f8e3387" + }, + "item": { + "id": "a62423dc-321f-4be3-a029-4b2261aa31c8", + "name": "Get Access Token" + }, + "response": { + "id": "f5e1aa31-f99b-4ec5-96f8-09db6345562e", + "status": "OK", + "code": 200, + "responseTime": 797, + "responseSize": 1339 + }, + "assertions": [ + { + "assertion": "must return `200 Success` status", + "skipped": false + }, + { + "assertion": "response body must include non-empty access_token", + "skipped": false + }, + { + "assertion": "response body must represent `Bearer` token", + "skipped": false + }, + { + "assertion": "returned token must expire in the future", + "skipped": false + }, + { + "assertion": "`access_token` persisted to collectionVariables", + "skipped": false + } + ] + }, + { + "id": "8154d8e1-b32a-49f6-8d8b-813eac85bd43", + "cursor": { + "ref": "19e3ebd6-b627-45ee-8701-09de10e2accb", + "length": 6, + "cycles": 1, + "position": 1, + "iteration": 0, + "httpRequestId": "beb6ac68-9561-4e2a-8fbc-c1c7bc62ed87" + }, + "item": { + "id": "8154d8e1-b32a-49f6-8d8b-813eac85bd43", + "name": "Get Organization DIDs" + }, + "response": { + "id": "23ae9ad1-b59c-484d-afe0-b8d7d711db2a", + "status": "OK", + "code": 200, + "responseTime": 42, + "responseSize": 2450 + }, + "assertions": [ + { + "assertion": "`access_token` collection variable must be set", + "skipped": false + }, + { + "assertion": "Status code is 200", + "skipped": false + }, + { + "assertion": "must include valid JSON response body", + "skipped": false + }, + { + "assertion": "didDocument must be present in response body", + "skipped": false + }, + { + "assertion": "verification method controller must match did subject", + "skipped": false + }, + { + "assertion": "`credential_issuer_id` persisted to collectionVariables", + "skipped": false + } + ] + }, + { + "id": "f20f9b4e-a8ff-4119-8cb5-987c6fc3b09e", + "cursor": { + "ref": "d69a9934-4419-4d84-996f-e2275b085bcd", + "length": 6, + "cycles": 1, + "position": 2, + "iteration": 0, + "httpRequestId": "db031c20-3178-47d5-98ce-f70c8ae0e328" + }, + "item": { + "id": "f20f9b4e-a8ff-4119-8cb5-987c6fc3b09e", + "name": "Issue Credential" + }, + "response": { + "id": "207437d5-1f39-4da6-83bb-c2bb1aadf57a", + "status": "Bad Request", + "code": 400, + "responseTime": 43, + "responseSize": 132 + }, + "assertions": [ + { + "assertion": "`access_token` collection variable must be set", + "skipped": false + }, + { + "assertion": "`credential_issuer_id` collection variable must be set", + "skipped": false + }, + { + "assertion": "must return `201 Created` status", + "skipped": false, + "error": { + "name": "AssertionError", + "index": 2, + "test": "must return `201 Created` status", + "message": "expected response to have status code 201 but got 400", + "stack": "AssertionError: expected response to have status code 201 but got 400\n at Object.eval sandbox-script.js:3:3)" + } + }, + { + "assertion": "`verifiable_credential` persisted to collectionVariables", + "skipped": false + } + ] + }, + { + "id": "1c087a1e-5b53-47df-a3bf-47d48cdfb4ca", + "cursor": { + "ref": "0cdc4b24-adb9-45a0-96e3-a0985548b73c", + "length": 6, + "cycles": 1, + "position": 3, + "iteration": 0, + "httpRequestId": "d4d3e791-050e-4d64-a56e-d84e75791402" + }, + "item": { + "id": "1c087a1e-5b53-47df-a3bf-47d48cdfb4ca", + "name": "Verify Credential" + }, + "response": { + "id": "32dfb044-07c8-4942-9871-8f488ca3c107", + "status": "Bad Request", + "code": 400, + "responseTime": 41, + "responseSize": 160 + }, + "assertions": [ + { + "assertion": "`access_token` collection variable must be set", + "skipped": false + }, + { + "assertion": "`verifiable_credential` collection variable must be set", + "skipped": false + }, + { + "assertion": "must return `200 Success` status", + "skipped": false, + "error": { + "name": "AssertionError", + "index": 2, + "test": "must return `200 Success` status", + "message": "expected response to have status code 200 but got 400", + "stack": "AssertionError: expected response to have status code 200 but got 400\n at Object.eval sandbox-script.js:3:4)" + } + }, + { + "assertion": "verification should be successful", + "skipped": false, + "error": { + "name": "AssertionError", + "index": 3, + "test": "verification should be successful", + "message": "expected undefined to be true", + "stack": "AssertionError: expected undefined to be true\n at Object.eval sandbox-script.js:4:4)" + } + } + ] + }, + { + "id": "ae2bcf46-cba9-4f79-8329-80202c2edbd1", + "cursor": { + "ref": "76f0fbb0-453d-42c8-8041-d0b45758d749", + "length": 6, + "cycles": 1, + "position": 4, + "iteration": 0, + "httpRequestId": "ff959d10-cad8-46e3-b7f8-fd79daaa7899" + }, + "item": { + "id": "ae2bcf46-cba9-4f79-8329-80202c2edbd1", + "name": "Update Credential Status" + }, + "response": { + "id": "90d1abf4-ebe9-47b6-b98f-83cc7ef723a9", + "status": "Bad Request", + "code": 400, + "responseTime": 47, + "responseSize": 152 + }, + "assertions": [ + { + "assertion": "`access_token` collection variable must be set", + "skipped": false + }, + { + "assertion": "`verifiable_credential_id` local variable must be set", + "skipped": false + }, + { + "assertion": "must return `200 Success` status", + "skipped": false, + "error": { + "name": "AssertionError", + "index": 2, + "test": "must return `200 Success` status", + "message": "expected response to have status code 200 but got 400", + "stack": "AssertionError: expected response to have status code 200 but got 400\n at Object.eval sandbox-script.js:3:5)" + } + } + ] + }, + { + "id": "93517530-5258-4654-b10f-bf38188f85cf", + "cursor": { + "ref": "83eddeea-9774-424e-aaa8-17c09afdf9f5", + "length": 6, + "cycles": 1, + "position": 5, + "iteration": 0, + "httpRequestId": "76c1ce4e-ba23-4054-874b-9b604613b793" + }, + "item": { + "id": "93517530-5258-4654-b10f-bf38188f85cf", + "name": "Verify Status Update" + }, + "response": { + "id": "987047d4-1330-4fe1-995a-6aa97767d808", + "status": "Bad Request", + "code": 400, + "responseTime": 38, + "responseSize": 160 + }, + "assertions": [ + { + "assertion": "`access_token` collection variable must be set", + "skipped": false + }, + { + "assertion": "`verifiable_credential` collection variable must be set", + "skipped": false + }, + { + "assertion": "must return `200 Success` status", + "skipped": false, + "error": { + "name": "AssertionError", + "index": 2, + "test": "must return `200 Success` status", + "message": "expected response to have status code 200 but got 400", + "stack": "AssertionError: expected response to have status code 200 but got 400\n at Object.eval sandbox-script.js:3:6)" + } + }, + { + "assertion": "Response 'verified' property should be false", + "skipped": false, + "error": { + "name": "AssertionError", + "index": 3, + "test": "Response 'verified' property should be false", + "message": "expected undefined to be false", + "stack": "AssertionError: expected undefined to be false\n at Object.eval sandbox-script.js:4:6)" + } + } + ] + } + ] + } +} \ No newline at end of file diff --git a/reports/interoperability-1724980304/10625048794-interop-credentials-revocation-Mavennet.html b/reports/interoperability-1724980304/10625048794-interop-credentials-revocation-Mavennet.html new file mode 100644 index 0000000000..a0e79b85de --- /dev/null +++ b/reports/interoperability-1724980304/10625048794-interop-credentials-revocation-Mavennet.html @@ -0,0 +1,1870 @@ + + + + + Newman Summary Report + + + + + + + + + +
+
+ + + +
+
+
+ +
+
+
+
+

Newman Run Dashboard

+
Friday, 30 August 2024 01:08:03
+
+
+
+
+
+ +
+
Total Iterations
+

1

+
+
+
+
+
+
+
+ +
+
Total Assertions
+

26

+
+
+
+
+
+
+
+ +
+
Total Failed Tests
+

2

+
+
+
+
+
+
+
+ +
+
Total Skipped Tests
+

0

+
+
+
+
+
+
+
+
+
+
+
+
File Information
+ Collection: Credentials Status Update Tutorial
+ + +
+
+
+
+
+
+
+
+
Timings and Data
+ Total run duration: 1808ms
+ Total data received: 3.23KB
+ Average response time: 262ms
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary ItemTotalFailed
Requests60
Prerequest Scripts80
Test Scripts120
Assertions262
Skipped Tests0-
+
+
+
+
+
+
+
+
+
+
+ + +
+ +
+
+
+ +
+

Showing 2 Failures

+
+
+
+
+ +
+
+
Failed Test: must return `200 Success` status
+
+
Assertion Error Message
+
+
expected response to have status code 200 but got 400
+
+
+
+
+
+
+
+
+
+ +
+
+
Failed Test: Response 'verified' property should be false
+
+
Assertion Error Message
+
+
expected true to be false
+
+
+
+
+
+
+
+ +
+ + +
+

There are no skipped tests



+
+
+
+ + + +
+ + + +
+ +
+
1 Iteration available to view
+ + +
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
Request Information
+ Request Method: POST
+ Request URL: https://api.staging.refiner.neoflow.energy/v1/auth
+
+
+
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 395ms
+ Mean size per request: 957B
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
must return `200 Success` status100
response body must include non-empty access_token100
response body must represent `Bearer` token100
returned token must expire in the future100
`access_token` persisted to collectionVariables100
Total500
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 166ms
+ Mean size per request: 1.43KB
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
`access_token` collection variable must be set100
Status code is 200100
must include valid JSON response body100
didDocument must be present in response body100
verification method controller must match did subject100
`credential_issuer_id` persisted to collectionVariables100
Total600
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
Request Information
+ Request Method: POST
+ Request URL: https://api.staging.refiner.neoflow.energy/credentials/issue
+
+
+
+
+
Response Information
+ Response Code: 201 - Created
+ Mean time per request: 712ms
+ Mean size per request: 669B
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
`access_token` collection variable must be set100
`credential_issuer_id` collection variable must be set100
must return `201 Created` status100
`verifiable_credential` persisted to collectionVariables100
Total400
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
Request Information
+ Request Method: POST
+ Request URL: https://api.staging.refiner.neoflow.energy/credentials/verify
+
+
+
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 117ms
+ Mean size per request: 48B
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
`access_token` collection variable must be set100
`verifiable_credential` collection variable must be set100
must return `200 Success` status100
verification should be successful100
Total400
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
Request Information
+ Request Method: POST
+ Request URL: https://api.staging.refiner.neoflow.energy/credentials/status
+
+
+
+
+
Response Information
+ Response Code: 400 - Bad Request
+ Mean time per request: 56ms
+ Mean size per request: 120B
+
+
Test Pass Percentage
+
+
+
+
67 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
`access_token` collection variable must be set100
`verifiable_credential_id` local variable must be set100
must return `200 Success` status010
Total210
+
+
+
+
+
+
+
Test Failure
+
+ + + + + + + + +
Test NameAssertion Error
must return `200 Success` status
expected response to have status code 200 but got 400
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
Request Information
+ Request Method: POST
+ Request URL: https://api.staging.refiner.neoflow.energy/credentials/verify
+
+
+
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 126ms
+ Mean size per request: 48B
+
+
Test Pass Percentage
+
+
+
+
75 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
`access_token` collection variable must be set100
`verifiable_credential` collection variable must be set100
must return `200 Success` status100
Response 'verified' property should be false010
Total310
+
+
+
+
+
+
+
Test Failure
+
+ + + + + + + + +
Test NameAssertion Error
Response 'verified' property should be false
expected true to be false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/reports/interoperability-1724980304/10625048794-interop-credentials-revocation-Mavennet.json b/reports/interoperability-1724980304/10625048794-interop-credentials-revocation-Mavennet.json new file mode 100644 index 0000000000..f593f9af25 --- /dev/null +++ b/reports/interoperability-1724980304/10625048794-interop-credentials-revocation-Mavennet.json @@ -0,0 +1,864 @@ +{ + "collection": { + "info": { + "_postman_id": "85f81550-bf06-4933-9c9f-5dafdf71929d", + "name": "Credentials Status Update Tutorial", + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" + }, + "item": [ + { + "id": "55869550-d13f-4e6c-8fa3-a369a67b0e82", + "name": "Get Access Token", + "request": { + "url": { + "host": [ + "{{TOKEN_ENDPOINT}}" + ], + "query": [], + "variable": [] + }, + "method": "POST", + "body": { + "mode": "urlencoded", + "urlencoded": [ + { + "key": "audience", + "value": "{{TOKEN_AUDIENCE}}" + }, + { + "key": "client_id", + "value": "{{CLIENT_ID}}" + }, + { + "key": "client_secret", + "value": "{{CLIENT_SECRET}}" + }, + { + "key": "grant_type", + "value": "client_credentials" + }, + { + "key": "scope", + "value": "{{CLIENT_SCOPE}}" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "0f79461c-fbb4-4e91-8275-ed055defb13e", + "type": "text/javascript", + "exec": [ + "// Token requests are expected to return a `200 Success` response code. Any", + "// other response code should trigger a failure.", + "pm.test(\"must return `200 Success` status\", function() {", + " pm.response.to.have.status(200);", + "});", + "", + "// The response should include an `access_token` value - this will be presented", + "// to authenticated API endpoints in the `Authentication` header (see the last", + "// testing code block for details on how this is persisted).", + "pm.test(\"response body must include non-empty access_token\", function () {", + " const { access_token } = pm.response.json()", + " pm.expect(access_token).to.be.a('string').that.is.not.empty;", + "});", + "", + "// The type of `access_token` returned by the token request is expected to be", + "// `Bearer`.", + "pm.test(\"response body must represent `Bearer` token\", function() {", + " const { token_type } = pm.response.json()", + " pm.expect(token_type).to.equal(\"Bearer\");", + "});", + "", + "// The returned data includes an `expires_in` field that indicates time until", + "// token expiration. Validate that this value is a whole number greater than", + "// zero, as anything less than or equal to zero means that the `access_token`", + "// is already expired.", + "pm.test(\"returned token must expire in the future\", function() {", + " const { expires_in } = pm.response.json()", + " pm.expect(expires_in).to.be.above(0);", + "});", + "", + "// The returned `access_token` value is persisted as a Postman collection", + "// variable that can be accessed by other requests in the collection by calling", + "// `pm.collectionVariables.get(\"access_token\")`.", + "pm.test(\"`access_token` persisted to collectionVariables\", function() {", + " const { access_token } = pm.response.json()", + " pm.collectionVariables.set(\"access_token\", access_token);", + "});" + ], + "_lastExecutionId": "b7b09153-c8b3-4034-9ad1-9ae246358cf4" + } + } + ] + }, + { + "id": "12a61bb3-994d-4816-b402-b68d18290ca7", + "name": "Get Organization DIDs", + "request": { + "url": { + "path": [ + "identifiers", + "{{ORGANIZATION_DID_WEB}}" + ], + "host": [ + "{{API_BASE_URL}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "string", + "value": "{{access_token}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "932c5fe2-aca0-44f5-8297-373b03919c31", + "type": "text/javascript", + "exec": [ + "// This endpoint is authenticated. This test will not prevent the request from", + "// running when the `access_token` collection variable is missing, but it will", + "// give an indication of why the request failed in that scenario.", + "pm.test(\"`access_token` collection variable must be set\", function () {", + " const access_token = pm.collectionVariables.get(\"access_token\");", + " pm.expect(access_token).to.be.a('string').that.is.not.empty;", + "});", + "", + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"must include valid JSON response body\", function() {", + " pm.response.json(); // will throw on parse failure", + "});", + "", + "// The response JSON must include a didDocument property that contains the", + "// resolved DID document.", + "pm.test(\"didDocument must be present in response body\", function() {", + " const jsonData = pm.response.json();", + " pm.expect(jsonData).to.have.property('didDocument');", + "});", + "", + "// If a verificationMethod property is present, the controller property must", + "// match the didDocument.id property.", + "pm.test(\"verification method controller must match did subject\", function() {", + " const { didDocument } = pm.response.json();", + " const vm = didDocument.verificationMethod || [];", + " vm.forEach((m) => pm.expect(m.controller).to.equal(didDocument.id));", + "});", + "", + "// The value of didDocument.id is persisted as a Postman collection variable", + "// that can be accessed by other requests in the collection by calling", + "// pm.collectionVariables.get(\"credential_issuer_id\").", + "pm.test(\"`credential_issuer_id` persisted to collectionVariables\", function() {", + " const { didDocument } = pm.response.json();", + " pm.collectionVariables.set(\"credential_issuer_id\", didDocument.id);", + "});" + ], + "_lastExecutionId": "7cbe9434-d74b-4212-8593-1c8308dae9ae" + } + } + ], + "protocolProfileBehavior": { + "disabledSystemHeaders": {} + } + }, + { + "id": "e87a1228-6597-404d-8ca2-c719f976bd57", + "name": "Issue Credential", + "request": { + "url": { + "path": [ + "credentials", + "issue" + ], + "host": [ + "{{API_BASE_URL}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/vc+ld+json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"credential\": {\n \"@context\": [\n \"https://www.w3.org/2018/credentials/v1\",\n \"https://w3id.org/vc-revocation-list-2020/v1\"\n ],\n \"id\": \"urn:uuid:{{$randomUUID}}\",\n \"type\": [\n \"VerifiableCredential\"\n ],\n \"issuer\": \"{{credential_issuer_id}}\",\n \"issuanceDate\": \"{{$isoTimestamp}}\",\n \"credentialSubject\": {\n \"id\": \"did:example:123\"\n }\n },\n \"options\": {\n \"type\": \"Ed25519Signature2018\",\n \"created\": \"{{$isoTimestamp}}\",\n \"credentialStatus\": {\n \"type\": \"StatusList2021Entry\"\n }\n }\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "string", + "value": "{{access_token}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "5d2368f3-cc95-4639-beef-e7d631672d16", + "type": "text/javascript", + "exec": [ + "pm.test(\"`access_token` collection variable must be set\", function () {", + " pm.expect(pm.collectionVariables.get(\"access_token\")).to.not.be.undefined;", + "});", + "", + "pm.test(\"`credential_issuer_id` collection variable must be set\", function () {", + " pm.expect(pm.collectionVariables.get(\"credential_issuer_id\")).to.not.be.undefined;", + "});", + "", + "pm.test(\"must return `201 Created` status\", function () {", + " pm.response.to.have.status(201);", + "});", + "", + "// Verifiable credential must be made available to later requests", + "pm.test(\"`verifiable_credential` persisted to collectionVariables\", function() {", + " const {verifiableCredential} = pm.response.json();", + " pm.collectionVariables.set(\"verifiable_credential\", JSON.stringify(verifiableCredential));", + "});" + ], + "_lastExecutionId": "2741a721-d16a-4a31-be0b-3c21e8f94735" + } + }, + { + "listen": "prerequest", + "script": { + "id": "3f508c60-5c94-40f8-ad5a-de40397e833e", + "type": "text/javascript", + "exec": [ + "" + ], + "_lastExecutionId": "c4cd3858-2ad4-48ab-bc50-5debe442874d" + } + } + ] + }, + { + "id": "064b7361-2895-43e5-a685-638f02224199", + "name": "Verify Credential", + "request": { + "url": { + "path": [ + "credentials", + "verify" + ], + "host": [ + "{{API_BASE_URL}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"verifiableCredential\": {{verifiable_credential}}\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "string", + "value": "{{access_token}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "c65362b6-bf3e-48ff-a7ea-608d3bd441c1", + "type": "text/javascript", + "exec": [ + "// The `/credentials/verify` endpoint is authenticated. This test will not", + "// prevent the request from running when the `access_token` collection variable", + "// is missing, but it will give an indication of why the request failed in that", + "// scenario.", + "pm.test(\"`access_token` collection variable must be set\", function () {", + " pm.expect(pm.collectionVariables.get(\"access_token\")).to.not.be.undefined;", + "});", + "", + "// The `verifiable_credential` from the \"Credentials Issue\" request is used to", + "// populate part of the request body. If this collection variable is missing,", + "// the request will not be prevented, but this test will raise an error that", + "// will help to identify the problem.", + "pm.test(\"`verifiable_credential` collection variable must be set\", function () {", + " pm.expect(pm.collectionVariables.get(\"verifiable_credential\")).to.not.be.undefined;", + "});", + "", + "// The expected response code for a \"Credentials Verify\" request is", + "// `200 Success`.", + "pm.test(\"must return `200 Success` status\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "// The verification should succeed.", + "pm.test(\"verification should be successful\", function() {", + " const { verified } = pm.response.json()", + " pm.expect(verified).to.be.true;", + "});" + ], + "_lastExecutionId": "4f2a6a17-c304-4872-b379-59404a567c15" + } + } + ] + }, + { + "id": "d98487c7-c625-4a34-99d5-17e1fce14391", + "name": "Update Credential Status", + "request": { + "url": { + "path": [ + "credentials", + "status" + ], + "host": [ + "{{API_BASE_URL}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"credentialId\": \"{{verifiable_credential_id}}\",\n \"credentialStatus\": [\n {\n \"type\": \"StatusList2021Entry\",\n \"statusPurpose\": \"revocation\",\n \"status\": \"1\"\n }\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "string", + "value": "{{access_token}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "prerequest", + "script": { + "id": "525622dd-1bdd-4d70-b677-e90f84e9804a", + "type": "text/javascript", + "exec": [ + "// Extract credential ID from verifiable credential", + "let verifiable_credential_id;", + "try {", + " const { id } = JSON.parse(pm.collectionVariables.get(\"verifiable_credential\"));", + " pm.collectionVariables.set('verifiable_credential_id', id)", + "} catch {}", + "" + ], + "_lastExecutionId": "ab69d2bb-a2d9-4f2f-b26c-bb06d0071d0b" + } + }, + { + "listen": "test", + "script": { + "id": "f50bef94-3180-4cfc-b1af-335f0e38c823", + "type": "text/javascript", + "exec": [ + "// The `/credentials/status` endpoint is authenticated. This test will not", + "// prevent the request from running when the `access_token` collection variable", + "// is missing, but it will give an indication of why the request failed in that", + "// scenario.", + "pm.test(\"`access_token` collection variable must be set\", function () {", + " pm.expect(pm.collectionVariables.get(\"access_token\")).to.not.be.undefined;", + "});", + "", + "// Verifiable credential ID is a required element item used in the request body", + "pm.test(\"`verifiable_credential_id` local variable must be set\", function () {", + " pm.expect(\"verifiable_credential\").to.be.a('string').that.is.not.empty;", + "});", + "", + "// The expected response code for a \"Update Credential Status\" request is `200 Success`", + "pm.test(\"must return `200 Success` status\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "_lastExecutionId": "2f4f97bb-6851-444e-8da6-89515ece74b8" + } + } + ] + }, + { + "id": "1f5a828c-44da-407a-b283-1d084d88579d", + "name": "Verify Status Update", + "request": { + "url": { + "path": [ + "credentials", + "verify" + ], + "host": [ + "{{API_BASE_URL}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"verifiableCredential\": {{verifiable_credential}}\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "string", + "value": "{{access_token}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "dea32b28-290f-408e-aeaf-e071b442d52f", + "type": "text/javascript", + "exec": [ + "// The `/credentials/verify` endpoint is authenticated. This test will not", + "// prevent the request from running when the `access_token` collection variable", + "// is missing, but it will give an indication of why the request failed in that", + "// scenario.", + "pm.test(\"`access_token` collection variable must be set\", function () {", + " pm.expect(pm.collectionVariables.get(\"access_token\")).to.not.be.undefined;", + "});", + "", + "// The `verifiable_credential` from the \"Credentials Issue\" request is used to", + "// populate part of the request body. If this collection variable is missing,", + "// the request will not be prevented, but this test will raise an error that", + "// will help to identify the problem.", + "pm.test(\"`verifiable_credential` collection variable must be set\", function () {", + " pm.expect(pm.collectionVariables.get(\"verifiable_credential\")).to.not.be.undefined;", + "});", + "", + "// The expected response code for a \"Credentials Verify\" request is", + "// `200 Success`.", + "pm.test(\"must return `200 Success` status\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "// Confirm error", + "pm.test(\"Response 'verified' property should be false\", function() {", + " const { verified } = pm.response.json()", + " pm.expect(verified).to.be.false;", + "});", + "", + "", + "" + ], + "_lastExecutionId": "01eb5184-7099-46ef-b856-417787743bab" + } + } + ] + } + ] + }, + "run": { + "stats": { + "iterations": { + "total": 1, + "pending": 0, + "failed": 0 + }, + "items": { + "total": 6, + "pending": 0, + "failed": 0 + }, + "scripts": { + "total": 20, + "pending": 0, + "failed": 0 + }, + "prerequests": { + "total": 6, + "pending": 0, + "failed": 0 + }, + "requests": { + "total": 6, + "pending": 0, + "failed": 0 + }, + "tests": { + "total": 6, + "pending": 0, + "failed": 0 + }, + "assertions": { + "total": 26, + "pending": 0, + "failed": 2 + }, + "testScripts": { + "total": 12, + "pending": 0, + "failed": 0 + }, + "prerequestScripts": { + "total": 8, + "pending": 0, + "failed": 0 + } + }, + "timings": { + "responseAverage": 262, + "responseMin": 56, + "responseMax": 712, + "responseSd": 227.80181444989998, + "dnsAverage": 0, + "dnsMin": 0, + "dnsMax": 0, + "dnsSd": 0, + "firstByteAverage": 0, + "firstByteMin": 0, + "firstByteMax": 0, + "firstByteSd": 0, + "started": 1724980082022, + "completed": 1724980083830 + }, + "executions": [ + { + "id": "55869550-d13f-4e6c-8fa3-a369a67b0e82", + "cursor": { + "position": 0, + "iteration": 0, + "length": 6, + "cycles": 1, + "empty": false, + "eof": false, + "bof": true, + "cr": false, + "ref": "dc235272-53b3-4eb5-a178-d32ebcb309a1", + "httpRequestId": "a4f5ce51-d5eb-4e8f-9910-e10c056fa7b2" + }, + "item": { + "id": "55869550-d13f-4e6c-8fa3-a369a67b0e82", + "name": "Get Access Token" + }, + "response": { + "id": "f336e4fd-27e4-493e-9217-7eaa75819fd0", + "status": "OK", + "code": 200, + "responseTime": 395, + "responseSize": 957 + }, + "assertions": [ + { + "assertion": "must return `200 Success` status", + "skipped": false + }, + { + "assertion": "response body must include non-empty access_token", + "skipped": false + }, + { + "assertion": "response body must represent `Bearer` token", + "skipped": false + }, + { + "assertion": "returned token must expire in the future", + "skipped": false + }, + { + "assertion": "`access_token` persisted to collectionVariables", + "skipped": false + } + ] + }, + { + "id": "12a61bb3-994d-4816-b402-b68d18290ca7", + "cursor": { + "ref": "70053210-5fa8-482e-aa46-334ffa323313", + "length": 6, + "cycles": 1, + "position": 1, + "iteration": 0, + "httpRequestId": "54cacc48-62e2-4f20-b655-aaef094a8ad0" + }, + "item": { + "id": "12a61bb3-994d-4816-b402-b68d18290ca7", + "name": "Get Organization DIDs" + }, + "response": { + "id": "4858646d-062c-4c85-b579-7e4aa7a4d997", + "status": "OK", + "code": 200, + "responseTime": 166, + "responseSize": 1462 + }, + "assertions": [ + { + "assertion": "`access_token` collection variable must be set", + "skipped": false + }, + { + "assertion": "Status code is 200", + "skipped": false + }, + { + "assertion": "must include valid JSON response body", + "skipped": false + }, + { + "assertion": "didDocument must be present in response body", + "skipped": false + }, + { + "assertion": "verification method controller must match did subject", + "skipped": false + }, + { + "assertion": "`credential_issuer_id` persisted to collectionVariables", + "skipped": false + } + ] + }, + { + "id": "e87a1228-6597-404d-8ca2-c719f976bd57", + "cursor": { + "ref": "2239527b-eceb-4448-b09a-69557bf6890b", + "length": 6, + "cycles": 1, + "position": 2, + "iteration": 0, + "httpRequestId": "410748db-9bdd-48e1-8c1c-1a87bc406bea" + }, + "item": { + "id": "e87a1228-6597-404d-8ca2-c719f976bd57", + "name": "Issue Credential" + }, + "response": { + "id": "b6093fda-e11c-4dfd-87fc-96ade9cf9031", + "status": "Created", + "code": 201, + "responseTime": 712, + "responseSize": 669 + }, + "assertions": [ + { + "assertion": "`access_token` collection variable must be set", + "skipped": false + }, + { + "assertion": "`credential_issuer_id` collection variable must be set", + "skipped": false + }, + { + "assertion": "must return `201 Created` status", + "skipped": false + }, + { + "assertion": "`verifiable_credential` persisted to collectionVariables", + "skipped": false + } + ] + }, + { + "id": "064b7361-2895-43e5-a685-638f02224199", + "cursor": { + "ref": "cba746d9-3565-4cad-abda-6e3b416b929e", + "length": 6, + "cycles": 1, + "position": 3, + "iteration": 0, + "httpRequestId": "2f381991-998f-43cb-8f7e-5100004bd5e1" + }, + "item": { + "id": "064b7361-2895-43e5-a685-638f02224199", + "name": "Verify Credential" + }, + "response": { + "id": "a6baa4ba-2d6d-4b61-b846-1f9738c9db5f", + "status": "OK", + "code": 200, + "responseTime": 117, + "responseSize": 48 + }, + "assertions": [ + { + "assertion": "`access_token` collection variable must be set", + "skipped": false + }, + { + "assertion": "`verifiable_credential` collection variable must be set", + "skipped": false + }, + { + "assertion": "must return `200 Success` status", + "skipped": false + }, + { + "assertion": "verification should be successful", + "skipped": false + } + ] + }, + { + "id": "d98487c7-c625-4a34-99d5-17e1fce14391", + "cursor": { + "ref": "0c9167ed-1ad3-43af-81a1-fa25bffa1b5c", + "length": 6, + "cycles": 1, + "position": 4, + "iteration": 0, + "httpRequestId": "77d8668e-aeb0-41ad-8546-bd2f02a0496f" + }, + "item": { + "id": "d98487c7-c625-4a34-99d5-17e1fce14391", + "name": "Update Credential Status" + }, + "response": { + "id": "97e3c025-191e-4bf9-b883-146ca12dc0d8", + "status": "Bad Request", + "code": 400, + "responseTime": 56, + "responseSize": 120 + }, + "assertions": [ + { + "assertion": "`access_token` collection variable must be set", + "skipped": false + }, + { + "assertion": "`verifiable_credential_id` local variable must be set", + "skipped": false + }, + { + "assertion": "must return `200 Success` status", + "skipped": false, + "error": { + "name": "AssertionError", + "index": 2, + "test": "must return `200 Success` status", + "message": "expected response to have status code 200 but got 400", + "stack": "AssertionError: expected response to have status code 200 but got 400\n at Object.eval sandbox-script.js:3:5)" + } + } + ] + }, + { + "id": "1f5a828c-44da-407a-b283-1d084d88579d", + "cursor": { + "ref": "799ef559-801d-4953-b454-f7de5ae69b02", + "length": 6, + "cycles": 1, + "position": 5, + "iteration": 0, + "httpRequestId": "00d14090-0a70-4a51-a99f-5a5feb085db8" + }, + "item": { + "id": "1f5a828c-44da-407a-b283-1d084d88579d", + "name": "Verify Status Update" + }, + "response": { + "id": "ee70ff49-585e-411c-8fe4-c2435e598dfe", + "status": "OK", + "code": 200, + "responseTime": 126, + "responseSize": 48 + }, + "assertions": [ + { + "assertion": "`access_token` collection variable must be set", + "skipped": false + }, + { + "assertion": "`verifiable_credential` collection variable must be set", + "skipped": false + }, + { + "assertion": "must return `200 Success` status", + "skipped": false + }, + { + "assertion": "Response 'verified' property should be false", + "skipped": false, + "error": { + "name": "AssertionError", + "index": 3, + "test": "Response 'verified' property should be false", + "message": "expected true to be false", + "stack": "AssertionError: expected true to be false\n at Object.eval sandbox-script.js:4:6)" + } + } + ] + } + ] + } +} \ No newline at end of file diff --git a/reports/interoperability-1724980304/10625048794-interop-credentials-revocation-mesur.io.html b/reports/interoperability-1724980304/10625048794-interop-credentials-revocation-mesur.io.html new file mode 100644 index 0000000000..79edac1684 --- /dev/null +++ b/reports/interoperability-1724980304/10625048794-interop-credentials-revocation-mesur.io.html @@ -0,0 +1,2020 @@ + + + + + Newman Summary Report + + + + + + + + + +
+
+ + + +
+
+
+ +
+
+
+
+

Newman Run Dashboard

+
Friday, 30 August 2024 01:08:03
+
+
+
+
+
+ +
+
Total Iterations
+

1

+
+
+
+
+
+
+
+ +
+
Total Assertions
+

26

+
+
+
+
+
+
+
+ +
+
Total Failed Tests
+

6

+
+
+
+
+
+
+
+ +
+
Total Skipped Tests
+

0

+
+
+
+
+
+
+
+
+
+
+
+
File Information
+ Collection: Credentials Status Update Tutorial
+ + +
+
+
+
+
+
+
+
+
Timings and Data
+ Total run duration: 1326ms
+ Total data received: 3.14KB
+ Average response time: 188ms
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary ItemTotalFailed
Requests60
Prerequest Scripts80
Test Scripts120
Assertions266
Skipped Tests0-
+
+
+
+
+
+
+
+
+
+
+ + +
+ +
+
+
+ +
+

Showing 6 Failures

+
+
+
+
+ +
+
+
Failed Test: must return `201 Created` status
+
+
Assertion Error Message
+
+
expected response to have status code 201 but got 400
+
+
+
+
+
+
+
+
+
+ +
+
+
Failed Test: must return `200 Success` status
+
+
Assertion Error Message
+
+
expected response to have status code 200 but got 400
+
+
+
+
+
+
+
+
+
+ +
+
+
Failed Test: verification should be successful
+
+
Assertion Error Message
+
+
expected undefined to be true
+
+
+
+
+
+
+
+
+
+ +
+
+
Failed Test: must return `200 Success` status
+
+
Assertion Error Message
+
+
expected response to have status code 200 but got 400
+
+
+
+
+
+
+
+
+
+ +
+
+
Failed Test: must return `200 Success` status
+
+
Assertion Error Message
+
+
expected response to have status code 200 but got 400
+
+
+
+
+
+
+
+
+
+ +
+
+
Failed Test: Response 'verified' property should be false
+
+
Assertion Error Message
+
+
expected undefined to be false
+
+
+
+
+
+
+
+ +
+ + +
+

There are no skipped tests



+
+
+
+ + + +
+ + + +
+ +
+
1 Iteration available to view
+ + +
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
Request Information
+ Request Method: POST
+ Request URL: https://mesur.auth0.com/oauth/token
+
+
+
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 824ms
+ Mean size per request: 1.2KB
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
must return `200 Success` status100
response body must include non-empty access_token100
response body must represent `Bearer` token100
returned token must expire in the future100
`access_token` persisted to collectionVariables100
Total500
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
Request Information
+ Request Method: GET
+ Request URL: https://vc.mesur.io/v1/identifiers/did:web:vc.mesur.io:v1
+
+
+
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 263ms
+ Mean size per request: 1.31KB
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
`access_token` collection variable must be set100
Status code is 200100
must include valid JSON response body100
didDocument must be present in response body100
verification method controller must match did subject100
`credential_issuer_id` persisted to collectionVariables100
Total600
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
Request Information
+ Request Method: POST
+ Request URL: https://vc.mesur.io/v1/credentials/issue
+
+
+
+
+
Response Information
+ Response Code: 400 - Bad Request
+ Mean time per request: 11ms
+ Mean size per request: 142B
+
+
Test Pass Percentage
+
+
+
+
75 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
`access_token` collection variable must be set100
`credential_issuer_id` collection variable must be set100
must return `201 Created` status010
`verifiable_credential` persisted to collectionVariables100
Total310
+
+
+
+
+
+
+
Test Failure
+
+ + + + + + + + +
Test NameAssertion Error
must return `201 Created` status
expected response to have status code 201 but got 400
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
Request Information
+ Request Method: POST
+ Request URL: https://vc.mesur.io/v1/credentials/verify
+
+
+
+
+
Response Information
+ Response Code: 400 - Bad Request
+ Mean time per request: 14ms
+ Mean size per request: 142B
+
+
Test Pass Percentage
+
+
+
+
50 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
`access_token` collection variable must be set100
`verifiable_credential` collection variable must be set100
must return `200 Success` status010
verification should be successful010
Total220
+
+
+
+
+
+
+
Test Failures
+
+ + + + + + + + + + + + +
Test NameAssertion Error
must return `200 Success` status
expected response to have status code 200 but got 400
verification should be successful
expected undefined to be true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
Request Information
+ Request Method: POST
+ Request URL: https://vc.mesur.io/v1/credentials/status
+
+
+
+
+
Response Information
+ Response Code: 400 - Bad Request
+ Mean time per request: 13ms
+ Mean size per request: 222B
+
+
Test Pass Percentage
+
+
+
+
67 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
`access_token` collection variable must be set100
`verifiable_credential_id` local variable must be set100
must return `200 Success` status010
Total210
+
+
+
+
+
+
+
Test Failure
+
+ + + + + + + + +
Test NameAssertion Error
must return `200 Success` status
expected response to have status code 200 but got 400
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
Request Information
+ Request Method: POST
+ Request URL: https://vc.mesur.io/v1/credentials/verify
+
+
+
+
+
Response Information
+ Response Code: 400 - Bad Request
+ Mean time per request: 8ms
+ Mean size per request: 142B
+
+
Test Pass Percentage
+
+
+
+
50 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
`access_token` collection variable must be set100
`verifiable_credential` collection variable must be set100
must return `200 Success` status010
Response 'verified' property should be false010
Total220
+
+
+
+
+
+
+
Test Failures
+
+ + + + + + + + + + + + +
Test NameAssertion Error
must return `200 Success` status
expected response to have status code 200 but got 400
Response 'verified' property should be false
expected undefined to be false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/reports/interoperability-1724980304/10625048794-interop-credentials-revocation-mesur.io.json b/reports/interoperability-1724980304/10625048794-interop-credentials-revocation-mesur.io.json new file mode 100644 index 0000000000..5162644077 --- /dev/null +++ b/reports/interoperability-1724980304/10625048794-interop-credentials-revocation-mesur.io.json @@ -0,0 +1,892 @@ +{ + "collection": { + "info": { + "_postman_id": "85f81550-bf06-4933-9c9f-5dafdf71929d", + "name": "Credentials Status Update Tutorial", + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" + }, + "item": [ + { + "id": "4be07755-ad99-4255-aeb6-cc37082ccb1b", + "name": "Get Access Token", + "request": { + "url": { + "host": [ + "{{TOKEN_ENDPOINT}}" + ], + "query": [], + "variable": [] + }, + "method": "POST", + "body": { + "mode": "urlencoded", + "urlencoded": [ + { + "key": "audience", + "value": "{{TOKEN_AUDIENCE}}" + }, + { + "key": "client_id", + "value": "{{CLIENT_ID}}" + }, + { + "key": "client_secret", + "value": "{{CLIENT_SECRET}}" + }, + { + "key": "grant_type", + "value": "client_credentials" + }, + { + "key": "scope", + "value": "{{CLIENT_SCOPE}}" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "53ee1faa-ce7c-4781-bdd9-78e601b305c1", + "type": "text/javascript", + "exec": [ + "// Token requests are expected to return a `200 Success` response code. Any", + "// other response code should trigger a failure.", + "pm.test(\"must return `200 Success` status\", function() {", + " pm.response.to.have.status(200);", + "});", + "", + "// The response should include an `access_token` value - this will be presented", + "// to authenticated API endpoints in the `Authentication` header (see the last", + "// testing code block for details on how this is persisted).", + "pm.test(\"response body must include non-empty access_token\", function () {", + " const { access_token } = pm.response.json()", + " pm.expect(access_token).to.be.a('string').that.is.not.empty;", + "});", + "", + "// The type of `access_token` returned by the token request is expected to be", + "// `Bearer`.", + "pm.test(\"response body must represent `Bearer` token\", function() {", + " const { token_type } = pm.response.json()", + " pm.expect(token_type).to.equal(\"Bearer\");", + "});", + "", + "// The returned data includes an `expires_in` field that indicates time until", + "// token expiration. Validate that this value is a whole number greater than", + "// zero, as anything less than or equal to zero means that the `access_token`", + "// is already expired.", + "pm.test(\"returned token must expire in the future\", function() {", + " const { expires_in } = pm.response.json()", + " pm.expect(expires_in).to.be.above(0);", + "});", + "", + "// The returned `access_token` value is persisted as a Postman collection", + "// variable that can be accessed by other requests in the collection by calling", + "// `pm.collectionVariables.get(\"access_token\")`.", + "pm.test(\"`access_token` persisted to collectionVariables\", function() {", + " const { access_token } = pm.response.json()", + " pm.collectionVariables.set(\"access_token\", access_token);", + "});" + ], + "_lastExecutionId": "b797468c-1263-4e6e-8a7c-cb42920d583d" + } + } + ] + }, + { + "id": "809da0b1-6340-42f1-8dd9-f2e55ae7594d", + "name": "Get Organization DIDs", + "request": { + "url": { + "path": [ + "identifiers", + "{{ORGANIZATION_DID_WEB}}" + ], + "host": [ + "{{API_BASE_URL}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "string", + "value": "{{access_token}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "23ce8b82-fefc-4605-a163-c27df4aca480", + "type": "text/javascript", + "exec": [ + "// This endpoint is authenticated. This test will not prevent the request from", + "// running when the `access_token` collection variable is missing, but it will", + "// give an indication of why the request failed in that scenario.", + "pm.test(\"`access_token` collection variable must be set\", function () {", + " const access_token = pm.collectionVariables.get(\"access_token\");", + " pm.expect(access_token).to.be.a('string').that.is.not.empty;", + "});", + "", + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"must include valid JSON response body\", function() {", + " pm.response.json(); // will throw on parse failure", + "});", + "", + "// The response JSON must include a didDocument property that contains the", + "// resolved DID document.", + "pm.test(\"didDocument must be present in response body\", function() {", + " const jsonData = pm.response.json();", + " pm.expect(jsonData).to.have.property('didDocument');", + "});", + "", + "// If a verificationMethod property is present, the controller property must", + "// match the didDocument.id property.", + "pm.test(\"verification method controller must match did subject\", function() {", + " const { didDocument } = pm.response.json();", + " const vm = didDocument.verificationMethod || [];", + " vm.forEach((m) => pm.expect(m.controller).to.equal(didDocument.id));", + "});", + "", + "// The value of didDocument.id is persisted as a Postman collection variable", + "// that can be accessed by other requests in the collection by calling", + "// pm.collectionVariables.get(\"credential_issuer_id\").", + "pm.test(\"`credential_issuer_id` persisted to collectionVariables\", function() {", + " const { didDocument } = pm.response.json();", + " pm.collectionVariables.set(\"credential_issuer_id\", didDocument.id);", + "});" + ], + "_lastExecutionId": "57558983-a19f-4fab-b689-cd7d4aa861ac" + } + } + ], + "protocolProfileBehavior": { + "disabledSystemHeaders": {} + } + }, + { + "id": "bf1ed94b-100e-4312-b2c4-1bd11d866466", + "name": "Issue Credential", + "request": { + "url": { + "path": [ + "credentials", + "issue" + ], + "host": [ + "{{API_BASE_URL}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/vc+ld+json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"credential\": {\n \"@context\": [\n \"https://www.w3.org/2018/credentials/v1\",\n \"https://w3id.org/vc-revocation-list-2020/v1\"\n ],\n \"id\": \"urn:uuid:{{$randomUUID}}\",\n \"type\": [\n \"VerifiableCredential\"\n ],\n \"issuer\": \"{{credential_issuer_id}}\",\n \"issuanceDate\": \"{{$isoTimestamp}}\",\n \"credentialSubject\": {\n \"id\": \"did:example:123\"\n }\n },\n \"options\": {\n \"type\": \"Ed25519Signature2018\",\n \"created\": \"{{$isoTimestamp}}\",\n \"credentialStatus\": {\n \"type\": \"StatusList2021Entry\"\n }\n }\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "string", + "value": "{{access_token}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "52795ee6-cd40-4c22-a2bc-b52b3d67c7ef", + "type": "text/javascript", + "exec": [ + "pm.test(\"`access_token` collection variable must be set\", function () {", + " pm.expect(pm.collectionVariables.get(\"access_token\")).to.not.be.undefined;", + "});", + "", + "pm.test(\"`credential_issuer_id` collection variable must be set\", function () {", + " pm.expect(pm.collectionVariables.get(\"credential_issuer_id\")).to.not.be.undefined;", + "});", + "", + "pm.test(\"must return `201 Created` status\", function () {", + " pm.response.to.have.status(201);", + "});", + "", + "// Verifiable credential must be made available to later requests", + "pm.test(\"`verifiable_credential` persisted to collectionVariables\", function() {", + " const {verifiableCredential} = pm.response.json();", + " pm.collectionVariables.set(\"verifiable_credential\", JSON.stringify(verifiableCredential));", + "});" + ], + "_lastExecutionId": "8c3cd4a4-95d8-4adf-b439-c5f92ce24d34" + } + }, + { + "listen": "prerequest", + "script": { + "id": "ca3265e5-6ca5-4aca-bb39-ce85867e015c", + "type": "text/javascript", + "exec": [ + "" + ], + "_lastExecutionId": "bd4eb168-6fa9-4721-881b-67b403d142bb" + } + } + ] + }, + { + "id": "8ee3b16d-002d-4694-a8b8-899b115b661e", + "name": "Verify Credential", + "request": { + "url": { + "path": [ + "credentials", + "verify" + ], + "host": [ + "{{API_BASE_URL}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"verifiableCredential\": {{verifiable_credential}}\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "string", + "value": "{{access_token}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "2ceef78a-f225-40d0-b363-c3eac86caa32", + "type": "text/javascript", + "exec": [ + "// The `/credentials/verify` endpoint is authenticated. This test will not", + "// prevent the request from running when the `access_token` collection variable", + "// is missing, but it will give an indication of why the request failed in that", + "// scenario.", + "pm.test(\"`access_token` collection variable must be set\", function () {", + " pm.expect(pm.collectionVariables.get(\"access_token\")).to.not.be.undefined;", + "});", + "", + "// The `verifiable_credential` from the \"Credentials Issue\" request is used to", + "// populate part of the request body. If this collection variable is missing,", + "// the request will not be prevented, but this test will raise an error that", + "// will help to identify the problem.", + "pm.test(\"`verifiable_credential` collection variable must be set\", function () {", + " pm.expect(pm.collectionVariables.get(\"verifiable_credential\")).to.not.be.undefined;", + "});", + "", + "// The expected response code for a \"Credentials Verify\" request is", + "// `200 Success`.", + "pm.test(\"must return `200 Success` status\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "// The verification should succeed.", + "pm.test(\"verification should be successful\", function() {", + " const { verified } = pm.response.json()", + " pm.expect(verified).to.be.true;", + "});" + ], + "_lastExecutionId": "e2835d25-9e56-4e87-89e8-ba670be705b6" + } + } + ] + }, + { + "id": "68f64943-2491-45cd-9e81-bc3cbcf2c55d", + "name": "Update Credential Status", + "request": { + "url": { + "path": [ + "credentials", + "status" + ], + "host": [ + "{{API_BASE_URL}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"credentialId\": \"{{verifiable_credential_id}}\",\n \"credentialStatus\": [\n {\n \"type\": \"StatusList2021Entry\",\n \"statusPurpose\": \"revocation\",\n \"status\": \"1\"\n }\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "string", + "value": "{{access_token}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "prerequest", + "script": { + "id": "a0c0723c-492e-4c17-8eb6-b217922c3707", + "type": "text/javascript", + "exec": [ + "// Extract credential ID from verifiable credential", + "let verifiable_credential_id;", + "try {", + " const { id } = JSON.parse(pm.collectionVariables.get(\"verifiable_credential\"));", + " pm.collectionVariables.set('verifiable_credential_id', id)", + "} catch {}", + "" + ], + "_lastExecutionId": "e39a3335-2630-4b4b-8524-1b106c0f712c" + } + }, + { + "listen": "test", + "script": { + "id": "d80f87ad-7699-45ba-b54e-a118be8952d1", + "type": "text/javascript", + "exec": [ + "// The `/credentials/status` endpoint is authenticated. This test will not", + "// prevent the request from running when the `access_token` collection variable", + "// is missing, but it will give an indication of why the request failed in that", + "// scenario.", + "pm.test(\"`access_token` collection variable must be set\", function () {", + " pm.expect(pm.collectionVariables.get(\"access_token\")).to.not.be.undefined;", + "});", + "", + "// Verifiable credential ID is a required element item used in the request body", + "pm.test(\"`verifiable_credential_id` local variable must be set\", function () {", + " pm.expect(\"verifiable_credential\").to.be.a('string').that.is.not.empty;", + "});", + "", + "// The expected response code for a \"Update Credential Status\" request is `200 Success`", + "pm.test(\"must return `200 Success` status\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "_lastExecutionId": "75f9ff0f-2e6f-426d-805c-da1f70d4db98" + } + } + ] + }, + { + "id": "75de978d-3c3b-4291-b48b-a1d91eb30723", + "name": "Verify Status Update", + "request": { + "url": { + "path": [ + "credentials", + "verify" + ], + "host": [ + "{{API_BASE_URL}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"verifiableCredential\": {{verifiable_credential}}\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "string", + "value": "{{access_token}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "82cf2a4a-1024-46dd-bda7-459ec46b7505", + "type": "text/javascript", + "exec": [ + "// The `/credentials/verify` endpoint is authenticated. This test will not", + "// prevent the request from running when the `access_token` collection variable", + "// is missing, but it will give an indication of why the request failed in that", + "// scenario.", + "pm.test(\"`access_token` collection variable must be set\", function () {", + " pm.expect(pm.collectionVariables.get(\"access_token\")).to.not.be.undefined;", + "});", + "", + "// The `verifiable_credential` from the \"Credentials Issue\" request is used to", + "// populate part of the request body. If this collection variable is missing,", + "// the request will not be prevented, but this test will raise an error that", + "// will help to identify the problem.", + "pm.test(\"`verifiable_credential` collection variable must be set\", function () {", + " pm.expect(pm.collectionVariables.get(\"verifiable_credential\")).to.not.be.undefined;", + "});", + "", + "// The expected response code for a \"Credentials Verify\" request is", + "// `200 Success`.", + "pm.test(\"must return `200 Success` status\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "// Confirm error", + "pm.test(\"Response 'verified' property should be false\", function() {", + " const { verified } = pm.response.json()", + " pm.expect(verified).to.be.false;", + "});", + "", + "", + "" + ], + "_lastExecutionId": "ce585686-9a92-44b2-b08b-7442e30e2860" + } + } + ] + } + ] + }, + "run": { + "stats": { + "iterations": { + "total": 1, + "pending": 0, + "failed": 0 + }, + "items": { + "total": 6, + "pending": 0, + "failed": 0 + }, + "scripts": { + "total": 20, + "pending": 0, + "failed": 0 + }, + "prerequests": { + "total": 6, + "pending": 0, + "failed": 0 + }, + "requests": { + "total": 6, + "pending": 0, + "failed": 0 + }, + "tests": { + "total": 6, + "pending": 0, + "failed": 0 + }, + "assertions": { + "total": 26, + "pending": 0, + "failed": 6 + }, + "testScripts": { + "total": 12, + "pending": 0, + "failed": 0 + }, + "prerequestScripts": { + "total": 8, + "pending": 0, + "failed": 0 + } + }, + "timings": { + "responseAverage": 188.83333333333334, + "responseMin": 8, + "responseMax": 824, + "responseSd": 298.53722083221425, + "dnsAverage": 0, + "dnsMin": 0, + "dnsMax": 0, + "dnsSd": 0, + "firstByteAverage": 0, + "firstByteMin": 0, + "firstByteMax": 0, + "firstByteSd": 0, + "started": 1724980081675, + "completed": 1724980083001 + }, + "executions": [ + { + "id": "4be07755-ad99-4255-aeb6-cc37082ccb1b", + "cursor": { + "position": 0, + "iteration": 0, + "length": 6, + "cycles": 1, + "empty": false, + "eof": false, + "bof": true, + "cr": false, + "ref": "61c82968-2d16-4841-8bef-1c11333197c2", + "httpRequestId": "cae9345b-ab09-4330-9b63-153248a9bad0" + }, + "item": { + "id": "4be07755-ad99-4255-aeb6-cc37082ccb1b", + "name": "Get Access Token" + }, + "response": { + "id": "25107199-d990-43ae-a785-269617a023d6", + "status": "OK", + "code": 200, + "responseTime": 824, + "responseSize": 1225 + }, + "assertions": [ + { + "assertion": "must return `200 Success` status", + "skipped": false + }, + { + "assertion": "response body must include non-empty access_token", + "skipped": false + }, + { + "assertion": "response body must represent `Bearer` token", + "skipped": false + }, + { + "assertion": "returned token must expire in the future", + "skipped": false + }, + { + "assertion": "`access_token` persisted to collectionVariables", + "skipped": false + } + ] + }, + { + "id": "809da0b1-6340-42f1-8dd9-f2e55ae7594d", + "cursor": { + "ref": "872c8d89-6904-40a7-9b09-d36092205664", + "length": 6, + "cycles": 1, + "position": 1, + "iteration": 0, + "httpRequestId": "c0bc0c17-7c3a-464d-9c6f-bd56c20c3587" + }, + "item": { + "id": "809da0b1-6340-42f1-8dd9-f2e55ae7594d", + "name": "Get Organization DIDs" + }, + "response": { + "id": "6005476d-5bf9-4ff6-b5d3-68b50c0fa4c8", + "status": "OK", + "code": 200, + "responseTime": 263, + "responseSize": 1345 + }, + "assertions": [ + { + "assertion": "`access_token` collection variable must be set", + "skipped": false + }, + { + "assertion": "Status code is 200", + "skipped": false + }, + { + "assertion": "must include valid JSON response body", + "skipped": false + }, + { + "assertion": "didDocument must be present in response body", + "skipped": false + }, + { + "assertion": "verification method controller must match did subject", + "skipped": false + }, + { + "assertion": "`credential_issuer_id` persisted to collectionVariables", + "skipped": false + } + ] + }, + { + "id": "bf1ed94b-100e-4312-b2c4-1bd11d866466", + "cursor": { + "ref": "4a16e350-776e-48d1-811c-a24b5c5f73db", + "length": 6, + "cycles": 1, + "position": 2, + "iteration": 0, + "httpRequestId": "2d451dbe-241a-4c6d-b788-3eea4c04ef5a" + }, + "item": { + "id": "bf1ed94b-100e-4312-b2c4-1bd11d866466", + "name": "Issue Credential" + }, + "response": { + "id": "1610e56c-f7e1-435b-8af5-e99e75fc4abf", + "status": "Bad Request", + "code": 400, + "responseTime": 11, + "responseSize": 142 + }, + "assertions": [ + { + "assertion": "`access_token` collection variable must be set", + "skipped": false + }, + { + "assertion": "`credential_issuer_id` collection variable must be set", + "skipped": false + }, + { + "assertion": "must return `201 Created` status", + "skipped": false, + "error": { + "name": "AssertionError", + "index": 2, + "test": "must return `201 Created` status", + "message": "expected response to have status code 201 but got 400", + "stack": "AssertionError: expected response to have status code 201 but got 400\n at Object.eval sandbox-script.js:3:3)" + } + }, + { + "assertion": "`verifiable_credential` persisted to collectionVariables", + "skipped": false + } + ] + }, + { + "id": "8ee3b16d-002d-4694-a8b8-899b115b661e", + "cursor": { + "ref": "8f9b67a4-876e-4388-a0fa-44f7e3cb6c90", + "length": 6, + "cycles": 1, + "position": 3, + "iteration": 0, + "httpRequestId": "0665972d-1c31-4bbe-b700-69ddd9479777" + }, + "item": { + "id": "8ee3b16d-002d-4694-a8b8-899b115b661e", + "name": "Verify Credential" + }, + "response": { + "id": "9f073f40-76cd-4c18-8ec6-73c6b651bee4", + "status": "Bad Request", + "code": 400, + "responseTime": 14, + "responseSize": 142 + }, + "assertions": [ + { + "assertion": "`access_token` collection variable must be set", + "skipped": false + }, + { + "assertion": "`verifiable_credential` collection variable must be set", + "skipped": false + }, + { + "assertion": "must return `200 Success` status", + "skipped": false, + "error": { + "name": "AssertionError", + "index": 2, + "test": "must return `200 Success` status", + "message": "expected response to have status code 200 but got 400", + "stack": "AssertionError: expected response to have status code 200 but got 400\n at Object.eval sandbox-script.js:3:4)" + } + }, + { + "assertion": "verification should be successful", + "skipped": false, + "error": { + "name": "AssertionError", + "index": 3, + "test": "verification should be successful", + "message": "expected undefined to be true", + "stack": "AssertionError: expected undefined to be true\n at Object.eval sandbox-script.js:4:4)" + } + } + ] + }, + { + "id": "68f64943-2491-45cd-9e81-bc3cbcf2c55d", + "cursor": { + "ref": "69e51604-9994-4bb9-b86f-294ea8ac1dac", + "length": 6, + "cycles": 1, + "position": 4, + "iteration": 0, + "httpRequestId": "ed7e68df-3d60-4bb1-b313-2a043f51d3db" + }, + "item": { + "id": "68f64943-2491-45cd-9e81-bc3cbcf2c55d", + "name": "Update Credential Status" + }, + "response": { + "id": "af534122-03e3-440f-a3a0-6f8ba361acb4", + "status": "Bad Request", + "code": 400, + "responseTime": 13, + "responseSize": 222 + }, + "assertions": [ + { + "assertion": "`access_token` collection variable must be set", + "skipped": false + }, + { + "assertion": "`verifiable_credential_id` local variable must be set", + "skipped": false + }, + { + "assertion": "must return `200 Success` status", + "skipped": false, + "error": { + "name": "AssertionError", + "index": 2, + "test": "must return `200 Success` status", + "message": "expected response to have status code 200 but got 400", + "stack": "AssertionError: expected response to have status code 200 but got 400\n at Object.eval sandbox-script.js:3:5)" + } + } + ] + }, + { + "id": "75de978d-3c3b-4291-b48b-a1d91eb30723", + "cursor": { + "ref": "06b748a5-dafa-4379-a9ae-92271a3ff478", + "length": 6, + "cycles": 1, + "position": 5, + "iteration": 0, + "httpRequestId": "942846d2-6d57-43f4-9b64-9c19a106a0f7" + }, + "item": { + "id": "75de978d-3c3b-4291-b48b-a1d91eb30723", + "name": "Verify Status Update" + }, + "response": { + "id": "5385a811-5191-4dc7-a00a-8feb6d1c0e86", + "status": "Bad Request", + "code": 400, + "responseTime": 8, + "responseSize": 142 + }, + "assertions": [ + { + "assertion": "`access_token` collection variable must be set", + "skipped": false + }, + { + "assertion": "`verifiable_credential` collection variable must be set", + "skipped": false + }, + { + "assertion": "must return `200 Success` status", + "skipped": false, + "error": { + "name": "AssertionError", + "index": 2, + "test": "must return `200 Success` status", + "message": "expected response to have status code 200 but got 400", + "stack": "AssertionError: expected response to have status code 200 but got 400\n at Object.eval sandbox-script.js:3:6)" + } + }, + { + "assertion": "Response 'verified' property should be false", + "skipped": false, + "error": { + "name": "AssertionError", + "index": 3, + "test": "Response 'verified' property should be false", + "message": "expected undefined to be false", + "stack": "AssertionError: expected undefined to be false\n at Object.eval sandbox-script.js:4:6)" + } + } + ] + } + ] + } +} \ No newline at end of file diff --git a/reports/interoperability-1724980304/10625048794-interop-did-web-discovery-BCGov.html b/reports/interoperability-1724980304/10625048794-interop-did-web-discovery-BCGov.html new file mode 100644 index 0000000000..e06faa979d --- /dev/null +++ b/reports/interoperability-1724980304/10625048794-interop-did-web-discovery-BCGov.html @@ -0,0 +1,1281 @@ + + + + + Newman Summary Report + + + + + + + + + +
+
+ + + +
+
+
+ +
+
+
+
+

Newman Run Dashboard

+
Friday, 30 August 2024 01:08:06
+
+
+
+
+
+ +
+
Total Iterations
+

1

+
+
+
+
+
+
+
+ +
+
Total Assertions
+

11

+
+
+
+
+
+
+
+ +
+
Total Failed Tests
+

0

+
+
+
+
+
+
+
+ +
+
Total Skipped Tests
+

0

+
+
+
+
+
+
+
+
+
+
+
+
File Information
+ Collection: DID Web Discovery Tutorial
+ + +
+
+
+
+
+
+
+
+
Timings and Data
+ Total run duration: 4.9s
+ Total data received: 1.25KB
+ Average response time: 2.4s
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary ItemTotalFailed
Requests20
Prerequest Scripts20
Test Scripts40
Assertions110
Skipped Tests0-
+
+
+
+
+
+
+
+
+
+
+ + +
+

There are no failed tests



+
+
+ +
+ + +
+

There are no skipped tests



+
+
+
+ + + +
+ + +
+ +
+
1 Iteration available to view
+ + +
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
Request Information
+ Request Method: POST
+ Request URL: https://traceability.interop.vonx.io/oauth/token
+
+
+
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 474ms
+ Mean size per request: 237B
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
must return `200 Success` status100
response body must include non-empty access_token100
response body must represent `Bearer` token100
returned token must expire in the future100
`access_token` persisted to collectionVariables100
Total500
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+ +
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 4.3s
+ Mean size per request: 1.02KB
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
Status code is 200100
must include valid JSON response body100
didDocument must be present in response body100
Response must include 'service' array100
'service' array must define Traceability API service endpoint100
verification method controller must match did subject100
Total600
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/reports/interoperability-1724980304/10625048794-interop-did-web-discovery-BCGov.json b/reports/interoperability-1724980304/10625048794-interop-did-web-discovery-BCGov.json new file mode 100644 index 0000000000..c2c0ecda05 --- /dev/null +++ b/reports/interoperability-1724980304/10625048794-interop-did-web-discovery-BCGov.json @@ -0,0 +1,349 @@ +{ + "collection": { + "info": { + "_postman_id": "7573cc79-8d9a-4dfd-8b2e-1c4079752653", + "name": "DID Web Discovery Tutorial", + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" + }, + "item": [ + { + "id": "76f363bd-3fbf-4085-a4c7-8692f9225b5a", + "name": "Get Access Token", + "request": { + "url": { + "host": [ + "{{TOKEN_ENDPOINT}}" + ], + "query": [], + "variable": [] + }, + "method": "POST", + "body": { + "mode": "urlencoded", + "urlencoded": [ + { + "key": "audience", + "value": "{{TOKEN_AUDIENCE}}" + }, + { + "key": "client_id", + "value": "{{CLIENT_ID}}" + }, + { + "key": "client_secret", + "value": "{{CLIENT_SECRET}}" + }, + { + "key": "grant_type", + "value": "client_credentials" + }, + { + "key": "scope", + "value": "{{CLIENT_SCOPE}}" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "2f2fbc97-311b-4e1e-af04-3ea75552d25e", + "type": "text/javascript", + "exec": [ + "// Token requests are expected to return a `200 Success` response code. Any", + "// other response code should trigger a failure.", + "pm.test(\"must return `200 Success` status\", function() {", + " pm.response.to.have.status(200);", + "})", + "", + "// The response should include an `access_token` value - this will be presented", + "// to authenticated API endpoints in the `Authentication` header (see the last", + "// testing code block for details on how this is persisted).", + "pm.test(\"response body must include non-empty access_token\", function () {", + " const { access_token } = pm.response.json()", + " pm.expect(access_token).to.be.a('string').that.is.not.empty;", + "});", + "", + "// The type of `access_token` returned by the token request is expected to be", + "// `Bearer`.", + "pm.test(\"response body must represent `Bearer` token\", function() {", + " const { token_type } = pm.response.json()", + " pm.expect(token_type).to.equal(\"Bearer\");", + "});", + "", + "// The returned data includes an `expires_in` field that indicates time until", + "// token expiration. Validate that this value is a whole number greater than", + "// zero, as anything less than or equal to zero means that the `access_token`", + "// is already expired.", + "pm.test(\"returned token must expire in the future\", function() {", + " const { expires_in } = pm.response.json()", + " pm.expect(expires_in).to.be.above(0);", + "});", + "", + "// The returned `access_token` value is persisted as a Postman collection", + "// variable that can be accessed by other requests in the collection by calling", + "// `pm.collectionVariables.get(\"access_token\")`.", + "pm.test(\"`access_token` persisted to collectionVariables\", function() {", + " const { access_token } = pm.response.json()", + " pm.collectionVariables.set(\"access_token\", access_token);", + "});" + ], + "_lastExecutionId": "1c0f5841-82cb-4872-9528-0fb272a1db81" + } + } + ] + }, + { + "id": "f3cc6ab8-7c5e-45af-9ef5-ccba8c853530", + "name": "Get Organization DIDs", + "request": { + "url": { + "path": [ + "identifiers", + "{{ORGANIZATION_DID_WEB}}" + ], + "host": [ + "{{API_BASE_URL}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "string", + "value": "{{access_token}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "7753c95f-665e-4b2e-941a-fe9fdac6708b", + "type": "text/javascript", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"must include valid JSON response body\", function() {", + " pm.response.json(); // will throw on parse failure", + "});", + "", + "// The response JSON must include a didDocument property that contains the", + "// resolved DID document.", + "pm.test(\"didDocument must be present in response body\", function() {", + " const jsonData = pm.response.json();", + " pm.expect(jsonData).to.have.property('didDocument');", + "});", + "", + "// Service array is used to look up traceability API service endpoint", + "pm.test(\"Response must include 'service' array\", function() {", + " const { service } = pm.response.json().didDocument;", + " pm.expect(service).to.be.an('array').that.is.not.empty;", + "});", + "", + "// Service array must be correctly defined in DID document", + "pm.test(\"'service' array must define Traceability API service endpoint\", function() {", + " const { service } = pm.response.json().didDocument;", + " const entry = service.find((s) => s.type == \"TraceabilityAPI\");", + " pm.expect(entry).to.be.an('object').that.is.not.empty;", + " pm.expect(entry.serviceEndpoint).to.be.a('string').that.is.not.empty;", + "});", + "", + "// If a verificationMethod property is present, the controller property must", + "// match the didDocument.id property.", + "pm.test(\"verification method controller must match did subject\", function() {", + " const { didDocument } = pm.response.json();", + " const vm = didDocument.verificationMethod || [];", + " vm.forEach((m) => pm.expect(m.controller).to.equal(didDocument.id));", + "});" + ], + "_lastExecutionId": "aa8ebc0b-7cde-4045-8036-8bdb4e53c9f9" + } + } + ], + "protocolProfileBehavior": { + "disabledSystemHeaders": {} + } + } + ] + }, + "run": { + "stats": { + "iterations": { + "total": 1, + "pending": 0, + "failed": 0 + }, + "items": { + "total": 2, + "pending": 0, + "failed": 0 + }, + "scripts": { + "total": 6, + "pending": 0, + "failed": 0 + }, + "prerequests": { + "total": 2, + "pending": 0, + "failed": 0 + }, + "requests": { + "total": 2, + "pending": 0, + "failed": 0 + }, + "tests": { + "total": 2, + "pending": 0, + "failed": 0 + }, + "assertions": { + "total": 11, + "pending": 0, + "failed": 0 + }, + "testScripts": { + "total": 4, + "pending": 0, + "failed": 0 + }, + "prerequestScripts": { + "total": 2, + "pending": 0, + "failed": 0 + } + }, + "timings": { + "responseAverage": 2418, + "responseMin": 474, + "responseMax": 4362, + "responseSd": 1944, + "dnsAverage": 0, + "dnsMin": 0, + "dnsMax": 0, + "dnsSd": 0, + "firstByteAverage": 0, + "firstByteMin": 0, + "firstByteMax": 0, + "firstByteSd": 0, + "started": 1724980081331, + "completed": 1724980086242 + }, + "executions": [ + { + "id": "76f363bd-3fbf-4085-a4c7-8692f9225b5a", + "cursor": { + "position": 0, + "iteration": 0, + "length": 2, + "cycles": 1, + "empty": false, + "eof": false, + "bof": true, + "cr": false, + "ref": "1e971e8d-5aaa-4d94-a2e4-d6593f3918dd", + "httpRequestId": "d1af3a40-fc2d-4c12-98a2-9bb643752048" + }, + "item": { + "id": "76f363bd-3fbf-4085-a4c7-8692f9225b5a", + "name": "Get Access Token" + }, + "response": { + "id": "a7505230-5127-470d-b4fc-9768849212bf", + "status": "OK", + "code": 200, + "responseTime": 474, + "responseSize": 237 + }, + "assertions": [ + { + "assertion": "must return `200 Success` status", + "skipped": false + }, + { + "assertion": "response body must include non-empty access_token", + "skipped": false + }, + { + "assertion": "response body must represent `Bearer` token", + "skipped": false + }, + { + "assertion": "returned token must expire in the future", + "skipped": false + }, + { + "assertion": "`access_token` persisted to collectionVariables", + "skipped": false + } + ] + }, + { + "id": "f3cc6ab8-7c5e-45af-9ef5-ccba8c853530", + "cursor": { + "ref": "9b79b874-a8a9-4b00-b54a-4cdfb9270d21", + "length": 2, + "cycles": 1, + "position": 1, + "iteration": 0, + "httpRequestId": "38cc4fb5-1ca2-4c6d-9289-cce37c3bd5af" + }, + "item": { + "id": "f3cc6ab8-7c5e-45af-9ef5-ccba8c853530", + "name": "Get Organization DIDs" + }, + "response": { + "id": "41a4b3a4-9b53-4e2a-b7ee-d685501fe738", + "status": "OK", + "code": 200, + "responseTime": 4362, + "responseSize": 1040 + }, + "assertions": [ + { + "assertion": "Status code is 200", + "skipped": false + }, + { + "assertion": "must include valid JSON response body", + "skipped": false + }, + { + "assertion": "didDocument must be present in response body", + "skipped": false + }, + { + "assertion": "Response must include 'service' array", + "skipped": false + }, + { + "assertion": "'service' array must define Traceability API service endpoint", + "skipped": false + }, + { + "assertion": "verification method controller must match did subject", + "skipped": false + } + ] + } + ] + } +} \ No newline at end of file diff --git a/reports/interoperability-1724980304/10625048794-interop-did-web-discovery-GS1US.html b/reports/interoperability-1724980304/10625048794-interop-did-web-discovery-GS1US.html new file mode 100644 index 0000000000..431829086e --- /dev/null +++ b/reports/interoperability-1724980304/10625048794-interop-did-web-discovery-GS1US.html @@ -0,0 +1,1281 @@ + + + + + Newman Summary Report + + + + + + + + + +
+
+ + + +
+
+
+ +
+
+
+
+

Newman Run Dashboard

+
Friday, 30 August 2024 01:08:03
+
+
+
+
+
+ +
+
Total Iterations
+

1

+
+
+
+
+
+
+
+ +
+
Total Assertions
+

11

+
+
+
+
+
+
+
+ +
+
Total Failed Tests
+

0

+
+
+
+
+
+
+
+ +
+
Total Skipped Tests
+

0

+
+
+
+
+
+
+
+
+
+
+
+
File Information
+ Collection: DID Web Discovery Tutorial
+ + +
+
+
+
+
+
+
+
+
Timings and Data
+ Total run duration: 813ms
+ Total data received: 3.7KB
+ Average response time: 367ms
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary ItemTotalFailed
Requests20
Prerequest Scripts20
Test Scripts40
Assertions110
Skipped Tests0-
+
+
+
+
+
+
+
+
+
+
+ + +
+

There are no failed tests



+
+
+ +
+ + +
+

There are no skipped tests



+
+
+
+ + + +
+ + +
+ +
+
1 Iteration available to view
+ + +
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
Request Information
+ Request Method: POST
+ Request URL: https://vc.cbpsvip.gs1us.org/cbpsvip/oauth/token/e5e65807-3d2a-4f67-a262-72f255868da0
+
+
+
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 675ms
+ Mean size per request: 1.31KB
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
must return `200 Success` status100
response body must include non-empty access_token100
response body must represent `Bearer` token100
returned token must expire in the future100
`access_token` persisted to collectionVariables100
Total500
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
Request Information
+ Request Method: GET
+ Request URL: https://vc.cbpsvip.gs1us.org/cbpsvip/identifiers/did:web:cbpvsvip-vc.gs1us.org
+
+
+
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 60ms
+ Mean size per request: 2.39KB
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
Status code is 200100
must include valid JSON response body100
didDocument must be present in response body100
Response must include 'service' array100
'service' array must define Traceability API service endpoint100
verification method controller must match did subject100
Total600
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/reports/interoperability-1724980304/10625048794-interop-did-web-discovery-GS1US.json b/reports/interoperability-1724980304/10625048794-interop-did-web-discovery-GS1US.json new file mode 100644 index 0000000000..83c71a95e5 --- /dev/null +++ b/reports/interoperability-1724980304/10625048794-interop-did-web-discovery-GS1US.json @@ -0,0 +1,349 @@ +{ + "collection": { + "info": { + "_postman_id": "7573cc79-8d9a-4dfd-8b2e-1c4079752653", + "name": "DID Web Discovery Tutorial", + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" + }, + "item": [ + { + "id": "cfe2ea53-376d-45c1-afc8-2513c9ee1219", + "name": "Get Access Token", + "request": { + "url": { + "host": [ + "{{TOKEN_ENDPOINT}}" + ], + "query": [], + "variable": [] + }, + "method": "POST", + "body": { + "mode": "urlencoded", + "urlencoded": [ + { + "key": "audience", + "value": "{{TOKEN_AUDIENCE}}" + }, + { + "key": "client_id", + "value": "{{CLIENT_ID}}" + }, + { + "key": "client_secret", + "value": "{{CLIENT_SECRET}}" + }, + { + "key": "grant_type", + "value": "client_credentials" + }, + { + "key": "scope", + "value": "{{CLIENT_SCOPE}}" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "0cd43837-dacc-4a26-b332-4263e53a2910", + "type": "text/javascript", + "exec": [ + "// Token requests are expected to return a `200 Success` response code. Any", + "// other response code should trigger a failure.", + "pm.test(\"must return `200 Success` status\", function() {", + " pm.response.to.have.status(200);", + "})", + "", + "// The response should include an `access_token` value - this will be presented", + "// to authenticated API endpoints in the `Authentication` header (see the last", + "// testing code block for details on how this is persisted).", + "pm.test(\"response body must include non-empty access_token\", function () {", + " const { access_token } = pm.response.json()", + " pm.expect(access_token).to.be.a('string').that.is.not.empty;", + "});", + "", + "// The type of `access_token` returned by the token request is expected to be", + "// `Bearer`.", + "pm.test(\"response body must represent `Bearer` token\", function() {", + " const { token_type } = pm.response.json()", + " pm.expect(token_type).to.equal(\"Bearer\");", + "});", + "", + "// The returned data includes an `expires_in` field that indicates time until", + "// token expiration. Validate that this value is a whole number greater than", + "// zero, as anything less than or equal to zero means that the `access_token`", + "// is already expired.", + "pm.test(\"returned token must expire in the future\", function() {", + " const { expires_in } = pm.response.json()", + " pm.expect(expires_in).to.be.above(0);", + "});", + "", + "// The returned `access_token` value is persisted as a Postman collection", + "// variable that can be accessed by other requests in the collection by calling", + "// `pm.collectionVariables.get(\"access_token\")`.", + "pm.test(\"`access_token` persisted to collectionVariables\", function() {", + " const { access_token } = pm.response.json()", + " pm.collectionVariables.set(\"access_token\", access_token);", + "});" + ], + "_lastExecutionId": "e36eb71c-98b1-45f1-a81c-a1c12774f8e4" + } + } + ] + }, + { + "id": "ba84e45b-0e1d-485a-93e7-215f31cf9d45", + "name": "Get Organization DIDs", + "request": { + "url": { + "path": [ + "identifiers", + "{{ORGANIZATION_DID_WEB}}" + ], + "host": [ + "{{API_BASE_URL}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "string", + "value": "{{access_token}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "888f0250-4b4f-4f37-8c32-a8717bb566c3", + "type": "text/javascript", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"must include valid JSON response body\", function() {", + " pm.response.json(); // will throw on parse failure", + "});", + "", + "// The response JSON must include a didDocument property that contains the", + "// resolved DID document.", + "pm.test(\"didDocument must be present in response body\", function() {", + " const jsonData = pm.response.json();", + " pm.expect(jsonData).to.have.property('didDocument');", + "});", + "", + "// Service array is used to look up traceability API service endpoint", + "pm.test(\"Response must include 'service' array\", function() {", + " const { service } = pm.response.json().didDocument;", + " pm.expect(service).to.be.an('array').that.is.not.empty;", + "});", + "", + "// Service array must be correctly defined in DID document", + "pm.test(\"'service' array must define Traceability API service endpoint\", function() {", + " const { service } = pm.response.json().didDocument;", + " const entry = service.find((s) => s.type == \"TraceabilityAPI\");", + " pm.expect(entry).to.be.an('object').that.is.not.empty;", + " pm.expect(entry.serviceEndpoint).to.be.a('string').that.is.not.empty;", + "});", + "", + "// If a verificationMethod property is present, the controller property must", + "// match the didDocument.id property.", + "pm.test(\"verification method controller must match did subject\", function() {", + " const { didDocument } = pm.response.json();", + " const vm = didDocument.verificationMethod || [];", + " vm.forEach((m) => pm.expect(m.controller).to.equal(didDocument.id));", + "});" + ], + "_lastExecutionId": "2b0e2123-df8b-4e08-9fad-d626151dbef7" + } + } + ], + "protocolProfileBehavior": { + "disabledSystemHeaders": {} + } + } + ] + }, + "run": { + "stats": { + "iterations": { + "total": 1, + "pending": 0, + "failed": 0 + }, + "items": { + "total": 2, + "pending": 0, + "failed": 0 + }, + "scripts": { + "total": 6, + "pending": 0, + "failed": 0 + }, + "prerequests": { + "total": 2, + "pending": 0, + "failed": 0 + }, + "requests": { + "total": 2, + "pending": 0, + "failed": 0 + }, + "tests": { + "total": 2, + "pending": 0, + "failed": 0 + }, + "assertions": { + "total": 11, + "pending": 0, + "failed": 0 + }, + "testScripts": { + "total": 4, + "pending": 0, + "failed": 0 + }, + "prerequestScripts": { + "total": 2, + "pending": 0, + "failed": 0 + } + }, + "timings": { + "responseAverage": 367.5, + "responseMin": 60, + "responseMax": 675, + "responseSd": 307.5, + "dnsAverage": 0, + "dnsMin": 0, + "dnsMax": 0, + "dnsSd": 0, + "firstByteAverage": 0, + "firstByteMin": 0, + "firstByteMax": 0, + "firstByteSd": 0, + "started": 1724980082493, + "completed": 1724980083306 + }, + "executions": [ + { + "id": "cfe2ea53-376d-45c1-afc8-2513c9ee1219", + "cursor": { + "position": 0, + "iteration": 0, + "length": 2, + "cycles": 1, + "empty": false, + "eof": false, + "bof": true, + "cr": false, + "ref": "af8d7074-5069-4cc7-9d82-f61b4b63369c", + "httpRequestId": "81b560a3-ed6b-4044-a671-27db473f9acb" + }, + "item": { + "id": "cfe2ea53-376d-45c1-afc8-2513c9ee1219", + "name": "Get Access Token" + }, + "response": { + "id": "355092f0-a9a0-4aa4-97a4-17b1a04284c4", + "status": "OK", + "code": 200, + "responseTime": 675, + "responseSize": 1339 + }, + "assertions": [ + { + "assertion": "must return `200 Success` status", + "skipped": false + }, + { + "assertion": "response body must include non-empty access_token", + "skipped": false + }, + { + "assertion": "response body must represent `Bearer` token", + "skipped": false + }, + { + "assertion": "returned token must expire in the future", + "skipped": false + }, + { + "assertion": "`access_token` persisted to collectionVariables", + "skipped": false + } + ] + }, + { + "id": "ba84e45b-0e1d-485a-93e7-215f31cf9d45", + "cursor": { + "ref": "5185502b-bced-4818-898c-d210034e7e92", + "length": 2, + "cycles": 1, + "position": 1, + "iteration": 0, + "httpRequestId": "08635d23-2f55-4a8f-8fa2-5f94e7353089" + }, + "item": { + "id": "ba84e45b-0e1d-485a-93e7-215f31cf9d45", + "name": "Get Organization DIDs" + }, + "response": { + "id": "0676c964-e362-4759-bcfa-0d0f600c1a10", + "status": "OK", + "code": 200, + "responseTime": 60, + "responseSize": 2450 + }, + "assertions": [ + { + "assertion": "Status code is 200", + "skipped": false + }, + { + "assertion": "must include valid JSON response body", + "skipped": false + }, + { + "assertion": "didDocument must be present in response body", + "skipped": false + }, + { + "assertion": "Response must include 'service' array", + "skipped": false + }, + { + "assertion": "'service' array must define Traceability API service endpoint", + "skipped": false + }, + { + "assertion": "verification method controller must match did subject", + "skipped": false + } + ] + } + ] + } +} \ No newline at end of file diff --git a/reports/interoperability-1724980304/10625048794-interop-did-web-discovery-Mavennet.html b/reports/interoperability-1724980304/10625048794-interop-did-web-discovery-Mavennet.html new file mode 100644 index 0000000000..0e30ed305b --- /dev/null +++ b/reports/interoperability-1724980304/10625048794-interop-did-web-discovery-Mavennet.html @@ -0,0 +1,1281 @@ + + + + + Newman Summary Report + + + + + + + + + +
+
+ + + +
+
+
+ +
+
+
+
+

Newman Run Dashboard

+
Friday, 30 August 2024 01:08:05
+
+
+
+
+
+ +
+
Total Iterations
+

1

+
+
+
+
+
+
+
+ +
+
Total Assertions
+

11

+
+
+
+
+
+
+
+ +
+
Total Failed Tests
+

0

+
+
+
+
+
+
+
+ +
+
Total Skipped Tests
+

0

+
+
+
+
+
+
+
+
+
+
+
+
File Information
+ Collection: DID Web Discovery Tutorial
+ + +
+
+
+
+
+
+
+
+
Timings and Data
+ Total run duration: 378ms
+ Total data received: 2.36KB
+ Average response time: 145ms
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary ItemTotalFailed
Requests20
Prerequest Scripts20
Test Scripts40
Assertions110
Skipped Tests0-
+
+
+
+
+
+
+
+
+
+
+ + +
+

There are no failed tests



+
+
+ +
+ + +
+

There are no skipped tests



+
+
+
+ + + +
+ + +
+ +
+
1 Iteration available to view
+ + +
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
Request Information
+ Request Method: POST
+ Request URL: https://api.staging.refiner.neoflow.energy/v1/auth
+
+
+
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 252ms
+ Mean size per request: 957B
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
must return `200 Success` status100
response body must include non-empty access_token100
response body must represent `Bearer` token100
returned token must expire in the future100
`access_token` persisted to collectionVariables100
Total500
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 39ms
+ Mean size per request: 1.43KB
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
Status code is 200100
must include valid JSON response body100
didDocument must be present in response body100
Response must include 'service' array100
'service' array must define Traceability API service endpoint100
verification method controller must match did subject100
Total600
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/reports/interoperability-1724980304/10625048794-interop-did-web-discovery-Mavennet.json b/reports/interoperability-1724980304/10625048794-interop-did-web-discovery-Mavennet.json new file mode 100644 index 0000000000..4ea0ccf231 --- /dev/null +++ b/reports/interoperability-1724980304/10625048794-interop-did-web-discovery-Mavennet.json @@ -0,0 +1,349 @@ +{ + "collection": { + "info": { + "_postman_id": "7573cc79-8d9a-4dfd-8b2e-1c4079752653", + "name": "DID Web Discovery Tutorial", + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" + }, + "item": [ + { + "id": "f9395cbb-e222-4fa9-b3cb-9ae29f3c4bc9", + "name": "Get Access Token", + "request": { + "url": { + "host": [ + "{{TOKEN_ENDPOINT}}" + ], + "query": [], + "variable": [] + }, + "method": "POST", + "body": { + "mode": "urlencoded", + "urlencoded": [ + { + "key": "audience", + "value": "{{TOKEN_AUDIENCE}}" + }, + { + "key": "client_id", + "value": "{{CLIENT_ID}}" + }, + { + "key": "client_secret", + "value": "{{CLIENT_SECRET}}" + }, + { + "key": "grant_type", + "value": "client_credentials" + }, + { + "key": "scope", + "value": "{{CLIENT_SCOPE}}" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "4b48f890-4ba4-4c25-80ef-021ab72a8f1a", + "type": "text/javascript", + "exec": [ + "// Token requests are expected to return a `200 Success` response code. Any", + "// other response code should trigger a failure.", + "pm.test(\"must return `200 Success` status\", function() {", + " pm.response.to.have.status(200);", + "})", + "", + "// The response should include an `access_token` value - this will be presented", + "// to authenticated API endpoints in the `Authentication` header (see the last", + "// testing code block for details on how this is persisted).", + "pm.test(\"response body must include non-empty access_token\", function () {", + " const { access_token } = pm.response.json()", + " pm.expect(access_token).to.be.a('string').that.is.not.empty;", + "});", + "", + "// The type of `access_token` returned by the token request is expected to be", + "// `Bearer`.", + "pm.test(\"response body must represent `Bearer` token\", function() {", + " const { token_type } = pm.response.json()", + " pm.expect(token_type).to.equal(\"Bearer\");", + "});", + "", + "// The returned data includes an `expires_in` field that indicates time until", + "// token expiration. Validate that this value is a whole number greater than", + "// zero, as anything less than or equal to zero means that the `access_token`", + "// is already expired.", + "pm.test(\"returned token must expire in the future\", function() {", + " const { expires_in } = pm.response.json()", + " pm.expect(expires_in).to.be.above(0);", + "});", + "", + "// The returned `access_token` value is persisted as a Postman collection", + "// variable that can be accessed by other requests in the collection by calling", + "// `pm.collectionVariables.get(\"access_token\")`.", + "pm.test(\"`access_token` persisted to collectionVariables\", function() {", + " const { access_token } = pm.response.json()", + " pm.collectionVariables.set(\"access_token\", access_token);", + "});" + ], + "_lastExecutionId": "18cde018-bc3a-41a5-85bf-0a9724130604" + } + } + ] + }, + { + "id": "28bbe9ce-1774-464f-8178-0e04da1f619a", + "name": "Get Organization DIDs", + "request": { + "url": { + "path": [ + "identifiers", + "{{ORGANIZATION_DID_WEB}}" + ], + "host": [ + "{{API_BASE_URL}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "string", + "value": "{{access_token}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "0dd88655-a39a-4357-a676-8fa1f0cb1eb7", + "type": "text/javascript", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"must include valid JSON response body\", function() {", + " pm.response.json(); // will throw on parse failure", + "});", + "", + "// The response JSON must include a didDocument property that contains the", + "// resolved DID document.", + "pm.test(\"didDocument must be present in response body\", function() {", + " const jsonData = pm.response.json();", + " pm.expect(jsonData).to.have.property('didDocument');", + "});", + "", + "// Service array is used to look up traceability API service endpoint", + "pm.test(\"Response must include 'service' array\", function() {", + " const { service } = pm.response.json().didDocument;", + " pm.expect(service).to.be.an('array').that.is.not.empty;", + "});", + "", + "// Service array must be correctly defined in DID document", + "pm.test(\"'service' array must define Traceability API service endpoint\", function() {", + " const { service } = pm.response.json().didDocument;", + " const entry = service.find((s) => s.type == \"TraceabilityAPI\");", + " pm.expect(entry).to.be.an('object').that.is.not.empty;", + " pm.expect(entry.serviceEndpoint).to.be.a('string').that.is.not.empty;", + "});", + "", + "// If a verificationMethod property is present, the controller property must", + "// match the didDocument.id property.", + "pm.test(\"verification method controller must match did subject\", function() {", + " const { didDocument } = pm.response.json();", + " const vm = didDocument.verificationMethod || [];", + " vm.forEach((m) => pm.expect(m.controller).to.equal(didDocument.id));", + "});" + ], + "_lastExecutionId": "556bdb5e-6f55-4299-ae26-434d09cbe893" + } + } + ], + "protocolProfileBehavior": { + "disabledSystemHeaders": {} + } + } + ] + }, + "run": { + "stats": { + "iterations": { + "total": 1, + "pending": 0, + "failed": 0 + }, + "items": { + "total": 2, + "pending": 0, + "failed": 0 + }, + "scripts": { + "total": 6, + "pending": 0, + "failed": 0 + }, + "prerequests": { + "total": 2, + "pending": 0, + "failed": 0 + }, + "requests": { + "total": 2, + "pending": 0, + "failed": 0 + }, + "tests": { + "total": 2, + "pending": 0, + "failed": 0 + }, + "assertions": { + "total": 11, + "pending": 0, + "failed": 0 + }, + "testScripts": { + "total": 4, + "pending": 0, + "failed": 0 + }, + "prerequestScripts": { + "total": 2, + "pending": 0, + "failed": 0 + } + }, + "timings": { + "responseAverage": 145.5, + "responseMin": 39, + "responseMax": 252, + "responseSd": 106.5, + "dnsAverage": 0, + "dnsMin": 0, + "dnsMax": 0, + "dnsSd": 0, + "firstByteAverage": 0, + "firstByteMin": 0, + "firstByteMax": 0, + "firstByteSd": 0, + "started": 1724980084607, + "completed": 1724980084985 + }, + "executions": [ + { + "id": "f9395cbb-e222-4fa9-b3cb-9ae29f3c4bc9", + "cursor": { + "position": 0, + "iteration": 0, + "length": 2, + "cycles": 1, + "empty": false, + "eof": false, + "bof": true, + "cr": false, + "ref": "bfe6f75c-284c-4208-bf97-ca212a48b973", + "httpRequestId": "c01d1bd4-8ed5-4b34-b819-676a498e99e9" + }, + "item": { + "id": "f9395cbb-e222-4fa9-b3cb-9ae29f3c4bc9", + "name": "Get Access Token" + }, + "response": { + "id": "dfef3b9d-c5ab-4c8e-968f-0d1f4a8ce869", + "status": "OK", + "code": 200, + "responseTime": 252, + "responseSize": 957 + }, + "assertions": [ + { + "assertion": "must return `200 Success` status", + "skipped": false + }, + { + "assertion": "response body must include non-empty access_token", + "skipped": false + }, + { + "assertion": "response body must represent `Bearer` token", + "skipped": false + }, + { + "assertion": "returned token must expire in the future", + "skipped": false + }, + { + "assertion": "`access_token` persisted to collectionVariables", + "skipped": false + } + ] + }, + { + "id": "28bbe9ce-1774-464f-8178-0e04da1f619a", + "cursor": { + "ref": "9e22dc15-6a68-4d7e-9819-08bd9e576175", + "length": 2, + "cycles": 1, + "position": 1, + "iteration": 0, + "httpRequestId": "35d17d12-ba1a-400e-a374-04687e230073" + }, + "item": { + "id": "28bbe9ce-1774-464f-8178-0e04da1f619a", + "name": "Get Organization DIDs" + }, + "response": { + "id": "508d5e07-4471-419a-804c-a0debad6ceab", + "status": "OK", + "code": 200, + "responseTime": 39, + "responseSize": 1462 + }, + "assertions": [ + { + "assertion": "Status code is 200", + "skipped": false + }, + { + "assertion": "must include valid JSON response body", + "skipped": false + }, + { + "assertion": "didDocument must be present in response body", + "skipped": false + }, + { + "assertion": "Response must include 'service' array", + "skipped": false + }, + { + "assertion": "'service' array must define Traceability API service endpoint", + "skipped": false + }, + { + "assertion": "verification method controller must match did subject", + "skipped": false + } + ] + } + ] + } +} \ No newline at end of file diff --git a/reports/interoperability-1724980304/10625048794-interop-did-web-discovery-mesur.io.html b/reports/interoperability-1724980304/10625048794-interop-did-web-discovery-mesur.io.html new file mode 100644 index 0000000000..43d8d3799b --- /dev/null +++ b/reports/interoperability-1724980304/10625048794-interop-did-web-discovery-mesur.io.html @@ -0,0 +1,1281 @@ + + + + + Newman Summary Report + + + + + + + + + +
+
+ + + +
+
+
+ +
+
+
+
+

Newman Run Dashboard

+
Friday, 30 August 2024 01:08:04
+
+
+
+
+
+ +
+
Total Iterations
+

1

+
+
+
+
+
+
+
+ +
+
Total Assertions
+

11

+
+
+
+
+
+
+
+ +
+
Total Failed Tests
+

0

+
+
+
+
+
+
+
+ +
+
Total Skipped Tests
+

0

+
+
+
+
+
+
+
+
+
+
+
+
File Information
+ Collection: DID Web Discovery Tutorial
+ + +
+
+
+
+
+
+
+
+
Timings and Data
+ Total run duration: 1036ms
+ Total data received: 2.51KB
+ Average response time: 477ms
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary ItemTotalFailed
Requests20
Prerequest Scripts20
Test Scripts40
Assertions110
Skipped Tests0-
+
+
+
+
+
+
+
+
+
+
+ + +
+

There are no failed tests



+
+
+ +
+ + +
+

There are no skipped tests



+
+
+
+ + + +
+ + +
+ +
+
1 Iteration available to view
+ + +
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
Request Information
+ Request Method: POST
+ Request URL: https://mesur.auth0.com/oauth/token
+
+
+
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 706ms
+ Mean size per request: 1.2KB
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
must return `200 Success` status100
response body must include non-empty access_token100
response body must represent `Bearer` token100
returned token must expire in the future100
`access_token` persisted to collectionVariables100
Total500
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
Request Information
+ Request Method: GET
+ Request URL: https://vc.mesur.io/v1/identifiers/did:web:vc.mesur.io:v1
+
+
+
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 249ms
+ Mean size per request: 1.31KB
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
Status code is 200100
must include valid JSON response body100
didDocument must be present in response body100
Response must include 'service' array100
'service' array must define Traceability API service endpoint100
verification method controller must match did subject100
Total600
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/reports/interoperability-1724980304/10625048794-interop-did-web-discovery-mesur.io.json b/reports/interoperability-1724980304/10625048794-interop-did-web-discovery-mesur.io.json new file mode 100644 index 0000000000..6772544e80 --- /dev/null +++ b/reports/interoperability-1724980304/10625048794-interop-did-web-discovery-mesur.io.json @@ -0,0 +1,349 @@ +{ + "collection": { + "info": { + "_postman_id": "7573cc79-8d9a-4dfd-8b2e-1c4079752653", + "name": "DID Web Discovery Tutorial", + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" + }, + "item": [ + { + "id": "84587da9-1f62-48bf-b429-1fc3ec64ad2b", + "name": "Get Access Token", + "request": { + "url": { + "host": [ + "{{TOKEN_ENDPOINT}}" + ], + "query": [], + "variable": [] + }, + "method": "POST", + "body": { + "mode": "urlencoded", + "urlencoded": [ + { + "key": "audience", + "value": "{{TOKEN_AUDIENCE}}" + }, + { + "key": "client_id", + "value": "{{CLIENT_ID}}" + }, + { + "key": "client_secret", + "value": "{{CLIENT_SECRET}}" + }, + { + "key": "grant_type", + "value": "client_credentials" + }, + { + "key": "scope", + "value": "{{CLIENT_SCOPE}}" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "11ed4d65-b286-48a4-a536-41ed224ca4ea", + "type": "text/javascript", + "exec": [ + "// Token requests are expected to return a `200 Success` response code. Any", + "// other response code should trigger a failure.", + "pm.test(\"must return `200 Success` status\", function() {", + " pm.response.to.have.status(200);", + "})", + "", + "// The response should include an `access_token` value - this will be presented", + "// to authenticated API endpoints in the `Authentication` header (see the last", + "// testing code block for details on how this is persisted).", + "pm.test(\"response body must include non-empty access_token\", function () {", + " const { access_token } = pm.response.json()", + " pm.expect(access_token).to.be.a('string').that.is.not.empty;", + "});", + "", + "// The type of `access_token` returned by the token request is expected to be", + "// `Bearer`.", + "pm.test(\"response body must represent `Bearer` token\", function() {", + " const { token_type } = pm.response.json()", + " pm.expect(token_type).to.equal(\"Bearer\");", + "});", + "", + "// The returned data includes an `expires_in` field that indicates time until", + "// token expiration. Validate that this value is a whole number greater than", + "// zero, as anything less than or equal to zero means that the `access_token`", + "// is already expired.", + "pm.test(\"returned token must expire in the future\", function() {", + " const { expires_in } = pm.response.json()", + " pm.expect(expires_in).to.be.above(0);", + "});", + "", + "// The returned `access_token` value is persisted as a Postman collection", + "// variable that can be accessed by other requests in the collection by calling", + "// `pm.collectionVariables.get(\"access_token\")`.", + "pm.test(\"`access_token` persisted to collectionVariables\", function() {", + " const { access_token } = pm.response.json()", + " pm.collectionVariables.set(\"access_token\", access_token);", + "});" + ], + "_lastExecutionId": "e5231a11-5778-4c4a-9c22-f1f00531c210" + } + } + ] + }, + { + "id": "257f5679-14e8-40dc-8567-532fa14e8329", + "name": "Get Organization DIDs", + "request": { + "url": { + "path": [ + "identifiers", + "{{ORGANIZATION_DID_WEB}}" + ], + "host": [ + "{{API_BASE_URL}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "string", + "value": "{{access_token}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "98ab3a1a-c4b8-4540-983c-86ef358c19ae", + "type": "text/javascript", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"must include valid JSON response body\", function() {", + " pm.response.json(); // will throw on parse failure", + "});", + "", + "// The response JSON must include a didDocument property that contains the", + "// resolved DID document.", + "pm.test(\"didDocument must be present in response body\", function() {", + " const jsonData = pm.response.json();", + " pm.expect(jsonData).to.have.property('didDocument');", + "});", + "", + "// Service array is used to look up traceability API service endpoint", + "pm.test(\"Response must include 'service' array\", function() {", + " const { service } = pm.response.json().didDocument;", + " pm.expect(service).to.be.an('array').that.is.not.empty;", + "});", + "", + "// Service array must be correctly defined in DID document", + "pm.test(\"'service' array must define Traceability API service endpoint\", function() {", + " const { service } = pm.response.json().didDocument;", + " const entry = service.find((s) => s.type == \"TraceabilityAPI\");", + " pm.expect(entry).to.be.an('object').that.is.not.empty;", + " pm.expect(entry.serviceEndpoint).to.be.a('string').that.is.not.empty;", + "});", + "", + "// If a verificationMethod property is present, the controller property must", + "// match the didDocument.id property.", + "pm.test(\"verification method controller must match did subject\", function() {", + " const { didDocument } = pm.response.json();", + " const vm = didDocument.verificationMethod || [];", + " vm.forEach((m) => pm.expect(m.controller).to.equal(didDocument.id));", + "});" + ], + "_lastExecutionId": "daa2fd80-31ac-4a3d-9eb5-0cc8aa7f24e4" + } + } + ], + "protocolProfileBehavior": { + "disabledSystemHeaders": {} + } + } + ] + }, + "run": { + "stats": { + "iterations": { + "total": 1, + "pending": 0, + "failed": 0 + }, + "items": { + "total": 2, + "pending": 0, + "failed": 0 + }, + "scripts": { + "total": 6, + "pending": 0, + "failed": 0 + }, + "prerequests": { + "total": 2, + "pending": 0, + "failed": 0 + }, + "requests": { + "total": 2, + "pending": 0, + "failed": 0 + }, + "tests": { + "total": 2, + "pending": 0, + "failed": 0 + }, + "assertions": { + "total": 11, + "pending": 0, + "failed": 0 + }, + "testScripts": { + "total": 4, + "pending": 0, + "failed": 0 + }, + "prerequestScripts": { + "total": 2, + "pending": 0, + "failed": 0 + } + }, + "timings": { + "responseAverage": 477.5, + "responseMin": 249, + "responseMax": 706, + "responseSd": 228.5, + "dnsAverage": 0, + "dnsMin": 0, + "dnsMax": 0, + "dnsSd": 0, + "firstByteAverage": 0, + "firstByteMin": 0, + "firstByteMax": 0, + "firstByteSd": 0, + "started": 1724980083281, + "completed": 1724980084317 + }, + "executions": [ + { + "id": "84587da9-1f62-48bf-b429-1fc3ec64ad2b", + "cursor": { + "position": 0, + "iteration": 0, + "length": 2, + "cycles": 1, + "empty": false, + "eof": false, + "bof": true, + "cr": false, + "ref": "c8848881-ada8-4e9b-ae75-763bd3c32f6f", + "httpRequestId": "172bfcdf-f4f4-4950-aaa7-659dd4bd1e73" + }, + "item": { + "id": "84587da9-1f62-48bf-b429-1fc3ec64ad2b", + "name": "Get Access Token" + }, + "response": { + "id": "d199a631-6139-4252-a03b-af220eb0d595", + "status": "OK", + "code": 200, + "responseTime": 706, + "responseSize": 1225 + }, + "assertions": [ + { + "assertion": "must return `200 Success` status", + "skipped": false + }, + { + "assertion": "response body must include non-empty access_token", + "skipped": false + }, + { + "assertion": "response body must represent `Bearer` token", + "skipped": false + }, + { + "assertion": "returned token must expire in the future", + "skipped": false + }, + { + "assertion": "`access_token` persisted to collectionVariables", + "skipped": false + } + ] + }, + { + "id": "257f5679-14e8-40dc-8567-532fa14e8329", + "cursor": { + "ref": "0a2cd3d6-8206-4317-a291-29c0e66742e6", + "length": 2, + "cycles": 1, + "position": 1, + "iteration": 0, + "httpRequestId": "c105f8a1-353e-47db-a2d7-50eb8d133852" + }, + "item": { + "id": "257f5679-14e8-40dc-8567-532fa14e8329", + "name": "Get Organization DIDs" + }, + "response": { + "id": "12e32383-e07d-4472-a0d2-5ef8e97a7567", + "status": "OK", + "code": 200, + "responseTime": 249, + "responseSize": 1345 + }, + "assertions": [ + { + "assertion": "Status code is 200", + "skipped": false + }, + { + "assertion": "must include valid JSON response body", + "skipped": false + }, + { + "assertion": "didDocument must be present in response body", + "skipped": false + }, + { + "assertion": "Response must include 'service' array", + "skipped": false + }, + { + "assertion": "'service' array must define Traceability API service endpoint", + "skipped": false + }, + { + "assertion": "verification method controller must match did subject", + "skipped": false + } + ] + } + ] + } +} \ No newline at end of file diff --git a/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-BCGov-GS1US.html b/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-BCGov-GS1US.html new file mode 100644 index 0000000000..c22b72880c --- /dev/null +++ b/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-BCGov-GS1US.html @@ -0,0 +1,1372 @@ + + + + + Newman Summary Report + + + + + + + + + +
+
+ + + +
+
+
+ +
+
+
+
+

Newman Run Dashboard

+
Friday, 30 August 2024 01:08:12
+
+
+
+
+
+ +
+
Total Iterations
+

1

+
+
+
+
+
+
+
+ +
+
Total Assertions
+

9

+
+
+
+
+
+
+
+ +
+
Total Failed Tests
+

0

+
+
+
+
+
+
+
+ +
+
Total Skipped Tests
+

0

+
+
+
+
+
+
+
+
+
+
+
+
File Information
+ Collection: OAuth Presentations Exchange Tutorial
+ + +
+
+
+
+
+
+
+
+
Timings and Data
+ Total run duration: 976ms
+ Total data received: 4.63KB
+ Average response time: 288ms
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary ItemTotalFailed
Requests30
Prerequest Scripts30
Test Scripts60
Assertions90
Skipped Tests0-
+
+
+
+
+
+
+
+
+
+
+ + +
+

There are no failed tests



+
+
+ +
+ + +
+

There are no skipped tests



+
+
+
+ + + +
+ + +
+ +
+
1 Iteration available to view
+ + +
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
Request Information
+ Request Method: POST
+ Request URL: https://vc.cbpsvip.gs1us.org/cbpsvip/oauth/token/e5e65807-3d2a-4f67-a262-72f255868da0
+
+
+
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 693ms
+ Mean size per request: 1.31KB
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
must return `200 Success` status100
response body must include non-empty access_token100
response body must represent `Bearer` token100
returned token must expire in the future100
`access_token` persisted to collectionVariables100
Total500
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
Request Information
+ Request Method: GET
+ Request URL: https://vc.cbpsvip.gs1us.org/cbpsvip/identifiers/did:web:cbpvsvip-vc.gs1us.org
+
+
+
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 100ms
+ Mean size per request: 2.39KB
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
Status code is 200100
Issuer makes unauthenticated discovery of verifiers exchange endpoint. `verifier_exchange_endpoint` is persisted to collectionVariables100
Total200
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
Request Information
+ Request Method: POST
+ Request URL: https://vc.cbpsvip.gs1us.org/cbpsvip/presentations
+
+
+
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 71ms
+ Mean size per request: 949B
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
must return `200 Success` status100
Content-Type header is application/json100
Total200
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-BCGov-GS1US.json b/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-BCGov-GS1US.json new file mode 100644 index 0000000000..fb1e361803 --- /dev/null +++ b/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-BCGov-GS1US.json @@ -0,0 +1,408 @@ +{ + "collection": { + "info": { + "_postman_id": "e6ed89ab-9b28-4bce-8769-59c1309f2fe8", + "name": "OAuth Presentations Exchange Tutorial", + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" + }, + "item": [ + { + "id": "cae13e54-c34b-443f-b6e7-9de5243d2373", + "name": "Holder gets Verifier's Token", + "request": { + "url": { + "host": [ + "{{VERIFIER_TOKEN_ENDPOINT}}" + ], + "query": [], + "variable": [] + }, + "method": "POST", + "body": { + "mode": "urlencoded", + "urlencoded": [ + { + "key": "audience", + "value": "{{VERIFIER_TOKEN_AUDIENCE}}" + }, + { + "key": "client_id", + "value": "{{VERIFIER_CLIENT_ID}}" + }, + { + "key": "client_secret", + "value": "{{VERIFIER_CLIENT_SECRET}}" + }, + { + "key": "grant_type", + "value": "client_credentials" + }, + { + "key": "scope", + "value": "{{VERIFIER_CLIENT_SCOPE}}" + } + ] + }, + "auth": { + "type": "noauth", + "noauth": [] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "3c46e75a-cdc2-4d15-97d4-b1ab49423368", + "type": "text/javascript", + "exec": [ + "// Token requests are expected to return a `200 Success` response code. Any", + "// other response code should trigger a failure.", + "pm.test(\"must return `200 Success` status\", function() {", + " pm.response.to.have.status(200);", + "});", + "", + "// The response should include an `access_token` value - this will be presented", + "// to authenticated API endpoints in the `Authentication` header (see the last", + "// testing code block for details on how this is persisted).", + "pm.test(\"response body must include non-empty access_token\", function () {", + " const { access_token } = pm.response.json()", + " pm.expect(access_token).to.be.a('string').that.is.not.empty;", + "});", + "", + "// The type of `access_token` returned by the token request is expected to be", + "// `Bearer`.", + "pm.test(\"response body must represent `Bearer` token\", function() {", + " const { token_type } = pm.response.json()", + " pm.expect(token_type).to.equal(\"Bearer\");", + "});", + "", + "// The returned data includes an `expires_in` field that indicates time until", + "// token expiration. Validate that this value is a whole number greater than", + "// zero, as anything less than or equal to zero means that the `access_token`", + "// is already expired.", + "pm.test(\"returned token must expire in the future\", function() {", + " const { expires_in } = pm.response.json()", + " pm.expect(expires_in).to.be.above(0);", + "});", + "", + "// The returned `access_token` value is persisted as a Postman collection", + "// variable that can be accessed by other requests in the collection by calling", + "// `pm.collectionVariables.get(\"issuer_access_token\")`.", + "pm.test(\"`access_token` persisted to collectionVariables\", function() {", + " const { access_token } = pm.response.json()", + " pm.collectionVariables.set(\"verifier_access_token\", access_token);", + "});" + ], + "_lastExecutionId": "40b2112d-4442-4a2f-b25e-baf3a129e2f1" + } + } + ] + }, + { + "id": "7cc02282-207c-4d89-a76f-088c03989a3f", + "name": "Get Verifier Organization DIDs", + "request": { + "url": { + "path": [ + "identifiers", + "{{VERIFIER_ORGANIZATION_DID_WEB}}" + ], + "host": [ + "{{VERIFIER_API_BASE_URL}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "string", + "value": "{{verifier_access_token}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "a80fbf87-18a1-4fe8-b948-25ed231e852a", + "type": "text/javascript", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Issuer makes unauthenticated discovery of verifiers exchange endpoint. `verifier_exchange_endpoint` is persisted to collectionVariables\", function() {", + " const { service } = pm.response.json().didDocument;", + " pm.collectionVariables.set(\"verifier_exchange_endpoint\", service[0].serviceEndpoint);", + "});", + "", + "" + ], + "_lastExecutionId": "e8bff10d-92f6-4c0a-baca-a10ab3cf5a5e" + } + } + ], + "protocolProfileBehavior": { + "disabledSystemHeaders": {} + } + }, + { + "id": "c8b987a9-c195-4e16-9954-a1c450945572", + "name": "Presentation", + "request": { + "url": { + "path": [ + "presentations" + ], + "host": [ + "{{verifier_exchange_endpoint}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"@context\": [\n \"https://www.w3.org/2018/credentials/v1\",\n \"https://w3id.org/traceability/v1\"\n ],\n \"type\": [\n \"VerifiablePresentation\",\n \"TraceablePresentation\"\n ],\n \"verifiableCredential\": [\n {\n \"@context\": [\n \"https://www.w3.org/2018/credentials/v1\"\n ],\n \"id\": \"urn:uuid:07aa969e-b40d-4c1b-ab46-ded252003ded\",\n \"type\": [\n \"VerifiableCredential\"\n ],\n \"issuer\": \"did:key:z6MktiSzqF9kqwdU8VkdBKx56EYzXfpgnNPUAGznpicNiWfn\",\n \"issuanceDate\": \"2010-01-01T19:23:24Z\",\n \"credentialSubject\": {\n \"id\": \"did:key:z6MktiSzqF9kqwdU8VkdBKx56EYzXfpgnNPUAGznpicNiWfn\"\n },\n \"proof\": {\n \"type\": \"Ed25519Signature2018\",\n \"created\": \"2021-10-30T19:16:30Z\",\n \"verificationMethod\": \"did:key:z6MktiSzqF9kqwdU8VkdBKx56EYzXfpgnNPUAGznpicNiWfn#z6MktiSzqF9kqwdU8VkdBKx56EYzXfpgnNPUAGznpicNiWfn\",\n \"proofPurpose\": \"assertionMethod\",\n \"jws\": \"eyJhbGciOiJFZERTQSIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19..puetBYS3pkYlYzAecBiT-WkigYAlVbslrz9wPFnk9JW4AwjrpJvcsSdZJPhZtNy_myMJUNzC_QaYyw3ni1V0BA\"\n }\n }\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "string", + "value": "{{verifier_access_token}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "bffb0a53-2fb6-402c-8812-33531e706244", + "type": "text/javascript", + "exec": [ + "", + "// The expected response code for a \"Presentations Available\" request is", + "// `200 Success`.", + "pm.test(\"must return `200 Success` status\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Content-Type header is application/json\", () => {", + " pm.expect(pm.response.headers.get('Content-Type')).to.include('application/json');", + "});" + ], + "_lastExecutionId": "741f4e91-8951-46a2-bc67-07929a422aac" + } + } + ] + } + ] + }, + "run": { + "stats": { + "iterations": { + "total": 1, + "pending": 0, + "failed": 0 + }, + "items": { + "total": 3, + "pending": 0, + "failed": 0 + }, + "scripts": { + "total": 9, + "pending": 0, + "failed": 0 + }, + "prerequests": { + "total": 3, + "pending": 0, + "failed": 0 + }, + "requests": { + "total": 3, + "pending": 0, + "failed": 0 + }, + "tests": { + "total": 3, + "pending": 0, + "failed": 0 + }, + "assertions": { + "total": 9, + "pending": 0, + "failed": 0 + }, + "testScripts": { + "total": 6, + "pending": 0, + "failed": 0 + }, + "prerequestScripts": { + "total": 3, + "pending": 0, + "failed": 0 + } + }, + "timings": { + "responseAverage": 288, + "responseMin": 71, + "responseMax": 693, + "responseSd": 286.6228648706636, + "dnsAverage": 0, + "dnsMin": 0, + "dnsMax": 0, + "dnsSd": 0, + "firstByteAverage": 0, + "firstByteMin": 0, + "firstByteMax": 0, + "firstByteSd": 0, + "started": 1724980091643, + "completed": 1724980092619 + }, + "executions": [ + { + "id": "cae13e54-c34b-443f-b6e7-9de5243d2373", + "cursor": { + "position": 0, + "iteration": 0, + "length": 3, + "cycles": 1, + "empty": false, + "eof": false, + "bof": true, + "cr": false, + "ref": "a4667f6c-e564-4137-a80e-40a6284b2a70", + "httpRequestId": "5ac131df-8220-49d5-8218-f0c2f4ac5fdc" + }, + "item": { + "id": "cae13e54-c34b-443f-b6e7-9de5243d2373", + "name": "Holder gets Verifier's Token" + }, + "response": { + "id": "ecfdb5ed-9b0a-4d80-9263-91372fb2839d", + "status": "OK", + "code": 200, + "responseTime": 693, + "responseSize": 1339 + }, + "assertions": [ + { + "assertion": "must return `200 Success` status", + "skipped": false + }, + { + "assertion": "response body must include non-empty access_token", + "skipped": false + }, + { + "assertion": "response body must represent `Bearer` token", + "skipped": false + }, + { + "assertion": "returned token must expire in the future", + "skipped": false + }, + { + "assertion": "`access_token` persisted to collectionVariables", + "skipped": false + } + ] + }, + { + "id": "7cc02282-207c-4d89-a76f-088c03989a3f", + "cursor": { + "ref": "dd411695-aa7d-477b-a51d-5fbb7598a3f6", + "length": 3, + "cycles": 1, + "position": 1, + "iteration": 0, + "httpRequestId": "41a2b01d-a656-4bd3-8f4c-827384089cab" + }, + "item": { + "id": "7cc02282-207c-4d89-a76f-088c03989a3f", + "name": "Get Verifier Organization DIDs" + }, + "response": { + "id": "8733fc41-906d-4bae-84b1-6aea18617d54", + "status": "OK", + "code": 200, + "responseTime": 100, + "responseSize": 2450 + }, + "assertions": [ + { + "assertion": "Status code is 200", + "skipped": false + }, + { + "assertion": "Issuer makes unauthenticated discovery of verifiers exchange endpoint. `verifier_exchange_endpoint` is persisted to collectionVariables", + "skipped": false + } + ] + }, + { + "id": "c8b987a9-c195-4e16-9954-a1c450945572", + "cursor": { + "ref": "ae65710e-4399-4d5d-878e-3227c2808bf2", + "length": 3, + "cycles": 1, + "position": 2, + "iteration": 0, + "httpRequestId": "d94753b6-4e64-4d37-8036-639a0187f9ce" + }, + "item": { + "id": "c8b987a9-c195-4e16-9954-a1c450945572", + "name": "Presentation" + }, + "response": { + "id": "52405bd1-b402-44b8-b4c5-28c75aedcd74", + "status": "OK", + "code": 200, + "responseTime": 71, + "responseSize": 949 + }, + "assertions": [ + { + "assertion": "must return `200 Success` status", + "skipped": false + }, + { + "assertion": "Content-Type header is application/json", + "skipped": false + } + ] + } + ] + } +} \ No newline at end of file diff --git a/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-BCGov-Mavennet.html b/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-BCGov-Mavennet.html new file mode 100644 index 0000000000..0f7cb1bb03 --- /dev/null +++ b/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-BCGov-Mavennet.html @@ -0,0 +1,1372 @@ + + + + + Newman Summary Report + + + + + + + + + +
+
+ + + +
+
+
+ +
+
+
+
+

Newman Run Dashboard

+
Friday, 30 August 2024 01:08:06
+
+
+
+
+
+ +
+
Total Iterations
+

1

+
+
+
+
+
+
+
+ +
+
Total Assertions
+

9

+
+
+
+
+
+
+
+ +
+
Total Failed Tests
+

0

+
+
+
+
+
+
+
+ +
+
Total Skipped Tests
+

0

+
+
+
+
+
+
+
+
+
+
+
+
File Information
+ Collection: OAuth Presentations Exchange Tutorial
+ + +
+
+
+
+
+
+
+
+
Timings and Data
+ Total run duration: 622ms
+ Total data received: 3.28KB
+ Average response time: 171ms
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary ItemTotalFailed
Requests30
Prerequest Scripts30
Test Scripts60
Assertions90
Skipped Tests0-
+
+
+
+
+
+
+
+
+
+
+ + +
+

There are no failed tests



+
+
+ +
+ + +
+

There are no skipped tests



+
+
+
+ + + +
+ + +
+ +
+
1 Iteration available to view
+ + +
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
Request Information
+ Request Method: POST
+ Request URL: https://api.staging.refiner.neoflow.energy/v1/auth
+
+
+
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 337ms
+ Mean size per request: 957B
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
must return `200 Success` status100
response body must include non-empty access_token100
response body must represent `Bearer` token100
returned token must expire in the future100
`access_token` persisted to collectionVariables100
Total500
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 96ms
+ Mean size per request: 1.43KB
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
Status code is 200100
Issuer makes unauthenticated discovery of verifiers exchange endpoint. `verifier_exchange_endpoint` is persisted to collectionVariables100
Total200
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
Request Information
+ Request Method: POST
+ Request URL: https://api.staging.refiner.neoflow.energy/presentations
+
+
+
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 82ms
+ Mean size per request: 938B
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
must return `200 Success` status100
Content-Type header is application/json100
Total200
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-BCGov-Mavennet.json b/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-BCGov-Mavennet.json new file mode 100644 index 0000000000..8600114196 --- /dev/null +++ b/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-BCGov-Mavennet.json @@ -0,0 +1,408 @@ +{ + "collection": { + "info": { + "_postman_id": "e6ed89ab-9b28-4bce-8769-59c1309f2fe8", + "name": "OAuth Presentations Exchange Tutorial", + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" + }, + "item": [ + { + "id": "e26eb5ce-3b32-4e65-ad78-9b315eae69d9", + "name": "Holder gets Verifier's Token", + "request": { + "url": { + "host": [ + "{{VERIFIER_TOKEN_ENDPOINT}}" + ], + "query": [], + "variable": [] + }, + "method": "POST", + "body": { + "mode": "urlencoded", + "urlencoded": [ + { + "key": "audience", + "value": "{{VERIFIER_TOKEN_AUDIENCE}}" + }, + { + "key": "client_id", + "value": "{{VERIFIER_CLIENT_ID}}" + }, + { + "key": "client_secret", + "value": "{{VERIFIER_CLIENT_SECRET}}" + }, + { + "key": "grant_type", + "value": "client_credentials" + }, + { + "key": "scope", + "value": "{{VERIFIER_CLIENT_SCOPE}}" + } + ] + }, + "auth": { + "type": "noauth", + "noauth": [] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "8e4107c0-8546-447a-ac2b-fbded2ddfef5", + "type": "text/javascript", + "exec": [ + "// Token requests are expected to return a `200 Success` response code. Any", + "// other response code should trigger a failure.", + "pm.test(\"must return `200 Success` status\", function() {", + " pm.response.to.have.status(200);", + "});", + "", + "// The response should include an `access_token` value - this will be presented", + "// to authenticated API endpoints in the `Authentication` header (see the last", + "// testing code block for details on how this is persisted).", + "pm.test(\"response body must include non-empty access_token\", function () {", + " const { access_token } = pm.response.json()", + " pm.expect(access_token).to.be.a('string').that.is.not.empty;", + "});", + "", + "// The type of `access_token` returned by the token request is expected to be", + "// `Bearer`.", + "pm.test(\"response body must represent `Bearer` token\", function() {", + " const { token_type } = pm.response.json()", + " pm.expect(token_type).to.equal(\"Bearer\");", + "});", + "", + "// The returned data includes an `expires_in` field that indicates time until", + "// token expiration. Validate that this value is a whole number greater than", + "// zero, as anything less than or equal to zero means that the `access_token`", + "// is already expired.", + "pm.test(\"returned token must expire in the future\", function() {", + " const { expires_in } = pm.response.json()", + " pm.expect(expires_in).to.be.above(0);", + "});", + "", + "// The returned `access_token` value is persisted as a Postman collection", + "// variable that can be accessed by other requests in the collection by calling", + "// `pm.collectionVariables.get(\"issuer_access_token\")`.", + "pm.test(\"`access_token` persisted to collectionVariables\", function() {", + " const { access_token } = pm.response.json()", + " pm.collectionVariables.set(\"verifier_access_token\", access_token);", + "});" + ], + "_lastExecutionId": "ccbfbf24-162d-450d-aab5-026a23f61dd1" + } + } + ] + }, + { + "id": "62e52791-9169-463b-8282-62d80470bf34", + "name": "Get Verifier Organization DIDs", + "request": { + "url": { + "path": [ + "identifiers", + "{{VERIFIER_ORGANIZATION_DID_WEB}}" + ], + "host": [ + "{{VERIFIER_API_BASE_URL}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "string", + "value": "{{verifier_access_token}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "26fb0a57-4415-4e44-918d-c26705eff4d6", + "type": "text/javascript", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Issuer makes unauthenticated discovery of verifiers exchange endpoint. `verifier_exchange_endpoint` is persisted to collectionVariables\", function() {", + " const { service } = pm.response.json().didDocument;", + " pm.collectionVariables.set(\"verifier_exchange_endpoint\", service[0].serviceEndpoint);", + "});", + "", + "" + ], + "_lastExecutionId": "a7980b9a-9607-49da-ac50-0ec55dddf56e" + } + } + ], + "protocolProfileBehavior": { + "disabledSystemHeaders": {} + } + }, + { + "id": "97066e10-e095-445a-bd07-e40c238d7cde", + "name": "Presentation", + "request": { + "url": { + "path": [ + "presentations" + ], + "host": [ + "{{verifier_exchange_endpoint}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"@context\": [\n \"https://www.w3.org/2018/credentials/v1\",\n \"https://w3id.org/traceability/v1\"\n ],\n \"type\": [\n \"VerifiablePresentation\",\n \"TraceablePresentation\"\n ],\n \"verifiableCredential\": [\n {\n \"@context\": [\n \"https://www.w3.org/2018/credentials/v1\"\n ],\n \"id\": \"urn:uuid:07aa969e-b40d-4c1b-ab46-ded252003ded\",\n \"type\": [\n \"VerifiableCredential\"\n ],\n \"issuer\": \"did:key:z6MktiSzqF9kqwdU8VkdBKx56EYzXfpgnNPUAGznpicNiWfn\",\n \"issuanceDate\": \"2010-01-01T19:23:24Z\",\n \"credentialSubject\": {\n \"id\": \"did:key:z6MktiSzqF9kqwdU8VkdBKx56EYzXfpgnNPUAGznpicNiWfn\"\n },\n \"proof\": {\n \"type\": \"Ed25519Signature2018\",\n \"created\": \"2021-10-30T19:16:30Z\",\n \"verificationMethod\": \"did:key:z6MktiSzqF9kqwdU8VkdBKx56EYzXfpgnNPUAGznpicNiWfn#z6MktiSzqF9kqwdU8VkdBKx56EYzXfpgnNPUAGznpicNiWfn\",\n \"proofPurpose\": \"assertionMethod\",\n \"jws\": \"eyJhbGciOiJFZERTQSIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19..puetBYS3pkYlYzAecBiT-WkigYAlVbslrz9wPFnk9JW4AwjrpJvcsSdZJPhZtNy_myMJUNzC_QaYyw3ni1V0BA\"\n }\n }\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "string", + "value": "{{verifier_access_token}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "037a57bd-556a-4d29-b094-9f756be124e9", + "type": "text/javascript", + "exec": [ + "", + "// The expected response code for a \"Presentations Available\" request is", + "// `200 Success`.", + "pm.test(\"must return `200 Success` status\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Content-Type header is application/json\", () => {", + " pm.expect(pm.response.headers.get('Content-Type')).to.include('application/json');", + "});" + ], + "_lastExecutionId": "f1dc494e-990d-4649-935d-bcb0ce8b4141" + } + } + ] + } + ] + }, + "run": { + "stats": { + "iterations": { + "total": 1, + "pending": 0, + "failed": 0 + }, + "items": { + "total": 3, + "pending": 0, + "failed": 0 + }, + "scripts": { + "total": 9, + "pending": 0, + "failed": 0 + }, + "prerequests": { + "total": 3, + "pending": 0, + "failed": 0 + }, + "requests": { + "total": 3, + "pending": 0, + "failed": 0 + }, + "tests": { + "total": 3, + "pending": 0, + "failed": 0 + }, + "assertions": { + "total": 9, + "pending": 0, + "failed": 0 + }, + "testScripts": { + "total": 6, + "pending": 0, + "failed": 0 + }, + "prerequestScripts": { + "total": 3, + "pending": 0, + "failed": 0 + } + }, + "timings": { + "responseAverage": 171.66666666666666, + "responseMin": 82, + "responseMax": 337, + "responseSd": 117.04794838963313, + "dnsAverage": 0, + "dnsMin": 0, + "dnsMax": 0, + "dnsSd": 0, + "firstByteAverage": 0, + "firstByteMin": 0, + "firstByteMax": 0, + "firstByteSd": 0, + "started": 1724980085590, + "completed": 1724980086212 + }, + "executions": [ + { + "id": "e26eb5ce-3b32-4e65-ad78-9b315eae69d9", + "cursor": { + "position": 0, + "iteration": 0, + "length": 3, + "cycles": 1, + "empty": false, + "eof": false, + "bof": true, + "cr": false, + "ref": "101b3667-cadb-4422-9c73-9efdc09e93fa", + "httpRequestId": "0f5a0a7e-7240-429b-a81c-2f464a8ac1e4" + }, + "item": { + "id": "e26eb5ce-3b32-4e65-ad78-9b315eae69d9", + "name": "Holder gets Verifier's Token" + }, + "response": { + "id": "aa38f0ec-215b-4a97-9f86-a6f498dac479", + "status": "OK", + "code": 200, + "responseTime": 337, + "responseSize": 957 + }, + "assertions": [ + { + "assertion": "must return `200 Success` status", + "skipped": false + }, + { + "assertion": "response body must include non-empty access_token", + "skipped": false + }, + { + "assertion": "response body must represent `Bearer` token", + "skipped": false + }, + { + "assertion": "returned token must expire in the future", + "skipped": false + }, + { + "assertion": "`access_token` persisted to collectionVariables", + "skipped": false + } + ] + }, + { + "id": "62e52791-9169-463b-8282-62d80470bf34", + "cursor": { + "ref": "594f3657-829d-47a0-b941-8015ab6874af", + "length": 3, + "cycles": 1, + "position": 1, + "iteration": 0, + "httpRequestId": "964c749f-f6f1-46fa-b4e6-42a0fdea92c0" + }, + "item": { + "id": "62e52791-9169-463b-8282-62d80470bf34", + "name": "Get Verifier Organization DIDs" + }, + "response": { + "id": "0740d8f8-d1cc-4fe8-bc0d-aecd1677e826", + "status": "OK", + "code": 200, + "responseTime": 96, + "responseSize": 1462 + }, + "assertions": [ + { + "assertion": "Status code is 200", + "skipped": false + }, + { + "assertion": "Issuer makes unauthenticated discovery of verifiers exchange endpoint. `verifier_exchange_endpoint` is persisted to collectionVariables", + "skipped": false + } + ] + }, + { + "id": "97066e10-e095-445a-bd07-e40c238d7cde", + "cursor": { + "ref": "473323dc-b205-4993-a07b-f1e9876eda01", + "length": 3, + "cycles": 1, + "position": 2, + "iteration": 0, + "httpRequestId": "28d68647-9bbd-470e-bf66-d729a92b00f6" + }, + "item": { + "id": "97066e10-e095-445a-bd07-e40c238d7cde", + "name": "Presentation" + }, + "response": { + "id": "6e9e2633-b4d2-47a9-9fa3-6c24809f15cb", + "status": "OK", + "code": 200, + "responseTime": 82, + "responseSize": 938 + }, + "assertions": [ + { + "assertion": "must return `200 Success` status", + "skipped": false + }, + { + "assertion": "Content-Type header is application/json", + "skipped": false + } + ] + } + ] + } +} \ No newline at end of file diff --git a/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-BCGov-mesur.io.html b/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-BCGov-mesur.io.html new file mode 100644 index 0000000000..7ecaefe508 --- /dev/null +++ b/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-BCGov-mesur.io.html @@ -0,0 +1,1372 @@ + + + + + Newman Summary Report + + + + + + + + + +
+
+ + + +
+
+
+ +
+
+
+
+

Newman Run Dashboard

+
Friday, 30 August 2024 01:08:03
+
+
+
+
+
+ +
+
Total Iterations
+

1

+
+
+
+
+
+
+
+ +
+
Total Assertions
+

9

+
+
+
+
+
+
+
+ +
+
Total Failed Tests
+

0

+
+
+
+
+
+
+
+ +
+
Total Skipped Tests
+

0

+
+
+
+
+
+
+
+
+
+
+
+
File Information
+ Collection: OAuth Presentations Exchange Tutorial
+ + +
+
+
+
+
+
+
+
+
Timings and Data
+ Total run duration: 1050ms
+ Total data received: 2.51KB
+ Average response time: 313ms
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary ItemTotalFailed
Requests30
Prerequest Scripts30
Test Scripts60
Assertions90
Skipped Tests0-
+
+
+
+
+
+
+
+
+
+
+ + +
+

There are no failed tests



+
+
+ +
+ + +
+

There are no skipped tests



+
+
+
+ + + +
+ + +
+ +
+
1 Iteration available to view
+ + +
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
Request Information
+ Request Method: POST
+ Request URL: https://mesur.auth0.com/oauth/token
+
+
+
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 684ms
+ Mean size per request: 1.2KB
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
must return `200 Success` status100
response body must include non-empty access_token100
response body must represent `Bearer` token100
returned token must expire in the future100
`access_token` persisted to collectionVariables100
Total500
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
Request Information
+ Request Method: GET
+ Request URL: https://vc.mesur.io/v1/identifiers/did:web:vc.mesur.io:v1
+
+
+
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 244ms
+ Mean size per request: 1.31KB
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
Status code is 200100
Issuer makes unauthenticated discovery of verifiers exchange endpoint. `verifier_exchange_endpoint` is persisted to collectionVariables100
Total200
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
Request Information
+ Request Method: POST
+ Request URL: https://vc.mesur.io/v1/presentations
+
+
+
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 11ms
+ Mean size per request: 3B
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
must return `200 Success` status100
Content-Type header is application/json100
Total200
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-BCGov-mesur.io.json b/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-BCGov-mesur.io.json new file mode 100644 index 0000000000..a26b478b97 --- /dev/null +++ b/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-BCGov-mesur.io.json @@ -0,0 +1,408 @@ +{ + "collection": { + "info": { + "_postman_id": "e6ed89ab-9b28-4bce-8769-59c1309f2fe8", + "name": "OAuth Presentations Exchange Tutorial", + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" + }, + "item": [ + { + "id": "a6d836fb-e7ed-4b5a-9577-c5a41940cd05", + "name": "Holder gets Verifier's Token", + "request": { + "url": { + "host": [ + "{{VERIFIER_TOKEN_ENDPOINT}}" + ], + "query": [], + "variable": [] + }, + "method": "POST", + "body": { + "mode": "urlencoded", + "urlencoded": [ + { + "key": "audience", + "value": "{{VERIFIER_TOKEN_AUDIENCE}}" + }, + { + "key": "client_id", + "value": "{{VERIFIER_CLIENT_ID}}" + }, + { + "key": "client_secret", + "value": "{{VERIFIER_CLIENT_SECRET}}" + }, + { + "key": "grant_type", + "value": "client_credentials" + }, + { + "key": "scope", + "value": "{{VERIFIER_CLIENT_SCOPE}}" + } + ] + }, + "auth": { + "type": "noauth", + "noauth": [] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "71ca32c3-3ef1-4467-9998-6c857721be55", + "type": "text/javascript", + "exec": [ + "// Token requests are expected to return a `200 Success` response code. Any", + "// other response code should trigger a failure.", + "pm.test(\"must return `200 Success` status\", function() {", + " pm.response.to.have.status(200);", + "});", + "", + "// The response should include an `access_token` value - this will be presented", + "// to authenticated API endpoints in the `Authentication` header (see the last", + "// testing code block for details on how this is persisted).", + "pm.test(\"response body must include non-empty access_token\", function () {", + " const { access_token } = pm.response.json()", + " pm.expect(access_token).to.be.a('string').that.is.not.empty;", + "});", + "", + "// The type of `access_token` returned by the token request is expected to be", + "// `Bearer`.", + "pm.test(\"response body must represent `Bearer` token\", function() {", + " const { token_type } = pm.response.json()", + " pm.expect(token_type).to.equal(\"Bearer\");", + "});", + "", + "// The returned data includes an `expires_in` field that indicates time until", + "// token expiration. Validate that this value is a whole number greater than", + "// zero, as anything less than or equal to zero means that the `access_token`", + "// is already expired.", + "pm.test(\"returned token must expire in the future\", function() {", + " const { expires_in } = pm.response.json()", + " pm.expect(expires_in).to.be.above(0);", + "});", + "", + "// The returned `access_token` value is persisted as a Postman collection", + "// variable that can be accessed by other requests in the collection by calling", + "// `pm.collectionVariables.get(\"issuer_access_token\")`.", + "pm.test(\"`access_token` persisted to collectionVariables\", function() {", + " const { access_token } = pm.response.json()", + " pm.collectionVariables.set(\"verifier_access_token\", access_token);", + "});" + ], + "_lastExecutionId": "7f40b35f-e157-47e1-abf4-9eb6d014449f" + } + } + ] + }, + { + "id": "4ad0dd21-3dac-44d1-a76b-8784ef6c075a", + "name": "Get Verifier Organization DIDs", + "request": { + "url": { + "path": [ + "identifiers", + "{{VERIFIER_ORGANIZATION_DID_WEB}}" + ], + "host": [ + "{{VERIFIER_API_BASE_URL}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "string", + "value": "{{verifier_access_token}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "ac9cc81e-03b1-42ca-af76-1166e95be039", + "type": "text/javascript", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Issuer makes unauthenticated discovery of verifiers exchange endpoint. `verifier_exchange_endpoint` is persisted to collectionVariables\", function() {", + " const { service } = pm.response.json().didDocument;", + " pm.collectionVariables.set(\"verifier_exchange_endpoint\", service[0].serviceEndpoint);", + "});", + "", + "" + ], + "_lastExecutionId": "1e2409b0-4f07-49b1-8ba5-afde82520fef" + } + } + ], + "protocolProfileBehavior": { + "disabledSystemHeaders": {} + } + }, + { + "id": "632a27e1-3c6c-4764-9ebc-e0f1f706e106", + "name": "Presentation", + "request": { + "url": { + "path": [ + "presentations" + ], + "host": [ + "{{verifier_exchange_endpoint}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"@context\": [\n \"https://www.w3.org/2018/credentials/v1\",\n \"https://w3id.org/traceability/v1\"\n ],\n \"type\": [\n \"VerifiablePresentation\",\n \"TraceablePresentation\"\n ],\n \"verifiableCredential\": [\n {\n \"@context\": [\n \"https://www.w3.org/2018/credentials/v1\"\n ],\n \"id\": \"urn:uuid:07aa969e-b40d-4c1b-ab46-ded252003ded\",\n \"type\": [\n \"VerifiableCredential\"\n ],\n \"issuer\": \"did:key:z6MktiSzqF9kqwdU8VkdBKx56EYzXfpgnNPUAGznpicNiWfn\",\n \"issuanceDate\": \"2010-01-01T19:23:24Z\",\n \"credentialSubject\": {\n \"id\": \"did:key:z6MktiSzqF9kqwdU8VkdBKx56EYzXfpgnNPUAGznpicNiWfn\"\n },\n \"proof\": {\n \"type\": \"Ed25519Signature2018\",\n \"created\": \"2021-10-30T19:16:30Z\",\n \"verificationMethod\": \"did:key:z6MktiSzqF9kqwdU8VkdBKx56EYzXfpgnNPUAGznpicNiWfn#z6MktiSzqF9kqwdU8VkdBKx56EYzXfpgnNPUAGznpicNiWfn\",\n \"proofPurpose\": \"assertionMethod\",\n \"jws\": \"eyJhbGciOiJFZERTQSIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19..puetBYS3pkYlYzAecBiT-WkigYAlVbslrz9wPFnk9JW4AwjrpJvcsSdZJPhZtNy_myMJUNzC_QaYyw3ni1V0BA\"\n }\n }\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "string", + "value": "{{verifier_access_token}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "9cdcce8e-d0e1-4842-88c1-1ea083b0f198", + "type": "text/javascript", + "exec": [ + "", + "// The expected response code for a \"Presentations Available\" request is", + "// `200 Success`.", + "pm.test(\"must return `200 Success` status\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Content-Type header is application/json\", () => {", + " pm.expect(pm.response.headers.get('Content-Type')).to.include('application/json');", + "});" + ], + "_lastExecutionId": "f1c17a58-bece-4aa6-9207-77356c7e6e6c" + } + } + ] + } + ] + }, + "run": { + "stats": { + "iterations": { + "total": 1, + "pending": 0, + "failed": 0 + }, + "items": { + "total": 3, + "pending": 0, + "failed": 0 + }, + "scripts": { + "total": 9, + "pending": 0, + "failed": 0 + }, + "prerequests": { + "total": 3, + "pending": 0, + "failed": 0 + }, + "requests": { + "total": 3, + "pending": 0, + "failed": 0 + }, + "tests": { + "total": 3, + "pending": 0, + "failed": 0 + }, + "assertions": { + "total": 9, + "pending": 0, + "failed": 0 + }, + "testScripts": { + "total": 6, + "pending": 0, + "failed": 0 + }, + "prerequestScripts": { + "total": 3, + "pending": 0, + "failed": 0 + } + }, + "timings": { + "responseAverage": 313, + "responseMin": 11, + "responseMax": 684, + "responseSd": 279.04957743502615, + "dnsAverage": 0, + "dnsMin": 0, + "dnsMax": 0, + "dnsSd": 0, + "firstByteAverage": 0, + "firstByteMin": 0, + "firstByteMax": 0, + "firstByteSd": 0, + "started": 1724980082228, + "completed": 1724980083278 + }, + "executions": [ + { + "id": "a6d836fb-e7ed-4b5a-9577-c5a41940cd05", + "cursor": { + "position": 0, + "iteration": 0, + "length": 3, + "cycles": 1, + "empty": false, + "eof": false, + "bof": true, + "cr": false, + "ref": "3e06372c-e8c6-44e7-a881-02c1d685e222", + "httpRequestId": "214eb8ec-3c9e-4c62-859d-7d79322aa395" + }, + "item": { + "id": "a6d836fb-e7ed-4b5a-9577-c5a41940cd05", + "name": "Holder gets Verifier's Token" + }, + "response": { + "id": "4f3a518e-940e-4beb-b63e-0732515c7fba", + "status": "OK", + "code": 200, + "responseTime": 684, + "responseSize": 1225 + }, + "assertions": [ + { + "assertion": "must return `200 Success` status", + "skipped": false + }, + { + "assertion": "response body must include non-empty access_token", + "skipped": false + }, + { + "assertion": "response body must represent `Bearer` token", + "skipped": false + }, + { + "assertion": "returned token must expire in the future", + "skipped": false + }, + { + "assertion": "`access_token` persisted to collectionVariables", + "skipped": false + } + ] + }, + { + "id": "4ad0dd21-3dac-44d1-a76b-8784ef6c075a", + "cursor": { + "ref": "807a6524-5106-49db-857b-681830c31b60", + "length": 3, + "cycles": 1, + "position": 1, + "iteration": 0, + "httpRequestId": "ff9fd5ed-6cbf-4e06-b4ad-d25afbd66d87" + }, + "item": { + "id": "4ad0dd21-3dac-44d1-a76b-8784ef6c075a", + "name": "Get Verifier Organization DIDs" + }, + "response": { + "id": "d196c5c5-7dc8-499d-b999-d1b2a17c93aa", + "status": "OK", + "code": 200, + "responseTime": 244, + "responseSize": 1345 + }, + "assertions": [ + { + "assertion": "Status code is 200", + "skipped": false + }, + { + "assertion": "Issuer makes unauthenticated discovery of verifiers exchange endpoint. `verifier_exchange_endpoint` is persisted to collectionVariables", + "skipped": false + } + ] + }, + { + "id": "632a27e1-3c6c-4764-9ebc-e0f1f706e106", + "cursor": { + "ref": "462efeb9-6225-4c7f-b7c1-eee1e969c148", + "length": 3, + "cycles": 1, + "position": 2, + "iteration": 0, + "httpRequestId": "364959a5-ef27-4139-bad5-08cd11f96751" + }, + "item": { + "id": "632a27e1-3c6c-4764-9ebc-e0f1f706e106", + "name": "Presentation" + }, + "response": { + "id": "e1271bae-f664-4184-9c95-fe3bb28c9460", + "status": "OK", + "code": 200, + "responseTime": 11, + "responseSize": 3 + }, + "assertions": [ + { + "assertion": "must return `200 Success` status", + "skipped": false + }, + { + "assertion": "Content-Type header is application/json", + "skipped": false + } + ] + } + ] + } +} \ No newline at end of file diff --git a/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-GS1US-BCGov.html b/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-GS1US-BCGov.html new file mode 100644 index 0000000000..bbcc4840ec --- /dev/null +++ b/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-GS1US-BCGov.html @@ -0,0 +1,1372 @@ + + + + + Newman Summary Report + + + + + + + + + +
+
+ + + +
+
+
+ +
+
+
+
+

Newman Run Dashboard

+
Friday, 30 August 2024 01:08:10
+
+
+
+
+
+ +
+
Total Iterations
+

1

+
+
+
+
+
+
+
+ +
+
Total Assertions
+

9

+
+
+
+
+
+
+
+ +
+
Total Failed Tests
+

0

+
+
+
+
+
+
+
+ +
+
Total Skipped Tests
+

0

+
+
+
+
+
+
+
+
+
+
+
+
File Information
+ Collection: OAuth Presentations Exchange Tutorial
+ + +
+
+
+
+
+
+
+
+
Timings and Data
+ Total run duration: 3.7s
+ Total data received: 1.25KB
+ Average response time: 1214ms
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary ItemTotalFailed
Requests30
Prerequest Scripts30
Test Scripts60
Assertions90
Skipped Tests0-
+
+
+
+
+
+
+
+
+
+
+ + +
+

There are no failed tests



+
+
+ +
+ + +
+

There are no skipped tests



+
+
+
+ + + +
+ + +
+ +
+
1 Iteration available to view
+ + +
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
Request Information
+ Request Method: POST
+ Request URL: https://traceability.interop.vonx.io/oauth/token
+
+
+
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 545ms
+ Mean size per request: 237B
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
must return `200 Success` status100
response body must include non-empty access_token100
response body must represent `Bearer` token100
returned token must expire in the future100
`access_token` persisted to collectionVariables100
Total500
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+ +
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 2.7s
+ Mean size per request: 1.02KB
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
Status code is 200100
Issuer makes unauthenticated discovery of verifiers exchange endpoint. `verifier_exchange_endpoint` is persisted to collectionVariables100
Total200
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 314ms
+ Mean size per request: 2B
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
must return `200 Success` status100
Content-Type header is application/json100
Total200
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-GS1US-BCGov.json b/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-GS1US-BCGov.json new file mode 100644 index 0000000000..f4a5d4978a --- /dev/null +++ b/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-GS1US-BCGov.json @@ -0,0 +1,408 @@ +{ + "collection": { + "info": { + "_postman_id": "e6ed89ab-9b28-4bce-8769-59c1309f2fe8", + "name": "OAuth Presentations Exchange Tutorial", + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" + }, + "item": [ + { + "id": "8feab1ac-5cf7-4d30-80dc-12c475fcfa33", + "name": "Holder gets Verifier's Token", + "request": { + "url": { + "host": [ + "{{VERIFIER_TOKEN_ENDPOINT}}" + ], + "query": [], + "variable": [] + }, + "method": "POST", + "body": { + "mode": "urlencoded", + "urlencoded": [ + { + "key": "audience", + "value": "{{VERIFIER_TOKEN_AUDIENCE}}" + }, + { + "key": "client_id", + "value": "{{VERIFIER_CLIENT_ID}}" + }, + { + "key": "client_secret", + "value": "{{VERIFIER_CLIENT_SECRET}}" + }, + { + "key": "grant_type", + "value": "client_credentials" + }, + { + "key": "scope", + "value": "{{VERIFIER_CLIENT_SCOPE}}" + } + ] + }, + "auth": { + "type": "noauth", + "noauth": [] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "3cb8a1d3-7c6b-44b8-9889-9ddd933aa41e", + "type": "text/javascript", + "exec": [ + "// Token requests are expected to return a `200 Success` response code. Any", + "// other response code should trigger a failure.", + "pm.test(\"must return `200 Success` status\", function() {", + " pm.response.to.have.status(200);", + "});", + "", + "// The response should include an `access_token` value - this will be presented", + "// to authenticated API endpoints in the `Authentication` header (see the last", + "// testing code block for details on how this is persisted).", + "pm.test(\"response body must include non-empty access_token\", function () {", + " const { access_token } = pm.response.json()", + " pm.expect(access_token).to.be.a('string').that.is.not.empty;", + "});", + "", + "// The type of `access_token` returned by the token request is expected to be", + "// `Bearer`.", + "pm.test(\"response body must represent `Bearer` token\", function() {", + " const { token_type } = pm.response.json()", + " pm.expect(token_type).to.equal(\"Bearer\");", + "});", + "", + "// The returned data includes an `expires_in` field that indicates time until", + "// token expiration. Validate that this value is a whole number greater than", + "// zero, as anything less than or equal to zero means that the `access_token`", + "// is already expired.", + "pm.test(\"returned token must expire in the future\", function() {", + " const { expires_in } = pm.response.json()", + " pm.expect(expires_in).to.be.above(0);", + "});", + "", + "// The returned `access_token` value is persisted as a Postman collection", + "// variable that can be accessed by other requests in the collection by calling", + "// `pm.collectionVariables.get(\"issuer_access_token\")`.", + "pm.test(\"`access_token` persisted to collectionVariables\", function() {", + " const { access_token } = pm.response.json()", + " pm.collectionVariables.set(\"verifier_access_token\", access_token);", + "});" + ], + "_lastExecutionId": "021e3648-2c11-404c-860a-b7abadda3df6" + } + } + ] + }, + { + "id": "afa070e0-456f-4c46-bb76-f671a7104ff6", + "name": "Get Verifier Organization DIDs", + "request": { + "url": { + "path": [ + "identifiers", + "{{VERIFIER_ORGANIZATION_DID_WEB}}" + ], + "host": [ + "{{VERIFIER_API_BASE_URL}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "string", + "value": "{{verifier_access_token}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "60de1760-7141-4508-8c72-f2fbb854eae2", + "type": "text/javascript", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Issuer makes unauthenticated discovery of verifiers exchange endpoint. `verifier_exchange_endpoint` is persisted to collectionVariables\", function() {", + " const { service } = pm.response.json().didDocument;", + " pm.collectionVariables.set(\"verifier_exchange_endpoint\", service[0].serviceEndpoint);", + "});", + "", + "" + ], + "_lastExecutionId": "2623b222-8568-4119-ba55-398927818faa" + } + } + ], + "protocolProfileBehavior": { + "disabledSystemHeaders": {} + } + }, + { + "id": "3634039c-4470-4ad9-9bf8-771a53bf582c", + "name": "Presentation", + "request": { + "url": { + "path": [ + "presentations" + ], + "host": [ + "{{verifier_exchange_endpoint}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"@context\": [\n \"https://www.w3.org/2018/credentials/v1\",\n \"https://w3id.org/traceability/v1\"\n ],\n \"type\": [\n \"VerifiablePresentation\",\n \"TraceablePresentation\"\n ],\n \"verifiableCredential\": [\n {\n \"@context\": [\n \"https://www.w3.org/2018/credentials/v1\"\n ],\n \"id\": \"urn:uuid:07aa969e-b40d-4c1b-ab46-ded252003ded\",\n \"type\": [\n \"VerifiableCredential\"\n ],\n \"issuer\": \"did:key:z6MktiSzqF9kqwdU8VkdBKx56EYzXfpgnNPUAGznpicNiWfn\",\n \"issuanceDate\": \"2010-01-01T19:23:24Z\",\n \"credentialSubject\": {\n \"id\": \"did:key:z6MktiSzqF9kqwdU8VkdBKx56EYzXfpgnNPUAGznpicNiWfn\"\n },\n \"proof\": {\n \"type\": \"Ed25519Signature2018\",\n \"created\": \"2021-10-30T19:16:30Z\",\n \"verificationMethod\": \"did:key:z6MktiSzqF9kqwdU8VkdBKx56EYzXfpgnNPUAGznpicNiWfn#z6MktiSzqF9kqwdU8VkdBKx56EYzXfpgnNPUAGznpicNiWfn\",\n \"proofPurpose\": \"assertionMethod\",\n \"jws\": \"eyJhbGciOiJFZERTQSIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19..puetBYS3pkYlYzAecBiT-WkigYAlVbslrz9wPFnk9JW4AwjrpJvcsSdZJPhZtNy_myMJUNzC_QaYyw3ni1V0BA\"\n }\n }\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "string", + "value": "{{verifier_access_token}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "8b1c12cf-2c28-4f14-82fc-c0c969cd74b3", + "type": "text/javascript", + "exec": [ + "", + "// The expected response code for a \"Presentations Available\" request is", + "// `200 Success`.", + "pm.test(\"must return `200 Success` status\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Content-Type header is application/json\", () => {", + " pm.expect(pm.response.headers.get('Content-Type')).to.include('application/json');", + "});" + ], + "_lastExecutionId": "e8c5b3de-2d5a-4276-84c4-b4d37d386d20" + } + } + ] + } + ] + }, + "run": { + "stats": { + "iterations": { + "total": 1, + "pending": 0, + "failed": 0 + }, + "items": { + "total": 3, + "pending": 0, + "failed": 0 + }, + "scripts": { + "total": 9, + "pending": 0, + "failed": 0 + }, + "prerequests": { + "total": 3, + "pending": 0, + "failed": 0 + }, + "requests": { + "total": 3, + "pending": 0, + "failed": 0 + }, + "tests": { + "total": 3, + "pending": 0, + "failed": 0 + }, + "assertions": { + "total": 9, + "pending": 0, + "failed": 0 + }, + "testScripts": { + "total": 6, + "pending": 0, + "failed": 0 + }, + "prerequestScripts": { + "total": 3, + "pending": 0, + "failed": 0 + } + }, + "timings": { + "responseAverage": 1214, + "responseMin": 314, + "responseMax": 2783, + "responseSd": 1113.4513909461878, + "dnsAverage": 0, + "dnsMin": 0, + "dnsMax": 0, + "dnsSd": 0, + "firstByteAverage": 0, + "firstByteMin": 0, + "firstByteMax": 0, + "firstByteSd": 0, + "started": 1724980086343, + "completed": 1724980090092 + }, + "executions": [ + { + "id": "8feab1ac-5cf7-4d30-80dc-12c475fcfa33", + "cursor": { + "position": 0, + "iteration": 0, + "length": 3, + "cycles": 1, + "empty": false, + "eof": false, + "bof": true, + "cr": false, + "ref": "3c5f1381-12d1-4665-9b44-8872e8f365d5", + "httpRequestId": "5d632e3a-12ed-49dc-97f7-a7d93b931abe" + }, + "item": { + "id": "8feab1ac-5cf7-4d30-80dc-12c475fcfa33", + "name": "Holder gets Verifier's Token" + }, + "response": { + "id": "84b62022-4d04-453f-a2a4-c54897b017b8", + "status": "OK", + "code": 200, + "responseTime": 545, + "responseSize": 237 + }, + "assertions": [ + { + "assertion": "must return `200 Success` status", + "skipped": false + }, + { + "assertion": "response body must include non-empty access_token", + "skipped": false + }, + { + "assertion": "response body must represent `Bearer` token", + "skipped": false + }, + { + "assertion": "returned token must expire in the future", + "skipped": false + }, + { + "assertion": "`access_token` persisted to collectionVariables", + "skipped": false + } + ] + }, + { + "id": "afa070e0-456f-4c46-bb76-f671a7104ff6", + "cursor": { + "ref": "57ed0f73-546a-4786-8168-7f9699e91b8b", + "length": 3, + "cycles": 1, + "position": 1, + "iteration": 0, + "httpRequestId": "acffb78c-d5e3-4d24-b2da-563e36957ad9" + }, + "item": { + "id": "afa070e0-456f-4c46-bb76-f671a7104ff6", + "name": "Get Verifier Organization DIDs" + }, + "response": { + "id": "5aa3b886-af20-47d9-8d8e-d40a8193dcc2", + "status": "OK", + "code": 200, + "responseTime": 2783, + "responseSize": 1040 + }, + "assertions": [ + { + "assertion": "Status code is 200", + "skipped": false + }, + { + "assertion": "Issuer makes unauthenticated discovery of verifiers exchange endpoint. `verifier_exchange_endpoint` is persisted to collectionVariables", + "skipped": false + } + ] + }, + { + "id": "3634039c-4470-4ad9-9bf8-771a53bf582c", + "cursor": { + "ref": "33944696-475f-43a8-9720-982efdecf6d6", + "length": 3, + "cycles": 1, + "position": 2, + "iteration": 0, + "httpRequestId": "160c5e07-70fa-4e5e-85f6-0764ffe90bd2" + }, + "item": { + "id": "3634039c-4470-4ad9-9bf8-771a53bf582c", + "name": "Presentation" + }, + "response": { + "id": "287878c6-b49a-4a3d-97b4-4ee5bf0170f6", + "status": "OK", + "code": 200, + "responseTime": 314, + "responseSize": 2 + }, + "assertions": [ + { + "assertion": "must return `200 Success` status", + "skipped": false + }, + { + "assertion": "Content-Type header is application/json", + "skipped": false + } + ] + } + ] + } +} \ No newline at end of file diff --git a/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-GS1US-mesur.io.html b/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-GS1US-mesur.io.html new file mode 100644 index 0000000000..202e4ba65a --- /dev/null +++ b/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-GS1US-mesur.io.html @@ -0,0 +1,1372 @@ + + + + + Newman Summary Report + + + + + + + + + +
+
+ + + +
+
+
+ +
+
+
+
+

Newman Run Dashboard

+
Friday, 30 August 2024 01:08:06
+
+
+
+
+
+ +
+
Total Iterations
+

1

+
+
+
+
+
+
+
+ +
+
Total Assertions
+

9

+
+
+
+
+
+
+
+ +
+
Total Failed Tests
+

0

+
+
+
+
+
+
+
+ +
+
Total Skipped Tests
+

0

+
+
+
+
+
+
+
+
+
+
+
+
File Information
+ Collection: OAuth Presentations Exchange Tutorial
+ + +
+
+
+
+
+
+
+
+
Timings and Data
+ Total run duration: 1208ms
+ Total data received: 2.51KB
+ Average response time: 366ms
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary ItemTotalFailed
Requests30
Prerequest Scripts30
Test Scripts60
Assertions90
Skipped Tests0-
+
+
+
+
+
+
+
+
+
+
+ + +
+

There are no failed tests



+
+
+ +
+ + +
+

There are no skipped tests



+
+
+
+ + + +
+ + +
+ +
+
1 Iteration available to view
+ + +
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
Request Information
+ Request Method: POST
+ Request URL: https://mesur.auth0.com/oauth/token
+
+
+
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 686ms
+ Mean size per request: 1.2KB
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
must return `200 Success` status100
response body must include non-empty access_token100
response body must represent `Bearer` token100
returned token must expire in the future100
`access_token` persisted to collectionVariables100
Total500
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
Request Information
+ Request Method: GET
+ Request URL: https://vc.mesur.io/v1/identifiers/did:web:vc.mesur.io:v1
+
+
+
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 346ms
+ Mean size per request: 1.31KB
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
Status code is 200100
Issuer makes unauthenticated discovery of verifiers exchange endpoint. `verifier_exchange_endpoint` is persisted to collectionVariables100
Total200
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
Request Information
+ Request Method: POST
+ Request URL: https://vc.mesur.io/v1/presentations
+
+
+
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 66ms
+ Mean size per request: 3B
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
must return `200 Success` status100
Content-Type header is application/json100
Total200
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-GS1US-mesur.io.json b/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-GS1US-mesur.io.json new file mode 100644 index 0000000000..4448c0db15 --- /dev/null +++ b/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-GS1US-mesur.io.json @@ -0,0 +1,408 @@ +{ + "collection": { + "info": { + "_postman_id": "e6ed89ab-9b28-4bce-8769-59c1309f2fe8", + "name": "OAuth Presentations Exchange Tutorial", + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" + }, + "item": [ + { + "id": "ef12b656-e7ce-4f4b-9379-d9316965d3c0", + "name": "Holder gets Verifier's Token", + "request": { + "url": { + "host": [ + "{{VERIFIER_TOKEN_ENDPOINT}}" + ], + "query": [], + "variable": [] + }, + "method": "POST", + "body": { + "mode": "urlencoded", + "urlencoded": [ + { + "key": "audience", + "value": "{{VERIFIER_TOKEN_AUDIENCE}}" + }, + { + "key": "client_id", + "value": "{{VERIFIER_CLIENT_ID}}" + }, + { + "key": "client_secret", + "value": "{{VERIFIER_CLIENT_SECRET}}" + }, + { + "key": "grant_type", + "value": "client_credentials" + }, + { + "key": "scope", + "value": "{{VERIFIER_CLIENT_SCOPE}}" + } + ] + }, + "auth": { + "type": "noauth", + "noauth": [] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "4e79eda3-dfd4-42d9-af81-412c4c87e13d", + "type": "text/javascript", + "exec": [ + "// Token requests are expected to return a `200 Success` response code. Any", + "// other response code should trigger a failure.", + "pm.test(\"must return `200 Success` status\", function() {", + " pm.response.to.have.status(200);", + "});", + "", + "// The response should include an `access_token` value - this will be presented", + "// to authenticated API endpoints in the `Authentication` header (see the last", + "// testing code block for details on how this is persisted).", + "pm.test(\"response body must include non-empty access_token\", function () {", + " const { access_token } = pm.response.json()", + " pm.expect(access_token).to.be.a('string').that.is.not.empty;", + "});", + "", + "// The type of `access_token` returned by the token request is expected to be", + "// `Bearer`.", + "pm.test(\"response body must represent `Bearer` token\", function() {", + " const { token_type } = pm.response.json()", + " pm.expect(token_type).to.equal(\"Bearer\");", + "});", + "", + "// The returned data includes an `expires_in` field that indicates time until", + "// token expiration. Validate that this value is a whole number greater than", + "// zero, as anything less than or equal to zero means that the `access_token`", + "// is already expired.", + "pm.test(\"returned token must expire in the future\", function() {", + " const { expires_in } = pm.response.json()", + " pm.expect(expires_in).to.be.above(0);", + "});", + "", + "// The returned `access_token` value is persisted as a Postman collection", + "// variable that can be accessed by other requests in the collection by calling", + "// `pm.collectionVariables.get(\"issuer_access_token\")`.", + "pm.test(\"`access_token` persisted to collectionVariables\", function() {", + " const { access_token } = pm.response.json()", + " pm.collectionVariables.set(\"verifier_access_token\", access_token);", + "});" + ], + "_lastExecutionId": "66f458c4-4bec-463c-ba9f-31a621228152" + } + } + ] + }, + { + "id": "8b6e57c0-c0d0-4240-8550-436d747f27cf", + "name": "Get Verifier Organization DIDs", + "request": { + "url": { + "path": [ + "identifiers", + "{{VERIFIER_ORGANIZATION_DID_WEB}}" + ], + "host": [ + "{{VERIFIER_API_BASE_URL}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "string", + "value": "{{verifier_access_token}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "ec1333e6-a1f4-4e5c-9a47-9924556f2b87", + "type": "text/javascript", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Issuer makes unauthenticated discovery of verifiers exchange endpoint. `verifier_exchange_endpoint` is persisted to collectionVariables\", function() {", + " const { service } = pm.response.json().didDocument;", + " pm.collectionVariables.set(\"verifier_exchange_endpoint\", service[0].serviceEndpoint);", + "});", + "", + "" + ], + "_lastExecutionId": "7d79d7e8-a7b6-4ae7-9922-1f8a6ff1fa23" + } + } + ], + "protocolProfileBehavior": { + "disabledSystemHeaders": {} + } + }, + { + "id": "072e01bd-e04d-4353-8672-af63bc7f2371", + "name": "Presentation", + "request": { + "url": { + "path": [ + "presentations" + ], + "host": [ + "{{verifier_exchange_endpoint}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"@context\": [\n \"https://www.w3.org/2018/credentials/v1\",\n \"https://w3id.org/traceability/v1\"\n ],\n \"type\": [\n \"VerifiablePresentation\",\n \"TraceablePresentation\"\n ],\n \"verifiableCredential\": [\n {\n \"@context\": [\n \"https://www.w3.org/2018/credentials/v1\"\n ],\n \"id\": \"urn:uuid:07aa969e-b40d-4c1b-ab46-ded252003ded\",\n \"type\": [\n \"VerifiableCredential\"\n ],\n \"issuer\": \"did:key:z6MktiSzqF9kqwdU8VkdBKx56EYzXfpgnNPUAGznpicNiWfn\",\n \"issuanceDate\": \"2010-01-01T19:23:24Z\",\n \"credentialSubject\": {\n \"id\": \"did:key:z6MktiSzqF9kqwdU8VkdBKx56EYzXfpgnNPUAGznpicNiWfn\"\n },\n \"proof\": {\n \"type\": \"Ed25519Signature2018\",\n \"created\": \"2021-10-30T19:16:30Z\",\n \"verificationMethod\": \"did:key:z6MktiSzqF9kqwdU8VkdBKx56EYzXfpgnNPUAGznpicNiWfn#z6MktiSzqF9kqwdU8VkdBKx56EYzXfpgnNPUAGznpicNiWfn\",\n \"proofPurpose\": \"assertionMethod\",\n \"jws\": \"eyJhbGciOiJFZERTQSIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19..puetBYS3pkYlYzAecBiT-WkigYAlVbslrz9wPFnk9JW4AwjrpJvcsSdZJPhZtNy_myMJUNzC_QaYyw3ni1V0BA\"\n }\n }\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "string", + "value": "{{verifier_access_token}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "fd177496-cb94-4941-81a1-0e2c01d03d92", + "type": "text/javascript", + "exec": [ + "", + "// The expected response code for a \"Presentations Available\" request is", + "// `200 Success`.", + "pm.test(\"must return `200 Success` status\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Content-Type header is application/json\", () => {", + " pm.expect(pm.response.headers.get('Content-Type')).to.include('application/json');", + "});" + ], + "_lastExecutionId": "5652d0a3-e1ad-412f-b677-41e12e37f588" + } + } + ] + } + ] + }, + "run": { + "stats": { + "iterations": { + "total": 1, + "pending": 0, + "failed": 0 + }, + "items": { + "total": 3, + "pending": 0, + "failed": 0 + }, + "scripts": { + "total": 9, + "pending": 0, + "failed": 0 + }, + "prerequests": { + "total": 3, + "pending": 0, + "failed": 0 + }, + "requests": { + "total": 3, + "pending": 0, + "failed": 0 + }, + "tests": { + "total": 3, + "pending": 0, + "failed": 0 + }, + "assertions": { + "total": 9, + "pending": 0, + "failed": 0 + }, + "testScripts": { + "total": 6, + "pending": 0, + "failed": 0 + }, + "prerequestScripts": { + "total": 3, + "pending": 0, + "failed": 0 + } + }, + "timings": { + "responseAverage": 366, + "responseMin": 66, + "responseMax": 686, + "responseSd": 253.50871122442058, + "dnsAverage": 0, + "dnsMin": 0, + "dnsMax": 0, + "dnsSd": 0, + "firstByteAverage": 0, + "firstByteMin": 0, + "firstByteMax": 0, + "firstByteSd": 0, + "started": 1724980085573, + "completed": 1724980086781 + }, + "executions": [ + { + "id": "ef12b656-e7ce-4f4b-9379-d9316965d3c0", + "cursor": { + "position": 0, + "iteration": 0, + "length": 3, + "cycles": 1, + "empty": false, + "eof": false, + "bof": true, + "cr": false, + "ref": "8487dae3-4f0d-4125-b66b-d0328f17bf65", + "httpRequestId": "a8e670b6-87d2-4e66-8a93-9ced44721738" + }, + "item": { + "id": "ef12b656-e7ce-4f4b-9379-d9316965d3c0", + "name": "Holder gets Verifier's Token" + }, + "response": { + "id": "72db077c-b2cf-4407-bc03-d512a5b5a636", + "status": "OK", + "code": 200, + "responseTime": 686, + "responseSize": 1225 + }, + "assertions": [ + { + "assertion": "must return `200 Success` status", + "skipped": false + }, + { + "assertion": "response body must include non-empty access_token", + "skipped": false + }, + { + "assertion": "response body must represent `Bearer` token", + "skipped": false + }, + { + "assertion": "returned token must expire in the future", + "skipped": false + }, + { + "assertion": "`access_token` persisted to collectionVariables", + "skipped": false + } + ] + }, + { + "id": "8b6e57c0-c0d0-4240-8550-436d747f27cf", + "cursor": { + "ref": "fdf8eb58-fb32-41b6-98b8-c7db2924e1ea", + "length": 3, + "cycles": 1, + "position": 1, + "iteration": 0, + "httpRequestId": "93bc5858-90c4-4685-9927-b3742a375357" + }, + "item": { + "id": "8b6e57c0-c0d0-4240-8550-436d747f27cf", + "name": "Get Verifier Organization DIDs" + }, + "response": { + "id": "a5d6b18a-e530-4f3f-ac70-b55e405a89ab", + "status": "OK", + "code": 200, + "responseTime": 346, + "responseSize": 1345 + }, + "assertions": [ + { + "assertion": "Status code is 200", + "skipped": false + }, + { + "assertion": "Issuer makes unauthenticated discovery of verifiers exchange endpoint. `verifier_exchange_endpoint` is persisted to collectionVariables", + "skipped": false + } + ] + }, + { + "id": "072e01bd-e04d-4353-8672-af63bc7f2371", + "cursor": { + "ref": "2e5c1cc8-b785-4d12-92b3-0f50b4198903", + "length": 3, + "cycles": 1, + "position": 2, + "iteration": 0, + "httpRequestId": "e63a10fd-83bf-4185-8ff5-395f80965e78" + }, + "item": { + "id": "072e01bd-e04d-4353-8672-af63bc7f2371", + "name": "Presentation" + }, + "response": { + "id": "22e59a7a-0e0f-4844-842d-c0051c0ac768", + "status": "OK", + "code": 200, + "responseTime": 66, + "responseSize": 3 + }, + "assertions": [ + { + "assertion": "must return `200 Success` status", + "skipped": false + }, + { + "assertion": "Content-Type header is application/json", + "skipped": false + } + ] + } + ] + } +} \ No newline at end of file diff --git a/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-Mavennet-BCGov.html b/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-Mavennet-BCGov.html new file mode 100644 index 0000000000..7cd3a15426 --- /dev/null +++ b/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-Mavennet-BCGov.html @@ -0,0 +1,1372 @@ + + + + + Newman Summary Report + + + + + + + + + +
+
+ + + +
+
+
+ +
+
+
+
+

Newman Run Dashboard

+
Friday, 30 August 2024 01:08:06
+
+
+
+
+
+ +
+
Total Iterations
+

1

+
+
+
+
+
+
+
+ +
+
Total Assertions
+

9

+
+
+
+
+
+
+
+ +
+
Total Failed Tests
+

0

+
+
+
+
+
+
+
+ +
+
Total Skipped Tests
+

0

+
+
+
+
+
+
+
+
+
+
+
+
File Information
+ Collection: OAuth Presentations Exchange Tutorial
+ + +
+
+
+
+
+
+
+
+
Timings and Data
+ Total run duration: 4.5s
+ Total data received: 1.25KB
+ Average response time: 1486ms
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary ItemTotalFailed
Requests30
Prerequest Scripts30
Test Scripts60
Assertions90
Skipped Tests0-
+
+
+
+
+
+
+
+
+
+
+ + +
+

There are no failed tests



+
+
+ +
+ + +
+

There are no skipped tests



+
+
+
+ + + +
+ + +
+ +
+
1 Iteration available to view
+ + +
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
Request Information
+ Request Method: POST
+ Request URL: https://traceability.interop.vonx.io/oauth/token
+
+
+
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 532ms
+ Mean size per request: 237B
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
must return `200 Success` status100
response body must include non-empty access_token100
response body must represent `Bearer` token100
returned token must expire in the future100
`access_token` persisted to collectionVariables100
Total500
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+ +
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 3.5s
+ Mean size per request: 1.02KB
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
Status code is 200100
Issuer makes unauthenticated discovery of verifiers exchange endpoint. `verifier_exchange_endpoint` is persisted to collectionVariables100
Total200
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 330ms
+ Mean size per request: 2B
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
must return `200 Success` status100
Content-Type header is application/json100
Total200
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-Mavennet-BCGov.json b/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-Mavennet-BCGov.json new file mode 100644 index 0000000000..12f8843d3e --- /dev/null +++ b/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-Mavennet-BCGov.json @@ -0,0 +1,408 @@ +{ + "collection": { + "info": { + "_postman_id": "e6ed89ab-9b28-4bce-8769-59c1309f2fe8", + "name": "OAuth Presentations Exchange Tutorial", + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" + }, + "item": [ + { + "id": "ad5ca225-d54d-481e-a7ed-e64d0c93ae4d", + "name": "Holder gets Verifier's Token", + "request": { + "url": { + "host": [ + "{{VERIFIER_TOKEN_ENDPOINT}}" + ], + "query": [], + "variable": [] + }, + "method": "POST", + "body": { + "mode": "urlencoded", + "urlencoded": [ + { + "key": "audience", + "value": "{{VERIFIER_TOKEN_AUDIENCE}}" + }, + { + "key": "client_id", + "value": "{{VERIFIER_CLIENT_ID}}" + }, + { + "key": "client_secret", + "value": "{{VERIFIER_CLIENT_SECRET}}" + }, + { + "key": "grant_type", + "value": "client_credentials" + }, + { + "key": "scope", + "value": "{{VERIFIER_CLIENT_SCOPE}}" + } + ] + }, + "auth": { + "type": "noauth", + "noauth": [] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "ca90c58f-8fa3-4395-8d02-9fa7a7be9bed", + "type": "text/javascript", + "exec": [ + "// Token requests are expected to return a `200 Success` response code. Any", + "// other response code should trigger a failure.", + "pm.test(\"must return `200 Success` status\", function() {", + " pm.response.to.have.status(200);", + "});", + "", + "// The response should include an `access_token` value - this will be presented", + "// to authenticated API endpoints in the `Authentication` header (see the last", + "// testing code block for details on how this is persisted).", + "pm.test(\"response body must include non-empty access_token\", function () {", + " const { access_token } = pm.response.json()", + " pm.expect(access_token).to.be.a('string').that.is.not.empty;", + "});", + "", + "// The type of `access_token` returned by the token request is expected to be", + "// `Bearer`.", + "pm.test(\"response body must represent `Bearer` token\", function() {", + " const { token_type } = pm.response.json()", + " pm.expect(token_type).to.equal(\"Bearer\");", + "});", + "", + "// The returned data includes an `expires_in` field that indicates time until", + "// token expiration. Validate that this value is a whole number greater than", + "// zero, as anything less than or equal to zero means that the `access_token`", + "// is already expired.", + "pm.test(\"returned token must expire in the future\", function() {", + " const { expires_in } = pm.response.json()", + " pm.expect(expires_in).to.be.above(0);", + "});", + "", + "// The returned `access_token` value is persisted as a Postman collection", + "// variable that can be accessed by other requests in the collection by calling", + "// `pm.collectionVariables.get(\"issuer_access_token\")`.", + "pm.test(\"`access_token` persisted to collectionVariables\", function() {", + " const { access_token } = pm.response.json()", + " pm.collectionVariables.set(\"verifier_access_token\", access_token);", + "});" + ], + "_lastExecutionId": "e6d149dd-2ba1-442b-b285-0f46e8a7352c" + } + } + ] + }, + { + "id": "3988a374-021c-4fce-9f86-07a9db1be427", + "name": "Get Verifier Organization DIDs", + "request": { + "url": { + "path": [ + "identifiers", + "{{VERIFIER_ORGANIZATION_DID_WEB}}" + ], + "host": [ + "{{VERIFIER_API_BASE_URL}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "string", + "value": "{{verifier_access_token}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "f2218801-7b33-4669-ac50-04ce0dc3a8d4", + "type": "text/javascript", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Issuer makes unauthenticated discovery of verifiers exchange endpoint. `verifier_exchange_endpoint` is persisted to collectionVariables\", function() {", + " const { service } = pm.response.json().didDocument;", + " pm.collectionVariables.set(\"verifier_exchange_endpoint\", service[0].serviceEndpoint);", + "});", + "", + "" + ], + "_lastExecutionId": "bde3ce1f-6d68-4b24-a272-961557d6b588" + } + } + ], + "protocolProfileBehavior": { + "disabledSystemHeaders": {} + } + }, + { + "id": "2b0f3d71-2742-46aa-b668-dd4e68b6a8df", + "name": "Presentation", + "request": { + "url": { + "path": [ + "presentations" + ], + "host": [ + "{{verifier_exchange_endpoint}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"@context\": [\n \"https://www.w3.org/2018/credentials/v1\",\n \"https://w3id.org/traceability/v1\"\n ],\n \"type\": [\n \"VerifiablePresentation\",\n \"TraceablePresentation\"\n ],\n \"verifiableCredential\": [\n {\n \"@context\": [\n \"https://www.w3.org/2018/credentials/v1\"\n ],\n \"id\": \"urn:uuid:07aa969e-b40d-4c1b-ab46-ded252003ded\",\n \"type\": [\n \"VerifiableCredential\"\n ],\n \"issuer\": \"did:key:z6MktiSzqF9kqwdU8VkdBKx56EYzXfpgnNPUAGznpicNiWfn\",\n \"issuanceDate\": \"2010-01-01T19:23:24Z\",\n \"credentialSubject\": {\n \"id\": \"did:key:z6MktiSzqF9kqwdU8VkdBKx56EYzXfpgnNPUAGznpicNiWfn\"\n },\n \"proof\": {\n \"type\": \"Ed25519Signature2018\",\n \"created\": \"2021-10-30T19:16:30Z\",\n \"verificationMethod\": \"did:key:z6MktiSzqF9kqwdU8VkdBKx56EYzXfpgnNPUAGznpicNiWfn#z6MktiSzqF9kqwdU8VkdBKx56EYzXfpgnNPUAGznpicNiWfn\",\n \"proofPurpose\": \"assertionMethod\",\n \"jws\": \"eyJhbGciOiJFZERTQSIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19..puetBYS3pkYlYzAecBiT-WkigYAlVbslrz9wPFnk9JW4AwjrpJvcsSdZJPhZtNy_myMJUNzC_QaYyw3ni1V0BA\"\n }\n }\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "string", + "value": "{{verifier_access_token}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "2fa4aa33-5e31-4e1b-9012-90a050ce1f0c", + "type": "text/javascript", + "exec": [ + "", + "// The expected response code for a \"Presentations Available\" request is", + "// `200 Success`.", + "pm.test(\"must return `200 Success` status\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Content-Type header is application/json\", () => {", + " pm.expect(pm.response.headers.get('Content-Type')).to.include('application/json');", + "});" + ], + "_lastExecutionId": "f27c39cf-d4d7-47a4-b2a8-1e8f8c206939" + } + } + ] + } + ] + }, + "run": { + "stats": { + "iterations": { + "total": 1, + "pending": 0, + "failed": 0 + }, + "items": { + "total": 3, + "pending": 0, + "failed": 0 + }, + "scripts": { + "total": 9, + "pending": 0, + "failed": 0 + }, + "prerequests": { + "total": 3, + "pending": 0, + "failed": 0 + }, + "requests": { + "total": 3, + "pending": 0, + "failed": 0 + }, + "tests": { + "total": 3, + "pending": 0, + "failed": 0 + }, + "assertions": { + "total": 9, + "pending": 0, + "failed": 0 + }, + "testScripts": { + "total": 6, + "pending": 0, + "failed": 0 + }, + "prerequestScripts": { + "total": 3, + "pending": 0, + "failed": 0 + } + }, + "timings": { + "responseAverage": 1486.6666666666667, + "responseMin": 330, + "responseMax": 3598, + "responseSd": 1495.213994346257, + "dnsAverage": 0, + "dnsMin": 0, + "dnsMax": 0, + "dnsSd": 0, + "firstByteAverage": 0, + "firstByteMin": 0, + "firstByteMax": 0, + "firstByteSd": 0, + "started": 1724980082406, + "completed": 1724980086973 + }, + "executions": [ + { + "id": "ad5ca225-d54d-481e-a7ed-e64d0c93ae4d", + "cursor": { + "position": 0, + "iteration": 0, + "length": 3, + "cycles": 1, + "empty": false, + "eof": false, + "bof": true, + "cr": false, + "ref": "8c404419-68af-4d67-9fa4-120ae73d075c", + "httpRequestId": "978296a8-b61d-49b7-8788-ba2e78ee125a" + }, + "item": { + "id": "ad5ca225-d54d-481e-a7ed-e64d0c93ae4d", + "name": "Holder gets Verifier's Token" + }, + "response": { + "id": "1459d36b-3d94-442d-add3-9934ed7510d1", + "status": "OK", + "code": 200, + "responseTime": 532, + "responseSize": 237 + }, + "assertions": [ + { + "assertion": "must return `200 Success` status", + "skipped": false + }, + { + "assertion": "response body must include non-empty access_token", + "skipped": false + }, + { + "assertion": "response body must represent `Bearer` token", + "skipped": false + }, + { + "assertion": "returned token must expire in the future", + "skipped": false + }, + { + "assertion": "`access_token` persisted to collectionVariables", + "skipped": false + } + ] + }, + { + "id": "3988a374-021c-4fce-9f86-07a9db1be427", + "cursor": { + "ref": "20e05d0e-2b0f-4adc-a988-869475845e07", + "length": 3, + "cycles": 1, + "position": 1, + "iteration": 0, + "httpRequestId": "e038b153-7dd7-4dbd-a0c8-0731417ff793" + }, + "item": { + "id": "3988a374-021c-4fce-9f86-07a9db1be427", + "name": "Get Verifier Organization DIDs" + }, + "response": { + "id": "b13f1a54-e15c-489c-ab97-2e088b2b9f90", + "status": "OK", + "code": 200, + "responseTime": 3598, + "responseSize": 1040 + }, + "assertions": [ + { + "assertion": "Status code is 200", + "skipped": false + }, + { + "assertion": "Issuer makes unauthenticated discovery of verifiers exchange endpoint. `verifier_exchange_endpoint` is persisted to collectionVariables", + "skipped": false + } + ] + }, + { + "id": "2b0f3d71-2742-46aa-b668-dd4e68b6a8df", + "cursor": { + "ref": "b960e543-2c46-40da-bde8-36f2e28c7683", + "length": 3, + "cycles": 1, + "position": 2, + "iteration": 0, + "httpRequestId": "7964e31c-2358-4dde-804e-f15e5b407366" + }, + "item": { + "id": "2b0f3d71-2742-46aa-b668-dd4e68b6a8df", + "name": "Presentation" + }, + "response": { + "id": "b24b7596-5559-4485-91b2-7b960add108a", + "status": "OK", + "code": 200, + "responseTime": 330, + "responseSize": 2 + }, + "assertions": [ + { + "assertion": "must return `200 Success` status", + "skipped": false + }, + { + "assertion": "Content-Type header is application/json", + "skipped": false + } + ] + } + ] + } +} \ No newline at end of file diff --git a/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-Mavennet-GS1US.html b/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-Mavennet-GS1US.html new file mode 100644 index 0000000000..8345a4131f --- /dev/null +++ b/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-Mavennet-GS1US.html @@ -0,0 +1,1372 @@ + + + + + Newman Summary Report + + + + + + + + + +
+
+ + + +
+
+
+ +
+
+
+
+

Newman Run Dashboard

+
Friday, 30 August 2024 01:08:07
+
+
+
+
+
+ +
+
Total Iterations
+

1

+
+
+
+
+
+
+
+ +
+
Total Assertions
+

9

+
+
+
+
+
+
+
+ +
+
Total Failed Tests
+

0

+
+
+
+
+
+
+
+ +
+
Total Skipped Tests
+

0

+
+
+
+
+
+
+
+
+
+
+
+
File Information
+ Collection: OAuth Presentations Exchange Tutorial
+ + +
+
+
+
+
+
+
+
+
Timings and Data
+ Total run duration: 1060ms
+ Total data received: 4.63KB
+ Average response time: 317ms
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary ItemTotalFailed
Requests30
Prerequest Scripts30
Test Scripts60
Assertions90
Skipped Tests0-
+
+
+
+
+
+
+
+
+
+
+ + +
+

There are no failed tests



+
+
+ +
+ + +
+

There are no skipped tests



+
+
+
+ + + +
+ + +
+ +
+
1 Iteration available to view
+ + +
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
Request Information
+ Request Method: POST
+ Request URL: https://vc.cbpsvip.gs1us.org/cbpsvip/oauth/token/e5e65807-3d2a-4f67-a262-72f255868da0
+
+
+
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 809ms
+ Mean size per request: 1.31KB
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
must return `200 Success` status100
response body must include non-empty access_token100
response body must represent `Bearer` token100
returned token must expire in the future100
`access_token` persisted to collectionVariables100
Total500
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
Request Information
+ Request Method: GET
+ Request URL: https://vc.cbpsvip.gs1us.org/cbpsvip/identifiers/did:web:cbpvsvip-vc.gs1us.org
+
+
+
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 74ms
+ Mean size per request: 2.39KB
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
Status code is 200100
Issuer makes unauthenticated discovery of verifiers exchange endpoint. `verifier_exchange_endpoint` is persisted to collectionVariables100
Total200
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
Request Information
+ Request Method: POST
+ Request URL: https://vc.cbpsvip.gs1us.org/cbpsvip/presentations
+
+
+
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 69ms
+ Mean size per request: 949B
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
must return `200 Success` status100
Content-Type header is application/json100
Total200
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-Mavennet-GS1US.json b/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-Mavennet-GS1US.json new file mode 100644 index 0000000000..8531f22d63 --- /dev/null +++ b/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-Mavennet-GS1US.json @@ -0,0 +1,408 @@ +{ + "collection": { + "info": { + "_postman_id": "e6ed89ab-9b28-4bce-8769-59c1309f2fe8", + "name": "OAuth Presentations Exchange Tutorial", + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" + }, + "item": [ + { + "id": "b51ae394-2e85-48a0-b913-ff1dede6478f", + "name": "Holder gets Verifier's Token", + "request": { + "url": { + "host": [ + "{{VERIFIER_TOKEN_ENDPOINT}}" + ], + "query": [], + "variable": [] + }, + "method": "POST", + "body": { + "mode": "urlencoded", + "urlencoded": [ + { + "key": "audience", + "value": "{{VERIFIER_TOKEN_AUDIENCE}}" + }, + { + "key": "client_id", + "value": "{{VERIFIER_CLIENT_ID}}" + }, + { + "key": "client_secret", + "value": "{{VERIFIER_CLIENT_SECRET}}" + }, + { + "key": "grant_type", + "value": "client_credentials" + }, + { + "key": "scope", + "value": "{{VERIFIER_CLIENT_SCOPE}}" + } + ] + }, + "auth": { + "type": "noauth", + "noauth": [] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "564a22a0-9d9b-4e4a-8c73-9e10c64ed56d", + "type": "text/javascript", + "exec": [ + "// Token requests are expected to return a `200 Success` response code. Any", + "// other response code should trigger a failure.", + "pm.test(\"must return `200 Success` status\", function() {", + " pm.response.to.have.status(200);", + "});", + "", + "// The response should include an `access_token` value - this will be presented", + "// to authenticated API endpoints in the `Authentication` header (see the last", + "// testing code block for details on how this is persisted).", + "pm.test(\"response body must include non-empty access_token\", function () {", + " const { access_token } = pm.response.json()", + " pm.expect(access_token).to.be.a('string').that.is.not.empty;", + "});", + "", + "// The type of `access_token` returned by the token request is expected to be", + "// `Bearer`.", + "pm.test(\"response body must represent `Bearer` token\", function() {", + " const { token_type } = pm.response.json()", + " pm.expect(token_type).to.equal(\"Bearer\");", + "});", + "", + "// The returned data includes an `expires_in` field that indicates time until", + "// token expiration. Validate that this value is a whole number greater than", + "// zero, as anything less than or equal to zero means that the `access_token`", + "// is already expired.", + "pm.test(\"returned token must expire in the future\", function() {", + " const { expires_in } = pm.response.json()", + " pm.expect(expires_in).to.be.above(0);", + "});", + "", + "// The returned `access_token` value is persisted as a Postman collection", + "// variable that can be accessed by other requests in the collection by calling", + "// `pm.collectionVariables.get(\"issuer_access_token\")`.", + "pm.test(\"`access_token` persisted to collectionVariables\", function() {", + " const { access_token } = pm.response.json()", + " pm.collectionVariables.set(\"verifier_access_token\", access_token);", + "});" + ], + "_lastExecutionId": "3c45dc87-086a-40b3-ac74-fa78fcbbbc0b" + } + } + ] + }, + { + "id": "9ed786af-77c6-45e9-bf5d-94903ea3c720", + "name": "Get Verifier Organization DIDs", + "request": { + "url": { + "path": [ + "identifiers", + "{{VERIFIER_ORGANIZATION_DID_WEB}}" + ], + "host": [ + "{{VERIFIER_API_BASE_URL}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "string", + "value": "{{verifier_access_token}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "202b4882-0a7f-4259-b234-65764b5c759f", + "type": "text/javascript", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Issuer makes unauthenticated discovery of verifiers exchange endpoint. `verifier_exchange_endpoint` is persisted to collectionVariables\", function() {", + " const { service } = pm.response.json().didDocument;", + " pm.collectionVariables.set(\"verifier_exchange_endpoint\", service[0].serviceEndpoint);", + "});", + "", + "" + ], + "_lastExecutionId": "5e2ce9cd-7c45-4795-8940-e2a2e084a85c" + } + } + ], + "protocolProfileBehavior": { + "disabledSystemHeaders": {} + } + }, + { + "id": "8abd8004-511c-480f-a2cd-7ea35c3c2ff6", + "name": "Presentation", + "request": { + "url": { + "path": [ + "presentations" + ], + "host": [ + "{{verifier_exchange_endpoint}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"@context\": [\n \"https://www.w3.org/2018/credentials/v1\",\n \"https://w3id.org/traceability/v1\"\n ],\n \"type\": [\n \"VerifiablePresentation\",\n \"TraceablePresentation\"\n ],\n \"verifiableCredential\": [\n {\n \"@context\": [\n \"https://www.w3.org/2018/credentials/v1\"\n ],\n \"id\": \"urn:uuid:07aa969e-b40d-4c1b-ab46-ded252003ded\",\n \"type\": [\n \"VerifiableCredential\"\n ],\n \"issuer\": \"did:key:z6MktiSzqF9kqwdU8VkdBKx56EYzXfpgnNPUAGznpicNiWfn\",\n \"issuanceDate\": \"2010-01-01T19:23:24Z\",\n \"credentialSubject\": {\n \"id\": \"did:key:z6MktiSzqF9kqwdU8VkdBKx56EYzXfpgnNPUAGznpicNiWfn\"\n },\n \"proof\": {\n \"type\": \"Ed25519Signature2018\",\n \"created\": \"2021-10-30T19:16:30Z\",\n \"verificationMethod\": \"did:key:z6MktiSzqF9kqwdU8VkdBKx56EYzXfpgnNPUAGznpicNiWfn#z6MktiSzqF9kqwdU8VkdBKx56EYzXfpgnNPUAGznpicNiWfn\",\n \"proofPurpose\": \"assertionMethod\",\n \"jws\": \"eyJhbGciOiJFZERTQSIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19..puetBYS3pkYlYzAecBiT-WkigYAlVbslrz9wPFnk9JW4AwjrpJvcsSdZJPhZtNy_myMJUNzC_QaYyw3ni1V0BA\"\n }\n }\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "string", + "value": "{{verifier_access_token}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "c2cbab83-308d-4545-965e-ea6e613524af", + "type": "text/javascript", + "exec": [ + "", + "// The expected response code for a \"Presentations Available\" request is", + "// `200 Success`.", + "pm.test(\"must return `200 Success` status\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Content-Type header is application/json\", () => {", + " pm.expect(pm.response.headers.get('Content-Type')).to.include('application/json');", + "});" + ], + "_lastExecutionId": "925f8f05-3b00-473c-b5cc-b4e36f60756f" + } + } + ] + } + ] + }, + "run": { + "stats": { + "iterations": { + "total": 1, + "pending": 0, + "failed": 0 + }, + "items": { + "total": 3, + "pending": 0, + "failed": 0 + }, + "scripts": { + "total": 9, + "pending": 0, + "failed": 0 + }, + "prerequests": { + "total": 3, + "pending": 0, + "failed": 0 + }, + "requests": { + "total": 3, + "pending": 0, + "failed": 0 + }, + "tests": { + "total": 3, + "pending": 0, + "failed": 0 + }, + "assertions": { + "total": 9, + "pending": 0, + "failed": 0 + }, + "testScripts": { + "total": 6, + "pending": 0, + "failed": 0 + }, + "prerequestScripts": { + "total": 3, + "pending": 0, + "failed": 0 + } + }, + "timings": { + "responseAverage": 317.3333333333333, + "responseMin": 69, + "responseMax": 809, + "responseSd": 347.6668264620917, + "dnsAverage": 0, + "dnsMin": 0, + "dnsMax": 0, + "dnsSd": 0, + "firstByteAverage": 0, + "firstByteMin": 0, + "firstByteMax": 0, + "firstByteSd": 0, + "started": 1724980086366, + "completed": 1724980087426 + }, + "executions": [ + { + "id": "b51ae394-2e85-48a0-b913-ff1dede6478f", + "cursor": { + "position": 0, + "iteration": 0, + "length": 3, + "cycles": 1, + "empty": false, + "eof": false, + "bof": true, + "cr": false, + "ref": "e59a5e16-4626-4197-976e-d34e4bb1b14d", + "httpRequestId": "1bdf4e76-dac9-4a8f-9941-da657b41a74b" + }, + "item": { + "id": "b51ae394-2e85-48a0-b913-ff1dede6478f", + "name": "Holder gets Verifier's Token" + }, + "response": { + "id": "15e4efdf-da5f-416e-9b78-a83e84a4c9d3", + "status": "OK", + "code": 200, + "responseTime": 809, + "responseSize": 1339 + }, + "assertions": [ + { + "assertion": "must return `200 Success` status", + "skipped": false + }, + { + "assertion": "response body must include non-empty access_token", + "skipped": false + }, + { + "assertion": "response body must represent `Bearer` token", + "skipped": false + }, + { + "assertion": "returned token must expire in the future", + "skipped": false + }, + { + "assertion": "`access_token` persisted to collectionVariables", + "skipped": false + } + ] + }, + { + "id": "9ed786af-77c6-45e9-bf5d-94903ea3c720", + "cursor": { + "ref": "965f4453-b843-42b5-863f-28ffe591750b", + "length": 3, + "cycles": 1, + "position": 1, + "iteration": 0, + "httpRequestId": "8aba69d2-5837-4613-b1db-a72c99d7dba0" + }, + "item": { + "id": "9ed786af-77c6-45e9-bf5d-94903ea3c720", + "name": "Get Verifier Organization DIDs" + }, + "response": { + "id": "46106868-b92e-40c9-b1b4-3988fb34c367", + "status": "OK", + "code": 200, + "responseTime": 74, + "responseSize": 2450 + }, + "assertions": [ + { + "assertion": "Status code is 200", + "skipped": false + }, + { + "assertion": "Issuer makes unauthenticated discovery of verifiers exchange endpoint. `verifier_exchange_endpoint` is persisted to collectionVariables", + "skipped": false + } + ] + }, + { + "id": "8abd8004-511c-480f-a2cd-7ea35c3c2ff6", + "cursor": { + "ref": "7e404e87-5f5f-42e9-a608-425ac9d26f54", + "length": 3, + "cycles": 1, + "position": 2, + "iteration": 0, + "httpRequestId": "195a0452-8895-4506-b0d3-1e67e50726e8" + }, + "item": { + "id": "8abd8004-511c-480f-a2cd-7ea35c3c2ff6", + "name": "Presentation" + }, + "response": { + "id": "e080044c-3ed6-4b22-84f0-8754986c8f8a", + "status": "OK", + "code": 200, + "responseTime": 69, + "responseSize": 949 + }, + "assertions": [ + { + "assertion": "must return `200 Success` status", + "skipped": false + }, + { + "assertion": "Content-Type header is application/json", + "skipped": false + } + ] + } + ] + } +} \ No newline at end of file diff --git a/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-Mavennet-mesur.io.html b/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-Mavennet-mesur.io.html new file mode 100644 index 0000000000..07a57e011c --- /dev/null +++ b/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-Mavennet-mesur.io.html @@ -0,0 +1,1372 @@ + + + + + Newman Summary Report + + + + + + + + + +
+
+ + + +
+
+
+ +
+
+
+
+

Newman Run Dashboard

+
Friday, 30 August 2024 01:08:08
+
+
+
+
+
+ +
+
Total Iterations
+

1

+
+
+
+
+
+
+
+ +
+
Total Assertions
+

9

+
+
+
+
+
+
+
+ +
+
Total Failed Tests
+

0

+
+
+
+
+
+
+
+ +
+
Total Skipped Tests
+

0

+
+
+
+
+
+
+
+
+
+
+
+
File Information
+ Collection: OAuth Presentations Exchange Tutorial
+ + +
+
+
+
+
+
+
+
+
Timings and Data
+ Total run duration: 743ms
+ Total data received: 2.51KB
+ Average response time: 211ms
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary ItemTotalFailed
Requests30
Prerequest Scripts30
Test Scripts60
Assertions90
Skipped Tests0-
+
+
+
+
+
+
+
+
+
+
+ + +
+

There are no failed tests



+
+
+ +
+ + +
+

There are no skipped tests



+
+
+
+ + + +
+ + +
+ +
+
1 Iteration available to view
+ + +
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
Request Information
+ Request Method: POST
+ Request URL: https://mesur.auth0.com/oauth/token
+
+
+
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 301ms
+ Mean size per request: 1.2KB
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
must return `200 Success` status100
response body must include non-empty access_token100
response body must represent `Bearer` token100
returned token must expire in the future100
`access_token` persisted to collectionVariables100
Total500
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
Request Information
+ Request Method: GET
+ Request URL: https://vc.mesur.io/v1/identifiers/did:web:vc.mesur.io:v1
+
+
+
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 277ms
+ Mean size per request: 1.31KB
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
Status code is 200100
Issuer makes unauthenticated discovery of verifiers exchange endpoint. `verifier_exchange_endpoint` is persisted to collectionVariables100
Total200
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
Request Information
+ Request Method: POST
+ Request URL: https://vc.mesur.io/v1/presentations
+
+
+
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 56ms
+ Mean size per request: 3B
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
must return `200 Success` status100
Content-Type header is application/json100
Total200
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-Mavennet-mesur.io.json b/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-Mavennet-mesur.io.json new file mode 100644 index 0000000000..ad145f1ff1 --- /dev/null +++ b/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-Mavennet-mesur.io.json @@ -0,0 +1,408 @@ +{ + "collection": { + "info": { + "_postman_id": "e6ed89ab-9b28-4bce-8769-59c1309f2fe8", + "name": "OAuth Presentations Exchange Tutorial", + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" + }, + "item": [ + { + "id": "264a6e72-ea99-44f3-8d32-aceebec6619b", + "name": "Holder gets Verifier's Token", + "request": { + "url": { + "host": [ + "{{VERIFIER_TOKEN_ENDPOINT}}" + ], + "query": [], + "variable": [] + }, + "method": "POST", + "body": { + "mode": "urlencoded", + "urlencoded": [ + { + "key": "audience", + "value": "{{VERIFIER_TOKEN_AUDIENCE}}" + }, + { + "key": "client_id", + "value": "{{VERIFIER_CLIENT_ID}}" + }, + { + "key": "client_secret", + "value": "{{VERIFIER_CLIENT_SECRET}}" + }, + { + "key": "grant_type", + "value": "client_credentials" + }, + { + "key": "scope", + "value": "{{VERIFIER_CLIENT_SCOPE}}" + } + ] + }, + "auth": { + "type": "noauth", + "noauth": [] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "755e28e8-2303-40dd-a780-181ff430e1e1", + "type": "text/javascript", + "exec": [ + "// Token requests are expected to return a `200 Success` response code. Any", + "// other response code should trigger a failure.", + "pm.test(\"must return `200 Success` status\", function() {", + " pm.response.to.have.status(200);", + "});", + "", + "// The response should include an `access_token` value - this will be presented", + "// to authenticated API endpoints in the `Authentication` header (see the last", + "// testing code block for details on how this is persisted).", + "pm.test(\"response body must include non-empty access_token\", function () {", + " const { access_token } = pm.response.json()", + " pm.expect(access_token).to.be.a('string').that.is.not.empty;", + "});", + "", + "// The type of `access_token` returned by the token request is expected to be", + "// `Bearer`.", + "pm.test(\"response body must represent `Bearer` token\", function() {", + " const { token_type } = pm.response.json()", + " pm.expect(token_type).to.equal(\"Bearer\");", + "});", + "", + "// The returned data includes an `expires_in` field that indicates time until", + "// token expiration. Validate that this value is a whole number greater than", + "// zero, as anything less than or equal to zero means that the `access_token`", + "// is already expired.", + "pm.test(\"returned token must expire in the future\", function() {", + " const { expires_in } = pm.response.json()", + " pm.expect(expires_in).to.be.above(0);", + "});", + "", + "// The returned `access_token` value is persisted as a Postman collection", + "// variable that can be accessed by other requests in the collection by calling", + "// `pm.collectionVariables.get(\"issuer_access_token\")`.", + "pm.test(\"`access_token` persisted to collectionVariables\", function() {", + " const { access_token } = pm.response.json()", + " pm.collectionVariables.set(\"verifier_access_token\", access_token);", + "});" + ], + "_lastExecutionId": "7b12d317-a5ba-4dc8-a28b-24ca2724432f" + } + } + ] + }, + { + "id": "d2093cf4-a687-49b1-9080-fc041a22d9ca", + "name": "Get Verifier Organization DIDs", + "request": { + "url": { + "path": [ + "identifiers", + "{{VERIFIER_ORGANIZATION_DID_WEB}}" + ], + "host": [ + "{{VERIFIER_API_BASE_URL}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "string", + "value": "{{verifier_access_token}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "d19bf97a-36f1-4f79-aacf-062729580dea", + "type": "text/javascript", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Issuer makes unauthenticated discovery of verifiers exchange endpoint. `verifier_exchange_endpoint` is persisted to collectionVariables\", function() {", + " const { service } = pm.response.json().didDocument;", + " pm.collectionVariables.set(\"verifier_exchange_endpoint\", service[0].serviceEndpoint);", + "});", + "", + "" + ], + "_lastExecutionId": "6c73613a-46db-4297-8d50-193557ac15f2" + } + } + ], + "protocolProfileBehavior": { + "disabledSystemHeaders": {} + } + }, + { + "id": "fc1456f4-e1bd-4b4d-8a04-fd3c8ea38921", + "name": "Presentation", + "request": { + "url": { + "path": [ + "presentations" + ], + "host": [ + "{{verifier_exchange_endpoint}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"@context\": [\n \"https://www.w3.org/2018/credentials/v1\",\n \"https://w3id.org/traceability/v1\"\n ],\n \"type\": [\n \"VerifiablePresentation\",\n \"TraceablePresentation\"\n ],\n \"verifiableCredential\": [\n {\n \"@context\": [\n \"https://www.w3.org/2018/credentials/v1\"\n ],\n \"id\": \"urn:uuid:07aa969e-b40d-4c1b-ab46-ded252003ded\",\n \"type\": [\n \"VerifiableCredential\"\n ],\n \"issuer\": \"did:key:z6MktiSzqF9kqwdU8VkdBKx56EYzXfpgnNPUAGznpicNiWfn\",\n \"issuanceDate\": \"2010-01-01T19:23:24Z\",\n \"credentialSubject\": {\n \"id\": \"did:key:z6MktiSzqF9kqwdU8VkdBKx56EYzXfpgnNPUAGznpicNiWfn\"\n },\n \"proof\": {\n \"type\": \"Ed25519Signature2018\",\n \"created\": \"2021-10-30T19:16:30Z\",\n \"verificationMethod\": \"did:key:z6MktiSzqF9kqwdU8VkdBKx56EYzXfpgnNPUAGznpicNiWfn#z6MktiSzqF9kqwdU8VkdBKx56EYzXfpgnNPUAGznpicNiWfn\",\n \"proofPurpose\": \"assertionMethod\",\n \"jws\": \"eyJhbGciOiJFZERTQSIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19..puetBYS3pkYlYzAecBiT-WkigYAlVbslrz9wPFnk9JW4AwjrpJvcsSdZJPhZtNy_myMJUNzC_QaYyw3ni1V0BA\"\n }\n }\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "string", + "value": "{{verifier_access_token}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "2d4211a6-7b73-417e-885b-dfaaadeede42", + "type": "text/javascript", + "exec": [ + "", + "// The expected response code for a \"Presentations Available\" request is", + "// `200 Success`.", + "pm.test(\"must return `200 Success` status\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Content-Type header is application/json\", () => {", + " pm.expect(pm.response.headers.get('Content-Type')).to.include('application/json');", + "});" + ], + "_lastExecutionId": "7f9f93ff-8c4d-4da0-b1ce-298f351727f6" + } + } + ] + } + ] + }, + "run": { + "stats": { + "iterations": { + "total": 1, + "pending": 0, + "failed": 0 + }, + "items": { + "total": 3, + "pending": 0, + "failed": 0 + }, + "scripts": { + "total": 9, + "pending": 0, + "failed": 0 + }, + "prerequests": { + "total": 3, + "pending": 0, + "failed": 0 + }, + "requests": { + "total": 3, + "pending": 0, + "failed": 0 + }, + "tests": { + "total": 3, + "pending": 0, + "failed": 0 + }, + "assertions": { + "total": 9, + "pending": 0, + "failed": 0 + }, + "testScripts": { + "total": 6, + "pending": 0, + "failed": 0 + }, + "prerequestScripts": { + "total": 3, + "pending": 0, + "failed": 0 + } + }, + "timings": { + "responseAverage": 211.33333333333334, + "responseMin": 56, + "responseMax": 301, + "responseSd": 110.27339761802129, + "dnsAverage": 0, + "dnsMin": 0, + "dnsMax": 0, + "dnsSd": 0, + "firstByteAverage": 0, + "firstByteMin": 0, + "firstByteMax": 0, + "firstByteSd": 0, + "started": 1724980087591, + "completed": 1724980088334 + }, + "executions": [ + { + "id": "264a6e72-ea99-44f3-8d32-aceebec6619b", + "cursor": { + "position": 0, + "iteration": 0, + "length": 3, + "cycles": 1, + "empty": false, + "eof": false, + "bof": true, + "cr": false, + "ref": "aaa24972-d91f-4d53-b7cd-ca097ccafd87", + "httpRequestId": "7542ab28-ce6f-4225-a9cb-99f0072f5059" + }, + "item": { + "id": "264a6e72-ea99-44f3-8d32-aceebec6619b", + "name": "Holder gets Verifier's Token" + }, + "response": { + "id": "87c55b69-6bda-467a-93a6-d1d7963ea8c9", + "status": "OK", + "code": 200, + "responseTime": 301, + "responseSize": 1225 + }, + "assertions": [ + { + "assertion": "must return `200 Success` status", + "skipped": false + }, + { + "assertion": "response body must include non-empty access_token", + "skipped": false + }, + { + "assertion": "response body must represent `Bearer` token", + "skipped": false + }, + { + "assertion": "returned token must expire in the future", + "skipped": false + }, + { + "assertion": "`access_token` persisted to collectionVariables", + "skipped": false + } + ] + }, + { + "id": "d2093cf4-a687-49b1-9080-fc041a22d9ca", + "cursor": { + "ref": "5fa5cfdd-9d82-4f1b-9689-ead0a753ac14", + "length": 3, + "cycles": 1, + "position": 1, + "iteration": 0, + "httpRequestId": "5e05d74b-dc62-4bc6-a816-ca38749af166" + }, + "item": { + "id": "d2093cf4-a687-49b1-9080-fc041a22d9ca", + "name": "Get Verifier Organization DIDs" + }, + "response": { + "id": "865c3290-a6e6-4b6b-9ad3-d07ffb0718b1", + "status": "OK", + "code": 200, + "responseTime": 277, + "responseSize": 1345 + }, + "assertions": [ + { + "assertion": "Status code is 200", + "skipped": false + }, + { + "assertion": "Issuer makes unauthenticated discovery of verifiers exchange endpoint. `verifier_exchange_endpoint` is persisted to collectionVariables", + "skipped": false + } + ] + }, + { + "id": "fc1456f4-e1bd-4b4d-8a04-fd3c8ea38921", + "cursor": { + "ref": "e9720bc6-1f3c-481e-bdf9-0eddba28bb7a", + "length": 3, + "cycles": 1, + "position": 2, + "iteration": 0, + "httpRequestId": "4380ef63-a762-4806-8a2c-2adc71ad7ac2" + }, + "item": { + "id": "fc1456f4-e1bd-4b4d-8a04-fd3c8ea38921", + "name": "Presentation" + }, + "response": { + "id": "071135c6-36ec-4b4e-ba46-b616df31ac50", + "status": "OK", + "code": 200, + "responseTime": 56, + "responseSize": 3 + }, + "assertions": [ + { + "assertion": "must return `200 Success` status", + "skipped": false + }, + { + "assertion": "Content-Type header is application/json", + "skipped": false + } + ] + } + ] + } +} \ No newline at end of file diff --git a/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-mesur.io-BCGov.html b/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-mesur.io-BCGov.html new file mode 100644 index 0000000000..32632f65a0 --- /dev/null +++ b/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-mesur.io-BCGov.html @@ -0,0 +1,1372 @@ + + + + + Newman Summary Report + + + + + + + + + +
+
+ + + +
+
+
+ +
+
+
+
+

Newman Run Dashboard

+
Friday, 30 August 2024 01:08:06
+
+
+
+
+
+ +
+
Total Iterations
+

1

+
+
+
+
+
+
+
+ +
+
Total Assertions
+

9

+
+
+
+
+
+
+
+ +
+
Total Failed Tests
+

0

+
+
+
+
+
+
+
+ +
+
Total Skipped Tests
+

0

+
+
+
+
+
+
+
+
+
+
+
+
File Information
+ Collection: OAuth Presentations Exchange Tutorial
+ + +
+
+
+
+
+
+
+
+
Timings and Data
+ Total run duration: 3.7s
+ Total data received: 1.25KB
+ Average response time: 1202ms
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary ItemTotalFailed
Requests30
Prerequest Scripts30
Test Scripts60
Assertions90
Skipped Tests0-
+
+
+
+
+
+
+
+
+
+
+ + +
+

There are no failed tests



+
+
+ +
+ + +
+

There are no skipped tests



+
+
+
+ + + +
+ + +
+ +
+
1 Iteration available to view
+ + +
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
Request Information
+ Request Method: POST
+ Request URL: https://traceability.interop.vonx.io/oauth/token
+
+
+
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 499ms
+ Mean size per request: 237B
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
must return `200 Success` status100
response body must include non-empty access_token100
response body must represent `Bearer` token100
returned token must expire in the future100
`access_token` persisted to collectionVariables100
Total500
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+ +
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 2.9s
+ Mean size per request: 1.02KB
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
Status code is 200100
Issuer makes unauthenticated discovery of verifiers exchange endpoint. `verifier_exchange_endpoint` is persisted to collectionVariables100
Total200
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 173ms
+ Mean size per request: 2B
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
must return `200 Success` status100
Content-Type header is application/json100
Total200
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-mesur.io-BCGov.json b/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-mesur.io-BCGov.json new file mode 100644 index 0000000000..d36647f993 --- /dev/null +++ b/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-mesur.io-BCGov.json @@ -0,0 +1,408 @@ +{ + "collection": { + "info": { + "_postman_id": "e6ed89ab-9b28-4bce-8769-59c1309f2fe8", + "name": "OAuth Presentations Exchange Tutorial", + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" + }, + "item": [ + { + "id": "1aae0936-af10-4cb1-8a90-e128397d39ef", + "name": "Holder gets Verifier's Token", + "request": { + "url": { + "host": [ + "{{VERIFIER_TOKEN_ENDPOINT}}" + ], + "query": [], + "variable": [] + }, + "method": "POST", + "body": { + "mode": "urlencoded", + "urlencoded": [ + { + "key": "audience", + "value": "{{VERIFIER_TOKEN_AUDIENCE}}" + }, + { + "key": "client_id", + "value": "{{VERIFIER_CLIENT_ID}}" + }, + { + "key": "client_secret", + "value": "{{VERIFIER_CLIENT_SECRET}}" + }, + { + "key": "grant_type", + "value": "client_credentials" + }, + { + "key": "scope", + "value": "{{VERIFIER_CLIENT_SCOPE}}" + } + ] + }, + "auth": { + "type": "noauth", + "noauth": [] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "94896ae8-a052-4795-9d8f-c333da498f6c", + "type": "text/javascript", + "exec": [ + "// Token requests are expected to return a `200 Success` response code. Any", + "// other response code should trigger a failure.", + "pm.test(\"must return `200 Success` status\", function() {", + " pm.response.to.have.status(200);", + "});", + "", + "// The response should include an `access_token` value - this will be presented", + "// to authenticated API endpoints in the `Authentication` header (see the last", + "// testing code block for details on how this is persisted).", + "pm.test(\"response body must include non-empty access_token\", function () {", + " const { access_token } = pm.response.json()", + " pm.expect(access_token).to.be.a('string').that.is.not.empty;", + "});", + "", + "// The type of `access_token` returned by the token request is expected to be", + "// `Bearer`.", + "pm.test(\"response body must represent `Bearer` token\", function() {", + " const { token_type } = pm.response.json()", + " pm.expect(token_type).to.equal(\"Bearer\");", + "});", + "", + "// The returned data includes an `expires_in` field that indicates time until", + "// token expiration. Validate that this value is a whole number greater than", + "// zero, as anything less than or equal to zero means that the `access_token`", + "// is already expired.", + "pm.test(\"returned token must expire in the future\", function() {", + " const { expires_in } = pm.response.json()", + " pm.expect(expires_in).to.be.above(0);", + "});", + "", + "// The returned `access_token` value is persisted as a Postman collection", + "// variable that can be accessed by other requests in the collection by calling", + "// `pm.collectionVariables.get(\"issuer_access_token\")`.", + "pm.test(\"`access_token` persisted to collectionVariables\", function() {", + " const { access_token } = pm.response.json()", + " pm.collectionVariables.set(\"verifier_access_token\", access_token);", + "});" + ], + "_lastExecutionId": "646144b5-56d3-467a-8415-de9844eaf9a9" + } + } + ] + }, + { + "id": "dad0d16e-ac86-4e59-ba33-76574da59200", + "name": "Get Verifier Organization DIDs", + "request": { + "url": { + "path": [ + "identifiers", + "{{VERIFIER_ORGANIZATION_DID_WEB}}" + ], + "host": [ + "{{VERIFIER_API_BASE_URL}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "string", + "value": "{{verifier_access_token}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "4521f849-8b73-457f-97db-e6066c39da14", + "type": "text/javascript", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Issuer makes unauthenticated discovery of verifiers exchange endpoint. `verifier_exchange_endpoint` is persisted to collectionVariables\", function() {", + " const { service } = pm.response.json().didDocument;", + " pm.collectionVariables.set(\"verifier_exchange_endpoint\", service[0].serviceEndpoint);", + "});", + "", + "" + ], + "_lastExecutionId": "dd54b372-a838-480a-b573-dd655aed95c8" + } + } + ], + "protocolProfileBehavior": { + "disabledSystemHeaders": {} + } + }, + { + "id": "64a13fc6-19c8-4c08-b988-c122625f7a23", + "name": "Presentation", + "request": { + "url": { + "path": [ + "presentations" + ], + "host": [ + "{{verifier_exchange_endpoint}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"@context\": [\n \"https://www.w3.org/2018/credentials/v1\",\n \"https://w3id.org/traceability/v1\"\n ],\n \"type\": [\n \"VerifiablePresentation\",\n \"TraceablePresentation\"\n ],\n \"verifiableCredential\": [\n {\n \"@context\": [\n \"https://www.w3.org/2018/credentials/v1\"\n ],\n \"id\": \"urn:uuid:07aa969e-b40d-4c1b-ab46-ded252003ded\",\n \"type\": [\n \"VerifiableCredential\"\n ],\n \"issuer\": \"did:key:z6MktiSzqF9kqwdU8VkdBKx56EYzXfpgnNPUAGznpicNiWfn\",\n \"issuanceDate\": \"2010-01-01T19:23:24Z\",\n \"credentialSubject\": {\n \"id\": \"did:key:z6MktiSzqF9kqwdU8VkdBKx56EYzXfpgnNPUAGznpicNiWfn\"\n },\n \"proof\": {\n \"type\": \"Ed25519Signature2018\",\n \"created\": \"2021-10-30T19:16:30Z\",\n \"verificationMethod\": \"did:key:z6MktiSzqF9kqwdU8VkdBKx56EYzXfpgnNPUAGznpicNiWfn#z6MktiSzqF9kqwdU8VkdBKx56EYzXfpgnNPUAGznpicNiWfn\",\n \"proofPurpose\": \"assertionMethod\",\n \"jws\": \"eyJhbGciOiJFZERTQSIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19..puetBYS3pkYlYzAecBiT-WkigYAlVbslrz9wPFnk9JW4AwjrpJvcsSdZJPhZtNy_myMJUNzC_QaYyw3ni1V0BA\"\n }\n }\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "string", + "value": "{{verifier_access_token}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "84a0a561-7b2b-440e-9ef3-441e6e236af8", + "type": "text/javascript", + "exec": [ + "", + "// The expected response code for a \"Presentations Available\" request is", + "// `200 Success`.", + "pm.test(\"must return `200 Success` status\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Content-Type header is application/json\", () => {", + " pm.expect(pm.response.headers.get('Content-Type')).to.include('application/json');", + "});" + ], + "_lastExecutionId": "1623f404-7be7-4287-b921-79b9239af4a8" + } + } + ] + } + ] + }, + "run": { + "stats": { + "iterations": { + "total": 1, + "pending": 0, + "failed": 0 + }, + "items": { + "total": 3, + "pending": 0, + "failed": 0 + }, + "scripts": { + "total": 9, + "pending": 0, + "failed": 0 + }, + "prerequests": { + "total": 3, + "pending": 0, + "failed": 0 + }, + "requests": { + "total": 3, + "pending": 0, + "failed": 0 + }, + "tests": { + "total": 3, + "pending": 0, + "failed": 0 + }, + "assertions": { + "total": 9, + "pending": 0, + "failed": 0 + }, + "testScripts": { + "total": 6, + "pending": 0, + "failed": 0 + }, + "prerequestScripts": { + "total": 3, + "pending": 0, + "failed": 0 + } + }, + "timings": { + "responseAverage": 1202.6666666666667, + "responseMin": 173, + "responseMax": 2936, + "responseSd": 1232.8563942685657, + "dnsAverage": 0, + "dnsMin": 0, + "dnsMax": 0, + "dnsSd": 0, + "firstByteAverage": 0, + "firstByteMin": 0, + "firstByteMax": 0, + "firstByteSd": 0, + "started": 1724980082275, + "completed": 1724980085990 + }, + "executions": [ + { + "id": "1aae0936-af10-4cb1-8a90-e128397d39ef", + "cursor": { + "position": 0, + "iteration": 0, + "length": 3, + "cycles": 1, + "empty": false, + "eof": false, + "bof": true, + "cr": false, + "ref": "bb6cf9bd-ee88-4e45-82d7-320e8764a934", + "httpRequestId": "fbfa8477-d120-4cb0-b9eb-cb061b542d46" + }, + "item": { + "id": "1aae0936-af10-4cb1-8a90-e128397d39ef", + "name": "Holder gets Verifier's Token" + }, + "response": { + "id": "f3246204-0abf-47ce-86b1-a0e1ba34a800", + "status": "OK", + "code": 200, + "responseTime": 499, + "responseSize": 237 + }, + "assertions": [ + { + "assertion": "must return `200 Success` status", + "skipped": false + }, + { + "assertion": "response body must include non-empty access_token", + "skipped": false + }, + { + "assertion": "response body must represent `Bearer` token", + "skipped": false + }, + { + "assertion": "returned token must expire in the future", + "skipped": false + }, + { + "assertion": "`access_token` persisted to collectionVariables", + "skipped": false + } + ] + }, + { + "id": "dad0d16e-ac86-4e59-ba33-76574da59200", + "cursor": { + "ref": "e9e8dbdc-924d-4af5-adfb-1d6fdcf86ce9", + "length": 3, + "cycles": 1, + "position": 1, + "iteration": 0, + "httpRequestId": "4784031c-9cbd-4c32-b6d6-6577ab832bb7" + }, + "item": { + "id": "dad0d16e-ac86-4e59-ba33-76574da59200", + "name": "Get Verifier Organization DIDs" + }, + "response": { + "id": "673c74c7-8f9e-4ecc-9dd6-1bedae158c87", + "status": "OK", + "code": 200, + "responseTime": 2936, + "responseSize": 1040 + }, + "assertions": [ + { + "assertion": "Status code is 200", + "skipped": false + }, + { + "assertion": "Issuer makes unauthenticated discovery of verifiers exchange endpoint. `verifier_exchange_endpoint` is persisted to collectionVariables", + "skipped": false + } + ] + }, + { + "id": "64a13fc6-19c8-4c08-b988-c122625f7a23", + "cursor": { + "ref": "f606337a-6372-446b-9a3b-fa4254e605b7", + "length": 3, + "cycles": 1, + "position": 2, + "iteration": 0, + "httpRequestId": "e1ef57a2-abce-4753-a38b-b841af1bc504" + }, + "item": { + "id": "64a13fc6-19c8-4c08-b988-c122625f7a23", + "name": "Presentation" + }, + "response": { + "id": "b7d282c0-4cc3-4192-a350-3b9e967693f7", + "status": "OK", + "code": 200, + "responseTime": 173, + "responseSize": 2 + }, + "assertions": [ + { + "assertion": "must return `200 Success` status", + "skipped": false + }, + { + "assertion": "Content-Type header is application/json", + "skipped": false + } + ] + } + ] + } +} \ No newline at end of file diff --git a/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-mesur.io-GS1US.html b/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-mesur.io-GS1US.html new file mode 100644 index 0000000000..7138d1feff --- /dev/null +++ b/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-mesur.io-GS1US.html @@ -0,0 +1,1372 @@ + + + + + Newman Summary Report + + + + + + + + + +
+
+ + + +
+
+
+ +
+
+
+
+

Newman Run Dashboard

+
Friday, 30 August 2024 01:08:03
+
+
+
+
+
+ +
+
Total Iterations
+

1

+
+
+
+
+
+
+
+ +
+
Total Assertions
+

9

+
+
+
+
+
+
+
+ +
+
Total Failed Tests
+

0

+
+
+
+
+
+
+
+ +
+
Total Skipped Tests
+

0

+
+
+
+
+
+
+
+
+
+
+
+
File Information
+ Collection: OAuth Presentations Exchange Tutorial
+ + +
+
+
+
+
+
+
+
+
Timings and Data
+ Total run duration: 847ms
+ Total data received: 4.63KB
+ Average response time: 245ms
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary ItemTotalFailed
Requests30
Prerequest Scripts30
Test Scripts60
Assertions90
Skipped Tests0-
+
+
+
+
+
+
+
+
+
+
+ + +
+

There are no failed tests



+
+
+ +
+ + +
+

There are no skipped tests



+
+
+
+ + + +
+ + +
+ +
+
1 Iteration available to view
+ + +
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
Request Information
+ Request Method: POST
+ Request URL: https://vc.cbpsvip.gs1us.org/cbpsvip/oauth/token/e5e65807-3d2a-4f67-a262-72f255868da0
+
+
+
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 653ms
+ Mean size per request: 1.31KB
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
must return `200 Success` status100
response body must include non-empty access_token100
response body must represent `Bearer` token100
returned token must expire in the future100
`access_token` persisted to collectionVariables100
Total500
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
Request Information
+ Request Method: GET
+ Request URL: https://vc.cbpsvip.gs1us.org/cbpsvip/identifiers/did:web:cbpvsvip-vc.gs1us.org
+
+
+
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 39ms
+ Mean size per request: 2.39KB
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
Status code is 200100
Issuer makes unauthenticated discovery of verifiers exchange endpoint. `verifier_exchange_endpoint` is persisted to collectionVariables100
Total200
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
Request Information
+ Request Method: POST
+ Request URL: https://vc.cbpsvip.gs1us.org/cbpsvip/presentations
+
+
+
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 45ms
+ Mean size per request: 951B
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
must return `200 Success` status100
Content-Type header is application/json100
Total200
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-mesur.io-GS1US.json b/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-mesur.io-GS1US.json new file mode 100644 index 0000000000..a12a6c1074 --- /dev/null +++ b/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-mesur.io-GS1US.json @@ -0,0 +1,408 @@ +{ + "collection": { + "info": { + "_postman_id": "e6ed89ab-9b28-4bce-8769-59c1309f2fe8", + "name": "OAuth Presentations Exchange Tutorial", + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" + }, + "item": [ + { + "id": "b2fcef98-d503-4318-a68e-0f3a295572bc", + "name": "Holder gets Verifier's Token", + "request": { + "url": { + "host": [ + "{{VERIFIER_TOKEN_ENDPOINT}}" + ], + "query": [], + "variable": [] + }, + "method": "POST", + "body": { + "mode": "urlencoded", + "urlencoded": [ + { + "key": "audience", + "value": "{{VERIFIER_TOKEN_AUDIENCE}}" + }, + { + "key": "client_id", + "value": "{{VERIFIER_CLIENT_ID}}" + }, + { + "key": "client_secret", + "value": "{{VERIFIER_CLIENT_SECRET}}" + }, + { + "key": "grant_type", + "value": "client_credentials" + }, + { + "key": "scope", + "value": "{{VERIFIER_CLIENT_SCOPE}}" + } + ] + }, + "auth": { + "type": "noauth", + "noauth": [] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "a8212a42-8357-4048-b9e2-cbf35d6ec020", + "type": "text/javascript", + "exec": [ + "// Token requests are expected to return a `200 Success` response code. Any", + "// other response code should trigger a failure.", + "pm.test(\"must return `200 Success` status\", function() {", + " pm.response.to.have.status(200);", + "});", + "", + "// The response should include an `access_token` value - this will be presented", + "// to authenticated API endpoints in the `Authentication` header (see the last", + "// testing code block for details on how this is persisted).", + "pm.test(\"response body must include non-empty access_token\", function () {", + " const { access_token } = pm.response.json()", + " pm.expect(access_token).to.be.a('string').that.is.not.empty;", + "});", + "", + "// The type of `access_token` returned by the token request is expected to be", + "// `Bearer`.", + "pm.test(\"response body must represent `Bearer` token\", function() {", + " const { token_type } = pm.response.json()", + " pm.expect(token_type).to.equal(\"Bearer\");", + "});", + "", + "// The returned data includes an `expires_in` field that indicates time until", + "// token expiration. Validate that this value is a whole number greater than", + "// zero, as anything less than or equal to zero means that the `access_token`", + "// is already expired.", + "pm.test(\"returned token must expire in the future\", function() {", + " const { expires_in } = pm.response.json()", + " pm.expect(expires_in).to.be.above(0);", + "});", + "", + "// The returned `access_token` value is persisted as a Postman collection", + "// variable that can be accessed by other requests in the collection by calling", + "// `pm.collectionVariables.get(\"issuer_access_token\")`.", + "pm.test(\"`access_token` persisted to collectionVariables\", function() {", + " const { access_token } = pm.response.json()", + " pm.collectionVariables.set(\"verifier_access_token\", access_token);", + "});" + ], + "_lastExecutionId": "193f20fe-4b9c-4a01-ace6-87ce4713921b" + } + } + ] + }, + { + "id": "08c412c8-95d7-4cb6-9b36-89a10337d383", + "name": "Get Verifier Organization DIDs", + "request": { + "url": { + "path": [ + "identifiers", + "{{VERIFIER_ORGANIZATION_DID_WEB}}" + ], + "host": [ + "{{VERIFIER_API_BASE_URL}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "string", + "value": "{{verifier_access_token}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "2da01a74-d518-4990-a6ea-7fa455a1a307", + "type": "text/javascript", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Issuer makes unauthenticated discovery of verifiers exchange endpoint. `verifier_exchange_endpoint` is persisted to collectionVariables\", function() {", + " const { service } = pm.response.json().didDocument;", + " pm.collectionVariables.set(\"verifier_exchange_endpoint\", service[0].serviceEndpoint);", + "});", + "", + "" + ], + "_lastExecutionId": "91b3282e-9095-44ad-b3ea-a11586075d55" + } + } + ], + "protocolProfileBehavior": { + "disabledSystemHeaders": {} + } + }, + { + "id": "cddabc1e-53c5-48ae-b55f-ef10c7004d97", + "name": "Presentation", + "request": { + "url": { + "path": [ + "presentations" + ], + "host": [ + "{{verifier_exchange_endpoint}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"@context\": [\n \"https://www.w3.org/2018/credentials/v1\",\n \"https://w3id.org/traceability/v1\"\n ],\n \"type\": [\n \"VerifiablePresentation\",\n \"TraceablePresentation\"\n ],\n \"verifiableCredential\": [\n {\n \"@context\": [\n \"https://www.w3.org/2018/credentials/v1\"\n ],\n \"id\": \"urn:uuid:07aa969e-b40d-4c1b-ab46-ded252003ded\",\n \"type\": [\n \"VerifiableCredential\"\n ],\n \"issuer\": \"did:key:z6MktiSzqF9kqwdU8VkdBKx56EYzXfpgnNPUAGznpicNiWfn\",\n \"issuanceDate\": \"2010-01-01T19:23:24Z\",\n \"credentialSubject\": {\n \"id\": \"did:key:z6MktiSzqF9kqwdU8VkdBKx56EYzXfpgnNPUAGznpicNiWfn\"\n },\n \"proof\": {\n \"type\": \"Ed25519Signature2018\",\n \"created\": \"2021-10-30T19:16:30Z\",\n \"verificationMethod\": \"did:key:z6MktiSzqF9kqwdU8VkdBKx56EYzXfpgnNPUAGznpicNiWfn#z6MktiSzqF9kqwdU8VkdBKx56EYzXfpgnNPUAGznpicNiWfn\",\n \"proofPurpose\": \"assertionMethod\",\n \"jws\": \"eyJhbGciOiJFZERTQSIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19..puetBYS3pkYlYzAecBiT-WkigYAlVbslrz9wPFnk9JW4AwjrpJvcsSdZJPhZtNy_myMJUNzC_QaYyw3ni1V0BA\"\n }\n }\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "string", + "value": "{{verifier_access_token}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "82a7a235-64f0-4dcb-ab5d-651eed6ed56d", + "type": "text/javascript", + "exec": [ + "", + "// The expected response code for a \"Presentations Available\" request is", + "// `200 Success`.", + "pm.test(\"must return `200 Success` status\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Content-Type header is application/json\", () => {", + " pm.expect(pm.response.headers.get('Content-Type')).to.include('application/json');", + "});" + ], + "_lastExecutionId": "ac7f1028-abfd-4d89-9ae7-bde49099be25" + } + } + ] + } + ] + }, + "run": { + "stats": { + "iterations": { + "total": 1, + "pending": 0, + "failed": 0 + }, + "items": { + "total": 3, + "pending": 0, + "failed": 0 + }, + "scripts": { + "total": 9, + "pending": 0, + "failed": 0 + }, + "prerequests": { + "total": 3, + "pending": 0, + "failed": 0 + }, + "requests": { + "total": 3, + "pending": 0, + "failed": 0 + }, + "tests": { + "total": 3, + "pending": 0, + "failed": 0 + }, + "assertions": { + "total": 9, + "pending": 0, + "failed": 0 + }, + "testScripts": { + "total": 6, + "pending": 0, + "failed": 0 + }, + "prerequestScripts": { + "total": 3, + "pending": 0, + "failed": 0 + } + }, + "timings": { + "responseAverage": 245.66666666666666, + "responseMin": 39, + "responseMax": 653, + "responseSd": 288.0385776631704, + "dnsAverage": 0, + "dnsMin": 0, + "dnsMax": 0, + "dnsSd": 0, + "firstByteAverage": 0, + "firstByteMin": 0, + "firstByteMax": 0, + "firstByteSd": 0, + "started": 1724980082745, + "completed": 1724980083592 + }, + "executions": [ + { + "id": "b2fcef98-d503-4318-a68e-0f3a295572bc", + "cursor": { + "position": 0, + "iteration": 0, + "length": 3, + "cycles": 1, + "empty": false, + "eof": false, + "bof": true, + "cr": false, + "ref": "5163ffec-23e3-4c60-8d8e-2f37631e740c", + "httpRequestId": "3d75e6d1-cc42-46eb-816f-b14a82f17b60" + }, + "item": { + "id": "b2fcef98-d503-4318-a68e-0f3a295572bc", + "name": "Holder gets Verifier's Token" + }, + "response": { + "id": "05eb55cc-5f65-499c-9151-b35132caae6e", + "status": "OK", + "code": 200, + "responseTime": 653, + "responseSize": 1339 + }, + "assertions": [ + { + "assertion": "must return `200 Success` status", + "skipped": false + }, + { + "assertion": "response body must include non-empty access_token", + "skipped": false + }, + { + "assertion": "response body must represent `Bearer` token", + "skipped": false + }, + { + "assertion": "returned token must expire in the future", + "skipped": false + }, + { + "assertion": "`access_token` persisted to collectionVariables", + "skipped": false + } + ] + }, + { + "id": "08c412c8-95d7-4cb6-9b36-89a10337d383", + "cursor": { + "ref": "5ffce83b-55c6-4407-896f-694d89375113", + "length": 3, + "cycles": 1, + "position": 1, + "iteration": 0, + "httpRequestId": "8a02b783-51ec-4097-9c14-38e08bb9e4b3" + }, + "item": { + "id": "08c412c8-95d7-4cb6-9b36-89a10337d383", + "name": "Get Verifier Organization DIDs" + }, + "response": { + "id": "194ea2a2-1b9f-40e8-8212-f1ec9d5d8ce8", + "status": "OK", + "code": 200, + "responseTime": 39, + "responseSize": 2450 + }, + "assertions": [ + { + "assertion": "Status code is 200", + "skipped": false + }, + { + "assertion": "Issuer makes unauthenticated discovery of verifiers exchange endpoint. `verifier_exchange_endpoint` is persisted to collectionVariables", + "skipped": false + } + ] + }, + { + "id": "cddabc1e-53c5-48ae-b55f-ef10c7004d97", + "cursor": { + "ref": "c37305e0-303c-42c7-94b3-d598a2669b3b", + "length": 3, + "cycles": 1, + "position": 2, + "iteration": 0, + "httpRequestId": "ea84429b-8c98-49e2-9609-d0fcf3483925" + }, + "item": { + "id": "cddabc1e-53c5-48ae-b55f-ef10c7004d97", + "name": "Presentation" + }, + "response": { + "id": "fd820b11-bde3-409b-b689-188e3728415e", + "status": "OK", + "code": 200, + "responseTime": 45, + "responseSize": 951 + }, + "assertions": [ + { + "assertion": "must return `200 Success` status", + "skipped": false + }, + { + "assertion": "Content-Type header is application/json", + "skipped": false + } + ] + } + ] + } +} \ No newline at end of file diff --git a/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-mesur.io-Mavennet.html b/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-mesur.io-Mavennet.html new file mode 100644 index 0000000000..4f52587582 --- /dev/null +++ b/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-mesur.io-Mavennet.html @@ -0,0 +1,1372 @@ + + + + + Newman Summary Report + + + + + + + + + +
+
+ + + +
+
+
+ +
+
+
+
+

Newman Run Dashboard

+
Friday, 30 August 2024 01:08:03
+
+
+
+
+
+ +
+
Total Iterations
+

1

+
+
+
+
+
+
+
+ +
+
Total Assertions
+

9

+
+
+
+
+
+
+
+ +
+
Total Failed Tests
+

0

+
+
+
+
+
+
+
+ +
+
Total Skipped Tests
+

0

+
+
+
+
+
+
+
+
+
+
+
+
File Information
+ Collection: OAuth Presentations Exchange Tutorial
+ + +
+
+
+
+
+
+
+
+
Timings and Data
+ Total run duration: 387ms
+ Total data received: 3.28KB
+ Average response time: 91ms
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary ItemTotalFailed
Requests30
Prerequest Scripts30
Test Scripts60
Assertions90
Skipped Tests0-
+
+
+
+
+
+
+
+
+
+
+ + +
+

There are no failed tests



+
+
+ +
+ + +
+

There are no skipped tests



+
+
+
+ + + +
+ + +
+ +
+
1 Iteration available to view
+ + +
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
Request Information
+ Request Method: POST
+ Request URL: https://api.staging.refiner.neoflow.energy/v1/auth
+
+
+
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 189ms
+ Mean size per request: 957B
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
must return `200 Success` status100
response body must include non-empty access_token100
response body must represent `Bearer` token100
returned token must expire in the future100
`access_token` persisted to collectionVariables100
Total500
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 46ms
+ Mean size per request: 1.43KB
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
Status code is 200100
Issuer makes unauthenticated discovery of verifiers exchange endpoint. `verifier_exchange_endpoint` is persisted to collectionVariables100
Total200
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
Request Information
+ Request Method: POST
+ Request URL: https://api.staging.refiner.neoflow.energy/presentations
+
+
+
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 40ms
+ Mean size per request: 938B
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
must return `200 Success` status100
Content-Type header is application/json100
Total200
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-mesur.io-Mavennet.json b/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-mesur.io-Mavennet.json new file mode 100644 index 0000000000..a4d0e53483 --- /dev/null +++ b/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-mesur.io-Mavennet.json @@ -0,0 +1,408 @@ +{ + "collection": { + "info": { + "_postman_id": "e6ed89ab-9b28-4bce-8769-59c1309f2fe8", + "name": "OAuth Presentations Exchange Tutorial", + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" + }, + "item": [ + { + "id": "2e8295c1-e49b-4abc-931a-f3ece7272944", + "name": "Holder gets Verifier's Token", + "request": { + "url": { + "host": [ + "{{VERIFIER_TOKEN_ENDPOINT}}" + ], + "query": [], + "variable": [] + }, + "method": "POST", + "body": { + "mode": "urlencoded", + "urlencoded": [ + { + "key": "audience", + "value": "{{VERIFIER_TOKEN_AUDIENCE}}" + }, + { + "key": "client_id", + "value": "{{VERIFIER_CLIENT_ID}}" + }, + { + "key": "client_secret", + "value": "{{VERIFIER_CLIENT_SECRET}}" + }, + { + "key": "grant_type", + "value": "client_credentials" + }, + { + "key": "scope", + "value": "{{VERIFIER_CLIENT_SCOPE}}" + } + ] + }, + "auth": { + "type": "noauth", + "noauth": [] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "fe56b177-f79b-47f3-8fc2-735966af7950", + "type": "text/javascript", + "exec": [ + "// Token requests are expected to return a `200 Success` response code. Any", + "// other response code should trigger a failure.", + "pm.test(\"must return `200 Success` status\", function() {", + " pm.response.to.have.status(200);", + "});", + "", + "// The response should include an `access_token` value - this will be presented", + "// to authenticated API endpoints in the `Authentication` header (see the last", + "// testing code block for details on how this is persisted).", + "pm.test(\"response body must include non-empty access_token\", function () {", + " const { access_token } = pm.response.json()", + " pm.expect(access_token).to.be.a('string').that.is.not.empty;", + "});", + "", + "// The type of `access_token` returned by the token request is expected to be", + "// `Bearer`.", + "pm.test(\"response body must represent `Bearer` token\", function() {", + " const { token_type } = pm.response.json()", + " pm.expect(token_type).to.equal(\"Bearer\");", + "});", + "", + "// The returned data includes an `expires_in` field that indicates time until", + "// token expiration. Validate that this value is a whole number greater than", + "// zero, as anything less than or equal to zero means that the `access_token`", + "// is already expired.", + "pm.test(\"returned token must expire in the future\", function() {", + " const { expires_in } = pm.response.json()", + " pm.expect(expires_in).to.be.above(0);", + "});", + "", + "// The returned `access_token` value is persisted as a Postman collection", + "// variable that can be accessed by other requests in the collection by calling", + "// `pm.collectionVariables.get(\"issuer_access_token\")`.", + "pm.test(\"`access_token` persisted to collectionVariables\", function() {", + " const { access_token } = pm.response.json()", + " pm.collectionVariables.set(\"verifier_access_token\", access_token);", + "});" + ], + "_lastExecutionId": "2940dc52-5ccc-48ce-97ea-52a66b5f4334" + } + } + ] + }, + { + "id": "c26ff9a9-ae2b-4287-9b68-dd188ee31fde", + "name": "Get Verifier Organization DIDs", + "request": { + "url": { + "path": [ + "identifiers", + "{{VERIFIER_ORGANIZATION_DID_WEB}}" + ], + "host": [ + "{{VERIFIER_API_BASE_URL}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "string", + "value": "{{verifier_access_token}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "59e79d59-5343-47d7-81fc-c10fea8aae5c", + "type": "text/javascript", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Issuer makes unauthenticated discovery of verifiers exchange endpoint. `verifier_exchange_endpoint` is persisted to collectionVariables\", function() {", + " const { service } = pm.response.json().didDocument;", + " pm.collectionVariables.set(\"verifier_exchange_endpoint\", service[0].serviceEndpoint);", + "});", + "", + "" + ], + "_lastExecutionId": "0ec7dfbe-f8df-41e8-947c-e28cab760202" + } + } + ], + "protocolProfileBehavior": { + "disabledSystemHeaders": {} + } + }, + { + "id": "e10cbbe0-5995-4ba3-9a78-d76d81f38cf1", + "name": "Presentation", + "request": { + "url": { + "path": [ + "presentations" + ], + "host": [ + "{{verifier_exchange_endpoint}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"@context\": [\n \"https://www.w3.org/2018/credentials/v1\",\n \"https://w3id.org/traceability/v1\"\n ],\n \"type\": [\n \"VerifiablePresentation\",\n \"TraceablePresentation\"\n ],\n \"verifiableCredential\": [\n {\n \"@context\": [\n \"https://www.w3.org/2018/credentials/v1\"\n ],\n \"id\": \"urn:uuid:07aa969e-b40d-4c1b-ab46-ded252003ded\",\n \"type\": [\n \"VerifiableCredential\"\n ],\n \"issuer\": \"did:key:z6MktiSzqF9kqwdU8VkdBKx56EYzXfpgnNPUAGznpicNiWfn\",\n \"issuanceDate\": \"2010-01-01T19:23:24Z\",\n \"credentialSubject\": {\n \"id\": \"did:key:z6MktiSzqF9kqwdU8VkdBKx56EYzXfpgnNPUAGznpicNiWfn\"\n },\n \"proof\": {\n \"type\": \"Ed25519Signature2018\",\n \"created\": \"2021-10-30T19:16:30Z\",\n \"verificationMethod\": \"did:key:z6MktiSzqF9kqwdU8VkdBKx56EYzXfpgnNPUAGznpicNiWfn#z6MktiSzqF9kqwdU8VkdBKx56EYzXfpgnNPUAGznpicNiWfn\",\n \"proofPurpose\": \"assertionMethod\",\n \"jws\": \"eyJhbGciOiJFZERTQSIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19..puetBYS3pkYlYzAecBiT-WkigYAlVbslrz9wPFnk9JW4AwjrpJvcsSdZJPhZtNy_myMJUNzC_QaYyw3ni1V0BA\"\n }\n }\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "string", + "value": "{{verifier_access_token}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "f7a592ed-f78e-45ea-8ed5-38383edb3cf8", + "type": "text/javascript", + "exec": [ + "", + "// The expected response code for a \"Presentations Available\" request is", + "// `200 Success`.", + "pm.test(\"must return `200 Success` status\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Content-Type header is application/json\", () => {", + " pm.expect(pm.response.headers.get('Content-Type')).to.include('application/json');", + "});" + ], + "_lastExecutionId": "de085c17-46cf-4938-9161-485b94ed66d1" + } + } + ] + } + ] + }, + "run": { + "stats": { + "iterations": { + "total": 1, + "pending": 0, + "failed": 0 + }, + "items": { + "total": 3, + "pending": 0, + "failed": 0 + }, + "scripts": { + "total": 9, + "pending": 0, + "failed": 0 + }, + "prerequests": { + "total": 3, + "pending": 0, + "failed": 0 + }, + "requests": { + "total": 3, + "pending": 0, + "failed": 0 + }, + "tests": { + "total": 3, + "pending": 0, + "failed": 0 + }, + "assertions": { + "total": 9, + "pending": 0, + "failed": 0 + }, + "testScripts": { + "total": 6, + "pending": 0, + "failed": 0 + }, + "prerequestScripts": { + "total": 3, + "pending": 0, + "failed": 0 + } + }, + "timings": { + "responseAverage": 91.66666666666667, + "responseMin": 40, + "responseMax": 189, + "responseSd": 68.86863501543274, + "dnsAverage": 0, + "dnsMin": 0, + "dnsMax": 0, + "dnsSd": 0, + "firstByteAverage": 0, + "firstByteMin": 0, + "firstByteMax": 0, + "firstByteSd": 0, + "started": 1724980083582, + "completed": 1724980083969 + }, + "executions": [ + { + "id": "2e8295c1-e49b-4abc-931a-f3ece7272944", + "cursor": { + "position": 0, + "iteration": 0, + "length": 3, + "cycles": 1, + "empty": false, + "eof": false, + "bof": true, + "cr": false, + "ref": "97f25014-7ecd-4482-876c-3dc75ef25bea", + "httpRequestId": "64838075-ad23-4557-b5f2-300a5f3f98e0" + }, + "item": { + "id": "2e8295c1-e49b-4abc-931a-f3ece7272944", + "name": "Holder gets Verifier's Token" + }, + "response": { + "id": "5d9b744b-a37b-4436-8c97-bb52fddec5b2", + "status": "OK", + "code": 200, + "responseTime": 189, + "responseSize": 957 + }, + "assertions": [ + { + "assertion": "must return `200 Success` status", + "skipped": false + }, + { + "assertion": "response body must include non-empty access_token", + "skipped": false + }, + { + "assertion": "response body must represent `Bearer` token", + "skipped": false + }, + { + "assertion": "returned token must expire in the future", + "skipped": false + }, + { + "assertion": "`access_token` persisted to collectionVariables", + "skipped": false + } + ] + }, + { + "id": "c26ff9a9-ae2b-4287-9b68-dd188ee31fde", + "cursor": { + "ref": "333e2748-a90a-462a-8763-a1ca23d27242", + "length": 3, + "cycles": 1, + "position": 1, + "iteration": 0, + "httpRequestId": "5e3dc7ea-d262-4ea5-ada7-cb73b273a1b5" + }, + "item": { + "id": "c26ff9a9-ae2b-4287-9b68-dd188ee31fde", + "name": "Get Verifier Organization DIDs" + }, + "response": { + "id": "8bc99a48-e404-4f00-8fdd-a80f78d9bc6a", + "status": "OK", + "code": 200, + "responseTime": 46, + "responseSize": 1462 + }, + "assertions": [ + { + "assertion": "Status code is 200", + "skipped": false + }, + { + "assertion": "Issuer makes unauthenticated discovery of verifiers exchange endpoint. `verifier_exchange_endpoint` is persisted to collectionVariables", + "skipped": false + } + ] + }, + { + "id": "e10cbbe0-5995-4ba3-9a78-d76d81f38cf1", + "cursor": { + "ref": "d32230b0-0e18-4068-ad86-219616e7a763", + "length": 3, + "cycles": 1, + "position": 2, + "iteration": 0, + "httpRequestId": "e4dc5f16-22a7-45b0-ac06-6270917e682f" + }, + "item": { + "id": "e10cbbe0-5995-4ba3-9a78-d76d81f38cf1", + "name": "Presentation" + }, + "response": { + "id": "083372e7-97c6-4225-bca2-5297d22ee0d0", + "status": "OK", + "code": 200, + "responseTime": 40, + "responseSize": 938 + }, + "assertions": [ + { + "assertion": "must return `200 Success` status", + "skipped": false + }, + { + "assertion": "Content-Type header is application/json", + "skipped": false + } + ] + } + ] + } +} \ No newline at end of file diff --git a/reports/interoperability-1724980304/10625048794-traceable-presentation-workflow-BCGov.html b/reports/interoperability-1724980304/10625048794-traceable-presentation-workflow-BCGov.html new file mode 100644 index 0000000000..8dacb81509 --- /dev/null +++ b/reports/interoperability-1724980304/10625048794-traceable-presentation-workflow-BCGov.html @@ -0,0 +1,1372 @@ + + + + + Newman Summary Report + + + + + + + + + +
+
+ + + +
+
+
+ +
+
+
+
+

Newman Run Dashboard

+
Friday, 30 August 2024 01:08:18
+
+
+
+
+
+ +
+
Total Iterations
+

1

+
+
+
+
+
+
+
+ +
+
Total Assertions
+

9

+
+
+
+
+
+
+
+ +
+
Total Failed Tests
+

0

+
+
+
+
+
+
+
+ +
+
Total Skipped Tests
+

0

+
+
+
+
+
+
+
+
+
+
+
+
File Information
+ Collection: Workflow Tutorial
+ + +
+
+
+
+
+
+
+
+
Timings and Data
+ Total run duration: 6.4s
+ Total data received: 1.25KB
+ Average response time: 2.1s
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary ItemTotalFailed
Requests30
Prerequest Scripts30
Test Scripts60
Assertions90
Skipped Tests0-
+
+
+
+
+
+
+
+
+
+
+ + +
+

There are no failed tests



+
+
+ +
+ + +
+

There are no skipped tests



+
+
+
+ + + +
+ + +
+ +
+
1 Iteration available to view
+ + +
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
Request Information
+ Request Method: POST
+ Request URL: https://traceability.interop.vonx.io/oauth/token
+
+
+
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 358ms
+ Mean size per request: 237B
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
must return `200 Success` status100
response body must include non-empty access_token100
response body must represent `Bearer` token100
returned token must expire in the future100
`access_token` persisted to collectionVariables100
Total500
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+ +
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 2.7s
+ Mean size per request: 1.02KB
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
Status code is 200100
Issuer makes unauthenticated discovery of verifiers exchange endpoint. `verifier_exchange_endpoint` is persisted to collectionVariables100
Total200
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 3.2s
+ Mean size per request: 2B
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
must return `200 Success` status100
Content-Type header is application/json100
Total200
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/reports/interoperability-1724980304/10625048794-traceable-presentation-workflow-BCGov.json b/reports/interoperability-1724980304/10625048794-traceable-presentation-workflow-BCGov.json new file mode 100644 index 0000000000..93ac36fade --- /dev/null +++ b/reports/interoperability-1724980304/10625048794-traceable-presentation-workflow-BCGov.json @@ -0,0 +1,408 @@ +{ + "collection": { + "info": { + "_postman_id": "7dc3b813-2b8d-4ee4-95af-6be68b4e0112", + "name": "Workflow Tutorial", + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" + }, + "item": [ + { + "id": "dc1482a2-57a6-454c-88bf-e503992d27b0", + "name": "Holder gets Verifier's Token", + "request": { + "url": { + "host": [ + "{{TOKEN_ENDPOINT}}" + ], + "query": [], + "variable": [] + }, + "method": "POST", + "body": { + "mode": "urlencoded", + "urlencoded": [ + { + "key": "audience", + "value": "{{TOKEN_AUDIENCE}}" + }, + { + "key": "client_id", + "value": "{{CLIENT_ID}}" + }, + { + "key": "client_secret", + "value": "{{CLIENT_SECRET}}" + }, + { + "key": "grant_type", + "value": "client_credentials" + }, + { + "key": "scope", + "value": "{{CLIENT_SCOPE}}" + } + ] + }, + "auth": { + "type": "noauth", + "noauth": [] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "360899b6-ed61-439f-99b3-0ede20956146", + "type": "text/javascript", + "exec": [ + "// Token requests are expected to return a `200 Success` response code. Any", + "// other response code should trigger a failure.", + "pm.test(\"must return `200 Success` status\", function() {", + " pm.response.to.have.status(200);", + "});", + "", + "// The response should include an `access_token` value - this will be presented", + "// to authenticated API endpoints in the `Authentication` header (see the last", + "// testing code block for details on how this is persisted).", + "pm.test(\"response body must include non-empty access_token\", function () {", + " const { access_token } = pm.response.json()", + " pm.expect(access_token).to.be.a('string').that.is.not.empty;", + "});", + "", + "// The type of `access_token` returned by the token request is expected to be", + "// `Bearer`.", + "pm.test(\"response body must represent `Bearer` token\", function() {", + " const { token_type } = pm.response.json()", + " pm.expect(token_type).to.equal(\"Bearer\");", + "});", + "", + "// The returned data includes an `expires_in` field that indicates time until", + "// token expiration. Validate that this value is a whole number greater than", + "// zero, as anything less than or equal to zero means that the `access_token`", + "// is already expired.", + "pm.test(\"returned token must expire in the future\", function() {", + " const { expires_in } = pm.response.json()", + " pm.expect(expires_in).to.be.above(0);", + "});", + "", + "// The returned `access_token` value is persisted as a Postman collection", + "// variable that can be accessed by other requests in the collection by calling", + "// `pm.collectionVariables.get(\"issuer_access_token\")`.", + "pm.test(\"`access_token` persisted to collectionVariables\", function() {", + " const { access_token } = pm.response.json()", + " pm.collectionVariables.set(\"verifier_access_token\", access_token);", + "});" + ], + "_lastExecutionId": "bfaed7e6-4cd6-47f0-9fa7-b6234313324c" + } + } + ] + }, + { + "id": "0767bc5b-f050-4a7b-af3d-5b79123d4f07", + "name": "Get Verifier Organization DIDs", + "request": { + "url": { + "path": [ + "identifiers", + "{{ORGANIZATION_DID_WEB}}" + ], + "host": [ + "{{API_BASE_URL}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "string", + "value": "{{verifier_access_token}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "14546054-02d2-4b09-9b38-907f9c5a8c20", + "type": "text/javascript", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Issuer makes unauthenticated discovery of verifiers exchange endpoint. `verifier_exchange_endpoint` is persisted to collectionVariables\", function() {", + " const { service } = pm.response.json().didDocument;", + " pm.collectionVariables.set(\"verifier_exchange_endpoint\", service[0].serviceEndpoint);", + "});", + "", + "" + ], + "_lastExecutionId": "d8a20f04-c009-4ba1-acd7-ce9df539c785" + } + } + ], + "protocolProfileBehavior": { + "disabledSystemHeaders": {} + } + }, + { + "id": "9a5d8250-cdf3-44fe-958e-990555aa79e6", + "name": "Presentation", + "request": { + "url": { + "path": [ + "presentations" + ], + "host": [ + "{{verifier_exchange_endpoint}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"@context\": [\n \"https://www.w3.org/2018/credentials/v1\",\n \"https://w3id.org/traceability/v1\"\n ],\n \"type\": [\n \"VerifiablePresentation\",\n \"TraceablePresentation\"\n ],\n \"workflow\": {\n \"definition\": [\n \"https://w3id.org/traceability/#import-intention\"\n ],\n \"instance\": [\n \"urn:uuid:{{$randomUUID}}\"\n ]\n },\n \"verifiableCredential\": [\n {\n \"@context\": [\n \"https://www.w3.org/2018/credentials/v1\",\n \"https://w3id.org/traceability/v1\"\n ],\n \"id\": \"urn:uuid:55791fb7-058f-409a-8a32-e6229n159144\",\n \"type\": [\n \"VerifiableCredential\",\n \"IntentToImportCredential\"\n ],\n \"issuer\": {\n \"type\": [\n \"Organization\"\n ],\n \"id\": \"did:key:z6MktHQo3fRRohk44dsbE76CuiTpBmyMWq2VVjvV6aBSeE3U\",\n \"name\": \"Generic Motors of America\",\n \"location\": {\n \"type\": [\n \"Place\"\n ],\n \"address\": {\n \"type\": [\n \"PostalAddress\"\n ],\n \"streetAddress\": \"12 Generic Motors Dr\",\n \"addressLocality\": \"Detroit\",\n \"addressRegion\": \"Michigan\",\n \"postalCode\": \"48232-5170\",\n \"addressCountry\": \"USA\"\n }\n }\n },\n \"issuanceDate\": \"2022-03-03T15:20:00Z\",\n \"credentialSubject\": {\n \"type\": [\n \"IntentToImport\"\n ],\n \"importIntent\": \"By issuing this Intent to Import Verifiable Credential and presenting it in a Traceable Presentation to US CBP, the issuing organization initiates a digital procedure for importing goods into the United States.\"\n },\n \"proof\": {\n \"type\": \"Ed25519Signature2018\",\n \"created\": \"2023-05-02T17:55:58Z\",\n \"verificationMethod\": \"did:key:z6MktHQo3fRRohk44dsbE76CuiTpBmyMWq2VVjvV6aBSeE3U#z6MktHQo3fRRohk44dsbE76CuiTpBmyMWq2VVjvV6aBSeE3U\",\n \"proofPurpose\": \"assertionMethod\",\n \"jws\": \"eyJhbGciOiJFZERTQSIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19..aXFUeuRifAA48uRRd1YNaAGSJOsav-Pk83yYlu7J_jwsy5V1BuzW33zvyCF8kKXMVv6OAGzfrbFHtKBOPyOYAA\"\n }\n }\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "string", + "value": "{{verifier_access_token}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "743d76b3-948f-4894-b500-3e5068987403", + "type": "text/javascript", + "exec": [ + "// The expected response code for a \"Presentations Available\" request is", + "// `200 Success`.", + "pm.test(\"must return `200 Success` status\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Content-Type header is application/json\", () => {", + " pm.expect(pm.response.headers.get('Content-Type')).to.include('application/json');", + "});", + "" + ], + "_lastExecutionId": "aef8c22d-3fa2-45c2-ba09-a9fdf7ae0183" + } + } + ] + } + ] + }, + "run": { + "stats": { + "iterations": { + "total": 1, + "pending": 0, + "failed": 0 + }, + "items": { + "total": 3, + "pending": 0, + "failed": 0 + }, + "scripts": { + "total": 9, + "pending": 0, + "failed": 0 + }, + "prerequests": { + "total": 3, + "pending": 0, + "failed": 0 + }, + "requests": { + "total": 3, + "pending": 0, + "failed": 0 + }, + "tests": { + "total": 3, + "pending": 0, + "failed": 0 + }, + "assertions": { + "total": 9, + "pending": 0, + "failed": 0 + }, + "testScripts": { + "total": 6, + "pending": 0, + "failed": 0 + }, + "prerequestScripts": { + "total": 3, + "pending": 0, + "failed": 0 + } + }, + "timings": { + "responseAverage": 2130.3333333333335, + "responseMin": 358, + "responseMax": 3266, + "responseSd": 1269.6782619580792, + "dnsAverage": 0, + "dnsMin": 0, + "dnsMax": 0, + "dnsSd": 0, + "firstByteAverage": 0, + "firstByteMin": 0, + "firstByteMax": 0, + "firstByteSd": 0, + "started": 1724980092188, + "completed": 1724980098680 + }, + "executions": [ + { + "id": "dc1482a2-57a6-454c-88bf-e503992d27b0", + "cursor": { + "position": 0, + "iteration": 0, + "length": 3, + "cycles": 1, + "empty": false, + "eof": false, + "bof": true, + "cr": false, + "ref": "e3b1d606-7290-41d0-ba1d-8db49907f0ec", + "httpRequestId": "0f115265-8ed2-4d41-a4a7-9da836b72dae" + }, + "item": { + "id": "dc1482a2-57a6-454c-88bf-e503992d27b0", + "name": "Holder gets Verifier's Token" + }, + "response": { + "id": "f522ffe7-b91b-4eb2-9e9d-5ed2d96d7f50", + "status": "OK", + "code": 200, + "responseTime": 358, + "responseSize": 237 + }, + "assertions": [ + { + "assertion": "must return `200 Success` status", + "skipped": false + }, + { + "assertion": "response body must include non-empty access_token", + "skipped": false + }, + { + "assertion": "response body must represent `Bearer` token", + "skipped": false + }, + { + "assertion": "returned token must expire in the future", + "skipped": false + }, + { + "assertion": "`access_token` persisted to collectionVariables", + "skipped": false + } + ] + }, + { + "id": "0767bc5b-f050-4a7b-af3d-5b79123d4f07", + "cursor": { + "ref": "6ae0ce28-c001-48f8-9b20-e3e6896af941", + "length": 3, + "cycles": 1, + "position": 1, + "iteration": 0, + "httpRequestId": "06074784-8264-490b-ab2e-b9bde776f780" + }, + "item": { + "id": "0767bc5b-f050-4a7b-af3d-5b79123d4f07", + "name": "Get Verifier Organization DIDs" + }, + "response": { + "id": "a7a41715-a9c6-48bd-94d5-da4e18c00ca8", + "status": "OK", + "code": 200, + "responseTime": 2767, + "responseSize": 1040 + }, + "assertions": [ + { + "assertion": "Status code is 200", + "skipped": false + }, + { + "assertion": "Issuer makes unauthenticated discovery of verifiers exchange endpoint. `verifier_exchange_endpoint` is persisted to collectionVariables", + "skipped": false + } + ] + }, + { + "id": "9a5d8250-cdf3-44fe-958e-990555aa79e6", + "cursor": { + "ref": "02b51eb0-9f98-41bf-b4e2-64432b862ae5", + "length": 3, + "cycles": 1, + "position": 2, + "iteration": 0, + "httpRequestId": "ce321e10-5ba6-4199-a20d-2c2c452f5721" + }, + "item": { + "id": "9a5d8250-cdf3-44fe-958e-990555aa79e6", + "name": "Presentation" + }, + "response": { + "id": "f75787fe-e6d1-4ea6-9421-168e86ec8feb", + "status": "OK", + "code": 200, + "responseTime": 3266, + "responseSize": 2 + }, + "assertions": [ + { + "assertion": "must return `200 Success` status", + "skipped": false + }, + { + "assertion": "Content-Type header is application/json", + "skipped": false + } + ] + } + ] + } +} \ No newline at end of file diff --git a/reports/interoperability-1724980304/10625048794-traceable-presentation-workflow-GS1US.html b/reports/interoperability-1724980304/10625048794-traceable-presentation-workflow-GS1US.html new file mode 100644 index 0000000000..06a959cc46 --- /dev/null +++ b/reports/interoperability-1724980304/10625048794-traceable-presentation-workflow-GS1US.html @@ -0,0 +1,1372 @@ + + + + + Newman Summary Report + + + + + + + + + +
+
+ + + +
+
+
+ +
+
+
+
+

Newman Run Dashboard

+
Friday, 30 August 2024 01:08:37
+
+
+
+
+
+ +
+
Total Iterations
+

1

+
+
+
+
+
+
+
+ +
+
Total Assertions
+

9

+
+
+
+
+
+
+
+ +
+
Total Failed Tests
+

0

+
+
+
+
+
+
+
+ +
+
Total Skipped Tests
+

0

+
+
+
+
+
+
+
+
+
+
+
+
File Information
+ Collection: Workflow Tutorial
+ + +
+
+
+
+
+
+
+
+
Timings and Data
+ Total run duration: 775ms
+ Total data received: 5.14KB
+ Average response time: 223ms
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary ItemTotalFailed
Requests30
Prerequest Scripts30
Test Scripts60
Assertions90
Skipped Tests0-
+
+
+
+
+
+
+
+
+
+
+ + +
+

There are no failed tests



+
+
+ +
+ + +
+

There are no skipped tests



+
+
+
+ + + +
+ + +
+ +
+
1 Iteration available to view
+ + +
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
Request Information
+ Request Method: POST
+ Request URL: https://vc.cbpsvip.gs1us.org/cbpsvip/oauth/token/e5e65807-3d2a-4f67-a262-72f255868da0
+
+
+
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 566ms
+ Mean size per request: 1.31KB
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
must return `200 Success` status100
response body must include non-empty access_token100
response body must represent `Bearer` token100
returned token must expire in the future100
`access_token` persisted to collectionVariables100
Total500
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
Request Information
+ Request Method: GET
+ Request URL: https://vc.cbpsvip.gs1us.org/cbpsvip/identifiers/did:web:cbpvsvip-vc.gs1us.org
+
+
+
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 61ms
+ Mean size per request: 2.39KB
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
Status code is 200100
Issuer makes unauthenticated discovery of verifiers exchange endpoint. `verifier_exchange_endpoint` is persisted to collectionVariables100
Total200
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
Request Information
+ Request Method: POST
+ Request URL: https://vc.cbpsvip.gs1us.org/cbpsvip/presentations
+
+
+
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 42ms
+ Mean size per request: 1.44KB
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
must return `200 Success` status100
Content-Type header is application/json100
Total200
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/reports/interoperability-1724980304/10625048794-traceable-presentation-workflow-GS1US.json b/reports/interoperability-1724980304/10625048794-traceable-presentation-workflow-GS1US.json new file mode 100644 index 0000000000..cbf34c4eab --- /dev/null +++ b/reports/interoperability-1724980304/10625048794-traceable-presentation-workflow-GS1US.json @@ -0,0 +1,408 @@ +{ + "collection": { + "info": { + "_postman_id": "7dc3b813-2b8d-4ee4-95af-6be68b4e0112", + "name": "Workflow Tutorial", + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" + }, + "item": [ + { + "id": "93e0a599-c273-4377-9a31-067d76516693", + "name": "Holder gets Verifier's Token", + "request": { + "url": { + "host": [ + "{{TOKEN_ENDPOINT}}" + ], + "query": [], + "variable": [] + }, + "method": "POST", + "body": { + "mode": "urlencoded", + "urlencoded": [ + { + "key": "audience", + "value": "{{TOKEN_AUDIENCE}}" + }, + { + "key": "client_id", + "value": "{{CLIENT_ID}}" + }, + { + "key": "client_secret", + "value": "{{CLIENT_SECRET}}" + }, + { + "key": "grant_type", + "value": "client_credentials" + }, + { + "key": "scope", + "value": "{{CLIENT_SCOPE}}" + } + ] + }, + "auth": { + "type": "noauth", + "noauth": [] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "08e79ca6-2bdf-4003-8aad-c97a218b6413", + "type": "text/javascript", + "exec": [ + "// Token requests are expected to return a `200 Success` response code. Any", + "// other response code should trigger a failure.", + "pm.test(\"must return `200 Success` status\", function() {", + " pm.response.to.have.status(200);", + "});", + "", + "// The response should include an `access_token` value - this will be presented", + "// to authenticated API endpoints in the `Authentication` header (see the last", + "// testing code block for details on how this is persisted).", + "pm.test(\"response body must include non-empty access_token\", function () {", + " const { access_token } = pm.response.json()", + " pm.expect(access_token).to.be.a('string').that.is.not.empty;", + "});", + "", + "// The type of `access_token` returned by the token request is expected to be", + "// `Bearer`.", + "pm.test(\"response body must represent `Bearer` token\", function() {", + " const { token_type } = pm.response.json()", + " pm.expect(token_type).to.equal(\"Bearer\");", + "});", + "", + "// The returned data includes an `expires_in` field that indicates time until", + "// token expiration. Validate that this value is a whole number greater than", + "// zero, as anything less than or equal to zero means that the `access_token`", + "// is already expired.", + "pm.test(\"returned token must expire in the future\", function() {", + " const { expires_in } = pm.response.json()", + " pm.expect(expires_in).to.be.above(0);", + "});", + "", + "// The returned `access_token` value is persisted as a Postman collection", + "// variable that can be accessed by other requests in the collection by calling", + "// `pm.collectionVariables.get(\"issuer_access_token\")`.", + "pm.test(\"`access_token` persisted to collectionVariables\", function() {", + " const { access_token } = pm.response.json()", + " pm.collectionVariables.set(\"verifier_access_token\", access_token);", + "});" + ], + "_lastExecutionId": "361dae4b-c0d6-48ac-8913-26adb57ef57a" + } + } + ] + }, + { + "id": "71744f12-c4b4-4975-9077-057912ce7d72", + "name": "Get Verifier Organization DIDs", + "request": { + "url": { + "path": [ + "identifiers", + "{{ORGANIZATION_DID_WEB}}" + ], + "host": [ + "{{API_BASE_URL}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "string", + "value": "{{verifier_access_token}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "1a8421c3-a167-491e-a478-3eead07140af", + "type": "text/javascript", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Issuer makes unauthenticated discovery of verifiers exchange endpoint. `verifier_exchange_endpoint` is persisted to collectionVariables\", function() {", + " const { service } = pm.response.json().didDocument;", + " pm.collectionVariables.set(\"verifier_exchange_endpoint\", service[0].serviceEndpoint);", + "});", + "", + "" + ], + "_lastExecutionId": "95bec959-6588-4f4b-b9a8-6a379ca27ed9" + } + } + ], + "protocolProfileBehavior": { + "disabledSystemHeaders": {} + } + }, + { + "id": "9ce37887-fe24-4ef2-8420-18dd3c28e456", + "name": "Presentation", + "request": { + "url": { + "path": [ + "presentations" + ], + "host": [ + "{{verifier_exchange_endpoint}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"@context\": [\n \"https://www.w3.org/2018/credentials/v1\",\n \"https://w3id.org/traceability/v1\"\n ],\n \"type\": [\n \"VerifiablePresentation\",\n \"TraceablePresentation\"\n ],\n \"workflow\": {\n \"definition\": [\n \"https://w3id.org/traceability/#import-intention\"\n ],\n \"instance\": [\n \"urn:uuid:{{$randomUUID}}\"\n ]\n },\n \"verifiableCredential\": [\n {\n \"@context\": [\n \"https://www.w3.org/2018/credentials/v1\",\n \"https://w3id.org/traceability/v1\"\n ],\n \"id\": \"urn:uuid:55791fb7-058f-409a-8a32-e6229n159144\",\n \"type\": [\n \"VerifiableCredential\",\n \"IntentToImportCredential\"\n ],\n \"issuer\": {\n \"type\": [\n \"Organization\"\n ],\n \"id\": \"did:key:z6MktHQo3fRRohk44dsbE76CuiTpBmyMWq2VVjvV6aBSeE3U\",\n \"name\": \"Generic Motors of America\",\n \"location\": {\n \"type\": [\n \"Place\"\n ],\n \"address\": {\n \"type\": [\n \"PostalAddress\"\n ],\n \"streetAddress\": \"12 Generic Motors Dr\",\n \"addressLocality\": \"Detroit\",\n \"addressRegion\": \"Michigan\",\n \"postalCode\": \"48232-5170\",\n \"addressCountry\": \"USA\"\n }\n }\n },\n \"issuanceDate\": \"2022-03-03T15:20:00Z\",\n \"credentialSubject\": {\n \"type\": [\n \"IntentToImport\"\n ],\n \"importIntent\": \"By issuing this Intent to Import Verifiable Credential and presenting it in a Traceable Presentation to US CBP, the issuing organization initiates a digital procedure for importing goods into the United States.\"\n },\n \"proof\": {\n \"type\": \"Ed25519Signature2018\",\n \"created\": \"2023-05-02T17:55:58Z\",\n \"verificationMethod\": \"did:key:z6MktHQo3fRRohk44dsbE76CuiTpBmyMWq2VVjvV6aBSeE3U#z6MktHQo3fRRohk44dsbE76CuiTpBmyMWq2VVjvV6aBSeE3U\",\n \"proofPurpose\": \"assertionMethod\",\n \"jws\": \"eyJhbGciOiJFZERTQSIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19..aXFUeuRifAA48uRRd1YNaAGSJOsav-Pk83yYlu7J_jwsy5V1BuzW33zvyCF8kKXMVv6OAGzfrbFHtKBOPyOYAA\"\n }\n }\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "string", + "value": "{{verifier_access_token}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "354681a8-d7d5-4338-91a8-68098c9f8206", + "type": "text/javascript", + "exec": [ + "// The expected response code for a \"Presentations Available\" request is", + "// `200 Success`.", + "pm.test(\"must return `200 Success` status\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Content-Type header is application/json\", () => {", + " pm.expect(pm.response.headers.get('Content-Type')).to.include('application/json');", + "});", + "" + ], + "_lastExecutionId": "c51ea3b2-516e-427a-84c3-4e20e30586a7" + } + } + ] + } + ] + }, + "run": { + "stats": { + "iterations": { + "total": 1, + "pending": 0, + "failed": 0 + }, + "items": { + "total": 3, + "pending": 0, + "failed": 0 + }, + "scripts": { + "total": 9, + "pending": 0, + "failed": 0 + }, + "prerequests": { + "total": 3, + "pending": 0, + "failed": 0 + }, + "requests": { + "total": 3, + "pending": 0, + "failed": 0 + }, + "tests": { + "total": 3, + "pending": 0, + "failed": 0 + }, + "assertions": { + "total": 9, + "pending": 0, + "failed": 0 + }, + "testScripts": { + "total": 6, + "pending": 0, + "failed": 0 + }, + "prerequestScripts": { + "total": 3, + "pending": 0, + "failed": 0 + } + }, + "timings": { + "responseAverage": 223, + "responseMin": 42, + "responseMax": 566, + "responseSd": 242.66162998436045, + "dnsAverage": 0, + "dnsMin": 0, + "dnsMax": 0, + "dnsSd": 0, + "firstByteAverage": 0, + "firstByteMin": 0, + "firstByteMax": 0, + "firstByteSd": 0, + "started": 1724980117017, + "completed": 1724980117792 + }, + "executions": [ + { + "id": "93e0a599-c273-4377-9a31-067d76516693", + "cursor": { + "position": 0, + "iteration": 0, + "length": 3, + "cycles": 1, + "empty": false, + "eof": false, + "bof": true, + "cr": false, + "ref": "6349c91e-072a-42fb-90ef-1b65d0d6d5da", + "httpRequestId": "4e9153c2-a825-472e-872a-58adc6055c68" + }, + "item": { + "id": "93e0a599-c273-4377-9a31-067d76516693", + "name": "Holder gets Verifier's Token" + }, + "response": { + "id": "de9ce1d0-acc9-4c01-99ef-5da673eabce9", + "status": "OK", + "code": 200, + "responseTime": 566, + "responseSize": 1339 + }, + "assertions": [ + { + "assertion": "must return `200 Success` status", + "skipped": false + }, + { + "assertion": "response body must include non-empty access_token", + "skipped": false + }, + { + "assertion": "response body must represent `Bearer` token", + "skipped": false + }, + { + "assertion": "returned token must expire in the future", + "skipped": false + }, + { + "assertion": "`access_token` persisted to collectionVariables", + "skipped": false + } + ] + }, + { + "id": "71744f12-c4b4-4975-9077-057912ce7d72", + "cursor": { + "ref": "888102dc-456b-4e34-ba41-408ca1e21506", + "length": 3, + "cycles": 1, + "position": 1, + "iteration": 0, + "httpRequestId": "053b6b98-8790-4511-89b0-1ee82a971508" + }, + "item": { + "id": "71744f12-c4b4-4975-9077-057912ce7d72", + "name": "Get Verifier Organization DIDs" + }, + "response": { + "id": "1db6cbe9-fdb8-4cbf-b773-e754fd914047", + "status": "OK", + "code": 200, + "responseTime": 61, + "responseSize": 2450 + }, + "assertions": [ + { + "assertion": "Status code is 200", + "skipped": false + }, + { + "assertion": "Issuer makes unauthenticated discovery of verifiers exchange endpoint. `verifier_exchange_endpoint` is persisted to collectionVariables", + "skipped": false + } + ] + }, + { + "id": "9ce37887-fe24-4ef2-8420-18dd3c28e456", + "cursor": { + "ref": "a1480c5a-b935-4741-a53f-dac902637b54", + "length": 3, + "cycles": 1, + "position": 2, + "iteration": 0, + "httpRequestId": "6d3fc62c-f258-4c62-8516-241fd79d57ae" + }, + "item": { + "id": "9ce37887-fe24-4ef2-8420-18dd3c28e456", + "name": "Presentation" + }, + "response": { + "id": "e31074c9-e2a7-4c2e-ac35-5b72aaa8acf9", + "status": "OK", + "code": 200, + "responseTime": 42, + "responseSize": 1479 + }, + "assertions": [ + { + "assertion": "must return `200 Success` status", + "skipped": false + }, + { + "assertion": "Content-Type header is application/json", + "skipped": false + } + ] + } + ] + } +} \ No newline at end of file diff --git a/reports/interoperability-1724980304/10625048794-traceable-presentation-workflow-Mavennet.html b/reports/interoperability-1724980304/10625048794-traceable-presentation-workflow-Mavennet.html new file mode 100644 index 0000000000..fa0756a25f --- /dev/null +++ b/reports/interoperability-1724980304/10625048794-traceable-presentation-workflow-Mavennet.html @@ -0,0 +1,1372 @@ + + + + + Newman Summary Report + + + + + + + + + +
+
+ + + +
+
+
+ +
+
+
+
+

Newman Run Dashboard

+
Friday, 30 August 2024 01:08:37
+
+
+
+
+
+ +
+
Total Iterations
+

1

+
+
+
+
+
+
+
+ +
+
Total Assertions
+

9

+
+
+
+
+
+
+
+ +
+
Total Failed Tests
+

0

+
+
+
+
+
+
+
+ +
+
Total Skipped Tests
+

0

+
+
+
+
+
+
+
+
+
+
+
+
File Information
+ Collection: Workflow Tutorial
+ + +
+
+
+
+
+
+
+
+
Timings and Data
+ Total run duration: 700ms
+ Total data received: 3.93KB
+ Average response time: 199ms
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary ItemTotalFailed
Requests30
Prerequest Scripts30
Test Scripts60
Assertions90
Skipped Tests0-
+
+
+
+
+
+
+
+
+
+
+ + +
+

There are no failed tests



+
+
+ +
+ + +
+

There are no skipped tests



+
+
+
+ + + +
+ + +
+ +
+
1 Iteration available to view
+ + +
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
Request Information
+ Request Method: POST
+ Request URL: https://api.staging.refiner.neoflow.energy/v1/auth
+
+
+
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 346ms
+ Mean size per request: 957B
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
must return `200 Success` status100
response body must include non-empty access_token100
response body must represent `Bearer` token100
returned token must expire in the future100
`access_token` persisted to collectionVariables100
Total500
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 128ms
+ Mean size per request: 1.43KB
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
Status code is 200100
Issuer makes unauthenticated discovery of verifiers exchange endpoint. `verifier_exchange_endpoint` is persisted to collectionVariables100
Total200
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
Request Information
+ Request Method: POST
+ Request URL: https://api.staging.refiner.neoflow.energy/presentations
+
+
+
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 123ms
+ Mean size per request: 1.57KB
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
must return `200 Success` status100
Content-Type header is application/json100
Total200
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/reports/interoperability-1724980304/10625048794-traceable-presentation-workflow-Mavennet.json b/reports/interoperability-1724980304/10625048794-traceable-presentation-workflow-Mavennet.json new file mode 100644 index 0000000000..e3576da0db --- /dev/null +++ b/reports/interoperability-1724980304/10625048794-traceable-presentation-workflow-Mavennet.json @@ -0,0 +1,408 @@ +{ + "collection": { + "info": { + "_postman_id": "7dc3b813-2b8d-4ee4-95af-6be68b4e0112", + "name": "Workflow Tutorial", + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" + }, + "item": [ + { + "id": "da6b3b54-09b3-43ea-8618-b8ff0c3fb735", + "name": "Holder gets Verifier's Token", + "request": { + "url": { + "host": [ + "{{TOKEN_ENDPOINT}}" + ], + "query": [], + "variable": [] + }, + "method": "POST", + "body": { + "mode": "urlencoded", + "urlencoded": [ + { + "key": "audience", + "value": "{{TOKEN_AUDIENCE}}" + }, + { + "key": "client_id", + "value": "{{CLIENT_ID}}" + }, + { + "key": "client_secret", + "value": "{{CLIENT_SECRET}}" + }, + { + "key": "grant_type", + "value": "client_credentials" + }, + { + "key": "scope", + "value": "{{CLIENT_SCOPE}}" + } + ] + }, + "auth": { + "type": "noauth", + "noauth": [] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "32012398-1bc8-443b-8d69-70279e21c283", + "type": "text/javascript", + "exec": [ + "// Token requests are expected to return a `200 Success` response code. Any", + "// other response code should trigger a failure.", + "pm.test(\"must return `200 Success` status\", function() {", + " pm.response.to.have.status(200);", + "});", + "", + "// The response should include an `access_token` value - this will be presented", + "// to authenticated API endpoints in the `Authentication` header (see the last", + "// testing code block for details on how this is persisted).", + "pm.test(\"response body must include non-empty access_token\", function () {", + " const { access_token } = pm.response.json()", + " pm.expect(access_token).to.be.a('string').that.is.not.empty;", + "});", + "", + "// The type of `access_token` returned by the token request is expected to be", + "// `Bearer`.", + "pm.test(\"response body must represent `Bearer` token\", function() {", + " const { token_type } = pm.response.json()", + " pm.expect(token_type).to.equal(\"Bearer\");", + "});", + "", + "// The returned data includes an `expires_in` field that indicates time until", + "// token expiration. Validate that this value is a whole number greater than", + "// zero, as anything less than or equal to zero means that the `access_token`", + "// is already expired.", + "pm.test(\"returned token must expire in the future\", function() {", + " const { expires_in } = pm.response.json()", + " pm.expect(expires_in).to.be.above(0);", + "});", + "", + "// The returned `access_token` value is persisted as a Postman collection", + "// variable that can be accessed by other requests in the collection by calling", + "// `pm.collectionVariables.get(\"issuer_access_token\")`.", + "pm.test(\"`access_token` persisted to collectionVariables\", function() {", + " const { access_token } = pm.response.json()", + " pm.collectionVariables.set(\"verifier_access_token\", access_token);", + "});" + ], + "_lastExecutionId": "bfbe30eb-b695-4ef6-a287-90aaeb22c006" + } + } + ] + }, + { + "id": "8509985f-220e-4b1c-9a2f-8f8744a6a50d", + "name": "Get Verifier Organization DIDs", + "request": { + "url": { + "path": [ + "identifiers", + "{{ORGANIZATION_DID_WEB}}" + ], + "host": [ + "{{API_BASE_URL}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "string", + "value": "{{verifier_access_token}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "0cb14f42-21ae-403c-ac8d-7e5814f25099", + "type": "text/javascript", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Issuer makes unauthenticated discovery of verifiers exchange endpoint. `verifier_exchange_endpoint` is persisted to collectionVariables\", function() {", + " const { service } = pm.response.json().didDocument;", + " pm.collectionVariables.set(\"verifier_exchange_endpoint\", service[0].serviceEndpoint);", + "});", + "", + "" + ], + "_lastExecutionId": "85f514f6-5171-4461-8004-9362bbad3cb5" + } + } + ], + "protocolProfileBehavior": { + "disabledSystemHeaders": {} + } + }, + { + "id": "440023b1-30f8-4562-86f0-9acf3448e3d5", + "name": "Presentation", + "request": { + "url": { + "path": [ + "presentations" + ], + "host": [ + "{{verifier_exchange_endpoint}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"@context\": [\n \"https://www.w3.org/2018/credentials/v1\",\n \"https://w3id.org/traceability/v1\"\n ],\n \"type\": [\n \"VerifiablePresentation\",\n \"TraceablePresentation\"\n ],\n \"workflow\": {\n \"definition\": [\n \"https://w3id.org/traceability/#import-intention\"\n ],\n \"instance\": [\n \"urn:uuid:{{$randomUUID}}\"\n ]\n },\n \"verifiableCredential\": [\n {\n \"@context\": [\n \"https://www.w3.org/2018/credentials/v1\",\n \"https://w3id.org/traceability/v1\"\n ],\n \"id\": \"urn:uuid:55791fb7-058f-409a-8a32-e6229n159144\",\n \"type\": [\n \"VerifiableCredential\",\n \"IntentToImportCredential\"\n ],\n \"issuer\": {\n \"type\": [\n \"Organization\"\n ],\n \"id\": \"did:key:z6MktHQo3fRRohk44dsbE76CuiTpBmyMWq2VVjvV6aBSeE3U\",\n \"name\": \"Generic Motors of America\",\n \"location\": {\n \"type\": [\n \"Place\"\n ],\n \"address\": {\n \"type\": [\n \"PostalAddress\"\n ],\n \"streetAddress\": \"12 Generic Motors Dr\",\n \"addressLocality\": \"Detroit\",\n \"addressRegion\": \"Michigan\",\n \"postalCode\": \"48232-5170\",\n \"addressCountry\": \"USA\"\n }\n }\n },\n \"issuanceDate\": \"2022-03-03T15:20:00Z\",\n \"credentialSubject\": {\n \"type\": [\n \"IntentToImport\"\n ],\n \"importIntent\": \"By issuing this Intent to Import Verifiable Credential and presenting it in a Traceable Presentation to US CBP, the issuing organization initiates a digital procedure for importing goods into the United States.\"\n },\n \"proof\": {\n \"type\": \"Ed25519Signature2018\",\n \"created\": \"2023-05-02T17:55:58Z\",\n \"verificationMethod\": \"did:key:z6MktHQo3fRRohk44dsbE76CuiTpBmyMWq2VVjvV6aBSeE3U#z6MktHQo3fRRohk44dsbE76CuiTpBmyMWq2VVjvV6aBSeE3U\",\n \"proofPurpose\": \"assertionMethod\",\n \"jws\": \"eyJhbGciOiJFZERTQSIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19..aXFUeuRifAA48uRRd1YNaAGSJOsav-Pk83yYlu7J_jwsy5V1BuzW33zvyCF8kKXMVv6OAGzfrbFHtKBOPyOYAA\"\n }\n }\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "string", + "value": "{{verifier_access_token}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "f495429d-b2f9-47df-9e41-a71ed9dcaf1c", + "type": "text/javascript", + "exec": [ + "// The expected response code for a \"Presentations Available\" request is", + "// `200 Success`.", + "pm.test(\"must return `200 Success` status\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Content-Type header is application/json\", () => {", + " pm.expect(pm.response.headers.get('Content-Type')).to.include('application/json');", + "});", + "" + ], + "_lastExecutionId": "3dc67698-8e09-4e7a-93ec-3b06d0f7d19b" + } + } + ] + } + ] + }, + "run": { + "stats": { + "iterations": { + "total": 1, + "pending": 0, + "failed": 0 + }, + "items": { + "total": 3, + "pending": 0, + "failed": 0 + }, + "scripts": { + "total": 9, + "pending": 0, + "failed": 0 + }, + "prerequests": { + "total": 3, + "pending": 0, + "failed": 0 + }, + "requests": { + "total": 3, + "pending": 0, + "failed": 0 + }, + "tests": { + "total": 3, + "pending": 0, + "failed": 0 + }, + "assertions": { + "total": 9, + "pending": 0, + "failed": 0 + }, + "testScripts": { + "total": 6, + "pending": 0, + "failed": 0 + }, + "prerequestScripts": { + "total": 3, + "pending": 0, + "failed": 0 + } + }, + "timings": { + "responseAverage": 199, + "responseMin": 123, + "responseMax": 346, + "responseSd": 103.96473761168575, + "dnsAverage": 0, + "dnsMin": 0, + "dnsMax": 0, + "dnsSd": 0, + "firstByteAverage": 0, + "firstByteMin": 0, + "firstByteMax": 0, + "firstByteSd": 0, + "started": 1724980117101, + "completed": 1724980117801 + }, + "executions": [ + { + "id": "da6b3b54-09b3-43ea-8618-b8ff0c3fb735", + "cursor": { + "position": 0, + "iteration": 0, + "length": 3, + "cycles": 1, + "empty": false, + "eof": false, + "bof": true, + "cr": false, + "ref": "d457d229-1e46-4cbb-b166-f0989c4b2334", + "httpRequestId": "f233b5a8-84e7-44ea-8b55-07d72f505865" + }, + "item": { + "id": "da6b3b54-09b3-43ea-8618-b8ff0c3fb735", + "name": "Holder gets Verifier's Token" + }, + "response": { + "id": "e01b22b4-1089-40f1-bff1-c071072aa835", + "status": "OK", + "code": 200, + "responseTime": 346, + "responseSize": 957 + }, + "assertions": [ + { + "assertion": "must return `200 Success` status", + "skipped": false + }, + { + "assertion": "response body must include non-empty access_token", + "skipped": false + }, + { + "assertion": "response body must represent `Bearer` token", + "skipped": false + }, + { + "assertion": "returned token must expire in the future", + "skipped": false + }, + { + "assertion": "`access_token` persisted to collectionVariables", + "skipped": false + } + ] + }, + { + "id": "8509985f-220e-4b1c-9a2f-8f8744a6a50d", + "cursor": { + "ref": "3315f337-6c84-449f-9109-5621a7100136", + "length": 3, + "cycles": 1, + "position": 1, + "iteration": 0, + "httpRequestId": "998b27ce-3ab8-4ae7-8d08-2364c1e51ce8" + }, + "item": { + "id": "8509985f-220e-4b1c-9a2f-8f8744a6a50d", + "name": "Get Verifier Organization DIDs" + }, + "response": { + "id": "9282d1ce-20f5-40ae-a91b-a6cb9f44af95", + "status": "OK", + "code": 200, + "responseTime": 128, + "responseSize": 1462 + }, + "assertions": [ + { + "assertion": "Status code is 200", + "skipped": false + }, + { + "assertion": "Issuer makes unauthenticated discovery of verifiers exchange endpoint. `verifier_exchange_endpoint` is persisted to collectionVariables", + "skipped": false + } + ] + }, + { + "id": "440023b1-30f8-4562-86f0-9acf3448e3d5", + "cursor": { + "ref": "ab7e2c2f-c0e9-4b89-a5ee-226b6dbdde08", + "length": 3, + "cycles": 1, + "position": 2, + "iteration": 0, + "httpRequestId": "e26059bb-5e39-4771-ac66-05d1b406731c" + }, + "item": { + "id": "440023b1-30f8-4562-86f0-9acf3448e3d5", + "name": "Presentation" + }, + "response": { + "id": "c7bea255-88a8-4fcc-a62d-ea9a85e13460", + "status": "OK", + "code": 200, + "responseTime": 123, + "responseSize": 1605 + }, + "assertions": [ + { + "assertion": "must return `200 Success` status", + "skipped": false + }, + { + "assertion": "Content-Type header is application/json", + "skipped": false + } + ] + } + ] + } +} \ No newline at end of file diff --git a/reports/interoperability-1724980304/10625048794-traceable-presentation-workflow-mesur.io.html b/reports/interoperability-1724980304/10625048794-traceable-presentation-workflow-mesur.io.html new file mode 100644 index 0000000000..8692c53758 --- /dev/null +++ b/reports/interoperability-1724980304/10625048794-traceable-presentation-workflow-mesur.io.html @@ -0,0 +1,1372 @@ + + + + + Newman Summary Report + + + + + + + + + +
+
+ + + +
+
+
+ +
+
+
+
+

Newman Run Dashboard

+
Friday, 30 August 2024 01:08:32
+
+
+
+
+
+ +
+
Total Iterations
+

1

+
+
+
+
+
+
+
+ +
+
Total Assertions
+

9

+
+
+
+
+
+
+
+ +
+
Total Failed Tests
+

0

+
+
+
+
+
+
+
+ +
+
Total Skipped Tests
+

0

+
+
+
+
+
+
+
+
+
+
+
+
File Information
+ Collection: Workflow Tutorial
+ + +
+
+
+
+
+
+
+
+
Timings and Data
+ Total run duration: 1051ms
+ Total data received: 2.51KB
+ Average response time: 317ms
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary ItemTotalFailed
Requests30
Prerequest Scripts30
Test Scripts60
Assertions90
Skipped Tests0-
+
+
+
+
+
+
+
+
+
+
+ + +
+

There are no failed tests



+
+
+ +
+ + +
+

There are no skipped tests



+
+
+
+ + + +
+ + +
+ +
+
1 Iteration available to view
+ + +
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
Request Information
+ Request Method: POST
+ Request URL: https://mesur.auth0.com/oauth/token
+
+
+
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 734ms
+ Mean size per request: 1.2KB
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
must return `200 Success` status100
response body must include non-empty access_token100
response body must represent `Bearer` token100
returned token must expire in the future100
`access_token` persisted to collectionVariables100
Total500
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
Request Information
+ Request Method: GET
+ Request URL: https://vc.mesur.io/v1/identifiers/did:web:vc.mesur.io:v1
+
+
+
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 209ms
+ Mean size per request: 1.31KB
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
Status code is 200100
Issuer makes unauthenticated discovery of verifiers exchange endpoint. `verifier_exchange_endpoint` is persisted to collectionVariables100
Total200
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
Request Information
+ Request Method: POST
+ Request URL: https://vc.mesur.io/v1/presentations
+
+
+
+
+
Response Information
+ Response Code: 200 - OK
+ Mean time per request: 8ms
+ Mean size per request: 3B
+
+
Test Pass Percentage
+
+
+
+
100 %
+
+
+
+
+
+
+
+
+
+
+
+
Test Information
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
NamePassedFailedSkipped
must return `200 Success` status100
Content-Type header is application/json100
Total200
+
+
+
+
+
+
+
Test Failure
+
+ + + + +
Test NameAssertion Error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/reports/interoperability-1724980304/10625048794-traceable-presentation-workflow-mesur.io.json b/reports/interoperability-1724980304/10625048794-traceable-presentation-workflow-mesur.io.json new file mode 100644 index 0000000000..e884828f8d --- /dev/null +++ b/reports/interoperability-1724980304/10625048794-traceable-presentation-workflow-mesur.io.json @@ -0,0 +1,408 @@ +{ + "collection": { + "info": { + "_postman_id": "7dc3b813-2b8d-4ee4-95af-6be68b4e0112", + "name": "Workflow Tutorial", + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" + }, + "item": [ + { + "id": "1a29dc21-9949-4193-9dae-40857e97de36", + "name": "Holder gets Verifier's Token", + "request": { + "url": { + "host": [ + "{{TOKEN_ENDPOINT}}" + ], + "query": [], + "variable": [] + }, + "method": "POST", + "body": { + "mode": "urlencoded", + "urlencoded": [ + { + "key": "audience", + "value": "{{TOKEN_AUDIENCE}}" + }, + { + "key": "client_id", + "value": "{{CLIENT_ID}}" + }, + { + "key": "client_secret", + "value": "{{CLIENT_SECRET}}" + }, + { + "key": "grant_type", + "value": "client_credentials" + }, + { + "key": "scope", + "value": "{{CLIENT_SCOPE}}" + } + ] + }, + "auth": { + "type": "noauth", + "noauth": [] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "668a4776-e7a4-4a39-87e6-a4be98f44c4f", + "type": "text/javascript", + "exec": [ + "// Token requests are expected to return a `200 Success` response code. Any", + "// other response code should trigger a failure.", + "pm.test(\"must return `200 Success` status\", function() {", + " pm.response.to.have.status(200);", + "});", + "", + "// The response should include an `access_token` value - this will be presented", + "// to authenticated API endpoints in the `Authentication` header (see the last", + "// testing code block for details on how this is persisted).", + "pm.test(\"response body must include non-empty access_token\", function () {", + " const { access_token } = pm.response.json()", + " pm.expect(access_token).to.be.a('string').that.is.not.empty;", + "});", + "", + "// The type of `access_token` returned by the token request is expected to be", + "// `Bearer`.", + "pm.test(\"response body must represent `Bearer` token\", function() {", + " const { token_type } = pm.response.json()", + " pm.expect(token_type).to.equal(\"Bearer\");", + "});", + "", + "// The returned data includes an `expires_in` field that indicates time until", + "// token expiration. Validate that this value is a whole number greater than", + "// zero, as anything less than or equal to zero means that the `access_token`", + "// is already expired.", + "pm.test(\"returned token must expire in the future\", function() {", + " const { expires_in } = pm.response.json()", + " pm.expect(expires_in).to.be.above(0);", + "});", + "", + "// The returned `access_token` value is persisted as a Postman collection", + "// variable that can be accessed by other requests in the collection by calling", + "// `pm.collectionVariables.get(\"issuer_access_token\")`.", + "pm.test(\"`access_token` persisted to collectionVariables\", function() {", + " const { access_token } = pm.response.json()", + " pm.collectionVariables.set(\"verifier_access_token\", access_token);", + "});" + ], + "_lastExecutionId": "974849f0-ea25-401f-b266-c7ecbc1e77be" + } + } + ] + }, + { + "id": "369deca7-0728-4029-aac0-60525a4dc3f3", + "name": "Get Verifier Organization DIDs", + "request": { + "url": { + "path": [ + "identifiers", + "{{ORGANIZATION_DID_WEB}}" + ], + "host": [ + "{{API_BASE_URL}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "string", + "value": "{{verifier_access_token}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "2a67f9ae-e60e-4647-89b0-ab8cb272d167", + "type": "text/javascript", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Issuer makes unauthenticated discovery of verifiers exchange endpoint. `verifier_exchange_endpoint` is persisted to collectionVariables\", function() {", + " const { service } = pm.response.json().didDocument;", + " pm.collectionVariables.set(\"verifier_exchange_endpoint\", service[0].serviceEndpoint);", + "});", + "", + "" + ], + "_lastExecutionId": "2d847a11-3af9-4f19-a7dc-754e001a4abe" + } + } + ], + "protocolProfileBehavior": { + "disabledSystemHeaders": {} + } + }, + { + "id": "429f8d7a-8fee-4f32-9142-2ab4efdcbb92", + "name": "Presentation", + "request": { + "url": { + "path": [ + "presentations" + ], + "host": [ + "{{verifier_exchange_endpoint}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"@context\": [\n \"https://www.w3.org/2018/credentials/v1\",\n \"https://w3id.org/traceability/v1\"\n ],\n \"type\": [\n \"VerifiablePresentation\",\n \"TraceablePresentation\"\n ],\n \"workflow\": {\n \"definition\": [\n \"https://w3id.org/traceability/#import-intention\"\n ],\n \"instance\": [\n \"urn:uuid:{{$randomUUID}}\"\n ]\n },\n \"verifiableCredential\": [\n {\n \"@context\": [\n \"https://www.w3.org/2018/credentials/v1\",\n \"https://w3id.org/traceability/v1\"\n ],\n \"id\": \"urn:uuid:55791fb7-058f-409a-8a32-e6229n159144\",\n \"type\": [\n \"VerifiableCredential\",\n \"IntentToImportCredential\"\n ],\n \"issuer\": {\n \"type\": [\n \"Organization\"\n ],\n \"id\": \"did:key:z6MktHQo3fRRohk44dsbE76CuiTpBmyMWq2VVjvV6aBSeE3U\",\n \"name\": \"Generic Motors of America\",\n \"location\": {\n \"type\": [\n \"Place\"\n ],\n \"address\": {\n \"type\": [\n \"PostalAddress\"\n ],\n \"streetAddress\": \"12 Generic Motors Dr\",\n \"addressLocality\": \"Detroit\",\n \"addressRegion\": \"Michigan\",\n \"postalCode\": \"48232-5170\",\n \"addressCountry\": \"USA\"\n }\n }\n },\n \"issuanceDate\": \"2022-03-03T15:20:00Z\",\n \"credentialSubject\": {\n \"type\": [\n \"IntentToImport\"\n ],\n \"importIntent\": \"By issuing this Intent to Import Verifiable Credential and presenting it in a Traceable Presentation to US CBP, the issuing organization initiates a digital procedure for importing goods into the United States.\"\n },\n \"proof\": {\n \"type\": \"Ed25519Signature2018\",\n \"created\": \"2023-05-02T17:55:58Z\",\n \"verificationMethod\": \"did:key:z6MktHQo3fRRohk44dsbE76CuiTpBmyMWq2VVjvV6aBSeE3U#z6MktHQo3fRRohk44dsbE76CuiTpBmyMWq2VVjvV6aBSeE3U\",\n \"proofPurpose\": \"assertionMethod\",\n \"jws\": \"eyJhbGciOiJFZERTQSIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19..aXFUeuRifAA48uRRd1YNaAGSJOsav-Pk83yYlu7J_jwsy5V1BuzW33zvyCF8kKXMVv6OAGzfrbFHtKBOPyOYAA\"\n }\n }\n ]\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "auth": { + "type": "bearer", + "bearer": [ + { + "type": "string", + "value": "{{verifier_access_token}}", + "key": "token" + } + ] + } + }, + "response": [], + "event": [ + { + "listen": "test", + "script": { + "id": "e9b151d2-a125-4ad2-b382-bf6bd9ed260d", + "type": "text/javascript", + "exec": [ + "// The expected response code for a \"Presentations Available\" request is", + "// `200 Success`.", + "pm.test(\"must return `200 Success` status\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Content-Type header is application/json\", () => {", + " pm.expect(pm.response.headers.get('Content-Type')).to.include('application/json');", + "});", + "" + ], + "_lastExecutionId": "15f5cbba-b05f-4ab7-9a54-42479652b87f" + } + } + ] + } + ] + }, + "run": { + "stats": { + "iterations": { + "total": 1, + "pending": 0, + "failed": 0 + }, + "items": { + "total": 3, + "pending": 0, + "failed": 0 + }, + "scripts": { + "total": 9, + "pending": 0, + "failed": 0 + }, + "prerequests": { + "total": 3, + "pending": 0, + "failed": 0 + }, + "requests": { + "total": 3, + "pending": 0, + "failed": 0 + }, + "tests": { + "total": 3, + "pending": 0, + "failed": 0 + }, + "assertions": { + "total": 9, + "pending": 0, + "failed": 0 + }, + "testScripts": { + "total": 6, + "pending": 0, + "failed": 0 + }, + "prerequestScripts": { + "total": 3, + "pending": 0, + "failed": 0 + } + }, + "timings": { + "responseAverage": 317, + "responseMin": 8, + "responseMax": 734, + "responseSd": 306.0686197570734, + "dnsAverage": 0, + "dnsMin": 0, + "dnsMax": 0, + "dnsSd": 0, + "firstByteAverage": 0, + "firstByteMin": 0, + "firstByteMax": 0, + "firstByteSd": 0, + "started": 1724980111750, + "completed": 1724980112801 + }, + "executions": [ + { + "id": "1a29dc21-9949-4193-9dae-40857e97de36", + "cursor": { + "position": 0, + "iteration": 0, + "length": 3, + "cycles": 1, + "empty": false, + "eof": false, + "bof": true, + "cr": false, + "ref": "036d95d4-13d2-45e4-b89f-0f26f669b9e0", + "httpRequestId": "327cd731-7783-4d7a-ad67-1a517c9b0cfd" + }, + "item": { + "id": "1a29dc21-9949-4193-9dae-40857e97de36", + "name": "Holder gets Verifier's Token" + }, + "response": { + "id": "38827837-686e-45cb-b108-d69b461ff35a", + "status": "OK", + "code": 200, + "responseTime": 734, + "responseSize": 1225 + }, + "assertions": [ + { + "assertion": "must return `200 Success` status", + "skipped": false + }, + { + "assertion": "response body must include non-empty access_token", + "skipped": false + }, + { + "assertion": "response body must represent `Bearer` token", + "skipped": false + }, + { + "assertion": "returned token must expire in the future", + "skipped": false + }, + { + "assertion": "`access_token` persisted to collectionVariables", + "skipped": false + } + ] + }, + { + "id": "369deca7-0728-4029-aac0-60525a4dc3f3", + "cursor": { + "ref": "68e18495-bf80-447e-8718-27cd999c6c9e", + "length": 3, + "cycles": 1, + "position": 1, + "iteration": 0, + "httpRequestId": "82162697-80d7-4eb7-9f6d-f855b076d19e" + }, + "item": { + "id": "369deca7-0728-4029-aac0-60525a4dc3f3", + "name": "Get Verifier Organization DIDs" + }, + "response": { + "id": "9f9ea62f-f58a-4509-b280-fd0a0bff8b5c", + "status": "OK", + "code": 200, + "responseTime": 209, + "responseSize": 1345 + }, + "assertions": [ + { + "assertion": "Status code is 200", + "skipped": false + }, + { + "assertion": "Issuer makes unauthenticated discovery of verifiers exchange endpoint. `verifier_exchange_endpoint` is persisted to collectionVariables", + "skipped": false + } + ] + }, + { + "id": "429f8d7a-8fee-4f32-9142-2ab4efdcbb92", + "cursor": { + "ref": "a1f9c859-e91f-4ed7-b025-7c06876acefa", + "length": 3, + "cycles": 1, + "position": 2, + "iteration": 0, + "httpRequestId": "ce84dad5-f5ad-4149-b1f1-60e5b4570827" + }, + "item": { + "id": "429f8d7a-8fee-4f32-9142-2ab4efdcbb92", + "name": "Presentation" + }, + "response": { + "id": "3d59458e-f8c1-4f3a-9349-4bef67b594d3", + "status": "OK", + "code": 200, + "responseTime": 8, + "responseSize": 3 + }, + "assertions": [ + { + "assertion": "must return `200 Success` status", + "skipped": false + }, + { + "assertion": "Content-Type header is application/json", + "skipped": false + } + ] + } + ] + } +} \ No newline at end of file diff --git a/reports/interoperability-1724980304/archive/index.html b/reports/interoperability-1724980304/archive/index.html new file mode 100644 index 0000000000..32dfe8686e --- /dev/null +++ b/reports/interoperability-1724980304/archive/index.html @@ -0,0 +1,51 @@ + + + + + + + + \ No newline at end of file diff --git a/reports/interoperability-1724980304/index.html b/reports/interoperability-1724980304/index.html new file mode 100644 index 0000000000..3565770ba7 --- /dev/null +++ b/reports/interoperability-1724980304/index.html @@ -0,0 +1,421 @@ + + + + + + + W3C Supply Chain Traceability Interoperability Test Results + + + + + + + + +
+
+
+
+

Traceability Interoperability Test Results

+
+
+
+
+
+
+
+
+

Summary

+
+ +

+ These are the test results for the + Open API for Interoperable Traceability + as of: 2024-08-30 01:09:36.689681 +

+

+ The highest current % of passed tests by a single provider is: 100.0%
+ The lowest is: 87.0%
+ Across all providers the average % of passed tests is: 98.0% +

+ +
+

Provider Summary

+
+ + +
+
+
BCGov
+
+

100.0%

+

of tests taken, passed

+
+
+
+ + + +
+
+
GS1US
+
+

87.0%

+

of tests taken, passed

+
+
+
+ + + +
+
+
Mavennet
+
+

95.7%

+

of tests taken, passed

+
+
+
+ + + +
+
+
mesur.io
+
+

87.0%

+

of tests taken, passed

+
+
+
+ + +
+
+ + +
+
+
BCGov - GS1US
+
+

100.0%

+

of tests taken, passed

+
+
+
+ + + +
+
+
BCGov - Mavennet
+
+

100.0%

+

of tests taken, passed

+
+
+
+ + + +
+
+
BCGov - mesur.io
+
+

100.0%

+

of tests taken, passed

+
+
+
+ + + +
+
+
GS1US - BCGov
+
+

100.0%

+

of tests taken, passed

+
+
+
+ + + +
+
+
GS1US - mesur.io
+
+

100.0%

+

of tests taken, passed

+
+
+
+ + + +
+
+
Mavennet - BCGov
+
+

100.0%

+

of tests taken, passed

+
+
+
+ + + +
+
+
Mavennet - GS1US
+
+

100.0%

+

of tests taken, passed

+
+
+
+ + + +
+
+
Mavennet - mesur.io
+
+

100.0%

+

of tests taken, passed

+
+
+
+ + + +
+
+
mesur.io - BCGov
+
+

100.0%

+

of tests taken, passed

+
+
+
+ + + +
+
+
mesur.io - GS1US
+
+

100.0%

+

of tests taken, passed

+
+
+
+ + + +
+
+
mesur.io - Mavennet
+
+

100.0%

+

of tests taken, passed

+
+
+
+ + +
+

Provider & Test Summary

+
+ +
+
+
+
+
+
+
+
+
+
+
+ + + + + + + +
Test TypeBCGovGS1USMavennetmesur.io
Credentials Status Update100.0%76.9%92.3%76.9%
DID Web Discovery100.0%100.0%100.0%100.0%
Workflow100.0%100.0%100.0%100.0%
+
+
+
+
+
+ +

+
+ +
+
+
+
+
+
+
+
+
+
+
+ + + + + + + +
Test TypeBCGov - GS1USBCGov - MavennetBCGov - mesur.ioGS1US - BCGovGS1US - mesur.ioMavennet - BCGovMavennet - GS1USMavennet - mesur.iomesur.io - BCGovmesur.io - GS1USmesur.io - Mavennet
OAuth Presentations Exchange100.0%100.0%100.0%100.0%100.0%100.0%100.0%100.0%100.0%100.0%100.0%
+
+
+
+
+
+ +


+
+
+
+
+

+
+
+
+
+

Results

+
+
+
+
+
+
+
+
+

Details

+
+ +
+
+
+
+
+
+
+
+
+
+
+ + + + + + + +
ProviderTest TypeTest StepAssertionResultError MessagePassing
Mavennet - BCGovOAuth Presentations ExchangeHolder gets Verifier's Tokenmust return `200 Success` statusPass1
Mavennet - BCGovOAuth Presentations ExchangeHolder gets Verifier's Tokenresponse body must include non-empty access_tokenPass1
Mavennet - BCGovOAuth Presentations ExchangeHolder gets Verifier's Tokenresponse body must represent `Bearer` tokenPass1
Mavennet - BCGovOAuth Presentations ExchangeHolder gets Verifier's Tokenreturned token must expire in the futurePass1
Mavennet - BCGovOAuth Presentations ExchangeHolder gets Verifier's Token`access_token` persisted to collectionVariablesPass1
Mavennet - BCGovOAuth Presentations ExchangeGet Verifier Organization DIDsStatus code is 200Pass1
Mavennet - BCGovOAuth Presentations ExchangeGet Verifier Organization DIDsIssuer makes unauthenticated discovery of verifiers exchange endpoint. `verifier_exchange_endpoint` is persisted to collectionVariablesPass1
Mavennet - BCGovOAuth Presentations ExchangePresentationmust return `200 Success` statusPass1
Mavennet - BCGovOAuth Presentations ExchangePresentationContent-Type header is application/jsonPass1
MavennetCredentials Status UpdateGet Access Tokenmust return `200 Success` statusPass1
MavennetCredentials Status UpdateGet Access Tokenresponse body must include non-empty access_tokenPass1
MavennetCredentials Status UpdateGet Access Tokenresponse body must represent `Bearer` tokenPass1
MavennetCredentials Status UpdateGet Access Tokenreturned token must expire in the futurePass1
MavennetCredentials Status UpdateGet Access Token`access_token` persisted to collectionVariablesPass1
MavennetCredentials Status UpdateGet Organization DIDs`access_token` collection variable must be setPass1
MavennetCredentials Status UpdateGet Organization DIDsStatus code is 200Pass1
MavennetCredentials Status UpdateGet Organization DIDsmust include valid JSON response bodyPass1
MavennetCredentials Status UpdateGet Organization DIDsdidDocument must be present in response bodyPass1
MavennetCredentials Status UpdateGet Organization DIDsverification method controller must match did subjectPass1
MavennetCredentials Status UpdateGet Organization DIDs`credential_issuer_id` persisted to collectionVariablesPass1
MavennetCredentials Status UpdateIssue Credential`access_token` collection variable must be setPass1
MavennetCredentials Status UpdateIssue Credential`credential_issuer_id` collection variable must be setPass1
MavennetCredentials Status UpdateIssue Credentialmust return `201 Created` statusPass1
MavennetCredentials Status UpdateIssue Credential`verifiable_credential` persisted to collectionVariablesPass1
MavennetCredentials Status UpdateVerify Credential`access_token` collection variable must be setPass1
MavennetCredentials Status UpdateVerify Credential`verifiable_credential` collection variable must be setPass1
MavennetCredentials Status UpdateVerify Credentialmust return `200 Success` statusPass1
MavennetCredentials Status UpdateVerify Credentialverification should be successfulPass1
MavennetCredentials Status UpdateUpdate Credential Status`access_token` collection variable must be setPass1
MavennetCredentials Status UpdateUpdate Credential Status`verifiable_credential_id` local variable must be setPass1
MavennetCredentials Status UpdateUpdate Credential Statusmust return `200 Success` statusFailexpected response to have status code 200 but got 4000
MavennetCredentials Status UpdateVerify Status Update`access_token` collection variable must be setPass1
MavennetCredentials Status UpdateVerify Status Update`verifiable_credential` collection variable must be setPass1
MavennetCredentials Status UpdateVerify Status Updatemust return `200 Success` statusPass1
MavennetCredentials Status UpdateVerify Status UpdateResponse 'verified' property should be falseFailexpected true to be false0
GS1US - mesur.ioOAuth Presentations ExchangeHolder gets Verifier's Tokenmust return `200 Success` statusPass1
GS1US - mesur.ioOAuth Presentations ExchangeHolder gets Verifier's Tokenresponse body must include non-empty access_tokenPass1
GS1US - mesur.ioOAuth Presentations ExchangeHolder gets Verifier's Tokenresponse body must represent `Bearer` tokenPass1
GS1US - mesur.ioOAuth Presentations ExchangeHolder gets Verifier's Tokenreturned token must expire in the futurePass1
GS1US - mesur.ioOAuth Presentations ExchangeHolder gets Verifier's Token`access_token` persisted to collectionVariablesPass1
GS1US - mesur.ioOAuth Presentations ExchangeGet Verifier Organization DIDsStatus code is 200Pass1
GS1US - mesur.ioOAuth Presentations ExchangeGet Verifier Organization DIDsIssuer makes unauthenticated discovery of verifiers exchange endpoint. `verifier_exchange_endpoint` is persisted to collectionVariablesPass1
GS1US - mesur.ioOAuth Presentations ExchangePresentationmust return `200 Success` statusPass1
GS1US - mesur.ioOAuth Presentations ExchangePresentationContent-Type header is application/jsonPass1
BCGov - mesur.ioOAuth Presentations ExchangeHolder gets Verifier's Tokenmust return `200 Success` statusPass1
BCGov - mesur.ioOAuth Presentations ExchangeHolder gets Verifier's Tokenresponse body must include non-empty access_tokenPass1
BCGov - mesur.ioOAuth Presentations ExchangeHolder gets Verifier's Tokenresponse body must represent `Bearer` tokenPass1
BCGov - mesur.ioOAuth Presentations ExchangeHolder gets Verifier's Tokenreturned token must expire in the futurePass1
BCGov - mesur.ioOAuth Presentations ExchangeHolder gets Verifier's Token`access_token` persisted to collectionVariablesPass1
BCGov - mesur.ioOAuth Presentations ExchangeGet Verifier Organization DIDsStatus code is 200Pass1
BCGov - mesur.ioOAuth Presentations ExchangeGet Verifier Organization DIDsIssuer makes unauthenticated discovery of verifiers exchange endpoint. `verifier_exchange_endpoint` is persisted to collectionVariablesPass1
BCGov - mesur.ioOAuth Presentations ExchangePresentationmust return `200 Success` statusPass1
BCGov - mesur.ioOAuth Presentations ExchangePresentationContent-Type header is application/jsonPass1
GS1USDID Web DiscoveryGet Access Tokenmust return `200 Success` statusPass1
GS1USDID Web DiscoveryGet Access Tokenresponse body must include non-empty access_tokenPass1
GS1USDID Web DiscoveryGet Access Tokenresponse body must represent `Bearer` tokenPass1
GS1USDID Web DiscoveryGet Access Tokenreturned token must expire in the futurePass1
GS1USDID Web DiscoveryGet Access Token`access_token` persisted to collectionVariablesPass1
GS1USDID Web DiscoveryGet Organization DIDsStatus code is 200Pass1
GS1USDID Web DiscoveryGet Organization DIDsmust include valid JSON response bodyPass1
GS1USDID Web DiscoveryGet Organization DIDsdidDocument must be present in response bodyPass1
GS1USDID Web DiscoveryGet Organization DIDsResponse must include 'service' arrayPass1
GS1USDID Web DiscoveryGet Organization DIDs'service' array must define Traceability API service endpointPass1
GS1USDID Web DiscoveryGet Organization DIDsverification method controller must match did subjectPass1
Mavennet - mesur.ioOAuth Presentations ExchangeHolder gets Verifier's Tokenmust return `200 Success` statusPass1
Mavennet - mesur.ioOAuth Presentations ExchangeHolder gets Verifier's Tokenresponse body must include non-empty access_tokenPass1
Mavennet - mesur.ioOAuth Presentations ExchangeHolder gets Verifier's Tokenresponse body must represent `Bearer` tokenPass1
Mavennet - mesur.ioOAuth Presentations ExchangeHolder gets Verifier's Tokenreturned token must expire in the futurePass1
Mavennet - mesur.ioOAuth Presentations ExchangeHolder gets Verifier's Token`access_token` persisted to collectionVariablesPass1
Mavennet - mesur.ioOAuth Presentations ExchangeGet Verifier Organization DIDsStatus code is 200Pass1
Mavennet - mesur.ioOAuth Presentations ExchangeGet Verifier Organization DIDsIssuer makes unauthenticated discovery of verifiers exchange endpoint. `verifier_exchange_endpoint` is persisted to collectionVariablesPass1
Mavennet - mesur.ioOAuth Presentations ExchangePresentationmust return `200 Success` statusPass1
Mavennet - mesur.ioOAuth Presentations ExchangePresentationContent-Type header is application/jsonPass1
BCGovCredentials Status UpdateGet Access Tokenmust return `200 Success` statusPass1
BCGovCredentials Status UpdateGet Access Tokenresponse body must include non-empty access_tokenPass1
BCGovCredentials Status UpdateGet Access Tokenresponse body must represent `Bearer` tokenPass1
BCGovCredentials Status UpdateGet Access Tokenreturned token must expire in the futurePass1
BCGovCredentials Status UpdateGet Access Token`access_token` persisted to collectionVariablesPass1
BCGovCredentials Status UpdateGet Organization DIDs`access_token` collection variable must be setPass1
BCGovCredentials Status UpdateGet Organization DIDsStatus code is 200Pass1
BCGovCredentials Status UpdateGet Organization DIDsmust include valid JSON response bodyPass1
BCGovCredentials Status UpdateGet Organization DIDsdidDocument must be present in response bodyPass1
BCGovCredentials Status UpdateGet Organization DIDsverification method controller must match did subjectPass1
BCGovCredentials Status UpdateGet Organization DIDs`credential_issuer_id` persisted to collectionVariablesPass1
BCGovCredentials Status UpdateIssue Credential`access_token` collection variable must be setPass1
BCGovCredentials Status UpdateIssue Credential`credential_issuer_id` collection variable must be setPass1
BCGovCredentials Status UpdateIssue Credentialmust return `201 Created` statusPass1
BCGovCredentials Status UpdateIssue Credential`verifiable_credential` persisted to collectionVariablesPass1
BCGovCredentials Status UpdateVerify Credential`access_token` collection variable must be setPass1
BCGovCredentials Status UpdateVerify Credential`verifiable_credential` collection variable must be setPass1
BCGovCredentials Status UpdateVerify Credentialmust return `200 Success` statusPass1
BCGovCredentials Status UpdateVerify Credentialverification should be successfulPass1
BCGovCredentials Status UpdateUpdate Credential Status`access_token` collection variable must be setPass1
BCGovCredentials Status UpdateUpdate Credential Status`verifiable_credential_id` local variable must be setPass1
BCGovCredentials Status UpdateUpdate Credential Statusmust return `200 Success` statusPass1
BCGovCredentials Status UpdateVerify Status Update`access_token` collection variable must be setPass1
BCGovCredentials Status UpdateVerify Status Update`verifiable_credential` collection variable must be setPass1
BCGovCredentials Status UpdateVerify Status Updatemust return `200 Success` statusPass1
BCGovCredentials Status UpdateVerify Status UpdateResponse 'verified' property should be falsePass1
BCGovDID Web DiscoveryGet Access Tokenmust return `200 Success` statusPass1
BCGovDID Web DiscoveryGet Access Tokenresponse body must include non-empty access_tokenPass1
BCGovDID Web DiscoveryGet Access Tokenresponse body must represent `Bearer` tokenPass1
BCGovDID Web DiscoveryGet Access Tokenreturned token must expire in the futurePass1
BCGovDID Web DiscoveryGet Access Token`access_token` persisted to collectionVariablesPass1
BCGovDID Web DiscoveryGet Organization DIDsStatus code is 200Pass1
BCGovDID Web DiscoveryGet Organization DIDsmust include valid JSON response bodyPass1
BCGovDID Web DiscoveryGet Organization DIDsdidDocument must be present in response bodyPass1
BCGovDID Web DiscoveryGet Organization DIDsResponse must include 'service' arrayPass1
BCGovDID Web DiscoveryGet Organization DIDs'service' array must define Traceability API service endpointPass1
BCGovDID Web DiscoveryGet Organization DIDsverification method controller must match did subjectPass1
mesur.io - MavennetOAuth Presentations ExchangeHolder gets Verifier's Tokenmust return `200 Success` statusPass1
mesur.io - MavennetOAuth Presentations ExchangeHolder gets Verifier's Tokenresponse body must include non-empty access_tokenPass1
mesur.io - MavennetOAuth Presentations ExchangeHolder gets Verifier's Tokenresponse body must represent `Bearer` tokenPass1
mesur.io - MavennetOAuth Presentations ExchangeHolder gets Verifier's Tokenreturned token must expire in the futurePass1
mesur.io - MavennetOAuth Presentations ExchangeHolder gets Verifier's Token`access_token` persisted to collectionVariablesPass1
mesur.io - MavennetOAuth Presentations ExchangeGet Verifier Organization DIDsStatus code is 200Pass1
mesur.io - MavennetOAuth Presentations ExchangeGet Verifier Organization DIDsIssuer makes unauthenticated discovery of verifiers exchange endpoint. `verifier_exchange_endpoint` is persisted to collectionVariablesPass1
mesur.io - MavennetOAuth Presentations ExchangePresentationmust return `200 Success` statusPass1
mesur.io - MavennetOAuth Presentations ExchangePresentationContent-Type header is application/jsonPass1
GS1US - BCGovOAuth Presentations ExchangeHolder gets Verifier's Tokenmust return `200 Success` statusPass1
GS1US - BCGovOAuth Presentations ExchangeHolder gets Verifier's Tokenresponse body must include non-empty access_tokenPass1
GS1US - BCGovOAuth Presentations ExchangeHolder gets Verifier's Tokenresponse body must represent `Bearer` tokenPass1
GS1US - BCGovOAuth Presentations ExchangeHolder gets Verifier's Tokenreturned token must expire in the futurePass1
GS1US - BCGovOAuth Presentations ExchangeHolder gets Verifier's Token`access_token` persisted to collectionVariablesPass1
GS1US - BCGovOAuth Presentations ExchangeGet Verifier Organization DIDsStatus code is 200Pass1
GS1US - BCGovOAuth Presentations ExchangeGet Verifier Organization DIDsIssuer makes unauthenticated discovery of verifiers exchange endpoint. `verifier_exchange_endpoint` is persisted to collectionVariablesPass1
GS1US - BCGovOAuth Presentations ExchangePresentationmust return `200 Success` statusPass1
GS1US - BCGovOAuth Presentations ExchangePresentationContent-Type header is application/jsonPass1
Mavennet - GS1USOAuth Presentations ExchangeHolder gets Verifier's Tokenmust return `200 Success` statusPass1
Mavennet - GS1USOAuth Presentations ExchangeHolder gets Verifier's Tokenresponse body must include non-empty access_tokenPass1
Mavennet - GS1USOAuth Presentations ExchangeHolder gets Verifier's Tokenresponse body must represent `Bearer` tokenPass1
Mavennet - GS1USOAuth Presentations ExchangeHolder gets Verifier's Tokenreturned token must expire in the futurePass1
Mavennet - GS1USOAuth Presentations ExchangeHolder gets Verifier's Token`access_token` persisted to collectionVariablesPass1
Mavennet - GS1USOAuth Presentations ExchangeGet Verifier Organization DIDsStatus code is 200Pass1
Mavennet - GS1USOAuth Presentations ExchangeGet Verifier Organization DIDsIssuer makes unauthenticated discovery of verifiers exchange endpoint. `verifier_exchange_endpoint` is persisted to collectionVariablesPass1
Mavennet - GS1USOAuth Presentations ExchangePresentationmust return `200 Success` statusPass1
Mavennet - GS1USOAuth Presentations ExchangePresentationContent-Type header is application/jsonPass1
mesur.io - GS1USOAuth Presentations ExchangeHolder gets Verifier's Tokenmust return `200 Success` statusPass1
mesur.io - GS1USOAuth Presentations ExchangeHolder gets Verifier's Tokenresponse body must include non-empty access_tokenPass1
mesur.io - GS1USOAuth Presentations ExchangeHolder gets Verifier's Tokenresponse body must represent `Bearer` tokenPass1
mesur.io - GS1USOAuth Presentations ExchangeHolder gets Verifier's Tokenreturned token must expire in the futurePass1
mesur.io - GS1USOAuth Presentations ExchangeHolder gets Verifier's Token`access_token` persisted to collectionVariablesPass1
mesur.io - GS1USOAuth Presentations ExchangeGet Verifier Organization DIDsStatus code is 200Pass1
mesur.io - GS1USOAuth Presentations ExchangeGet Verifier Organization DIDsIssuer makes unauthenticated discovery of verifiers exchange endpoint. `verifier_exchange_endpoint` is persisted to collectionVariablesPass1
mesur.io - GS1USOAuth Presentations ExchangePresentationmust return `200 Success` statusPass1
mesur.io - GS1USOAuth Presentations ExchangePresentationContent-Type header is application/jsonPass1
MavennetWorkflowHolder gets Verifier's Tokenmust return `200 Success` statusPass1
MavennetWorkflowHolder gets Verifier's Tokenresponse body must include non-empty access_tokenPass1
MavennetWorkflowHolder gets Verifier's Tokenresponse body must represent `Bearer` tokenPass1
MavennetWorkflowHolder gets Verifier's Tokenreturned token must expire in the futurePass1
MavennetWorkflowHolder gets Verifier's Token`access_token` persisted to collectionVariablesPass1
MavennetWorkflowGet Verifier Organization DIDsStatus code is 200Pass1
MavennetWorkflowGet Verifier Organization DIDsIssuer makes unauthenticated discovery of verifiers exchange endpoint. `verifier_exchange_endpoint` is persisted to collectionVariablesPass1
MavennetWorkflowPresentationmust return `200 Success` statusPass1
MavennetWorkflowPresentationContent-Type header is application/jsonPass1
BCGov - GS1USOAuth Presentations ExchangeHolder gets Verifier's Tokenmust return `200 Success` statusPass1
BCGov - GS1USOAuth Presentations ExchangeHolder gets Verifier's Tokenresponse body must include non-empty access_tokenPass1
BCGov - GS1USOAuth Presentations ExchangeHolder gets Verifier's Tokenresponse body must represent `Bearer` tokenPass1
BCGov - GS1USOAuth Presentations ExchangeHolder gets Verifier's Tokenreturned token must expire in the futurePass1
BCGov - GS1USOAuth Presentations ExchangeHolder gets Verifier's Token`access_token` persisted to collectionVariablesPass1
BCGov - GS1USOAuth Presentations ExchangeGet Verifier Organization DIDsStatus code is 200Pass1
BCGov - GS1USOAuth Presentations ExchangeGet Verifier Organization DIDsIssuer makes unauthenticated discovery of verifiers exchange endpoint. `verifier_exchange_endpoint` is persisted to collectionVariablesPass1
BCGov - GS1USOAuth Presentations ExchangePresentationmust return `200 Success` statusPass1
BCGov - GS1USOAuth Presentations ExchangePresentationContent-Type header is application/jsonPass1
GS1USWorkflowHolder gets Verifier's Tokenmust return `200 Success` statusPass1
GS1USWorkflowHolder gets Verifier's Tokenresponse body must include non-empty access_tokenPass1
GS1USWorkflowHolder gets Verifier's Tokenresponse body must represent `Bearer` tokenPass1
GS1USWorkflowHolder gets Verifier's Tokenreturned token must expire in the futurePass1
GS1USWorkflowHolder gets Verifier's Token`access_token` persisted to collectionVariablesPass1
GS1USWorkflowGet Verifier Organization DIDsStatus code is 200Pass1
GS1USWorkflowGet Verifier Organization DIDsIssuer makes unauthenticated discovery of verifiers exchange endpoint. `verifier_exchange_endpoint` is persisted to collectionVariablesPass1
GS1USWorkflowPresentationmust return `200 Success` statusPass1
GS1USWorkflowPresentationContent-Type header is application/jsonPass1
mesur.ioDID Web DiscoveryGet Access Tokenmust return `200 Success` statusPass1
mesur.ioDID Web DiscoveryGet Access Tokenresponse body must include non-empty access_tokenPass1
mesur.ioDID Web DiscoveryGet Access Tokenresponse body must represent `Bearer` tokenPass1
mesur.ioDID Web DiscoveryGet Access Tokenreturned token must expire in the futurePass1
mesur.ioDID Web DiscoveryGet Access Token`access_token` persisted to collectionVariablesPass1
mesur.ioDID Web DiscoveryGet Organization DIDsStatus code is 200Pass1
mesur.ioDID Web DiscoveryGet Organization DIDsmust include valid JSON response bodyPass1
mesur.ioDID Web DiscoveryGet Organization DIDsdidDocument must be present in response bodyPass1
mesur.ioDID Web DiscoveryGet Organization DIDsResponse must include 'service' arrayPass1
mesur.ioDID Web DiscoveryGet Organization DIDs'service' array must define Traceability API service endpointPass1
mesur.ioDID Web DiscoveryGet Organization DIDsverification method controller must match did subjectPass1
mesur.ioWorkflowHolder gets Verifier's Tokenmust return `200 Success` statusPass1
mesur.ioWorkflowHolder gets Verifier's Tokenresponse body must include non-empty access_tokenPass1
mesur.ioWorkflowHolder gets Verifier's Tokenresponse body must represent `Bearer` tokenPass1
mesur.ioWorkflowHolder gets Verifier's Tokenreturned token must expire in the futurePass1
mesur.ioWorkflowHolder gets Verifier's Token`access_token` persisted to collectionVariablesPass1
mesur.ioWorkflowGet Verifier Organization DIDsStatus code is 200Pass1
mesur.ioWorkflowGet Verifier Organization DIDsIssuer makes unauthenticated discovery of verifiers exchange endpoint. `verifier_exchange_endpoint` is persisted to collectionVariablesPass1
mesur.ioWorkflowPresentationmust return `200 Success` statusPass1
mesur.ioWorkflowPresentationContent-Type header is application/jsonPass1
BCGovWorkflowHolder gets Verifier's Tokenmust return `200 Success` statusPass1
BCGovWorkflowHolder gets Verifier's Tokenresponse body must include non-empty access_tokenPass1
BCGovWorkflowHolder gets Verifier's Tokenresponse body must represent `Bearer` tokenPass1
BCGovWorkflowHolder gets Verifier's Tokenreturned token must expire in the futurePass1
BCGovWorkflowHolder gets Verifier's Token`access_token` persisted to collectionVariablesPass1
BCGovWorkflowGet Verifier Organization DIDsStatus code is 200Pass1
BCGovWorkflowGet Verifier Organization DIDsIssuer makes unauthenticated discovery of verifiers exchange endpoint. `verifier_exchange_endpoint` is persisted to collectionVariablesPass1
BCGovWorkflowPresentationmust return `200 Success` statusPass1
BCGovWorkflowPresentationContent-Type header is application/jsonPass1
mesur.io - BCGovOAuth Presentations ExchangeHolder gets Verifier's Tokenmust return `200 Success` statusPass1
mesur.io - BCGovOAuth Presentations ExchangeHolder gets Verifier's Tokenresponse body must include non-empty access_tokenPass1
mesur.io - BCGovOAuth Presentations ExchangeHolder gets Verifier's Tokenresponse body must represent `Bearer` tokenPass1
mesur.io - BCGovOAuth Presentations ExchangeHolder gets Verifier's Tokenreturned token must expire in the futurePass1
mesur.io - BCGovOAuth Presentations ExchangeHolder gets Verifier's Token`access_token` persisted to collectionVariablesPass1
mesur.io - BCGovOAuth Presentations ExchangeGet Verifier Organization DIDsStatus code is 200Pass1
mesur.io - BCGovOAuth Presentations ExchangeGet Verifier Organization DIDsIssuer makes unauthenticated discovery of verifiers exchange endpoint. `verifier_exchange_endpoint` is persisted to collectionVariablesPass1
mesur.io - BCGovOAuth Presentations ExchangePresentationmust return `200 Success` statusPass1
mesur.io - BCGovOAuth Presentations ExchangePresentationContent-Type header is application/jsonPass1
BCGov - MavennetOAuth Presentations ExchangeHolder gets Verifier's Tokenmust return `200 Success` statusPass1
BCGov - MavennetOAuth Presentations ExchangeHolder gets Verifier's Tokenresponse body must include non-empty access_tokenPass1
BCGov - MavennetOAuth Presentations ExchangeHolder gets Verifier's Tokenresponse body must represent `Bearer` tokenPass1
BCGov - MavennetOAuth Presentations ExchangeHolder gets Verifier's Tokenreturned token must expire in the futurePass1
BCGov - MavennetOAuth Presentations ExchangeHolder gets Verifier's Token`access_token` persisted to collectionVariablesPass1
BCGov - MavennetOAuth Presentations ExchangeGet Verifier Organization DIDsStatus code is 200Pass1
BCGov - MavennetOAuth Presentations ExchangeGet Verifier Organization DIDsIssuer makes unauthenticated discovery of verifiers exchange endpoint. `verifier_exchange_endpoint` is persisted to collectionVariablesPass1
BCGov - MavennetOAuth Presentations ExchangePresentationmust return `200 Success` statusPass1
BCGov - MavennetOAuth Presentations ExchangePresentationContent-Type header is application/jsonPass1
GS1USCredentials Status UpdateGet Access Tokenmust return `200 Success` statusPass1
GS1USCredentials Status UpdateGet Access Tokenresponse body must include non-empty access_tokenPass1
GS1USCredentials Status UpdateGet Access Tokenresponse body must represent `Bearer` tokenPass1
GS1USCredentials Status UpdateGet Access Tokenreturned token must expire in the futurePass1
GS1USCredentials Status UpdateGet Access Token`access_token` persisted to collectionVariablesPass1
GS1USCredentials Status UpdateGet Organization DIDs`access_token` collection variable must be setPass1
GS1USCredentials Status UpdateGet Organization DIDsStatus code is 200Pass1
GS1USCredentials Status UpdateGet Organization DIDsmust include valid JSON response bodyPass1
GS1USCredentials Status UpdateGet Organization DIDsdidDocument must be present in response bodyPass1
GS1USCredentials Status UpdateGet Organization DIDsverification method controller must match did subjectPass1
GS1USCredentials Status UpdateGet Organization DIDs`credential_issuer_id` persisted to collectionVariablesPass1
GS1USCredentials Status UpdateIssue Credential`access_token` collection variable must be setPass1
GS1USCredentials Status UpdateIssue Credential`credential_issuer_id` collection variable must be setPass1
GS1USCredentials Status UpdateIssue Credentialmust return `201 Created` statusFailexpected response to have status code 201 but got 4000
GS1USCredentials Status UpdateIssue Credential`verifiable_credential` persisted to collectionVariablesPass1
GS1USCredentials Status UpdateVerify Credential`access_token` collection variable must be setPass1
GS1USCredentials Status UpdateVerify Credential`verifiable_credential` collection variable must be setPass1
GS1USCredentials Status UpdateVerify Credentialmust return `200 Success` statusFailexpected response to have status code 200 but got 4000
GS1USCredentials Status UpdateVerify Credentialverification should be successfulFailexpected undefined to be true0
GS1USCredentials Status UpdateUpdate Credential Status`access_token` collection variable must be setPass1
GS1USCredentials Status UpdateUpdate Credential Status`verifiable_credential_id` local variable must be setPass1
GS1USCredentials Status UpdateUpdate Credential Statusmust return `200 Success` statusFailexpected response to have status code 200 but got 4000
GS1USCredentials Status UpdateVerify Status Update`access_token` collection variable must be setPass1
GS1USCredentials Status UpdateVerify Status Update`verifiable_credential` collection variable must be setPass1
GS1USCredentials Status UpdateVerify Status Updatemust return `200 Success` statusFailexpected response to have status code 200 but got 4000
GS1USCredentials Status UpdateVerify Status UpdateResponse 'verified' property should be falseFailexpected undefined to be false0
MavennetDID Web DiscoveryGet Access Tokenmust return `200 Success` statusPass1
MavennetDID Web DiscoveryGet Access Tokenresponse body must include non-empty access_tokenPass1
MavennetDID Web DiscoveryGet Access Tokenresponse body must represent `Bearer` tokenPass1
MavennetDID Web DiscoveryGet Access Tokenreturned token must expire in the futurePass1
MavennetDID Web DiscoveryGet Access Token`access_token` persisted to collectionVariablesPass1
MavennetDID Web DiscoveryGet Organization DIDsStatus code is 200Pass1
MavennetDID Web DiscoveryGet Organization DIDsmust include valid JSON response bodyPass1
MavennetDID Web DiscoveryGet Organization DIDsdidDocument must be present in response bodyPass1
MavennetDID Web DiscoveryGet Organization DIDsResponse must include 'service' arrayPass1
MavennetDID Web DiscoveryGet Organization DIDs'service' array must define Traceability API service endpointPass1
MavennetDID Web DiscoveryGet Organization DIDsverification method controller must match did subjectPass1
mesur.ioCredentials Status UpdateGet Access Tokenmust return `200 Success` statusPass1
mesur.ioCredentials Status UpdateGet Access Tokenresponse body must include non-empty access_tokenPass1
mesur.ioCredentials Status UpdateGet Access Tokenresponse body must represent `Bearer` tokenPass1
mesur.ioCredentials Status UpdateGet Access Tokenreturned token must expire in the futurePass1
mesur.ioCredentials Status UpdateGet Access Token`access_token` persisted to collectionVariablesPass1
mesur.ioCredentials Status UpdateGet Organization DIDs`access_token` collection variable must be setPass1
mesur.ioCredentials Status UpdateGet Organization DIDsStatus code is 200Pass1
mesur.ioCredentials Status UpdateGet Organization DIDsmust include valid JSON response bodyPass1
mesur.ioCredentials Status UpdateGet Organization DIDsdidDocument must be present in response bodyPass1
mesur.ioCredentials Status UpdateGet Organization DIDsverification method controller must match did subjectPass1
mesur.ioCredentials Status UpdateGet Organization DIDs`credential_issuer_id` persisted to collectionVariablesPass1
mesur.ioCredentials Status UpdateIssue Credential`access_token` collection variable must be setPass1
mesur.ioCredentials Status UpdateIssue Credential`credential_issuer_id` collection variable must be setPass1
mesur.ioCredentials Status UpdateIssue Credentialmust return `201 Created` statusFailexpected response to have status code 201 but got 4000
mesur.ioCredentials Status UpdateIssue Credential`verifiable_credential` persisted to collectionVariablesPass1
mesur.ioCredentials Status UpdateVerify Credential`access_token` collection variable must be setPass1
mesur.ioCredentials Status UpdateVerify Credential`verifiable_credential` collection variable must be setPass1
mesur.ioCredentials Status UpdateVerify Credentialmust return `200 Success` statusFailexpected response to have status code 200 but got 4000
mesur.ioCredentials Status UpdateVerify Credentialverification should be successfulFailexpected undefined to be true0
mesur.ioCredentials Status UpdateUpdate Credential Status`access_token` collection variable must be setPass1
mesur.ioCredentials Status UpdateUpdate Credential Status`verifiable_credential_id` local variable must be setPass1
mesur.ioCredentials Status UpdateUpdate Credential Statusmust return `200 Success` statusFailexpected response to have status code 200 but got 4000
mesur.ioCredentials Status UpdateVerify Status Update`access_token` collection variable must be setPass1
mesur.ioCredentials Status UpdateVerify Status Update`verifiable_credential` collection variable must be setPass1
mesur.ioCredentials Status UpdateVerify Status Updatemust return `200 Success` statusFailexpected response to have status code 200 but got 4000
mesur.ioCredentials Status UpdateVerify Status UpdateResponse 'verified' property should be falseFailexpected undefined to be false0
+
+
+
+
+
+ +
+
+
+
+
+
+
+
+ + + + \ No newline at end of file diff --git a/reports/interoperability-1724980304/index.json b/reports/interoperability-1724980304/index.json new file mode 100644 index 0000000000..a9156bd80a --- /dev/null +++ b/reports/interoperability-1724980304/index.json @@ -0,0 +1,50 @@ +{ + "items": [ + "https://w3id.org/traceability/interoperability/reports/interoperability-1724980304/10625048794-interop-credentials-revocation-BCGov.html", + "https://w3id.org/traceability/interoperability/reports/interoperability-1724980304/10625048794-interop-credentials-revocation-BCGov.json", + "https://w3id.org/traceability/interoperability/reports/interoperability-1724980304/10625048794-interop-credentials-revocation-GS1US.html", + "https://w3id.org/traceability/interoperability/reports/interoperability-1724980304/10625048794-interop-credentials-revocation-GS1US.json", + "https://w3id.org/traceability/interoperability/reports/interoperability-1724980304/10625048794-interop-credentials-revocation-Mavennet.html", + "https://w3id.org/traceability/interoperability/reports/interoperability-1724980304/10625048794-interop-credentials-revocation-Mavennet.json", + "https://w3id.org/traceability/interoperability/reports/interoperability-1724980304/10625048794-interop-credentials-revocation-mesur.io.html", + "https://w3id.org/traceability/interoperability/reports/interoperability-1724980304/10625048794-interop-credentials-revocation-mesur.io.json", + "https://w3id.org/traceability/interoperability/reports/interoperability-1724980304/10625048794-interop-did-web-discovery-BCGov.html", + "https://w3id.org/traceability/interoperability/reports/interoperability-1724980304/10625048794-interop-did-web-discovery-BCGov.json", + "https://w3id.org/traceability/interoperability/reports/interoperability-1724980304/10625048794-interop-did-web-discovery-GS1US.html", + "https://w3id.org/traceability/interoperability/reports/interoperability-1724980304/10625048794-interop-did-web-discovery-GS1US.json", + "https://w3id.org/traceability/interoperability/reports/interoperability-1724980304/10625048794-interop-did-web-discovery-Mavennet.html", + "https://w3id.org/traceability/interoperability/reports/interoperability-1724980304/10625048794-interop-did-web-discovery-Mavennet.json", + "https://w3id.org/traceability/interoperability/reports/interoperability-1724980304/10625048794-interop-did-web-discovery-mesur.io.html", + "https://w3id.org/traceability/interoperability/reports/interoperability-1724980304/10625048794-interop-did-web-discovery-mesur.io.json", + "https://w3id.org/traceability/interoperability/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-BCGov-GS1US.html", + "https://w3id.org/traceability/interoperability/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-BCGov-GS1US.json", + "https://w3id.org/traceability/interoperability/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-BCGov-Mavennet.html", + "https://w3id.org/traceability/interoperability/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-BCGov-Mavennet.json", + "https://w3id.org/traceability/interoperability/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-BCGov-mesur.io.html", + "https://w3id.org/traceability/interoperability/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-BCGov-mesur.io.json", + "https://w3id.org/traceability/interoperability/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-GS1US-BCGov.html", + "https://w3id.org/traceability/interoperability/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-GS1US-BCGov.json", + "https://w3id.org/traceability/interoperability/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-GS1US-mesur.io.html", + "https://w3id.org/traceability/interoperability/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-GS1US-mesur.io.json", + "https://w3id.org/traceability/interoperability/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-Mavennet-BCGov.html", + "https://w3id.org/traceability/interoperability/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-Mavennet-BCGov.json", + "https://w3id.org/traceability/interoperability/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-Mavennet-GS1US.html", + "https://w3id.org/traceability/interoperability/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-Mavennet-GS1US.json", + "https://w3id.org/traceability/interoperability/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-Mavennet-mesur.io.html", + "https://w3id.org/traceability/interoperability/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-Mavennet-mesur.io.json", + "https://w3id.org/traceability/interoperability/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-mesur.io-BCGov.html", + "https://w3id.org/traceability/interoperability/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-mesur.io-BCGov.json", + "https://w3id.org/traceability/interoperability/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-mesur.io-GS1US.html", + "https://w3id.org/traceability/interoperability/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-mesur.io-GS1US.json", + "https://w3id.org/traceability/interoperability/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-mesur.io-Mavennet.html", + "https://w3id.org/traceability/interoperability/reports/interoperability-1724980304/10625048794-interop-presentations-exchange-oauth-mesur.io-Mavennet.json", + "https://w3id.org/traceability/interoperability/reports/interoperability-1724980304/10625048794-traceable-presentation-workflow-BCGov.html", + "https://w3id.org/traceability/interoperability/reports/interoperability-1724980304/10625048794-traceable-presentation-workflow-BCGov.json", + "https://w3id.org/traceability/interoperability/reports/interoperability-1724980304/10625048794-traceable-presentation-workflow-GS1US.html", + "https://w3id.org/traceability/interoperability/reports/interoperability-1724980304/10625048794-traceable-presentation-workflow-GS1US.json", + "https://w3id.org/traceability/interoperability/reports/interoperability-1724980304/10625048794-traceable-presentation-workflow-Mavennet.html", + "https://w3id.org/traceability/interoperability/reports/interoperability-1724980304/10625048794-traceable-presentation-workflow-Mavennet.json", + "https://w3id.org/traceability/interoperability/reports/interoperability-1724980304/10625048794-traceable-presentation-workflow-mesur.io.html", + "https://w3id.org/traceability/interoperability/reports/interoperability-1724980304/10625048794-traceable-presentation-workflow-mesur.io.json" + ] +} \ No newline at end of file