From 53e812264a0979d6de3c780b7dcd09abf37baeed Mon Sep 17 00:00:00 2001 From: Julien Gautier Date: Sun, 30 Nov 2025 17:50:06 +0100 Subject: [PATCH] =?UTF-8?q?Mise=20=C3=A0=20jour=20des=20tests=20API=20via?= =?UTF-8?q?=20Postman?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../adastra-api-tests.postman_collection.json | 3770 +++++++++++++++++ ...adastra-api-tests.postman_environment.json | 16 + tests/api-tests.postman.json | 2015 --------- tests/env-api-tests.postman.json | 16 - 4 files changed, 3786 insertions(+), 2031 deletions(-) create mode 100644 tests/adastra-api-tests.postman_collection.json create mode 100644 tests/adastra-api-tests.postman_environment.json delete mode 100644 tests/api-tests.postman.json delete mode 100644 tests/env-api-tests.postman.json diff --git a/tests/adastra-api-tests.postman_collection.json b/tests/adastra-api-tests.postman_collection.json new file mode 100644 index 0000000..77d498d --- /dev/null +++ b/tests/adastra-api-tests.postman_collection.json @@ -0,0 +1,3770 @@ +{ + "info": { + "_postman_id": "98b758ba-065b-4906-adee-7dfd3ad86e02", + "name": "Ad Astra API Tests", + "description": "Collection for testing the Ad Astra API\n\nhttps://api.adastra-cbd.com/", + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json", + "_exporter_id": "10001192", + "_collection_link": "https://gold-equinox-726527.postman.co/workspace/d0b2d764-f48c-4a82-8c35-ae50b5b1167c/collection/10001192-98b758ba-065b-4906-adee-7dfd3ad86e02?action=share&source=collection_link&creator=10001192" + }, + "item": [ + { + "name": "Auth", + "item": [ + { + "name": "Register", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "if (!(environment.isIntegrationTest)) {", + " pm.test(\"Response code is 200 OK\", () => {", + " pm.expect(pm.response.code).to.eql(200);", + " });", + "", + " if(pm.response.code === 200){", + " var responseJSON = JSON.parse(pm.response.text());", + "", + " pm.test('Response contains \"user\" property', () => {", + " pm.expect(responseJSON).to.have.property('user');", + " });", + "", + " var user = responseJSON.user || {};", + "", + " pm.test('User has \"email\" property', () => {", + " pm.expect(user).to.have.property('email');", + " });", + " pm.test('User has \"username\" property', () => {", + " pm.expect(user).to.have.property('username');", + " });", + " pm.test('User has \"token\" property', () => {", + " pm.expect(user).to.have.property('token');", + " });", + " }", + "}", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-Requested-With", + "value": "XMLHttpRequest" + } + ], + "body": { + "mode": "raw", + "raw": "{\"user\":{\"email\":\"anne@honime.com\", \"password\":\"annehonimepwd\", \"username\":\"annehonime\"}}" + }, + "url": { + "raw": "{{apiUrl}}/user", + "host": [ + "{{apiUrl}}" + ], + "path": [ + "user" + ] + } + }, + "response": [] + }, + { + "name": "Login", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Response code is 200 OK\", () => {", + " pm.expect(pm.response.code).to.eql(200);", + "});", + "", + "if(pm.response.code === 200){", + " var responseJSON = JSON.parse(pm.response.text());", + "", + " pm.test('Response contains \"user\" property', () => {", + " pm.expect(responseJSON).to.have.property('user');", + " });", + "", + " var user = responseJSON.user || {};", + "", + " pm.test('User has \"email\" property', () => {", + " pm.expect(user).to.have.property('email');", + " });", + " pm.test('User has \"username\" property', () => {", + " pm.expect(user).to.have.property('username');", + " });", + " pm.test('User has an access \"token\" property', () => {", + " pm.expect(user).to.have.property('token');", + " pm.expect(user.token).to.be.a('string');", + " })", + "}", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-Requested-With", + "value": "XMLHttpRequest" + } + ], + "body": { + "mode": "raw", + "raw": "{\"user\":{\"email\":\"anne@honime.com\", \"password\":\"annehonimepwd\"}}" + }, + "url": { + "raw": "{{apiUrl}}/user/login", + "host": [ + "{{apiUrl}}" + ], + "path": [ + "user", + "login" + ] + } + }, + "response": [] + }, + { + "name": "Login and Remember Token", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Response code is 200 OK\", () => {", + " pm.expect(pm.response.code).to.eql(200);", + "});", + "", + "if(pm.response.code === 200){", + " var responseJSON = JSON.parse(pm.response.text());", + "", + " pm.test('Response contains \"user\" property', () => {", + " pm.expect(responseJSON).to.have.property('user');", + " });", + "", + " var user = responseJSON.user || {};", + "", + " pm.test('User has \"email\" property', () => {", + " pm.expect(user).to.have.property('email');", + " });", + " pm.test('User has \"username\" property', () => {", + " pm.expect(user).to.have.property('username');", + " });", + " pm.test('User has an access \"token\" property', () => {", + " try {", + " pm.expect(user).to.have.property('token');", + " pm.expect(user.token).to.be.a('string');", + " /*pm.environment.set('token', user.token);*/", + " pm.collectionVariables.set('token', user.token);", + " } catch {", + " /*pm.environment.unset('token');*/", + " pm.collectionVariables.unset('token');", + " }", + " });", + " pm.test('Environment variable \"token\" has been set', () => {", + " pm.expect(pm.environment.get('token')).to.eql(user.token);", + " });", + "}", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-Requested-With", + "value": "XMLHttpRequest" + } + ], + "body": { + "mode": "raw", + "raw": "{\"user\":{\"email\":\"rampeur@gmail.com\", \"password\":\"DKxp24PSnr\"}}" + }, + "url": { + "raw": "{{apiUrl}}/user/login", + "host": [ + "{{apiUrl}}" + ], + "path": [ + "user", + "login" + ] + } + }, + "response": [] + }, + { + "name": "Current User", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Response code is 200 OK\", () => {", + " pm.expect(pm.response.code).to.eql(200);", + "});", + "", + "if(pm.response.code === 200){", + " var responseJSON = JSON.parse(pm.response.text());", + "", + " pm.test('Response contains \"user\" property', () => {", + " pm.expect(responseJSON).to.have.property('user');", + " });", + "", + " var user = responseJSON.user || {};", + "", + " pm.test('User has \"email\" property', () => {", + " pm.expect(user).to.have.property('email');", + " });", + " pm.test('User has \"username\" property', () => {", + " pm.expect(user).to.have.property('username');", + " });", + " pm.test('User has an access \"token\" property', () => {", + " pm.expect(user).to.have.property('token');", + " pm.expect(user.token).to.be.a('string');", + " });", + "}", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-Requested-With", + "value": "XMLHttpRequest" + }, + { + "key": "Authorization", + "value": "Token {{token}}" + } + ], + "url": { + "raw": "{{apiUrl}}/user", + "host": [ + "{{apiUrl}}" + ], + "path": [ + "user" + ] + } + }, + "response": [] + }, + { + "name": "Update User", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Response code is 200 OK\", () => {", + " pm.expect(pm.response.code).to.eql(200);", + "});", + "", + "if(pm.response.code === 200){", + " var responseJSON = JSON.parse(pm.response.text());", + "", + " pm.test('Response contains \"user\" property', () => {", + " pm.expect(responseJSON).to.have.property('user');", + " });", + "", + " var user = responseJSON.user || {};", + "", + " pm.test('User has \"email\" property', () => {", + " pm.expect(user).to.have.property('email');", + " });", + " pm.test('User has \"username\" property', () => {", + " pm.expect(user).to.have.property('username');", + " });", + " pm.test('User has an access \"token\" property', () => {", + " pm.expect(user).to.have.property('token');", + " pm.expect(user.token).to.be.a('string');", + " });", + "}", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-Requested-With", + "value": "XMLHttpRequest" + }, + { + "key": "Authorization", + "value": "Token {{token}}" + } + ], + "body": { + "mode": "raw", + "raw": "{\"user\":{\"email\":\"rampeur@gmail.com\"}}" + }, + "url": { + "raw": "{{apiUrl}}/user", + "host": [ + "{{apiUrl}}" + ], + "path": [ + "user" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Clans", + "item": [ + { + "name": "All Clans", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Response code is 200 OK\", () => {", + " pm.expect(pm.response.code).to.eql(200);", + "});", + "", + "if(pm.response.code === 200){", + " var responseJSON = JSON.parse(pm.response.text());", + "", + " pm.test('Response contains \"data\" property', () => {", + " pm.expect(responseJSON).to.have.property('data');", + " });", + "", + " var data = responseJSON.data;", + "", + " pm.test('Response\\'s \"data\" property contains \"clans\" property', () => {", + " pm.expect(data).to.have.property('clans');", + " });", + " pm.test('data\\'s \"clans\" property is an array', () => {", + " pm.expect(data.clans).to.be.an(\"array\");", + " });", + " pm.test('Response\\'s \"data\" property contains \"clansCount\" property', () => {", + " pm.expect(data).to.have.property('clansCount');", + " });", + " pm.test('data\\'s \"clansCount\" property is an integer', () => {", + " pm.expect(data.clansCount).to.be.a(\"number\");", + " });", + "", + " if(data.clans.length){", + " var clan = data.clans[0];", + "", + " pm.test('Clan has \"id\" property', () => {", + " pm.expect(clan).to.have.property('id');", + " });", + " pm.test('Clan has \"country\" property', () => {", + " pm.expect(clan).to.have.property('country');", + " });", + " pm.test('Clan has \"description\" property', () => {", + " pm.expect(clan).to.have.property('description');", + " });", + " pm.test('Clan has \"disbanding\" property', () => {", + " pm.expect(clan).to.have.property('disbanding');", + " });", + " pm.test('Clan has \"frameId\" property', () => {", + " pm.expect(clan).to.have.property('frameId');", + " });", + " pm.test('Clan has \"icon\" property', () => {", + " pm.expect(clan).to.have.property('icon');", + " });", + " pm.test('Clan has \"level\" property', () => {", + " pm.expect(clan).to.have.property('level');", + " });", + " pm.test('Clan has \"members\" property', () => {", + " pm.expect(clan).to.have.property('members');", + " });", + " pm.test('Clan\\'s \"members\" property is an Array', () => {", + " pm.expect(clan.members).to.be.an(\"array\");", + " });", + " pm.test('Clan has \"membersCount\" property', () => {", + " pm.expect(clan).to.have.property('membersCount');", + " });", + " pm.test('Clan\\'s \"membersCount\" property is equal to \"members\" array length', () => {", + " pm.expect(clan.membersCount).to.eql(clan.members.length);", + " });", + " pm.test('Clan has \"minLevel\" property', () => {", + " pm.expect(clan).to.have.property('minLevel');", + " });", + " pm.test('Clan has \"ownerId\" property', () => {", + " pm.expect(clan).to.have.property('ownerId');", + " });", + " pm.test('Clan has \"serverId\" property', () => {", + " pm.expect(clan).to.have.property('serverId');", + " });", + " pm.test('Clan has \"title\" property', () => {", + " pm.expect(clan).to.have.property('title');", + " });", + " pm.test('Clan has \"topActivity\" property', () => {", + " pm.expect(clan).to.have.property('topActivity');", + " });", + " pm.test('Clan has \"topDungeon\" property', () => {", + " pm.expect(clan).to.have.property('topDungeon');", + " });", + " pm.test('Clan has an ISO 8601 timestamp \"createdAt\" property', () => {", + " pm.expect(clan).to.have.property('createdAt');", + " pm.expect(clan.createdAt).to.eql(new Date(clan.createdAt).toISOString());", + " });", + " pm.test('Clan has an ISO 8601 timestamp \"updatedAt\" property', () => {", + " pm.expect(clan).to.have.property('updatedAt');", + " pm.expect(clan.updatedAt).to.eql(new Date(clan.updatedAt).toISOString());", + " });", + " pm.test('Clan has \"author\" property', () => {", + " pm.expect(clan).to.have.property('author');", + " });", + " pm.test('Clan\\'s \"author\" property has not credential properties', () => {", + " pm.expect(clan.author).not.to.have.property('salt');", + " pm.expect(clan.author).not.to.have.property('hash');", + " });", + " } else {", + " pm.test('clansCount is 0 when \"clans\" property is empty', () => {", + " pm.expect(data.clansCount).to.eql(0);", + " });", + " }", + "}", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + }, + { + "key": "X-Requested-With", + "value": "XMLHttpRequest", + "type": "text" + }, + { + "key": "Authorization", + "value": "Token {{token}}", + "type": "text" + } + ], + "url": { + "raw": "{{apiUrl}}/clans", + "host": [ + "{{apiUrl}}" + ], + "path": [ + "clans" + ] + } + }, + "response": [] + }, + { + "name": "Create Clan", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Response code is 201 Created\", () => {", + " pm.expect(pm.response.code).to.eql(201);", + "});", + "", + "if(pm.response.code === 201){", + " var responseJSON = JSON.parse(pm.response.text());", + "", + " pm.test('Response contains \"message\" property', () => {", + " pm.expect(responseJSON).to.have.property('message');", + " });", + " pm.test('Response contains \"data\" property', () => {", + " pm.expect(responseJSON).to.have.property('data');", + " });", + "", + " var clan = responseJSON.data || {};", + "", + " pm.test('Clan has \"id\" property', () => {", + " try {", + " pm.expect(clan).to.have.property('id');", + " } catch (e) {", + " throw (e);", + " }", + " pm.collectionVariables.set('clanId', clan.id);", + " });", + " pm.test('Clan has \"country\" property', () => {", + " pm.expect(clan).to.have.property('country');", + " });", + " pm.test('Clan has \"description\" property', () => {", + " pm.expect(clan).to.have.property('description');", + " });", + " pm.test('Clan has \"disbanding\" property', () => {", + " pm.expect(clan).to.have.property('disbanding');", + " });", + " pm.test('Clan has \"frameId\" property', () => {", + " pm.expect(clan).to.have.property('frameId');", + " });", + " pm.test('Clan has \"icon\" property', () => {", + " pm.expect(clan).to.have.property('icon');", + " });", + " pm.test('Clan has \"level\" property', () => {", + " pm.expect(clan).to.have.property('level');", + " });", + " pm.test('Clan has \"members\" property', () => {", + " pm.expect(clan).to.have.property('members');", + " });", + " pm.test('Clan\\'s \"members\" property is an Array', () => {", + " pm.expect(clan.members).to.be.an(\"array\");", + " });", + " pm.test('Clan has \"membersCount\" property', () => {", + " pm.expect(clan).to.have.property('membersCount');", + " });", + " pm.test('Clan\\'s \"membersCount\" property is equal to \"members\" array length', () => {", + " pm.expect(clan.membersCount).to.eql(clan.members.length);", + " });", + " pm.test('Clan has \"minLevel\" property', () => {", + " pm.expect(clan).to.have.property('minLevel');", + " });", + " pm.test('Clan has \"ownerId\" property', () => {", + " pm.expect(clan).to.have.property('ownerId');", + " });", + " pm.test('Clan has \"serverId\" property', () => {", + " pm.expect(clan).to.have.property('serverId');", + " });", + " pm.test('Clan has \"title\" property', () => {", + " pm.expect(clan).to.have.property('title');", + " });", + " pm.test('Clan has \"topActivity\" property', () => {", + " pm.expect(clan).to.have.property('topActivity');", + " });", + " pm.test('Clan has \"topDungeon\" property', () => {", + " pm.expect(clan).to.have.property('topDungeon');", + " });", + " pm.test('Clan has an ISO 8601 timestamp \"createdAt\" property', () => {", + " pm.expect(clan).to.have.property('createdAt');", + " pm.expect(clan.createdAt).to.eql(new Date(clan.createdAt).toISOString());", + " });", + " pm.test('Clan has an ISO 8601 timestamp \"updatedAt\" property', () => {", + " pm.expect(clan).to.have.property('updatedAt');", + " pm.expect(clan.updatedAt).to.eql(new Date(clan.updatedAt).toISOString());", + " });", + " pm.test('Clan has \"author\" property', () => {", + " pm.expect(clan).to.have.property('author');", + " });", + "}", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-Requested-With", + "value": "XMLHttpRequest" + }, + { + "key": "Authorization", + "value": "Token {{token}}" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"id\": \"026000001\",\n \"ownerId\": \"027000001\",\n \"level\": \"1\",\n \"title\": \"API Tests Guild\",\n \"description\": \"\",\n \"icon\": {\n \"flagColor1\": 7,\n \"flagColor2\": 0,\n \"flagShape\": 8,\n \"iconColor\": 19,\n \"iconShape\": 7\n },\n \"country\": \"2\",\n \"minLevel\": \"130\",\n \"serverId\": \"427\",\n \"members\": [],\n \"membersCount\": 0,\n \"disbanding\": false,\n \"topActivity\": \"813996\",\n \"topDungeon\": \"79507\",\n \"roleNames\": [],\n \"frameId\": 3,\n \"author\": \"642c4459666702637dcb5066\"\n}" + }, + "url": { + "raw": "{{apiUrl}}/clans", + "host": [ + "{{apiUrl}}" + ], + "path": [ + "clans" + ] + } + }, + "response": [] + }, + { + "name": "Single Clan by id", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Response code is 200 OK\", () => {", + " pm.expect(pm.response.code).to.eql(200);", + "});", + "", + "if(pm.response.code === 200){", + " var responseJSON = JSON.parse(pm.response.text());", + "", + " pm.test('Response contains \"clan\" property', () => {", + " pm.expect(responseJSON).to.have.property('clan');", + " });", + "", + " var clan = responseJSON.clan || {};", + "", + " pm.test('Clan has \"id\" property', () => {", + " pm.expect(clan).to.have.property('id');", + " });", + " pm.test('Clan has \"country\" property', () => {", + " pm.expect(clan).to.have.property('country');", + " });", + " pm.test('Clan has \"description\" property', () => {", + " pm.expect(clan).to.have.property('description');", + " });", + " pm.test('Clan has \"disbanding\" property', () => {", + " pm.expect(clan).to.have.property('disbanding');", + " });", + " pm.test('Clan has \"frameId\" property', () => {", + " pm.expect(clan).to.have.property('frameId');", + " });", + " pm.test('Clan has \"icon\" property', () => {", + " pm.expect(clan).to.have.property('icon');", + " });", + " pm.test('Clan has \"level\" property', () => {", + " pm.expect(clan).to.have.property('level');", + " });", + " pm.test('Clan has \"members\" property', () => {", + " pm.expect(clan).to.have.property('members');", + " });", + " pm.test('Clan\\'s \"members\" property is an Array', () => {", + " pm.expect(clan.members).to.be.an(\"array\");", + " });", + " pm.test('Clan has \"membersCount\" property', () => {", + " pm.expect(clan).to.have.property('membersCount');", + " });", + " pm.test('Clan\\'s \"membersCount\" property is equal to \"members\" array length', () => {", + " pm.expect(clan.membersCount).to.eql(clan.members.length);", + " });", + " pm.test('Clan has \"minLevel\" property', () => {", + " pm.expect(clan).to.have.property('minLevel');", + " });", + " pm.test('Clan has \"ownerId\" property', () => {", + " pm.expect(clan).to.have.property('ownerId');", + " });", + " pm.test('Clan has \"serverId\" property', () => {", + " pm.expect(clan).to.have.property('serverId');", + " });", + " pm.test('Clan has \"title\" property', () => {", + " pm.expect(clan).to.have.property('title');", + " });", + " pm.test('Clan has \"topActivity\" property', () => {", + " pm.expect(clan).to.have.property('topActivity');", + " });", + " pm.test('Clan has \"topDungeon\" property', () => {", + " pm.expect(clan).to.have.property('topDungeon');", + " });", + " pm.test('Clan has an ISO 8601 timestamp \"createdAt\" property', () => {", + " pm.expect(clan).to.have.property('createdAt');", + " pm.expect(clan.createdAt).to.eql(new Date(clan.createdAt).toISOString());", + " });", + " pm.test('Clan has an ISO 8601 timestamp \"updatedAt\" property', () => {", + " pm.expect(clan).to.have.property('updatedAt');", + " pm.expect(clan.updatedAt).to.eql(new Date(clan.updatedAt).toISOString());", + " });", + " pm.test('Clan has \"author\" property', () => {", + " pm.expect(clan).to.have.property('author');", + " });", + " pm.test('Clan\\'s \"author\" property has not credential properties', () => {", + " pm.expect(clan.author).not.to.have.property('salt');", + " pm.expect(clan.author).not.to.have.property('hash');", + " });", + "}", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-Requested-With", + "value": "XMLHttpRequest" + }, + { + "key": "Authorization", + "value": "Token {{token}}" + } + ], + "url": { + "raw": "{{apiUrl}}/clans/{{clanId}}", + "host": [ + "{{apiUrl}}" + ], + "path": [ + "clans", + "{{clanId}}" + ] + } + }, + "response": [] + }, + { + "name": "Update Clan", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "if (!(pm.environment.get('isIntegrationTest'))) {", + " pm.test(\"Response code is 200 OK\", () => {", + " pm.expect(pm.response.code).to.eql(200);", + " });", + "", + " if(pm.response.code === 200){", + " var responseJSON = JSON.parse(pm.response.text());", + "", + " pm.test('Response contains \"message\" property', () => {", + " pm.expect(responseJSON).to.have.property('message');", + " });", + " pm.test('Response contains \"clan\" property', () => {", + " pm.expect(responseJSON).to.have.property('clan');", + " });", + "", + " var clan = responseJSON.clan || {};", + "", + " pm.test('Clan has \"id\" property', () => {", + " pm.expect(clan).to.have.property('id');", + " });", + " pm.test('Clan has \"country\" property', () => {", + " pm.expect(clan).to.have.property('country');", + " });", + " pm.test('Clan has \"description\" property equal to \"Ad Astra API Tests Guild\"', () => {", + " pm.expect(clan).to.have.property('description');", + " pm.expect(clan.description).to.eql(\"Ad Astra API Tests Guild\");", + " });", + " pm.test('Clan has \"disbanding\" property', () => {", + " pm.expect(clan).to.have.property('disbanding');", + " });", + " pm.test('Clan has \"frameId\" property', () => {", + " pm.expect(clan).to.have.property('frameId');", + " });", + " pm.test('Clan has \"icon\" property', () => {", + " pm.expect(clan).to.have.property('icon');", + " });", + " pm.test('Clan has \"level\" property', () => {", + " pm.expect(clan).to.have.property('level');", + " });", + " pm.test('Clan has \"members\" property', () => {", + " pm.expect(clan).to.have.property('members');", + " });", + " pm.test('Clan\\'s \"members\" property is an Array', () => {", + " pm.expect(clan.members).to.be.an(\"array\");", + " });", + " pm.test('Clan has \"membersCount\" property', () => {", + " pm.expect(clan).to.have.property('membersCount');", + " });", + " pm.test('Clan\\'s \"membersCount\" property is equal to \"members\" array length', () => {", + " pm.expect(clan.membersCount).to.eql(clan.members.length);", + " });", + " pm.test('Clan has \"minLevel\" property', () => {", + " pm.expect(clan).to.have.property('minLevel');", + " });", + " pm.test('Clan has \"ownerId\" property', () => {", + " pm.expect(clan).to.have.property('ownerId');", + " });", + " pm.test('Clan has \"serverId\" property', () => {", + " pm.expect(clan).to.have.property('serverId');", + " });", + " pm.test('Clan has \"title\" property equal to \"Ad Astra\"', () => {", + " pm.expect(clan).to.have.property('title');", + " pm.expect(clan.title).to.eql(\"Ad Astra\");", + " });", + " pm.test('Clan has \"topActivity\" property', () => {", + " pm.expect(clan).to.have.property('topActivity');", + " });", + " pm.test('Clan has \"topDungeon\" property', () => {", + " pm.expect(clan).to.have.property('topDungeon');", + " });", + " pm.test('Clan has an ISO 8601 timestamp \"createdAt\" property', () => {", + " pm.expect(clan).to.have.property('createdAt');", + " pm.expect(clan.createdAt).to.eql(new Date(clan.createdAt).toISOString());", + " });", + " pm.test('Clan has an ISO 8601 timestamp \"updatedAt\" property', () => {", + " pm.expect(clan).to.have.property('updatedAt');", + " pm.expect(clan.updatedAt).to.eql(new Date(clan.updatedAt).toISOString());", + " });", + " pm.test('Clan has \"author\" property', () => {", + " pm.expect(clan).to.have.property('author');", + " });", + " pm.test('Clan\\'s \"author\" property has not credential properties', () => {", + " pm.expect(clan.author).not.to.have.property('salt');", + " pm.expect(clan.author).not.to.have.property('hash');", + " });", + " }", + "}", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-Requested-With", + "value": "XMLHttpRequest" + }, + { + "key": "Authorization", + "value": "Token {{token}}" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"clan\": {\n \"title\":\"Ad Astra\",\n \"description\":\"Ad Astra API Tests Guild\",\n \"membersCount\": 0\n }\n}" + }, + "url": { + "raw": "{{apiUrl}}/clans/{{clanId}}", + "host": [ + "{{apiUrl}}" + ], + "path": [ + "clans", + "{{clanId}}" + ] + } + }, + "response": [] + }, + { + "name": "Delete Clan", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Response code is 200 OK\", () => {", + " pm.expect(pm.response.code).to.eql(200);", + "});", + "", + "if(pm.response.code === 200){", + " var responseJSON = JSON.parse(pm.response.text());", + "", + " pm.test('Response contains \"message\" property', () => {", + " pm.expect(responseJSON).to.have.property('message');", + " });", + " pm.test('Response contains \"data\" property', () => {", + " pm.expect(responseJSON).to.have.property('data');", + " });", + "}" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-Requested-With", + "value": "XMLHttpRequest" + }, + { + "key": "Authorization", + "value": "Token {{token}}" + } + ], + "url": { + "raw": "{{apiUrl}}/clans/{{clanId}}", + "host": [ + "{{apiUrl}}" + ], + "path": [ + "clans", + "{{clanId}}" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Members", + "item": [ + { + "name": "All Members", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Response code is 200 OK\", () => {", + " pm.expect(pm.response.code).to.eql(200);", + "});", + "", + "if(pm.response.code === 200){", + " var responseJSON = JSON.parse(pm.response.text());", + "", + " pm.test('Response contains \"data\" property', () => {", + " pm.expect(responseJSON).to.have.property('data');", + " });", + "", + " var data = responseJSON.data;", + "", + " pm.test('Response\\'s \"data\" property contains \"members\" property', () => {", + " pm.expect(data).to.have.property('members');", + " });", + " pm.test('data\\'s \"members\" property is an array', () => {", + " pm.expect(data.members).to.be.an(\"array\");", + " });", + " pm.test('Response\\'s \"data\" property contains \"membersCount\" property', () => {", + " pm.expect(data).to.have.property('membersCount');", + " });", + " pm.test('data\\'s \"membersCount\" property is an integer', () => {", + " pm.expect(data.membersCount).to.be.a(\"number\");", + " });", + "", + " if(data.members.length){", + " var member = data.members[0];", + "", + " pm.test('Member has \"id\" property', () => {", + " pm.expect(member).to.have.property('id');", + " });", + " pm.test('Member has \"allowPm\" property', () => {", + " pm.expect(member).to.have.property('allowPm');", + " });", + " pm.test('Member has \"avatarId\" property', () => {", + " pm.expect(member).to.have.property('avatarId');", + " });", + " pm.test('Member has \"clanIcon\" property', () => {", + " pm.expect(member).to.have.property('clanIcon');", + " });", + " pm.test('Member has \"clanId\" property', () => {", + " pm.expect(member).to.have.property('clanId');", + " });", + " pm.test('Member has \"clanRole\" property', () => {", + " pm.expect(member).to.have.property('clanRole');", + " });", + " pm.test('Member has \"clanTitle\" property', () => {", + " pm.expect(member).to.have.property('clanTitle');", + " });", + " pm.test('Member has \"commander\" property', () => {", + " pm.expect(member).to.have.property('commander');", + " });", + " pm.test('Member has \"frameId\" property', () => {", + " pm.expect(member).to.have.property('frameId');", + " });", + " pm.test('Member\\'s \"frameId\" property is an integer', () => {", + " pm.expect(member.frameId).to.be.a(\"number\");", + " });", + " pm.test('Member has \"isChatModerator\" property', () => {", + " pm.expect(member).to.have.property('isChatModerator');", + " });", + " pm.test('Member has \"lastLoginTime\" property', () => {", + " pm.expect(member).to.have.property('lastLoginTime');", + " });", + " pm.test('Member has \"leagueId\" property', () => {", + " pm.expect(member).to.have.property('leagueId');", + " });", + " pm.test('Member\\'s \"leagueId\" property is an integer', () => {", + " pm.expect(member.leagueId).to.be.a(\"number\");", + " });", + " pm.test('Member has \"name\" property', () => {", + " pm.expect(member).to.have.property('name');", + " });", + " pm.test('Member has \"level\" property', () => {", + " pm.expect(member).to.have.property('level');", + " });", + " pm.test('Member has \"serverId\" property', () => {", + " pm.expect(member).to.have.property('serverId');", + " });", + " pm.test('Member has an ISO 8601 timestamp \"createdAt\" property', () => {", + " pm.expect(member).to.have.property('createdAt');", + " pm.expect(member.createdAt).to.eql(new Date(member.createdAt).toISOString());", + " });", + " pm.test('Member has an ISO 8601 timestamp \"updatedAt\" property', () => {", + " pm.expect(member).to.have.property('updatedAt');", + " pm.expect(member.updatedAt).to.eql(new Date(member.updatedAt).toISOString());", + " });", + " pm.test('Member has \"author\" property', () => {", + " pm.expect(member).to.have.property('author');", + " });", + " pm.test('Member\\'s \"author\" property has not credential properties', () => {", + " pm.expect(member.author).not.to.have.property('salt');", + " pm.expect(member.author).not.to.have.property('hash');", + " });", + " } else {", + " pm.test('\"membersCount\" property is 0 when \"members\" property is empty', () => {", + " pm.expect(data.membersCount).to.eql(0);", + " });", + " }", + "}", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application/json", + "type": "text" + }, + { + "key": "X-Requested-With", + "value": "XMLHttpRequest", + "type": "text" + }, + { + "key": "Authorization", + "value": "Token {{token}}", + "type": "text" + } + ], + "url": { + "raw": "{{apiUrl}}/members", + "host": [ + "{{apiUrl}}" + ], + "path": [ + "members" + ] + } + }, + "response": [] + }, + { + "name": "Create Member", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Response code is 201 Created\", () => {", + " pm.expect(pm.response.code).to.eql(201);", + "});", + "", + "if(pm.response.code === 201){", + " var responseJSON = JSON.parse(pm.response.text());", + "", + " pm.test('Response contains \"message\" property', () => {", + " pm.expect(responseJSON).to.have.property('message');", + " });", + " pm.test('Response contains \"data\" property', () => {", + " pm.expect(responseJSON).to.have.property('data');", + " });", + "", + " var member = responseJSON.data || {};", + "", + " pm.test('Member has \"id\" property', () => {", + " try {", + " pm.expect(member).to.have.property('id');", + " } catch (e) {", + " throw (e);", + " }", + " pm.collectionVariables.set('memberId', member.id);", + " });", + " pm.test('Member has \"allowPm\" property', () => {", + " pm.expect(member).to.have.property('allowPm');", + " });", + " pm.test('Member has \"avatarId\" property', () => {", + " pm.expect(member).to.have.property('avatarId');", + " });", + " pm.test('Member has \"clanIcon\" property', () => {", + " pm.expect(member).to.have.property('clanIcon');", + " });", + " pm.test('Member has \"clanId\" property', () => {", + " pm.expect(member).to.have.property('clanId');", + " });", + " pm.test('Member has \"clanRole\" property', () => {", + " pm.expect(member).to.have.property('clanRole');", + " });", + " pm.test('Member has \"clanTitle\" property', () => {", + " pm.expect(member).to.have.property('clanTitle');", + " });", + " pm.test('Member has \"commander\" property', () => {", + " pm.expect(member).to.have.property('commander');", + " });", + " pm.test('Member has \"frameId\" property', () => {", + " pm.expect(member).to.have.property('frameId');", + " });", + " pm.test('Member\\'s \"frameId\" property is an integer', () => {", + " pm.expect(member.frameId).to.be.a(\"number\");", + " });", + " pm.test('Member has \"isChatModerator\" property', () => {", + " pm.expect(member).to.have.property('isChatModerator');", + " });", + " pm.test('Member has \"lastLoginTime\" property', () => {", + " pm.expect(member).to.have.property('lastLoginTime');", + " });", + " pm.test('Member has \"leagueId\" property', () => {", + " pm.expect(member).to.have.property('leagueId');", + " });", + " pm.test('Member\\'s \"leagueId\" property is an integer', () => {", + " pm.expect(member.leagueId).to.be.a(\"number\");", + " });", + " pm.test('Member has \"name\" property', () => {", + " pm.expect(member).to.have.property('name');", + " });", + " pm.test('Member has \"level\" property', () => {", + " pm.expect(member).to.have.property('level');", + " });", + " pm.test('Member has \"serverId\" property', () => {", + " pm.expect(member).to.have.property('serverId');", + " });", + " pm.test('Member has an ISO 8601 timestamp \"createdAt\" property', () => {", + " pm.expect(member).to.have.property('createdAt');", + " pm.expect(member.createdAt).to.eql(new Date(member.createdAt).toISOString());", + " });", + " pm.test('Member has an ISO 8601 timestamp \"updatedAt\" property', () => {", + " pm.expect(member).to.have.property('updatedAt');", + " pm.expect(member.updatedAt).to.eql(new Date(member.updatedAt).toISOString());", + " });", + " pm.test('Member has \"author\" property', () => {", + " pm.expect(member).to.have.property('author');", + " });", + " pm.test('Member\\'s \"author\" property has not credential properties', () => {", + " pm.expect(member.author).not.to.have.property('salt');", + " pm.expect(member.author).not.to.have.property('hash');", + " });", + "}", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-Requested-With", + "value": "XMLHttpRequest" + }, + { + "key": "Authorization", + "value": "Token {{token}}" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"id\": \"027000001\",\n \"name\": \"API Tests Member\",\n \"lastLoginTime\": \"1763913494\",\n \"serverId\": \"427\",\n \"level\": \"130\",\n \"clanId\": \"026000001\",\n \"clanRole\": \"255\",\n \"commander\": false,\n \"avatarId\": \"891\",\n \"isChatModerator\": false,\n \"frameId\": 215,\n \"leagueId\": 3,\n \"allowPm\": \"all\",\n \"clanTitle\": \"Element115\",\n \"clanIcon\": {\n \"flagColor1\": 7,\n \"flagColor2\": 0,\n \"flagShape\": 8,\n \"iconColor\": 19,\n \"iconShape\": 7\n },\n \"author\": \"642c4459666702637dcb5066\"\n}" + }, + "url": { + "raw": "{{apiUrl}}/members", + "host": [ + "{{apiUrl}}" + ], + "path": [ + "members" + ] + } + }, + "response": [] + }, + { + "name": "Single Member by id", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Response code is 200 OK\", () => {", + " pm.expect(pm.response.code).to.eql(200);", + "});", + "", + "if(pm.response.code === 200){", + " var responseJSON = JSON.parse(pm.response.text());", + "", + " pm.test('Response contains \"member\" property', () => {", + " pm.expect(responseJSON).to.have.property('member');", + " });", + "", + " var member = responseJSON.member || {};", + "", + " pm.test('Member has \"id\" property', () => {", + " pm.expect(member).to.have.property('id');", + " });", + " pm.test('Member has \"allowPm\" property', () => {", + " pm.expect(member).to.have.property('allowPm');", + " });", + " pm.test('Member has \"avatarId\" property', () => {", + " pm.expect(member).to.have.property('avatarId');", + " });", + " pm.test('Member has \"clanIcon\" property', () => {", + " pm.expect(member).to.have.property('clanIcon');", + " });", + " pm.test('Member has \"clanId\" property', () => {", + " pm.expect(member).to.have.property('clanId');", + " });", + " pm.test('Member has \"clanRole\" property', () => {", + " pm.expect(member).to.have.property('clanRole');", + " });", + " pm.test('Member has \"clanTitle\" property', () => {", + " pm.expect(member).to.have.property('clanTitle');", + " });", + " pm.test('Member has \"commander\" property', () => {", + " pm.expect(member).to.have.property('commander');", + " });", + " pm.test('Member has \"frameId\" property', () => {", + " pm.expect(member).to.have.property('frameId');", + " });", + " pm.test('Member\\'s \"frameId\" property is an integer', () => {", + " pm.expect(member.frameId).to.be.a(\"number\");", + " });", + " pm.test('Member has \"isChatModerator\" property', () => {", + " pm.expect(member).to.have.property('isChatModerator');", + " });", + " pm.test('Member has \"lastLoginTime\" property', () => {", + " pm.expect(member).to.have.property('lastLoginTime');", + " });", + " pm.test('Member has \"leagueId\" property', () => {", + " pm.expect(member).to.have.property('leagueId');", + " });", + " pm.test('Member\\'s \"leagueId\" property is an integer', () => {", + " pm.expect(member.leagueId).to.be.a(\"number\");", + " });", + " pm.test('Member has \"name\" property', () => {", + " pm.expect(member).to.have.property('name');", + " });", + " pm.test('Member has \"level\" property', () => {", + " pm.expect(member).to.have.property('level');", + " });", + " pm.test('Member has \"serverId\" property', () => {", + " pm.expect(member).to.have.property('serverId');", + " });", + " pm.test('Member has an ISO 8601 timestamp \"createdAt\" property', () => {", + " pm.expect(member).to.have.property('createdAt');", + " pm.expect(member.createdAt).to.eql(new Date(member.createdAt).toISOString());", + " });", + " pm.test('Member has an ISO 8601 timestamp \"updatedAt\" property', () => {", + " pm.expect(member).to.have.property('updatedAt');", + " pm.expect(member.updatedAt).to.eql(new Date(member.updatedAt).toISOString());", + " });", + " pm.test('Member has \"author\" property', () => {", + " pm.expect(member).to.have.property('author');", + " });", + " pm.test('Member\\'s \"author\" property has not credential properties', () => {", + " pm.expect(member.author).not.to.have.property('salt');", + " pm.expect(member.author).not.to.have.property('hash');", + " });", + "}", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-Requested-With", + "value": "XMLHttpRequest" + }, + { + "key": "Authorization", + "value": "Token {{token}}" + } + ], + "url": { + "raw": "{{apiUrl}}/members/{{memberId}}", + "host": [ + "{{apiUrl}}" + ], + "path": [ + "members", + "{{memberId}}" + ] + } + }, + "response": [] + }, + { + "name": "Update Member", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "if (!(pm.environment.get('isIntegrationTest'))) {", + " pm.test(\"Response code is 200 OK\", () => {", + " pm.expect(pm.response.code).to.eql(200);", + " });", + "", + " if(pm.response.code === 200){", + " var responseJSON = JSON.parse(pm.response.text());", + "", + " pm.test('Response contains \"message\" property', () => {", + " pm.expect(responseJSON).to.have.property('message');", + " });", + " pm.test('Response contains \"member\" property', () => {", + " pm.expect(responseJSON).to.have.property('member');", + " });", + "", + " var member = responseJSON.member || {};", + "", + " pm.test('Member has \"id\" property', () => {", + " pm.expect(member).to.have.property('id');", + " });", + " pm.test('Member has \"allowPm\" property', () => {", + " pm.expect(member).to.have.property('allowPm');", + " });", + " pm.test('Member has \"avatarId\" property', () => {", + " pm.expect(member).to.have.property('avatarId');", + " });", + " pm.test('Member has \"clanIcon\" property', () => {", + " pm.expect(member).to.have.property('clanIcon');", + " });", + " pm.test('Member has \"clanId\" property', () => {", + " pm.expect(member).to.have.property('clanId');", + " });", + " pm.test('Member has \"clanRole\" property', () => {", + " pm.expect(member).to.have.property('clanRole');", + " });", + " pm.test('Member has \"clanTitle\" property', () => {", + " pm.expect(member).to.have.property('clanTitle');", + " });", + " pm.test('Member has \"commander\" property equal to true', () => {", + " pm.expect(member).to.have.property('commander');", + " pm.expect(member.commander).to.eql(true);", + " });", + " pm.test('Member has \"frameId\" property', () => {", + " pm.expect(member).to.have.property('frameId');", + " });", + " pm.test('Member\\'s \"frameId\" property is an integer', () => {", + " pm.expect(member.frameId).to.be.a(\"number\");", + " });", + " pm.test('Member has \"isChatModerator\" property', () => {", + " pm.expect(member).to.have.property('isChatModerator');", + " });", + " pm.test('Member has \"lastLoginTime\" property', () => {", + " pm.expect(member).to.have.property('lastLoginTime');", + " });", + " pm.test('Member has \"leagueId\" property', () => {", + " pm.expect(member).to.have.property('leagueId');", + " });", + " pm.test('Member\\'s \"leagueId\" property is an integer', () => {", + " pm.expect(member.leagueId).to.be.a(\"number\");", + " });", + " pm.test('Member has \"name\" property equal to \"Per Aspera\"', () => {", + " pm.expect(member).to.have.property('name');", + " pm.expect(member.name).to.eql(\"Per Aspera\");", + " });", + " pm.test('Member has \"level\" property', () => {", + " pm.expect(member).to.have.property('level');", + " });", + " pm.test('Member has \"serverId\" property', () => {", + " pm.expect(member).to.have.property('serverId');", + " });", + " pm.test('Member has an ISO 8601 timestamp \"createdAt\" property', () => {", + " pm.expect(member).to.have.property('createdAt');", + " pm.expect(member.createdAt).to.eql(new Date(member.createdAt).toISOString());", + " });", + " pm.test('Member has an ISO 8601 timestamp \"updatedAt\" property', () => {", + " pm.expect(member).to.have.property('updatedAt');", + " pm.expect(member.updatedAt).to.eql(new Date(member.updatedAt).toISOString());", + " });", + " pm.test('Member has \"author\" property', () => {", + " pm.expect(member).to.have.property('author');", + " });", + " pm.test('Member\\'s \"author\" property has not credential properties', () => {", + " pm.expect(member.author).not.to.have.property('salt');", + " pm.expect(member.author).not.to.have.property('hash');", + " });", + " }", + "}", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-Requested-With", + "value": "XMLHttpRequest" + }, + { + "key": "Authorization", + "value": "Token {{token}}" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"member\": {\n \"name\":\"Per Aspera\",\n \"commander\": true\n }\n}" + }, + "url": { + "raw": "{{apiUrl}}/members/{{memberId}}", + "host": [ + "{{apiUrl}}" + ], + "path": [ + "members", + "{{memberId}}" + ] + } + }, + "response": [] + }, + { + "name": "Delete Member", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Response code is 200 OK\", () => {", + " pm.expect(pm.response.code).to.eql(200);", + "});", + "", + "if(pm.response.code === 200){", + " var responseJSON = JSON.parse(pm.response.text());", + "", + " pm.test('Response contains \"message\" property', () => {", + " pm.expect(responseJSON).to.have.property('message');", + " });", + " pm.test('Response contains \"data\" property', () => {", + " pm.expect(responseJSON).to.have.property('data');", + " });", + "}" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-Requested-With", + "value": "XMLHttpRequest" + }, + { + "key": "Authorization", + "value": "Token {{token}}" + } + ], + "url": { + "raw": "{{apiUrl}}/members/{{memberId}}", + "host": [ + "{{apiUrl}}" + ], + "path": [ + "members", + "{{memberId}}" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Articles", + "item": [ + { + "name": "All Articles", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Response code is 200 OK\", () => {", + " pm.expect(pm.response.code).to.eql(200);", + "});", + "", + "if(pm.response.code === 200){", + " var responseJSON = JSON.parse(pm.response.text());", + "", + " pm.test('Response contains \"data\" property', () => {", + " pm.expect(responseJSON).to.have.property('data');", + " });", + "", + " var data = responseJSON.data;", + "", + " pm.test('Response\\'s \"data\" property contains \"articles\" property', () => {", + " pm.expect(data).to.have.property('articles');", + " });", + " pm.test('data\\'s \"articles\" property is an array', () => {", + " pm.expect(data.articles).to.be.an(\"array\");", + " });", + " pm.test('Response\\'s \"data\" property contains \"articlesCount\" property', () => {", + " pm.expect(data).to.have.property('articlesCount');", + " });", + " pm.test('data\\'s \"articlesCount\" property is an integer', () => {", + " pm.expect(data.articlesCount).to.be.a(\"number\");", + " });", + "", + " if(data.articles.length){", + " var article = data.articles[0];", + "", + " pm.test('Article has \"title\" property', () => {", + " pm.expect(article).to.have.property('title');", + " });", + " pm.test('Article has \"slug\" property', () => {", + " pm.expect(article).to.have.property('slug');", + " });", + " pm.test('Article has \"body\" property', () => {", + " pm.expect(article).to.have.property('body');", + " });", + " pm.test('Article has \"description\" property', () => {", + " pm.expect(article).to.have.property('description');", + " });", + " pm.test('Article has \"tagList\" property', () => {", + " pm.expect(article).to.have.property('tagList');", + " });", + " pm.test('Article\\'s \"tagList\" property is an Array', () => {", + " pm.expect(article.tagList).to.be.an(\"array\");", + " });", + " pm.test('Article has \"favorited\" property', () => {", + " pm.expect(article).to.have.property('favorited');", + " });", + " pm.test('Article has \"favoritesCount\" property', () => {", + " pm.expect(article).to.have.property('favoritesCount');", + " });", + " pm.test('Article\\'s \"favoritesCount\" property is an integer', () => {", + " pm.expect(article.favoritesCount).to.be.a(\"number\");", + " });", + " pm.test('Article has an ISO 8601 timestamp \"createdAt\" property', () => {", + " pm.expect(article).to.have.property('createdAt');", + " pm.expect(article.createdAt).to.eql(new Date(article.createdAt).toISOString());", + " });", + " pm.test('Article has an ISO 8601 timestamp \"updatedAt\" property', () => {", + " pm.expect(article).to.have.property('updatedAt');", + " pm.expect(article.updatedAt).to.eql(new Date(article.updatedAt).toISOString());", + " });", + " pm.test('Article has \"author\" property', () => {", + " pm.expect(article).to.have.property('author');", + " });", + " pm.test('Article\\'s \"author\" property has not credential properties', () => {", + " pm.expect(article.author).not.to.have.property('salt');", + " pm.expect(article.author).not.to.have.property('hash');", + " });", + " } else {", + " pm.test('articlesCount is 0 when \"articles\" property is empty', () => {", + " pm.expect(data.articlesCount).to.eql(0);", + " });", + " }", + "}", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-Requested-With", + "value": "XMLHttpRequest" + } + ], + "url": { + "raw": "{{apiUrl}}/articles", + "host": [ + "{{apiUrl}}" + ], + "path": [ + "articles" + ] + } + }, + "response": [] + }, + { + "name": "Articles by Author", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Response code is 200 OK\", () => {", + " pm.expect(pm.response.code).to.eql(200);", + "});", + "", + "if(pm.response.code === 200){", + " var responseJSON = JSON.parse(pm.response.text());", + "", + " pm.test('Response contains \"data\" property', () => {", + " pm.expect(responseJSON).to.have.property('data');", + " });", + "", + " var data = responseJSON.data;", + "", + " pm.test('Response\\'s \"data\" property contains \"articles\" property', () => {", + " pm.expect(data).to.have.property('articles');", + " });", + " pm.test('data\\'s \"articles\" property is an array', () => {", + " pm.expect(data.articles).to.be.an(\"array\");", + " });", + " pm.test('Response\\'s \"data\" property contains \"articlesCount\" property', () => {", + " pm.expect(data).to.have.property('articlesCount');", + " });", + " pm.test('data\\'s \"articlesCount\" property is an integer', () => {", + " pm.expect(data.articlesCount).to.be.a(\"number\");", + " });", + "", + " if(data.articles.length){", + " var article = data.articles[0];", + "", + " pm.test('Article has \"title\" property', () => {", + " pm.expect(article).to.have.property('title');", + " });", + " pm.test('Article has \"slug\" property', () => {", + " pm.expect(article).to.have.property('slug');", + " });", + " pm.test('Article has \"body\" property', () => {", + " pm.expect(article).to.have.property('body');", + " });", + " pm.test('Article has \"description\" property', () => {", + " pm.expect(article).to.have.property('description');", + " });", + " pm.test('Article has \"tagList\" property', () => {", + " pm.expect(article).to.have.property('tagList');", + " });", + " pm.test('Article\\'s \"tagList\" property is an Array', () => {", + " pm.expect(article.tagList).to.be.an(\"array\");", + " });", + " pm.test('Article has \"favorited\" property', () => {", + " pm.expect(article).to.have.property('favorited');", + " });", + " pm.test('Article has \"favoritesCount\" property', () => {", + " pm.expect(article).to.have.property('favoritesCount');", + " });", + " pm.test('Article\\'s \"favoritesCount\" property is an integer', () => {", + " pm.expect(article.favoritesCount).to.be.a(\"number\");", + " });", + " pm.test('Article has an ISO 8601 timestamp \"createdAt\" property', () => {", + " pm.expect(article).to.have.property('createdAt');", + " pm.expect(article.createdAt).to.eql(new Date(article.createdAt).toISOString());", + " });", + " pm.test('Article has an ISO 8601 timestamp \"updatedAt\" property', () => {", + " pm.expect(article).to.have.property('updatedAt');", + " pm.expect(article.updatedAt).to.eql(new Date(article.updatedAt).toISOString());", + " });", + " pm.test('Article has \"author\" property', () => {", + " pm.expect(article).to.have.property('author');", + " });", + " pm.test('Article\\'s \"author\" property has not credential properties', () => {", + " pm.expect(article.author).not.to.have.property('salt');", + " pm.expect(article.author).not.to.have.property('hash');", + " });", + " } else {", + " pm.test('articlesCount is 0 when \"articles\" property is empty', () => {", + " pm.expect(data.articlesCount).to.eql(0);", + " });", + " }", + "}", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-Requested-With", + "value": "XMLHttpRequest" + } + ], + "url": { + "raw": "{{apiUrl}}/articles?author=solide", + "host": [ + "{{apiUrl}}" + ], + "path": [ + "articles" + ], + "query": [ + { + "key": "author", + "value": "solide" + } + ] + } + }, + "response": [] + }, + { + "name": "Articles Favorited by Username", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Response code is 200 OK\", () => {", + " pm.expect(pm.response.code).to.eql(200);", + "});", + "", + "if(pm.response.code === 200){", + " var responseJSON = JSON.parse(pm.response.text());", + "", + " pm.test('Response contains \"data\" property', () => {", + " pm.expect(responseJSON).to.have.property('data');", + " });", + "", + " var data = responseJSON.data;", + "", + " pm.test('Response\\'s \"data\" property contains \"articles\" property', () => {", + " pm.expect(data).to.have.property('articles');", + " });", + " pm.test('data\\'s \"articles\" property is an array', () => {", + " pm.expect(data.articles).to.be.an(\"array\");", + " });", + " pm.test('Response\\'s \"data\" property contains \"articlesCount\" property', () => {", + " pm.expect(data).to.have.property('articlesCount');", + " });", + " pm.test('data\\'s \"articlesCount\" property is an integer', () => {", + " pm.expect(data.articlesCount).to.be.a(\"number\");", + " });", + "", + " if(data.articles.length){", + " var article = data.articles[0];", + "", + " pm.test('Article has \"title\" property', () => {", + " pm.expect(article).to.have.property('title');", + " });", + " pm.test('Article has \"slug\" property', () => {", + " pm.expect(article).to.have.property('slug');", + " });", + " pm.test('Article has \"body\" property', () => {", + " pm.expect(article).to.have.property('body');", + " });", + " pm.test('Article has \"description\" property', () => {", + " pm.expect(article).to.have.property('description');", + " });", + " pm.test('Article has \"tagList\" property', () => {", + " pm.expect(article).to.have.property('tagList');", + " });", + " pm.test('Article\\'s \"tagList\" property is an Array', () => {", + " pm.expect(article.tagList).to.be.an(\"array\");", + " });", + " pm.test('Article has \"favorited\" property', () => {", + " pm.expect(article).to.have.property('favorited');", + " });", + " pm.test('Article has \"favoritesCount\" property', () => {", + " pm.expect(article).to.have.property('favoritesCount');", + " });", + " pm.test('Article\\'s \"favoritesCount\" property is an integer', () => {", + " pm.expect(article.favoritesCount).to.be.a(\"number\");", + " });", + " pm.test('Article has an ISO 8601 timestamp \"createdAt\" property', () => {", + " pm.expect(article).to.have.property('createdAt');", + " pm.expect(article.createdAt).to.eql(new Date(article.createdAt).toISOString());", + " });", + " pm.test('Article has an ISO 8601 timestamp \"updatedAt\" property', () => {", + " pm.expect(article).to.have.property('updatedAt');", + " pm.expect(article.updatedAt).to.eql(new Date(article.updatedAt).toISOString());", + " });", + " pm.test('Article has \"author\" property', () => {", + " pm.expect(article).to.have.property('author');", + " });", + " pm.test('Article\\'s \"author\" property has not credential properties', () => {", + " pm.expect(article.author).not.to.have.property('salt');", + " pm.expect(article.author).not.to.have.property('hash');", + " });", + " } else {", + " pm.test('articlesCount is 0 when \"articles\" property is empty', () => {", + " pm.expect(data.articlesCount).to.eql(0);", + " });", + " }", + "}", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-Requested-With", + "value": "XMLHttpRequest" + }, + { + "key": "Authorization", + "value": "Token {{token}}" + } + ], + "url": { + "raw": "{{apiUrl}}/articles?favorited=solide", + "host": [ + "{{apiUrl}}" + ], + "path": [ + "articles" + ], + "query": [ + { + "key": "favorited", + "value": "solide" + } + ] + } + }, + "response": [] + }, + { + "name": "Articles by Tag", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Response code is 200 OK\", () => {", + " pm.expect(pm.response.code).to.eql(200);", + "});", + "", + "if(pm.response.code === 200){", + " var responseJSON = JSON.parse(pm.response.text());", + "", + " pm.test('Response contains \"data\" property', () => {", + " pm.expect(responseJSON).to.have.property('data');", + " });", + "", + " var data = responseJSON.data;", + "", + " pm.test('Response\\'s \"data\" property contains \"articles\" property', () => {", + " pm.expect(data).to.have.property('articles');", + " });", + " pm.test('data\\'s \"articles\" property is an array', () => {", + " pm.expect(data.articles).to.be.an(\"array\");", + " });", + " pm.test('Response\\'s \"data\" property contains \"articlesCount\" property', () => {", + " pm.expect(data).to.have.property('articlesCount');", + " });", + " pm.test('data\\'s \"articlesCount\" property is an integer', () => {", + " pm.expect(data.articlesCount).to.be.a(\"number\");", + " });", + "", + " if(data.articles.length){", + " var article = data.articles[0];", + "", + " pm.test('Article has \"title\" property', () => {", + " pm.expect(article).to.have.property('title');", + " });", + " pm.test('Article has \"slug\" property', () => {", + " pm.expect(article).to.have.property('slug');", + " });", + " pm.test('Article has \"body\" property', () => {", + " pm.expect(article).to.have.property('body');", + " });", + " pm.test('Article has \"description\" property', () => {", + " pm.expect(article).to.have.property('description');", + " });", + " pm.test('Article has \"tagList\" property', () => {", + " pm.expect(article).to.have.property('tagList');", + " });", + " pm.test('Article\\'s \"tagList\" property is an Array', () => {", + " pm.expect(article.tagList).to.be.an(\"array\");", + " });", + " pm.test('Article has \"favorited\" property', () => {", + " pm.expect(article).to.have.property('favorited');", + " });", + " pm.test('Article has \"favoritesCount\" property', () => {", + " pm.expect(article).to.have.property('favoritesCount');", + " });", + " pm.test('Article\\'s \"favoritesCount\" property is an integer', () => {", + " pm.expect(article.favoritesCount).to.be.a(\"number\");", + " });", + " pm.test('Article has an ISO 8601 timestamp \"createdAt\" property', () => {", + " pm.expect(article).to.have.property('createdAt');", + " pm.expect(article.createdAt).to.eql(new Date(article.createdAt).toISOString());", + " });", + " pm.test('Article has an ISO 8601 timestamp \"updatedAt\" property', () => {", + " pm.expect(article).to.have.property('updatedAt');", + " pm.expect(article.updatedAt).to.eql(new Date(article.updatedAt).toISOString());", + " });", + " pm.test('Article has \"author\" property', () => {", + " pm.expect(article).to.have.property('author');", + " });", + " pm.test('Article\\'s \"author\" property has not credential properties', () => {", + " pm.expect(article.author).not.to.have.property('salt');", + " pm.expect(article.author).not.to.have.property('hash');", + " });", + " } else {", + " pm.test('articlesCount is 0 when \"articles\" property is empty', () => {", + " pm.expect(data.articlesCount).to.eql(0);", + " });", + " }", + "}", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-Requested-With", + "value": "XMLHttpRequest" + } + ], + "url": { + "raw": "{{apiUrl}}/articles?tag=CBD", + "host": [ + "{{apiUrl}}" + ], + "path": [ + "articles" + ], + "query": [ + { + "key": "tag", + "value": "CBD" + } + ] + } + }, + "response": [] + }, + { + "name": "Single Article by slug", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Response code is 200 OK\", () => {", + " pm.expect(pm.response.code).to.eql(200);", + "});", + "", + "if(pm.response.code === 200){", + " var responseJSON = JSON.parse(pm.response.text());", + "", + " pm.test('Response contains \"article\" property', () => {", + " pm.expect(responseJSON).to.have.property('article');", + " });", + "", + " var article = responseJSON.article || {};", + "", + " pm.test('Article has \"title\" property', () => {", + " pm.expect(article).to.have.property('title');", + " });", + " pm.test('Article has \"slug\" property', () => {", + " pm.expect(article).to.have.property('slug');", + " });", + " pm.test('Article has \"body\" property', () => {", + " pm.expect(article).to.have.property('body');", + " });", + " pm.test('Article has \"description\" property', () => {", + " pm.expect(article).to.have.property('description');", + " });", + " pm.test('Article has \"tagList\" property', () => {", + " pm.expect(article).to.have.property('tagList');", + " });", + " pm.test('Article\\'s \"tagList\" property is an Array', () => {", + " pm.expect(article.tagList).to.be.an(\"array\");", + " });", + " pm.test('Article has \"favorited\" property', () => {", + " pm.expect(article).to.have.property('favorited');", + " });", + " pm.test('Article has \"favoritesCount\" property', () => {", + " pm.expect(article).to.have.property('favoritesCount');", + " });", + " pm.test('Article\\'s \"favoritesCount\" property is an integer', () => {", + " pm.expect(article.favoritesCount).to.be.a(\"number\");", + " });", + " pm.test('Article has an ISO 8601 timestamp \"createdAt\" property', () => {", + " pm.expect(article).to.have.property('createdAt');", + " pm.expect(article.createdAt).to.eql(new Date(article.createdAt).toISOString());", + " });", + " pm.test('Article has an ISO 8601 timestamp \"updatedAt\" property', () => {", + " pm.expect(article).to.have.property('updatedAt');", + " pm.expect(article.updatedAt).to.eql(new Date(article.updatedAt).toISOString());", + " });", + " pm.test('Article has \"author\" property', () => {", + " pm.expect(article).to.have.property('author');", + " });", + " pm.test('Article\\'s \"author\" property has not credential properties', () => {", + " pm.expect(article.author).not.to.have.property('salt');", + " pm.expect(article.author).not.to.have.property('hash');", + " });", + "}", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-Requested-With", + "value": "XMLHttpRequest" + } + ], + "url": { + "raw": "{{apiUrl}}/articles/les-molecules", + "host": [ + "{{apiUrl}}" + ], + "path": [ + "articles", + "les-molecules" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Articles with authentication", + "item": [ + { + "name": "Feed", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Response code is 200 OK\", () => {", + " pm.expect(pm.response.code).to.eql(200);", + "});", + "", + "if(pm.response.code === 200){", + " var responseJSON = JSON.parse(pm.response.text());", + "", + " pm.test('Response contains \"data\" property', () => {", + " pm.expect(responseJSON).to.have.property('data');", + " });", + "", + " var data = responseJSON.data;", + "", + " pm.test('Response\\'s \"data\" property contains \"articles\" property', () => {", + " pm.expect(data).to.have.property('articles');", + " });", + " pm.test('data\\'s \"articles\" property is an array', () => {", + " pm.expect(data.articles).to.be.an(\"array\");", + " });", + " pm.test('Response\\'s \"data\" property contains \"articlesCount\" property', () => {", + " pm.expect(data).to.have.property('articlesCount');", + " });", + " pm.test('data\\'s \"articlesCount\" property is an integer', () => {", + " pm.expect(data.articlesCount).to.be.a(\"number\");", + " });", + "", + " if(data.articles.length){", + " var article = data.articles[0];", + "", + " pm.test('Article has \"title\" property', () => {", + " pm.expect(article).to.have.property('title');", + " });", + " pm.test('Article has \"slug\" property', () => {", + " pm.expect(article).to.have.property('slug');", + " });", + " pm.test('Article has \"body\" property', () => {", + " pm.expect(article).to.have.property('body');", + " });", + " pm.test('Article has \"description\" property', () => {", + " pm.expect(article).to.have.property('description');", + " });", + " pm.test('Article has \"tagList\" property', () => {", + " pm.expect(article).to.have.property('tagList');", + " });", + " pm.test('Article\\'s \"tagList\" property is an Array', () => {", + " pm.expect(article.tagList).to.be.an(\"array\");", + " });", + " pm.test('Article has \"favorited\" property', () => {", + " pm.expect(article).to.have.property('favorited');", + " });", + " pm.test('Article has \"favoritesCount\" property', () => {", + " pm.expect(article).to.have.property('favoritesCount');", + " });", + " pm.test('Article\\'s \"favoritesCount\" property is an integer', () => {", + " pm.expect(article.favoritesCount).to.be.a(\"number\");", + " });", + " pm.test('Article has an ISO 8601 timestamp \"createdAt\" property', () => {", + " pm.expect(article).to.have.property('createdAt');", + " pm.expect(article.createdAt).to.eql(new Date(article.createdAt).toISOString());", + " });", + " pm.test('Article has an ISO 8601 timestamp \"updatedAt\" property', () => {", + " pm.expect(article).to.have.property('updatedAt');", + " pm.expect(article.updatedAt).to.eql(new Date(article.updatedAt).toISOString());", + " });", + " pm.test('Article has \"author\" property', () => {", + " pm.expect(article).to.have.property('author');", + " });", + " pm.test('Article\\'s \"author\" property has not credential properties', () => {", + " pm.expect(article.author).not.to.have.property('salt');", + " pm.expect(article.author).not.to.have.property('hash');", + " });", + " } else {", + " pm.test('articlesCount is 0 when \"articles\" property is empty', () => {", + " pm.expect(data.articlesCount).to.eql(0);", + " });", + " }", + "}", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-Requested-With", + "value": "XMLHttpRequest" + }, + { + "key": "Authorization", + "value": "Token {{token}}" + } + ], + "url": { + "raw": "{{apiUrl}}/articles/feed", + "host": [ + "{{apiUrl}}" + ], + "path": [ + "articles", + "feed" + ] + } + }, + "response": [] + }, + { + "name": "All Articles", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Response code is 200 OK\", () => {", + " pm.expect(pm.response.code).to.eql(200);", + "});", + "", + "if(pm.response.code === 200){", + " var responseJSON = JSON.parse(pm.response.text());", + "", + " pm.test('Response contains \"data\" property', () => {", + " pm.expect(responseJSON).to.have.property('data');", + " });", + "", + " var data = responseJSON.data;", + "", + " pm.test('Response\\'s \"data\" property contains \"articles\" property', () => {", + " pm.expect(data).to.have.property('articles');", + " });", + " pm.test('data\\'s \"articles\" property is an array', () => {", + " pm.expect(data.articles).to.be.an(\"array\");", + " });", + " pm.test('Response\\'s \"data\" property contains \"articlesCount\" property', () => {", + " pm.expect(data).to.have.property('articlesCount');", + " });", + " pm.test('data\\'s \"articlesCount\" property is an integer', () => {", + " pm.expect(data.articlesCount).to.be.a(\"number\");", + " });", + "", + " if(data.articles.length){", + " var article = data.articles[0];", + "", + " pm.test('Article has \"title\" property', () => {", + " pm.expect(article).to.have.property('title');", + " });", + " pm.test('Article has \"slug\" property', () => {", + " pm.expect(article).to.have.property('slug');", + " });", + " pm.test('Article has \"body\" property', () => {", + " pm.expect(article).to.have.property('body');", + " });", + " pm.test('Article has \"description\" property', () => {", + " pm.expect(article).to.have.property('description');", + " });", + " pm.test('Article has \"tagList\" property', () => {", + " pm.expect(article).to.have.property('tagList');", + " });", + " pm.test('Article\\'s \"tagList\" property is an Array', () => {", + " pm.expect(article.tagList).to.be.an(\"array\");", + " });", + " pm.test('Article has \"favorited\" property', () => {", + " pm.expect(article).to.have.property('favorited');", + " });", + " pm.test('Article has \"favoritesCount\" property', () => {", + " pm.expect(article).to.have.property('favoritesCount');", + " });", + " pm.test('Article\\'s \"favoritesCount\" property is an integer', () => {", + " pm.expect(article.favoritesCount).to.be.a(\"number\");", + " });", + " pm.test('Article has an ISO 8601 timestamp \"createdAt\" property', () => {", + " pm.expect(article).to.have.property('createdAt');", + " pm.expect(article.createdAt).to.eql(new Date(article.createdAt).toISOString());", + " });", + " pm.test('Article has an ISO 8601 timestamp \"updatedAt\" property', () => {", + " pm.expect(article).to.have.property('updatedAt');", + " pm.expect(article.updatedAt).to.eql(new Date(article.updatedAt).toISOString());", + " });", + " pm.test('Article has \"author\" property', () => {", + " pm.expect(article).to.have.property('author');", + " });", + " pm.test('Article\\'s \"author\" property has not credential properties', () => {", + " pm.expect(article.author).not.to.have.property('salt');", + " pm.expect(article.author).not.to.have.property('hash');", + " });", + " } else {", + " pm.test('articlesCount is 0 when \"articles\" property is empty', () => {", + " pm.expect(data.articlesCount).to.eql(0);", + " });", + " }", + "}", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-Requested-With", + "value": "XMLHttpRequest" + }, + { + "key": "Authorization", + "value": "Token {{token}}" + } + ], + "url": { + "raw": "{{apiUrl}}/articles", + "host": [ + "{{apiUrl}}" + ], + "path": [ + "articles" + ] + } + }, + "response": [] + }, + { + "name": "Articles by Author", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Response code is 200 OK\", () => {", + " pm.expect(pm.response.code).to.eql(200);", + "});", + "", + "if(pm.response.code === 200){", + " var responseJSON = JSON.parse(pm.response.text());", + "", + " pm.test('Response contains \"data\" property', () => {", + " pm.expect(responseJSON).to.have.property('data');", + " });", + "", + " var data = responseJSON.data;", + "", + " pm.test('Response\\'s \"data\" property contains \"articles\" property', () => {", + " pm.expect(data).to.have.property('articles');", + " });", + " pm.test('data\\'s \"articles\" property is an array', () => {", + " pm.expect(data.articles).to.be.an(\"array\");", + " });", + " pm.test('Response\\'s \"data\" property contains \"articlesCount\" property', () => {", + " pm.expect(data).to.have.property('articlesCount');", + " });", + " pm.test('data\\'s \"articlesCount\" property is an integer', () => {", + " pm.expect(data.articlesCount).to.be.a(\"number\");", + " });", + "", + " if(data.articles.length){", + " var article = data.articles[0];", + "", + " pm.test('Article has \"title\" property', () => {", + " pm.expect(article).to.have.property('title');", + " });", + " pm.test('Article has \"slug\" property', () => {", + " pm.expect(article).to.have.property('slug');", + " });", + " pm.test('Article has \"body\" property', () => {", + " pm.expect(article).to.have.property('body');", + " });", + " pm.test('Article has \"description\" property', () => {", + " pm.expect(article).to.have.property('description');", + " });", + " pm.test('Article has \"tagList\" property', () => {", + " pm.expect(article).to.have.property('tagList');", + " });", + " pm.test('Article\\'s \"tagList\" property is an Array', () => {", + " pm.expect(article.tagList).to.be.an(\"array\");", + " });", + " pm.test('Article has \"favorited\" property', () => {", + " pm.expect(article).to.have.property('favorited');", + " });", + " pm.test('Article has \"favoritesCount\" property', () => {", + " pm.expect(article).to.have.property('favoritesCount');", + " });", + " pm.test('Article\\'s \"favoritesCount\" property is an integer', () => {", + " pm.expect(article.favoritesCount).to.be.a(\"number\");", + " });", + " pm.test('Article has an ISO 8601 timestamp \"createdAt\" property', () => {", + " pm.expect(article).to.have.property('createdAt');", + " pm.expect(article.createdAt).to.eql(new Date(article.createdAt).toISOString());", + " });", + " pm.test('Article has an ISO 8601 timestamp \"updatedAt\" property', () => {", + " pm.expect(article).to.have.property('updatedAt');", + " pm.expect(article.updatedAt).to.eql(new Date(article.updatedAt).toISOString());", + " });", + " pm.test('Article has \"author\" property', () => {", + " pm.expect(article).to.have.property('author');", + " });", + " pm.test('Article\\'s \"author\" property has not credential properties', () => {", + " pm.expect(article.author).not.to.have.property('salt');", + " pm.expect(article.author).not.to.have.property('hash');", + " });", + " } else {", + " pm.test('articlesCount is 0 when \"articles\" property is empty', () => {", + " pm.expect(data.articlesCount).to.eql(0);", + " });", + " }", + "}", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-Requested-With", + "value": "XMLHttpRequest" + }, + { + "key": "Authorization", + "value": "Token {{token}}" + } + ], + "url": { + "raw": "{{apiUrl}}/articles?author=solide", + "host": [ + "{{apiUrl}}" + ], + "path": [ + "articles" + ], + "query": [ + { + "key": "author", + "value": "solide" + } + ] + } + }, + "response": [] + }, + { + "name": "Articles Favorited by Username", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Response code is 200 OK\", () => {", + " pm.expect(pm.response.code).to.eql(200);", + "});", + "", + "if(pm.response.code === 200){", + " var responseJSON = JSON.parse(pm.response.text());", + "", + " pm.test('Response contains \"data\" property', () => {", + " pm.expect(responseJSON).to.have.property('data');", + " });", + "", + " var data = responseJSON.data;", + "", + " pm.test('Response\\'s \"data\" property contains \"articles\" property', () => {", + " pm.expect(data).to.have.property('articles');", + " });", + " pm.test('data\\'s \"articles\" property is an array', () => {", + " pm.expect(data.articles).to.be.an(\"array\");", + " });", + " pm.test('Response\\'s \"data\" property contains \"articlesCount\" property', () => {", + " pm.expect(data).to.have.property('articlesCount');", + " });", + " pm.test('data\\'s \"articlesCount\" property is an integer', () => {", + " pm.expect(data.articlesCount).to.be.a(\"number\");", + " });", + "", + " if(data.articles.length){", + " var article = data.articles[0];", + "", + " pm.test('Article has \"title\" property', () => {", + " pm.expect(article).to.have.property('title');", + " });", + " pm.test('Article has \"slug\" property', () => {", + " pm.expect(article).to.have.property('slug');", + " });", + " pm.test('Article has \"body\" property', () => {", + " pm.expect(article).to.have.property('body');", + " });", + " pm.test('Article has \"description\" property', () => {", + " pm.expect(article).to.have.property('description');", + " });", + " pm.test('Article has \"tagList\" property', () => {", + " pm.expect(article).to.have.property('tagList');", + " });", + " pm.test('Article\\'s \"tagList\" property is an Array', () => {", + " pm.expect(article.tagList).to.be.an(\"array\");", + " });", + " pm.test('Article has \"favorited\" property', () => {", + " pm.expect(article).to.have.property('favorited');", + " });", + " pm.test('Article has \"favoritesCount\" property', () => {", + " pm.expect(article).to.have.property('favoritesCount');", + " });", + " pm.test('Article\\'s \"favoritesCount\" property is an integer', () => {", + " pm.expect(article.favoritesCount).to.be.a(\"number\");", + " });", + " pm.test('Article has an ISO 8601 timestamp \"createdAt\" property', () => {", + " pm.expect(article).to.have.property('createdAt');", + " pm.expect(article.createdAt).to.eql(new Date(article.createdAt).toISOString());", + " });", + " pm.test('Article has an ISO 8601 timestamp \"updatedAt\" property', () => {", + " pm.expect(article).to.have.property('updatedAt');", + " pm.expect(article.updatedAt).to.eql(new Date(article.updatedAt).toISOString());", + " });", + " pm.test('Article has \"author\" property', () => {", + " pm.expect(article).to.have.property('author');", + " });", + " pm.test('Article\\'s \"author\" property has not credential properties', () => {", + " pm.expect(article.author).not.to.have.property('salt');", + " pm.expect(article.author).not.to.have.property('hash');", + " });", + " } else {", + " pm.test('articlesCount is 0 when \"articles\" property is empty', () => {", + " pm.expect(data.articlesCount).to.eql(0);", + " });", + " }", + "}", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-Requested-With", + "value": "XMLHttpRequest" + }, + { + "key": "Authorization", + "value": "Token {{token}}" + } + ], + "url": { + "raw": "{{apiUrl}}/articles?favorited=solide", + "host": [ + "{{apiUrl}}" + ], + "path": [ + "articles" + ], + "query": [ + { + "key": "favorited", + "value": "solide" + } + ] + } + }, + "response": [] + }, + { + "name": "Create Article", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Response code is 201 Created\", () => {", + " pm.expect(pm.response.code).to.eql(201);", + "});", + "", + "if(pm.response.code === 201){", + " var responseJSON = JSON.parse(pm.response.text());", + "", + " pm.test('Response contains \"article\" property', () => {", + " pm.expect(responseJSON).to.have.property('article');", + " });", + "", + " var article = responseJSON.article || {};", + "", + " pm.test('Article has \"title\" property', () => {", + " pm.expect(article).to.have.property('title');", + " });", + " pm.test('Article has \"slug\" property', () => {", + " try {", + " pm.expect(article).to.have.property('slug');", + " } catch (e) {", + " throw (e);", + " }", + " pm.collectionVariables.set('slug', article.slug);", + " });", + " pm.test('Article has \"body\" property', () => {", + " pm.expect(article).to.have.property('body');", + " });", + " pm.test('Article has \"description\" property', () => {", + " pm.expect(article).to.have.property('description');", + " });", + " pm.test('Article has \"tagList\" property', () => {", + " pm.expect(article).to.have.property('tagList');", + " });", + " pm.test('Article\\'s \"tagList\" property is an Array', () => {", + " pm.expect(article.tagList).to.be.an(\"array\");", + " });", + " pm.test('Article has \"favorited\" property', () => {", + " pm.expect(article).to.have.property('favorited');", + " });", + " pm.test('Article has \"favoritesCount\" property', () => {", + " pm.expect(article).to.have.property('favoritesCount');", + " });", + " pm.test('Article\\'s \"favoritesCount\" property is an integer', () => {", + " pm.expect(article.favoritesCount).to.be.a(\"number\");", + " });", + " pm.test('Article has an ISO 8601 timestamp \"createdAt\" property', () => {", + " pm.expect(article).to.have.property('createdAt');", + " pm.expect(article.createdAt).to.eql(new Date(article.createdAt).toISOString());", + " });", + " pm.test('Article has an ISO 8601 timestamp \"updatedAt\" property', () => {", + " pm.expect(article).to.have.property('updatedAt');", + " pm.expect(article.updatedAt).to.eql(new Date(article.updatedAt).toISOString());", + " });", + " pm.test('Article has \"author\" property', () => {", + " pm.expect(article).to.have.property('author');", + " });", + " pm.test('Article\\'s \"author\" property has not credential properties', () => {", + " pm.expect(article.author).not.to.have.property('salt');", + " pm.expect(article.author).not.to.have.property('hash');", + " });", + "}", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-Requested-With", + "value": "XMLHttpRequest" + }, + { + "key": "Authorization", + "value": "Token {{token}}" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"article\": {\n \"title\": \"How to tame an octopus\",\n \"description\": \"Ever wonder how?\",\n \"body\": \"Very carefully.\",\n \"tagList\": [\n \"octopus\",\n \"training\"\n ]\n }\n}" + }, + "url": { + "raw": "{{apiUrl}}/articles", + "host": [ + "{{apiUrl}}" + ], + "path": [ + "articles" + ] + } + }, + "response": [] + }, + { + "name": "Articles by Tag", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Response code is 200 OK\", () => {", + " pm.expect(pm.response.code).to.eql(200);", + "});", + "", + "if(pm.response.code === 200){", + " var responseJSON = JSON.parse(pm.response.text());", + "", + " pm.test('Response contains \"data\" property', () => {", + " pm.expect(responseJSON).to.have.property('data');", + " });", + "", + " var data = responseJSON.data;", + "", + " pm.test('Response\\'s \"data\" property contains \"articles\" property', () => {", + " pm.expect(data).to.have.property('articles');", + " });", + " pm.test('data\\'s \"articles\" property is an array', () => {", + " pm.expect(data.articles).to.be.an(\"array\");", + " });", + " pm.test('Response\\'s \"data\" property contains \"articlesCount\" property', () => {", + " pm.expect(data).to.have.property('articlesCount');", + " });", + " pm.test('data\\'s \"articlesCount\" property is an integer', () => {", + " pm.expect(data.articlesCount).to.be.a(\"number\");", + " });", + "", + " if(data.articles.length){", + " var article = data.articles[0];", + "", + " pm.test('Article has \"title\" property', () => {", + " pm.expect(article).to.have.property('title');", + " });", + " pm.test('Article has \"slug\" property', () => {", + " pm.expect(article).to.have.property('slug');", + " });", + " pm.test('Article has \"body\" property', () => {", + " pm.expect(article).to.have.property('body');", + " });", + " pm.test('Article has \"description\" property', () => {", + " pm.expect(article).to.have.property('description');", + " });", + " pm.test('Article has \"tagList\" property', () => {", + " pm.expect(article).to.have.property('tagList');", + " });", + " pm.test('Article\\'s \"tagList\" property is an Array', () => {", + " pm.expect(article.tagList).to.be.an(\"array\");", + " });", + " pm.test('Article has \"favorited\" property', () => {", + " pm.expect(article).to.have.property('favorited');", + " });", + " pm.test('Article has \"favoritesCount\" property', () => {", + " pm.expect(article).to.have.property('favoritesCount');", + " });", + " pm.test('Article\\'s \"favoritesCount\" property is an integer', () => {", + " pm.expect(article.favoritesCount).to.be.a(\"number\");", + " });", + " pm.test('Article has an ISO 8601 timestamp \"createdAt\" property', () => {", + " pm.expect(article).to.have.property('createdAt');", + " pm.expect(article.createdAt).to.eql(new Date(article.createdAt).toISOString());", + " });", + " pm.test('Article has an ISO 8601 timestamp \"updatedAt\" property', () => {", + " pm.expect(article).to.have.property('updatedAt');", + " pm.expect(article.updatedAt).to.eql(new Date(article.updatedAt).toISOString());", + " });", + " pm.test('Article has \"author\" property', () => {", + " pm.expect(article).to.have.property('author');", + " });", + " pm.test('Article\\'s \"author\" property has not credential properties', () => {", + " pm.expect(article.author).not.to.have.property('salt');", + " pm.expect(article.author).not.to.have.property('hash');", + " });", + " } else {", + " pm.test('articlesCount is 0 when \"articles\" property is empty', () => {", + " pm.expect(data.articlesCount).to.eql(0);", + " });", + " }", + "}", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-Requested-With", + "value": "XMLHttpRequest" + }, + { + "key": "Authorization", + "value": "Token {{token}}" + } + ], + "url": { + "raw": "{{apiUrl}}/articles?tag=octopus", + "host": [ + "{{apiUrl}}" + ], + "path": [ + "articles" + ], + "query": [ + { + "key": "tag", + "value": "octopus" + } + ] + } + }, + "response": [] + }, + { + "name": "Single Article by slug", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Response code is 200 OK\", () => {", + " pm.expect(pm.response.code).to.eql(200);", + "});", + "", + "if(pm.response.code === 200){", + " var responseJSON = JSON.parse(pm.response.text());", + "", + " pm.test('Response contains \"article\" property', () => {", + " pm.expect(responseJSON).to.have.property('article');", + " });", + "", + " var article = responseJSON.article || {};", + "", + " pm.test('Article has \"title\" property', () => {", + " pm.expect(article).to.have.property('title');", + " });", + " pm.test('Article has \"slug\" property', () => {", + " pm.expect(article).to.have.property('slug');", + " });", + " pm.test('Article has \"body\" property', () => {", + " pm.expect(article).to.have.property('body');", + " });", + " pm.test('Article has \"description\" property', () => {", + " pm.expect(article).to.have.property('description');", + " });", + " pm.test('Article has \"tagList\" property', () => {", + " pm.expect(article).to.have.property('tagList');", + " });", + " pm.test('Article\\'s \"tagList\" property is an Array', () => {", + " pm.expect(article.tagList).to.be.an(\"array\");", + " });", + " pm.test('Article has \"favorited\" property', () => {", + " pm.expect(article).to.have.property('favorited');", + " });", + " pm.test('Article has \"favoritesCount\" property', () => {", + " pm.expect(article).to.have.property('favoritesCount');", + " });", + " pm.test('Article\\'s \"favoritesCount\" property is an integer', () => {", + " pm.expect(article.favoritesCount).to.be.a(\"number\");", + " });", + " pm.test('Article has an ISO 8601 timestamp \"createdAt\" property', () => {", + " pm.expect(article).to.have.property('createdAt');", + " pm.expect(article.createdAt).to.eql(new Date(article.createdAt).toISOString());", + " });", + " pm.test('Article has an ISO 8601 timestamp \"updatedAt\" property', () => {", + " pm.expect(article).to.have.property('updatedAt');", + " pm.expect(article.updatedAt).to.eql(new Date(article.updatedAt).toISOString());", + " });", + " pm.test('Article has \"author\" property', () => {", + " pm.expect(article).to.have.property('author');", + " });", + " pm.test('Article\\'s \"author\" property has not credential properties', () => {", + " pm.expect(article.author).not.to.have.property('salt');", + " pm.expect(article.author).not.to.have.property('hash');", + " });", + "}", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-Requested-With", + "value": "XMLHttpRequest" + }, + { + "key": "Authorization", + "value": "Token {{token}}" + } + ], + "url": { + "raw": "{{apiUrl}}/articles/{{slug}}", + "host": [ + "{{apiUrl}}" + ], + "path": [ + "articles", + "{{slug}}" + ] + } + }, + "response": [] + }, + { + "name": "Update Article", + "event": [ + { + "listen": "test", + "script": { + "type": "text/javascript", + "exec": [ + "if (!(environment.isIntegrationTest)) {", + "var responseJSON = JSON.parse(responseBody);", + "", + "tests['Response contains \"article\" property'] = responseJSON.hasOwnProperty('article');", + "", + "var article = responseJSON.article || {};", + "", + "tests['Article has \"title\" property'] = article.hasOwnProperty('title');", + "tests['Article has \"slug\" property'] = article.hasOwnProperty('slug');", + "tests['Article has \"body\" property'] = article.hasOwnProperty('body');", + "tests['Article has \"createdAt\" property'] = article.hasOwnProperty('createdAt');", + "tests['Article\\'s \"createdAt\" property is an ISO 8601 timestamp'] = new Date(article.createdAt).toISOString() === article.createdAt;", + "tests['Article has \"updatedAt\" property'] = article.hasOwnProperty('updatedAt');", + "tests['Article\\'s \"updatedAt\" property is an ISO 8601 timestamp'] = new Date(article.updatedAt).toISOString() === article.updatedAt;", + "tests['Article has \"description\" property'] = article.hasOwnProperty('description');", + "tests['Article has \"tagList\" property'] = article.hasOwnProperty('tagList');", + "tests['Article\\'s \"tagList\" property is an Array'] = Array.isArray(article.tagList);", + "tests['Article has \"author\" property'] = article.hasOwnProperty('author');", + "tests['Article has \"favorited\" property'] = article.hasOwnProperty('favorited');", + "tests['Article has \"favoritesCount\" property'] = article.hasOwnProperty('favoritesCount');", + "tests['favoritesCount is an integer'] = Number.isInteger(article.favoritesCount);", + "}", + "" + ] + } + } + ], + "request": { + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-Requested-With", + "value": "XMLHttpRequest" + }, + { + "key": "Authorization", + "value": "Token {{token}}" + } + ], + "body": { + "mode": "raw", + "raw": "{\"article\":{\"body\":\"With two hands\"}}" + }, + "url": { + "raw": "{{apiUrl}}/articles/{{slug}}", + "host": [ + "{{apiUrl}}" + ], + "path": [ + "articles", + "{{slug}}" + ] + } + }, + "response": [] + }, + { + "name": "Favorite Article", + "event": [ + { + "listen": "test", + "script": { + "type": "text/javascript", + "exec": [ + "var responseJSON = JSON.parse(responseBody);", + "", + "tests['Response contains \"article\" property'] = responseJSON.hasOwnProperty('article');", + "", + "var article = responseJSON.article || {};", + "", + "tests['Article has \"title\" property'] = article.hasOwnProperty('title');", + "tests['Article has \"slug\" property'] = article.hasOwnProperty('slug');", + "tests['Article has \"body\" property'] = article.hasOwnProperty('body');", + "tests['Article has \"createdAt\" property'] = article.hasOwnProperty('createdAt');", + "tests['Article\\'s \"createdAt\" property is an ISO 8601 timestamp'] = new Date(article.createdAt).toISOString() === article.createdAt;", + "tests['Article has \"updatedAt\" property'] = article.hasOwnProperty('updatedAt');", + "tests['Article\\'s \"updatedAt\" property is an ISO 8601 timestamp'] = new Date(article.updatedAt).toISOString() === article.updatedAt;", + "tests['Article has \"description\" property'] = article.hasOwnProperty('description');", + "tests['Article has \"tagList\" property'] = article.hasOwnProperty('tagList');", + "tests['Article\\'s \"tagList\" property is an Array'] = Array.isArray(article.tagList);", + "tests['Article has \"author\" property'] = article.hasOwnProperty('author');", + "tests['Article has \"favorited\" property'] = article.hasOwnProperty('favorited');", + "tests[\"Article's 'favorited' property is true\"] = article.favorited === true;", + "tests['Article has \"favoritesCount\" property'] = article.hasOwnProperty('favoritesCount');", + "tests['favoritesCount is an integer'] = Number.isInteger(article.favoritesCount);", + "tests[\"Article's 'favoritesCount' property is greater than 0\"] = article.favoritesCount > 0;", + "" + ] + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-Requested-With", + "value": "XMLHttpRequest" + }, + { + "key": "Authorization", + "value": "Token {{token}}" + } + ], + "body": { + "mode": "raw", + "raw": "" + }, + "url": { + "raw": "{{apiUrl}}/articles/{{slug}}/favorite", + "host": [ + "{{apiUrl}}" + ], + "path": [ + "articles", + "{{slug}}", + "favorite" + ] + } + }, + "response": [] + }, + { + "name": "Unfavorite Article", + "event": [ + { + "listen": "test", + "script": { + "type": "text/javascript", + "exec": [ + "var responseJSON = JSON.parse(responseBody);", + "", + "tests['Response contains \"article\" property'] = responseJSON.hasOwnProperty('article');", + "", + "var article = responseJSON.article || {};", + "", + "tests['Article has \"title\" property'] = article.hasOwnProperty('title');", + "tests['Article has \"slug\" property'] = article.hasOwnProperty('slug');", + "tests['Article has \"body\" property'] = article.hasOwnProperty('body');", + "tests['Article has \"createdAt\" property'] = article.hasOwnProperty('createdAt');", + "tests['Article\\'s \"createdAt\" property is an ISO 8601 timestamp'] = new Date(article.createdAt).toISOString() === article.createdAt;", + "tests['Article has \"updatedAt\" property'] = article.hasOwnProperty('updatedAt');", + "tests['Article\\'s \"updatedAt\" property is an ISO 8601 timestamp'] = new Date(article.updatedAt).toISOString() === article.updatedAt;", + "tests['Article has \"description\" property'] = article.hasOwnProperty('description');", + "tests['Article has \"tagList\" property'] = article.hasOwnProperty('tagList');", + "tests['Article\\'s \"tagList\" property is an Array'] = Array.isArray(article.tagList);", + "tests['Article has \"author\" property'] = article.hasOwnProperty('author');", + "tests['Article has \"favorited\" property'] = article.hasOwnProperty('favorited');", + "tests['Article has \"favoritesCount\" property'] = article.hasOwnProperty('favoritesCount');", + "tests['favoritesCount is an integer'] = Number.isInteger(article.favoritesCount);", + "tests[\"Article's \\\"favorited\\\" property is true\"] = article.favorited === false;", + "" + ] + } + } + ], + "request": { + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-Requested-With", + "value": "XMLHttpRequest" + }, + { + "key": "Authorization", + "value": "Token {{token}}" + } + ], + "body": { + "mode": "raw", + "raw": "" + }, + "url": { + "raw": "{{apiUrl}}/articles/{{slug}}/favorite", + "host": [ + "{{apiUrl}}" + ], + "path": [ + "articles", + "{{slug}}", + "favorite" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Comments", + "item": [ + { + "name": "All Comments for Article", + "event": [ + { + "listen": "test", + "script": { + "type": "text/javascript", + "exec": [ + "var is200Response = responseCode.code === 200", + "", + "tests['Response code is 200 OK'] = is200Response;", + "", + "if(is200Response){", + " var responseJSON = JSON.parse(responseBody);", + "", + " tests['Response contains \"comments\" property'] = responseJSON.hasOwnProperty('comments');", + "", + " if(responseJSON.comments.length){", + " var comment = responseJSON.comments[0];", + "", + " tests['Comment has \"id\" property'] = comment.hasOwnProperty('id');", + " tests['Comment has \"body\" property'] = comment.hasOwnProperty('body');", + " tests['Comment has \"createdAt\" property'] = comment.hasOwnProperty('createdAt');", + " tests['\"createdAt\" property is an ISO 8601 timestamp'] = new Date(comment.createdAt).toISOString() === comment.createdAt;", + " tests['Comment has \"updatedAt\" property'] = comment.hasOwnProperty('updatedAt');", + " tests['\"updatedAt\" property is an ISO 8601 timestamp'] = new Date(comment.updatedAt).toISOString() === comment.updatedAt;", + " tests['Comment has \"author\" property'] = comment.hasOwnProperty('author');", + " }", + "}", + "" + ] + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-Requested-With", + "value": "XMLHttpRequest" + }, + { + "key": "Authorization", + "value": "Token {{token}}" + } + ], + "url": { + "raw": "{{apiUrl}}/articles/{{slug}}/comments", + "host": [ + "{{apiUrl}}" + ], + "path": [ + "articles", + "{{slug}}", + "comments" + ] + } + }, + "response": [] + }, + { + "name": "Create Comment for Article", + "event": [ + { + "listen": "test", + "script": { + "type": "text/javascript", + "exec": [ + "var responseJSON = JSON.parse(responseBody);", + "", + "tests['Response contains \"comment\" property'] = responseJSON.hasOwnProperty('comment');", + "", + "var comment = responseJSON.comment || {};", + "", + "tests['Comment has \"id\" property'] = comment.hasOwnProperty('id');", + "tests['Comment has \"body\" property'] = comment.hasOwnProperty('body');", + "tests['Comment has \"createdAt\" property'] = comment.hasOwnProperty('createdAt');", + "tests['\"createdAt\" property is an ISO 8601 timestamp'] = new Date(comment.createdAt).toISOString() === comment.createdAt;", + "tests['Comment has \"author\" property'] = comment.hasOwnProperty('author');", + "" + ] + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-Requested-With", + "value": "XMLHttpRequest" + }, + { + "key": "Authorization", + "value": "Token {{token}}" + } + ], + "body": { + "mode": "raw", + "raw": "{\"comment\":{\"body\":\"Thank you so much!\"}}" + }, + "url": { + "raw": "{{apiUrl}}/articles/{{slug}}/comments", + "host": [ + "{{apiUrl}}" + ], + "path": [ + "articles", + "{{slug}}", + "comments" + ] + } + }, + "response": [] + }, + { + "name": "Delete Comment for Article", + "request": { + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-Requested-With", + "value": "XMLHttpRequest" + }, + { + "key": "Authorization", + "value": "Token {{token}}" + } + ], + "url": { + "raw": "{{apiUrl}}/articles/{{slug}}/comments/1", + "host": [ + "{{apiUrl}}" + ], + "path": [ + "articles", + "{{slug}}", + "comments", + "1" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Profiles", + "item": [ + { + "name": "Profile", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "if (!(pm.environment.get('isIntegrationTest'))) {", + " pm.test(\"Response code is 200 OK\", () => {", + " pm.expect(pm.response.code).to.eql(200);", + " });", + "", + " if(pm.response.code === 200){", + " var responseJSON = JSON.parse(pm.response.text());", + "", + " pm.test('Response contains \"profile\" property', () => {", + " pm.expect(responseJSON).to.have.property('profile');", + " });", + " ", + " var profile = responseJSON.profile || {};", + "", + " pm.test('Profile has \"username\" property', () => {", + " pm.expect(profile).to.have.property('username');", + " });", + " pm.test('Profile has \"image\" property', () => {", + " pm.expect(profile).to.have.property('image');", + " });", + " pm.test('Profile has \"following\" property', () => {", + " pm.expect(profile).to.have.property('following');", + " });", + " }", + "}", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-Requested-With", + "value": "XMLHttpRequest" + }, + { + "key": "Authorization", + "value": "Token {{token}}" + } + ], + "url": { + "raw": "{{apiUrl}}/profiles/annehonime", + "host": [ + "{{apiUrl}}" + ], + "path": [ + "profiles", + "annehonime" + ] + } + }, + "response": [] + }, + { + "name": "Follow Profile", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "if (!(pm.environment.get('isIntegrationTest'))) {", + " pm.test(\"Response code is 200 OK\", () => {", + " pm.expect(pm.response.code).to.eql(200);", + " });", + "", + " if(pm.response.code === 200){", + " var responseJSON = JSON.parse(pm.response.text());", + "", + " pm.test('Response contains \"profile\" property', () => {", + " pm.expect(responseJSON).to.have.property('profile');", + " });", + " ", + " var profile = responseJSON.profile || {};", + "", + " pm.test('Profile has \"username\" property', () => {", + " pm.expect(profile).to.have.property('username');", + " });", + " pm.test('Profile has \"image\" property', () => {", + " pm.expect(profile).to.have.property('image');", + " });", + " pm.test('Profile has \"following\" property', () => {", + " pm.expect(profile).to.have.property('following');", + " });", + " pm.test('Profile\\'s \"following\" property is true', () => {", + " pm.expect(profile.following).to.eql(true);", + " });", + " }", + "}", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-Requested-With", + "value": "XMLHttpRequest" + }, + { + "key": "Authorization", + "value": "Token {{token}}" + } + ], + "body": { + "mode": "raw", + "raw": "{\"user\":{\"email\":\"anne@honime.com\"}}" + }, + "url": { + "raw": "{{apiUrl}}/profiles/annehonime/follow", + "host": [ + "{{apiUrl}}" + ], + "path": [ + "profiles", + "annehonime", + "follow" + ] + } + }, + "response": [] + }, + { + "name": "Unfollow Profile", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "if (!(pm.environment.get('isIntegrationTest'))) {", + " pm.test(\"Response code is 200 OK\", () => {", + " pm.expect(pm.response.code).to.eql(200);", + " });", + "", + " if(pm.response.code === 200){", + " var responseJSON = JSON.parse(pm.response.text());", + "", + " pm.test('Response contains \"profile\" property', () => {", + " pm.expect(responseJSON).to.have.property('profile');", + " });", + " ", + " var profile = responseJSON.profile || {};", + "", + " pm.test('Profile has \"username\" property', () => {", + " pm.expect(profile).to.have.property('username');", + " });", + " pm.test('Profile has \"image\" property', () => {", + " pm.expect(profile).to.have.property('image');", + " });", + " pm.test('Profile has \"following\" property', () => {", + " pm.expect(profile).to.have.property('following');", + " });", + " pm.test('Profile\\'s \"following\" property is false', () => {", + " pm.expect(profile.following).to.eql(false);", + " });", + " }", + "}", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-Requested-With", + "value": "XMLHttpRequest" + }, + { + "key": "Authorization", + "value": "Token {{token}}" + } + ], + "url": { + "raw": "{{apiUrl}}/profiles/annehonime/follow", + "host": [ + "{{apiUrl}}" + ], + "path": [ + "profiles", + "annehonime", + "follow" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Tags", + "item": [ + { + "name": "Create Tag", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Response code is 201 Created\", () => {", + " pm.expect(pm.response.code).to.eql(201);", + "});", + "", + "if(pm.response.code === 201){", + " var responseJSON = JSON.parse(pm.response.text());", + "", + " pm.test('Response contains \"article\" property', () => {", + " pm.expect(responseJSON).to.have.property('article');", + " });", + "", + " var article = responseJSON.article || {};", + "", + " pm.test('Article has \"title\" property', () => {", + " pm.expect(article).to.have.property('title');", + " });", + " pm.test('Article has \"slug\" property', () => {", + " try {", + " pm.expect(article).to.have.property('slug');", + " } catch (e) {", + " throw (e);", + " }", + " pm.collectionVariables.set('slug', article.slug);", + " });", + " pm.test('Article has \"body\" property', () => {", + " pm.expect(article).to.have.property('body');", + " });", + " pm.test('Article has \"description\" property', () => {", + " pm.expect(article).to.have.property('description');", + " });", + " pm.test('Article has \"tagList\" property', () => {", + " pm.expect(article).to.have.property('tagList');", + " });", + " pm.test('Article\\'s \"tagList\" property is an Array', () => {", + " pm.expect(article.tagList).to.be.an(\"array\");", + " });", + " pm.test('Article has \"favorited\" property', () => {", + " pm.expect(article).to.have.property('favorited');", + " });", + " pm.test('Article has \"favoritesCount\" property', () => {", + " pm.expect(article).to.have.property('favoritesCount');", + " });", + " pm.test('Article\\'s \"favoritesCount\" property is an integer', () => {", + " pm.expect(article.favoritesCount).to.be.a(\"number\");", + " });", + " pm.test('Article has an ISO 8601 timestamp \"createdAt\" property', () => {", + " pm.expect(article).to.have.property('createdAt');", + " pm.expect(article.createdAt).to.eql(new Date(article.createdAt).toISOString());", + " });", + " pm.test('Article has an ISO 8601 timestamp \"updatedAt\" property', () => {", + " pm.expect(article).to.have.property('updatedAt');", + " pm.expect(article.updatedAt).to.eql(new Date(article.updatedAt).toISOString());", + " });", + " pm.test('Article has \"author\" property', () => {", + " pm.expect(article).to.have.property('author');", + " });", + " pm.test('Article\\'s \"author\" property has not credential properties', () => {", + " pm.expect(article.author).not.to.have.property('salt');", + " pm.expect(article.author).not.to.have.property('hash');", + " });", + "}", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-Requested-With", + "value": "XMLHttpRequest" + }, + { + "key": "Authorization", + "value": "Token {{token}}" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"article\": {\n \"title\": \"How to tame an octopus\",\n \"description\": \"Ever wonder how?\",\n \"body\": \"Very carefully.\",\n \"tagList\": [\n \"octopus\",\n \"training\"\n ]\n }\n}" + }, + "url": { + "raw": "{{apiUrl}}/articles", + "host": [ + "{{apiUrl}}" + ], + "path": [ + "articles" + ] + } + }, + "response": [] + }, + { + "name": "All Tags", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Response code is 200 OK\", () => {", + " pm.expect(pm.response.code).to.eql(200);", + "});", + "", + "if(pm.response.code === 200){", + " var responseJSON = JSON.parse(pm.response.text());", + "", + " pm.test('Response contains \"tags\" property', () => {", + " pm.expect(responseJSON).to.have.property('tags');", + " });", + " pm.test('\"tags\" property is an Array', () => {", + " pm.expect(responseJSON.tags).to.be.an(\"array\");", + " });", + "}" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-Requested-With", + "value": "XMLHttpRequest" + } + ], + "url": { + "raw": "{{apiUrl}}/tags", + "host": [ + "{{apiUrl}}" + ], + "path": [ + "tags" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Cleanup", + "item": [ + { + "name": "Delete Article", + "request": { + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-Requested-With", + "value": "XMLHttpRequest" + }, + { + "key": "Authorization", + "value": "Token {{token}}" + } + ], + "body": { + "mode": "raw", + "raw": "" + }, + "url": { + "raw": "{{apiUrl}}/articles/{{slug}}", + "host": [ + "{{apiUrl}}" + ], + "path": [ + "articles", + "{{slug}}" + ] + } + }, + "response": [] + } + ] + } + ], + "variable": [ + { + "key": "token", + "value": "" + }, + { + "key": "clanId", + "value": "" + }, + { + "key": "memberId", + "value": "" + }, + { + "key": "slug", + "value": "" + } + ] +} \ No newline at end of file diff --git a/tests/adastra-api-tests.postman_environment.json b/tests/adastra-api-tests.postman_environment.json new file mode 100644 index 0000000..46632e8 --- /dev/null +++ b/tests/adastra-api-tests.postman_environment.json @@ -0,0 +1,16 @@ +{ + "id": "fa16b2da-a24c-4b16-97da-18b034dc45f8", + "name": "Ad Astra API Tests - Environment", + "values": [ + { + "key": "apiUrl", + "value": "http://localhost:3201/api", + "type": "text", + "enabled": true + } + ], + "color": null, + "_postman_variable_scope": "environment", + "_postman_exported_at": "2025-11-30T16:17:27.296Z", + "_postman_exported_using": "Postman/11.73.5" +} \ No newline at end of file diff --git a/tests/api-tests.postman.json b/tests/api-tests.postman.json deleted file mode 100644 index bff2fb7..0000000 --- a/tests/api-tests.postman.json +++ /dev/null @@ -1,2015 +0,0 @@ -{ - "variables": [], - "info": { - "name": "Ad Astra API Tests", - "_postman_id": "dda3e595-02d7-bf12-2a43-3daea0970192", - "description": "Collection for testing the Ad Astra API\n\nhttps://api.adastra-cbd.com/", - "schema": "https://schema.getpostman.com/json/collection/v2.0.0/collection.json" - }, - "item": [ - { - "name": "Auth", - "description": "", - "item": [ - { - "name": "Register", - "event": [ - { - "listen": "test", - "script": { - "type": "text/javascript", - "exec": [ - "if (!(environment.isIntegrationTest)) {", - "var responseJSON = JSON.parse(responseBody);", - "", - "tests['Response contains \"user\" property'] = responseJSON.hasOwnProperty('user');", - "", - "var user = responseJSON.user || {};", - "", - "tests['User has \"email\" property'] = user.hasOwnProperty('email');", - "tests['User has \"username\" property'] = user.hasOwnProperty('username');", - "tests['User has \"token\" property'] = user.hasOwnProperty('token');", - "}", - "" - ] - } - } - ], - "request": { - "url": "{{apiUrl}}/users", - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "" - }, - { - "key": "X-Requested-With", - "value": "XMLHttpRequest", - "description": "" - } - ], - "body": { - "mode": "raw", - "raw": "{\"user\":{\"email\":\"anne@honime.com\", \"password\":\"annehonimepwd\", \"username\":\"annehonime\"}}" - }, - "description": "" - }, - "response": [] - }, - { - "name": "Login", - "event": [ - { - "listen": "test", - "script": { - "type": "text/javascript", - "exec": [ - "var responseJSON = JSON.parse(responseBody);", - "", - "tests['Response contains \"user\" property'] = responseJSON.hasOwnProperty('user');", - "", - "var user = responseJSON.user || {};", - "", - "tests['User has \"email\" property'] = user.hasOwnProperty('email');", - "tests['User has \"username\" property'] = user.hasOwnProperty('username');", - "tests['User has \"token\" property'] = user.hasOwnProperty('token');", - "" - ] - } - } - ], - "request": { - "url": "{{apiUrl}}/users/login", - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "" - }, - { - "key": "X-Requested-With", - "value": "XMLHttpRequest", - "description": "" - } - ], - "body": { - "mode": "raw", - "raw": "{\"user\":{\"email\":\"anne@honime.com\", \"password\":\"annehonimepwd\"}}" - }, - "description": "" - }, - "response": [] - }, - { - "name": "Login and Remember Token", - "event": [ - { - "listen": "test", - "script": { - "type": "text/javascript", - "exec": [ - "var responseJSON = JSON.parse(responseBody);", - "", - "tests['Response contains \"user\" property'] = responseJSON.hasOwnProperty('user');", - "", - "var user = responseJSON.user || {};", - "", - "tests['User has \"email\" property'] = user.hasOwnProperty('email');", - "tests['User has \"username\" property'] = user.hasOwnProperty('username');", - "tests['User has \"token\" property'] = user.hasOwnProperty('token');", - "", - "if(tests['User has \"token\" property']){", - " postman.setEnvironmentVariable('token', user.token);", - "}", - "", - "tests['Environment variable \"token\" has been set'] = environment.token === user.token;", - "" - ] - } - } - ], - "request": { - "url": "{{apiUrl}}/users/login", - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "" - }, - { - "key": "X-Requested-With", - "value": "XMLHttpRequest", - "description": "" - } - ], - "body": { - "mode": "raw", - "raw": "{\"user\":{\"email\":\"anne@honime.com\", \"password\":\"annehonimepwd\"}}" - }, - "description": "" - }, - "response": [] - }, - { - "name": "Current User", - "event": [ - { - "listen": "test", - "script": { - "type": "text/javascript", - "exec": [ - "var responseJSON = JSON.parse(responseBody);", - "", - "tests['Response contains \"user\" property'] = responseJSON.hasOwnProperty('user');", - "", - "var user = responseJSON.user || {};", - "", - "tests['User has \"email\" property'] = user.hasOwnProperty('email');", - "tests['User has \"username\" property'] = user.hasOwnProperty('username');", - "tests['User has \"token\" property'] = user.hasOwnProperty('token');", - "" - ] - } - } - ], - "request": { - "url": "{{apiUrl}}/user", - "method": "GET", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "" - }, - { - "key": "X-Requested-With", - "value": "XMLHttpRequest", - "description": "" - }, - { - "key": "Authorization", - "value": "Token {{token}}", - "description": "" - } - ], - "body": {}, - "description": "" - }, - "response": [] - }, - { - "name": "Update User", - "event": [ - { - "listen": "test", - "script": { - "type": "text/javascript", - "exec": [ - "var responseJSON = JSON.parse(responseBody);", - "", - "tests['Response contains \"user\" property'] = responseJSON.hasOwnProperty('user');", - "", - "var user = responseJSON.user || {};", - "", - "tests['User has \"email\" property'] = user.hasOwnProperty('email');", - "tests['User has \"username\" property'] = user.hasOwnProperty('username');", - "tests['User has \"token\" property'] = user.hasOwnProperty('token');", - "" - ] - } - } - ], - "request": { - "url": "{{apiUrl}}/user", - "method": "PUT", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "" - }, - { - "key": "X-Requested-With", - "value": "XMLHttpRequest", - "description": "" - }, - { - "key": "Authorization", - "value": "Token {{token}}", - "description": "" - } - ], - "body": { - "mode": "raw", - "raw": "{\"user\":{\"email\":\"anne@honime.com\"}}" - }, - "description": "" - }, - "response": [] - } - ] - }, - { - "name": "Articles with authentication", - "description": "", - "item": [ - { - "name": "Feed", - "event": [ - { - "listen": "test", - "script": { - "type": "text/javascript", - "exec": [ - "var is200Response = responseCode.code === 200;", - "", - "tests['Response code is 200 OK'] = is200Response;", - "", - "if(is200Response){", - " var responseJSON = JSON.parse(responseBody);", - "", - " tests['Response contains \"articles\" property'] = responseJSON.hasOwnProperty('articles');", - " tests['Response contains \"articlesCount\" property'] = responseJSON.hasOwnProperty('articlesCount');", - " tests['articlesCount is an integer'] = Number.isInteger(responseJSON.articlesCount);", - "", - " if(responseJSON.articles.length){", - " var article = responseJSON.articles[0];", - "", - " tests['Article has \"title\" property'] = article.hasOwnProperty('title');", - " tests['Article has \"slug\" property'] = article.hasOwnProperty('slug');", - " tests['Article has \"body\" property'] = article.hasOwnProperty('body');", - " tests['Article has \"createdAt\" property'] = article.hasOwnProperty('createdAt');", - " tests['Article\\'s \"createdAt\" property is an ISO 8601 timestamp'] = new Date(article.createdAt).toISOString() === article.createdAt;", - " tests['Article has \"updatedAt\" property'] = article.hasOwnProperty('updatedAt');", - " tests['Article\\'s \"updatedAt\" property is an ISO 8601 timestamp'] = new Date(article.updatedAt).toISOString() === article.updatedAt;", - " tests['Article has \"description\" property'] = article.hasOwnProperty('description');", - " tests['Article has \"tagList\" property'] = article.hasOwnProperty('tagList');", - " tests['Article\\'s \"tagList\" property is an Array'] = Array.isArray(article.tagList);", - " tests['Article has \"author\" property'] = article.hasOwnProperty('author');", - " tests['Article has \"favorited\" property'] = article.hasOwnProperty('favorited');", - " tests['Article has \"favoritesCount\" property'] = article.hasOwnProperty('favoritesCount');", - " tests['favoritesCount is an integer'] = Number.isInteger(article.favoritesCount);", - " } else {", - " tests['articlesCount is 0 when feed is empty'] = responseJSON.articlesCount === 0;", - " }", - "}", - "" - ] - } - } - ], - "request": { - "url": "{{apiUrl}}/articles/feed", - "method": "GET", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "" - }, - { - "key": "X-Requested-With", - "value": "XMLHttpRequest", - "description": "" - }, - { - "key": "Authorization", - "value": "Token {{token}}", - "description": "" - } - ], - "body": { - "mode": "raw", - "raw": "" - }, - "description": "" - }, - "response": [] - }, - { - "name": "All Articles", - "event": [ - { - "listen": "test", - "script": { - "type": "text/javascript", - "exec": [ - "var is200Response = responseCode.code === 200;", - "", - "tests['Response code is 200 OK'] = is200Response;", - "", - "if(is200Response){", - " var responseJSON = JSON.parse(responseBody);", - "", - " tests['Response contains \"articles\" property'] = responseJSON.hasOwnProperty('articles');", - " tests['Response contains \"articlesCount\" property'] = responseJSON.hasOwnProperty('articlesCount');", - " tests['articlesCount is an integer'] = Number.isInteger(responseJSON.articlesCount);", - "", - " if(responseJSON.articles.length){", - " var article = responseJSON.articles[0];", - "", - " tests['Article has \"title\" property'] = article.hasOwnProperty('title');", - " tests['Article has \"slug\" property'] = article.hasOwnProperty('slug');", - " tests['Article has \"body\" property'] = article.hasOwnProperty('body');", - " tests['Article has \"createdAt\" property'] = article.hasOwnProperty('createdAt');", - " tests['Article\\'s \"createdAt\" property is an ISO 8601 timestamp'] = new Date(article.createdAt).toISOString() === article.createdAt;", - " tests['Article has \"updatedAt\" property'] = article.hasOwnProperty('updatedAt');", - " tests['Article\\'s \"updatedAt\" property is an ISO 8601 timestamp'] = new Date(article.updatedAt).toISOString() === article.updatedAt;", - " tests['Article has \"description\" property'] = article.hasOwnProperty('description');", - " tests['Article has \"tagList\" property'] = article.hasOwnProperty('tagList');", - " tests['Article\\'s \"tagList\" property is an Array'] = Array.isArray(article.tagList);", - " tests['Article has \"author\" property'] = article.hasOwnProperty('author');", - " tests['Article has \"favorited\" property'] = article.hasOwnProperty('favorited');", - " tests['Article has \"favoritesCount\" property'] = article.hasOwnProperty('favoritesCount');", - " tests['favoritesCount is an integer'] = Number.isInteger(article.favoritesCount);", - " } else {", - " tests['articlesCount is 0 when feed is empty'] = responseJSON.articlesCount === 0;", - " }", - "}", - "" - ] - } - } - ], - "request": { - "url": "{{apiUrl}}/articles", - "method": "GET", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "" - }, - { - "key": "X-Requested-With", - "value": "XMLHttpRequest", - "description": "" - }, - { - "key": "Authorization", - "value": "Token {{token}}", - "description": "" - } - ], - "body": { - "mode": "raw", - "raw": "" - }, - "description": "" - }, - "response": [] - }, - { - "name": "All Articles with auth", - "event": [ - { - "listen": "test", - "script": { - "type": "text/javascript", - "exec": [ - "var is200Response = responseCode.code === 200;", - "", - "tests['Response code is 200 OK'] = is200Response;", - "", - "if(is200Response){", - " var responseJSON = JSON.parse(responseBody);", - "", - " tests['Response contains \"articles\" property'] = responseJSON.hasOwnProperty('articles');", - " tests['Response contains \"articlesCount\" property'] = responseJSON.hasOwnProperty('articlesCount');", - " tests['articlesCount is an integer'] = Number.isInteger(responseJSON.articlesCount);", - "", - " if(responseJSON.articles.length){", - " var article = responseJSON.articles[0];", - "", - " tests['Article has \"title\" property'] = article.hasOwnProperty('title');", - " tests['Article has \"slug\" property'] = article.hasOwnProperty('slug');", - " tests['Article has \"body\" property'] = article.hasOwnProperty('body');", - " tests['Article has \"createdAt\" property'] = article.hasOwnProperty('createdAt');", - " tests['Article\\'s \"createdAt\" property is an ISO 8601 timestamp'] = new Date(article.createdAt).toISOString() === article.createdAt;", - " tests['Article has \"updatedAt\" property'] = article.hasOwnProperty('updatedAt');", - " tests['Article\\'s \"updatedAt\" property is an ISO 8601 timestamp'] = new Date(article.updatedAt).toISOString() === article.updatedAt;", - " tests['Article has \"description\" property'] = article.hasOwnProperty('description');", - " tests['Article has \"tagList\" property'] = article.hasOwnProperty('tagList');", - " tests['Article\\'s \"tagList\" property is an Array'] = Array.isArray(article.tagList);", - " tests['Article has \"author\" property'] = article.hasOwnProperty('author');", - " tests['Article has \"favorited\" property'] = article.hasOwnProperty('favorited');", - " tests['Article has \"favoritesCount\" property'] = article.hasOwnProperty('favoritesCount');", - " tests['favoritesCount is an integer'] = Number.isInteger(article.favoritesCount);", - " } else {", - " tests['articlesCount is 0 when feed is empty'] = responseJSON.articlesCount === 0;", - " }", - "}", - "" - ] - } - } - ], - "request": { - "url": "{{apiUrl}}/articles", - "method": "GET", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "" - }, - { - "key": "X-Requested-With", - "value": "XMLHttpRequest", - "description": "" - }, - { - "key": "Authorization", - "value": "Token {{token}}", - "description": "" - } - ], - "body": { - "mode": "raw", - "raw": "" - }, - "description": "" - }, - "response": [] - }, - { - "name": "Articles by Author", - "event": [ - { - "listen": "test", - "script": { - "type": "text/javascript", - "exec": [ - "var is200Response = responseCode.code === 200;", - "", - "tests['Response code is 200 OK'] = is200Response;", - "", - "if(is200Response){", - " var responseJSON = JSON.parse(responseBody);", - "", - " tests['Response contains \"articles\" property'] = responseJSON.hasOwnProperty('articles');", - " tests['Response contains \"articlesCount\" property'] = responseJSON.hasOwnProperty('articlesCount');", - " tests['articlesCount is an integer'] = Number.isInteger(responseJSON.articlesCount);", - "", - " if(responseJSON.articles.length){", - " var article = responseJSON.articles[0];", - "", - " tests['Article has \"title\" property'] = article.hasOwnProperty('title');", - " tests['Article has \"slug\" property'] = article.hasOwnProperty('slug');", - " tests['Article has \"body\" property'] = article.hasOwnProperty('body');", - " tests['Article has \"createdAt\" property'] = article.hasOwnProperty('createdAt');", - " tests['Article\\'s \"createdAt\" property is an ISO 8601 timestamp'] = new Date(article.createdAt).toISOString() === article.createdAt;", - " tests['Article has \"updatedAt\" property'] = article.hasOwnProperty('updatedAt');", - " tests['Article\\'s \"updatedAt\" property is an ISO 8601 timestamp'] = new Date(article.updatedAt).toISOString() === article.updatedAt;", - " tests['Article has \"description\" property'] = article.hasOwnProperty('description');", - " tests['Article has \"tagList\" property'] = article.hasOwnProperty('tagList');", - " tests['Article\\'s \"tagList\" property is an Array'] = Array.isArray(article.tagList);", - " tests['Article has \"author\" property'] = article.hasOwnProperty('author');", - " tests['Article has \"favorited\" property'] = article.hasOwnProperty('favorited');", - " tests['Article has \"favoritesCount\" property'] = article.hasOwnProperty('favoritesCount');", - " tests['favoritesCount is an integer'] = Number.isInteger(article.favoritesCount);", - " } else {", - " tests['articlesCount is 0 when feed is empty'] = responseJSON.articlesCount === 0;", - " }", - "}", - "" - ] - } - } - ], - "request": { - "url": { - "raw": "{{apiUrl}}/articles?author=annehonime", - "host": [ - "{{apiUrl}}" - ], - "path": [ - "articles" - ], - "query": [ - { - "key": "author", - "value": "annehonime" - } - ], - "variable": [] - }, - "method": "GET", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "" - }, - { - "key": "X-Requested-With", - "value": "XMLHttpRequest", - "description": "" - }, - { - "key": "Authorization", - "value": "Token {{token}}", - "description": "" - } - ], - "body": { - "mode": "raw", - "raw": "" - }, - "description": "" - }, - "response": [] - }, - { - "name": "Articles by Author with auth", - "event": [ - { - "listen": "test", - "script": { - "type": "text/javascript", - "exec": [ - "var is200Response = responseCode.code === 200;", - "", - "tests['Response code is 200 OK'] = is200Response;", - "", - "if(is200Response){", - " var responseJSON = JSON.parse(responseBody);", - "", - " tests['Response contains \"articles\" property'] = responseJSON.hasOwnProperty('articles');", - " tests['Response contains \"articlesCount\" property'] = responseJSON.hasOwnProperty('articlesCount');", - " tests['articlesCount is an integer'] = Number.isInteger(responseJSON.articlesCount);", - "", - " if(responseJSON.articles.length){", - " var article = responseJSON.articles[0];", - "", - " tests['Article has \"title\" property'] = article.hasOwnProperty('title');", - " tests['Article has \"slug\" property'] = article.hasOwnProperty('slug');", - " tests['Article has \"body\" property'] = article.hasOwnProperty('body');", - " tests['Article has \"createdAt\" property'] = article.hasOwnProperty('createdAt');", - " tests['Article\\'s \"createdAt\" property is an ISO 8601 timestamp'] = new Date(article.createdAt).toISOString() === article.createdAt;", - " tests['Article has \"updatedAt\" property'] = article.hasOwnProperty('updatedAt');", - " tests['Article\\'s \"updatedAt\" property is an ISO 8601 timestamp'] = new Date(article.updatedAt).toISOString() === article.updatedAt;", - " tests['Article has \"description\" property'] = article.hasOwnProperty('description');", - " tests['Article has \"tagList\" property'] = article.hasOwnProperty('tagList');", - " tests['Article\\'s \"tagList\" property is an Array'] = Array.isArray(article.tagList);", - " tests['Article has \"author\" property'] = article.hasOwnProperty('author');", - " tests['Article has \"favorited\" property'] = article.hasOwnProperty('favorited');", - " tests['Article has \"favoritesCount\" property'] = article.hasOwnProperty('favoritesCount');", - " tests['favoritesCount is an integer'] = Number.isInteger(article.favoritesCount);", - " } else {", - " tests['articlesCount is 0 when feed is empty'] = responseJSON.articlesCount === 0;", - " }", - "}", - "" - ] - } - } - ], - "request": { - "url": { - "raw": "{{apiUrl}}/articles?author=annehonime", - "host": [ - "{{apiUrl}}" - ], - "path": [ - "articles" - ], - "query": [ - { - "key": "author", - "value": "annehonime", - "equals": true, - "description": "" - } - ], - "variable": [] - }, - "method": "GET", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "" - }, - { - "key": "X-Requested-With", - "value": "XMLHttpRequest", - "description": "" - }, - { - "key": "Authorization", - "value": "Token {{token}}", - "description": "" - } - ], - "body": {}, - "description": "" - }, - "response": [] - }, - { - "name": "Articles Favorited by Username", - "event": [ - { - "listen": "test", - "script": { - "type": "text/javascript", - "exec": [ - "var is200Response = responseCode.code === 200;", - "", - "tests['Response code is 200 OK'] = is200Response;", - "", - "if(is200Response){", - " var responseJSON = JSON.parse(responseBody);", - " ", - " tests['Response contains \"articles\" property'] = responseJSON.hasOwnProperty('articles');", - " tests['Response contains \"articlesCount\" property'] = responseJSON.hasOwnProperty('articlesCount');", - " tests['articlesCount is an integer'] = Number.isInteger(responseJSON.articlesCount);", - "", - " if(responseJSON.articles.length){", - " var article = responseJSON.articles[0];", - "", - " tests['Article has \"title\" property'] = article.hasOwnProperty('title');", - " tests['Article has \"slug\" property'] = article.hasOwnProperty('slug');", - " tests['Article has \"body\" property'] = article.hasOwnProperty('body');", - " tests['Article has \"createdAt\" property'] = article.hasOwnProperty('createdAt');", - " tests['Article\\'s \"createdAt\" property is an ISO 8601 timestamp'] = new Date(article.createdAt).toISOString() === article.createdAt;", - " tests['Article has \"updatedAt\" property'] = article.hasOwnProperty('updatedAt');", - " tests['Article\\'s \"updatedAt\" property is an ISO 8601 timestamp'] = new Date(article.updatedAt).toISOString() === article.updatedAt;", - " tests['Article has \"description\" property'] = article.hasOwnProperty('description');", - " tests['Article has \"tagList\" property'] = article.hasOwnProperty('tagList');", - " tests['Article\\'s \"tagList\" property is an Array'] = Array.isArray(article.tagList);", - " tests['Article has \"author\" property'] = article.hasOwnProperty('author');", - " tests['Article has \"favorited\" property'] = article.hasOwnProperty('favorited');", - " tests['Article has \"favoritesCount\" property'] = article.hasOwnProperty('favoritesCount');", - " tests['favoritesCount is an integer'] = Number.isInteger(article.favoritesCount);", - " } else {", - " tests['articlesCount is 0 when feed is empty'] = responseJSON.articlesCount === 0;", - " }", - "}", - "" - ] - } - } - ], - "request": { - "url": { - "raw": "{{apiUrl}}/articles?favorited=jane", - "host": [ - "{{apiUrl}}" - ], - "path": [ - "articles" - ], - "query": [ - { - "key": "favorited", - "value": "jane" - } - ], - "variable": [] - }, - "method": "GET", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "" - }, - { - "key": "X-Requested-With", - "value": "XMLHttpRequest", - "description": "" - }, - { - "key": "Authorization", - "value": "Token {{token}}", - "description": "" - } - ], - "body": { - "mode": "raw", - "raw": "" - }, - "description": "" - }, - "response": [] - }, - { - "name": "Articles Favorited by Username with auth", - "event": [ - { - "listen": "test", - "script": { - "type": "text/javascript", - "exec": [ - "var is200Response = responseCode.code === 200;", - "", - "tests['Response code is 200 OK'] = is200Response;", - "", - "if(is200Response){", - " var responseJSON = JSON.parse(responseBody);", - " ", - " tests['Response contains \"articles\" property'] = responseJSON.hasOwnProperty('articles');", - " tests['Response contains \"articlesCount\" property'] = responseJSON.hasOwnProperty('articlesCount');", - " tests['articlesCount is an integer'] = Number.isInteger(responseJSON.articlesCount);", - "", - " if(responseJSON.articles.length){", - " var article = responseJSON.articles[0];", - "", - " tests['Article has \"title\" property'] = article.hasOwnProperty('title');", - " tests['Article has \"slug\" property'] = article.hasOwnProperty('slug');", - " tests['Article has \"body\" property'] = article.hasOwnProperty('body');", - " tests['Article has \"createdAt\" property'] = article.hasOwnProperty('createdAt');", - " tests['Article\\'s \"createdAt\" property is an ISO 8601 timestamp'] = new Date(article.createdAt).toISOString() === article.createdAt;", - " tests['Article has \"updatedAt\" property'] = article.hasOwnProperty('updatedAt');", - " tests['Article\\'s \"updatedAt\" property is an ISO 8601 timestamp'] = new Date(article.updatedAt).toISOString() === article.updatedAt;", - " tests['Article has \"description\" property'] = article.hasOwnProperty('description');", - " tests['Article has \"tagList\" property'] = article.hasOwnProperty('tagList');", - " tests['Article\\'s \"tagList\" property is an Array'] = Array.isArray(article.tagList);", - " tests['Article has \"author\" property'] = article.hasOwnProperty('author');", - " tests['Article has \"favorited\" property'] = article.hasOwnProperty('favorited');", - " tests['Article has \"favoritesCount\" property'] = article.hasOwnProperty('favoritesCount');", - " tests['favoritesCount is an integer'] = Number.isInteger(article.favoritesCount);", - " } else {", - " tests['articlesCount is 0 when feed is empty'] = responseJSON.articlesCount === 0;", - " }", - "}", - "" - ] - } - } - ], - "request": { - "url": { - "raw": "{{apiUrl}}/articles?favorited=jane", - "host": [ - "{{apiUrl}}" - ], - "path": [ - "articles" - ], - "query": [ - { - "key": "favorited", - "value": "jane" - } - ], - "variable": [] - }, - "method": "GET", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "" - }, - { - "key": "X-Requested-With", - "value": "XMLHttpRequest", - "description": "" - }, - { - "key": "Authorization", - "value": "Token {{token}}", - "description": "" - } - ], - "body": { - "mode": "raw", - "raw": "" - }, - "description": "" - }, - "response": [] - }, - { - "name": "Articles by Tag", - "event": [ - { - "listen": "test", - "script": { - "type": "text/javascript", - "exec": [ - "var is200Response = responseCode.code === 200;", - "", - "tests['Response code is 200 OK'] = is200Response;", - "", - "if(is200Response){", - " var responseJSON = JSON.parse(responseBody);", - "", - " tests['Response contains \"articles\" property'] = responseJSON.hasOwnProperty('articles');", - " tests['Response contains \"articlesCount\" property'] = responseJSON.hasOwnProperty('articlesCount');", - " tests['articlesCount is an integer'] = Number.isInteger(responseJSON.articlesCount);", - "", - " if(responseJSON.articles.length){", - " var article = responseJSON.articles[0];", - "", - " tests['Article has \"title\" property'] = article.hasOwnProperty('title');", - " tests['Article has \"slug\" property'] = article.hasOwnProperty('slug');", - " tests['Article has \"body\" property'] = article.hasOwnProperty('body');", - " tests['Article has \"createdAt\" property'] = article.hasOwnProperty('createdAt');", - " tests['Article\\'s \"createdAt\" property is an ISO 8601 timestamp'] = new Date(article.createdAt).toISOString() === article.createdAt;", - " tests['Article has \"updatedAt\" property'] = article.hasOwnProperty('updatedAt');", - " tests['Article\\'s \"updatedAt\" property is an ISO 8601 timestamp'] = new Date(article.updatedAt).toISOString() === article.updatedAt;", - " tests['Article has \"description\" property'] = article.hasOwnProperty('description');", - " tests['Article has \"tagList\" property'] = article.hasOwnProperty('tagList');", - " tests['Article\\'s \"tagList\" property is an Array'] = Array.isArray(article.tagList);", - " tests['Article has \"author\" property'] = article.hasOwnProperty('author');", - " tests['Article has \"favorited\" property'] = article.hasOwnProperty('favorited');", - " tests['Article has \"favoritesCount\" property'] = article.hasOwnProperty('favoritesCount');", - " tests['favoritesCount is an integer'] = Number.isInteger(article.favoritesCount);", - " } else {", - " tests['articlesCount is 0 when feed is empty'] = responseJSON.articlesCount === 0;", - " }", - "}", - "" - ] - } - } - ], - "request": { - "url": { - "raw": "{{apiUrl}}/articles?tag=octopus", - "host": [ - "{{apiUrl}}" - ], - "path": [ - "articles" - ], - "query": [ - { - "key": "tag", - "value": "octopus" - } - ], - "variable": [] - }, - "method": "GET", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "" - }, - { - "key": "X-Requested-With", - "value": "XMLHttpRequest", - "description": "" - }, - { - "key": "Authorization", - "value": "Token {{token}}", - "description": "" - } - ], - "body": { - "mode": "raw", - "raw": "" - }, - "description": "" - }, - "response": [] - }, - { - "name": "Create Article", - "event": [ - { - "listen": "test", - "script": { - "type": "text/javascript", - "exec": [ - "var responseJSON = JSON.parse(responseBody);", - "", - "tests['Response contains \"article\" property'] = responseJSON.hasOwnProperty('article');", - "", - "var article = responseJSON.article || {};", - "", - "tests['Article has \"title\" property'] = article.hasOwnProperty('title');", - "tests['Article has \"slug\" property'] = article.hasOwnProperty('slug');", - "if(tests['Article has \"slug\" property']){", - " postman.setEnvironmentVariable('slug', article.slug);", - "}", - "tests['Article has \"body\" property'] = article.hasOwnProperty('body');", - "tests['Article has \"createdAt\" property'] = article.hasOwnProperty('createdAt');", - "tests['Article\\'s \"createdAt\" property is an ISO 8601 timestamp'] = new Date(article.createdAt).toISOString() === article.createdAt;", - "tests['Article has \"updatedAt\" property'] = article.hasOwnProperty('updatedAt');", - "tests['Article\\'s \"updatedAt\" property is an ISO 8601 timestamp'] = new Date(article.updatedAt).toISOString() === article.updatedAt;", - "tests['Article has \"description\" property'] = article.hasOwnProperty('description');", - "tests['Article has \"tagList\" property'] = article.hasOwnProperty('tagList');", - "tests['Article\\'s \"tagList\" property is an Array'] = Array.isArray(article.tagList);", - "tests['Article has \"author\" property'] = article.hasOwnProperty('author');", - "tests['Article has \"favorited\" property'] = article.hasOwnProperty('favorited');", - "tests['Article has \"favoritesCount\" property'] = article.hasOwnProperty('favoritesCount');", - "tests['favoritesCount is an integer'] = Number.isInteger(article.favoritesCount);", - "" - ] - } - } - ], - "request": { - "url": "{{apiUrl}}/articles", - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "" - }, - { - "key": "X-Requested-With", - "value": "XMLHttpRequest", - "description": "" - }, - { - "key": "Authorization", - "value": "Token {{token}}", - "description": "" - } - ], - "body": { - "mode": "raw", - "raw": "{\"article\":{\"title\":\"How to tame an octopus\", \"description\":\"Ever wonder how?\", \"body\":\"Very carefully.\", \"tagList\":[\"octopus\",\"training\"]}}" - }, - "description": "" - }, - "response": [] - }, - { - "name": "Single Article by slug", - "event": [ - { - "listen": "test", - "script": { - "type": "text/javascript", - "exec": [ - "var responseJSON = JSON.parse(responseBody);", - "", - "tests['Response contains \"article\" property'] = responseJSON.hasOwnProperty('article');", - "", - "var article = responseJSON.article || {};", - "", - "tests['Article has \"title\" property'] = article.hasOwnProperty('title');", - "tests['Article has \"slug\" property'] = article.hasOwnProperty('slug');", - "tests['Article has \"body\" property'] = article.hasOwnProperty('body');", - "tests['Article has \"createdAt\" property'] = article.hasOwnProperty('createdAt');", - "tests['Article\\'s \"createdAt\" property is an ISO 8601 timestamp'] = new Date(article.createdAt).toISOString() === article.createdAt;", - "tests['Article has \"updatedAt\" property'] = article.hasOwnProperty('updatedAt');", - "tests['Article\\'s \"updatedAt\" property is an ISO 8601 timestamp'] = new Date(article.updatedAt).toISOString() === article.updatedAt;", - "tests['Article has \"description\" property'] = article.hasOwnProperty('description');", - "tests['Article has \"tagList\" property'] = article.hasOwnProperty('tagList');", - "tests['Article\\'s \"tagList\" property is an Array'] = Array.isArray(article.tagList);", - "tests['Article has \"author\" property'] = article.hasOwnProperty('author');", - "tests['Article has \"favorited\" property'] = article.hasOwnProperty('favorited');", - "tests['Article has \"favoritesCount\" property'] = article.hasOwnProperty('favoritesCount');", - "tests['favoritesCount is an integer'] = Number.isInteger(article.favoritesCount);", - "" - ] - } - } - ], - "request": { - "url": "{{apiUrl}}/articles/{{slug}}", - "method": "GET", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "" - }, - { - "key": "X-Requested-With", - "value": "XMLHttpRequest", - "description": "" - }, - { - "key": "Authorization", - "value": "Token {{token}}", - "description": "" - } - ], - "body": {}, - "description": "" - }, - "response": [] - }, - { - "name": "Update Article", - "event": [ - { - "listen": "test", - "script": { - "type": "text/javascript", - "exec": [ - "if (!(environment.isIntegrationTest)) {", - "var responseJSON = JSON.parse(responseBody);", - "", - "tests['Response contains \"article\" property'] = responseJSON.hasOwnProperty('article');", - "", - "var article = responseJSON.article || {};", - "", - "tests['Article has \"title\" property'] = article.hasOwnProperty('title');", - "tests['Article has \"slug\" property'] = article.hasOwnProperty('slug');", - "tests['Article has \"body\" property'] = article.hasOwnProperty('body');", - "tests['Article has \"createdAt\" property'] = article.hasOwnProperty('createdAt');", - "tests['Article\\'s \"createdAt\" property is an ISO 8601 timestamp'] = new Date(article.createdAt).toISOString() === article.createdAt;", - "tests['Article has \"updatedAt\" property'] = article.hasOwnProperty('updatedAt');", - "tests['Article\\'s \"updatedAt\" property is an ISO 8601 timestamp'] = new Date(article.updatedAt).toISOString() === article.updatedAt;", - "tests['Article has \"description\" property'] = article.hasOwnProperty('description');", - "tests['Article has \"tagList\" property'] = article.hasOwnProperty('tagList');", - "tests['Article\\'s \"tagList\" property is an Array'] = Array.isArray(article.tagList);", - "tests['Article has \"author\" property'] = article.hasOwnProperty('author');", - "tests['Article has \"favorited\" property'] = article.hasOwnProperty('favorited');", - "tests['Article has \"favoritesCount\" property'] = article.hasOwnProperty('favoritesCount');", - "tests['favoritesCount is an integer'] = Number.isInteger(article.favoritesCount);", - "}", - "" - ] - } - } - ], - "request": { - "url": "{{apiUrl}}/articles/{{slug}}", - "method": "PUT", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "" - }, - { - "key": "X-Requested-With", - "value": "XMLHttpRequest", - "description": "" - }, - { - "key": "Authorization", - "value": "Token {{token}}", - "description": "" - } - ], - "body": { - "mode": "raw", - "raw": "{\"article\":{\"body\":\"With two hands\"}}" - }, - "description": "" - }, - "response": [] - }, - { - "name": "Favorite Article", - "event": [ - { - "listen": "test", - "script": { - "type": "text/javascript", - "exec": [ - "var responseJSON = JSON.parse(responseBody);", - "", - "tests['Response contains \"article\" property'] = responseJSON.hasOwnProperty('article');", - "", - "var article = responseJSON.article || {};", - "", - "tests['Article has \"title\" property'] = article.hasOwnProperty('title');", - "tests['Article has \"slug\" property'] = article.hasOwnProperty('slug');", - "tests['Article has \"body\" property'] = article.hasOwnProperty('body');", - "tests['Article has \"createdAt\" property'] = article.hasOwnProperty('createdAt');", - "tests['Article\\'s \"createdAt\" property is an ISO 8601 timestamp'] = new Date(article.createdAt).toISOString() === article.createdAt;", - "tests['Article has \"updatedAt\" property'] = article.hasOwnProperty('updatedAt');", - "tests['Article\\'s \"updatedAt\" property is an ISO 8601 timestamp'] = new Date(article.updatedAt).toISOString() === article.updatedAt;", - "tests['Article has \"description\" property'] = article.hasOwnProperty('description');", - "tests['Article has \"tagList\" property'] = article.hasOwnProperty('tagList');", - "tests['Article\\'s \"tagList\" property is an Array'] = Array.isArray(article.tagList);", - "tests['Article has \"author\" property'] = article.hasOwnProperty('author');", - "tests['Article has \"favorited\" property'] = article.hasOwnProperty('favorited');", - "tests[\"Article's 'favorited' property is true\"] = article.favorited === true;", - "tests['Article has \"favoritesCount\" property'] = article.hasOwnProperty('favoritesCount');", - "tests['favoritesCount is an integer'] = Number.isInteger(article.favoritesCount);", - "tests[\"Article's 'favoritesCount' property is greater than 0\"] = article.favoritesCount > 0;", - "" - ] - } - } - ], - "request": { - "url": "{{apiUrl}}/articles/{{slug}}/favorite", - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "" - }, - { - "key": "X-Requested-With", - "value": "XMLHttpRequest", - "description": "" - }, - { - "key": "Authorization", - "value": "Token {{token}}", - "description": "" - } - ], - "body": { - "mode": "raw", - "raw": "" - }, - "description": "" - }, - "response": [] - }, - { - "name": "Unfavorite Article", - "event": [ - { - "listen": "test", - "script": { - "type": "text/javascript", - "exec": [ - "var responseJSON = JSON.parse(responseBody);", - "", - "tests['Response contains \"article\" property'] = responseJSON.hasOwnProperty('article');", - "", - "var article = responseJSON.article || {};", - "", - "tests['Article has \"title\" property'] = article.hasOwnProperty('title');", - "tests['Article has \"slug\" property'] = article.hasOwnProperty('slug');", - "tests['Article has \"body\" property'] = article.hasOwnProperty('body');", - "tests['Article has \"createdAt\" property'] = article.hasOwnProperty('createdAt');", - "tests['Article\\'s \"createdAt\" property is an ISO 8601 timestamp'] = new Date(article.createdAt).toISOString() === article.createdAt;", - "tests['Article has \"updatedAt\" property'] = article.hasOwnProperty('updatedAt');", - "tests['Article\\'s \"updatedAt\" property is an ISO 8601 timestamp'] = new Date(article.updatedAt).toISOString() === article.updatedAt;", - "tests['Article has \"description\" property'] = article.hasOwnProperty('description');", - "tests['Article has \"tagList\" property'] = article.hasOwnProperty('tagList');", - "tests['Article\\'s \"tagList\" property is an Array'] = Array.isArray(article.tagList);", - "tests['Article has \"author\" property'] = article.hasOwnProperty('author');", - "tests['Article has \"favorited\" property'] = article.hasOwnProperty('favorited');", - "tests['Article has \"favoritesCount\" property'] = article.hasOwnProperty('favoritesCount');", - "tests['favoritesCount is an integer'] = Number.isInteger(article.favoritesCount);", - "tests[\"Article's \\\"favorited\\\" property is true\"] = article.favorited === false;", - "" - ] - } - } - ], - "request": { - "url": "{{apiUrl}}/articles/{{slug}}/favorite", - "method": "DELETE", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "" - }, - { - "key": "X-Requested-With", - "value": "XMLHttpRequest", - "description": "" - }, - { - "key": "Authorization", - "value": "Token {{token}}", - "description": "" - } - ], - "body": { - "mode": "raw", - "raw": "" - }, - "description": "" - }, - "response": [] - } - ] - }, - { - "name": "Articles", - "description": "", - "item": [ - { - "name": "All Articles", - "event": [ - { - "listen": "test", - "script": { - "type": "text/javascript", - "exec": [ - "var is200Response = responseCode.code === 200;", - "", - "tests['Response code is 200 OK'] = is200Response;", - "", - "if(is200Response){", - " var responseJSON = JSON.parse(responseBody);", - "", - " tests['Response contains \"articles\" property'] = responseJSON.hasOwnProperty('articles');", - " tests['Response contains \"articlesCount\" property'] = responseJSON.hasOwnProperty('articlesCount');", - " tests['articlesCount is an integer'] = Number.isInteger(responseJSON.articlesCount);", - "", - " if(responseJSON.articles.length){", - " var article = responseJSON.articles[0];", - "", - " tests['Article has \"title\" property'] = article.hasOwnProperty('title');", - " tests['Article has \"slug\" property'] = article.hasOwnProperty('slug');", - " tests['Article has \"body\" property'] = article.hasOwnProperty('body');", - " tests['Article has \"createdAt\" property'] = article.hasOwnProperty('createdAt');", - " tests['Article\\'s \"createdAt\" property is an ISO 8601 timestamp'] = new Date(article.createdAt).toISOString() === article.createdAt;", - " tests['Article has \"updatedAt\" property'] = article.hasOwnProperty('updatedAt');", - " tests['Article\\'s \"updatedAt\" property is an ISO 8601 timestamp'] = new Date(article.updatedAt).toISOString() === article.updatedAt;", - " tests['Article has \"description\" property'] = article.hasOwnProperty('description');", - " tests['Article has \"tagList\" property'] = article.hasOwnProperty('tagList');", - " tests['Article\\'s \"tagList\" property is an Array'] = Array.isArray(article.tagList);", - " tests['Article has \"author\" property'] = article.hasOwnProperty('author');", - " tests['Article has \"favorited\" property'] = article.hasOwnProperty('favorited');", - " tests['Article has \"favoritesCount\" property'] = article.hasOwnProperty('favoritesCount');", - " tests['favoritesCount is an integer'] = Number.isInteger(article.favoritesCount);", - " } else {", - " tests['articlesCount is 0 when feed is empty'] = responseJSON.articlesCount === 0;", - " }", - "}", - "" - ] - } - } - ], - "request": { - "url": "{{apiUrl}}/articles", - "method": "GET", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "" - }, - { - "key": "X-Requested-With", - "value": "XMLHttpRequest", - "description": "" - } - ], - "body": { - "mode": "raw", - "raw": "" - }, - "description": "" - }, - "response": [] - }, - { - "name": "Articles by Author", - "event": [ - { - "listen": "test", - "script": { - "type": "text/javascript", - "exec": [ - "var is200Response = responseCode.code === 200;", - "", - "tests['Response code is 200 OK'] = is200Response;", - "", - "if(is200Response){", - " var responseJSON = JSON.parse(responseBody);", - "", - " tests['Response contains \"articles\" property'] = responseJSON.hasOwnProperty('articles');", - " tests['Response contains \"articlesCount\" property'] = responseJSON.hasOwnProperty('articlesCount');", - " tests['articlesCount is an integer'] = Number.isInteger(responseJSON.articlesCount);", - "", - " if(responseJSON.articles.length){", - " var article = responseJSON.articles[0];", - "", - " tests['Article has \"title\" property'] = article.hasOwnProperty('title');", - " tests['Article has \"slug\" property'] = article.hasOwnProperty('slug');", - " tests['Article has \"body\" property'] = article.hasOwnProperty('body');", - " tests['Article has \"createdAt\" property'] = article.hasOwnProperty('createdAt');", - " tests['Article\\'s \"createdAt\" property is an ISO 8601 timestamp'] = new Date(article.createdAt).toISOString() === article.createdAt;", - " tests['Article has \"updatedAt\" property'] = article.hasOwnProperty('updatedAt');", - " tests['Article\\'s \"updatedAt\" property is an ISO 8601 timestamp'] = new Date(article.updatedAt).toISOString() === article.updatedAt;", - " tests['Article has \"description\" property'] = article.hasOwnProperty('description');", - " tests['Article has \"tagList\" property'] = article.hasOwnProperty('tagList');", - " tests['Article\\'s \"tagList\" property is an Array'] = Array.isArray(article.tagList);", - " tests['Article has \"author\" property'] = article.hasOwnProperty('author');", - " tests['Article has \"favorited\" property'] = article.hasOwnProperty('favorited');", - " tests['Article has \"favoritesCount\" property'] = article.hasOwnProperty('favoritesCount');", - " tests['favoritesCount is an integer'] = Number.isInteger(article.favoritesCount);", - " } else {", - " tests['articlesCount is 0 when feed is empty'] = responseJSON.articlesCount === 0;", - " }", - "}", - "" - ] - } - } - ], - "request": { - "url": { - "raw": "{{apiUrl}}/articles?author=annehonime", - "host": [ - "{{apiUrl}}" - ], - "path": [ - "articles" - ], - "query": [ - { - "key": "author", - "value": "annehonime" - } - ], - "variable": [] - }, - "method": "GET", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "" - }, - { - "key": "X-Requested-With", - "value": "XMLHttpRequest", - "description": "" - } - ], - "body": { - "mode": "raw", - "raw": "" - }, - "description": "" - }, - "response": [] - }, - { - "name": "Articles Favorited by Username", - "event": [ - { - "listen": "test", - "script": { - "type": "text/javascript", - "exec": [ - "var is200Response = responseCode.code === 200;", - "", - "tests['Response code is 200 OK'] = is200Response;", - "", - "if(is200Response){", - " var responseJSON = JSON.parse(responseBody);", - " ", - " tests['Response contains \"articles\" property'] = responseJSON.hasOwnProperty('articles');", - " tests['Response contains \"articlesCount\" property'] = responseJSON.hasOwnProperty('articlesCount');", - " tests['articlesCount is an integer'] = Number.isInteger(responseJSON.articlesCount);", - "", - " if(responseJSON.articles.length){", - " var article = responseJSON.articles[0];", - "", - " tests['Article has \"title\" property'] = article.hasOwnProperty('title');", - " tests['Article has \"slug\" property'] = article.hasOwnProperty('slug');", - " tests['Article has \"body\" property'] = article.hasOwnProperty('body');", - " tests['Article has \"createdAt\" property'] = article.hasOwnProperty('createdAt');", - " tests['Article\\'s \"createdAt\" property is an ISO 8601 timestamp'] = new Date(article.createdAt).toISOString() === article.createdAt;", - " tests['Article has \"updatedAt\" property'] = article.hasOwnProperty('updatedAt');", - " tests['Article\\'s \"updatedAt\" property is an ISO 8601 timestamp'] = new Date(article.updatedAt).toISOString() === article.updatedAt;", - " tests['Article has \"description\" property'] = article.hasOwnProperty('description');", - " tests['Article has \"tagList\" property'] = article.hasOwnProperty('tagList');", - " tests['Article\\'s \"tagList\" property is an Array'] = Array.isArray(article.tagList);", - " tests['Article has \"author\" property'] = article.hasOwnProperty('author');", - " tests['Article has \"favorited\" property'] = article.hasOwnProperty('favorited');", - " tests['Article has \"favoritesCount\" property'] = article.hasOwnProperty('favoritesCount');", - " tests['favoritesCount is an integer'] = Number.isInteger(article.favoritesCount);", - " } else {", - " tests['articlesCount is 0 when feed is empty'] = responseJSON.articlesCount === 0;", - " }", - "}", - "" - ] - } - } - ], - "request": { - "url": { - "raw": "{{apiUrl}}/articles?favorited=jane", - "host": [ - "{{apiUrl}}" - ], - "path": [ - "articles" - ], - "query": [ - { - "key": "favorited", - "value": "jane" - } - ], - "variable": [] - }, - "method": "GET", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "" - }, - { - "key": "X-Requested-With", - "value": "XMLHttpRequest", - "description": "" - } - ], - "body": { - "mode": "raw", - "raw": "" - }, - "description": "" - }, - "response": [] - }, - { - "name": "Articles by Tag", - "event": [ - { - "listen": "test", - "script": { - "type": "text/javascript", - "exec": [ - "var is200Response = responseCode.code === 200;", - "", - "tests['Response code is 200 OK'] = is200Response;", - "", - "if(is200Response){", - " var responseJSON = JSON.parse(responseBody);", - "", - " tests['Response contains \"articles\" property'] = responseJSON.hasOwnProperty('articles');", - " tests['Response contains \"articlesCount\" property'] = responseJSON.hasOwnProperty('articlesCount');", - " tests['articlesCount is an integer'] = Number.isInteger(responseJSON.articlesCount);", - "", - " if(responseJSON.articles.length){", - " var article = responseJSON.articles[0];", - "", - " tests['Article has \"title\" property'] = article.hasOwnProperty('title');", - " tests['Article has \"slug\" property'] = article.hasOwnProperty('slug');", - " tests['Article has \"body\" property'] = article.hasOwnProperty('body');", - " tests['Article has \"createdAt\" property'] = article.hasOwnProperty('createdAt');", - " tests['Article\\'s \"createdAt\" property is an ISO 8601 timestamp'] = new Date(article.createdAt).toISOString() === article.createdAt;", - " tests['Article has \"updatedAt\" property'] = article.hasOwnProperty('updatedAt');", - " tests['Article\\'s \"updatedAt\" property is an ISO 8601 timestamp'] = new Date(article.updatedAt).toISOString() === article.updatedAt;", - " tests['Article has \"description\" property'] = article.hasOwnProperty('description');", - " tests['Article has \"tagList\" property'] = article.hasOwnProperty('tagList');", - " tests['Article\\'s \"tagList\" property is an Array'] = Array.isArray(article.tagList);", - " tests['Article has \"author\" property'] = article.hasOwnProperty('author');", - " tests['Article has \"favorited\" property'] = article.hasOwnProperty('favorited');", - " tests['Article has \"favoritesCount\" property'] = article.hasOwnProperty('favoritesCount');", - " tests['favoritesCount is an integer'] = Number.isInteger(article.favoritesCount);", - " } else {", - " tests['articlesCount is 0 when feed is empty'] = responseJSON.articlesCount === 0;", - " }", - "}", - "" - ] - } - } - ], - "request": { - "url": { - "raw": "{{apiUrl}}/articles?tag=octopus", - "host": [ - "{{apiUrl}}" - ], - "path": [ - "articles" - ], - "query": [ - { - "key": "tag", - "value": "octopus" - } - ], - "variable": [] - }, - "method": "GET", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "" - }, - { - "key": "X-Requested-With", - "value": "XMLHttpRequest", - "description": "" - } - ], - "body": { - "mode": "raw", - "raw": "" - }, - "description": "" - }, - "response": [] - }, - { - "name": "Single Article by slug", - "event": [ - { - "listen": "test", - "script": { - "type": "text/javascript", - "exec": [ - "var responseJSON = JSON.parse(responseBody);", - "", - "tests['Response contains \"article\" property'] = responseJSON.hasOwnProperty('article');", - "", - "var article = responseJSON.article || {};", - "", - "tests['Article has \"title\" property'] = article.hasOwnProperty('title');", - "tests['Article has \"slug\" property'] = article.hasOwnProperty('slug');", - "tests['Article has \"body\" property'] = article.hasOwnProperty('body');", - "tests['Article has \"createdAt\" property'] = article.hasOwnProperty('createdAt');", - "tests['Article\\'s \"createdAt\" property is an ISO 8601 timestamp'] = new Date(article.createdAt).toISOString() === article.createdAt;", - "tests['Article has \"updatedAt\" property'] = article.hasOwnProperty('updatedAt');", - "tests['Article\\'s \"updatedAt\" property is an ISO 8601 timestamp'] = new Date(article.updatedAt).toISOString() === article.updatedAt;", - "tests['Article has \"description\" property'] = article.hasOwnProperty('description');", - "tests['Article has \"tagList\" property'] = article.hasOwnProperty('tagList');", - "tests['Article\\'s \"tagList\" property is an Array'] = Array.isArray(article.tagList);", - "tests['Article has \"author\" property'] = article.hasOwnProperty('author');", - "tests['Article has \"favorited\" property'] = article.hasOwnProperty('favorited');", - "tests['Article has \"favoritesCount\" property'] = article.hasOwnProperty('favoritesCount');", - "tests['favoritesCount is an integer'] = Number.isInteger(article.favoritesCount);", - "" - ] - } - } - ], - "request": { - "url": "{{apiUrl}}/articles/{{slug}}", - "method": "GET", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "" - }, - { - "key": "X-Requested-With", - "value": "XMLHttpRequest", - "description": "" - } - ], - "body": {}, - "description": "" - }, - "response": [] - } - ] - }, - { - "name": "Comments", - "description": "", - "item": [ - { - "name": "All Comments for Article", - "event": [ - { - "listen": "test", - "script": { - "type": "text/javascript", - "exec": [ - "var is200Response = responseCode.code === 200", - "", - "tests['Response code is 200 OK'] = is200Response;", - "", - "if(is200Response){", - " var responseJSON = JSON.parse(responseBody);", - "", - " tests['Response contains \"comments\" property'] = responseJSON.hasOwnProperty('comments');", - "", - " if(responseJSON.comments.length){", - " var comment = responseJSON.comments[0];", - "", - " tests['Comment has \"id\" property'] = comment.hasOwnProperty('id');", - " tests['Comment has \"body\" property'] = comment.hasOwnProperty('body');", - " tests['Comment has \"createdAt\" property'] = comment.hasOwnProperty('createdAt');", - " tests['\"createdAt\" property is an ISO 8601 timestamp'] = new Date(comment.createdAt).toISOString() === comment.createdAt;", - " tests['Comment has \"updatedAt\" property'] = comment.hasOwnProperty('updatedAt');", - " tests['\"updatedAt\" property is an ISO 8601 timestamp'] = new Date(comment.updatedAt).toISOString() === comment.updatedAt;", - " tests['Comment has \"author\" property'] = comment.hasOwnProperty('author');", - " }", - "}", - "" - ] - } - } - ], - "request": { - "url": "{{apiUrl}}/articles/{{slug}}/comments", - "method": "GET", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "" - }, - { - "key": "X-Requested-With", - "value": "XMLHttpRequest", - "description": "" - }, - { - "key": "Authorization", - "value": "Token {{token}}", - "description": "" - } - ], - "body": {}, - "description": "" - }, - "response": [] - }, - { - "name": "Create Comment for Article", - "event": [ - { - "listen": "test", - "script": { - "type": "text/javascript", - "exec": [ - "var responseJSON = JSON.parse(responseBody);", - "", - "tests['Response contains \"comment\" property'] = responseJSON.hasOwnProperty('comment');", - "", - "var comment = responseJSON.comment || {};", - "", - "tests['Comment has \"id\" property'] = comment.hasOwnProperty('id');", - "tests['Comment has \"body\" property'] = comment.hasOwnProperty('body');", - "tests['Comment has \"createdAt\" property'] = comment.hasOwnProperty('createdAt');", - "tests['\"createdAt\" property is an ISO 8601 timestamp'] = new Date(comment.createdAt).toISOString() === comment.createdAt;", - "tests['Comment has \"author\" property'] = comment.hasOwnProperty('author');", - "" - ] - } - } - ], - "request": { - "url": "{{apiUrl}}/articles/{{slug}}/comments", - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "" - }, - { - "key": "X-Requested-With", - "value": "XMLHttpRequest", - "description": "" - }, - { - "key": "Authorization", - "value": "Token {{token}}", - "description": "" - } - ], - "body": { - "mode": "raw", - "raw": "{\"comment\":{\"body\":\"Thank you so much!\"}}" - }, - "description": "" - }, - "response": [] - }, - { - "name": "Delete Comment for Article", - "request": { - "url": "{{apiUrl}}/articles/{{slug}}/comments/1", - "method": "DELETE", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "" - }, - { - "key": "X-Requested-With", - "value": "XMLHttpRequest", - "description": "" - }, - { - "key": "Authorization", - "value": "Token {{token}}", - "description": "" - } - ], - "body": {}, - "description": "" - }, - "response": [] - } - ] - }, - { - "name": "Profiles", - "description": "", - "item": [ - { - "name": "Profile", - "event": [ - { - "listen": "test", - "script": { - "type": "text/javascript", - "exec": [ - "if (!(environment.isIntegrationTest)) {", - "var is200Response = responseCode.code === 200;", - "", - "tests['Response code is 200 OK'] = is200Response;", - "", - "if(is200Response){", - " var responseJSON = JSON.parse(responseBody);", - "", - " tests['Response contains \"profile\" property'] = responseJSON.hasOwnProperty('profile');", - " ", - " var profile = responseJSON.profile || {};", - " ", - " tests['Profile has \"username\" property'] = profile.hasOwnProperty('username');", - " tests['Profile has \"image\" property'] = profile.hasOwnProperty('image');", - " tests['Profile has \"following\" property'] = profile.hasOwnProperty('following');", - "}", - "}", - "" - ] - } - } - ], - "request": { - "url": "{{apiUrl}}/profiles/annehonime", - "method": "GET", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "" - }, - { - "key": "X-Requested-With", - "value": "XMLHttpRequest", - "description": "" - }, - { - "key": "Authorization", - "value": "Token {{token}}", - "description": "" - } - ], - "body": {}, - "description": "" - }, - "response": [] - }, - { - "name": "Follow Profile", - "event": [ - { - "listen": "test", - "script": { - "type": "text/javascript", - "exec": [ - "if (!(environment.isIntegrationTest)) {", - "var is200Response = responseCode.code === 200;", - "", - "tests['Response code is 200 OK'] = is200Response;", - "", - "if(is200Response){", - " var responseJSON = JSON.parse(responseBody);", - "", - " tests['Response contains \"profile\" property'] = responseJSON.hasOwnProperty('profile');", - " ", - " var profile = responseJSON.profile || {};", - " ", - " tests['Profile has \"username\" property'] = profile.hasOwnProperty('username');", - " tests['Profile has \"image\" property'] = profile.hasOwnProperty('image');", - " tests['Profile has \"following\" property'] = profile.hasOwnProperty('following');", - " tests['Profile\\'s \"following\" property is true'] = profile.following === true;", - "}", - "}", - "" - ] - } - } - ], - "request": { - "url": "{{apiUrl}}/profiles/annehonime/follow", - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "" - }, - { - "key": "X-Requested-With", - "value": "XMLHttpRequest", - "description": "" - }, - { - "key": "Authorization", - "value": "Token {{token}}", - "description": "" - } - ], - "body": { - "mode": "raw", - "raw": "{\"user\":{\"email\":\"anne@honime.com\"}}" - }, - "description": "" - }, - "response": [] - }, - { - "name": "Unfollow Profile", - "event": [ - { - "listen": "test", - "script": { - "type": "text/javascript", - "exec": [ - "if (!(environment.isIntegrationTest)) {", - "var is200Response = responseCode.code === 200;", - "", - "tests['Response code is 200 OK'] = is200Response;", - "", - "if(is200Response){", - " var responseJSON = JSON.parse(responseBody);", - "", - " tests['Response contains \"profile\" property'] = responseJSON.hasOwnProperty('profile');", - " ", - " var profile = responseJSON.profile || {};", - " ", - " tests['Profile has \"username\" property'] = profile.hasOwnProperty('username');", - " tests['Profile has \"image\" property'] = profile.hasOwnProperty('image');", - " tests['Profile has \"following\" property'] = profile.hasOwnProperty('following');", - " tests['Profile\\'s \"following\" property is false'] = profile.following === false;", - "}", - "}", - "" - ] - } - } - ], - "request": { - "url": "{{apiUrl}}/profiles/annehonime/follow", - "method": "DELETE", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "" - }, - { - "key": "X-Requested-With", - "value": "XMLHttpRequest", - "description": "" - }, - { - "key": "Authorization", - "value": "Token {{token}}", - "description": "" - } - ], - "body": {}, - "description": "" - }, - "response": [] - } - ] - }, - { - "name": "Tags", - "description": "", - "item": [ - { - "name": "All Tags", - "event": [ - { - "listen": "test", - "script": { - "type": "text/javascript", - "exec": [ - "var is200Response = responseCode.code === 200;", - "", - "tests['Response code is 200 OK'] = is200Response;", - "", - "if(is200Response){", - " var responseJSON = JSON.parse(responseBody);", - " ", - " tests['Response contains \"tags\" property'] = responseJSON.hasOwnProperty('tags');", - " tests['\"tags\" property returned as array'] = Array.isArray(responseJSON.tags);", - "}", - "" - ] - } - } - ], - "request": { - "url": "{{apiUrl}}/tags", - "method": "GET", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "" - }, - { - "key": "X-Requested-With", - "value": "XMLHttpRequest", - "description": "" - } - ], - "body": { - "mode": "raw", - "raw": "" - }, - "description": "" - }, - "response": [] - } - ] - }, - { - "name": "Cleanup", - "description": "", - "item": [ - { - "name": "Delete Article", - "request": { - "url": "{{apiUrl}}/articles/{{slug}}", - "method": "DELETE", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "" - }, - { - "key": "X-Requested-With", - "value": "XMLHttpRequest", - "description": "" - }, - { - "key": "Authorization", - "value": "Token {{token}}", - "description": "" - } - ], - "body": { - "mode": "raw", - "raw": "" - }, - "description": "" - }, - "response": [] - } - ] - } - ] -} \ No newline at end of file diff --git a/tests/env-api-tests.postman.json b/tests/env-api-tests.postman.json deleted file mode 100644 index 58c7de4..0000000 --- a/tests/env-api-tests.postman.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "id": "4aa60b52-97fc-456d-4d4f-14a350e95dff", - "name": "Ad Astra API Tests - Environment", - "values": [ - { - "enabled": true, - "key": "apiUrl", - "value": "http://localhost:3201/api", - "type": "text" - } - ], - "timestamp": 1505871382668, - "_postman_variable_scope": "environment", - "_postman_exported_at": "2017-09-20T01:36:34.835Z", - "_postman_exported_using": "Postman/5.2.0" -} \ No newline at end of file