{ "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":[ ] } ] } ] }