-
Notifications
You must be signed in to change notification settings - Fork 0
/
client.js
210 lines (194 loc) · 6.88 KB
/
client.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
"StAuth10222: I Nenad Skocic, 000107650 certify that this material is my original work. No other person's work has been used without due acknowledgement. I have not made my work available to anyone else."
const axios = require('axios');
const { response } = require('express');
/* TEST #1.1
Execute two POST requests to insert two items into the collection.
*/
const postMovie = {
title: 'Harry Potter and the Philosophers Stone',
release_year: '1997'
}
const postMovie2 = {
title: 'Harry Potter and the Chamber of Secrets',
release_year: '1998'
}
async function testOneOne() {
try {
// Concurrent HTTP requests
await axios.all([
await axios.post('http://localhost:3000/api', postMovie),
await axios.post('http://localhost:3000/api', postMovie2)
])
console.log("TEST 1.1 - INSERTED ITEM #1: ", JSON.stringify(postMovie));
console.log("TEST 1.1 - INSERTED ITEM #2: ", JSON.stringify(postMovie2));
} catch (error) {
console.error(error);
}
}
/* TEST #1.2
Execute a single item PUT request to modify a single item in the collection.
*/
const putMovieModify = {
title: 'Harry Potter and the Prisoner of Azkaban',
release_year: '1999'
}
async function testOneTwo() {
try {
// MODIFIES item on row 2 with new Movie item
axios.put('http://localhost:3000/api/2', putMovieModify);
console.log("\nTEST 1.2 - ITEM MODIFIED SUCCESSFULLY, ITEM ADDED: ", JSON.stringify(putMovieModify), "\n");
} catch (error) {
console.error(error);
}
}
/* TEST #1.3
Execute two separate item GET requests to check if each item inserted is correct
*/
async function testOneThree() {
try {
const response1 = await axios.get('http://localhost:3000/api/1');
const response2 = await axios.get('http://localhost:3000/api/2');
// New array created, item results from map added to variables
let resp1Title = response1.data.map(a => a.title);
let resp1Year = response1.data.map(a => a.release_year);
let resp2Title = response2.data.map(a => a.title);
let resp2Year = response2.data.map(a => a.release_year);
// Checks if both responses are array's and if there are 1 item being searched by each request.
if(Array.isArray(response1.data && response2.data) && ((response1.data.length == 1) && (response2.data.length == 1))) {
// Converts arrays to strings and compares to the items in the COLLECTION (After Test #1.1 & Test #1.2 runs)
if((resp1Title.toString() === 'Harry Potter and the Philosophers Stone' && resp1Year.toString() === '1997') && (resp2Title.toString() === 'Harry Potter and the Prisoner of Azkaban' && resp2Year.toString() === '1999')) {
console.log("TEST 1.3 - EACH ITEM INSERTED IN COLLECTION IS CORRECT");
} else {
console.log("TEST 1.3 - ITEMS INSERTED DO NOT MATCH!");
}
} else {
// No data is found
console.log("TEST 1.3 - INSERTION FAILURE!");
}
} catch (error) {
console.error(error);
}
}
/* TEST #2.1
Execute a single collection PUT request that replaces the collection with 4 new items.
*/
// 4 movie arrays to be added to the COLLECTION
const putMovie = {
title: 'Harry Potter and the Goblet of Fire',
release_year: '2000'
}
const putMovie2 = {
title: 'Harry Potter and the Order of the Phoenix',
release_year: '2003'
}
const putMovie3 = {
title: 'Harry Potter and the Half-Blood Prince',
release_year: '2005'
}
const putMovie4= {
title: 'Harry Potter and the Deathly Hallows',
release_year: '2007'
}
async function testTwoOne() {
try {
//Concurrent HTTP requests
await axios.all([
axios.put('http://localhost:3000/api', putMovie),
axios.put('http://localhost:3000/api', putMovie2),
axios.put('http://localhost:3000/api', putMovie3),
axios.put('http://localhost:3000/api', putMovie4)
])
console.log("\nTEST 2.1 - 4 ITEMS ADDED SUCCESSFULLY: \n", "1-", JSON.stringify(putMovie), "\n", "2-", JSON.stringify(putMovie2), "\n", "3-", JSON.stringify(putMovie3), "\n", "4-", JSON.stringify(putMovie4), "\n");
} catch (error) {
console.error(error);
}
}
/* TEST #2.2
Execute a single collection GET request to check if all the items are correct.
*/
async function testTwoTwo() {
try {
const response = await axios.get('http://localhost:3000/api');
//Expected 4 items in array
if(response.data.length == 4) {
console.log("TEST 2.2 - ALL ITEMS ARE CORRECT");
} else {
console.log("TEST 2.2 - ITEMS ARE INCORRECT");
}
} catch (error) {
console.error(error);
}
}
/* TEST #2.3
Execute a single item DELETE request to delete a single item from the collection.
*/
async function testTwoThree() {
try {
await axios.delete('http://localhost:3000/api/4');
console.log("\nTEST 2.3 - ITEM DELETED on ROW 4\n");
} catch (error) {
console.error(error);
}
}
/* TEST #2.4
Execute a single collection GET request to check if all the items are correct (3 items).
*/
async function testTwoFour() {
try {
const response = await axios.get('http://localhost:3000/api');
//Exactly 3 items in array
if(response.data.length == 3) {
console.log("TEST 2.4 - ALL ITEMS ARE CORRECT");
} else {
console.log("TEST 2.4 - ITEMS ARE INCORRECT!");
}
} catch (error) {
console.error(error);
}
}
/* TEST #2.5
Execute a single collection DELETE request to delete the entire collection.
*/
async function testTwoFive() {
try {
const response = await axios.delete('http://localhost:3000/api');
console.log("\nTEST 2.5 - COLLECTION DELETED: ", response.data, "\n");
} catch (error) {
console.error(error);
}
}
/* TEST #2.6
Execute a single collection GET request to check if the collection is empty.
*/
async function testTwoSix() {
try {
const response = await axios.get('http://localhost:3000/api');
//No data in array
if(response.data.length == 0) {
console.log("TEST 2.6 - COLLECTION IS *EMPTY*");
} else {
console.log("TEST 2.6 - ITEMS FOUND IN COLLECTION!");
}
} catch (error) {
console.error(error);
}
}
// Main test function for async sub-functions
async function TEST() {
try {
await testOneOne();
await testOneTwo();
await testOneThree();
await testTwoOne();
await testTwoTwo();
await testTwoThree();
await testTwoFour();
await testTwoFive();
await testTwoSix();
} catch (error) {
console.error(error);
}
console.log("\nALL TESTS SUCCESSFUL");
}
// Call main test function
TEST();