diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
commit | 36d22d82aa202bb199967e9512281e9a53db42c9 (patch) | |
tree | 105e8c98ddea1c1e4784a60a5a6410fa416be2de /testing/web-platform/tests/tools/wave/test | |
parent | Initial commit. (diff) | |
download | firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.tar.xz firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.zip |
Adding upstream version 115.7.0esr.upstream/115.7.0esr
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/web-platform/tests/tools/wave/test')
-rw-r--r-- | testing/web-platform/tests/tools/wave/test/WAVE Local.postman_environment.json | 34 | ||||
-rw-r--r-- | testing/web-platform/tests/tools/wave/test/WAVE Server REST API Tests.postman_collection.json | 9833 |
2 files changed, 9867 insertions, 0 deletions
diff --git a/testing/web-platform/tests/tools/wave/test/WAVE Local.postman_environment.json b/testing/web-platform/tests/tools/wave/test/WAVE Local.postman_environment.json new file mode 100644 index 0000000000..b1a6a089ab --- /dev/null +++ b/testing/web-platform/tests/tools/wave/test/WAVE Local.postman_environment.json @@ -0,0 +1,34 @@ +{ + "id": "37be8ec4-7855-4554-867e-7a5d2a4f99e6", + "name": "WAVE Local", + "values": [ + { + "key": "host", + "value": "web-platform.test", + "enabled": true + }, + { + "key": "port", + "value": "8000", + "enabled": true + }, + { + "key": "protocol", + "value": "http", + "enabled": true + }, + { + "key": "web_root", + "value": "_wave", + "enabled": true + }, + { + "key": "device_timeout", + "value": "60000", + "enabled": true + } + ], + "_postman_variable_scope": "environment", + "_postman_exported_at": "2020-05-25T12:12:37.098Z", + "_postman_exported_using": "Postman/7.25.0" +}
\ No newline at end of file diff --git a/testing/web-platform/tests/tools/wave/test/WAVE Server REST API Tests.postman_collection.json b/testing/web-platform/tests/tools/wave/test/WAVE Server REST API Tests.postman_collection.json new file mode 100644 index 0000000000..93cbedb504 --- /dev/null +++ b/testing/web-platform/tests/tools/wave/test/WAVE Server REST API Tests.postman_collection.json @@ -0,0 +1,9833 @@ +{ + "info": { + "_postman_id": "ccd6117a-6d61-4617-a6a1-7115db4d4d92", + "name": "WAVE Server REST API Tests", + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" + }, + "item": [ + { + "name": "Read Available Tests", + "item": [ + { + "name": "Read Available Tests", + "event": [ + { + "listen": "test", + "script": { + "id": "051bef94-5544-4ddb-9d85-167677ebecb2", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var availableTests = pm.response.json();", + "", + "pm.test(\"JSON structure is as expected\", function () {", + " pm.expect(typeof availableTests).to.equal(\"object\");", + " for (var api of Object.keys(availableTests)) {", + " pm.expect(availableTests[api]).to.be.an.instanceof(Array);", + " var apiRegExp = new RegExp(\"^/\" + api, \"i\");", + " for (var test of availableTests[api]) {", + " pm.expect(test).to.match(apiRegExp);", + " }", + " }", + "});", + "", + "var includedTests = [];", + "var excludedTests = [];", + "var specialTimeoutTest = \"\";", + "", + "var apis = Object.keys(availableTests);", + "for(var api of apis) {", + " if (availableTests[api].length > 50) {", + " var subDirs = availableTests[api].map(test => test.split(\"/\").filter(part => !!part).join(\"/\").split(\"/\")[1]).reduce((acc, curr) => acc.indexOf(curr) === -1 ? acc.concat([curr]) : acc, []);", + " if (subDirs.length > 2) {", + " includedTests.push(\"/\" + api);", + " excludedTests.push(\"/\" + api + \"/\" + subDirs[0]);", + " specialTimeoutTest = availableTests[api][availableTests[api].length - 1];", + " break;", + " }", + " ", + " }", + "}", + "", + "pm.globals.set(\"available_tests\", JSON.stringify(availableTests));", + "pm.globals.set(\"included_tests\", JSON.stringify(includedTests));", + "pm.globals.set(\"excluded_tests\", JSON.stringify(excludedTests));", + "pm.globals.set(\"special_timeout_test\", specialTimeoutTest.replace(\".\", \"\"));" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {} + }, + { + "name": "Create and Read Sessions", + "item": [ + { + "name": "Start expiring session remove expiration date", + "item": [ + { + "name": "Create Session With Expiration", + "event": [ + { + "listen": "test", + "script": { + "id": "a8bf3e41-a7df-4c6b-8a20-3a1e6d8a51d9", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");", + "", + "pm.test(\"Responds with token in JSON format\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(jsonData.token).to.match(tokenRegex);", + "});", + "", + "", + "const response = pm.response.json();", + "const token = response.token;", + "pm.globals.set(\"session_token\", token);" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "id": "4370546f-b08c-4f77-9bd9-1cd14400665e", + "exec": [ + "var expirationDate = Date.now() + 10000;", + "pm.globals.set(\"expiration_date\", expirationDate);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n\t\"expiration_date\": {{expiration_date}}\n}" + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Status", + "event": [ + { + "listen": "test", + "script": { + "id": "3dcb5b6c-9151-49f7-a1a6-74475927b304", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");", + "", + "pm.test(\"JSON structure contains expiration date\", function () {", + " pm.expect(jsonData).to.have.property(\"expiration_date\");", + "});", + "", + "var expirationDate = pm.globals.get(\"expiration_date\");", + "", + "pm.test(\"Expiration date is as specified\", function () {", + " pm.expect(Date.parse(jsonData.expiration_date)).to.equal(expirationDate);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "status" + ] + } + }, + "response": [] + }, + { + "name": "Start Session", + "event": [ + { + "listen": "test", + "script": { + "id": "8d05578a-e2d6-41e9-a2a4-aa7d92bfbbce", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/start", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "start" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Status", + "event": [ + { + "listen": "test", + "script": { + "id": "4c5e3ba4-e27b-4341-8cf8-74ed047a8747", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");", + "", + "pm.test(\"JSON structure contains expiration date\", function () {", + " pm.expect(jsonData).to.have.property(\"expiration_date\");", + "});", + "", + "pm.test(\"Expiration date is null\", function () {", + " pm.expect(jsonData.expiration_date).to.be.null;", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "status" + ] + } + }, + "response": [] + }, + { + "name": "Clean Up", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + } + ], + "protocolProfileBehavior": {} + }, + { + "name": "Read Public Sessions", + "item": [ + { + "name": "Read Public Sessions", + "event": [ + { + "listen": "test", + "script": { + "id": "1081afd8-a772-4565-b03d-b58f773cbb65", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Response is JSON Array\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData).to.be.an.instanceof(Array);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/public", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "public" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {} + }, + { + "name": "Find Session", + "item": [ + { + "name": "Create Session No Configuration", + "event": [ + { + "listen": "test", + "script": { + "id": "268e8a31-87bb-4ec5-81d5-87dc74096828", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");", + "", + "pm.test(\"Responds with token in JSON format\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(jsonData.token).to.match(tokenRegex);", + "});", + "", + "", + "const response = pm.response.json();", + "const token = response.token;", + "pm.globals.set(\"session_token\", token);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "" + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions" + ] + } + }, + "response": [] + }, + { + "name": "Find Session Token", + "event": [ + { + "listen": "prerequest", + "script": { + "id": "625fcc2a-f7b1-403c-b5c5-56db7c5bcee5", + "exec": [ + "const token = pm.globals.get(\"session_token\");", + "pm.globals.set(\"session_token_fragment\", token.split(\"-\").shift());" + ], + "type": "text/javascript" + } + }, + { + "listen": "test", + "script": { + "id": "8e04212f-e259-413f-98ee-e366cd3adfdd", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "const sessionToken = pm.globals.get(\"session_token\");", + "", + "pm.test(\"Found token is original token\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.token).to.equal(sessionToken);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token_fragment}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token_fragment}}" + ] + } + }, + "response": [] + }, + { + "name": "Clean Up", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}" + ] + } + }, + "response": [] + }, + { + "name": "Find Session Too Short Fragment", + "event": [ + { + "listen": "prerequest", + "script": { + "id": "6f8429e3-9c12-423c-baaf-8f8de0e4ea49", + "exec": [ + "const token = pm.globals.get(\"session_token\");", + "pm.globals.set(\"session_token_fragment\", token.split(\"-\").shift());" + ], + "type": "text/javascript" + } + }, + { + "listen": "test", + "script": { + "id": "7f6ef567-274e-4f9d-b7fc-50f8240547e9", + "exec": [ + "pm.test(\"Status code is 404\", function () {", + " pm.response.to.have.status(404);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/1234567", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "1234567" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {} + }, + { + "name": "Read Next Test", + "item": [ + { + "name": "Clean Up", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}" + ] + } + }, + "response": [] + }, + { + "name": "Read Next Test of Invalid Session", + "event": [ + { + "listen": "test", + "script": { + "id": "11f5c620-dc3b-4a8c-8d2f-f9663025c79f", + "exec": [ + "pm.test(\"Status code is 404\", function () {", + " pm.response.to.have.status(404);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}/next", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests", + "{{session_token}}", + "next" + ] + } + }, + "response": [] + }, + { + "name": "Create Session \\w Configuration", + "event": [ + { + "listen": "test", + "script": { + "id": "c67cde7e-7237-479c-a0c6-b84a533c3b1e", + "exec": [ + "const response = pm.response.json();", + "const token = response.token;", + "pm.globals.set(\"session_token\", token);" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "id": "24b38d64-5c24-415f-b6f6-f8d252d69ac8", + "exec": [ + "var automaticTimeout = 120000;", + "var manualTimeout = 1000000;", + "var specialTimeout = 2000;", + "", + "pm.globals.set(\"automatic_timeout\", automaticTimeout);", + "pm.globals.set(\"manual_timeout\", manualTimeout);", + "pm.globals.set(\"special_timeout\", specialTimeout);", + "", + "const availableTests = JSON.parse(pm.globals.get(\"available_tests\"));", + "const test1 = availableTests[Object.keys(availableTests)[0]][0];", + "", + "pm.globals.set(\"single_test_1\", test1);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"tests\": {\n \"include\": [\"{{single_test_1}}\"]\n },\n \"types\": [\n \"automatic\",\n \"manual\"\n ]\n}" + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions" + ] + } + }, + "response": [] + }, + { + "name": "Read Next Test of Pending Session", + "event": [ + { + "listen": "test", + "script": { + "id": "0806e4e0-bd1b-40ba-a7d5-74d41473a141", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "const nextTest = jsonData.next_test;", + "const test = \"/\" + nextTest.split(\"/\").slice(3).join(\"/\").split(\"?\")[0];", + "", + "const web_root = pm.environment.get(\"web_root\");", + "", + "pm.test(\"Returned test is new session page\", function () {", + " pm.expect(test).to.equal(\"/\" + web_root + \"/newsession.html\");", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}/next", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests", + "{{session_token}}", + "next" + ] + } + }, + "response": [] + }, + { + "name": "Start Session", + "event": [ + { + "listen": "test", + "script": { + "id": "9b1f2dec-9949-49ff-b466-f602b11dde5d", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/start", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "start" + ] + } + }, + "response": [] + }, + { + "name": "Read Next Test of Running Session", + "event": [ + { + "listen": "test", + "script": { + "id": "7fea2977-5ccb-49ee-8f07-79a7f2245f9c", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "const nextTest = jsonData.next_test;", + "const parameters = nextTest.split(\"?\")[1].split(\"&\");", + "let test = parameters.find(parameter => parameter.split(\"=\")[0] === \"test_url\").split(\"=\")[1];", + "test = decodeURIComponent(test);", + "test = \"/\" + test.split(\"/\").slice(3).join(\"/\").split(\"?\")[0];", + "const api = test.split(\"/\").filter(part => !!part)[0]", + "const availableTests = JSON.parse(pm.globals.get(\"available_tests\"));", + "", + "pm.test(\"Returned test is valid test\", function () {", + " pm.expect(availableTests).to.have.property(api);", + " pm.expect(availableTests[api]).to.contain(test)", + "});", + "", + "", + "setTimeout(function () {}, 1000);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}/next", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests", + "{{session_token}}", + "next" + ] + } + }, + "response": [] + }, + { + "name": "Create Result", + "event": [ + { + "listen": "test", + "script": { + "id": "7cc27ee8-2f06-4e25-98fb-9872c6cf0d93", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "value": "application/json", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"test\": \"{{current_test}}\",\n \"status\": \"OK\",\n \"message\": null,\n \"subtests\": [\n {\n \"name\": \"Subtest testing feature xy\",\n \"status\": \"FAIL\",\n \"message\": \"Error message\"\n }\n ]\n}" + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/results/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "results", + "{{session_token}}" + ] + } + }, + "response": [] + }, + { + "name": "Read Next Test of Completed Session", + "event": [ + { + "listen": "test", + "script": { + "id": "0a73a5eb-3edb-4d15-924d-260dd22bd831", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "const nextTest = jsonData.next_test;", + "const test = \"/\" + nextTest.split(\"/\").slice(3).join(\"/\").split(\"?\")[0];", + "", + "const web_root = pm.environment.get(\"web_root\");", + "", + "pm.test(\"Returned test is new session page\", function () {", + " pm.expect(test).to.equal(\"/\" + web_root + \"/finish.html\");", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}/next", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests", + "{{session_token}}", + "next" + ] + } + }, + "response": [] + }, + { + "name": "Clean Up", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}" + ] + } + }, + "response": [] + }, + { + "name": "Create Session \\w Configuration Copy", + "event": [ + { + "listen": "test", + "script": { + "id": "94877ec6-70ea-4c78-acb5-20060a535653", + "exec": [ + "const response = pm.response.json();", + "const token = response.token;", + "pm.globals.set(\"session_token\", token);" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "id": "dcc29092-b7a1-40fc-8359-ecc655dba482", + "exec": [ + "var automaticTimeout = 120000;", + "var manualTimeout = 1000000;", + "var specialTimeout = 2000;", + "", + "pm.globals.set(\"automatic_timeout\", automaticTimeout);", + "pm.globals.set(\"manual_timeout\", manualTimeout);", + "pm.globals.set(\"special_timeout\", specialTimeout);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"tests\": {\n \"include\": {{included_tests}},\n \"exclude\": {{excluded_tests}}\n },\n \"types\": [\n \"automatic\",\n \"manual\"\n ],\n \"timeouts\": {\n \"automatic\": 1000\n },\n \"labels\": [\"label1\", \"label2\"]\n}" + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions" + ] + } + }, + "response": [] + }, + { + "name": "Start Session", + "event": [ + { + "listen": "test", + "script": { + "id": "8f6e2bf2-6c1e-434e-83c5-9bcc57880692", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/start", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "start" + ] + } + }, + "response": [] + }, + { + "name": "Pause Session", + "event": [ + { + "listen": "test", + "script": { + "id": "a0a80c05-a2ca-430a-8bed-46ad7978c684", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/pause", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "pause" + ] + } + }, + "response": [] + }, + { + "name": "Read Next Test of Aborted Session", + "event": [ + { + "listen": "test", + "script": { + "id": "00d823e0-2059-4cab-81d6-8d1de9e5b62a", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "const nextTest = jsonData.next_test;", + "const test = \"/\" + nextTest.split(\"/\").slice(3).join(\"/\").split(\"?\")[0];", + "", + "const web_root = pm.environment.get(\"web_root\");", + "", + "pm.test(\"Returned test is new session page\", function () {", + " pm.expect(test).to.equal(\"/\" + web_root + \"/pause.html\");", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}/next", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests", + "{{session_token}}", + "next" + ] + } + }, + "response": [] + }, + { + "name": "Stop Session", + "event": [ + { + "listen": "test", + "script": { + "id": "b8211c13-667d-4970-aedc-6398c25cc40c", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/stop", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "stop" + ] + } + }, + "response": [] + }, + { + "name": "Read Next Test of Aborted Session", + "event": [ + { + "listen": "test", + "script": { + "id": "8aad813d-53fe-49fd-bdfc-f16ce2233ae2", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "const nextTest = jsonData.next_test;", + "const test = \"/\" + nextTest.split(\"/\").slice(3).join(\"/\").split(\"?\")[0];", + "", + "const web_root = pm.environment.get(\"web_root\");", + "", + "pm.test(\"Returned test is new session page\", function () {", + " pm.expect(test).to.equal(\"/\" + web_root + \"/finish.html\");", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}/next", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests", + "{{session_token}}", + "next" + ] + } + }, + "response": [] + }, + { + "name": "Clean Up", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {} + }, + { + "name": "Control Session", + "item": [ + { + "name": "Setup", + "item": [ + { + "name": "Create Session No Configuration", + "event": [ + { + "listen": "test", + "script": { + "id": "305cb915-8496-4577-b17a-e8189d66c3d1", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");", + "", + "pm.test(\"Responds with token in JSON format\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(jsonData.token).to.match(tokenRegex);", + "});", + "", + "", + "const response = pm.response.json();", + "const token = response.token;", + "pm.globals.set(\"session_token\", token);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "" + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "Pause Pending Session", + "item": [ + { + "name": "Pause Session", + "event": [ + { + "listen": "test", + "script": { + "id": "9d903165-9667-43b0-b210-a950d0fa1fa2", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/pause", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "pause" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Status", + "event": [ + { + "listen": "test", + "script": { + "id": "0307919b-6630-48ff-ac18-10c0a47ea254", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Status is pending\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.status).to.equal(\"pending\");", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "status" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "Start Pending Session", + "item": [ + { + "name": "Start Session", + "event": [ + { + "listen": "test", + "script": { + "id": "f66408d5-5438-4d4f-9bfc-6d24b15e5a90", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/start", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "start" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Status", + "event": [ + { + "listen": "test", + "script": { + "id": "bae5542d-446b-4064-88ff-cc355a8f4f62", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "pm.test(\"Status is running\", function () {", + " pm.expect(jsonData.status).to.equal(\"running\");", + "});", + "", + "pm.test(\"Start date is set\", function () {", + " pm.expect(Date.parse(jsonData.date_started)).to.be.below(Date.now());", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "status" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "Start Running Session", + "item": [ + { + "name": "Start Session", + "event": [ + { + "listen": "test", + "script": { + "id": "3b386952-8a37-471a-9192-f28974d975a3", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/start", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "start" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Status", + "event": [ + { + "listen": "test", + "script": { + "id": "8e56d842-325b-4356-ae1a-2465e9efe188", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Status is running\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.status).to.equal(\"running\");", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "status" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "Pause Running Session", + "item": [ + { + "name": "Pause Session", + "event": [ + { + "listen": "test", + "script": { + "id": "a183cb0b-31f0-48f6-9c20-605a16488d7d", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/pause", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "pause" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Status", + "event": [ + { + "listen": "test", + "script": { + "id": "f2610594-813a-4079-afae-1510486efab4", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Status is paused\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.status).to.equal(\"paused\");", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "status" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "Pause Paused Session", + "item": [ + { + "name": "Pause Session", + "event": [ + { + "listen": "test", + "script": { + "id": "6b8ec98a-ad91-4d5c-aa07-6b3cc1255902", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/pause", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "pause" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Status", + "event": [ + { + "listen": "test", + "script": { + "id": "91a38eb8-a501-457f-a9f4-b63221c957f6", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Status is paused\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.status).to.equal(\"paused\");", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "status" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "Start Paused Session", + "item": [ + { + "name": "Start Session", + "event": [ + { + "listen": "test", + "script": { + "id": "6e3a8c64-04cb-4c4f-b23d-64655f6e4d22", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/start", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "start" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Status", + "event": [ + { + "listen": "test", + "script": { + "id": "dcf7f6f4-6eef-4a90-a63d-df70446eb209", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Status is running\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.status).to.equal(\"running\");", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "status" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "Stop Running Session", + "item": [ + { + "name": "Stop Session", + "event": [ + { + "listen": "test", + "script": { + "id": "bee7a70d-af1f-4ad1-9c40-7abdbcc983ae", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/stop", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "stop" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Status", + "event": [ + { + "listen": "test", + "script": { + "id": "217ed267-1ddb-496a-a7c5-6e29bad97c60", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "pm.test(\"Status is aborted\", function () {", + " pm.expect(jsonData.status).to.equal(\"aborted\");", + "});", + "", + "pm.test(\"Finish date is set\", function () {", + " pm.expect(Date.parse(jsonData.date_finished)).to.be.below(Date.now());", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "status" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "Stop Aborted Session", + "item": [ + { + "name": "Stop Session", + "event": [ + { + "listen": "test", + "script": { + "id": "a255ea61-5c5a-4f0d-8a67-c244510a608c", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/stop", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "stop" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Status", + "event": [ + { + "listen": "test", + "script": { + "id": "9cc7599b-d378-4b04-bada-9d76f6ca610f", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Status is aborted\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.status).to.equal(\"aborted\");", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "status" + ] + } + }, + "response": [] + } + ], + "event": [ + { + "listen": "prerequest", + "script": { + "id": "81e44e3f-5d91-42a7-b0ab-4704eb121868", + "type": "text/javascript", + "exec": [ + "" + ] + } + }, + { + "listen": "test", + "script": { + "id": "a44180cb-3b13-421b-b146-82901f2b45bd", + "type": "text/javascript", + "exec": [ + "" + ] + } + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "Start Aborted Session", + "item": [ + { + "name": "Start Session", + "event": [ + { + "listen": "test", + "script": { + "id": "47fb1fa9-4849-4ea9-b36e-fcec8decf62e", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/start", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "start" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Status", + "event": [ + { + "listen": "test", + "script": { + "id": "1923ced4-4361-4a4a-bf7c-4fcdf3df50f6", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Status is aborted\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.status).to.equal(\"aborted\");", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "status" + ] + } + }, + "response": [] + } + ], + "event": [ + { + "listen": "prerequest", + "script": { + "id": "226043e5-1a81-4d36-aa7f-67b10bf407af", + "type": "text/javascript", + "exec": [ + "" + ] + } + }, + { + "listen": "test", + "script": { + "id": "840bf970-0984-452e-9076-b6f66d0b4511", + "type": "text/javascript", + "exec": [ + "" + ] + } + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "Pause Aborted Session", + "item": [ + { + "name": "Pause Session", + "event": [ + { + "listen": "test", + "script": { + "id": "88c4072f-538b-4d68-9d61-f0fb017e544c", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/pause", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "pause" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Status", + "event": [ + { + "listen": "test", + "script": { + "id": "2ae00eb3-49e8-4487-b27f-e7c7955fe4f4", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Status is aborted\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.status).to.equal(\"aborted\");", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "status" + ] + } + }, + "response": [] + } + ], + "event": [ + { + "listen": "prerequest", + "script": { + "id": "70e0c783-c405-481c-b9c8-5c8bee392f97", + "type": "text/javascript", + "exec": [ + "" + ] + } + }, + { + "listen": "test", + "script": { + "id": "85c45e3b-fae6-4a90-afd0-97678769e32c", + "type": "text/javascript", + "exec": [ + "" + ] + } + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "Setup", + "item": [ + { + "name": "Clean Up", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}" + ] + } + }, + "response": [] + }, + { + "name": "Create Session No Configuration", + "event": [ + { + "listen": "test", + "script": { + "id": "df4a00d1-d4f8-4b0b-892d-21528165a2cf", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");", + "", + "pm.test(\"Responds with token in JSON format\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(jsonData.token).to.match(tokenRegex);", + "});", + "", + "", + "const response = pm.response.json();", + "const token = response.token;", + "pm.globals.set(\"session_token\", token);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "" + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions" + ] + } + }, + "response": [] + } + ], + "event": [ + { + "listen": "prerequest", + "script": { + "id": "4fa59617-c922-4826-abc6-6d910e918ea4", + "type": "text/javascript", + "exec": [ + "" + ] + } + }, + { + "listen": "test", + "script": { + "id": "d83f449d-4a2e-41c8-b2cd-5cf0cd1c404e", + "type": "text/javascript", + "exec": [ + "" + ] + } + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "Stop Pending Session", + "item": [ + { + "name": "Stop Session", + "event": [ + { + "listen": "test", + "script": { + "id": "98da2b86-4f9f-47dd-afc9-22ce96e73e84", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/stop", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "stop" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Status", + "event": [ + { + "listen": "test", + "script": { + "id": "6d8a8202-c85d-4ada-b443-45108a372aea", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Status is aborted\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.status).to.equal(\"aborted\");", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "status" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "Setup", + "item": [ + { + "name": "Clean Up", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}" + ] + } + }, + "response": [] + }, + { + "name": "Create Session No Configuration", + "event": [ + { + "listen": "test", + "script": { + "id": "0f9df486-91cd-46fc-a711-5cf9bebb2706", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");", + "", + "pm.test(\"Responds with token in JSON format\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(jsonData.token).to.match(tokenRegex);", + "});", + "", + "", + "const response = pm.response.json();", + "const token = response.token;", + "pm.globals.set(\"session_token\", token);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "" + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions" + ] + } + }, + "response": [] + }, + { + "name": "Start Session", + "event": [ + { + "listen": "test", + "script": { + "id": "80ee91fd-98ca-4b8e-83b6-32bf3e55a295", + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/start", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "start" + ] + } + }, + "response": [] + }, + { + "name": "Pause Session", + "event": [ + { + "listen": "test", + "script": { + "id": "47f4d26a-84c2-4980-984d-dac0e95503e1", + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/pause", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "pause" + ] + } + }, + "response": [] + } + ], + "event": [ + { + "listen": "prerequest", + "script": { + "id": "6bd9e85f-eb73-47be-83b0-01be77868899", + "type": "text/javascript", + "exec": [ + "" + ] + } + }, + { + "listen": "test", + "script": { + "id": "43ebfadb-dc68-4c41-b34e-462e427dc2ef", + "type": "text/javascript", + "exec": [ + "" + ] + } + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "Stop Paused Session Copy", + "item": [ + { + "name": "Stop Session", + "event": [ + { + "listen": "test", + "script": { + "id": "029ec84b-e41b-4744-8745-58c50e52bb11", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/stop", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "stop" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Status", + "event": [ + { + "listen": "test", + "script": { + "id": "071d757c-41aa-4b52-9ab4-6c2afd6ed2af", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Status is aborted\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.status).to.equal(\"aborted\");", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "status" + ] + } + }, + "response": [] + } + ], + "event": [ + { + "listen": "prerequest", + "script": { + "id": "305720a0-2c84-43d3-8fe5-55f8fdf511d8", + "type": "text/javascript", + "exec": [ + "" + ] + } + }, + { + "listen": "test", + "script": { + "id": "84e4ab04-5acc-4428-a81a-c0b0c53b5fd9", + "type": "text/javascript", + "exec": [ + "" + ] + } + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "Setup", + "item": [ + { + "name": "Clean Up", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}" + ] + } + }, + "response": [] + }, + { + "name": "Create Session One Test", + "event": [ + { + "listen": "test", + "script": { + "id": "b7a9d459-9b39-40b2-abdc-fd8fe8b21d61", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");", + "", + "pm.test(\"Responds with token in JSON format\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(jsonData.token).to.match(tokenRegex);", + "});", + "", + "", + "const response = pm.response.json();", + "const token = response.token;", + "pm.globals.set(\"session_token\", token);" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "id": "fcbfb0e3-a10d-4ff8-afed-f5f3c9d52090", + "exec": [ + "const availableTests = JSON.parse(pm.globals.get(\"available_tests\"));", + "const test = availableTests[Object.keys(availableTests)[0]][0]", + "", + "pm.globals.set(\"single_test\", test);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"tests\": {\n \"include\": [\"{{single_test}}\"]\n }\n}" + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions" + ] + } + }, + "response": [] + }, + { + "name": "Start Session", + "event": [ + { + "listen": "test", + "script": { + "id": "937ef61d-d6d6-4e24-bc3a-696a23cc95d6", + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/start", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "start" + ] + } + }, + "response": [] + }, + { + "name": "Read Next Test of Session", + "event": [ + { + "listen": "test", + "script": { + "id": "29f0554b-66f5-4e26-80ff-39b3faba920a", + "exec": [ + "const response = pm.response.json();", + "const nextTest = response.next_test;", + "pm.globals.set(\"current_test_url\", nextTest);", + "if (!nextTest) return;", + "const parameters = nextTest.split(\"?\")[1].split(\"&\");", + "let test = parameters.find(parameter => parameter.split(\"=\")[0] === \"test_url\").split(\"=\")[1];", + "test = decodeURIComponent(test);", + "test = \"/\" + test.split(\"/\").slice(3).join(\"/\").split(\"?\")[0];", + "pm.globals.set(\"current_test\", test);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}/next", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests", + "{{session_token}}", + "next" + ] + } + }, + "response": [] + }, + { + "name": "Create Result", + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "value": "application/json", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"test\": \"{{current_test}}\",\n \"status\": \"OK\",\n \"message\": null,\n \"subtests\": [\n {\n \"name\": \"Subtest testing feature xy\",\n \"status\": \"FAIL\",\n \"message\": \"Error message\"\n }\n ]\n}" + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/results/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "results", + "{{session_token}}" + ] + } + }, + "response": [] + } + ], + "event": [ + { + "listen": "prerequest", + "script": { + "id": "9bf66427-6f39-4f0a-b065-1849d679eee6", + "type": "text/javascript", + "exec": [ + "" + ] + } + }, + { + "listen": "test", + "script": { + "id": "8d1f3837-1f05-47e4-897c-b7c74da9bd43", + "type": "text/javascript", + "exec": [ + "" + ] + } + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "Start Completed Session", + "item": [ + { + "name": "Start Session", + "event": [ + { + "listen": "test", + "script": { + "id": "9bf0fb70-24a0-4136-99fe-8e0e488afd1e", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/start", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "start" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Status", + "event": [ + { + "listen": "test", + "script": { + "id": "7e3184bf-1741-44c8-8cd3-cff30c2deca1", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Status is completed\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.status).to.equal(\"completed\");", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "status" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "Pause Completed Session", + "item": [ + { + "name": "Pause Session", + "event": [ + { + "listen": "test", + "script": { + "id": "e323c6af-d4e5-4a05-b203-09ba67f77d28", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/pause", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "pause" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Status", + "event": [ + { + "listen": "test", + "script": { + "id": "40cd04ce-850f-4903-bc24-2e62a4df98fe", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Status is completed\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.status).to.equal(\"completed\");", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "status" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "Stop Completed Session", + "item": [ + { + "name": "Stop Session", + "event": [ + { + "listen": "test", + "script": { + "id": "db7d5209-37b2-46bd-88ab-ce4e241401b2", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/stop", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "stop" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Status", + "event": [ + { + "listen": "test", + "script": { + "id": "477dc63d-0b43-4226-b86e-163e2de92b67", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Status is completed\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData.status).to.equal(\"completed\");", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "status" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "Clean Up", + "item": [ + { + "name": "Clean Up", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + } + ], + "protocolProfileBehavior": {} + }, + { + "name": "Update and Read Sessions", + "item": [ + { + "name": "Create Default", + "item": [ + { + "name": "Create Session No Configuration", + "event": [ + { + "listen": "test", + "script": { + "id": "b923d95e-a7b4-49d4-ab2a-1f435c454387", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");", + "", + "pm.test(\"Responds with token in JSON format\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(jsonData.token).to.match(tokenRegex);", + "});", + "", + "", + "const response = pm.response.json();", + "const token = response.token;", + "pm.globals.set(\"session_token\", token);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "" + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Configuration", + "event": [ + { + "listen": "test", + "script": { + "id": "81f36759-7ae2-42b9-81d2-79f57046b46e", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");", + "", + "pm.test(\"JSON structure is as expected\", function () {", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(typeof jsonData.token).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"tests\");", + " pm.expect(typeof jsonData.tests).to.equal(\"object\");", + " pm.expect(jsonData.tests).to.have.property(\"include\");", + " pm.expect(jsonData.tests.include).to.be.an.instanceof(Array);", + " pm.expect(jsonData.tests).to.have.property(\"exclude\");", + " pm.expect(jsonData.tests.exclude).to.be.an.instanceof(Array);", + " pm.expect(jsonData).to.have.property(\"types\");", + " pm.expect(jsonData.types).to.be.an.instanceof(Array);", + " pm.expect(jsonData).to.have.property(\"user_agent\");", + " pm.expect(typeof jsonData.user_agent).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"timeouts\");", + " pm.expect(typeof jsonData.timeouts).to.equal(\"object\")", + " pm.expect(jsonData.timeouts).to.have.property(\"automatic\");", + " pm.expect(typeof jsonData.timeouts.automatic).to.equal(\"number\");", + " pm.expect(jsonData.timeouts).to.have.property(\"manual\");", + " pm.expect(typeof jsonData.timeouts.manual).to.equal(\"number\");", + " pm.expect(jsonData).to.have.property(\"browser\");", + " pm.expect(typeof jsonData.browser).to.equal(\"object\");", + " pm.expect(jsonData.browser).to.have.property(\"name\");", + " pm.expect(typeof jsonData.browser.name).to.equal(\"string\");", + " pm.expect(jsonData.browser).to.have.property(\"version\");", + " pm.expect(typeof jsonData.browser.version).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"reference_tokens\");", + " pm.expect(jsonData.reference_tokens).to.be.an.instanceof(Array);", + "});", + "", + "pm.test(\"Configuration is default\", function () {", + " pm.expect(jsonData.token).to.match(tokenRegex);", + " pm.expect(jsonData.tests.include).to.include(\"/\");", + " pm.expect(jsonData.types).to.include(\"automatic\");", + " pm.expect(jsonData.types).to.include(\"manual\");", + " pm.expect(jsonData.user_agent).to.include(\"PostmanRuntime\");", + " pm.expect(jsonData.timeouts.automatic).to.equal(60000);", + " pm.expect(jsonData.timeouts.manual).to.equal(300000);", + " pm.expect(jsonData.browser.name).to.equal(\"Other\");", + " pm.expect(jsonData.browser.version).to.equal(\"0\");", + " pm.expect(jsonData.is_public).to.equal(false);", + " pm.expect(jsonData.reference_tokens).to.be.empty;", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Status", + "event": [ + { + "listen": "test", + "script": { + "id": "2873d554-9816-41f0-9051-fb2cb1272a76", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "", + "var jsonData = pm.response.json();", + "", + "pm.test(\"JSON structure is as expected\", function () {", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(typeof jsonData.token).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"status\");", + " pm.expect(typeof jsonData.status).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"expiration_date\");", + " pm.expect(jsonData.expiration_date).to.be.null;", + " pm.expect(jsonData).to.have.property(\"date_started\");", + " pm.expect(jsonData.date_started).to.satisfy(value => !value || typeof value === \"number\");", + " pm.expect(jsonData).to.have.property(\"date_finished\");", + " pm.expect(jsonData.date_finished).to.satisfy(value => !value || typeof value === \"number\");", + "});", + "", + "pm.test(\"Session status is pending\", function () {", + " pm.expect(jsonData.status).to.equal(\"pending\");", + "})" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "status" + ] + } + }, + "response": [] + }, + { + "name": "Read Tests of Session", + "event": [ + { + "listen": "test", + "script": { + "id": "53605764-d4f0-4b32-9a30-67e84dd104d9", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "", + "pm.test(\"JSON structure is as expected\", function () {", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(typeof jsonData.token).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"pending_tests\");", + " pm.expect(typeof jsonData.pending_tests).to.equal(\"object\");", + " pm.expect(jsonData).to.have.property(\"running_tests\");", + " pm.expect(typeof jsonData.running_tests).to.equal(\"object\");", + "});", + "", + "pm.test(\"All tests are pending tests\", function () {", + " pm.expect(Object.keys(jsonData.pending_tests)).to.not.have.lengthOf(0);", + " pm.expect(Object.keys(jsonData.running_tests)).to.have.lengthOf(0);", + "})", + "", + "console.log(pm.globals.get(\"available_tests\"))", + "const availableTests = JSON.parse(pm.globals.get(\"available_tests\"));", + "", + "pm.test(\"All available tests are part of the session\", function () {", + " for (var api of Object.keys(jsonData.pending_tests)) {", + " for (var test of jsonData.pending_tests[api]) {", + " pm.expect(availableTests[api]).to.include(test);", + " }", + " }", + "})" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests", + "{{session_token}}" + ] + } + }, + "response": [] + } + ], + "event": [ + { + "listen": "prerequest", + "script": { + "id": "cf165ae9-1c44-483c-8fe4-bd7cdaa20710", + "type": "text/javascript", + "exec": [ + "" + ] + } + }, + { + "listen": "test", + "script": { + "id": "6938d456-afd5-431b-a95f-a2c45a3ac479", + "type": "text/javascript", + "exec": [ + "" + ] + } + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "Update With Configuration", + "item": [ + { + "name": "Update Session", + "event": [ + { + "listen": "test", + "script": { + "id": "657be5b3-4a99-4415-a1ef-9dfdcf541e46", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "id": "093a0019-a84c-44fc-b890-36369d51b7d5", + "exec": [ + "var automaticTimeout = 120000;", + "var manualTimeout = 1000000;", + "var specialTimeout = 2000;", + "", + "pm.globals.set(\"automatic_timeout\", automaticTimeout);", + "pm.globals.set(\"manual_timeout\", manualTimeout);", + "pm.globals.set(\"special_timeout\", specialTimeout);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"tests\": {\n \"include\": {{included_tests}},\n \"exclude\": {{excluded_tests}}\n },\n \"types\": [\n \"automatic\",\n \"manual\"\n ],\n \"timeouts\": {\n \"automatic\": {{automatic_timeout}},\n \"manual\": {{manual_timeout}},\n \"{{special_timeout_test}}\": {{special_timeout}}\n }\n}" + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Configuration", + "event": [ + { + "listen": "test", + "script": { + "id": "4ac55601-9bdf-41f8-9d59-ff1ee20fa471", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");", + "", + "pm.test(\"JSON structure is as expected\", function () {", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(typeof jsonData.token).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"tests\");", + " pm.expect(typeof jsonData.tests).to.equal(\"object\");", + " pm.expect(jsonData.tests).to.have.property(\"include\");", + " pm.expect(jsonData.tests.include).to.be.an.instanceof(Array);", + " pm.expect(jsonData.tests).to.have.property(\"exclude\");", + " pm.expect(jsonData.tests.exclude).to.be.an.instanceof(Array);", + " pm.expect(jsonData).to.have.property(\"types\");", + " pm.expect(jsonData.types).to.be.an.instanceof(Array);", + " pm.expect(jsonData).to.have.property(\"user_agent\");", + " pm.expect(typeof jsonData.user_agent).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"timeouts\");", + " pm.expect(typeof jsonData.timeouts).to.equal(\"object\")", + " pm.expect(jsonData.timeouts).to.have.property(\"automatic\");", + " pm.expect(typeof jsonData.timeouts.automatic).to.equal(\"number\");", + " pm.expect(jsonData.timeouts).to.have.property(\"manual\");", + " pm.expect(typeof jsonData.timeouts.manual).to.equal(\"number\");", + " pm.expect(jsonData).to.have.property(\"browser\");", + " pm.expect(typeof jsonData.browser).to.equal(\"object\");", + " pm.expect(jsonData.browser).to.have.property(\"name\");", + " pm.expect(typeof jsonData.browser.name).to.equal(\"string\");", + " pm.expect(jsonData.browser).to.have.property(\"version\");", + " pm.expect(typeof jsonData.browser.version).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"reference_tokens\");", + " pm.expect(jsonData.reference_tokens).to.be.an.instanceof(Array);", + "});", + "", + "var includedTests = JSON.parse(pm.globals.get(\"included_tests\"));", + "var excludedTests = JSON.parse(pm.globals.get(\"excluded_tests\"));", + "var automaticTimeout = pm.globals.get(\"automatic_timeout\");", + "var manualTimeout = pm.globals.get(\"manual_timeout\");", + "var specialTimeout = pm.globals.get(\"special_timeout\");", + "var specialTimeoutTest = pm.globals.get(\"special_timeout_test\");", + "", + "pm.test(\"Configuration is as specified\", function () {", + " pm.expect(jsonData.token).to.match(tokenRegex);", + " for (var test of includedTests) {", + " pm.expect(jsonData.tests.include).to.include(test);", + " }", + " for (var test of excludedTests) {", + " pm.expect(jsonData.tests.exclude).to.include(test);", + " }", + " pm.expect(jsonData.types).to.include(\"automatic\");", + " pm.expect(jsonData.types).to.include(\"manual\");", + " pm.expect(jsonData.user_agent).to.include(\"PostmanRuntime\");", + " pm.expect(jsonData.timeouts.automatic).to.equal(automaticTimeout);", + " pm.expect(jsonData.timeouts.manual).to.equal(manualTimeout);", + " pm.expect(jsonData.timeouts[specialTimeoutTest]).to.equal(specialTimeout);", + " pm.expect(jsonData.browser.name).to.equal(\"Other\");", + " pm.expect(jsonData.browser.version).to.equal(\"0\");", + " pm.expect(jsonData.is_public).to.equal(false);", + " pm.expect(jsonData.reference_tokens).to.be.empty;", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}" + ] + } + }, + "response": [] + }, + { + "name": "Read Tests of Session", + "event": [ + { + "listen": "test", + "script": { + "id": "0b49c01b-e943-4879-b441-4093836d05e9", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "", + "pm.test(\"JSON structure is as expected\", function () {", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(typeof jsonData.token).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"pending_tests\");", + " pm.expect(typeof jsonData.pending_tests).to.equal(\"object\");", + " pm.expect(jsonData).to.have.property(\"running_tests\");", + " pm.expect(typeof jsonData.running_tests).to.equal(\"object\");", + "});", + "", + "pm.test(\"All tests are pending tests\", function () {", + " pm.expect(Object.keys(jsonData.pending_tests)).to.not.have.lengthOf(0);", + " pm.expect(Object.keys(jsonData.running_tests)).to.have.lengthOf(0);", + "})", + "", + "const availableTests = pm.globals.get(\"available_tests\");", + "const includedTests = pm.globals.get(\"included_tests\");", + "const excludedTests = pm.globals.get(\"excluded_tests\");", + "", + "pm.test(\"Selected subset of tests are part of the session\", function () {", + " for (var api of Object.keys(jsonData.pending_tests)) {", + " for (var includedTest of includedTests) {", + " if (includedTest.split(\"/\").find(part => !!part) === api) {", + " var includeRegExp = new RegExp(\"^\" + includedTest, \"i\");", + " for (var test of jsonData.pending_tests[api]) {", + " pm.expect(test).to.match(regex);", + " }", + " break;", + " }", + " }", + " for (var excludedTest of excludedTests) {", + " if (excludedTest.split(\"/\").find(part => !!part) === api) {", + " var excludeRegExp = new RegExp(\"^\" + excludedTest, \"i\");", + " for (var test of jsonData.pending_tests[api]) {", + " pm.expect(test).to.not.match(regex);", + " }", + " break;", + " }", + " }", + " }", + "});", + "", + "const sessionTests = jsonData.pending_tests;", + "", + "pm.globals.set(\"session_tests\", JSON.stringify(sessionTests));" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests", + "{{session_token}}" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Status", + "event": [ + { + "listen": "test", + "script": { + "id": "b9cba19f-88d2-41f6-940a-a0979da05500", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "", + "var jsonData = pm.response.json();", + "", + "pm.test(\"JSON structure is as expected\", function () {", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(typeof jsonData.token).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"status\");", + " pm.expect(typeof jsonData.status).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"expiration_date\");", + " pm.expect(jsonData.expiration_date).to.be.null;", + " pm.expect(jsonData).to.have.property(\"date_started\");", + " pm.expect(jsonData.date_started).to.satisfy(value => !value || typeof value === \"number\");", + " pm.expect(jsonData).to.have.property(\"date_finished\");", + " pm.expect(jsonData.date_finished).to.satisfy(value => !value || typeof value === \"number\");", + "});", + "", + "pm.test(\"Session status is pending\", function () {", + " pm.expect(jsonData.status).to.equal(\"pending\");", + "})", + "", + "pm.test(\"Start and Finish date not set\", function () {", + " pm.expect(jsonData.date_started).to.be.null;", + " pm.expect(jsonData.date_finished).to.be.null;", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "status" + ] + } + }, + "response": [] + }, + { + "name": "Clean Up", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}" + ] + } + }, + "response": [] + } + ], + "event": [ + { + "listen": "prerequest", + "script": { + "id": "3669c70a-88bc-4854-abac-5cb80a21c392", + "type": "text/javascript", + "exec": [ + "" + ] + } + }, + { + "listen": "test", + "script": { + "id": "1a81f5c5-28d8-4935-b8ae-822e33c23da9", + "type": "text/javascript", + "exec": [ + "" + ] + } + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + } + ], + "protocolProfileBehavior": {} + }, + { + "name": "Update Session Labels", + "item": [ + { + "name": "Create Session \\w Configuration Copy", + "event": [ + { + "listen": "test", + "script": { + "id": "9de9321c-ae78-4abd-a740-6634e2cbb9b9", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");", + "", + "pm.test(\"Responds with token in JSON format\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(jsonData.token).to.match(tokenRegex);", + "});", + "", + "", + "const response = pm.response.json();", + "const token = response.token;", + "pm.globals.set(\"session_token\", token);" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "id": "739284e7-17ac-4c34-baa1-933353eb7ecc", + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"labels\": [\"label1\", \"label2\"]\n}" + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Configuration", + "event": [ + { + "listen": "test", + "script": { + "id": "5b15f338-c773-4f48-8f78-1d7c926beb81", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");", + "", + "pm.test(\"JSON structure is as expected\", function () {", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(typeof jsonData.token).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"tests\");", + " pm.expect(typeof jsonData.tests).to.equal(\"object\");", + " pm.expect(jsonData.tests).to.have.property(\"include\");", + " pm.expect(jsonData.tests.include).to.be.an.instanceof(Array);", + " pm.expect(jsonData.tests).to.have.property(\"exclude\");", + " pm.expect(jsonData.tests.exclude).to.be.an.instanceof(Array);", + " pm.expect(jsonData).to.have.property(\"types\");", + " pm.expect(jsonData.types).to.be.an.instanceof(Array);", + " pm.expect(jsonData).to.have.property(\"user_agent\");", + " pm.expect(typeof jsonData.user_agent).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"timeouts\");", + " pm.expect(typeof jsonData.timeouts).to.equal(\"object\")", + " pm.expect(jsonData.timeouts).to.have.property(\"automatic\");", + " pm.expect(typeof jsonData.timeouts.automatic).to.equal(\"number\");", + " pm.expect(jsonData.timeouts).to.have.property(\"manual\");", + " pm.expect(typeof jsonData.timeouts.manual).to.equal(\"number\");", + " pm.expect(jsonData).to.have.property(\"browser\");", + " pm.expect(typeof jsonData.browser).to.equal(\"object\");", + " pm.expect(jsonData.browser).to.have.property(\"name\");", + " pm.expect(typeof jsonData.browser.name).to.equal(\"string\");", + " pm.expect(jsonData.browser).to.have.property(\"version\");", + " pm.expect(typeof jsonData.browser.version).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"reference_tokens\");", + " pm.expect(jsonData.reference_tokens).to.be.an.instanceof(Array);", + " pm.expect(jsonData).to.have.property(\"labels\");", + " pm.expect(jsonData.labels).to.be.an.instanceof(Array);", + "});", + "", + "pm.test(\"Configuration is default\", function () {", + " pm.expect(jsonData.token).to.match(tokenRegex);", + " pm.expect(jsonData.tests.include).to.include(\"/\");", + " pm.expect(jsonData.types).to.include(\"automatic\");", + " pm.expect(jsonData.types).to.include(\"manual\");", + " pm.expect(jsonData.user_agent).to.include(\"PostmanRuntime\");", + " pm.expect(jsonData.timeouts.automatic).to.equal(60000);", + " pm.expect(jsonData.timeouts.manual).to.equal(300000);", + " pm.expect(jsonData.browser.name).to.equal(\"Other\");", + " pm.expect(jsonData.browser.version).to.equal(\"0\");", + " pm.expect(jsonData.is_public).to.equal(false);", + " pm.expect(jsonData.reference_tokens).to.be.empty;", + " pm.expect(jsonData.labels).to.include(\"label1\");", + " pm.expect(jsonData.labels).to.include(\"label2\");", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}" + ] + } + }, + "response": [] + }, + { + "name": "Update Labels Copy", + "event": [ + { + "listen": "test", + "script": { + "id": "e69b7188-b3c9-4f66-8c6c-3f3348f84f6a", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "value": "application/json", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n\t\"labels\": [\"new\", \"labels\"]\n}" + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/labels", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "labels" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Configuration", + "event": [ + { + "listen": "test", + "script": { + "id": "86e20c4d-5797-4b6e-a8cc-14e284e7c491", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");", + "", + "pm.test(\"JSON structure is as expected\", function () {", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(typeof jsonData.token).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"tests\");", + " pm.expect(typeof jsonData.tests).to.equal(\"object\");", + " pm.expect(jsonData.tests).to.have.property(\"include\");", + " pm.expect(jsonData.tests.include).to.be.an.instanceof(Array);", + " pm.expect(jsonData.tests).to.have.property(\"exclude\");", + " pm.expect(jsonData.tests.exclude).to.be.an.instanceof(Array);", + " pm.expect(jsonData).to.have.property(\"types\");", + " pm.expect(jsonData.types).to.be.an.instanceof(Array);", + " pm.expect(jsonData).to.have.property(\"user_agent\");", + " pm.expect(typeof jsonData.user_agent).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"timeouts\");", + " pm.expect(typeof jsonData.timeouts).to.equal(\"object\")", + " pm.expect(jsonData.timeouts).to.have.property(\"automatic\");", + " pm.expect(typeof jsonData.timeouts.automatic).to.equal(\"number\");", + " pm.expect(jsonData.timeouts).to.have.property(\"manual\");", + " pm.expect(typeof jsonData.timeouts.manual).to.equal(\"number\");", + " pm.expect(jsonData).to.have.property(\"browser\");", + " pm.expect(typeof jsonData.browser).to.equal(\"object\");", + " pm.expect(jsonData.browser).to.have.property(\"name\");", + " pm.expect(typeof jsonData.browser.name).to.equal(\"string\");", + " pm.expect(jsonData.browser).to.have.property(\"version\");", + " pm.expect(typeof jsonData.browser.version).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"reference_tokens\");", + " pm.expect(jsonData.reference_tokens).to.be.an.instanceof(Array);", + " pm.expect(jsonData).to.have.property(\"labels\");", + " pm.expect(jsonData.labels).to.be.an.instanceof(Array);", + "});", + "", + "pm.test(\"Configuration is default\", function () {", + " pm.expect(jsonData.token).to.match(tokenRegex);", + " pm.expect(jsonData.tests.include).to.include(\"/\");", + " pm.expect(jsonData.types).to.include(\"automatic\");", + " pm.expect(jsonData.types).to.include(\"manual\");", + " pm.expect(jsonData.user_agent).to.include(\"PostmanRuntime\");", + " pm.expect(jsonData.timeouts.automatic).to.equal(60000);", + " pm.expect(jsonData.timeouts.manual).to.equal(300000);", + " pm.expect(jsonData.browser.name).to.equal(\"Other\");", + " pm.expect(jsonData.browser.version).to.equal(\"0\");", + " pm.expect(jsonData.is_public).to.equal(false);", + " pm.expect(jsonData.reference_tokens).to.be.empty;", + " pm.expect(jsonData.labels).to.include(\"new\");", + " pm.expect(jsonData.labels).to.include(\"labels\");", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}" + ] + } + }, + "response": [] + }, + { + "name": "Clean Up", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {} + }, + { + "name": "Delete Session", + "item": [ + { + "name": "Setup", + "item": [ + { + "name": "Create Session No Configuration", + "event": [ + { + "listen": "test", + "script": { + "id": "e85fd539-4598-47a9-8768-656656f29fec", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");", + "", + "pm.test(\"Responds with token in JSON format\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(jsonData.token).to.match(tokenRegex);", + "});", + "", + "", + "const response = pm.response.json();", + "const token = response.token;", + "pm.globals.set(\"session_token\", token);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "" + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "Delete Session", + "event": [ + { + "listen": "test", + "script": { + "id": "8e9fe4af-0d50-49eb-8a4a-00e13021b4a6", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Configuration", + "event": [ + { + "listen": "test", + "script": { + "id": "9418112a-03f6-4641-893e-076c8922c0af", + "exec": [ + "pm.test(\"Status code is 404\", function () {", + " pm.response.to.have.status(404);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {} + }, + { + "name": "Create and Read Results", + "item": [ + { + "name": "Create Session", + "item": [ + { + "name": "Create Session Two Tests", + "event": [ + { + "listen": "test", + "script": { + "id": "a6995ff1-d626-4f4f-a1e0-567f3429bf52", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");", + "", + "pm.test(\"Responds with token in JSON format\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(jsonData.token).to.match(tokenRegex);", + "});", + "", + "", + "const response = pm.response.json();", + "const token = response.token;", + "pm.globals.set(\"session_token\", token);" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "id": "85c7ad8d-5fc9-403d-8715-c65d5ff1323e", + "exec": [ + "const availableTests = JSON.parse(pm.globals.get(\"available_tests\"));", + "const keys = Object.keys(availableTests).sort();", + "const test1 = availableTests[keys[0]][0];", + "const test2 = availableTests[keys[1]][0];", + "", + "console.log(test1, test2)", + "", + "pm.globals.set(\"single_test_1\", test1);", + "pm.globals.set(\"single_test_2\", test2);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"tests\": {\n \"include\": [\"{{single_test_1}}\", \"{{single_test_2}}\"]\n }\n}" + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions" + ] + } + }, + "response": [] + }, + { + "name": "Start Session", + "event": [ + { + "listen": "test", + "script": { + "id": "35cf4745-0301-4c9c-b6b3-40945299533f", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/start", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "start" + ] + } + }, + "response": [] + }, + { + "name": "Read Results", + "event": [ + { + "listen": "test", + "script": { + "id": "6dc082ef-80ff-407a-a562-e25e37476eee", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Responds with no results\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(typeof jsonData).to.equal(\"object\");", + " pm.expect(Object.keys(jsonData)).to.be.empty;", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/results/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "results", + "{{session_token}}" + ], + "query": [ + { + "key": "path", + "value": "/2dcontext/drawing-images-to-the-canvas", + "disabled": true + }, + { + "key": "path", + "value": "/2dcontext/conformance-requirements", + "disabled": true + }, + { + "key": "path", + "value": "/2dcontext/conformance-requirements/2d.missingargs.html", + "disabled": true + } + ] + } + }, + "response": [] + }, + { + "name": "Read Results Compact", + "event": [ + { + "listen": "test", + "script": { + "id": "fcade663-dbd8-42c9-8344-53ae1feb6fcb", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var singleTest1 = pm.globals.get(\"single_test_1\");", + "var singleTest2 = pm.globals.get(\"single_test_2\");", + "", + "var api1 = singleTest1.split(\"/\").find(part => !!part);", + "var api2 = singleTest2.split(\"/\").find(part => !!part);", + "", + "pm.test(\"Responds with no results\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(typeof jsonData).to.equal(\"object\");", + " pm.expect(jsonData).to.have.property(api1);", + " pm.expect(jsonData).to.have.property(api2);", + " pm.expect(jsonData[api1].complete).to.equal(0);", + " pm.expect(jsonData[api2].complete).to.equal(0);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/results/{{session_token}}/compact", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "results", + "{{session_token}}", + "compact" + ] + } + }, + "response": [] + }, + { + "name": "Read Last Completed Tests of Session", + "event": [ + { + "listen": "test", + "script": { + "id": "36d70d08-3caa-4312-9bbd-aed15fd238dd", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + " ", + "pm.test(\"JSON format is as expected\", function () {", + " pm.expect(Object.keys(jsonData)).to.have.lengthOf(3);", + " pm.expect(jsonData).to.have.property(\"pass\");", + " pm.expect(jsonData).to.have.property(\"fail\");", + " pm.expect(jsonData).to.have.property(\"timeout\");", + " for (var key of Object.keys(jsonData)) {", + " pm.expect(jsonData[key]).to.be.an.instanceof(Array);", + " }", + "});", + "", + "pm.test(\"Responds with no last completed tests\", function () {", + " for (var key of Object.keys(jsonData)) {", + " pm.expect(jsonData[key]).to.be.empty;", + " }", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}/last_completed", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests", + "{{session_token}}", + "last_completed" + ] + } + }, + "response": [] + }, + { + "name": "Read Tests of Session", + "event": [ + { + "listen": "test", + "script": { + "id": "211adcf7-d71a-4b0f-94ab-d285fc8367df", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "", + "pm.test(\"JSON structure is as expected\", function () {", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(typeof jsonData.token).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"pending_tests\");", + " pm.expect(typeof jsonData.pending_tests).to.equal(\"object\");", + " pm.expect(jsonData).to.have.property(\"running_tests\");", + " pm.expect(typeof jsonData.running_tests).to.equal(\"object\");", + "});", + "", + "const sessionTests = jsonData.pending_tests;", + "", + "pm.globals.set(\"session_tests\", JSON.stringify(sessionTests));" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests", + "{{session_token}}" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "Create First Result", + "item": [ + { + "name": "Read Next Test of Session", + "event": [ + { + "listen": "test", + "script": { + "id": "5410c9c2-ebbe-4bc1-ac12-e2602d8ade57", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "const response = pm.response.json();", + "", + "pm.test(\"JSON structure is as expected\", function () {", + " pm.expect(Object.keys(response)).to.have.lengthOf(1);", + " pm.expect(response).to.have.property(\"next_test\");", + " pm.expect(typeof response.next_test).to.equal(\"string\");", + "});", + "", + "const nextTest = response.next_test;", + "pm.globals.set(\"current_test_url\", nextTest);", + "if (!nextTest) return;", + "", + "const parameters = nextTest.split(\"?\")[1].split(\"&\");", + "let test = parameters.find(parameter => parameter.split(\"=\")[0] === \"test_url\").split(\"=\")[1];", + "test = decodeURIComponent(test);", + "test = \"/\" + test.split(\"/\").slice(3).join(\"/\").split(\"?\")[0];", + "", + "pm.globals.set(\"current_test\", test);", + "", + "const test1 = pm.globals.get(\"single_test_1\");", + "", + "pm.test(\"Returned test is first of two specified tests\", function () {", + " console.log(test);", + " console.log(test1);", + " console.log(pm.globals.get(\"single_test_2\"))", + " pm.expect(test).to.equal(test1);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}/next", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests", + "{{session_token}}", + "next" + ] + } + }, + "response": [] + }, + { + "name": "Read Tests of Session", + "event": [ + { + "listen": "test", + "script": { + "id": "e4f9a03f-c731-4192-a9a9-aa9e315c3c44", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "", + "pm.test(\"JSON structure is as expected\", function () {", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(typeof jsonData.token).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"pending_tests\");", + " pm.expect(typeof jsonData.pending_tests).to.equal(\"object\");", + " pm.expect(jsonData).to.have.property(\"running_tests\");", + " pm.expect(typeof jsonData.running_tests).to.equal(\"object\");", + "});", + "", + "const test1 = pm.globals.get(\"single_test_1\");", + "const test2 = pm.globals.get(\"single_test_2\");", + "", + "pm.test(\"One test is pending, one test is running\", function () {", + " pm.expect(Object.keys(jsonData.pending_tests)).to.have.lengthOf(1);", + " var api = Object.keys(jsonData.pending_tests)[0];", + " pm.expect(jsonData.pending_tests[api]).to.have.lengthOf(1);", + " pm.expect(jsonData.pending_tests[api]).to.include(test2);", + " pm.expect(Object.keys(jsonData.running_tests)).to.have.lengthOf(1);", + " api = Object.keys(jsonData.running_tests)[0];", + " pm.expect(jsonData.running_tests[api]).to.have.lengthOf(1);", + " pm.expect(jsonData.running_tests[api]).to.include(test1);", + "})" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests", + "{{session_token}}" + ] + } + }, + "response": [] + }, + { + "name": "Create Result", + "event": [ + { + "listen": "test", + "script": { + "id": "9f684f77-4ed0-4cd2-99a4-b1c134432e9f", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "value": "application/json", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"test\": \"{{current_test}}\",\n \"status\": \"OK\",\n \"message\": null,\n \"subtests\": [\n {\n \"name\": \"Subtest testing feature xy\",\n \"status\": \"FAIL\",\n \"message\": \"Error message\"\n }\n ]\n}" + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/results/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "results", + "{{session_token}}" + ] + } + }, + "response": [] + }, + { + "name": "Read Tests of Session", + "event": [ + { + "listen": "test", + "script": { + "id": "33601dd0-6786-4c8a-a6b5-7f1386129de7", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "", + "pm.test(\"JSON structure is as expected\", function () {", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(typeof jsonData.token).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"pending_tests\");", + " pm.expect(typeof jsonData.pending_tests).to.equal(\"object\");", + " pm.expect(jsonData).to.have.property(\"running_tests\");", + " pm.expect(typeof jsonData.running_tests).to.equal(\"object\");", + "});", + "", + "", + "const test1 = pm.globals.get(\"single_test_1\");", + "const test2 = pm.globals.get(\"single_test_2\");", + "", + "pm.test(\"One test is pending, one test is completed\", function () {", + " pm.expect(Object.keys(jsonData.pending_tests)).to.have.lengthOf(1);", + " var api = Object.keys(jsonData.pending_tests)[0];", + " pm.expect(jsonData.pending_tests[api]).to.have.lengthOf(1);", + " pm.expect(jsonData.pending_tests[api]).to.include(test2);", + " pm.expect(Object.keys(jsonData.running_tests)).to.have.lengthOf(0);", + "})" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests", + "{{session_token}}" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Status", + "event": [ + { + "listen": "test", + "script": { + "id": "97be92f1-a8d1-41ea-b41d-0ca08113e6e1", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "", + "var jsonData = pm.response.json();", + "", + "pm.test(\"JSON structure is as expected\", function () {", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(typeof jsonData.token).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"status\");", + " pm.expect(typeof jsonData.status).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"expiration_date\");", + " pm.expect(jsonData.expiration_date).to.be.null;", + " pm.expect(jsonData).to.have.property(\"date_started\");", + " pm.expect(jsonData).to.have.property(\"date_finished\");", + "});", + "", + "pm.test(\"Session status is running\", function () {", + " pm.expect(jsonData.status).to.equal(\"running\");", + "})" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "status" + ] + } + }, + "response": [] + }, + { + "name": "Read Last Completed Tests of Session", + "event": [ + { + "listen": "test", + "script": { + "id": "24ec2b79-c266-473f-8579-7b694079d640", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + " ", + "pm.test(\"JSON format is as expected\", function () {", + " pm.expect(Object.keys(jsonData)).to.have.lengthOf(3);", + " pm.expect(jsonData).to.have.property(\"pass\");", + " pm.expect(jsonData).to.have.property(\"fail\");", + " pm.expect(jsonData).to.have.property(\"timeout\");", + " for (var key of Object.keys(jsonData)) {", + " pm.expect(jsonData[key]).to.be.an.instanceof(Array);", + " }", + "});", + "", + "const test1 = pm.globals.get(\"single_test_1\");", + "", + "pm.test(\"Responds with one last completed tests as failed\", function () {", + " pm.expect(jsonData[\"pass\"]).to.be.empty;", + " pm.expect(jsonData[\"fail\"]).to.have.lengthOf(1);", + " pm.expect(jsonData[\"fail\"][0]).to.equal(test1);", + " pm.expect(jsonData[\"timeout\"]).to.be.empty;", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}/last_completed", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests", + "{{session_token}}", + "last_completed" + ] + } + }, + "response": [] + }, + { + "name": "Read Results", + "event": [ + { + "listen": "test", + "script": { + "id": "1f47b39f-727f-43b4-934d-c7f62b268baa", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "", + "pm.test(\"JSON format is as expected\", function () {", + " for (var api of Object.keys(jsonData)) {", + " pm.expect(jsonData[api]).to.be.an.instanceof(Array);", + " for (var result of jsonData[api]) {", + " pm.expect(typeof result).to.equal(\"object\");", + " pm.expect(Object.keys(result)).to.have.lengthOf(4);", + " pm.expect(result).to.have.property(\"test\");", + " pm.expect(typeof result.test).to.equal(\"string\");", + " pm.expect(result).to.have.property(\"status\");", + " pm.expect(typeof result.status).to.equal(\"string\");", + " pm.expect(result).to.have.property(\"message\");", + " pm.expect(result.message).to.satisfy(message => !message || typeof message === \"string\");", + " pm.expect(result).to.have.property(\"subtests\");", + " pm.expect(result.subtests).to.be.an.instanceof(Array);", + " for (var subtest of result.subtests) {", + " pm.expect(typeof subtest).to.equal(\"object\");", + " pm.expect(Object.keys(subtest)).to.have.lengthOf(3);", + " pm.expect(subtest).to.have.property(\"name\");", + " pm.expect(typeof subtest.name).to.equal(\"string\");", + " pm.expect(subtest).to.have.property(\"status\");", + " pm.expect(typeof subtest.status).to.equal(\"string\");", + " pm.expect(subtest).to.have.property(\"message\");", + " pm.expect(subtest.message).to.satisfy(message => !message || typeof message === \"string\");", + " }", + " }", + " }", + "});", + "", + "const test1 = pm.globals.get(\"single_test_1\");", + "", + "pm.test(\"Test is first test, successful run and failed\", function () {", + " var api = Object.keys(jsonData)[0];", + " pm.expect(api).to.equal(test1.split(\"/\").find(part => !!part))", + " var result = jsonData[api][0];", + " pm.expect(result.test).to.equal(test1);", + " pm.expect(result.status).to.equal(\"OK\");", + " pm.expect(result.message).to.be.null;", + " var subtest = result.subtests[0];", + " pm.expect(subtest.status).to.equal(\"FAIL\");", + "})" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/results/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "results", + "{{session_token}}" + ], + "query": [ + { + "key": "path", + "value": "/2dcontext/drawing-images-to-the-canvas", + "disabled": true + }, + { + "key": "path", + "value": "/2dcontext/conformance-requirements", + "disabled": true + }, + { + "key": "path", + "value": "/2dcontext/conformance-requirements/2d.missingargs.html", + "disabled": true + } + ] + } + }, + "response": [] + }, + { + "name": "Read Results Compact", + "event": [ + { + "listen": "test", + "script": { + "id": "e734f074-a0c2-4e54-b427-2827fa732843", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "var test = pm.globals.get(\"single_test_1\");", + "", + "pm.test(\"JSON structure is as expected\", function () {", + " pm.expect(typeof jsonData).to.equal(\"object\");", + " for (var api of Object.keys(jsonData)) {", + " pm.expect(jsonData[api]).to.have.property(\"pass\");", + " pm.expect(typeof jsonData[api].pass).to.equal(\"number\");", + " pm.expect(jsonData[api]).to.have.property(\"fail\");", + " pm.expect(typeof jsonData[api].fail).to.equal(\"number\");", + " pm.expect(jsonData[api]).to.have.property(\"timeout\");", + " pm.expect(typeof jsonData[api].timeout).to.equal(\"number\");", + " pm.expect(jsonData[api]).to.have.property(\"not_run\");", + " pm.expect(typeof jsonData[api].not_run).to.equal(\"number\");", + " }", + "})", + "", + "pm.test(\"Responds with one test failed\", function () {", + " var api = test.split(\"/\").find(part => !!part);", + " pm.expect(jsonData[api].pass).to.equal(0);", + " pm.expect(jsonData[api].fail).to.equal(1);", + " pm.expect(jsonData[api].timeout).to.equal(0);", + " pm.expect(jsonData[api].not_run).to.equal(0);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/results/{{session_token}}/compact", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "results", + "{{session_token}}", + "compact" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "Create Last Result", + "item": [ + { + "name": "Read Next Test of Session", + "event": [ + { + "listen": "test", + "script": { + "id": "fd2c11ee-5eca-43f3-89a7-133602c8034a", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "const response = pm.response.json();", + "", + "pm.test(\"JSON structure is as expected\", function () {", + " pm.expect(Object.keys(response)).to.have.lengthOf(1);", + " pm.expect(response).to.have.property(\"next_test\");", + " pm.expect(typeof response.next_test).to.equal(\"string\");", + "});", + "", + "const nextTest = response.next_test;", + "pm.globals.set(\"current_test_url\", nextTest);", + "if (!nextTest) return;", + "", + "const parameters = nextTest.split(\"?\")[1].split(\"&\");", + "let test = parameters.find(parameter => parameter.split(\"=\")[0] === \"test_url\").split(\"=\")[1];", + "test = decodeURIComponent(test);", + "test = \"/\" + test.split(\"/\").slice(3).join(\"/\").split(\"?\")[0];", + "", + "pm.globals.set(\"current_test\", test);", + "", + "const test2 = pm.globals.get(\"single_test_2\");", + "", + "pm.test(\"Returned test is second of two specified tests\", function () {", + " pm.expect(test).to.equal(test2);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}/next", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests", + "{{session_token}}", + "next" + ] + } + }, + "response": [] + }, + { + "name": "Read Tests of Session", + "event": [ + { + "listen": "test", + "script": { + "id": "112ee3d5-d4e0-4838-879e-f74c38d0218c", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "", + "pm.test(\"JSON structure is as expected\", function () {", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(typeof jsonData.token).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"pending_tests\");", + " pm.expect(typeof jsonData.pending_tests).to.equal(\"object\");", + " pm.expect(jsonData).to.have.property(\"running_tests\");", + " pm.expect(typeof jsonData.running_tests).to.equal(\"object\");", + "});", + "", + "const test1 = pm.globals.get(\"single_test_1\");", + "const test2 = pm.globals.get(\"single_test_2\");", + "", + "pm.test(\"One test is running\", function () {", + " pm.expect(Object.keys(jsonData.pending_tests)).to.have.lengthOf(0);", + " pm.expect(Object.keys(jsonData.running_tests)).to.have.lengthOf(1);", + " var api = Object.keys(jsonData.running_tests)[0];", + " pm.expect(jsonData.running_tests[api]).to.have.lengthOf(1);", + " pm.expect(jsonData.running_tests[api]).to.include(test2);", + "})" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests", + "{{session_token}}" + ] + } + }, + "response": [] + }, + { + "name": "Create Result", + "event": [ + { + "listen": "test", + "script": { + "id": "79a84ed9-bb07-493d-ab34-8e7693b3ebbd", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"test\": \"{{current_test}}\",\n \"status\": \"OK\",\n \"message\": null,\n \"subtests\": [\n {\n \"name\": \"Subtest testing feature xy\",\n \"status\": \"PASS\",\n \"message\": \"Error message\"\n }\n ]\n}" + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/results/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "results", + "{{session_token}}" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Status", + "event": [ + { + "listen": "test", + "script": { + "id": "c1829043-18dd-4cc1-8091-41981349f4e3", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "", + "var jsonData = pm.response.json();", + "", + "pm.test(\"JSON structure is as expected\", function () {", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(typeof jsonData.token).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"status\");", + " pm.expect(typeof jsonData.status).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"expiration_date\");", + " pm.expect(jsonData.expiration_date).to.be.null;", + " pm.expect(jsonData).to.have.property(\"date_started\");", + " pm.expect(jsonData).to.have.property(\"date_finished\");", + "});", + "", + "pm.test(\"Session status is completed\", function () {", + " pm.expect(jsonData.status).to.equal(\"completed\");", + "})", + "", + "pm.test(\"Finish date is set\", function () {", + " pm.expect(Date.parse(jsonData.date_finished)).to.be.below(Date.now());", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "status" + ] + } + }, + "response": [] + }, + { + "name": "Read Tests of Session", + "event": [ + { + "listen": "test", + "script": { + "id": "59fee9df-9945-4fdf-a102-9c1b92d915c1", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "", + "pm.test(\"JSON structure is as expected\", function () {", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(typeof jsonData.token).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"pending_tests\");", + " pm.expect(typeof jsonData.pending_tests).to.equal(\"object\");", + " pm.expect(jsonData).to.have.property(\"running_tests\");", + " pm.expect(typeof jsonData.running_tests).to.equal(\"object\");", + "});", + "", + "const test1 = pm.globals.get(\"single_test_1\");", + "const test2 = pm.globals.get(\"single_test_2\");", + "", + "var test1Api = test1.split(\"/\").find(part => !!part);", + "var test2Api = test1.split(\"/\").find(part => !!part);", + "", + "pm.test(\"One test is pending, one test is completed\", function () {", + " pm.expect(Object.keys(jsonData.pending_tests)).to.have.lengthOf(0);", + " pm.expect(Object.keys(jsonData.running_tests)).to.have.lengthOf(0);", + "})" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests", + "{{session_token}}" + ] + } + }, + "response": [] + }, + { + "name": "Read Last Completed Tests of Session", + "event": [ + { + "listen": "test", + "script": { + "id": "91fa38ac-3b06-488a-892e-59458e88a4da", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + " ", + "pm.test(\"JSON format is as expected\", function () {", + " pm.expect(Object.keys(jsonData)).to.have.lengthOf(3);", + " pm.expect(jsonData).to.have.property(\"pass\");", + " pm.expect(jsonData).to.have.property(\"fail\");", + " pm.expect(jsonData).to.have.property(\"timeout\");", + " for (var key of Object.keys(jsonData)) {", + " pm.expect(jsonData[key]).to.be.an.instanceof(Array);", + " }", + "});", + "", + "const test1 = pm.globals.get(\"single_test_1\");", + "const test2 = pm.globals.get(\"single_test_2\");", + "", + "pm.test(\"Responds with one last completed tests as failed and one last completed test as passed\", function () {", + " pm.expect(jsonData[\"pass\"]).to.have.lengthOf(1);", + " pm.expect(jsonData[\"pass\"][0]).to.equal(test2);", + " pm.expect(jsonData[\"fail\"]).to.have.lengthOf(1);", + " pm.expect(jsonData[\"fail\"][0]).to.equal(test1);", + " pm.expect(jsonData[\"timeout\"]).to.be.empty;", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}/last_completed", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests", + "{{session_token}}", + "last_completed" + ] + } + }, + "response": [] + }, + { + "name": "Read Results", + "event": [ + { + "listen": "test", + "script": { + "id": "dca0b42e-9054-4354-87e5-e8d236216050", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "", + "pm.test(\"JSON format is as expected\", function () {", + " for (var api of Object.keys(jsonData)) {", + " pm.expect(jsonData[api]).to.be.an.instanceof(Array);", + " for (var result of jsonData[api]) {", + " pm.expect(typeof result).to.equal(\"object\");", + " pm.expect(Object.keys(result)).to.have.lengthOf(4);", + " pm.expect(result).to.have.property(\"test\");", + " pm.expect(typeof result.test).to.equal(\"string\");", + " pm.expect(result).to.have.property(\"status\");", + " pm.expect(typeof result.status).to.equal(\"string\");", + " pm.expect(result).to.have.property(\"message\");", + " pm.expect(result.message).to.satisfy(message => !message || typeof message === \"string\");", + " pm.expect(result).to.have.property(\"subtests\");", + " pm.expect(result.subtests).to.be.an.instanceof(Array);", + " for (var subtest of result.subtests) {", + " pm.expect(typeof subtest).to.equal(\"object\");", + " pm.expect(Object.keys(subtest)).to.have.lengthOf(3);", + " pm.expect(subtest).to.have.property(\"name\");", + " pm.expect(typeof subtest.name).to.equal(\"string\");", + " pm.expect(subtest).to.have.property(\"status\");", + " pm.expect(typeof subtest.status).to.equal(\"string\");", + " pm.expect(subtest).to.have.property(\"message\");", + " pm.expect(subtest.message).to.satisfy(message => !message || typeof message === \"string\");", + " }", + " }", + " }", + "});", + "", + "const test1 = pm.globals.get(\"single_test_1\");", + "const test2 = pm.globals.get(\"single_test_2\");", + "", + "pm.test(\"Test is first and second test, successful run and failed, and successful run and passed\", function () {", + " var api = Object.keys(jsonData)[0];", + " for (var result of jsonData[api]) {", + " if (result.test === test1) {", + " pm.expect(result.test).to.equal(test1); ", + " pm.expect(result.status).to.equal(\"OK\");", + " pm.expect(result.message).to.be.null;", + " var subtest = result.subtests[0];", + " pm.expect(subtest.status).to.equal(\"FAIL\");", + " } else {", + " pm.expect(result.test).to.equal(test2); ", + " pm.expect(result.status).to.equal(\"OK\");", + " pm.expect(result.message).to.be.null;", + " subtest = result.subtests[0];", + " pm.expect(subtest.status).to.equal(\"PASS\");", + " }", + " }", + "})" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/results/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "results", + "{{session_token}}" + ], + "query": [ + { + "key": "path", + "value": "/2dcontext/drawing-images-to-the-canvas", + "disabled": true + }, + { + "key": "path", + "value": "/2dcontext/conformance-requirements", + "disabled": true + }, + { + "key": "path", + "value": "/2dcontext/conformance-requirements/2d.missingargs.html", + "disabled": true + } + ] + } + }, + "response": [] + }, + { + "name": "Read Results Compact", + "event": [ + { + "listen": "test", + "script": { + "id": "14ec9254-5a40-4c86-9a7f-72f43a35a79b", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "", + "pm.test(\"JSON structure is as expected\", function () {", + " pm.expect(typeof jsonData).to.equal(\"object\");", + " for (var api of Object.keys(jsonData)) {", + " pm.expect(jsonData[api]).to.have.property(\"pass\");", + " pm.expect(typeof jsonData[api].pass).to.equal(\"number\");", + " pm.expect(jsonData[api]).to.have.property(\"fail\");", + " pm.expect(typeof jsonData[api].fail).to.equal(\"number\");", + " pm.expect(jsonData[api]).to.have.property(\"timeout\");", + " pm.expect(typeof jsonData[api].timeout).to.equal(\"number\");", + " pm.expect(jsonData[api]).to.have.property(\"not_run\");", + " pm.expect(typeof jsonData[api].not_run).to.equal(\"number\");", + " }", + "})", + "", + "const test1 = pm.globals.get(\"single_test_1\");", + "const test2 = pm.globals.get(\"single_test_2\");", + "", + "var test1Api = test1.split(\"/\").find(part => !!part);", + "var test2Api = test1.split(\"/\").find(part => !!part);", + "", + "pm.test(\"Responds with one test failed\", function () {", + " pm.expect(Object.keys(jsonData)).to.have.lengthOf(2);", + " var api = Object.keys(jsonData)[0];", + " if (api === test1Api) {", + " pm.expect(jsonData[api].pass).to.equal(0);", + " pm.expect(jsonData[api].fail).to.equal(1);", + " } else {", + " pm.expect(jsonData[api].pass).to.equal(1);", + " pm.expect(jsonData[api].fail).to.equal(0);", + " }", + " pm.expect(jsonData[api].timeout).to.equal(0);", + " pm.expect(jsonData[api].not_run).to.equal(0);", + " api = Object.keys(jsonData)[1];", + " if (api === test1Api) {", + " pm.expect(jsonData[api].pass).to.equal(0);", + " pm.expect(jsonData[api].fail).to.equal(1);", + " } else {", + " pm.expect(jsonData[api].pass).to.equal(1);", + " pm.expect(jsonData[api].fail).to.equal(0);", + " }", + " pm.expect(jsonData[api].timeout).to.equal(0);", + " pm.expect(jsonData[api].not_run).to.equal(0);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/results/{{session_token}}/compact", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "results", + "{{session_token}}", + "compact" + ] + } + }, + "response": [] + }, + { + "name": "Read Next Test of Session", + "event": [ + { + "listen": "test", + "script": { + "id": "132574dc-3688-47e3-8f50-3235f18806f7", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "const response = pm.response.json();", + "", + "pm.test(\"JSON structure is as expected\", function () {", + " pm.expect(Object.keys(response)).to.have.lengthOf(1);", + " pm.expect(response).to.have.property(\"next_test\");", + " pm.expect(typeof response.next_test).to.equal(\"string\");", + "});", + "", + "const nextTest = response.next_test;", + "pm.globals.set(\"current_test_url\", nextTest);", + "if (!nextTest) return;", + "const test = \"/\" + nextTest.split(\"/\").slice(3).join(\"/\").split(\"?\")[0];", + "pm.globals.set(\"current_test\", test);", + "", + "const web_root = pm.environment.get(\"web_root\");", + "", + "pm.test(\"Returned test finish page\", function () {", + " pm.expect(test).to.equal(\"/\" + web_root + \"/finish.html\");", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}/next", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests", + "{{session_token}}", + "next" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "Clean Up", + "item": [ + { + "name": "Delete Session", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + } + ], + "protocolProfileBehavior": {} + }, + { + "name": "Viewing and Downloading Reports", + "item": [ + { + "name": "Create Sessions", + "item": [ + { + "name": "First Session", + "item": [ + { + "name": "Create Session One Tests", + "event": [ + { + "listen": "test", + "script": { + "id": "2f233dcf-d934-4479-8908-b1349e6ea54d", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "const response = pm.response.json();", + "const token = response.token;", + "pm.globals.set(\"session_token\", token);" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "id": "2930a821-2c6e-47b9-89d9-90ebe1cff52a", + "exec": [ + "const availableTests = JSON.parse(pm.globals.get(\"available_tests\"));", + "const keys = Object.keys(availableTests).sort();", + "const test1 = availableTests[keys[0]][0];", + "const test2 = availableTests[keys[1]][0];", + "const apiName = test1.split(\"/\").find(part => !!part);", + "", + "pm.globals.set(\"single_test_1\", test1);", + "pm.globals.set(\"single_test_2\", test2);", + "pm.globals.set(\"api_name\", apiName);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"tests\": {\n \"include\": [\"{{single_test_1}}\"]\n }\n}" + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions" + ] + } + }, + "response": [] + }, + { + "name": "Start Session", + "event": [ + { + "listen": "test", + "script": { + "id": "12f3616b-707e-4a71-8db8-89fc195c1fcd", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/start", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "start" + ] + } + }, + "response": [] + }, + { + "name": "Read Next Test of Session", + "event": [ + { + "listen": "test", + "script": { + "id": "f35f1509-383f-49af-a30e-41e1df4efa04", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "const response = pm.response.json();", + "", + "const nextTest = response.next_test;", + "pm.globals.set(\"current_test_url\", nextTest);", + "if (!nextTest) return;", + "", + "const parameters = nextTest.split(\"?\")[1].split(\"&\");", + "let test = parameters.find(parameter => parameter.split(\"=\")[0] === \"test_url\").split(\"=\")[1];", + "test = decodeURIComponent(test);", + "test = \"/\" + test.split(\"/\").slice(3).join(\"/\").split(\"?\")[0];", + "", + "pm.globals.set(\"current_test\", test);", + "" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}/next", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests", + "{{session_token}}", + "next" + ] + } + }, + "response": [] + }, + { + "name": "Create Result", + "event": [ + { + "listen": "test", + "script": { + "id": "b015f161-e390-4224-9f26-92395f44c772", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "value": "application/json", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"test\": \"{{current_test}}\",\n \"status\": \"OK\",\n \"message\": null,\n \"subtests\": [\n {\n \"name\": \"Subtest testing feature xy\",\n \"status\": \"FAIL\",\n \"message\": \"Error message\"\n }\n ]\n}" + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/results/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "results", + "{{session_token}}" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "Second Session", + "item": [ + { + "name": "Create Session One Tests", + "event": [ + { + "listen": "test", + "script": { + "id": "da3d0c17-6b2b-4d61-ad01-dba736425388", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "const response = pm.response.json();", + "const token = response.token;", + "pm.globals.set(\"session_token_comp\", token);" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "id": "7da81e81-d344-4459-b700-19b93d49d3c9", + "exec": [ + "const availableTests = JSON.parse(pm.globals.get(\"available_tests\"));", + "const keys = Object.keys(availableTests).sort();", + "const test1 = availableTests[keys[0]][0];", + "", + "pm.globals.set(\"single_test_1\", test1);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"tests\": {\n \"include\": [\"{{single_test_1}}\"]\n }\n}" + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions" + ] + } + }, + "response": [] + }, + { + "name": "Start Session", + "event": [ + { + "listen": "test", + "script": { + "id": "3296c7ba-67a6-405d-a78a-51dd64432301", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token_comp}}/start", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token_comp}}", + "start" + ] + } + }, + "response": [] + }, + { + "name": "Read Next Test of Session", + "event": [ + { + "listen": "test", + "script": { + "id": "72deb55c-4583-4741-9cf8-97713762b894", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "const response = pm.response.json();", + "", + "const nextTest = response.next_test;", + "pm.globals.set(\"current_test_url\", nextTest);", + "if (!nextTest) return;", + "", + "const parameters = nextTest.split(\"?\")[1].split(\"&\");", + "let test = parameters.find(parameter => parameter.split(\"=\")[0] === \"test_url\").split(\"=\")[1];", + "test = decodeURIComponent(test);", + "test = \"/\" + test.split(\"/\").slice(3).join(\"/\").split(\"?\")[0];", + "", + "pm.globals.set(\"current_test\", test);", + "" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token_comp}}/next", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests", + "{{session_token_comp}}", + "next" + ] + } + }, + "response": [] + }, + { + "name": "Create Result", + "event": [ + { + "listen": "test", + "script": { + "id": "d695f300-a773-4654-b346-95c536cad19e", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "value": "application/json", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"test\": \"{{current_test}}\",\n \"status\": \"OK\",\n \"message\": null,\n \"subtests\": [\n {\n \"name\": \"Subtest testing feature xy\",\n \"status\": \"FAIL\",\n \"message\": \"Error message\"\n }\n ]\n}" + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/results/{{session_token_comp}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "results", + "{{session_token_comp}}" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "Download reports", + "item": [ + { + "name": "Download Results Overview", + "event": [ + { + "listen": "test", + "script": { + "id": "6838965f-7a27-48d5-8c27-f55d4756588f", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/results/{{session_token}}/overview", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "results", + "{{session_token}}", + "overview" + ] + } + }, + "response": [] + }, + { + "name": "Download All Apis Json", + "event": [ + { + "listen": "test", + "script": { + "id": "bcc2c8c4-94c0-4227-a627-3e0d5be2e7b8", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/results/{{session_token}}/json", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "results", + "{{session_token}}", + "json" + ] + } + }, + "response": [] + }, + { + "name": "Download WPT Multi Report Url", + "event": [ + { + "listen": "test", + "script": { + "id": "7b370723-0506-4b5e-941a-f31a628a29f6", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Uri returned\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(typeof jsonData.uri).to.equal(\"string\");", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/results/{{api_name}}/reporturl?tokens={{session_token}},{{session_token_comp}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "results", + "{{api_name}}", + "reporturl" + ], + "query": [ + { + "key": "tokens", + "value": "{{session_token}},{{session_token_comp}}" + } + ] + } + }, + "response": [] + }, + { + "name": "Download Results Api Json", + "event": [ + { + "listen": "test", + "script": { + "id": "b5243979-b63a-4bbf-bd51-1529da1e1f6d", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "id": "81f3da29-8a0c-4403-929d-86590b01ef2f", + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/results/{{session_token}}/{{api_name}}/json", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "results", + "{{session_token}}", + "{{api_name}}", + "json" + ] + } + }, + "response": [] + }, + { + "name": "Download WPT Report Copy", + "event": [ + { + "listen": "test", + "script": { + "id": "0168ea3f-9bf7-4ea7-a3ad-745c2704d97e", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Uri returned\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(typeof jsonData.uri).to.equal(\"string\");", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "id": "e4efdac9-2d00-4853-b145-18a6d44ff139", + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/results/{{session_token}}/{{api_name}}/reporturl", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "results", + "{{session_token}}", + "{{api_name}}", + "reporturl" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + } + ], + "protocolProfileBehavior": {} + }, + { + "name": "Malfunctioning List", + "item": [ + { + "name": "Create Session \\w Configuration Copy", + "event": [ + { + "listen": "test", + "script": { + "id": "e685a989-8ef7-4e8f-a3c7-b579c66430f9", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");", + "", + "pm.test(\"Responds with token in JSON format\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(jsonData.token).to.match(tokenRegex);", + "});", + "", + "", + "const response = pm.response.json();", + "const token = response.token;", + "pm.globals.set(\"session_token\", token);" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "id": "8517360b-2e66-4ca9-9339-017622c39888", + "exec": [ + "var automaticTimeout = 120000;", + "var manualTimeout = 1000000;", + "var specialTimeout = 2000;", + "", + "pm.globals.set(\"automatic_timeout\", automaticTimeout);", + "pm.globals.set(\"manual_timeout\", manualTimeout);", + "pm.globals.set(\"special_timeout\", specialTimeout);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"tests\": {\n \"include\": {{included_tests}},\n \"exclude\": {{excluded_tests}}\n },\n \"types\": [\n \"automatic\"\n ],\n \"timeouts\": {\n \"automatic\": {{automatic_timeout}},\n \"manual\": {{manual_timeout}},\n \"{{special_timeout_test}}\": {{special_timeout}}\n },\n \"labels\": [\"label1\", \"label2\"]\n}" + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Malfunctioning Empty", + "event": [ + { + "listen": "test", + "script": { + "id": "4e85ecaf-4364-4681-ab8a-221d40681c44", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "", + "pm.test(\"Return empty array\", function() {", + " pm.expect(jsonData).to.be.an.instanceof(Array)", + " pm.expect(jsonData).to.have.length(0)", + "})" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}/malfunctioning", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests", + "{{session_token}}", + "malfunctioning" + ] + } + }, + "response": [] + }, + { + "name": "Update Session Malfunctioning Insert Two", + "event": [ + { + "listen": "test", + "script": { + "id": "a6221560-9eba-4fb4-a7cb-a1570a37425d", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "value": "application/json", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "[\n\t\"/test/file/one.html\",\n\t\"/test/file/two.html\"\n]", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}/malfunctioning", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests", + "{{session_token}}", + "malfunctioning" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Malfunctioning Two Tests", + "event": [ + { + "listen": "test", + "script": { + "id": "77d14567-4600-44fd-98e4-99e113da6781", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "", + "pm.test(\"Return array with two tests\", function() {", + " pm.expect(jsonData).to.be.an.instanceof(Array)", + " pm.expect(jsonData).to.have.length(2)", + " pm.expect(jsonData).to.include(\"/test/file/one.html\")", + " pm.expect(jsonData).to.include(\"/test/file/two.html\")", + "})" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}/malfunctioning", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests", + "{{session_token}}", + "malfunctioning" + ] + } + }, + "response": [] + }, + { + "name": "Update Session Malfunctioning Empty Array", + "event": [ + { + "listen": "test", + "script": { + "id": "55b486da-c5ae-49d4-b11a-247387267c9a", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "[]", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}/malfunctioning", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests", + "{{session_token}}", + "malfunctioning" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Malfunctioning Empty", + "event": [ + { + "listen": "test", + "script": { + "id": "953002ec-d8df-477a-a0dc-f4e4a2efd031", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "", + "pm.test(\"Return empty array\", function() {", + " pm.expect(jsonData).to.be.an.instanceof(Array)", + " pm.expect(jsonData).to.have.length(0)", + "})" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}/malfunctioning", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests", + "{{session_token}}", + "malfunctioning" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {} + }, + { + "name": "Sessions API", + "item": [ + { + "name": "create session", + "item": [ + { + "name": "With Defaults", + "item": [ + { + "name": "Prep: Read Available Tests", + "event": [ + { + "listen": "test", + "script": { + "id": "fc15d329-d132-4abf-90e4-f549eee99b60", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var availableTests = pm.response.json();", + "", + "pm.test(\"JSON structure is as expected\", function () {", + " pm.expect(typeof availableTests).to.equal(\"object\");", + " for (var api of Object.keys(availableTests)) {", + " pm.expect(availableTests[api]).to.be.an.instanceof(Array);", + " var apiRegExp = new RegExp(\"^/\" + api, \"i\");", + " for (var test of availableTests[api]) {", + " pm.expect(test).to.match(apiRegExp);", + " }", + " }", + "});", + "", + "var includedTests = [];", + "var excludedTests = [];", + "var specialTimeoutTest = \"\";", + "", + "var apis = Object.keys(availableTests);", + "for(var api of apis) {", + " if (availableTests[api].length > 50) {", + " var subDirs = availableTests[api].map(test => test.split(\"/\").filter(part => !!part).join(\"/\").split(\"/\")[1]).reduce((acc, curr) => acc.indexOf(curr) === -1 ? acc.concat([curr]) : acc, []);", + " if (subDirs.length > 2) {", + " includedTests.push(\"/\" + api);", + " excludedTests.push(\"/\" + api + \"/\" + subDirs[0]);", + " specialTimeoutTest = availableTests[api][availableTests[api].length - 1];", + " break;", + " }", + " ", + " }", + "}", + "", + "pm.globals.set(\"available_tests\", availableTests);", + "pm.globals.set(\"included_tests\", JSON.stringify(includedTests));", + "pm.globals.set(\"excluded_tests\", JSON.stringify(excludedTests));", + "pm.globals.set(\"special_timeout_test\", specialTimeoutTest.replace(\".\", \"\"));" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests" + ] + } + }, + "response": [] + }, + { + "name": "Create Session No Configuration", + "event": [ + { + "listen": "test", + "script": { + "id": "ebb192ce-48e5-4aac-b99d-68894378eac8", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");", + "", + "pm.test(\"Responds with token in JSON format\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(jsonData.token).to.match(tokenRegex);", + "});", + "", + "", + "const response = pm.response.json();", + "const token = response.token;", + "pm.globals.set(\"session_token\", token);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "" + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Configuration", + "event": [ + { + "listen": "test", + "script": { + "id": "159976cd-de00-4f88-8f9f-47db13ca4a30", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");", + "", + "pm.test(\"Configuration is default\", function () {", + " pm.expect(jsonData.token).to.match(tokenRegex);", + " pm.expect(jsonData.tests.include).to.include(\"/\");", + " pm.expect(jsonData.types).to.include(\"automatic\");", + " pm.expect(jsonData.types).to.include(\"manual\");", + " pm.expect(jsonData.user_agent).to.include(\"PostmanRuntime\");", + " pm.expect(jsonData.timeouts.automatic).to.equal(60000);", + " pm.expect(jsonData.timeouts.manual).to.equal(300000);", + " pm.expect(jsonData.browser.name).to.equal(\"Other\");", + " pm.expect(jsonData.browser.version).to.equal(\"0\");", + " pm.expect(jsonData.is_public).to.equal(false);", + " pm.expect(jsonData.reference_tokens).to.be.empty;", + " pm.expect(jsonData.labels).to.be.empty;", + " pm.expect(new Date(jsonData.date_created).getTime()).to.be.below(Date.now());", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Status", + "event": [ + { + "listen": "test", + "script": { + "id": "5058b07b-5e55-44e0-ad88-5c7b5884fa3c", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "", + "var jsonData = pm.response.json();", + "", + "pm.test(\"Session status is pending\", function () {", + " pm.expect(jsonData.status).to.equal(\"pending\");", + "})", + "", + "pm.test(\"Start, Finish and Expiration date not set\", function () {", + " pm.expect(jsonData.date_started).to.be.null;", + " pm.expect(jsonData.date_finished).to.be.null;", + " pm.expect(jsonData.expiration_date).to.be.null;", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "status" + ] + } + }, + "response": [] + }, + { + "name": "Read Tests of Session", + "event": [ + { + "listen": "test", + "script": { + "id": "62a8c853-bf0b-47b0-9cee-7611d2b48cde", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "", + "pm.test(\"JSON structure is as expected\", function () {", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(typeof jsonData.token).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"pending_tests\");", + " pm.expect(typeof jsonData.pending_tests).to.equal(\"object\");", + " pm.expect(jsonData).to.have.property(\"running_tests\");", + " pm.expect(typeof jsonData.running_tests).to.equal(\"object\");", + "});", + "", + "pm.test(\"All tests are pending tests\", function () {", + " pm.expect(Object.keys(jsonData.pending_tests)).to.not.have.lengthOf(0);", + " pm.expect(Object.keys(jsonData.running_tests)).to.have.lengthOf(0);", + "})", + "", + "const availableTests = pm.globals.get(\"available_tests\");", + "", + "pm.test(\"All available tests are part of the session\", function () {", + " for (var api of Object.keys(jsonData.pending_tests)) {", + " for (var test of jsonData.pending_tests[api]) {", + " pm.expect(availableTests[api]).to.include(test);", + " }", + " }", + "})" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests", + "{{session_token}}" + ] + } + }, + "response": [] + }, + { + "name": "Clean up: Delete session", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}" + ] + } + }, + "response": [] + } + ], + "event": [ + { + "listen": "prerequest", + "script": { + "id": "878420c3-575a-4194-9a72-cebe07823674", + "type": "text/javascript", + "exec": [ + "" + ] + } + }, + { + "listen": "test", + "script": { + "id": "6672030f-5a8a-4bea-9792-c24b980392e9", + "type": "text/javascript", + "exec": [ + "" + ] + } + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "With Configuration", + "item": [ + { + "name": "Prep: Read Available Tests", + "event": [ + { + "listen": "test", + "script": { + "id": "504b76ca-6870-443c-8c33-0cccc52cddae", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var availableTests = pm.response.json();", + "", + "pm.test(\"JSON structure is as expected\", function () {", + " pm.expect(typeof availableTests).to.equal(\"object\");", + " for (var api of Object.keys(availableTests)) {", + " pm.expect(availableTests[api]).to.be.an.instanceof(Array);", + " var apiRegExp = new RegExp(\"^/\" + api, \"i\");", + " for (var test of availableTests[api]) {", + " pm.expect(test).to.match(apiRegExp);", + " }", + " }", + "});", + "", + "var includedTests = [];", + "var excludedTests = [];", + "var specialTimeoutTest = \"\";", + "", + "var apis = Object.keys(availableTests).sort();", + "for(var api of apis) {", + " if (availableTests[api].length > 50) {", + " var subDirs = availableTests[api].map(test => test.split(\"/\").filter(part => !!part).join(\"/\").split(\"/\")[1]).reduce((acc, curr) => acc.indexOf(curr) === -1 ? acc.concat([curr]) : acc, []);", + " if (subDirs.length > 2) {", + " includedTests.push(\"/\" + api);", + " excludedTests.push(\"/\" + api + \"/\" + subDirs[0]);", + " specialTimeoutTest = availableTests[api][availableTests[api].length - 1];", + " break;", + " }", + " ", + " }", + "}", + "", + "pm.globals.set(\"available_tests\", availableTests);", + "pm.globals.set(\"included_tests\", JSON.stringify(includedTests));", + "pm.globals.set(\"excluded_tests\", JSON.stringify(excludedTests));", + "pm.globals.set(\"special_timeout_test\", specialTimeoutTest.replace(\".\", \"\"));" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests" + ] + } + }, + "response": [] + }, + { + "name": "Create Session \\w Configuration", + "event": [ + { + "listen": "test", + "script": { + "id": "fa956871-503a-421c-9822-4e2a11e1cf1c", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");", + "", + "pm.test(\"Responds with token in JSON format\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(jsonData.token).to.match(tokenRegex);", + "});", + "", + "", + "const response = pm.response.json();", + "const token = response.token;", + "pm.globals.set(\"session_token\", token);" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "id": "213bdf59-9f98-4b5e-bacc-ae3cb31ae26a", + "exec": [ + "var automaticTimeout = 120000;", + "var manualTimeout = 1000000;", + "var specialTimeout = 2000;", + "", + "pm.globals.set(\"automatic_timeout\", automaticTimeout);", + "pm.globals.set(\"manual_timeout\", manualTimeout);", + "pm.globals.set(\"special_timeout\", specialTimeout);", + "", + "const availableTests = pm.globals.get(\"available_tests\");", + "const apiNames = Object.keys(availableTests).sort();", + "const apiName = apiNames[0];", + "", + "pm.globals.set(\"api_name\", apiName);", + "pm.globals.set(\"special_timeout_test\", \"/\" + apiName);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"tests\": {\n \"include\": [\"/{{api_name}}\"]\n },\n \"timeouts\": {\n \"automatic\": {{automatic_timeout}},\n \"manual\": {{manual_timeout}},\n \"{{special_timeout_test}}\": {{special_timeout}}\n },\n \"labels\": [\"label1\", \"label2\"]\n}" + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Configuration", + "event": [ + { + "listen": "test", + "script": { + "id": "a0434a56-04b8-4987-8f44-2d71b440ef03", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");", + "", + "var includedTests = JSON.parse(pm.globals.get(\"included_tests\"));", + "var excludedTests = JSON.parse(pm.globals.get(\"excluded_tests\"));", + "var automaticTimeout = pm.globals.get(\"automatic_timeout\");", + "var manualTimeout = pm.globals.get(\"manual_timeout\");", + "var specialTimeout = pm.globals.get(\"special_timeout\");", + "var specialTimeoutTest = pm.globals.get(\"special_timeout_test\");", + "", + "pm.test(\"Configuration is as specified\", function () {", + " pm.expect(jsonData.token).to.match(tokenRegex);", + " for (var test of includedTests) {", + " pm.expect(jsonData.tests.include).to.include(test);", + " }", + " for (var test of excludedTests) {", + " pm.expect(jsonData.tests.exclude).to.include(test);", + " }", + " pm.expect(jsonData.types).to.include(\"automatic\");", + " pm.expect(jsonData.types).to.include(\"manual\");", + " pm.expect(jsonData.user_agent).to.include(\"PostmanRuntime\");", + " pm.expect(jsonData.timeouts.automatic).to.equal(automaticTimeout);", + " pm.expect(jsonData.timeouts.manual).to.equal(manualTimeout);", + " pm.expect(jsonData.timeouts[specialTimeoutTest]).to.equal(specialTimeout);", + " pm.expect(jsonData.browser.name).to.equal(\"Other\");", + " pm.expect(jsonData.browser.version).to.equal(\"0\");", + " pm.expect(jsonData.is_public).to.equal(false);", + " pm.expect(jsonData.reference_tokens).to.be.empty;", + " pm.expect(jsonData.labels).to.include(\"label1\");", + " pm.expect(jsonData.labels).to.include(\"label2\");", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Status", + "event": [ + { + "listen": "test", + "script": { + "id": "2a7524e5-7394-4177-8267-42d5b32bc474", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "", + "var jsonData = pm.response.json();", + "", + "pm.test(\"Session status is pending\", function () {", + " pm.expect(jsonData.status).to.equal(\"pending\");", + "})", + "", + "pm.test(\"Start and Finish date not set\", function () {", + " pm.expect(jsonData.date_started).to.be.null;", + " pm.expect(jsonData.date_finished).to.be.null;", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "status" + ] + } + }, + "response": [] + }, + { + "name": "Read Tests of Session", + "event": [ + { + "listen": "test", + "script": { + "id": "448b6a0c-135d-42ef-8bc0-b4b1ce4ab8a0", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "", + "pm.test(\"All tests are pending tests\", function () {", + " pm.expect(Object.keys(jsonData.pending_tests)).to.not.have.lengthOf(0);", + " pm.expect(Object.keys(jsonData.running_tests)).to.have.lengthOf(0);", + "})", + "", + "const availableTests = pm.globals.get(\"available_tests\");", + "const includedTests = pm.globals.get(\"included_tests\");", + "const excludedTests = pm.globals.get(\"excluded_tests\");", + "", + "pm.test(\"Selected subset of tests are part of the session\", function () {", + " for (var api of Object.keys(jsonData.pending_tests)) {", + " for (var includedTest of includedTests) {", + " if (includedTest.split(\"/\").find(part => !!part) === api) {", + " var includeRegExp = new RegExp(\"^\" + includedTest, \"i\");", + " for (var test of jsonData.pending_tests[api]) {", + " pm.expect(test).to.match(regex);", + " }", + " break;", + " }", + " }", + " for (var excludedTest of excludedTests) {", + " if (excludedTest.split(\"/\").find(part => !!part) === api) {", + " var excludeRegExp = new RegExp(\"^\" + excludedTest, \"i\");", + " for (var test of jsonData.pending_tests[api]) {", + " pm.expect(test).to.not.match(regex);", + " }", + " break;", + " }", + " }", + " }", + "});", + "", + "const sessionTests = jsonData.pending_tests;", + "", + "pm.globals.set(\"session_tests\", JSON.stringify(sessionTests));" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests", + "{{session_token}}" + ] + } + }, + "response": [] + }, + { + "name": "Clean up: Delete session", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}" + ] + } + }, + "response": [] + } + ], + "event": [ + { + "listen": "prerequest", + "script": { + "id": "a16eac8e-9609-4314-abd8-a5c470537b52", + "type": "text/javascript", + "exec": [ + "" + ] + } + }, + { + "listen": "test", + "script": { + "id": "5df55957-0bbb-4db8-9ab9-d8a70ce37bc5", + "type": "text/javascript", + "exec": [ + "" + ] + } + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "With Expiration", + "item": [ + { + "name": "Create Session With Expiration", + "event": [ + { + "listen": "test", + "script": { + "id": "6c4aa702-ae3a-44a4-b886-b3e883de4d32", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");", + "", + "pm.test(\"Responds with token in JSON format\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(jsonData.token).to.match(tokenRegex);", + "});", + "", + "", + "const response = pm.response.json();", + "const token = response.token;", + "pm.globals.set(\"session_token\", token);" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "id": "893672a9-c666-4790-b6a7-e0ce7afda482", + "exec": [ + "var expirationDate = Date.now() + 3000;", + "pm.globals.set(\"expiration_date\", expirationDate);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n\t\"expiration_date\": {{expiration_date}}\n}" + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions" + ] + } + }, + "response": [] + }, + { + "name": "Read Expired Session", + "event": [ + { + "listen": "test", + "script": { + "id": "f6b31d37-a98b-4110-80a2-f78db6f2e26f", + "exec": [ + "pm.test(\"Status code is 404\", function () {", + " pm.response.to.have.status(404);", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "id": "d41cf31b-c8e8-455f-aa69-527af5fbd66b", + "exec": [ + "var expirationDate = pm.globals.get(\"expiration_date\");", + "", + "var timeout = expirationDate - Date.now() + 1000", + "", + "console.log(timeout)", + "", + "setTimeout(function () {}, timeout);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}" + ] + } + }, + "response": [] + }, + { + "name": "Clean up: Delete session", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "read session", + "item": [ + { + "name": "Prep: Create Session No Configuration", + "event": [ + { + "listen": "test", + "script": { + "id": "090ca1bc-cbee-4d7b-b19f-fc1f4bb879a0", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");", + "", + "pm.test(\"Responds with token in JSON format\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(jsonData.token).to.match(tokenRegex);", + "});", + "", + "", + "const response = pm.response.json();", + "const token = response.token;", + "pm.globals.set(\"session_token\", token);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "" + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Configuration", + "event": [ + { + "listen": "test", + "script": { + "id": "232aff11-3cdc-4994-af42-5e3574583814", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");", + "", + "pm.test(\"JSON structure is as expected\", function () {", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(typeof jsonData.token).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"tests\");", + " pm.expect(typeof jsonData.tests).to.equal(\"object\");", + " pm.expect(jsonData.tests).to.have.property(\"include\");", + " pm.expect(jsonData.tests.include).to.be.an.instanceof(Array);", + " pm.expect(jsonData.tests).to.have.property(\"exclude\");", + " pm.expect(jsonData.tests.exclude).to.be.an.instanceof(Array);", + " pm.expect(jsonData).to.have.property(\"types\");", + " pm.expect(jsonData.types).to.be.an.instanceof(Array);", + " pm.expect(jsonData).to.have.property(\"user_agent\");", + " pm.expect(typeof jsonData.user_agent).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"timeouts\");", + " pm.expect(typeof jsonData.timeouts).to.equal(\"object\")", + " pm.expect(jsonData.timeouts).to.have.property(\"automatic\");", + " pm.expect(typeof jsonData.timeouts.automatic).to.equal(\"number\");", + " pm.expect(jsonData.timeouts).to.have.property(\"manual\");", + " pm.expect(typeof jsonData.timeouts.manual).to.equal(\"number\");", + " pm.expect(jsonData).to.have.property(\"browser\");", + " pm.expect(typeof jsonData.browser).to.equal(\"object\");", + " pm.expect(jsonData.browser).to.have.property(\"name\");", + " pm.expect(typeof jsonData.browser.name).to.equal(\"string\");", + " pm.expect(jsonData.browser).to.have.property(\"version\");", + " pm.expect(typeof jsonData.browser.version).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"reference_tokens\");", + " pm.expect(jsonData.reference_tokens).to.be.an.instanceof(Array);", + " pm.expect(jsonData).to.have.property(\"labels\");", + " pm.expect(jsonData.labels).to.be.an.instanceof(Array);", + " pm.expect(jsonData).to.have.property(\"date_created\");", + "});", + "", + "pm.test(\"Configuration is default\", function () {", + " pm.expect(jsonData.token).to.match(tokenRegex);", + " pm.expect(jsonData.tests.include).to.include(\"/\");", + " pm.expect(jsonData.types).to.include(\"automatic\");", + " pm.expect(jsonData.types).to.include(\"manual\");", + " pm.expect(jsonData.user_agent).to.include(\"PostmanRuntime\");", + " pm.expect(jsonData.timeouts.automatic).to.equal(60000);", + " pm.expect(jsonData.timeouts.manual).to.equal(300000);", + " pm.expect(jsonData.browser.name).to.equal(\"Other\");", + " pm.expect(jsonData.browser.version).to.equal(\"0\");", + " pm.expect(jsonData.is_public).to.equal(false);", + " pm.expect(jsonData.reference_tokens).to.be.empty;", + " pm.expect(jsonData.labels).to.be.empty;", + " pm.expect(new Date(jsonData.date_created).getTime()).to.be.below(Date.now());", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}" + ] + } + }, + "response": [] + }, + { + "name": "Clean up: Delete session", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "read session status", + "item": [ + { + "name": "Prep: Create Session No Configuration", + "event": [ + { + "listen": "test", + "script": { + "id": "73cbeeb0-019b-4331-b0ec-ef9d3f1e0494", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");", + "", + "pm.test(\"Responds with token in JSON format\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(jsonData.token).to.match(tokenRegex);", + "});", + "", + "", + "const response = pm.response.json();", + "const token = response.token;", + "pm.globals.set(\"session_token\", token);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "" + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions" + ] + } + }, + "response": [] + }, + { + "name": "Read Session Status", + "event": [ + { + "listen": "test", + "script": { + "id": "ba142b55-2454-4472-bcf9-669b0bb7bab9", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "", + "var jsonData = pm.response.json();", + "", + "pm.test(\"JSON structure is as expected\", function () {", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(typeof jsonData.token).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"status\");", + " pm.expect(typeof jsonData.status).to.equal(\"string\");", + " pm.expect(jsonData).to.have.property(\"expiration_date\");", + " pm.expect(jsonData.expiration_date).to.be.null;", + " pm.expect(jsonData).to.have.property(\"date_started\");", + " pm.expect(jsonData).to.have.property(\"date_finished\");", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/status", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "status" + ] + } + }, + "response": [] + }, + { + "name": "Clean up: Delete session", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "read sessions", + "item": [ + { + "name": "Without query parameters", + "item": [ + { + "name": "Read sessions", + "event": [ + { + "listen": "test", + "script": { + "id": "f443955f-b57e-4801-8eac-547597381615", + "exec": [ + "const response = pm.response.json();", + "", + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"JSON structure as expected\", function() {", + " pm.expect(response).to.have.property(\"items\");", + " pm.expect(response[\"items\"]).to.be.instanceof(Array);", + " pm.expect(response).to.have.property(\"_links\");", + " pm.expect(response[\"_links\"]).to.be.instanceof(Object);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/_wave/api/sessions", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "_wave", + "api", + "sessions" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "Containing created session", + "item": [ + { + "name": "Prep: Create session", + "event": [ + { + "listen": "test", + "script": { + "id": "2ca80dee-f9a5-4e0b-bead-6ab871d9edf8", + "exec": [ + "const response = pm.response.json();", + "const token = response.token;", + "pm.globals.set(\"session_token\", token);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions" + ] + } + }, + "response": [] + }, + { + "name": "Read sessions", + "event": [ + { + "listen": "test", + "script": { + "id": "fbf5eafb-0ae7-4105-8df5-51bb53b0c595", + "exec": [ + "const token = pm.globals.get(\"session_token\");", + "const response = pm.response.json();", + "", + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"JSON structure as expected\", function() {", + " pm.expect(response).to.have.property(\"items\");", + " pm.expect(response[\"items\"]).to.be.instanceof(Array);", + " pm.expect(response).to.have.property(\"_links\");", + " pm.expect(response[\"_links\"]).to.be.instanceof(Object);", + "});", + "", + "pm.test(\"Created session's token in response\", function() {", + " pm.expect(response.items).to.contain(token);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/_wave/api/sessions?index=0&count=1000", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "_wave", + "api", + "sessions" + ], + "query": [ + { + "key": "index", + "value": "0" + }, + { + "key": "count", + "value": "1000" + } + ] + } + }, + "response": [] + }, + { + "name": "Clean up: Delete Session", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "With configuration expansion", + "item": [ + { + "name": "Prep: Create session", + "event": [ + { + "listen": "test", + "script": { + "id": "bdd64594-c874-4eb2-8b36-4c37cea0f0cb", + "exec": [ + "const response = pm.response.json();", + "const token = response.token;", + "pm.globals.set(\"session_token\", token);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions" + ] + } + }, + "response": [] + }, + { + "name": "Read sessions", + "event": [ + { + "listen": "test", + "script": { + "id": "6732aedf-d99d-416f-b93d-98bc0404ef61", + "exec": [ + "const token = pm.globals.get(\"session_token\");", + "const response = pm.response.json();", + "", + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"JSON structure as expected\", function() {", + " pm.expect(response).to.have.property(\"items\");", + " pm.expect(response[\"items\"]).to.be.instanceof(Array);", + " pm.expect(response).to.have.property(\"_links\");", + " pm.expect(response[\"_links\"]).to.be.instanceof(Object);", + " pm.expect(response).to.have.property(\"_embedded\");", + " pm.expect(response[\"_embedded\"]).to.be.instanceof(Object);", + " pm.expect(response[\"_embedded\"]).to.have.property(\"configuration\");", + " pm.expect(response[\"_embedded\"][\"configuration\"]).to.be.instanceof(Array);", + "});", + "", + "pm.test(\"Created session's token in response\", function() {", + " pm.expect(response.items).to.contain(token);", + "});", + "", + "pm.test(\"Created session's token in embedded configuration\", function() {", + " let tokenInConfigurationList = false;", + " let configurations = response._embedded.configuration;", + " for (let configuration of configurations) {", + " if (configuration.token !== token) continue;", + " tokenInConfigurationList = true;", + " }", + " pm.expect(tokenInConfigurationList).to.equal(true);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/_wave/api/sessions?index=0&count=1000&expand=configuration", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "_wave", + "api", + "sessions" + ], + "query": [ + { + "key": "index", + "value": "0" + }, + { + "key": "count", + "value": "1000" + }, + { + "key": "expand", + "value": "configuration" + } + ] + } + }, + "response": [] + }, + { + "name": "Clean up: Delete Session", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "With status expansion", + "item": [ + { + "name": "Prep: Create session", + "event": [ + { + "listen": "test", + "script": { + "id": "3319e417-dd54-495f-a452-5519d2a61082", + "exec": [ + "const response = pm.response.json();", + "const token = response.token;", + "pm.globals.set(\"session_token\", token);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions" + ] + } + }, + "response": [] + }, + { + "name": "Read sessions", + "event": [ + { + "listen": "test", + "script": { + "id": "6ca3480a-3224-4bf8-a466-fdcb06338795", + "exec": [ + "const token = pm.globals.get(\"session_token\");", + "const response = pm.response.json();", + "", + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"JSON structure as expected\", function() {", + " pm.expect(response).to.have.property(\"items\");", + " pm.expect(response[\"items\"]).to.be.instanceof(Array);", + " pm.expect(response).to.have.property(\"_links\");", + " pm.expect(response[\"_links\"]).to.be.instanceof(Object);", + " pm.expect(response).to.have.property(\"_embedded\");", + " pm.expect(response[\"_embedded\"]).to.be.instanceof(Object);", + " pm.expect(response[\"_embedded\"]).to.have.property(\"status\");", + " pm.expect(response[\"_embedded\"][\"status\"]).to.be.instanceof(Array);", + "});", + "", + "pm.test(\"Created session's token in response\", function() {", + " pm.expect(response.items).to.contain(token);", + "});", + "", + "pm.test(\"Created session's token in embedded status\", function() {", + " let tokenInStatusList = false;", + " let statuses = response._embedded.status;", + " for (let status of statuses) {", + " if (status.token !== token) continue;", + " tokenInStatusList = true;", + " }", + " pm.expect(tokenInStatusList).to.equal(true);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/_wave/api/sessions?index=0&count=1000&expand=status", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "_wave", + "api", + "sessions" + ], + "query": [ + { + "key": "index", + "value": "0" + }, + { + "key": "count", + "value": "1000" + }, + { + "key": "expand", + "value": "status" + } + ] + } + }, + "response": [] + }, + { + "name": "Clean up: Delete Session", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + } + ], + "protocolProfileBehavior": {} + }, + { + "name": "Results API", + "item": [ + { + "name": "upload api", + "item": [ + { + "name": "create session", + "item": [ + { + "name": "Prep: Read Available Tests", + "event": [ + { + "listen": "test", + "script": { + "id": "1f3d8b67-aab8-44a0-abf4-e320a6b27755", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var availableTests = pm.response.json();", + "", + "var includedTests = [];", + "var excludedTests = [];", + "var specialTimeoutTest = \"\";", + "", + "var apis = Object.keys(availableTests);", + "for(var api of apis) {", + " if (availableTests[api].length > 50) {", + " var subDirs = availableTests[api].map(test => test.split(\"/\").filter(part => !!part)[1]).reduce((acc, curr) => acc.indexOf(curr) === -1 ? acc.concat([curr]) : acc, []);", + " if (subDirs.length > 2) {", + " includedTests.push(\"/\" + api);", + " excludedTests.push(\"/\" + api + \"/\" + subDirs[0]);", + " specialTimeoutTest = availableTests[api][availableTests[api].length - 1];", + " break;", + " }", + " ", + " }", + "}", + "", + "var usedApi = apis[0];", + "", + "pm.globals.set(\"api_name\", usedApi);", + "pm.globals.set(\"test\", availableTests[usedApi][0]);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests" + ] + } + }, + "response": [] + }, + { + "name": "Create Session With One test", + "event": [ + { + "listen": "test", + "script": { + "id": "f42479d4-f723-4843-ba91-f30019ebd975", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "const tokenRegex = new RegExp(\"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$\");", + "", + "pm.test(\"Responds with token in JSON format\", function () {", + " var jsonData = pm.response.json();", + " pm.expect(jsonData).to.have.property(\"token\");", + " pm.expect(jsonData.token).to.match(tokenRegex);", + "});", + "", + "", + "const response = pm.response.json();", + "const token = response.token;", + "pm.globals.set(\"session_token\", token);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "type": "text", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"tests\": {\n \"include\": [\"{{test}}\"]\n }\n}" + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions" + ] + } + }, + "response": [] + } + ], + "event": [ + { + "listen": "prerequest", + "script": { + "id": "9f8fc606-25ee-45de-bcd8-57735900701b", + "type": "text/javascript", + "exec": [ + "" + ] + } + }, + { + "listen": "test", + "script": { + "id": "be2341a8-1598-41b0-96a6-cfd049badd07", + "type": "text/javascript", + "exec": [ + "" + ] + } + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "create results", + "item": [ + { + "name": "Start Session", + "event": [ + { + "listen": "test", + "script": { + "id": "897e04ae-d0a2-4a67-9488-2bdeb55db06b", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}/start", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}", + "start" + ] + } + }, + "response": [] + }, + { + "name": "Read Next Test of Session", + "event": [ + { + "listen": "test", + "script": { + "id": "95b382c6-9d08-41b9-80d1-40dc0217cc09", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "const response = pm.response.json();", + "", + "pm.test(\"JSON structure is as expected\", function () {", + " pm.expect(Object.keys(response)).to.have.lengthOf(1);", + " pm.expect(response).to.have.property(\"next_test\");", + " pm.expect(typeof response.next_test).to.equal(\"string\");", + "});", + "", + "const nextTest = response.next_test;", + "pm.globals.set(\"current_test_url\", nextTest);", + "if (!nextTest) return;", + "", + "const parameters = nextTest.split(\"?\")[1].split(\"&\");", + "let test = parameters.find(parameter => parameter.split(\"=\")[0] === \"test_url\").split(\"=\")[1];", + "test = decodeURIComponent(test);", + "test = \"/\" + test.split(\"/\").slice(3).join(\"/\").split(\"?\")[0];", + "", + "pm.globals.set(\"current_test\", test);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/tests/{{session_token}}/next", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "tests", + "{{session_token}}", + "next" + ] + } + }, + "response": [] + }, + { + "name": "Create Result", + "event": [ + { + "listen": "test", + "script": { + "id": "67b23ac9-5254-4b7b-90bf-930a9661a614", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "name": "Content-Type", + "value": "application/json", + "type": "text" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"test\": \"{{current_test}}\",\n \"status\": \"OK\",\n \"message\": null,\n \"subtests\": [\n {\n \"name\": \"Subtest testing feature xy\",\n \"status\": \"FAIL\",\n \"message\": \"Error message\"\n }\n ]\n}" + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/results/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "results", + "{{session_token}}" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "upload new results", + "item": [ + { + "name": "Download current results", + "event": [ + { + "listen": "test", + "script": { + "id": "984c79db-5ae1-4c22-8b62-6eccabfaeb98", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "var results = jsonData.results;", + "", + "pm.globals.set(\"results\", results);" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "id": "a9a46b5f-2dd3-4fa7-a482-7186ac01a4d6", + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/results/{{session_token}}/{{api_name}}/json", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "results", + "{{session_token}}", + "{{api_name}}", + "json" + ] + } + }, + "response": [] + }, + { + "name": "Read Current Compact Results", + "event": [ + { + "listen": "test", + "script": { + "id": "f4974495-2e84-4962-9259-1d5501fb7a3f", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "", + "pm.globals.set(\"compact_results\", jsonData);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/results/{{session_token}}/compact", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "results", + "{{session_token}}", + "compact" + ] + } + }, + "response": [] + }, + { + "name": "Upload Results Api Json", + "event": [ + { + "listen": "test", + "script": { + "id": "4a7df46d-546c-4cf4-8c6a-9b13eaa0be32", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "id": "e2196348-a4a0-48d3-bd72-f591f0b65cf0", + "exec": [ + "var results = pm.globals.get(\"results\");", + "var newSubResult = ", + " {", + " \"name\": \"placeholder sub test\",", + " \"status\": \"PASS\",", + " \"message\": \"this is a placeholder sub test\"", + " };", + "", + "results[0].subtests.push(newSubResult);", + "resultsString = JSON.stringify(results);", + "pm.globals.set(\"resultsString\", resultsString);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"results\": {{resultsString}}\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/results/{{session_token}}/{{api_name}}/json", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "results", + "{{session_token}}", + "{{api_name}}", + "json" + ] + } + }, + "response": [] + }, + { + "name": "Check if changes took effect", + "event": [ + { + "listen": "test", + "script": { + "id": "8c45fd6d-ca98-4393-ace6-c01563d7c1ec", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "pm.test(\"Returned results contain new result\", function () {", + " var jsonData = pm.response.json();", + " var results = jsonData.results;", + "", + " var oldResults = pm.globals.get(\"results\");", + "", + " pm.expect(oldResults[0].subtests.length + 1).to.equal(results[0].subtests.length);", + "});", + "" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "id": "0c9e31fc-1931-4dcd-978f-39e2a38f9a3f", + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/results/{{session_token}}/{{api_name}}/json", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "results", + "{{session_token}}", + "{{api_name}}", + "json" + ] + } + }, + "response": [] + }, + { + "name": "Check changes in Compact Results", + "event": [ + { + "listen": "test", + "script": { + "id": "6e30b533-18f9-41bc-af65-bdde323c215a", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "var test = pm.globals.get(\"test\");", + "var oldCompactResults = pm.globals.get(\"compact_results\");", + "", + "pm.test(\"passed test increased\", function () {", + " var api = test.split(\"/\").find(part => !!part);", + " pm.expect(jsonData[api].pass).to.equal(oldCompactResults[api].pass + 1);", + "})" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/results/{{session_token}}/compact", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "results", + "{{session_token}}", + "compact" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "clean up", + "item": [ + { + "name": "Clean up: Delete session", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/sessions/{{session_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "sessions", + "{{session_token}}" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + } + ], + "protocolProfileBehavior": {} + }, + { + "name": "General API", + "item": [ + { + "name": "server status", + "item": [ + { + "name": "Read server status", + "event": [ + { + "listen": "test", + "script": { + "id": "8b5b4c23-db0a-4b81-9349-ce8ead64bb7a", + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "", + "var jsonData = pm.response.json();", + "", + "pm.test(\"JSON structure is as expected\", function () {", + " pm.expect(jsonData).to.have.property(\"import_results_enabled\");", + " pm.expect(typeof jsonData.import_results_enabled).to.equal(\"boolean\");", + " pm.expect(jsonData).to.have.property(\"reports_enabled\");", + " pm.expect(typeof jsonData.reports_enabled).to.equal(\"boolean\");", + " pm.expect(jsonData).to.have.property(\"read_sessions_enabled\");", + " pm.expect(typeof jsonData.read_sessions_enabled).to.equal(\"boolean\");", + " pm.expect(jsonData).to.have.property(\"version_string\");", + " pm.expect(typeof jsonData.version_string).to.equal(\"string\");", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/status", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "status" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + } + ], + "protocolProfileBehavior": {} + }, + { + "name": "Devices API", + "item": [ + { + "name": "create", + "item": [ + { + "name": "Create device", + "event": [ + { + "listen": "test", + "script": { + "id": "286426ec-c394-48a4-a90f-c6dd80c7bef1", + "exec": [ + "pm.test(\"Successful POST request\", function () {", + " pm.expect(pm.response.code).to.be.oneOf([200,201,202]);", + "});", + "", + "var response = pm.response.json();", + "", + "pm.test('Schema is valid', function() {", + " pm.expect(response).to.have.property(\"token\");", + "});", + "", + "pm.test('Data is valid', function() {", + " pm.expect(typeof response.token).to.equal(\"string\");", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/devices/", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "devices", + "" + ] + } + }, + "response": [] + }, + { + "name": "Clean up: Wait device timeout", + "event": [ + { + "listen": "test", + "script": { + "id": "3bdb0f7c-1261-465e-9b02-0070005f0c43", + "exec": [ + "" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "id": "a1cf5880-7b8e-4bc6-9d92-59632a719c54", + "exec": [ + "var timeout = parseInt(pm.environment.get(\"device_timeout\")) + 500", + "", + "setTimeout(function () {}, timeout);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/devices/", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "devices", + "" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "read device", + "item": [ + { + "name": "Device not found", + "item": [ + { + "name": "Read device", + "event": [ + { + "listen": "test", + "script": { + "id": "a4401cbc-0a3a-4c2d-b1ed-e7d6867614ff", + "exec": [ + "pm.test(\"Successful GET request\", function () {", + " pm.expect(pm.response.code).to.equal(404);", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "id": "1644fd70-b4c4-4207-8e12-67752a984417", + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/devices/invalid_token", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "devices", + "invalid_token" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "Device found", + "item": [ + { + "name": "Prep: Create device", + "event": [ + { + "listen": "test", + "script": { + "id": "c4f14137-5ced-449b-a872-b7d541e2f6af", + "exec": [ + "var response = pm.response.json();", + "var token = response.token;", + "", + "pm.globals.set(\"device_token\", token)" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/devices/", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "devices", + "" + ] + } + }, + "response": [] + }, + { + "name": "Read device", + "event": [ + { + "listen": "test", + "script": { + "id": "61a840f1-d3cd-4d7a-a54f-30da1266e48f", + "exec": [ + "pm.test(\"Successful GET request\", function () {", + " pm.expect(pm.response.code).to.be.oneOf([200]);", + "});", + "", + "var response = pm.response.json();", + "", + "pm.test('Schema is valid', function() {", + " pm.expect(response).to.have.property(\"token\");", + " pm.expect(response).to.have.property(\"user_agent\");", + " pm.expect(response).to.have.property(\"last_active\");", + " pm.expect(response).to.have.property(\"name\");", + "});", + "", + "pm.test('Data is valid', function() {", + " pm.expect(typeof response.token).to.equal(\"string\");", + " pm.expect(typeof response.user_agent).to.equal(\"string\");", + " pm.expect(typeof response.last_active).to.equal(\"string\");", + " pm.expect(typeof response.name).to.equal(\"string\");", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/devices/{{device_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "devices", + "{{device_token}}" + ] + } + }, + "response": [] + }, + { + "name": "Clean up: Wait device timeout", + "event": [ + { + "listen": "test", + "script": { + "id": "17112336-b962-472d-86a8-7872ff9876d1", + "exec": [ + "" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "id": "912939cc-1685-4e1f-b0a6-696b264870ca", + "exec": [ + "var timeout = parseInt(pm.environment.get(\"device_timeout\")) + 500", + "", + "setTimeout(function () {}, timeout);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/devices/", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "devices", + "" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "Timed out device", + "item": [ + { + "name": "Prep: Create device", + "event": [ + { + "listen": "test", + "script": { + "id": "c99b9318-1e50-4702-9d81-53d87faa1080", + "exec": [ + "var response = pm.response.json();", + "var token = response.token;", + "", + "pm.globals.set(\"device_token\", token)" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/devices/", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "devices", + "" + ] + } + }, + "response": [] + }, + { + "name": "Wait device timeout", + "event": [ + { + "listen": "test", + "script": { + "id": "89517dc9-31b4-40e7-89e4-99dd6e792e6a", + "exec": [ + "" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "id": "ed20bbf6-4f31-4d91-a07b-7a0b4afcf161", + "exec": [ + "var timeout = parseInt(pm.environment.get(\"device_timeout\")) + 500", + "", + "setTimeout(function () {}, timeout);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/devices/", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "devices", + "" + ] + } + }, + "response": [] + }, + { + "name": "Read device", + "event": [ + { + "listen": "test", + "script": { + "id": "7b7496f5-2fdc-470c-b394-2a5ae7d29da2", + "exec": [ + "pm.test(\"Successful GET request\", function () {", + " pm.expect(pm.response.code).to.equal(404);", + "});" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "id": "1807f152-7ef4-4277-9db6-1bff53d6cc8b", + "exec": [ + "" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/devices/{{device_token}}", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "devices", + "{{device_token}}" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + }, + { + "name": "read devices", + "item": [ + { + "name": "Prep: Create device A", + "event": [ + { + "listen": "test", + "script": { + "id": "a7803c5c-f371-4ae0-8b08-1c06995c9b60", + "exec": [ + "var response = pm.response.json();", + "var token = response.token;", + "", + "pm.globals.set(\"device_token_a\", token)" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/devices/", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "devices", + "" + ] + } + }, + "response": [] + }, + { + "name": "Prep: Create device B", + "event": [ + { + "listen": "test", + "script": { + "id": "02450903-aef9-4ee6-9d48-94ba9b5fd54c", + "exec": [ + "var response = pm.response.json();", + "var token = response.token;", + "", + "pm.globals.set(\"device_token_b\", token)" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/devices/", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "devices", + "" + ] + } + }, + "response": [] + }, + { + "name": "Read devices", + "event": [ + { + "listen": "test", + "script": { + "id": "1612417b-bed8-48d5-a6a3-39d0d0fe6932", + "exec": [ + "pm.test(\"Successful GET request\", function () {", + " pm.expect(pm.response.code).to.be.oneOf([200]);", + "});", + "", + "var response = pm.response.json();", + "", + "pm.test('Schema is valid', function() {", + " pm.expect(response).to.be.instanceof(Array);", + " response.forEach(element => {", + " pm.expect(element).to.have.property(\"token\");", + " pm.expect(element).to.have.property(\"user_agent\");", + " pm.expect(element).to.have.property(\"last_active\");", + " pm.expect(element).to.have.property(\"name\");", + " })", + "});", + "", + "pm.test('Data is valid', function() {", + " pm.expect(response).to.have.lengthOf(2);", + " var devices_left = [", + " pm.globals.get(\"device_token_a\"), ", + " pm.globals.get(\"device_token_b\")", + " ]", + " response.forEach(element => {", + " pm.expect(typeof element.token).to.equal(\"string\");", + " pm.expect(typeof element.user_agent).to.equal(\"string\");", + " pm.expect(typeof element.last_active).to.equal(\"string\");", + " pm.expect(typeof element.name).to.equal(\"string\");", + " pm.expect(devices_left).to.include(element.token);", + " devices_left.splice(devices_left.indexOf(element.token), 1);", + " })", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/devices/", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "devices", + "" + ] + } + }, + "response": [] + }, + { + "name": "Clean up: Wait device timeout", + "event": [ + { + "listen": "test", + "script": { + "id": "9b7ff623-8aac-46d1-9c56-1ceb8acc2de6", + "exec": [ + "" + ], + "type": "text/javascript" + } + }, + { + "listen": "prerequest", + "script": { + "id": "c0fbf742-f75e-4f3b-a576-75c9d5e0f72d", + "exec": [ + "var timeout = parseInt(pm.environment.get(\"device_timeout\")) + 500", + "", + "setTimeout(function () {}, timeout);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{protocol}}://{{host}}:{{port}}/{{web_root}}/api/devices/", + "protocol": "{{protocol}}", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "{{web_root}}", + "api", + "devices", + "" + ] + } + }, + "response": [] + } + ], + "protocolProfileBehavior": {}, + "_postman_isSubFolder": true + } + ], + "protocolProfileBehavior": {} + } + ], + "protocolProfileBehavior": {} +}
\ No newline at end of file |