From c832b7f050e1ee727c808d55d06c5eaa5fb9759f Mon Sep 17 00:00:00 2001 From: geromegrignon Date: Mon, 27 Dec 2021 16:30:52 +0100 Subject: [PATCH] fix: rebase repository --- api/Conduit.postman_collection.json | 4214 +++++++++++++-------------- 1 file changed, 1969 insertions(+), 2245 deletions(-) diff --git a/api/Conduit.postman_collection.json b/api/Conduit.postman_collection.json index ff0a23a1f..c0bb7ac38 100644 --- a/api/Conduit.postman_collection.json +++ b/api/Conduit.postman_collection.json @@ -1,2246 +1,1970 @@ { - "info":{ - "_postman_id":"0574ad8a-a525-43ae-8e1e-5fd9756037f4", - "name":"Conduit", - "description":"Collection for testing the Conduit API\n\nhttps://github.com/gothinkster/realworld", - "schema":"https://schema.getpostman.com/json/collection/v2.1.0/collection.json" - }, - "item":[ - { - "name":"Auth", - "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 \"bio\" property'] = user.hasOwnProperty('bio');", - "tests['User has \"image\" property'] = user.hasOwnProperty('image');", - "tests['User has \"token\" property'] = user.hasOwnProperty('token');", - "}", - "" - ] - } - } - ], - "request":{ - "method":"POST", - "header":[ - { - "key":"Content-Type", - "value":"application/json" - }, - { - "key":"X-Requested-With", - "value":"XMLHttpRequest" - } - ], - "body":{ - "mode":"raw", - "raw":"{\"user\":{\"email\":\"{{EMAIL}}\", \"password\":\"{{PASSWORD}}\", \"username\":\"{{USERNAME}}\"}}" - }, - "url":{ - "raw":"{{APIURL}}/users", - "host":[ - "{{APIURL}}" - ], - "path":[ - "users" - ] - } - }, - "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 \"bio\" property'] = user.hasOwnProperty('bio');", - "tests['User has \"image\" property'] = user.hasOwnProperty('image');", - "tests['User has \"token\" property'] = user.hasOwnProperty('token');", - "" - ] - } - } - ], - "request":{ - "method":"POST", - "header":[ - { - "key":"Content-Type", - "value":"application/json" - }, - { - "key":"X-Requested-With", - "value":"XMLHttpRequest" - } - ], - "body":{ - "mode":"raw", - "raw":"{\"user\":{\"email\":\"{{EMAIL}}\", \"password\":\"{{PASSWORD}}\"}}" - }, - "url":{ - "raw":"{{APIURL}}/users/login", - "host":[ - "{{APIURL}}" - ], - "path":[ - "users", - "login" - ] - } - }, - "response":[ - - ] - }, - { - "name":"Login and Remember Token", - "event":[ - { - "listen":"test", - "script":{ - "id":"a7674032-bf09-4ae7-8224-4afa2fb1a9f9", - "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 \"bio\" property'] = user.hasOwnProperty('bio');", - "tests['User has \"image\" property'] = user.hasOwnProperty('image');", - "tests['User has \"token\" property'] = user.hasOwnProperty('token');", - "", - "if(tests['User has \"token\" property']){", - " pm.globals.set('token', user.token);", - "}", - "", - "tests['Global variable \"token\" has been set'] = pm.globals.get('token') === user.token;", - "" - ] - } - } - ], - "request":{ - "method":"POST", - "header":[ - { - "key":"Content-Type", - "value":"application/json" - }, - { - "key":"X-Requested-With", - "value":"XMLHttpRequest" - } - ], - "body":{ - "mode":"raw", - "raw":"{\"user\":{\"email\":\"{{EMAIL}}\", \"password\":\"{{PASSWORD}}\"}}" - }, - "url":{ - "raw":"{{APIURL}}/users/login", - "host":[ - "{{APIURL}}" - ], - "path":[ - "users", - "login" - ] - } - }, - "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 \"bio\" property'] = user.hasOwnProperty('bio');", - "tests['User has \"image\" property'] = user.hasOwnProperty('image');", - "tests['User has \"token\" property'] = user.hasOwnProperty('token');", - "" - ] - } - } - ], - "request":{ - "method":"GET", - "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}}/user", - "host":[ - "{{APIURL}}" - ], - "path":[ - "user" - ] - } - }, - "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 \"bio\" property'] = user.hasOwnProperty('bio');", - "tests['User has \"image\" property'] = user.hasOwnProperty('image');", - "tests['User has \"token\" property'] = user.hasOwnProperty('token');", - "" - ] - } - } - ], - "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\":\"{{EMAIL}}\"}}" - }, - "url":{ - "raw":"{{APIURL}}/user", - "host":[ - "{{APIURL}}" - ], - "path":[ - "user" - ] - } - }, - "response":[ - - ] - } - ] - }, - { - "name":"Articles", - "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'] = /^\\d{4,}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d.\\d+(?:[+-][0-2]\\d:[0-5]\\d|Z)$/.test(article.createdAt);", - " tests['Article has \"updatedAt\" property'] = article.hasOwnProperty('updatedAt');", - " tests['Article\\'s \"updatedAt\" property is an ISO 8601 timestamp'] = /^\\d{4,}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d.\\d+(?:[+-][0-2]\\d:[0-5]\\d|Z)$/.test(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":{ - "method":"GET", - "header":[ - { - "key":"Content-Type", - "value":"application/json" - }, - { - "key":"X-Requested-With", - "value":"XMLHttpRequest" - } - ], - "body":{ - "mode":"raw", - "raw":"" - }, - "url":{ - "raw":"{{APIURL}}/articles", - "host":[ - "{{APIURL}}" - ], - "path":[ - "articles" - ] - } - }, - "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'] = /^\\d{4,}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d.\\d+(?:[+-][0-2]\\d:[0-5]\\d|Z)$/.test(article.createdAt);", - " tests['Article has \"updatedAt\" property'] = article.hasOwnProperty('updatedAt');", - " tests['Article\\'s \"updatedAt\" property is an ISO 8601 timestamp'] = /^\\d{4,}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d.\\d+(?:[+-][0-2]\\d:[0-5]\\d|Z)$/.test(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":{ - "method":"GET", - "header":[ - { - "key":"Content-Type", - "value":"application/json" - }, - { - "key":"X-Requested-With", - "value":"XMLHttpRequest" - } - ], - "body":{ - "mode":"raw", - "raw":"" - }, - "url":{ - "raw":"{{APIURL}}/articles?author=johnjacob", - "host":[ - "{{APIURL}}" - ], - "path":[ - "articles" - ], - "query":[ - { - "key":"author", - "value":"johnjacob" - } - ] - } - }, - "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'] = /^\\d{4,}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d.\\d+(?:[+-][0-2]\\d:[0-5]\\d|Z)$/.test(article.createdAt);", - " tests['Article has \"updatedAt\" property'] = article.hasOwnProperty('updatedAt');", - " tests['Article\\'s \"updatedAt\" property is an ISO 8601 timestamp'] = /^\\d{4,}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d.\\d+(?:[+-][0-2]\\d:[0-5]\\d|Z)$/.test(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":{ - "method":"GET", - "header":[ - { - "key":"Content-Type", - "value":"application/json" - }, - { - "key":"X-Requested-With", - "value":"XMLHttpRequest" - } - ], - "body":{ - "mode":"raw", - "raw":"" - }, - "url":{ - "raw":"{{APIURL}}/articles?favorited={{USERNAME}}", - "host":[ - "{{APIURL}}" - ], - "path":[ - "articles" - ], - "query":[ - { - "key":"favorited", - "value":"{{USERNAME}}" - } - ] - } - }, - "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'] = /^\\d{4,}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d.\\d+(?:[+-][0-2]\\d:[0-5]\\d|Z)$/.test(article.createdAt);", - " tests['Article has \"updatedAt\" property'] = article.hasOwnProperty('updatedAt');", - " tests['Article\\'s \"updatedAt\" property is an ISO 8601 timestamp'] = /^\\d{4,}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d.\\d+(?:[+-][0-2]\\d:[0-5]\\d|Z)$/.test(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":{ - "method":"GET", - "header":[ - { - "key":"Content-Type", - "value":"application/json" - }, - { - "key":"X-Requested-With", - "value":"XMLHttpRequest" - } - ], - "body":{ - "mode":"raw", - "raw":"" - }, - "url":{ - "raw":"{{APIURL}}/articles?tag=dragons", - "host":[ - "{{APIURL}}" - ], - "path":[ - "articles" - ], - "query":[ - { - "key":"tag", - "value":"dragons" - } - ] - } - }, - "response":[ - - ] - } - ] - }, - { - "name":"Articles, Favorite, Comments", - "item":[ - { - "name":"Create Article", - "event":[ - { - "listen":"test", - "script":{ - "id":"e711dbf8-8065-4ba8-8b74-f1639a7d8208", - "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');", - "pm.globals.set('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'] = /^\\d{4,}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d.\\d+(?:[+-][0-2]\\d:[0-5]\\d|Z)$/.test(article.createdAt);", - "tests['Article has \"updatedAt\" property'] = article.hasOwnProperty('updatedAt');", - "tests['Article\\'s \"updatedAt\" property is an ISO 8601 timestamp'] = /^\\d{4,}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d.\\d+(?:[+-][0-2]\\d:[0-5]\\d|Z)$/.test(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":"POST", - "header":[ - { - "key":"Content-Type", - "value":"application/json" - }, - { - "key":"X-Requested-With", - "value":"XMLHttpRequest" - }, - { - "key":"Authorization", - "value":"Token {{token}}" - } - ], - "body":{ - "mode":"raw", - "raw":"{\"article\":{\"title\":\"How to train your dragon\", \"description\":\"Ever wonder how?\", \"body\":\"Very carefully.\", \"tagList\":[\"training\", \"dragons\"]}}" - }, - "url":{ - "raw":"{{APIURL}}/articles", - "host":[ - "{{APIURL}}" - ], - "path":[ - "articles" - ] - } - }, - "response":[ - - ] - }, - { - "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'] = /^\\d{4,}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d.\\d+(?:[+-][0-2]\\d:[0-5]\\d|Z)$/.test(article.createdAt);", - " tests['Article has \"updatedAt\" property'] = article.hasOwnProperty('updatedAt');", - " tests['Article\\'s \"updatedAt\" property is an ISO 8601 timestamp'] = /^\\d{4,}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d.\\d+(?:[+-][0-2]\\d:[0-5]\\d|Z)$/.test(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":{ - "method":"GET", - "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/feed", - "host":[ - "{{APIURL}}" - ], - "path":[ - "articles", - "feed" - ] - } - }, - "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'] = /^\\d{4,}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d.\\d+(?:[+-][0-2]\\d:[0-5]\\d|Z)$/.test(article.createdAt);", - " tests['Article has \"updatedAt\" property'] = article.hasOwnProperty('updatedAt');", - " tests['Article\\'s \"updatedAt\" property is an ISO 8601 timestamp'] = /^\\d{4,}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d.\\d+(?:[+-][0-2]\\d:[0-5]\\d|Z)$/.test(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":{ - "method":"GET", - "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", - "host":[ - "{{APIURL}}" - ], - "path":[ - "articles" - ] - } - }, - "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'] = /^\\d{4,}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d.\\d+(?:[+-][0-2]\\d:[0-5]\\d|Z)$/.test(article.createdAt);", - " tests['Article has \"updatedAt\" property'] = article.hasOwnProperty('updatedAt');", - " tests['Article\\'s \"updatedAt\" property is an ISO 8601 timestamp'] = /^\\d{4,}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d.\\d+(?:[+-][0-2]\\d:[0-5]\\d|Z)$/.test(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":{ - "method":"GET", - "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", - "host":[ - "{{APIURL}}" - ], - "path":[ - "articles" - ] - } - }, - "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'] = /^\\d{4,}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d.\\d+(?:[+-][0-2]\\d:[0-5]\\d|Z)$/.test(article.createdAt);", - " tests['Article has \"updatedAt\" property'] = article.hasOwnProperty('updatedAt');", - " tests['Article\\'s \"updatedAt\" property is an ISO 8601 timestamp'] = /^\\d{4,}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d.\\d+(?:[+-][0-2]\\d:[0-5]\\d|Z)$/.test(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":{ - "method":"GET", - "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?author={{USERNAME}}", - "host":[ - "{{APIURL}}" - ], - "path":[ - "articles" - ], - "query":[ - { - "key":"author", - "value":"{{USERNAME}}" - } - ] - } - }, - "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'] = /^\\d{4,}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d.\\d+(?:[+-][0-2]\\d:[0-5]\\d|Z)$/.test(article.createdAt);", - " tests['Article has \"updatedAt\" property'] = article.hasOwnProperty('updatedAt');", - " tests['Article\\'s \"updatedAt\" property is an ISO 8601 timestamp'] = /^\\d{4,}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d.\\d+(?:[+-][0-2]\\d:[0-5]\\d|Z)$/.test(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":{ - "method":"GET", - "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?author={{USERNAME}}", - "host":[ - "{{APIURL}}" - ], - "path":[ - "articles" - ], - "query":[ - { - "key":"author", - "value":"{{USERNAME}}" - } - ] - } - }, - "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'] = /^\\d{4,}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d.\\d+(?:[+-][0-2]\\d:[0-5]\\d|Z)$/.test(article.createdAt);", - "tests['Article has \"updatedAt\" property'] = article.hasOwnProperty('updatedAt');", - "tests['Article\\'s \"updatedAt\" property is an ISO 8601 timestamp'] = /^\\d{4,}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d.\\d+(?:[+-][0-2]\\d:[0-5]\\d|Z)$/.test(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":"GET", - "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":[ - - ] - }, - { - "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);", - " var article = responseJSON.articles[0];", - " tests['An article was returned'] = article !== undefined;", - " 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'] = /^\\d{4,}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d.\\d+(?:[+-][0-2]\\d:[0-5]\\d|Z)$/.test(article.createdAt);", - " tests['Article has \"updatedAt\" property'] = article.hasOwnProperty('updatedAt');", - " tests['Article\\'s \"updatedAt\" property is an ISO 8601 timestamp'] = /^\\d{4,}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d.\\d+(?:[+-][0-2]\\d:[0-5]\\d|Z)$/.test(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['The first tag is dragons'] = article.tagList[0] === 'dragons';", - " tests['The second tag is training'] = article.tagList[1] === 'training';", - " 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":"GET", - "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?tag=dragons", - "host":[ - "{{APIURL}}" - ], - "path":[ - "articles" - ], - "query":[ - { - "key":"tag", - "value":"dragons" - } - ] - } - }, - "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'] = /^\\d{4,}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d.\\d+(?:[+-][0-2]\\d:[0-5]\\d|Z)$/.test(article.createdAt);", - "tests['Article has \"updatedAt\" property'] = article.hasOwnProperty('updatedAt');", - "tests['Article\\'s \"updatedAt\" property is an ISO 8601 timestamp'] = /^\\d{4,}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d.\\d+(?:[+-][0-2]\\d:[0-5]\\d|Z)$/.test(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'] = /^\\d{4,}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d.\\d+(?:[+-][0-2]\\d:[0-5]\\d|Z)$/.test(article.createdAt);", - "tests['Article has \"updatedAt\" property'] = article.hasOwnProperty('updatedAt');", - "tests['Article\\'s \"updatedAt\" property is an ISO 8601 timestamp'] = /^\\d{4,}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d.\\d+(?:[+-][0-2]\\d:[0-5]\\d|Z)$/.test(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":"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);", - " article = responseJSON.articles[0];", - " 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);", - " 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'] = /^\\d{4,}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d.\\d+(?:[+-][0-2]\\d:[0-5]\\d|Z)$/.test(article.createdAt);", - " tests['Article has \"updatedAt\" property'] = article.hasOwnProperty('updatedAt');", - " tests['Article\\'s \"updatedAt\" property is an ISO 8601 timestamp'] = /^\\d{4,}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d.\\d+(?:[+-][0-2]\\d:[0-5]\\d|Z)$/.test(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 1'] = article.favoritesCount === 1;", - "}", - "" - ] - } - } - ], - "request":{ - "method":"GET", - "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?favorited={{USERNAME}}", - "host":[ - "{{APIURL}}" - ], - "path":[ - "articles" - ], - "query":[ - { - "key":"favorited", - "value":"{{USERNAME}}" - } - ] - } - }, - "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);", - " article = responseJSON.articles[0];", - " 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);", - " 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'] = /^\\d{4,}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d.\\d+(?:[+-][0-2]\\d:[0-5]\\d|Z)$/.test(article.createdAt);", - " tests['Article has \"updatedAt\" property'] = article.hasOwnProperty('updatedAt');", - " tests['Article\\'s \"updatedAt\" property is an ISO 8601 timestamp'] = /^\\d{4,}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d.\\d+(?:[+-][0-2]\\d:[0-5]\\d|Z)$/.test(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 1'] = article.favoritesCount === 1;", - "}", - "" - ] - } - } - ], - "request":{ - "method":"GET", - "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?favorited={{USERNAME}}", - "host":[ - "{{APIURL}}" - ], - "path":[ - "articles" - ], - "query":[ - { - "key":"favorited", - "value":"{{USERNAME}}" - } - ] - } - }, - "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'] = /^\\d{4,}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d.\\d+(?:[+-][0-2]\\d:[0-5]\\d|Z)$/.test(article.createdAt);", - "tests['Article has \"updatedAt\" property'] = article.hasOwnProperty('updatedAt');", - "tests['Article\\'s \"updatedAt\" property is an ISO 8601 timestamp'] = /^\\d{4,}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d.\\d+(?:[+-][0-2]\\d:[0-5]\\d|Z)$/.test(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 false\"] = 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":"Create Comment for Article", - "event":[ - { - "listen":"test", - "script":{ - "id":"9f90c364-cc68-4728-961a-85eb00197d7b", - "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');", - "pm.globals.set('commentId', comment.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'] = /^\\d{4,}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d.\\d+(?:[+-][0-2]\\d:[0-5]\\d|Z)$/.test(comment.createdAt);", - "tests['Comment has \"updatedAt\" property'] = comment.hasOwnProperty('updatedAt');", - "tests['\"updatedAt\" property is an ISO 8601 timestamp'] = /^\\d{4,}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d.\\d+(?:[+-][0-2]\\d:[0-5]\\d|Z)$/.test(comment.updatedAt);", - "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":"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'] = /^\\d{4,}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d.\\d+(?:[+-][0-2]\\d:[0-5]\\d|Z)$/.test(comment.createdAt);", - " tests['Comment has \"updatedAt\" property'] = comment.hasOwnProperty('updatedAt');", - " tests['\"updatedAt\" property is an ISO 8601 timestamp'] = /^\\d{4,}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d.\\d+(?:[+-][0-2]\\d:[0-5]\\d|Z)$/.test(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}}" - } - ], - "body":{ - "mode":"raw", - "raw":"" - }, - "url":{ - "raw":"{{APIURL}}/articles/{{slug}}/comments", - "host":[ - "{{APIURL}}" - ], - "path":[ - "articles", - "{{slug}}", - "comments" - ] - } - }, - "response":[ - - ] - }, - { - "name":"All Comments for Article without login", - "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'] = /^\\d{4,}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d.\\d+(?:[+-][0-2]\\d:[0-5]\\d|Z)$/.test(comment.createdAt);", - " tests['Comment has \"updatedAt\" property'] = comment.hasOwnProperty('updatedAt');", - " tests['\"updatedAt\" property is an ISO 8601 timestamp'] = /^\\d{4,}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d.\\d+(?:[+-][0-2]\\d:[0-5]\\d|Z)$/.test(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" - } - ], - "body":{ - "mode":"raw", - "raw":"" - }, - "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}}" - } - ], - "body":{ - "mode":"raw", - "raw":"" - }, - "url":{ - "raw":"{{APIURL}}/articles/{{slug}}/comments/{{commentId}}", - "host":[ - "{{APIURL}}" - ], - "path":[ - "articles", - "{{slug}}", - "comments", - "{{commentId}}" - ] - } - }, - "response":[ - - ] - }, - { - "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":[ - - ] - } - ], - "event":[ - { - "listen":"prerequest", - "script":{ - "id":"67853a4a-e972-4573-a295-dad12a46a9d7", - "type":"text/javascript", - "exec":[ - "" - ] - } - }, - { - "listen":"test", - "script":{ - "id":"3057f989-15e4-484e-b8fa-a041043d0ac0", - "type":"text/javascript", - "exec":[ - "" - ] - } - } - ] - }, - { - "name":"Profiles", - "item":[ - { - "name":"Register Celeb", - "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 \"bio\" property'] = user.hasOwnProperty('bio');", - "tests['User has \"image\" property'] = user.hasOwnProperty('image');", - "tests['User has \"token\" property'] = user.hasOwnProperty('token');", - "}", - "" - ] - } - } - ], - "request":{ - "method":"POST", - "header":[ - { - "key":"Content-Type", - "value":"application/json" - }, - { - "key":"X-Requested-With", - "value":"XMLHttpRequest" - } - ], - "body":{ - "mode":"raw", - "raw":"{\"user\":{\"email\":\"celeb_{{EMAIL}}\", \"password\":\"{{PASSWORD}}\", \"username\":\"celeb_{{USERNAME}}\"}}" - }, - "url":{ - "raw":"{{APIURL}}/users", - "host":[ - "{{APIURL}}" - ], - "path":[ - "users" - ] - } - }, - "response":[ - - ] - }, - { - "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 \"bio\" property'] = profile.hasOwnProperty('bio');", - " tests['Profile has \"image\" property'] = profile.hasOwnProperty('image');", - " tests['Profile has \"following\" property'] = profile.hasOwnProperty('following');", - "}", - "}", - "" - ] - } - } - ], - "request":{ - "method":"GET", - "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}}/profiles/celeb_{{USERNAME}}", - "host":[ - "{{APIURL}}" - ], - "path":[ - "profiles", - "celeb_{{USERNAME}}" - ] - } - }, - "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 \"bio\" property'] = profile.hasOwnProperty('bio');", - " 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":{ - "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\":\"{{EMAIL}}\"}}" - }, - "url":{ - "raw":"{{APIURL}}/profiles/celeb_{{USERNAME}}/follow", - "host":[ - "{{APIURL}}" - ], - "path":[ - "profiles", - "celeb_{{USERNAME}}", - "follow" - ] - } - }, - "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 \"bio\" property'] = profile.hasOwnProperty('bio');", - " 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":{ - "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}}/profiles/celeb_{{USERNAME}}/follow", - "host":[ - "{{APIURL}}" - ], - "path":[ - "profiles", - "celeb_{{USERNAME}}", - "follow" - ] - } - }, - "response":[ - - ] - } - ] - }, - { - "name":"Tags", - "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":{ - "method":"GET", - "header":[ - { - "key":"Content-Type", - "value":"application/json" - }, - { - "key":"X-Requested-With", - "value":"XMLHttpRequest" - } - ], - "body":{ - "mode":"raw", - "raw":"" - }, - "url":{ - "raw":"{{APIURL}}/tags", - "host":[ - "{{APIURL}}" - ], - "path":[ - "tags" - ] - } - }, - "response":[ - - ] - } - ] - } - ] -} + "info": { + "_postman_id": "f82baca8-9943-4519-89d2-7a5dde3b7f9b", + "name": "Conduit", + "description": "Collection for testing the Conduit API\n\nhttps://github.com/gothinkster/realworld", + "schema": "https://schema.getpostman.com/json/collection/v2.0.0/collection.json" + }, + "item": [ + { + "name": "Auth", + "item": [ + { + "name": "Register", + "event": [ + { + "listen": "test", + "script": { + "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 \"bio\" property'] = user.hasOwnProperty('bio');", + "tests['User has \"image\" property'] = user.hasOwnProperty('image');", + "tests['User has \"token\" property'] = user.hasOwnProperty('token');", + "}", + "" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-Requested-With", + "value": "XMLHttpRequest" + } + ], + "body": { + "mode": "raw", + "raw": "{\"user\":{\"email\":\"{{EMAIL}}\", \"password\":\"{{PASSWORD}}\", \"username\":\"{{USERNAME}}\"}}" + }, + "url": "{{APIURL}}/users" + }, + "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 \"bio\" property'] = user.hasOwnProperty('bio');", + "tests['User has \"image\" property'] = user.hasOwnProperty('image');", + "tests['User has \"token\" property'] = user.hasOwnProperty('token');", + "" + ] + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-Requested-With", + "value": "XMLHttpRequest" + } + ], + "body": { + "mode": "raw", + "raw": "{\"user\":{\"email\":\"{{EMAIL}}\", \"password\":\"{{PASSWORD}}\"}}" + }, + "url": "{{APIURL}}/users/login" + }, + "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 \"bio\" property'] = user.hasOwnProperty('bio');", + "tests['User has \"image\" property'] = user.hasOwnProperty('image');", + "tests['User has \"token\" property'] = user.hasOwnProperty('token');", + "", + "if(tests['User has \"token\" property']){", + " pm.globals.set('token', user.token);", + "}", + "", + "tests['Global variable \"token\" has been set'] = pm.globals.get('token') === user.token;", + "" + ] + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-Requested-With", + "value": "XMLHttpRequest" + } + ], + "body": { + "mode": "raw", + "raw": "{\"user\":{\"email\":\"{{EMAIL}}\", \"password\":\"{{PASSWORD}}\"}}" + }, + "url": "{{APIURL}}/users/login" + }, + "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 \"bio\" property'] = user.hasOwnProperty('bio');", + "tests['User has \"image\" property'] = user.hasOwnProperty('image');", + "tests['User has \"token\" property'] = user.hasOwnProperty('token');", + "" + ] + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-Requested-With", + "value": "XMLHttpRequest" + }, + { + "key": "Authorization", + "value": "Token {{token}}" + } + ], + "url": "{{APIURL}}/user" + }, + "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 \"bio\" property'] = user.hasOwnProperty('bio');", + "tests['User has \"image\" property'] = user.hasOwnProperty('image');", + "tests['User has \"token\" property'] = user.hasOwnProperty('token');", + "" + ] + } + } + ], + "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\":\"{{EMAIL}}\"}}" + }, + "url": "{{APIURL}}/user" + }, + "response": [] + } + ] + }, + { + "name": "Articles", + "item": [ + { + "name": "All Articles", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "var is200Response = responseCode.code === 200;", + "", + "tests['Response code is 200 OK'] = is200Response;", + "", + "if(is200Response){", + " var responseJSON = JSON.parse(responseBody);", + "", + " var is_iso8601 = (s => RegExp(pm.globals.get(\"iso8601_pattern\")).test(s));", + "", + " 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'] = is_iso8601(article.createdAt);", + " tests['Article has \"updatedAt\" property'] = article.hasOwnProperty('updatedAt');", + " tests['Article\\'s \"updatedAt\" property is an ISO 8601 timestamp'] = is_iso8601(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;", + " }", + "}", + "" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-Requested-With", + "value": "XMLHttpRequest" + } + ], + "url": "{{APIURL}}/articles" + }, + "response": [] + }, + { + "name": "Articles by Author", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "var is200Response = responseCode.code === 200;", + "", + "tests['Response code is 200 OK'] = is200Response;", + "", + "if(is200Response){", + " var responseJSON = JSON.parse(responseBody);", + "", + " var is_iso8601 = (s => RegExp(pm.globals.get(\"iso8601_pattern\")).test(s));", + "", + " 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'] = is_iso8601(article.createdAt);", + " tests['Article has \"updatedAt\" property'] = article.hasOwnProperty('updatedAt');", + " tests['Article\\'s \"updatedAt\" property is an ISO 8601 timestamp'] = is_iso8601(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;", + " }", + "}", + "" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-Requested-With", + "value": "XMLHttpRequest" + } + ], + "url": { + "raw": "{{APIURL}}/articles?author=johnjacob", + "host": [ + "{{APIURL}}" + ], + "path": [ + "articles" + ], + "query": [ + { + "key": "author", + "value": "johnjacob" + } + ] + } + }, + "response": [] + }, + { + "name": "Articles Favorited by Username", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "var is200Response = responseCode.code === 200;", + "", + "tests['Response code is 200 OK'] = is200Response;", + "", + "if(is200Response){", + " var responseJSON = JSON.parse(responseBody);", + "", + " var is_iso8601 = (s => RegExp(pm.globals.get(\"iso8601_pattern\")).test(s));", + " ", + " 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'] = is_iso8601(article.createdAt);", + " tests['Article has \"updatedAt\" property'] = article.hasOwnProperty('updatedAt');", + " tests['Article\\'s \"updatedAt\" property is an ISO 8601 timestamp'] = is_iso8601(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;", + " }", + "}", + "" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-Requested-With", + "value": "XMLHttpRequest" + } + ], + "url": { + "raw": "{{APIURL}}/articles?favorited={{USERNAME}}", + "host": [ + "{{APIURL}}" + ], + "path": [ + "articles" + ], + "query": [ + { + "key": "favorited", + "value": "{{USERNAME}}" + } + ] + } + }, + "response": [] + }, + { + "name": "Articles by Tag", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "var is200Response = responseCode.code === 200;", + "", + "tests['Response code is 200 OK'] = is200Response;", + "", + "if(is200Response){", + " var responseJSON = JSON.parse(responseBody);", + "", + " var is_iso8601 = (s => RegExp(pm.globals.get(\"iso8601_pattern\")).test(s));", + "", + " 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'] = is_iso8601(article.createdAt);", + " tests['Article has \"updatedAt\" property'] = article.hasOwnProperty('updatedAt');", + " tests['Article\\'s \"updatedAt\" property is an ISO 8601 timestamp'] = is_iso8601(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;", + " }", + "}", + "" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-Requested-With", + "value": "XMLHttpRequest" + } + ], + "url": { + "raw": "{{APIURL}}/articles?tag=dragons", + "host": [ + "{{APIURL}}" + ], + "path": [ + "articles" + ], + "query": [ + { + "key": "tag", + "value": "dragons" + } + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Articles, Favorite, Comments", + "item": [ + { + "name": "Create Article", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "var responseJSON = JSON.parse(responseBody);", + "", + "var is_iso8601 = (s => RegExp(pm.globals.get(\"iso8601_pattern\")).test(s));", + "", + "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');", + "pm.globals.set('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'] = is_iso8601(article.createdAt);", + "tests['Article has \"updatedAt\" property'] = article.hasOwnProperty('updatedAt');", + "tests['Article\\'s \"updatedAt\" property is an ISO 8601 timestamp'] = is_iso8601(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);", + "" + ], + "type": "text/javascript" + } + } + ], + "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": "{\"article\":{\"title\":\"How to train your dragon\", \"description\":\"Ever wonder how?\", \"body\":\"Very carefully.\", \"tagList\":[\"training\", \"dragons\"]}}" + }, + "url": "{{APIURL}}/articles" + }, + "response": [] + }, + { + "name": "Feed", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "var is200Response = responseCode.code === 200;", + "", + "tests['Response code is 200 OK'] = is200Response;", + "", + "if(is200Response){", + " var responseJSON = JSON.parse(responseBody);", + "", + " var is_iso8601 = (s => RegExp(pm.globals.get(\"iso8601_pattern\")).test(s));", + "", + " 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'] = is_iso8601(article.createdAt);", + " tests['Article has \"updatedAt\" property'] = article.hasOwnProperty('updatedAt');", + " tests['Article\\'s \"updatedAt\" property is an ISO 8601 timestamp'] = is_iso8601(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;", + " }", + "}", + "" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-Requested-With", + "value": "XMLHttpRequest" + }, + { + "key": "Authorization", + "value": "Token {{token}}" + } + ], + "url": "{{APIURL}}/articles/feed" + }, + "response": [] + }, + { + "name": "All Articles", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "var is200Response = responseCode.code === 200;", + "", + "tests['Response code is 200 OK'] = is200Response;", + "", + "if(is200Response){", + " var responseJSON = JSON.parse(responseBody);", + "", + " var is_iso8601 = (s => RegExp(pm.globals.get(\"iso8601_pattern\")).test(s));", + "", + " 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'] = is_iso8601(article.createdAt);", + " tests['Article has \"updatedAt\" property'] = article.hasOwnProperty('updatedAt');", + " tests['Article\\'s \"updatedAt\" property is an ISO 8601 timestamp'] = is_iso8601(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;", + " }", + "}", + "" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-Requested-With", + "value": "XMLHttpRequest" + }, + { + "key": "Authorization", + "value": "Token {{token}}" + } + ], + "url": "{{APIURL}}/articles" + }, + "response": [] + }, + { + "name": "All Articles with auth", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "var is200Response = responseCode.code === 200;", + "", + "tests['Response code is 200 OK'] = is200Response;", + "", + "if(is200Response){", + " var responseJSON = JSON.parse(responseBody);", + "", + " var is_iso8601 = (s => RegExp(pm.globals.get(\"iso8601_pattern\")).test(s));", + "", + " 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'] = is_iso8601(article.createdAt);", + " tests['Article has \"updatedAt\" property'] = article.hasOwnProperty('updatedAt');", + " tests['Article\\'s \"updatedAt\" property is an ISO 8601 timestamp'] = is_iso8601(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;", + " }", + "}", + "" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-Requested-With", + "value": "XMLHttpRequest" + }, + { + "key": "Authorization", + "value": "Token {{token}}" + } + ], + "url": "{{APIURL}}/articles" + }, + "response": [] + }, + { + "name": "Articles by Author", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "var is200Response = responseCode.code === 200;", + "", + "tests['Response code is 200 OK'] = is200Response;", + "", + "if(is200Response){", + " var responseJSON = JSON.parse(responseBody);", + "", + " var is_iso8601 = (s => RegExp(pm.globals.get(\"iso8601_pattern\")).test(s));", + "", + " 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'] = is_iso8601(article.createdAt);", + " tests['Article has \"updatedAt\" property'] = article.hasOwnProperty('updatedAt');", + " tests['Article\\'s \"updatedAt\" property is an ISO 8601 timestamp'] = is_iso8601(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;", + " }", + "}", + "" + ], + "type": "text/javascript" + } + } + ], + "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={{USERNAME}}", + "host": [ + "{{APIURL}}" + ], + "path": [ + "articles" + ], + "query": [ + { + "key": "author", + "value": "{{USERNAME}}" + } + ] + } + }, + "response": [] + }, + { + "name": "Articles by Author with auth", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "var is200Response = responseCode.code === 200;", + "", + "tests['Response code is 200 OK'] = is200Response;", + "", + "if(is200Response){", + " var responseJSON = JSON.parse(responseBody);", + "", + " var is_iso8601 = (s => RegExp(pm.globals.get(\"iso8601_pattern\")).test(s));", + "", + " 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'] = is_iso8601(article.createdAt);", + " tests['Article has \"updatedAt\" property'] = article.hasOwnProperty('updatedAt');", + " tests['Article\\'s \"updatedAt\" property is an ISO 8601 timestamp'] = is_iso8601(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;", + " }", + "}", + "" + ], + "type": "text/javascript" + } + } + ], + "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={{USERNAME}}", + "host": [ + "{{APIURL}}" + ], + "path": [ + "articles" + ], + "query": [ + { + "key": "author", + "value": "{{USERNAME}}" + } + ] + } + }, + "response": [] + }, + { + "name": "Single Article by slug", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "var responseJSON = JSON.parse(responseBody);", + "", + "tests['Response contains \"article\" property'] = responseJSON.hasOwnProperty('article');", + "", + "var article = responseJSON.article || {};", + "", + "var is_iso8601 = (s => RegExp(pm.globals.get(\"iso8601_pattern\")).test(s));", + "", + "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'] = is_iso8601(article.createdAt);", + "tests['Article has \"updatedAt\" property'] = article.hasOwnProperty('updatedAt');", + "tests['Article\\'s \"updatedAt\" property is an ISO 8601 timestamp'] = is_iso8601(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);", + "" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-Requested-With", + "value": "XMLHttpRequest" + }, + { + "key": "Authorization", + "value": "Token {{token}}" + } + ], + "url": "{{APIURL}}/articles/{{slug}}" + }, + "response": [] + }, + { + "name": "Articles by Tag", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "var is200Response = responseCode.code === 200;", + "", + "tests['Response code is 200 OK'] = is200Response;", + "", + "if(is200Response){", + " var responseJSON = JSON.parse(responseBody);", + "", + " var is_iso8601 = (s => RegExp(pm.globals.get(\"iso8601_pattern\")).test(s));", + "", + " 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);", + " var article = responseJSON.articles[0];", + " tests['An article was returned'] = article !== undefined;", + " 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'] = is_iso8601(article.createdAt);", + " tests['Article has \"updatedAt\" property'] = article.hasOwnProperty('updatedAt');", + " tests['Article\\'s \"updatedAt\" property is an ISO 8601 timestamp'] = is_iso8601(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['The first tag is dragons'] = article.tagList[0] === 'dragons';", + " tests['The second tag is training'] = article.tagList[1] === 'training';", + " 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);", + "}", + "" + ], + "type": "text/javascript" + } + } + ], + "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=dragons", + "host": [ + "{{APIURL}}" + ], + "path": [ + "articles" + ], + "query": [ + { + "key": "tag", + "value": "dragons" + } + ] + } + }, + "response": [] + }, + { + "name": "Update Article", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "if (!(environment.isIntegrationTest)) {", + "var responseJSON = JSON.parse(responseBody);", + "", + "tests['Response contains \"article\" property'] = responseJSON.hasOwnProperty('article');", + "", + "var article = responseJSON.article || {};", + "", + "var is_iso8601 = (s => RegExp(pm.globals.get(\"iso8601_pattern\")).test(s));", + "", + "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'] = is_iso8601(article.createdAt);", + "tests['Article has \"updatedAt\" property'] = article.hasOwnProperty('updatedAt');", + "tests['Article\\'s \"updatedAt\" property is an ISO 8601 timestamp'] = is_iso8601(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);", + "}", + "" + ], + "type": "text/javascript" + } + } + ], + "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": "{{APIURL}}/articles/{{slug}}" + }, + "response": [] + }, + { + "name": "Favorite Article", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "var responseJSON = JSON.parse(responseBody);", + "", + "tests['Response contains \"article\" property'] = responseJSON.hasOwnProperty('article');", + "", + "var article = responseJSON.article || {};", + "", + "var is_iso8601 = (s => RegExp(pm.globals.get(\"iso8601_pattern\")).test(s));", + "", + "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'] = is_iso8601(article.createdAt);", + "tests['Article has \"updatedAt\" property'] = article.hasOwnProperty('updatedAt');", + "tests['Article\\'s \"updatedAt\" property is an ISO 8601 timestamp'] = is_iso8601(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;", + "" + ], + "type": "text/javascript" + } + } + ], + "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": "{{APIURL}}/articles/{{slug}}/favorite" + }, + "response": [] + }, + { + "name": "Articles Favorited by Username", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "var is200Response = responseCode.code === 200;", + "", + "tests['Response code is 200 OK'] = is200Response;", + "", + "if(is200Response){", + " var responseJSON = JSON.parse(responseBody);", + "", + " var is_iso8601 = (s => RegExp(pm.globals.get(\"iso8601_pattern\")).test(s));", + "", + " article = responseJSON.articles[0];", + " 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);", + " 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'] = is_iso8601(article.createdAt);", + " tests['Article has \"updatedAt\" property'] = article.hasOwnProperty('updatedAt');", + " tests['Article\\'s \"updatedAt\" property is an ISO 8601 timestamp'] = is_iso8601(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 1'] = article.favoritesCount === 1;", + "}", + "" + ], + "type": "text/javascript" + } + } + ], + "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={{USERNAME}}", + "host": [ + "{{APIURL}}" + ], + "path": [ + "articles" + ], + "query": [ + { + "key": "favorited", + "value": "{{USERNAME}}" + } + ] + } + }, + "response": [] + }, + { + "name": "Articles Favorited by Username with auth", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "var is200Response = responseCode.code === 200;", + "", + "tests['Response code is 200 OK'] = is200Response;", + "", + "if(is200Response){", + " var responseJSON = JSON.parse(responseBody);", + "", + " var is_iso8601 = (s => RegExp(pm.globals.get(\"iso8601_pattern\")).test(s));", + "", + " article = responseJSON.articles[0];", + " 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);", + " 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'] = is_iso8601(article.createdAt);", + " tests['Article has \"updatedAt\" property'] = article.hasOwnProperty('updatedAt');", + " tests['Article\\'s \"updatedAt\" property is an ISO 8601 timestamp'] = is_iso8601(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 1'] = article.favoritesCount === 1;", + "}", + "" + ], + "type": "text/javascript" + } + } + ], + "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={{USERNAME}}", + "host": [ + "{{APIURL}}" + ], + "path": [ + "articles" + ], + "query": [ + { + "key": "favorited", + "value": "{{USERNAME}}" + } + ] + } + }, + "response": [] + }, + { + "name": "Unfavorite Article", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "var responseJSON = JSON.parse(responseBody);", + "", + "tests['Response contains \"article\" property'] = responseJSON.hasOwnProperty('article');", + "", + "var article = responseJSON.article || {};", + "", + "var is_iso8601 = (s => RegExp(pm.globals.get(\"iso8601_pattern\")).test(s));", + "", + "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'] = is_iso8601(article.createdAt);", + "tests['Article has \"updatedAt\" property'] = article.hasOwnProperty('updatedAt');", + "tests['Article\\'s \"updatedAt\" property is an ISO 8601 timestamp'] = is_iso8601(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 false\"] = article.favorited === false;", + "" + ], + "type": "text/javascript" + } + } + ], + "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": "{{APIURL}}/articles/{{slug}}/favorite" + }, + "response": [] + }, + { + "name": "Create Comment for Article", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "var responseJSON = JSON.parse(responseBody);", + "", + "tests['Response contains \"comment\" property'] = responseJSON.hasOwnProperty('comment');", + "", + "var comment = responseJSON.comment || {};", + "", + "var is_iso8601 = (s => RegExp(pm.globals.get(\"iso8601_pattern\")).test(s));", + "", + "tests['Comment has \"id\" property'] = comment.hasOwnProperty('id');", + "pm.globals.set('commentId', comment.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'] = is_iso8601(comment.createdAt);", + "tests['Comment has \"updatedAt\" property'] = comment.hasOwnProperty('updatedAt');", + "tests['\"updatedAt\" property is an ISO 8601 timestamp'] = is_iso8601(comment.updatedAt);", + "tests['Comment has \"author\" property'] = comment.hasOwnProperty('author');", + "" + ], + "type": "text/javascript" + } + } + ], + "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": "{{APIURL}}/articles/{{slug}}/comments" + }, + "response": [] + }, + { + "name": "All Comments for Article", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "var is200Response = responseCode.code === 200", + "", + "tests['Response code is 200 OK'] = is200Response;", + "", + "if(is200Response){", + " var responseJSON = JSON.parse(responseBody);", + "", + " var is_iso8601 = (s => RegExp(pm.globals.get(\"iso8601_pattern\")).test(s));", + "", + " 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'] = is_iso8601(comment.createdAt);", + " tests['Comment has \"updatedAt\" property'] = comment.hasOwnProperty('updatedAt');", + " tests['\"updatedAt\" property is an ISO 8601 timestamp'] = is_iso8601(comment.updatedAt);", + " tests['Comment has \"author\" property'] = comment.hasOwnProperty('author');", + " }", + "}", + "" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-Requested-With", + "value": "XMLHttpRequest" + }, + { + "key": "Authorization", + "value": "Token {{token}}" + } + ], + "url": "{{APIURL}}/articles/{{slug}}/comments" + }, + "response": [] + }, + { + "name": "All Comments for Article without login", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "var is200Response = responseCode.code === 200", + "", + "tests['Response code is 200 OK'] = is200Response;", + "", + "if(is200Response){", + " var responseJSON = JSON.parse(responseBody);", + "", + " var is_iso8601 = (s => RegExp(pm.globals.get(\"iso8601_pattern\")).test(s));", + "", + " 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'] = is_iso8601(comment.createdAt);", + " tests['Comment has \"updatedAt\" property'] = comment.hasOwnProperty('updatedAt');", + " tests['\"updatedAt\" property is an ISO 8601 timestamp'] = is_iso8601(comment.updatedAt);", + " tests['Comment has \"author\" property'] = comment.hasOwnProperty('author');", + " }", + "}", + "" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-Requested-With", + "value": "XMLHttpRequest" + } + ], + "url": "{{APIURL}}/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}}" + } + ], + "body": { + "mode": "raw", + "raw": "" + }, + "url": "{{APIURL}}/articles/{{slug}}/comments/{{commentId}}" + }, + "response": [] + }, + { + "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": "{{APIURL}}/articles/{{slug}}" + }, + "response": [] + } + ], + "event": [ + { + "listen": "prerequest", + "script": { + "type": "text/javascript", + "exec": [ + "" + ] + } + }, + { + "listen": "test", + "script": { + "type": "text/javascript", + "exec": [ + "" + ] + } + } + ] + }, + { + "name": "Profiles", + "item": [ + { + "name": "Register Celeb", + "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 \"bio\" property'] = user.hasOwnProperty('bio');", + "tests['User has \"image\" property'] = user.hasOwnProperty('image');", + "tests['User has \"token\" property'] = user.hasOwnProperty('token');", + "}", + "" + ] + } + } + ], + "request": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-Requested-With", + "value": "XMLHttpRequest" + } + ], + "body": { + "mode": "raw", + "raw": "{\"user\":{\"email\":\"celeb_{{EMAIL}}\", \"password\":\"{{PASSWORD}}\", \"username\":\"celeb_{{USERNAME}}\"}}" + }, + "url": "{{APIURL}}/users" + }, + "response": [] + }, + { + "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 \"bio\" property'] = profile.hasOwnProperty('bio');", + " tests['Profile has \"image\" property'] = profile.hasOwnProperty('image');", + " tests['Profile has \"following\" property'] = profile.hasOwnProperty('following');", + "}", + "}", + "" + ] + } + } + ], + "request": { + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-Requested-With", + "value": "XMLHttpRequest" + }, + { + "key": "Authorization", + "value": "Token {{token}}" + } + ], + "url": "{{APIURL}}/profiles/celeb_{{USERNAME}}" + }, + "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 \"bio\" property'] = profile.hasOwnProperty('bio');", + " 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": { + "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\":\"{{EMAIL}}\"}}" + }, + "url": "{{APIURL}}/profiles/celeb_{{USERNAME}}/follow" + }, + "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 \"bio\" property'] = profile.hasOwnProperty('bio');", + " 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": { + "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": "{{APIURL}}/profiles/celeb_{{USERNAME}}/follow" + }, + "response": [] + } + ] + }, + { + "name": "Tags", + "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": { + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "X-Requested-With", + "value": "XMLHttpRequest" + } + ], + "url": "{{APIURL}}/tags" + }, + "response": [] + } + ] + } + ], + "event": [ + { + "listen": "prerequest", + "script": { + "type": "text/javascript", + "exec": [ + "pm.globals.set(\"iso8601_pattern\", \"^(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]|0[1-9])-(3[01]|0[1-9]|[12][0-9])T(2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])(\\\\.[0-9]+)?(Z|[+-](?:2[0-3]|[01][0-9]):[0-5][0-9])?$\");" + ] + } + }, + { + "listen": "test", + "script": { + "type": "text/javascript", + "exec": [ + "" + ] + } + } + ], + "variable": [ + { + "key": "APIURL", + "value": "https://api.realworld.io/api" + }, + { + "key": "USERNAME", + "value": "ggrignon1234" + }, + { + "key": "PASSWORD", + "value": "123456" + }, + { + "key": "EMAIL", + "value": "ggrignon1234@gmail.com" + } + ] +} \ No newline at end of file