java-filmorate

Форк
0
/
sprint.json 
5181 строка · 145.4 Кб
1
{
2
	"info": {
3
		"_postman_id": "8ed6b8f0-1e77-445f-8736-87dd5f364b51",
4
		"name": "add-database",
5
		"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
6
		"_exporter_id": "23073145",
7
		"_collection_link": "https://universal-shadow-295426.postman.co/workspace/My-Workspace~4200f6aa-0504-44b1-8a1d-707d0dcbd5ce/collection/23073145-8ed6b8f0-1e77-445f-8736-87dd5f364b51?action=share&source=collection_link&creator=23073145"
8
	},
9
	"item": [
10
		{
11
			"name": "users",
12
			"item": [
13
				{
14
					"name": "User create",
15
					"event": [
16
						{
17
							"listen": "test",
18
							"script": {
19
								"exec": [
20
									"const source = JSON.parse(pm.request.body.raw)\r",
21
									"\r",
22
									"pm.test(\"Status code is 200 or 201\", function () {\r",
23
									"    pm.expect(pm.response.code).to.be.oneOf([200,201]);\r",
24
									"});\r",
25
									"pm.test(\"Has user create response\", function () {\r",
26
									"    pm.response.to.be.withBody;\r",
27
									"    pm.response.to.be.json;\r",
28
									"});\r",
29
									"pm.test(\"Test user 'id' field\", function () {\r",
30
									"    var jsonData = pm.response.json();\r",
31
									"    pm.expect(jsonData).to.have.property('id');\r",
32
									"});\r",
33
									"pm.test(\"Test user 'email' field\", function () {\r",
34
									"    var jsonData = pm.response.json();\r",
35
									"    pm.expect(jsonData).to.have.property('email');\r",
36
									"    pm.expect(jsonData.email, `\"email\" must be \"${source.mail}\"`).to.eql(source.email);\r",
37
									"});\r",
38
									"pm.test(\"Test user 'name' field\", function () {\r",
39
									"    var jsonData = pm.response.json();\r",
40
									"    pm.expect(jsonData).to.have.property('name');\r",
41
									"    pm.expect(jsonData.name, `\"name\" must be \"${source.name}\"`).to.eql(source.name);\r",
42
									"});\r",
43
									"pm.test(\"Test user 'login' field\", function () {\r",
44
									"    var jsonData = pm.response.json();\r",
45
									"    pm.expect(jsonData).to.have.property('login');\r",
46
									"    pm.expect(jsonData.login, `\"login\" field must be \"${source.login}\"`).to.eql(source.login);    \r",
47
									"});\r",
48
									"pm.test(\"Test user 'birthday' field\", function () {\r",
49
									"    var jsonData = pm.response.json();\r",
50
									"    pm.expect(jsonData).to.have.property('birthday');\r",
51
									"    pm.expect(jsonData.birthday, `\"birthday\" field must be \"${source.birthday}\"`).to.eql(source.birthday);\r",
52
									"});"
53
								],
54
								"type": "text/javascript"
55
							}
56
						},
57
						{
58
							"listen": "prerequest",
59
							"script": {
60
								"exec": [
61
									"const main = async () => {\r",
62
									"    const api = new API(pm);\r",
63
									"    const rnd = new RandomUtils();\r",
64
									"\r",
65
									"    let user;\r",
66
									"    try {\r",
67
									"        user = rnd.getUser();\r",
68
									"    } catch(err) {\r",
69
									"        console.error(\"Ошибка при подготовке тестовых данных.\", err);\r",
70
									"    }\r",
71
									"\r",
72
									"    pm.request.body.update({\r",
73
									"        mode: 'raw',\r",
74
									"        raw: JSON.stringify(user),\r",
75
									"        options: { raw: { language: 'json' } }\r",
76
									"    });\r",
77
									"};\r",
78
									"\r",
79
									"const interval = setInterval(() => {}, 1000);\r",
80
									"\r",
81
									"setTimeout(async () => \r",
82
									"    {\r",
83
									"        try {\r",
84
									"            await main();\r",
85
									"        } catch (e) {\r",
86
									"            console.error(e);\r",
87
									"        } finally {\r",
88
									"            clearInterval(interval);\r",
89
									"        }\r",
90
									"    },  \r",
91
									"    100 \r",
92
									");"
93
								],
94
								"type": "text/javascript"
95
							}
96
						}
97
					],
98
					"request": {
99
						"method": "POST",
100
						"header": [
101
							{
102
								"key": "Content-Type",
103
								"value": "application/json"
104
							},
105
							{
106
								"key": "Accept",
107
								"value": "*/*"
108
							}
109
						],
110
						"body": {
111
							"mode": "raw",
112
							"raw": "{\n  \"login\": \"dolore\",\n  \"name\": \"Nick Name\",\n  \"email\": \"mail@mail.ru\",\n  \"birthday\": \"1946-08-20\"\n}",
113
							"options": {
114
								"raw": {
115
									"language": "json"
116
								}
117
							}
118
						},
119
						"url": {
120
							"raw": "{{baseUrl}}/users",
121
							"host": [
122
								"{{baseUrl}}"
123
							],
124
							"path": [
125
								"users"
126
							]
127
						}
128
					},
129
					"response": []
130
				},
131
				{
132
					"name": "User create Fail login",
133
					"event": [
134
						{
135
							"listen": "test",
136
							"script": {
137
								"exec": [
138
									"pm.test(\"Status code is 400\", function () {\r",
139
									"     pm.expect(pm.response.code).to.be.equal(400);\r",
140
									"});\r",
141
									"pm.test(\"Has error response\", function () {\r",
142
									"    pm.response.to.be.withBody;\r",
143
									"    pm.response.to.be.json;\r",
144
									"});\r",
145
									""
146
								],
147
								"type": "text/javascript",
148
								"packages": {}
149
							}
150
						}
151
					],
152
					"request": {
153
						"method": "POST",
154
						"header": [
155
							{
156
								"key": "Content-Type",
157
								"value": "application/json"
158
							},
159
							{
160
								"key": "Accept",
161
								"value": "*/*"
162
							}
163
						],
164
						"body": {
165
							"mode": "raw",
166
							"raw": "{\n  \"login\": \"dolore ullamco\",\n  \"email\": \"yandex@mail.ru\",\n  \"birthday\": \"2446-08-20\"\n}",
167
							"options": {
168
								"raw": {
169
									"language": "json"
170
								}
171
							}
172
						},
173
						"url": {
174
							"raw": "{{baseUrl}}/users",
175
							"host": [
176
								"{{baseUrl}}"
177
							],
178
							"path": [
179
								"users"
180
							]
181
						}
182
					},
183
					"response": []
184
				},
185
				{
186
					"name": "User create Fail email",
187
					"event": [
188
						{
189
							"listen": "test",
190
							"script": {
191
								"exec": [
192
									"pm.test(\"Status code is 400\", function () {\r",
193
									"     pm.expect(pm.response.code).to.be.equal(400);\r",
194
									"});\r",
195
									"pm.test(\"Has error response\", function () {\r",
196
									"    pm.response.to.be.withBody;\r",
197
									"    pm.response.to.be.json;\r",
198
									"});"
199
								],
200
								"type": "text/javascript",
201
								"packages": {}
202
							}
203
						}
204
					],
205
					"request": {
206
						"method": "POST",
207
						"header": [
208
							{
209
								"key": "Content-Type",
210
								"value": "application/json"
211
							},
212
							{
213
								"key": "Accept",
214
								"value": "*/*"
215
							}
216
						],
217
						"body": {
218
							"mode": "raw",
219
							"raw": "{\n  \"login\": \"dolore ullamco\",\n  \"name\": \"\",\n  \"email\": \"mail.ru\",\n  \"birthday\": \"1980-08-20\"\n}",
220
							"options": {
221
								"raw": {
222
									"language": "json"
223
								}
224
							}
225
						},
226
						"url": {
227
							"raw": "{{baseUrl}}/users",
228
							"host": [
229
								"{{baseUrl}}"
230
							],
231
							"path": [
232
								"users"
233
							]
234
						}
235
					},
236
					"response": []
237
				},
238
				{
239
					"name": "User create Fail birthday",
240
					"event": [
241
						{
242
							"listen": "test",
243
							"script": {
244
								"exec": [
245
									"pm.test(\"Status code is 400\", function () {\r",
246
									"     pm.expect(pm.response.code).to.be.equal(400);\r",
247
									"});\r",
248
									"pm.test(\"Has error response\", function () {\r",
249
									"    pm.response.to.be.withBody;\r",
250
									"    pm.response.to.be.json;\r",
251
									"});"
252
								],
253
								"type": "text/javascript",
254
								"packages": {}
255
							}
256
						}
257
					],
258
					"request": {
259
						"method": "POST",
260
						"header": [
261
							{
262
								"key": "Content-Type",
263
								"value": "application/json"
264
							},
265
							{
266
								"key": "Accept",
267
								"value": "*/*"
268
							}
269
						],
270
						"body": {
271
							"mode": "raw",
272
							"raw": "{\n  \"login\": \"dolore\",\n  \"name\": \"\",\n  \"email\": \"test@mail.ru\",\n  \"birthday\": \"2446-08-20\"\n}",
273
							"options": {
274
								"raw": {
275
									"language": "json"
276
								}
277
							}
278
						},
279
						"url": {
280
							"raw": "{{baseUrl}}/users",
281
							"host": [
282
								"{{baseUrl}}"
283
							],
284
							"path": [
285
								"users"
286
							]
287
						}
288
					},
289
					"response": []
290
				},
291
				{
292
					"name": "User update",
293
					"event": [
294
						{
295
							"listen": "test",
296
							"script": {
297
								"exec": [
298
									"const source = pm.collectionVariables.get(\"user\")\r",
299
									"const new_user_info = pm.collectionVariables.get(\"new_user_info\");\r",
300
									"\r",
301
									"pm.test(\"Status code is 200\", function () {\r",
302
									"    pm.response.to.be.ok;\r",
303
									"});\r",
304
									"pm.test(\"Has user update response\", function () {\r",
305
									"    pm.response.to.be.withBody;\r",
306
									"    pm.response.to.be.json;\r",
307
									"});\r",
308
									"pm.test(\"Test user 'id' field\", function () {\r",
309
									"    var jsonData = pm.response.json();\r",
310
									"    pm.expect(jsonData).to.have.property('id');\r",
311
									"    pm.expect(jsonData.id, `\"id\" must be ${source.id}`).to.eql(source.id);\r",
312
									"});\r",
313
									"pm.test(\"Test user 'email' field\", function () {\r",
314
									"    var jsonData = pm.response.json();\r",
315
									"    pm.expect(jsonData).to.have.property('email');\r",
316
									"    pm.expect(jsonData.email, `\"email\" must be \"${new_user_info.email}\"`).to.eql(new_user_info.email);\r",
317
									"});\r",
318
									"pm.test(\"Test user 'name' field\", function () {\r",
319
									"    var jsonData = pm.response.json();\r",
320
									"    pm.expect(jsonData).to.have.property('name');\r",
321
									"    pm.expect(jsonData.name, `\"name\" must be \"${new_user_info.name}\"`).to.eql(new_user_info.name);\r",
322
									"});\r",
323
									"pm.test(\"Test user 'login' field\", function () {\r",
324
									"    var jsonData = pm.response.json();\r",
325
									"    pm.expect(jsonData).to.have.property('login');\r",
326
									"    pm.expect(jsonData.login, `\"login\" field must be \"${new_user_info.login}\"`).to.eql(new_user_info.login);    \r",
327
									"});\r",
328
									"pm.test(\"Test user 'birthday' field\", function () {\r",
329
									"    var jsonData = pm.response.json();\r",
330
									"    pm.expect(jsonData).to.have.property('birthday');\r",
331
									"    pm.expect(jsonData.birthday, `\"birthday\" field must be \"${new_user_info.birthday}\"`).to.eql(new_user_info.birthday);\r",
332
									"});"
333
								],
334
								"type": "text/javascript"
335
							}
336
						},
337
						{
338
							"listen": "prerequest",
339
							"script": {
340
								"exec": [
341
									"const main = async () => {\r",
342
									"    const api = new API(pm);\r",
343
									"    const rnd = new RandomUtils();\r",
344
									"\r",
345
									"    let user;\r",
346
									"    try {\r",
347
									"        user = await api.addUser(rnd.getUser());\r",
348
									"        pm.collectionVariables.set(\"user\", user);\r",
349
									"    } catch(err) {\r",
350
									"        console.error(\"Ошибка при подготовке тестовых данных.\", err);\r",
351
									"    }\r",
352
									"\r",
353
									"    let new_user_info = rnd.getUser();\r",
354
									"    pm.collectionVariables.set(\"new_user_info\", new_user_info);\r",
355
									"    new_user_info[\"id\"] = user.id;\r",
356
									"\r",
357
									"    pm.request.body.update({\r",
358
									"        mode: 'raw',\r",
359
									"        raw: JSON.stringify(new_user_info),\r",
360
									"        options: { raw: { language: 'json' } }\r",
361
									"    });\r",
362
									"\r",
363
									"};\r",
364
									"\r",
365
									"const interval = setInterval(() => {}, 1000);\r",
366
									"\r",
367
									"setTimeout(async () => \r",
368
									"    {\r",
369
									"        try {\r",
370
									"            await main();\r",
371
									"        } catch (e) {\r",
372
									"            console.error(e);\r",
373
									"        } finally {\r",
374
									"            clearInterval(interval);\r",
375
									"        }\r",
376
									"    },  \r",
377
									"    100 \r",
378
									");"
379
								],
380
								"type": "text/javascript"
381
							}
382
						}
383
					],
384
					"request": {
385
						"method": "PUT",
386
						"header": [
387
							{
388
								"key": "Content-Type",
389
								"value": "application/json"
390
							},
391
							{
392
								"key": "Accept",
393
								"value": "*/*"
394
							}
395
						],
396
						"body": {
397
							"mode": "raw",
398
							"raw": "",
399
							"options": {
400
								"raw": {
401
									"language": "json"
402
								}
403
							}
404
						},
405
						"url": {
406
							"raw": "{{baseUrl}}/users",
407
							"host": [
408
								"{{baseUrl}}"
409
							],
410
							"path": [
411
								"users"
412
							]
413
						}
414
					},
415
					"response": []
416
				},
417
				{
418
					"name": "User update unknown",
419
					"event": [
420
						{
421
							"listen": "test",
422
							"script": {
423
								"exec": [
424
									"pm.test(\"Status code is 404\", function () {\r",
425
									"    pm.expect(pm.response.code).to.be.equal(404);\r",
426
									"});\r",
427
									"pm.test(\"Has error response\", function () {\r",
428
									"    pm.response.to.be.withBody;\r",
429
									"    pm.response.to.be.json;\r",
430
									"});"
431
								],
432
								"type": "text/javascript",
433
								"packages": {}
434
							}
435
						},
436
						{
437
							"listen": "prerequest",
438
							"script": {
439
								"exec": [
440
									"const main = async () => {\r",
441
									"    const api = new API(pm);\r",
442
									"    const rnd = new RandomUtils();\r",
443
									"\r",
444
									"    let user;\r",
445
									"    try {\r",
446
									"        user = await api.addUser(rnd.getUser());\r",
447
									"        pm.collectionVariables.set(\"user\", user);\r",
448
									"    } catch(err) {\r",
449
									"        console.error(\"Ошибка при подготовке тестовых данных.\", err);\r",
450
									"    }\r",
451
									"\r",
452
									"    pm.request.body.update({\r",
453
									"        mode: 'raw',\r",
454
									"        raw: JSON.stringify({\r",
455
									"            \"login\": \"doloreUpdate\",\r",
456
									"            \"name\": \"est adipisicing\",\r",
457
									"            \"id\": user.id+1,\r",
458
									"            \"email\": \"mail@yandex.ru\",\r",
459
									"            \"birthday\": \"1976-09-20\"\r",
460
									"            }),\r",
461
									"        options: { raw: { language: 'json' } }\r",
462
									"    });\r",
463
									"\r",
464
									"};\r",
465
									"\r",
466
									"const interval = setInterval(() => {}, 1000);\r",
467
									"\r",
468
									"setTimeout(async () => \r",
469
									"    {\r",
470
									"        try {\r",
471
									"            await main();\r",
472
									"        } catch (e) {\r",
473
									"            console.error(e);\r",
474
									"        } finally {\r",
475
									"            clearInterval(interval);\r",
476
									"        }\r",
477
									"    },  \r",
478
									"    100 \r",
479
									");"
480
								],
481
								"type": "text/javascript",
482
								"packages": {}
483
							}
484
						}
485
					],
486
					"request": {
487
						"method": "PUT",
488
						"header": [
489
							{
490
								"key": "Content-Type",
491
								"value": "application/json"
492
							},
493
							{
494
								"key": "Accept",
495
								"value": "*/*"
496
							}
497
						],
498
						"body": {
499
							"mode": "raw",
500
							"raw": "{\n  \"login\": \"doloreUpdate\",\n  \"name\": \"est adipisicing\",\n  \"id\": 9999,\n  \"email\": \"mail@yandex.ru\",\n  \"birthday\": \"1976-09-20\"\n}",
501
							"options": {
502
								"raw": {
503
									"language": "json"
504
								}
505
							}
506
						},
507
						"url": {
508
							"raw": "{{baseUrl}}/users",
509
							"host": [
510
								"{{baseUrl}}"
511
							],
512
							"path": [
513
								"users"
514
							]
515
						}
516
					},
517
					"response": []
518
				},
519
				{
520
					"name": "User get All",
521
					"event": [
522
						{
523
							"listen": "test",
524
							"script": {
525
								"exec": [
526
									"pm.test(\"Status code is 200\", function () {\r",
527
									"    pm.response.to.be.ok;\r",
528
									"});\r",
529
									"pm.test(\"Test list user response\", function () {\r",
530
									"    pm.response.to.be.withBody;\r",
531
									"    pm.response.to.be.json;\r",
532
									"});\r",
533
									"pm.test(\"Test user[0] 'id' field\", function () {\r",
534
									"    var jsonData = pm.response.json();\r",
535
									"    pm.expect(jsonData[0]).to.have.property('id');\r",
536
									"    pm.expect(jsonData[0].id, '\"id\" must be 1').to.eql(1);\r",
537
									"});\r",
538
									""
539
								],
540
								"type": "text/javascript"
541
							}
542
						}
543
					],
544
					"request": {
545
						"method": "GET",
546
						"header": [
547
							{
548
								"key": "Accept",
549
								"value": "*/*"
550
							}
551
						],
552
						"url": {
553
							"raw": "{{baseUrl}}/users",
554
							"host": [
555
								"{{baseUrl}}"
556
							],
557
							"path": [
558
								"users"
559
							]
560
						}
561
					},
562
					"response": []
563
				}
564
			]
565
		},
566
		{
567
			"name": "friends",
568
			"item": [
569
				{
570
					"name": "Friend add",
571
					"event": [
572
						{
573
							"listen": "test",
574
							"script": {
575
								"exec": [
576
									"const user1_id = pm.collectionVariables.get(\"id\");\r",
577
									"const user2_id = pm.collectionVariables.get(\"friend_id\");\r",
578
									"\r",
579
									"pm.test(\"Status code is 200\", function () {\r",
580
									"    pm.expect(pm.response.code).to.be.oneOf([200,204]);\r",
581
									"});\r",
582
									"\r",
583
									"pm.sendRequest({\r",
584
									"    url : \"http://localhost:8080/users/\" + user1_id + '/friends',\r",
585
									"    method : \"GET\",\r",
586
									"    header: { \"Content-Type\": \"application/json\" }\r",
587
									"}, (error, response) => {\r",
588
									"    pm.test(\"user1 has user2 friend\", function () {\r",
589
									"        pm.expect(response.json()[0].id).to.be.equal(user2_id);\r",
590
									"    });\r",
591
									"});\r",
592
									"\r",
593
									"pm.sendRequest({\r",
594
									"    url : \"http://localhost:8080/users/\" + user2_id + '/friends',\r",
595
									"    method : \"GET\",\r",
596
									"    header: { \"Content-Type\": \"application/json\" }\r",
597
									"}, (error, response) => {\r",
598
									"    pm.test(\"user2 doesn't have user1 friend\", function () {\r",
599
									"        pm.expect(response.json().length).to.be.equal(0);\r",
600
									"    });\r",
601
									"});\r",
602
									""
603
								],
604
								"type": "text/javascript"
605
							}
606
						},
607
						{
608
							"listen": "prerequest",
609
							"script": {
610
								"exec": [
611
									"const main = async () => {\r",
612
									"    const api = new API(pm);\r",
613
									"    const rnd = new RandomUtils();\r",
614
									"\r",
615
									"    let user1, user2;\r",
616
									"    try {\r",
617
									"        user1 = await api.addUser(rnd.getUser());\r",
618
									"        user2 = await api.addUser(rnd.getUser());\r",
619
									"        pm.collectionVariables.set(\"id\", user1.id);\r",
620
									"        pm.collectionVariables.set(\"friend_id\", user2.id);\r",
621
									"    } catch(err) {\r",
622
									"        console.error(\"Ошибка при подготовке тестовых данных.\", err);\r",
623
									"    }\r",
624
									"\r",
625
									"};\r",
626
									"\r",
627
									"const interval = setInterval(() => {}, 1000);\r",
628
									"\r",
629
									"setTimeout(async () => \r",
630
									"    {\r",
631
									"        try {\r",
632
									"            await main();\r",
633
									"        } catch (e) {\r",
634
									"            console.error(e);\r",
635
									"        } finally {\r",
636
									"            clearInterval(interval);\r",
637
									"        }\r",
638
									"    },  \r",
639
									"    100 \r",
640
									");"
641
								],
642
								"type": "text/javascript"
643
							}
644
						}
645
					],
646
					"request": {
647
						"method": "PUT",
648
						"header": [
649
							{
650
								"key": "Content-Type",
651
								"value": "application/json"
652
							},
653
							{
654
								"key": "Accept",
655
								"value": "*/*"
656
							}
657
						],
658
						"body": {
659
							"mode": "raw",
660
							"raw": "",
661
							"options": {
662
								"raw": {
663
									"language": "json"
664
								}
665
							}
666
						},
667
						"url": {
668
							"raw": "{{baseUrl}}/users/{{id}}/friends/{{friend_id}}",
669
							"host": [
670
								"{{baseUrl}}"
671
							],
672
							"path": [
673
								"users",
674
								"{{id}}",
675
								"friends",
676
								"{{friend_id}}"
677
							]
678
						}
679
					},
680
					"response": []
681
				},
682
				{
683
					"name": "Friend add unknown id",
684
					"event": [
685
						{
686
							"listen": "test",
687
							"script": {
688
								"exec": [
689
									"pm.test(\"Status code is 404\", function () {\r",
690
									"    pm.expect(pm.response.code).to.be.equal(404);\r",
691
									"});\r",
692
									"\r",
693
									"pm.test(\"Has error response\", function () {\r",
694
									"    pm.response.to.be.withBody;\r",
695
									"    pm.response.to.be.json;\r",
696
									"});"
697
								],
698
								"type": "text/javascript",
699
								"packages": {}
700
							}
701
						},
702
						{
703
							"listen": "prerequest",
704
							"script": {
705
								"exec": [
706
									"const main = async () => {\r",
707
									"    const api = new API(pm);\r",
708
									"    const rnd = new RandomUtils();\r",
709
									"\r",
710
									"    let user1, user2;\r",
711
									"    try {\r",
712
									"        user1 = await api.addUser(rnd.getUser());\r",
713
									"        user2 = await api.addUser(rnd.getUser());\r",
714
									"        pm.collectionVariables.set(\"id\", user1.id);\r",
715
									"        pm.collectionVariables.set(\"friend_id\", user2.id+1);\r",
716
									"    } catch(err) {\r",
717
									"        console.error(\"Ошибка при подготовке тестовых данных.\", err);\r",
718
									"    }\r",
719
									"\r",
720
									"};\r",
721
									"\r",
722
									"const interval = setInterval(() => {}, 1000);\r",
723
									"\r",
724
									"setTimeout(async () => \r",
725
									"    {\r",
726
									"        try {\r",
727
									"            await main();\r",
728
									"        } catch (e) {\r",
729
									"            console.error(e);\r",
730
									"        } finally {\r",
731
									"            clearInterval(interval);\r",
732
									"        }\r",
733
									"    },  \r",
734
									"    100 \r",
735
									");"
736
								],
737
								"type": "text/javascript",
738
								"packages": {}
739
							}
740
						}
741
					],
742
					"request": {
743
						"method": "PUT",
744
						"header": [
745
							{
746
								"key": "Content-Type",
747
								"value": "application/json"
748
							},
749
							{
750
								"key": "Accept",
751
								"value": "*/*"
752
							}
753
						],
754
						"body": {
755
							"mode": "raw",
756
							"raw": "",
757
							"options": {
758
								"raw": {
759
									"language": "json"
760
								}
761
							}
762
						},
763
						"url": {
764
							"raw": "{{baseUrl}}/users/{{id}}/friends/{{friend_id}}",
765
							"host": [
766
								"{{baseUrl}}"
767
							],
768
							"path": [
769
								"users",
770
								"{{id}}",
771
								"friends",
772
								"{{friend_id}}"
773
							]
774
						}
775
					},
776
					"response": []
777
				},
778
				{
779
					"name": "Friend get",
780
					"event": [
781
						{
782
							"listen": "test",
783
							"script": {
784
								"exec": [
785
									"const user_friends = pm.collectionVariables.get(\"user_friends\");\r",
786
									"\r",
787
									"pm.test(\"Status code is 200\", function () {\r",
788
									"    pm.expect(pm.response.code).to.be.oneOf([200,204]);\r",
789
									"});\r",
790
									"\r",
791
									"pm.test(\"initially user1 should have 0 friends\", function () {\r",
792
									"    pm.expect(user_friends.length).to.be.equal(0);\r",
793
									"});\r",
794
									"\r",
795
									"pm.test(\"finally user1 should have 1 friend\", function () {\r",
796
									"    pm.expect(pm.response.json().length).to.be.equal(1);\r",
797
									"});"
798
								],
799
								"type": "text/javascript"
800
							}
801
						},
802
						{
803
							"listen": "prerequest",
804
							"script": {
805
								"exec": [
806
									"const main = async () => {\r",
807
									"    const api = new API(pm);\r",
808
									"    const rnd = new RandomUtils();\r",
809
									"\r",
810
									"    let user1, user2, user1_friends;\r",
811
									"    try {\r",
812
									"        user1 = await api.addUser(rnd.getUser());\r",
813
									"        user2 = await api.addUser(rnd.getUser());\r",
814
									"        user1_friends = await api.getFriends(user1.id);\r",
815
									"        await api.addFriend(user1.id, user2.id);\r",
816
									"        pm.collectionVariables.set(\"id\", user1.id);\r",
817
									"        pm.collectionVariables.set(\"user_friends\", user1_friends);\r",
818
									"    } catch(err) {\r",
819
									"        console.error(\"Ошибка при подготовке тестовых данных.\", err);\r",
820
									"    }\r",
821
									"\r",
822
									"};\r",
823
									"\r",
824
									"const interval = setInterval(() => {}, 1000);\r",
825
									"\r",
826
									"setTimeout(async () => \r",
827
									"    {\r",
828
									"        try {\r",
829
									"            await main();\r",
830
									"        } catch (e) {\r",
831
									"            console.error(e);\r",
832
									"        } finally {\r",
833
									"            clearInterval(interval);\r",
834
									"        }\r",
835
									"    },  \r",
836
									"    100 \r",
837
									");"
838
								],
839
								"type": "text/javascript"
840
							}
841
						}
842
					],
843
					"protocolProfileBehavior": {
844
						"disableBodyPruning": true
845
					},
846
					"request": {
847
						"method": "GET",
848
						"header": [
849
							{
850
								"key": "Content-Type",
851
								"value": "application/json"
852
							},
853
							{
854
								"key": "Accept",
855
								"value": "*/*"
856
							}
857
						],
858
						"body": {
859
							"mode": "raw",
860
							"raw": "",
861
							"options": {
862
								"raw": {
863
									"language": "json"
864
								}
865
							}
866
						},
867
						"url": {
868
							"raw": "{{baseUrl}}/users/{{id}}/friends",
869
							"host": [
870
								"{{baseUrl}}"
871
							],
872
							"path": [
873
								"users",
874
								"{{id}}",
875
								"friends"
876
							]
877
						}
878
					},
879
					"response": []
880
				},
881
				{
882
					"name": "Friend get unknown id",
883
					"event": [
884
						{
885
							"listen": "test",
886
							"script": {
887
								"exec": [
888
									"pm.test(\"Status code is 404\", function () {\r",
889
									"    pm.expect(pm.response.code).to.be.equal(404);\r",
890
									"});\r",
891
									"\r",
892
									"pm.test(\"Has error response\", function () {\r",
893
									"    pm.response.to.be.withBody;\r",
894
									"    pm.response.to.be.json;\r",
895
									"});"
896
								],
897
								"type": "text/javascript",
898
								"packages": {}
899
							}
900
						},
901
						{
902
							"listen": "prerequest",
903
							"script": {
904
								"exec": [
905
									"const main = async () => {\r",
906
									"    const api = new API(pm);\r",
907
									"    const rnd = new RandomUtils();\r",
908
									"\r",
909
									"    let user;\r",
910
									"    try {\r",
911
									"        user = await api.addUser(rnd.getUser());\r",
912
									"        pm.collectionVariables.set(\"id\", user.id+1);\r",
913
									"    } catch(err) {\r",
914
									"        console.error(\"Ошибка при подготовке тестовых данных.\", err);\r",
915
									"    }\r",
916
									"\r",
917
									"};\r",
918
									"\r",
919
									"const interval = setInterval(() => {}, 1000);\r",
920
									"\r",
921
									"setTimeout(async () => \r",
922
									"    {\r",
923
									"        try {\r",
924
									"            await main();\r",
925
									"        } catch (e) {\r",
926
									"            console.error(e);\r",
927
									"        } finally {\r",
928
									"            clearInterval(interval);\r",
929
									"        }\r",
930
									"    },  \r",
931
									"    100 \r",
932
									");"
933
								],
934
								"type": "text/javascript",
935
								"packages": {}
936
							}
937
						}
938
					],
939
					"protocolProfileBehavior": {
940
						"disableBodyPruning": true
941
					},
942
					"request": {
943
						"method": "GET",
944
						"header": [
945
							{
946
								"key": "Content-Type",
947
								"value": "application/json"
948
							},
949
							{
950
								"key": "Accept",
951
								"value": "*/*"
952
							}
953
						],
954
						"body": {
955
							"mode": "raw",
956
							"raw": "",
957
							"options": {
958
								"raw": {
959
									"language": "json"
960
								}
961
							}
962
						},
963
						"url": {
964
							"raw": "{{baseUrl}}/users/{{id}}/friends",
965
							"host": [
966
								"{{baseUrl}}"
967
							],
968
							"path": [
969
								"users",
970
								"{{id}}",
971
								"friends"
972
							]
973
						}
974
					},
975
					"response": []
976
				},
977
				{
978
					"name": "Friend remove",
979
					"event": [
980
						{
981
							"listen": "test",
982
							"script": {
983
								"exec": [
984
									"const user1_id = pm.collectionVariables.get(\"id\");\r",
985
									"const user2_id = pm.collectionVariables.get(\"friend_id\");\r",
986
									"\r",
987
									"pm.test(\"Status code is 200\", function () {\r",
988
									"    pm.expect(pm.response.code).to.be.oneOf([200,204]);\r",
989
									"});\r",
990
									"\r",
991
									"pm.sendRequest({\r",
992
									"    url : \"http://localhost:8080/users/\" + user1_id + '/friends',\r",
993
									"    method : \"GET\",\r",
994
									"    header: { \"Content-Type\": \"application/json\" }\r",
995
									"}, (error, response) => {\r",
996
									"    pm.test(\"user1 should have 0 friends\", function () {\r",
997
									"        pm.expect(response.json().length).to.be.equal(0);\r",
998
									"    });\r",
999
									"});\r",
1000
									"\r",
1001
									"pm.sendRequest({\r",
1002
									"    url : \"http://localhost:8080/users/\" + user2_id + '/friends',\r",
1003
									"    method : \"GET\",\r",
1004
									"    header: { \"Content-Type\": \"application/json\" }\r",
1005
									"}, (error, response) => {\r",
1006
									"    pm.test(\"user2 should have 0 friends\", function () {\r",
1007
									"        pm.expect(response.json().length).to.be.equal(0);\r",
1008
									"    });\r",
1009
									"});\r",
1010
									""
1011
								],
1012
								"type": "text/javascript",
1013
								"packages": {}
1014
							}
1015
						},
1016
						{
1017
							"listen": "prerequest",
1018
							"script": {
1019
								"exec": [
1020
									"const main = async () => {\r",
1021
									"    const api = new API(pm);\r",
1022
									"    const rnd = new RandomUtils();\r",
1023
									"\r",
1024
									"    let user1, user2;\r",
1025
									"    try {\r",
1026
									"        user1 = await api.addUser(rnd.getUser());\r",
1027
									"        user2 = await api.addUser(rnd.getUser());\r",
1028
									"        await api.addFriend(user1.id, user2.id);\r",
1029
									"        pm.collectionVariables.set(\"id\", user1.id);\r",
1030
									"        pm.collectionVariables.set(\"friend_id\", user2.id);\r",
1031
									"    } catch(err) {\r",
1032
									"        console.error(\"Ошибка при подготовке тестовых данных.\", err);\r",
1033
									"    }\r",
1034
									"\r",
1035
									"};\r",
1036
									"\r",
1037
									"const interval = setInterval(() => {}, 1000);\r",
1038
									"\r",
1039
									"setTimeout(async () => \r",
1040
									"    {\r",
1041
									"        try {\r",
1042
									"            await main();\r",
1043
									"        } catch (e) {\r",
1044
									"            console.error(e);\r",
1045
									"        } finally {\r",
1046
									"            clearInterval(interval);\r",
1047
									"        }\r",
1048
									"    },  \r",
1049
									"    100 \r",
1050
									");"
1051
								],
1052
								"type": "text/javascript",
1053
								"packages": {}
1054
							}
1055
						}
1056
					],
1057
					"request": {
1058
						"method": "DELETE",
1059
						"header": [
1060
							{
1061
								"key": "Content-Type",
1062
								"value": "application/json"
1063
							},
1064
							{
1065
								"key": "Accept",
1066
								"value": "*/*"
1067
							}
1068
						],
1069
						"body": {
1070
							"mode": "raw",
1071
							"raw": "",
1072
							"options": {
1073
								"raw": {
1074
									"language": "json"
1075
								}
1076
							}
1077
						},
1078
						"url": {
1079
							"raw": "{{baseUrl}}/users/{{id}}/friends/{{friend_id}}",
1080
							"host": [
1081
								"{{baseUrl}}"
1082
							],
1083
							"path": [
1084
								"users",
1085
								"{{id}}",
1086
								"friends",
1087
								"{{friend_id}}"
1088
							]
1089
						}
1090
					},
1091
					"response": []
1092
				},
1093
				{
1094
					"name": "Not friend remove",
1095
					"event": [
1096
						{
1097
							"listen": "test",
1098
							"script": {
1099
								"exec": [
1100
									"const user1_id = pm.collectionVariables.get(\"id\");\r",
1101
									"const user2_id = pm.collectionVariables.get(\"friend_id\");\r",
1102
									"\r",
1103
									"pm.test(\"Status code is 200\", function () {\r",
1104
									"    pm.expect(pm.response.code).to.be.oneOf([200,204]);\r",
1105
									"});\r",
1106
									"\r",
1107
									"pm.sendRequest({\r",
1108
									"    url : \"http://localhost:8080/users/\" + user1_id + '/friends',\r",
1109
									"    method : \"GET\",\r",
1110
									"    header: { \"Content-Type\": \"application/json\" }\r",
1111
									"}, (error, response) => {\r",
1112
									"    pm.test(\"user1 should have 0 friends\", function () {\r",
1113
									"        pm.expect(response.json().length).to.be.equal(0);\r",
1114
									"    });\r",
1115
									"});\r",
1116
									"\r",
1117
									"pm.sendRequest({\r",
1118
									"    url : \"http://localhost:8080/users/\" + user2_id + '/friends',\r",
1119
									"    method : \"GET\",\r",
1120
									"    header: { \"Content-Type\": \"application/json\" }\r",
1121
									"}, (error, response) => {\r",
1122
									"    pm.test(\"user2 should have 0 friends\", function () {\r",
1123
									"        pm.expect(response.json().length).to.be.equal(0);\r",
1124
									"    });\r",
1125
									"});\r",
1126
									""
1127
								],
1128
								"type": "text/javascript",
1129
								"packages": {}
1130
							}
1131
						},
1132
						{
1133
							"listen": "prerequest",
1134
							"script": {
1135
								"exec": [
1136
									"const main = async () => {\r",
1137
									"    const api = new API(pm);\r",
1138
									"    const rnd = new RandomUtils();\r",
1139
									"\r",
1140
									"    let user1, user2;\r",
1141
									"    try {\r",
1142
									"        user1 = await api.addUser(rnd.getUser());\r",
1143
									"        user2 = await api.addUser(rnd.getUser());\r",
1144
									"        pm.collectionVariables.set(\"id\", user1.id);\r",
1145
									"        pm.collectionVariables.set(\"friend_id\", user2.id);\r",
1146
									"    } catch(err) {\r",
1147
									"        console.error(\"Ошибка при подготовке тестовых данных.\", err);\r",
1148
									"    }\r",
1149
									"\r",
1150
									"};\r",
1151
									"\r",
1152
									"const interval = setInterval(() => {}, 1000);\r",
1153
									"\r",
1154
									"setTimeout(async () => \r",
1155
									"    {\r",
1156
									"        try {\r",
1157
									"            await main();\r",
1158
									"        } catch (e) {\r",
1159
									"            console.error(e);\r",
1160
									"        } finally {\r",
1161
									"            clearInterval(interval);\r",
1162
									"        }\r",
1163
									"    },  \r",
1164
									"    100 \r",
1165
									");"
1166
								],
1167
								"type": "text/javascript",
1168
								"packages": {}
1169
							}
1170
						}
1171
					],
1172
					"request": {
1173
						"method": "DELETE",
1174
						"header": [
1175
							{
1176
								"key": "Content-Type",
1177
								"value": "application/json"
1178
							},
1179
							{
1180
								"key": "Accept",
1181
								"value": "*/*"
1182
							}
1183
						],
1184
						"body": {
1185
							"mode": "raw",
1186
							"raw": "",
1187
							"options": {
1188
								"raw": {
1189
									"language": "json"
1190
								}
1191
							}
1192
						},
1193
						"url": {
1194
							"raw": "{{baseUrl}}/users/{{id}}/friends/{{friend_id}}",
1195
							"host": [
1196
								"{{baseUrl}}"
1197
							],
1198
							"path": [
1199
								"users",
1200
								"{{id}}",
1201
								"friends",
1202
								"{{friend_id}}"
1203
							]
1204
						}
1205
					},
1206
					"response": []
1207
				},
1208
				{
1209
					"name": "Friend reciprocity",
1210
					"event": [
1211
						{
1212
							"listen": "test",
1213
							"script": {
1214
								"exec": [
1215
									"const user1_id = pm.collectionVariables.get(\"id\");\r",
1216
									"const user2_id = pm.collectionVariables.get(\"friend_id\");\r",
1217
									"\r",
1218
									"pm.test(\"Status code is 200\", function () {\r",
1219
									"    pm.expect(pm.response.code).to.be.oneOf([200,204]);\r",
1220
									"});\r",
1221
									"\r",
1222
									"pm.sendRequest({\r",
1223
									"    url : \"http://localhost:8080/users/\" + user1_id + '/friends',\r",
1224
									"    method : \"GET\",\r",
1225
									"    header: { \"Content-Type\": \"application/json\" }\r",
1226
									"}, (error, response) => {\r",
1227
									"    pm.test(\"user1 should have 0 friends\", function () {\r",
1228
									"        pm.expect(response.json().length).to.be.equal(0);\r",
1229
									"    });\r",
1230
									"});\r",
1231
									"\r",
1232
									"pm.sendRequest({\r",
1233
									"    url : \"http://localhost:8080/users/\" + user2_id + '/friends',\r",
1234
									"    method : \"GET\",\r",
1235
									"    header: { \"Content-Type\": \"application/json\" }\r",
1236
									"}, (error, response) => {\r",
1237
									"    pm.test(\"user2 should have 1 friends\", function () {\r",
1238
									"        pm.expect(response.json().length).to.be.equal(1);\r",
1239
									"    });\r",
1240
									"});\r",
1241
									""
1242
								],
1243
								"type": "text/javascript",
1244
								"packages": {}
1245
							}
1246
						},
1247
						{
1248
							"listen": "prerequest",
1249
							"script": {
1250
								"exec": [
1251
									"const main = async () => {\r",
1252
									"    const api = new API(pm);\r",
1253
									"    const rnd = new RandomUtils();\r",
1254
									"\r",
1255
									"    let user1, user2;\r",
1256
									"    try {\r",
1257
									"        user1 = await api.addUser(rnd.getUser());\r",
1258
									"        user2 = await api.addUser(rnd.getUser());\r",
1259
									"        await api.addFriend(user1.id, user2.id);\r",
1260
									"        pm.collectionVariables.set(\"id\", user2.id);\r",
1261
									"        pm.collectionVariables.set(\"friend_id\", user1.id);\r",
1262
									"    } catch(err) {\r",
1263
									"        console.error(\"Ошибка при подготовке тестовых данных.\", err);\r",
1264
									"    }\r",
1265
									"\r",
1266
									"};\r",
1267
									"\r",
1268
									"const interval = setInterval(() => {}, 1000);\r",
1269
									"\r",
1270
									"setTimeout(async () => \r",
1271
									"    {\r",
1272
									"        try {\r",
1273
									"            await main();\r",
1274
									"        } catch (e) {\r",
1275
									"            console.error(e);\r",
1276
									"        } finally {\r",
1277
									"            clearInterval(interval);\r",
1278
									"        }\r",
1279
									"    },  \r",
1280
									"    100 \r",
1281
									");"
1282
								],
1283
								"type": "text/javascript",
1284
								"packages": {}
1285
							}
1286
						}
1287
					],
1288
					"request": {
1289
						"method": "DELETE",
1290
						"header": [
1291
							{
1292
								"key": "Content-Type",
1293
								"value": "application/json"
1294
							},
1295
							{
1296
								"key": "Accept",
1297
								"value": "*/*"
1298
							}
1299
						],
1300
						"body": {
1301
							"mode": "raw",
1302
							"raw": "",
1303
							"options": {
1304
								"raw": {
1305
									"language": "json"
1306
								}
1307
							}
1308
						},
1309
						"url": {
1310
							"raw": "{{baseUrl}}/users/{{id}}/friends/{{friend_id}}",
1311
							"host": [
1312
								"{{baseUrl}}"
1313
							],
1314
							"path": [
1315
								"users",
1316
								"{{id}}",
1317
								"friends",
1318
								"{{friend_id}}"
1319
							]
1320
						}
1321
					},
1322
					"response": []
1323
				},
1324
				{
1325
					"name": "Friend remove unknown id",
1326
					"event": [
1327
						{
1328
							"listen": "test",
1329
							"script": {
1330
								"exec": [
1331
									"pm.test(\"Status code is 404\", function () {\r",
1332
									"    pm.expect(pm.response.code).to.be.equal(404);\r",
1333
									"});\r",
1334
									"\r",
1335
									"pm.test(\"Has error response\", function () {\r",
1336
									"    pm.response.to.be.withBody;\r",
1337
									"    pm.response.to.be.json;\r",
1338
									"});"
1339
								],
1340
								"type": "text/javascript",
1341
								"packages": {}
1342
							}
1343
						},
1344
						{
1345
							"listen": "prerequest",
1346
							"script": {
1347
								"exec": [
1348
									"const main = async () => {\r",
1349
									"    const api = new API(pm);\r",
1350
									"    const rnd = new RandomUtils();\r",
1351
									"\r",
1352
									"    let user1, user2;\r",
1353
									"    try {\r",
1354
									"        user1 = await api.addUser(rnd.getUser());\r",
1355
									"        user2 = await api.addUser(rnd.getUser());\r",
1356
									"        await api.addFriend(user1.id, user2.id);\r",
1357
									"        pm.collectionVariables.set(\"id\", user1.id + 4);\r",
1358
									"        pm.collectionVariables.set(\"friend_id\", user2.id);\r",
1359
									"    } catch(err) {\r",
1360
									"        console.error(\"Ошибка при подготовке тестовых данных.\", err);\r",
1361
									"    }\r",
1362
									"\r",
1363
									"};\r",
1364
									"\r",
1365
									"const interval = setInterval(() => {}, 1000);\r",
1366
									"\r",
1367
									"setTimeout(async () => \r",
1368
									"    {\r",
1369
									"        try {\r",
1370
									"            await main();\r",
1371
									"        } catch (e) {\r",
1372
									"            console.error(e);\r",
1373
									"        } finally {\r",
1374
									"            clearInterval(interval);\r",
1375
									"        }\r",
1376
									"    },  \r",
1377
									"    100 \r",
1378
									");"
1379
								],
1380
								"type": "text/javascript",
1381
								"packages": {}
1382
							}
1383
						}
1384
					],
1385
					"request": {
1386
						"method": "DELETE",
1387
						"header": [
1388
							{
1389
								"key": "Content-Type",
1390
								"value": "application/json"
1391
							},
1392
							{
1393
								"key": "Accept",
1394
								"value": "*/*"
1395
							}
1396
						],
1397
						"body": {
1398
							"mode": "raw",
1399
							"raw": "",
1400
							"options": {
1401
								"raw": {
1402
									"language": "json"
1403
								}
1404
							}
1405
						},
1406
						"url": {
1407
							"raw": "{{baseUrl}}/users/{{id}}/friends/{{friend_id}}",
1408
							"host": [
1409
								"{{baseUrl}}"
1410
							],
1411
							"path": [
1412
								"users",
1413
								"{{id}}",
1414
								"friends",
1415
								"{{friend_id}}"
1416
							]
1417
						}
1418
					},
1419
					"response": []
1420
				},
1421
				{
1422
					"name": "Friend remove unknown friend id",
1423
					"event": [
1424
						{
1425
							"listen": "test",
1426
							"script": {
1427
								"exec": [
1428
									"pm.test(\"Status code is 404\", function () {\r",
1429
									"    pm.expect(pm.response.code).to.be.equal(404);\r",
1430
									"});\r",
1431
									"\r",
1432
									"pm.test(\"Has error response\", function () {\r",
1433
									"    pm.response.to.be.withBody;\r",
1434
									"    pm.response.to.be.json;\r",
1435
									"});"
1436
								],
1437
								"type": "text/javascript",
1438
								"packages": {}
1439
							}
1440
						},
1441
						{
1442
							"listen": "prerequest",
1443
							"script": {
1444
								"exec": [
1445
									"const main = async () => {\r",
1446
									"    const api = new API(pm);\r",
1447
									"    const rnd = new RandomUtils();\r",
1448
									"\r",
1449
									"    let user1, user2;\r",
1450
									"    try {\r",
1451
									"        user1 = await api.addUser(rnd.getUser());\r",
1452
									"        user2 = await api.addUser(rnd.getUser());\r",
1453
									"        await api.addFriend(user1.id, user2.id);\r",
1454
									"        pm.collectionVariables.set(\"id\", user1.id);\r",
1455
									"        pm.collectionVariables.set(\"friend_id\", user2.id+1);\r",
1456
									"    } catch(err) {\r",
1457
									"        console.error(\"Ошибка при подготовке тестовых данных.\", err);\r",
1458
									"    }\r",
1459
									"\r",
1460
									"};\r",
1461
									"\r",
1462
									"const interval = setInterval(() => {}, 1000);\r",
1463
									"\r",
1464
									"setTimeout(async () => \r",
1465
									"    {\r",
1466
									"        try {\r",
1467
									"            await main();\r",
1468
									"        } catch (e) {\r",
1469
									"            console.error(e);\r",
1470
									"        } finally {\r",
1471
									"            clearInterval(interval);\r",
1472
									"        }\r",
1473
									"    },  \r",
1474
									"    100 \r",
1475
									");"
1476
								],
1477
								"type": "text/javascript",
1478
								"packages": {}
1479
							}
1480
						}
1481
					],
1482
					"request": {
1483
						"method": "DELETE",
1484
						"header": [
1485
							{
1486
								"key": "Content-Type",
1487
								"value": "application/json"
1488
							},
1489
							{
1490
								"key": "Accept",
1491
								"value": "*/*"
1492
							}
1493
						],
1494
						"body": {
1495
							"mode": "raw",
1496
							"raw": "",
1497
							"options": {
1498
								"raw": {
1499
									"language": "json"
1500
								}
1501
							}
1502
						},
1503
						"url": {
1504
							"raw": "{{baseUrl}}/users/{{id}}/friends/{{friend_id}}",
1505
							"host": [
1506
								"{{baseUrl}}"
1507
							],
1508
							"path": [
1509
								"users",
1510
								"{{id}}",
1511
								"friends",
1512
								"{{friend_id}}"
1513
							]
1514
						}
1515
					},
1516
					"response": []
1517
				},
1518
				{
1519
					"name": "Get common friends",
1520
					"event": [
1521
						{
1522
							"listen": "test",
1523
							"script": {
1524
								"exec": [
1525
									"const user3_id = pm.collectionVariables.get(\"user3_id\");\r",
1526
									"\r",
1527
									"pm.test(\"Status code is 200\", function () {\r",
1528
									"    pm.expect(pm.response.code).to.be.oneOf([200,204]);\r",
1529
									"});\r",
1530
									"\r",
1531
									"pm.test(\"user1 should have 1 common friend with user2\", function () {\r",
1532
									"    pm.expect(pm.response.json().length).to.be.equal(1);\r",
1533
									"    pm.expect(pm.response.json()[0].id).to.be.equal(user3_id);\r",
1534
									"});\r",
1535
									""
1536
								],
1537
								"type": "text/javascript"
1538
							}
1539
						},
1540
						{
1541
							"listen": "prerequest",
1542
							"script": {
1543
								"exec": [
1544
									"const main = async () => {\r",
1545
									"    const api = new API(pm);\r",
1546
									"    const rnd = new RandomUtils();\r",
1547
									"\r",
1548
									"    let user1, user2, user3;\r",
1549
									"    try {\r",
1550
									"        user1 = await api.addUser(rnd.getUser());\r",
1551
									"        user2 = await api.addUser(rnd.getUser());\r",
1552
									"        user3 = await api.addUser(rnd.getUser());\r",
1553
									"        await api.addFriend(user1.id, user3.id);\r",
1554
									"        await api.addFriend(user1.id, user2.id);\r",
1555
									"        await api.addFriend(user2.id, user3.id);\r",
1556
									"        pm.collectionVariables.set(\"id\", user1.id);\r",
1557
									"        pm.collectionVariables.set(\"friend_id\", user2.id);\r",
1558
									"        pm.collectionVariables.set(\"user3_id\", user3.id);\r",
1559
									"    } catch(err) {\r",
1560
									"        console.error(\"Ошибка при подготовке тестовых данных.\", err);\r",
1561
									"    }\r",
1562
									"\r",
1563
									"};\r",
1564
									"\r",
1565
									"const interval = setInterval(() => {}, 1000);\r",
1566
									"\r",
1567
									"setTimeout(async () => \r",
1568
									"    {\r",
1569
									"        try {\r",
1570
									"            await main();\r",
1571
									"        } catch (e) {\r",
1572
									"            console.error(e);\r",
1573
									"        } finally {\r",
1574
									"            clearInterval(interval);\r",
1575
									"        }\r",
1576
									"    },  \r",
1577
									"    100 \r",
1578
									");"
1579
								],
1580
								"type": "text/javascript"
1581
							}
1582
						}
1583
					],
1584
					"protocolProfileBehavior": {
1585
						"disableBodyPruning": true
1586
					},
1587
					"request": {
1588
						"method": "GET",
1589
						"header": [
1590
							{
1591
								"key": "Content-Type",
1592
								"value": "application/json"
1593
							},
1594
							{
1595
								"key": "Accept",
1596
								"value": "*/*"
1597
							}
1598
						],
1599
						"body": {
1600
							"mode": "raw",
1601
							"raw": "",
1602
							"options": {
1603
								"raw": {
1604
									"language": "json"
1605
								}
1606
							}
1607
						},
1608
						"url": {
1609
							"raw": "{{baseUrl}}/users/{{id}}/friends/common/{{friend_id}}",
1610
							"host": [
1611
								"{{baseUrl}}"
1612
							],
1613
							"path": [
1614
								"users",
1615
								"{{id}}",
1616
								"friends",
1617
								"common",
1618
								"{{friend_id}}"
1619
							]
1620
						}
1621
					},
1622
					"response": []
1623
				}
1624
			]
1625
		},
1626
		{
1627
			"name": "films",
1628
			"item": [
1629
				{
1630
					"name": "Film create",
1631
					"event": [
1632
						{
1633
							"listen": "test",
1634
							"script": {
1635
								"exec": [
1636
									"const source = JSON.parse(pm.request.body.raw)\r",
1637
									"\r",
1638
									"pm.test(\"Status code is 200 or 201\", function () {\r",
1639
									"    pm.expect(pm.response.code).to.be.oneOf([200,201]);\r",
1640
									"});\r",
1641
									"pm.test(\"Has film create response\", function () {\r",
1642
									"    pm.response.to.be.withBody;\r",
1643
									"    pm.response.to.be.json;\r",
1644
									"});\r",
1645
									"pm.test(\"Test film 'id' field\", function () {\r",
1646
									"    var jsonData = pm.response.json();\r",
1647
									"    pm.expect(jsonData).to.have.property('id');\r",
1648
									"});\r",
1649
									"pm.test(\"Test film 'name' field\", function () {\r",
1650
									"    var jsonData = pm.response.json();\r",
1651
									"    pm.expect(jsonData).to.have.property('name');\r",
1652
									"    pm.expect(jsonData.name, `\"name\" must be \"${source.name}\"`).to.eql(source.name);\r",
1653
									"});\r",
1654
									"pm.test(\"Test film 'description' field\", function () {\r",
1655
									"    var jsonData = pm.response.json();\r",
1656
									"    pm.expect(jsonData).to.have.property('description');\r",
1657
									"    pm.expect(jsonData.description, `\"description\" must be \"${source.description}\"`).to.eql(source.description);\r",
1658
									"});\r",
1659
									"pm.test(\"Test film 'releaseDate' field\", function () {\r",
1660
									"    var jsonData = pm.response.json();\r",
1661
									"    pm.expect(jsonData).to.have.property('releaseDate');\r",
1662
									"    pm.expect(jsonData.releaseDate, `\"releaseDate\" field must be \"${source.releaseDate}\"`).to.eql(source.releaseDate);\r",
1663
									"});\r",
1664
									"pm.test(\"Test film 'duration' field\", function () {\r",
1665
									"    var jsonData = pm.response.json();\r",
1666
									"    pm.expect(jsonData).to.have.property('duration');\r",
1667
									"    pm.expect(jsonData.duration, `\"duration\" field must be %{source.duration}`).to.eql(source.duration);    \r",
1668
									"});\r",
1669
									"pm.test(\"Test film 'mpa' field\", function () {\r",
1670
									"    var jsonData = pm.response.json();\r",
1671
									"    pm.expect(jsonData).to.have.property('mpa');\r",
1672
									"    pm.expect(jsonData.mpa.id, `\"mpa.id\" field must be %{source.mpa.id}`).to.eql(source.mpa.id);    \r",
1673
									"});\r",
1674
									"pm.test(\"Test film 'genres' field\", function () {\r",
1675
									"    var jsonData = pm.response.json();\r",
1676
									"    let responseGenres = [];\r",
1677
									"    let requestGenres = [];\r",
1678
									"    source.genres.forEach((element) => requestGenres.push(element.id));\r",
1679
									"    jsonData.genres.forEach((element) => responseGenres.push(element.id));\r",
1680
									"    pm.expect(jsonData).to.have.property('genres');\r",
1681
									"    pm.expect(responseGenres, `\"genres\" field must be %{requestGenres}`).to.eql(requestGenres);    \r",
1682
									"});\r",
1683
									"\r",
1684
									""
1685
								],
1686
								"type": "text/javascript"
1687
							}
1688
						},
1689
						{
1690
							"listen": "prerequest",
1691
							"script": {
1692
								"exec": [
1693
									"const main = async () => {\r",
1694
									"    const api = new API(pm);\r",
1695
									"    const rnd = new RandomUtils();\r",
1696
									"\r",
1697
									"    let film;\r",
1698
									"    try {\r",
1699
									"        film = rnd.getFilm();\r",
1700
									"    } catch(err) {\r",
1701
									"        console.error(\"Ошибка при подготовке тестовых данных.\", err);\r",
1702
									"    }\r",
1703
									"\r",
1704
									"    pm.request.body.update({\r",
1705
									"        mode: 'raw',\r",
1706
									"        raw: JSON.stringify(film),\r",
1707
									"        options: { raw: { language: 'json' } }\r",
1708
									"    });\r",
1709
									"};\r",
1710
									"\r",
1711
									"const interval = setInterval(() => {}, 1000);\r",
1712
									"\r",
1713
									"setTimeout(async () => \r",
1714
									"    {\r",
1715
									"        try {\r",
1716
									"            await main();\r",
1717
									"        } catch (e) {\r",
1718
									"            console.error(e);\r",
1719
									"        } finally {\r",
1720
									"            clearInterval(interval);\r",
1721
									"        }\r",
1722
									"    },  \r",
1723
									"    100 \r",
1724
									");"
1725
								],
1726
								"type": "text/javascript"
1727
							}
1728
						}
1729
					],
1730
					"request": {
1731
						"method": "POST",
1732
						"header": [
1733
							{
1734
								"key": "Content-Type",
1735
								"value": "application/json"
1736
							},
1737
							{
1738
								"key": "Accept",
1739
								"value": "*/*"
1740
							}
1741
						],
1742
						"body": {
1743
							"mode": "raw",
1744
							"raw": "{\n  \"name\": \"nisi eiusmod\",\n  \"description\": \"adipisicing\",\n  \"releaseDate\": \"1967-03-25\",\n  \"duration\": 100\n}",
1745
							"options": {
1746
								"raw": {
1747
									"language": "json"
1748
								}
1749
							}
1750
						},
1751
						"url": {
1752
							"raw": "{{baseUrl}}/films",
1753
							"host": [
1754
								"{{baseUrl}}"
1755
							],
1756
							"path": [
1757
								"films"
1758
							]
1759
						}
1760
					},
1761
					"response": []
1762
				},
1763
				{
1764
					"name": "Film create several genres",
1765
					"event": [
1766
						{
1767
							"listen": "test",
1768
							"script": {
1769
								"exec": [
1770
									"const source = JSON.parse(pm.request.body.raw)\r",
1771
									"\r",
1772
									"pm.test(\"Status code is 200 or 201\", function () {\r",
1773
									"    pm.expect(pm.response.code).to.be.oneOf([200,201]);\r",
1774
									"});\r",
1775
									"pm.test(\"Has film create response\", function () {\r",
1776
									"    pm.response.to.be.withBody;\r",
1777
									"    pm.response.to.be.json;\r",
1778
									"});\r",
1779
									"pm.test(\"Test film 'id' field\", function () {\r",
1780
									"    var jsonData = pm.response.json();\r",
1781
									"    pm.expect(jsonData).to.have.property('id');\r",
1782
									"});\r",
1783
									"pm.test(\"Test film 'name' field\", function () {\r",
1784
									"    var jsonData = pm.response.json();\r",
1785
									"    pm.expect(jsonData).to.have.property('name');\r",
1786
									"    pm.expect(jsonData.name, `\"name\" must be \"${source.name}\"`).to.eql(source.name);\r",
1787
									"});\r",
1788
									"pm.test(\"Test film 'description' field\", function () {\r",
1789
									"    var jsonData = pm.response.json();\r",
1790
									"    pm.expect(jsonData).to.have.property('description');\r",
1791
									"    pm.expect(jsonData.description, `\"description\" must be \"${source.description}\"`).to.eql(source.description);\r",
1792
									"});\r",
1793
									"pm.test(\"Test film 'releaseDate' field\", function () {\r",
1794
									"    var jsonData = pm.response.json();\r",
1795
									"    pm.expect(jsonData).to.have.property('releaseDate');\r",
1796
									"    pm.expect(jsonData.releaseDate, `\"releaseDate\" field must be \"${source.releaseDate}\"`).to.eql(source.releaseDate);\r",
1797
									"});\r",
1798
									"pm.test(\"Test film 'duration' field\", function () {\r",
1799
									"    var jsonData = pm.response.json();\r",
1800
									"    pm.expect(jsonData).to.have.property('duration');\r",
1801
									"    pm.expect(jsonData.duration, `\"duration\" field must be %{source.duration}`).to.eql(source.duration);    \r",
1802
									"});\r",
1803
									"pm.test(\"Test film 'mpa' field\", function () {\r",
1804
									"    var jsonData = pm.response.json();\r",
1805
									"    pm.expect(jsonData).to.have.property('mpa');\r",
1806
									"    pm.expect(jsonData.mpa.id, `\"mpa.id\" field must be %{source.mpa.id}`).to.eql(source.mpa.id);    \r",
1807
									"});\r",
1808
									"pm.test(\"Test film 'genres' field\", function () {\r",
1809
									"    var jsonData = pm.response.json();\r",
1810
									"    let responseGenres = [];\r",
1811
									"    let requestGenres = [];\r",
1812
									"    source.genres.forEach((element) => requestGenres.push(element.id));\r",
1813
									"    jsonData.genres.forEach((element) => responseGenres.push(element.id));\r",
1814
									"    pm.expect(jsonData).to.have.property('genres');\r",
1815
									"    pm.expect(responseGenres, `\"genres\" field must be %{requestGenres}`).to.eql(requestGenres);    \r",
1816
									"});\r",
1817
									"\r",
1818
									""
1819
								],
1820
								"type": "text/javascript"
1821
							}
1822
						},
1823
						{
1824
							"listen": "prerequest",
1825
							"script": {
1826
								"exec": [
1827
									"const main = async () => {\r",
1828
									"    const api = new API(pm);\r",
1829
									"    const rnd = new RandomUtils();\r",
1830
									"\r",
1831
									"    let film;\r",
1832
									"    try {\r",
1833
									"        film = rnd.getFilm();\r",
1834
									"        film.genres = [\r",
1835
									"            {\"id\": 3},\r",
1836
									"            {\"id\": 5}\r",
1837
									"        ]\r",
1838
									"    } catch(err) {\r",
1839
									"        console.error(\"Ошибка при подготовке тестовых данных.\", err);\r",
1840
									"    }\r",
1841
									"\r",
1842
									"    pm.request.body.update({\r",
1843
									"        mode: 'raw',\r",
1844
									"        raw: JSON.stringify(film),\r",
1845
									"        options: { raw: { language: 'json' } }\r",
1846
									"    });\r",
1847
									"};\r",
1848
									"\r",
1849
									"const interval = setInterval(() => {}, 1000);\r",
1850
									"\r",
1851
									"setTimeout(async () => \r",
1852
									"    {\r",
1853
									"        try {\r",
1854
									"            await main();\r",
1855
									"        } catch (e) {\r",
1856
									"            console.error(e);\r",
1857
									"        } finally {\r",
1858
									"            clearInterval(interval);\r",
1859
									"        }\r",
1860
									"    },  \r",
1861
									"    100 \r",
1862
									");"
1863
								],
1864
								"type": "text/javascript"
1865
							}
1866
						}
1867
					],
1868
					"request": {
1869
						"method": "POST",
1870
						"header": [
1871
							{
1872
								"key": "Content-Type",
1873
								"value": "application/json"
1874
							},
1875
							{
1876
								"key": "Accept",
1877
								"value": "*/*"
1878
							}
1879
						],
1880
						"body": {
1881
							"mode": "raw",
1882
							"raw": "{\n  \"name\": \"nisi eiusmod\",\n  \"description\": \"adipisicing\",\n  \"releaseDate\": \"1967-03-25\",\n  \"duration\": 100\n}",
1883
							"options": {
1884
								"raw": {
1885
									"language": "json"
1886
								}
1887
							}
1888
						},
1889
						"url": {
1890
							"raw": "{{baseUrl}}/films",
1891
							"host": [
1892
								"{{baseUrl}}"
1893
							],
1894
							"path": [
1895
								"films"
1896
							]
1897
						}
1898
					},
1899
					"response": []
1900
				},
1901
				{
1902
					"name": "Film create Fail name",
1903
					"event": [
1904
						{
1905
							"listen": "test",
1906
							"script": {
1907
								"exec": [
1908
									"pm.test(\"Status code is 400\", function () {\r",
1909
									"     pm.expect(pm.response.code).to.be.equal(400);\r",
1910
									"});\r",
1911
									"pm.test(\"Has error response\", function () {\r",
1912
									"    pm.response.to.be.withBody;\r",
1913
									"    pm.response.to.be.json;\r",
1914
									"});\r",
1915
									""
1916
								],
1917
								"type": "text/javascript",
1918
								"packages": {}
1919
							}
1920
						}
1921
					],
1922
					"request": {
1923
						"method": "POST",
1924
						"header": [
1925
							{
1926
								"key": "Content-Type",
1927
								"value": "application/json"
1928
							},
1929
							{
1930
								"key": "Accept",
1931
								"value": "*/*"
1932
							}
1933
						],
1934
						"body": {
1935
							"mode": "raw",
1936
							"raw": "{\n  \"name\": \"\",\n  \"description\": \"Description\",\n  \"releaseDate\": \"1900-03-25\",\n  \"duration\": 200,\n  \"mpa\": { \"id\": 1}\n}",
1937
							"options": {
1938
								"raw": {
1939
									"language": "json"
1940
								}
1941
							}
1942
						},
1943
						"url": {
1944
							"raw": "{{baseUrl}}/films",
1945
							"host": [
1946
								"{{baseUrl}}"
1947
							],
1948
							"path": [
1949
								"films"
1950
							]
1951
						}
1952
					},
1953
					"response": []
1954
				},
1955
				{
1956
					"name": "Film create Fail description",
1957
					"event": [
1958
						{
1959
							"listen": "test",
1960
							"script": {
1961
								"exec": [
1962
									"pm.test(\"Status code is 400\", function () {\r",
1963
									"     pm.expect(pm.response.code).to.be.equal(400);\r",
1964
									"});\r",
1965
									"pm.test(\"Has error response\", function () {\r",
1966
									"    pm.response.to.be.withBody;\r",
1967
									"    pm.response.to.be.json;\r",
1968
									"});\r",
1969
									""
1970
								],
1971
								"type": "text/javascript",
1972
								"packages": {}
1973
							}
1974
						}
1975
					],
1976
					"request": {
1977
						"method": "POST",
1978
						"header": [
1979
							{
1980
								"key": "Content-Type",
1981
								"value": "application/json"
1982
							},
1983
							{
1984
								"key": "Accept",
1985
								"value": "*/*"
1986
							}
1987
						],
1988
						"body": {
1989
							"mode": "raw",
1990
							"raw": "{\n  \"name\": \"Film name\",\n  \"description\": \"Пятеро друзей ( комик-группа «Шарло»), приезжают в город Бризуль. Здесь они хотят разыскать господина Огюста Куглова, который задолжал им деньги, а именно 20 миллионов. о Куглов, который за время «своего отсутствия», стал кандидатом Коломбани.\",\n    \"releaseDate\": \"1900-03-25\",\n  \"duration\": 200,\n  \"mpa\": { \"id\": 1}\n}",
1991
							"options": {
1992
								"raw": {
1993
									"language": "json"
1994
								}
1995
							}
1996
						},
1997
						"url": {
1998
							"raw": "{{baseUrl}}/films",
1999
							"host": [
2000
								"{{baseUrl}}"
2001
							],
2002
							"path": [
2003
								"films"
2004
							]
2005
						}
2006
					},
2007
					"response": []
2008
				},
2009
				{
2010
					"name": "Film create Fail releaseDate",
2011
					"event": [
2012
						{
2013
							"listen": "test",
2014
							"script": {
2015
								"exec": [
2016
									"pm.test(\"Status code is 400\", function () {\r",
2017
									"     pm.expect(pm.response.code).to.be.equal(400);\r",
2018
									"});\r",
2019
									"pm.test(\"Has error response\", function () {\r",
2020
									"    pm.response.to.be.withBody;\r",
2021
									"    pm.response.to.be.json;\r",
2022
									"});\r",
2023
									""
2024
								],
2025
								"type": "text/javascript",
2026
								"packages": {}
2027
							}
2028
						}
2029
					],
2030
					"request": {
2031
						"method": "POST",
2032
						"header": [
2033
							{
2034
								"key": "Content-Type",
2035
								"value": "application/json"
2036
							},
2037
							{
2038
								"key": "Accept",
2039
								"value": "*/*"
2040
							}
2041
						],
2042
						"body": {
2043
							"mode": "raw",
2044
							"raw": "{\n  \"name\": \"Name\",\n  \"description\": \"Description\",\n  \"releaseDate\": \"1890-03-25\",\n  \"duration\": 200,\n  \"mpa\": { \"id\": 1}\n}",
2045
							"options": {
2046
								"raw": {
2047
									"language": "json"
2048
								}
2049
							}
2050
						},
2051
						"url": {
2052
							"raw": "{{baseUrl}}/films",
2053
							"host": [
2054
								"{{baseUrl}}"
2055
							],
2056
							"path": [
2057
								"films"
2058
							]
2059
						}
2060
					},
2061
					"response": []
2062
				},
2063
				{
2064
					"name": "Film create Fail duration",
2065
					"event": [
2066
						{
2067
							"listen": "test",
2068
							"script": {
2069
								"exec": [
2070
									"pm.test(\"Status code is 400\", function () {\r",
2071
									"     pm.expect(pm.response.code).to.be.equal(400);\r",
2072
									"});\r",
2073
									"pm.test(\"Has error response\", function () {\r",
2074
									"    pm.response.to.be.withBody;\r",
2075
									"    pm.response.to.be.json;\r",
2076
									"});\r",
2077
									""
2078
								],
2079
								"type": "text/javascript",
2080
								"packages": {}
2081
							}
2082
						}
2083
					],
2084
					"request": {
2085
						"method": "POST",
2086
						"header": [
2087
							{
2088
								"key": "Content-Type",
2089
								"value": "application/json"
2090
							},
2091
							{
2092
								"key": "Accept",
2093
								"value": "*/*"
2094
							}
2095
						],
2096
						"body": {
2097
							"mode": "raw",
2098
							"raw": "{\n  \"name\": \"Name\",\n  \"description\": \"Descrition\",\n  \"releaseDate\": \"1980-03-25\",\n  \"duration\": -200,\n  \"mpa\": { \"id\": 1}\n}",
2099
							"options": {
2100
								"raw": {
2101
									"language": "json"
2102
								}
2103
							}
2104
						},
2105
						"url": {
2106
							"raw": "{{baseUrl}}/films",
2107
							"host": [
2108
								"{{baseUrl}}"
2109
							],
2110
							"path": [
2111
								"films"
2112
							]
2113
						}
2114
					},
2115
					"response": []
2116
				},
2117
				{
2118
					"name": "Film create Fail MPA",
2119
					"event": [
2120
						{
2121
							"listen": "test",
2122
							"script": {
2123
								"exec": [
2124
									"pm.test(\"Status code is 400\", function () {\r",
2125
									"     pm.expect(pm.response.code).to.be.equal(400);\r",
2126
									"});\r",
2127
									"pm.test(\"Has error response\", function () {\r",
2128
									"    pm.response.to.be.withBody;\r",
2129
									"    pm.response.to.be.json;\r",
2130
									"});\r",
2131
									""
2132
								],
2133
								"type": "text/javascript",
2134
								"packages": {}
2135
							}
2136
						}
2137
					],
2138
					"request": {
2139
						"method": "POST",
2140
						"header": [
2141
							{
2142
								"key": "Content-Type",
2143
								"value": "application/json"
2144
							},
2145
							{
2146
								"key": "Accept",
2147
								"value": "*/*"
2148
							}
2149
						],
2150
						"body": {
2151
							"mode": "raw",
2152
							"raw": "{\n  \"name\": \"Name\",\n  \"description\": \"Descrition\",\n  \"releaseDate\": \"1980-03-25\",\n  \"duration\": 200,\n  \"mpa\": { \"id\": 10}\n}",
2153
							"options": {
2154
								"raw": {
2155
									"language": "json"
2156
								}
2157
							}
2158
						},
2159
						"url": {
2160
							"raw": "{{baseUrl}}/films",
2161
							"host": [
2162
								"{{baseUrl}}"
2163
							],
2164
							"path": [
2165
								"films"
2166
							]
2167
						}
2168
					},
2169
					"response": []
2170
				},
2171
				{
2172
					"name": "Film create Fail Genre",
2173
					"event": [
2174
						{
2175
							"listen": "test",
2176
							"script": {
2177
								"exec": [
2178
									"pm.test(\"Status code is 400\", function () {\r",
2179
									"     pm.expect(pm.response.code).to.be.equal(400);\r",
2180
									"});\r",
2181
									"pm.test(\"Has error response\", function () {\r",
2182
									"    pm.response.to.be.withBody;\r",
2183
									"    pm.response.to.be.json;\r",
2184
									"});\r",
2185
									""
2186
								],
2187
								"type": "text/javascript",
2188
								"packages": {}
2189
							}
2190
						}
2191
					],
2192
					"request": {
2193
						"method": "POST",
2194
						"header": [
2195
							{
2196
								"key": "Content-Type",
2197
								"value": "application/json"
2198
							},
2199
							{
2200
								"key": "Accept",
2201
								"value": "*/*"
2202
							}
2203
						],
2204
						"body": {
2205
							"mode": "raw",
2206
							"raw": "{\n  \"name\": \"Name\",\n  \"description\": \"Descrition\",\n  \"releaseDate\": \"1980-03-25\",\n  \"duration\": 200,\n  \"mpa\": { \"id\": 5},\n  \"genres\": [\n    {\"id\": 500}\n    ]\n}",
2207
							"options": {
2208
								"raw": {
2209
									"language": "json"
2210
								}
2211
							}
2212
						},
2213
						"url": {
2214
							"raw": "{{baseUrl}}/films",
2215
							"host": [
2216
								"{{baseUrl}}"
2217
							],
2218
							"path": [
2219
								"films"
2220
							]
2221
						}
2222
					},
2223
					"response": []
2224
				},
2225
				{
2226
					"name": "Film update",
2227
					"event": [
2228
						{
2229
							"listen": "test",
2230
							"script": {
2231
								"exec": [
2232
									"const source = pm.collectionVariables.get(\"film\")\r",
2233
									"\r",
2234
									"pm.test(\"Status code is 200\", function () {\r",
2235
									"    pm.response.to.be.ok;\r",
2236
									"});\r",
2237
									"pm.test(\"Has film update response\", function () {\r",
2238
									"    pm.response.to.be.withBody;\r",
2239
									"    pm.response.to.be.json;\r",
2240
									"});\r",
2241
									"\r",
2242
									"pm.test(\"Test film 'id' field\", function () {\r",
2243
									"    var jsonData = pm.response.json();\r",
2244
									"    pm.expect(jsonData).to.have.property('id');\r",
2245
									"    pm.expect(jsonData.id, `\"id\" must be ${source.id}`).to.eql(source.id);\r",
2246
									"});\r",
2247
									"pm.test(\"Test film 'name' field\", function () {\r",
2248
									"    var jsonData = pm.response.json();\r",
2249
									"    pm.expect(jsonData).to.have.property('name');\r",
2250
									"    pm.expect(jsonData.name, '\"name\" must be \"Film Updated\"').to.eql('Film Updated');\r",
2251
									"});\r",
2252
									"pm.test(\"Test film 'description' field\", function () {\r",
2253
									"    var jsonData = pm.response.json();\r",
2254
									"    pm.expect(jsonData).to.have.property('description');\r",
2255
									"    pm.expect(jsonData.description, '\"description\" must be \"New film update decription\"').to.eql('New film update decription');\r",
2256
									"});\r",
2257
									"pm.test(\"Test film 'releaseDate' field\", function () {\r",
2258
									"    var jsonData = pm.response.json();\r",
2259
									"    pm.expect(jsonData).to.have.property('releaseDate');\r",
2260
									"    pm.expect(jsonData.releaseDate, '\"releaseDate\" field must be \"1989-04-17\"').to.eql('1989-04-17');\r",
2261
									"});\r",
2262
									"pm.test(\"Test film 'duration' field\", function () {\r",
2263
									"    var jsonData = pm.response.json();\r",
2264
									"    pm.expect(jsonData).to.have.property('duration');\r",
2265
									"    pm.expect(jsonData.duration, '\"duration\" field must be 190').to.eql(190);    \r",
2266
									"});\r",
2267
									"\r",
2268
									""
2269
								],
2270
								"type": "text/javascript"
2271
							}
2272
						},
2273
						{
2274
							"listen": "prerequest",
2275
							"script": {
2276
								"exec": [
2277
									"const main = async () => {\r",
2278
									"    const api = new API(pm);\r",
2279
									"    const rnd = new RandomUtils();\r",
2280
									"\r",
2281
									"    let user;\r",
2282
									"    try {\r",
2283
									"        film = await api.addFilm(rnd.getFilm());\r",
2284
									"        pm.collectionVariables.set(\"film\", film);\r",
2285
									"    } catch(err) {\r",
2286
									"        console.error(\"Ошибка при подготовке тестовых данных.\", err);\r",
2287
									"    }\r",
2288
									"\r",
2289
									"    pm.request.body.update({\r",
2290
									"        mode: 'raw',\r",
2291
									"        raw: JSON.stringify({\r",
2292
									"            \"id\": film.id,\r",
2293
									"            \"name\": \"Film Updated\",\r",
2294
									"            \"releaseDate\": \"1989-04-17\",\r",
2295
									"            \"description\": \"New film update decription\",\r",
2296
									"            \"duration\": 190,\r",
2297
									"            \"rate\": 4,\r",
2298
									"            \"mpa\": { \"id\": 3}\r",
2299
									"            }),\r",
2300
									"        options: { raw: { language: 'json' } }\r",
2301
									"    });\r",
2302
									"\r",
2303
									"};\r",
2304
									"\r",
2305
									"const interval = setInterval(() => {}, 1000);\r",
2306
									"\r",
2307
									"setTimeout(async () => \r",
2308
									"    {\r",
2309
									"        try {\r",
2310
									"            await main();\r",
2311
									"        } catch (e) {\r",
2312
									"            console.error(e);\r",
2313
									"        } finally {\r",
2314
									"            clearInterval(interval);\r",
2315
									"        }\r",
2316
									"    },  \r",
2317
									"    100 \r",
2318
									");"
2319
								],
2320
								"type": "text/javascript"
2321
							}
2322
						}
2323
					],
2324
					"request": {
2325
						"method": "PUT",
2326
						"header": [
2327
							{
2328
								"key": "Content-Type",
2329
								"value": "application/json"
2330
							},
2331
							{
2332
								"key": "Accept",
2333
								"value": "*/*"
2334
							}
2335
						],
2336
						"body": {
2337
							"mode": "raw",
2338
							"raw": "",
2339
							"options": {
2340
								"raw": {
2341
									"language": "json"
2342
								}
2343
							}
2344
						},
2345
						"url": {
2346
							"raw": "{{baseUrl}}/films",
2347
							"host": [
2348
								"{{baseUrl}}"
2349
							],
2350
							"path": [
2351
								"films"
2352
							]
2353
						}
2354
					},
2355
					"response": []
2356
				},
2357
				{
2358
					"name": "Film update unknown",
2359
					"event": [
2360
						{
2361
							"listen": "test",
2362
							"script": {
2363
								"exec": [
2364
									"pm.test(\"Status code is 500\", function () {\r",
2365
									"    pm.expect(pm.response.code).to.be.oneOf([500, 404]);\r",
2366
									"});\r",
2367
									"pm.test(\"Has error response\", function () {\r",
2368
									"    pm.response.to.be.withBody;\r",
2369
									"    pm.response.to.be.json;\r",
2370
									"});\r",
2371
									""
2372
								],
2373
								"type": "text/javascript"
2374
							}
2375
						},
2376
						{
2377
							"listen": "prerequest",
2378
							"script": {
2379
								"exec": [
2380
									"const main = async () => {\r",
2381
									"    const api = new API(pm);\r",
2382
									"    const rnd = new RandomUtils();\r",
2383
									"\r",
2384
									"    let user;\r",
2385
									"    try {\r",
2386
									"        film = await api.addFilm(rnd.getFilm());\r",
2387
									"        pm.collectionVariables.set(\"film\", film);\r",
2388
									"    } catch(err) {\r",
2389
									"        console.error(\"Ошибка при подготовке тестовых данных.\", err);\r",
2390
									"    }\r",
2391
									"\r",
2392
									"    pm.request.body.update({\r",
2393
									"        mode: 'raw',\r",
2394
									"        raw: JSON.stringify({\r",
2395
									"            \"id\": film.id+1,\r",
2396
									"            \"name\": \"Film Updated\",\r",
2397
									"            \"releaseDate\": \"1989-04-17\",\r",
2398
									"            \"description\": \"New film update decription\",\r",
2399
									"            \"duration\": 190,\r",
2400
									"            \"rate\": 4,\r",
2401
									"            \"mpa\": { \"id\": 3}\r",
2402
									"            }),\r",
2403
									"        options: { raw: { language: 'json' } }\r",
2404
									"    });\r",
2405
									"\r",
2406
									"};\r",
2407
									"\r",
2408
									"const interval = setInterval(() => {}, 1000);\r",
2409
									"\r",
2410
									"setTimeout(async () => \r",
2411
									"    {\r",
2412
									"        try {\r",
2413
									"            await main();\r",
2414
									"        } catch (e) {\r",
2415
									"            console.error(e);\r",
2416
									"        } finally {\r",
2417
									"            clearInterval(interval);\r",
2418
									"        }\r",
2419
									"    },  \r",
2420
									"    100 \r",
2421
									");"
2422
								],
2423
								"type": "text/javascript"
2424
							}
2425
						}
2426
					],
2427
					"request": {
2428
						"method": "PUT",
2429
						"header": [
2430
							{
2431
								"key": "Content-Type",
2432
								"value": "application/json"
2433
							},
2434
							{
2435
								"key": "Accept",
2436
								"value": "*/*"
2437
							}
2438
						],
2439
						"body": {
2440
							"mode": "raw",
2441
							"raw": "",
2442
							"options": {
2443
								"raw": {
2444
									"language": "json"
2445
								}
2446
							}
2447
						},
2448
						"url": {
2449
							"raw": "{{baseUrl}}/films",
2450
							"host": [
2451
								"{{baseUrl}}"
2452
							],
2453
							"path": [
2454
								"films"
2455
							]
2456
						}
2457
					},
2458
					"response": []
2459
				},
2460
				{
2461
					"name": "Film get All",
2462
					"event": [
2463
						{
2464
							"listen": "test",
2465
							"script": {
2466
								"exec": [
2467
									"pm.test(\"Status code is 200\", function () {\r",
2468
									"    pm.response.to.be.ok;\r",
2469
									"});\r",
2470
									"pm.test(\"Test list film response\", function () {\r",
2471
									"    pm.response.to.be.withBody;\r",
2472
									"    pm.response.to.be.json;\r",
2473
									"});\r",
2474
									"pm.test(\"Test film[0] 'id' field\", function () {\r",
2475
									"    var jsonData = pm.response.json();\r",
2476
									"    pm.expect(jsonData[0]).to.have.property('id');\r",
2477
									"    pm.expect(jsonData[0].id, '\"id\" must be 1').to.eql(1);\r",
2478
									"});\r",
2479
									""
2480
								],
2481
								"type": "text/javascript"
2482
							}
2483
						}
2484
					],
2485
					"request": {
2486
						"method": "GET",
2487
						"header": [
2488
							{
2489
								"key": "Accept",
2490
								"value": "*/*"
2491
							}
2492
						],
2493
						"url": {
2494
							"raw": "{{baseUrl}}/films",
2495
							"host": [
2496
								"{{baseUrl}}"
2497
							],
2498
							"path": [
2499
								"films"
2500
							]
2501
						}
2502
					},
2503
					"response": []
2504
				},
2505
				{
2506
					"name": "Film get Popular",
2507
					"event": [
2508
						{
2509
							"listen": "test",
2510
							"script": {
2511
								"exec": [
2512
									"const film1_id = pm.collectionVariables.get(\"film1_id\");\r",
2513
									"const film2_id = pm.collectionVariables.get(\"film2_id\");\r",
2514
									"const film3_id = pm.collectionVariables.get(\"film3_id\");\r",
2515
									"\r",
2516
									"pm.test(\"Status code is 200\", function () {\r",
2517
									"    pm.response.to.be.ok;\r",
2518
									"});\r",
2519
									"pm.test(\"Test list popular film response\", function () {\r",
2520
									"    pm.response.to.be.withBody;\r",
2521
									"    pm.response.to.be.json;\r",
2522
									"});\r",
2523
									"\r",
2524
									"const index1 = pm.response.json().findIndex(x => x.id == film1_id);\r",
2525
									"const index2 = pm.response.json().findIndex(x => x.id == film2_id);\r",
2526
									"const index3 = pm.response.json().findIndex(x => x.id == film3_id);\r",
2527
									"\r",
2528
									"pm.test(\"Test films сonsistency\", function () {\r",
2529
									"    pm.expect(index1).to.be.above(index2);\r",
2530
									"    pm.expect(index1).to.be.above(index3);\r",
2531
									"    pm.expect(index3).to.be.above(index2);\r",
2532
									"});\r",
2533
									"\r",
2534
									""
2535
								],
2536
								"type": "text/javascript"
2537
							}
2538
						},
2539
						{
2540
							"listen": "prerequest",
2541
							"script": {
2542
								"exec": [
2543
									"const main = async () => {\r",
2544
									"    const api = new API(pm);\r",
2545
									"    const rnd = new RandomUtils();\r",
2546
									"\r",
2547
									"    let user1, user2, user3, film1, film2, film3;\r",
2548
									"    try {\r",
2549
									"        user1 = await api.addUser(rnd.getUser());\r",
2550
									"        user2 = await api.addUser(rnd.getUser());\r",
2551
									"        user3 = await api.addUser(rnd.getUser());\r",
2552
									"        film1 = await api.addFilm(rnd.getFilm());\r",
2553
									"        film2 = await api.addFilm(rnd.getFilm());\r",
2554
									"        film3 = await api.addFilm(rnd.getFilm());\r",
2555
									"        await api.addLike(film2.id, user1.id);\r",
2556
									"        await api.addLike(film2.id, user2.id);\r",
2557
									"        await api.addLike(film2.id, user3.id);\r",
2558
									"        await api.addLike(film3.id, user1.id);\r",
2559
									"        await api.addLike(film3.id, user2.id);\r",
2560
									"        await api.addLike(film1.id, user1.id);\r",
2561
									"        pm.collectionVariables.set(\"film1_id\", film1.id);\r",
2562
									"        pm.collectionVariables.set(\"film2_id\", film2.id);\r",
2563
									"        pm.collectionVariables.set(\"film3_id\", film3.id);\r",
2564
									"    } catch(err) {\r",
2565
									"        console.error(\"Ошибка при подготовке тестовых данных.\", err);\r",
2566
									"    }\r",
2567
									"\r",
2568
									"};\r",
2569
									"\r",
2570
									"const interval = setInterval(() => {}, 1000);\r",
2571
									"\r",
2572
									"setTimeout(async () => \r",
2573
									"    {\r",
2574
									"        try {\r",
2575
									"            await main();\r",
2576
									"        } catch (e) {\r",
2577
									"            console.error(e);\r",
2578
									"        } finally {\r",
2579
									"            clearInterval(interval);\r",
2580
									"        }\r",
2581
									"    },  \r",
2582
									"    100 \r",
2583
									");"
2584
								],
2585
								"type": "text/javascript"
2586
							}
2587
						}
2588
					],
2589
					"request": {
2590
						"method": "GET",
2591
						"header": [
2592
							{
2593
								"key": "Accept",
2594
								"value": "*/*"
2595
							}
2596
						],
2597
						"url": {
2598
							"raw": "{{baseUrl}}/films/popular?count=1000",
2599
							"host": [
2600
								"{{baseUrl}}"
2601
							],
2602
							"path": [
2603
								"films",
2604
								"popular"
2605
							],
2606
							"query": [
2607
								{
2608
									"key": "count",
2609
									"value": "1000"
2610
								}
2611
							]
2612
						}
2613
					},
2614
					"response": []
2615
				}
2616
			]
2617
		},
2618
		{
2619
			"name": "like",
2620
			"item": [
2621
				{
2622
					"name": "Add like",
2623
					"event": [
2624
						{
2625
							"listen": "test",
2626
							"script": {
2627
								"exec": [
2628
									"pm.test(\"Status code is 200\", function () {\r",
2629
									"    pm.expect(pm.response.code).to.be.oneOf([200,204]);\r",
2630
									"});\r",
2631
									""
2632
								],
2633
								"type": "text/javascript"
2634
							}
2635
						},
2636
						{
2637
							"listen": "prerequest",
2638
							"script": {
2639
								"exec": [
2640
									"const main = async () => {\r",
2641
									"    const api = new API(pm);\r",
2642
									"    const rnd = new RandomUtils();\r",
2643
									"\r",
2644
									"    let user, film;\r",
2645
									"    try {\r",
2646
									"        user = await api.addUser(rnd.getUser());\r",
2647
									"        film = await api.addFilm(rnd.getFilm());\r",
2648
									"        pm.collectionVariables.set(\"id\", user.id);\r",
2649
									"        pm.collectionVariables.set(\"film_id\", film.id);\r",
2650
									"    } catch(err) {\r",
2651
									"        console.error(\"Ошибка при подготовке тестовых данных.\", err);\r",
2652
									"    }\r",
2653
									"\r",
2654
									"};\r",
2655
									"\r",
2656
									"const interval = setInterval(() => {}, 1000);\r",
2657
									"\r",
2658
									"setTimeout(async () => \r",
2659
									"    {\r",
2660
									"        try {\r",
2661
									"            await main();\r",
2662
									"        } catch (e) {\r",
2663
									"            console.error(e);\r",
2664
									"        } finally {\r",
2665
									"            clearInterval(interval);\r",
2666
									"        }\r",
2667
									"    },  \r",
2668
									"    100 \r",
2669
									");"
2670
								],
2671
								"type": "text/javascript"
2672
							}
2673
						}
2674
					],
2675
					"request": {
2676
						"method": "PUT",
2677
						"header": [
2678
							{
2679
								"key": "Content-Type",
2680
								"value": "application/json"
2681
							},
2682
							{
2683
								"key": "Accept",
2684
								"value": "*/*"
2685
							}
2686
						],
2687
						"body": {
2688
							"mode": "raw",
2689
							"raw": "",
2690
							"options": {
2691
								"raw": {
2692
									"language": "json"
2693
								}
2694
							}
2695
						},
2696
						"url": {
2697
							"raw": "{{baseUrl}}/films/{{film_id}}/like/{{id}}",
2698
							"host": [
2699
								"{{baseUrl}}"
2700
							],
2701
							"path": [
2702
								"films",
2703
								"{{film_id}}",
2704
								"like",
2705
								"{{id}}"
2706
							]
2707
						}
2708
					},
2709
					"response": []
2710
				},
2711
				{
2712
					"name": "Remove like",
2713
					"event": [
2714
						{
2715
							"listen": "test",
2716
							"script": {
2717
								"exec": [
2718
									"pm.test(\"Status code is 200\", function () {\r",
2719
									"    pm.expect(pm.response.code).to.be.oneOf([200,204]);\r",
2720
									"});\r",
2721
									""
2722
								],
2723
								"type": "text/javascript"
2724
							}
2725
						},
2726
						{
2727
							"listen": "prerequest",
2728
							"script": {
2729
								"exec": [
2730
									"const main = async () => {\r",
2731
									"    const api = new API(pm);\r",
2732
									"    const rnd = new RandomUtils();\r",
2733
									"\r",
2734
									"    let user, film;\r",
2735
									"    try {\r",
2736
									"        user = await api.addUser(rnd.getUser());\r",
2737
									"        film = await api.addFilm(rnd.getFilm());\r",
2738
									"        await api.addLike(film.id, user.id);\r",
2739
									"        pm.collectionVariables.set(\"id\", user.id);\r",
2740
									"        pm.collectionVariables.set(\"film_id\", film.id);\r",
2741
									"    } catch(err) {\r",
2742
									"        console.error(\"Ошибка при подготовке тестовых данных.\", err);\r",
2743
									"    }\r",
2744
									"\r",
2745
									"};\r",
2746
									"\r",
2747
									"const interval = setInterval(() => {}, 1000);\r",
2748
									"\r",
2749
									"setTimeout(async () => \r",
2750
									"    {\r",
2751
									"        try {\r",
2752
									"            await main();\r",
2753
									"        } catch (e) {\r",
2754
									"            console.error(e);\r",
2755
									"        } finally {\r",
2756
									"            clearInterval(interval);\r",
2757
									"        }\r",
2758
									"    },  \r",
2759
									"    100 \r",
2760
									");"
2761
								],
2762
								"type": "text/javascript"
2763
							}
2764
						}
2765
					],
2766
					"request": {
2767
						"method": "DELETE",
2768
						"header": [
2769
							{
2770
								"key": "Content-Type",
2771
								"value": "application/json"
2772
							},
2773
							{
2774
								"key": "Accept",
2775
								"value": "*/*"
2776
							}
2777
						],
2778
						"body": {
2779
							"mode": "raw",
2780
							"raw": "",
2781
							"options": {
2782
								"raw": {
2783
									"language": "json"
2784
								}
2785
							}
2786
						},
2787
						"url": {
2788
							"raw": "{{baseUrl}}/films/{{film_id}}/like/{{id}}",
2789
							"host": [
2790
								"{{baseUrl}}"
2791
							],
2792
							"path": [
2793
								"films",
2794
								"{{film_id}}",
2795
								"like",
2796
								"{{id}}"
2797
							]
2798
						}
2799
					},
2800
					"response": []
2801
				}
2802
			]
2803
		},
2804
		{
2805
			"name": "MPA",
2806
			"item": [
2807
				{
2808
					"name": "Get MPA name by id",
2809
					"event": [
2810
						{
2811
							"listen": "test",
2812
							"script": {
2813
								"exec": [
2814
									"pm.test(\"Status code is 200\", function () {\r",
2815
									"    pm.response.to.be.ok;\r",
2816
									"});\r",
2817
									"pm.test(\"Get MPA response\", function () {\r",
2818
									"    pm.response.to.be.withBody;\r",
2819
									"    pm.response.to.be.json;\r",
2820
									"});\r",
2821
									"\r",
2822
									"const source = pm.collectionVariables.get(\"source\");\r",
2823
									"\r",
2824
									"pm.test(\"Test MPA 'id' field\", function () {\r",
2825
									"    var jsonData = pm.response.json();\r",
2826
									"    pm.expect(jsonData).to.have.property('id');\r",
2827
									"    pm.expect(jsonData.id, `\"id\" must be ${source}`).to.eql(source);\r",
2828
									"});\r",
2829
									"\r",
2830
									"const MPAS = {\r",
2831
									"    1: \"G\",\r",
2832
									"    2: \"PG\",\r",
2833
									"    3: \"PG-13\",\r",
2834
									"    4: \"R\",\r",
2835
									"    5: \"NC-17\"\r",
2836
									"}\r",
2837
									"\r",
2838
									"pm.test(\"Test MPA 'name' field\", function () {\r",
2839
									"    var jsonData = pm.response.json();\r",
2840
									"    pm.expect(jsonData).to.have.property('name');\r",
2841
									"    pm.expect(jsonData.name, `\"name\" must be \"${MPAS[source]}\"`).to.eql(MPAS[source]);\r",
2842
									"});\r",
2843
									""
2844
								],
2845
								"type": "text/javascript"
2846
							}
2847
						},
2848
						{
2849
							"listen": "prerequest",
2850
							"script": {
2851
								"exec": [
2852
									"const mpa = Math.floor(Math.random() * (5 - 1 + 1) + 1);\r",
2853
									"pm.collectionVariables.set(\"id\", mpa);\r",
2854
									"pm.collectionVariables.set(\"source\", mpa)"
2855
								],
2856
								"type": "text/javascript"
2857
							}
2858
						}
2859
					],
2860
					"request": {
2861
						"method": "GET",
2862
						"header": [
2863
							{
2864
								"key": "Accept",
2865
								"value": "*/*"
2866
							}
2867
						],
2868
						"url": {
2869
							"raw": "{{baseUrl}}/mpa/{{id}}",
2870
							"host": [
2871
								"{{baseUrl}}"
2872
							],
2873
							"path": [
2874
								"mpa",
2875
								"{{id}}"
2876
							]
2877
						}
2878
					},
2879
					"response": [
2880
						{
2881
							"name": "OK",
2882
							"originalRequest": {
2883
								"method": "GET",
2884
								"header": [],
2885
								"url": {
2886
									"raw": "{{baseUrl}}/users/:id",
2887
									"host": [
2888
										"{{baseUrl}}"
2889
									],
2890
									"path": [
2891
										"users",
2892
										":id"
2893
									],
2894
									"variable": [
2895
										{
2896
											"key": "id",
2897
											"value": "-29029902",
2898
											"description": "(Required) "
2899
										}
2900
									]
2901
								}
2902
							},
2903
							"status": "OK",
2904
							"code": 200,
2905
							"_postman_previewlanguage": "text",
2906
							"header": [
2907
								{
2908
									"key": "Content-Type",
2909
									"value": "*/*"
2910
								}
2911
							],
2912
							"cookie": [],
2913
							"body": ""
2914
						},
2915
						{
2916
							"name": "Not Found",
2917
							"originalRequest": {
2918
								"method": "GET",
2919
								"header": [],
2920
								"url": {
2921
									"raw": "{{baseUrl}}/users/:id",
2922
									"host": [
2923
										"{{baseUrl}}"
2924
									],
2925
									"path": [
2926
										"users",
2927
										":id"
2928
									],
2929
									"variable": [
2930
										{
2931
											"key": "id",
2932
											"value": "-29029902",
2933
											"description": "(Required) "
2934
										}
2935
									]
2936
								}
2937
							},
2938
							"status": "Not Found",
2939
							"code": 404,
2940
							"_postman_previewlanguage": "text",
2941
							"header": [
2942
								{
2943
									"key": "Content-Type",
2944
									"value": "*/*"
2945
								}
2946
							],
2947
							"cookie": [],
2948
							"body": ""
2949
						},
2950
						{
2951
							"name": "Conflict",
2952
							"originalRequest": {
2953
								"method": "GET",
2954
								"header": [],
2955
								"url": {
2956
									"raw": "{{baseUrl}}/users/:id",
2957
									"host": [
2958
										"{{baseUrl}}"
2959
									],
2960
									"path": [
2961
										"users",
2962
										":id"
2963
									],
2964
									"variable": [
2965
										{
2966
											"key": "id",
2967
											"value": "-29029902",
2968
											"description": "(Required) "
2969
										}
2970
									]
2971
								}
2972
							},
2973
							"status": "Conflict",
2974
							"code": 409,
2975
							"_postman_previewlanguage": "text",
2976
							"header": [
2977
								{
2978
									"key": "Content-Type",
2979
									"value": "*/*"
2980
								}
2981
							],
2982
							"cookie": [],
2983
							"body": ""
2984
						},
2985
						{
2986
							"name": "Internal Server Error",
2987
							"originalRequest": {
2988
								"method": "GET",
2989
								"header": [],
2990
								"url": {
2991
									"raw": "{{baseUrl}}/users/:id",
2992
									"host": [
2993
										"{{baseUrl}}"
2994
									],
2995
									"path": [
2996
										"users",
2997
										":id"
2998
									],
2999
									"variable": [
3000
										{
3001
											"key": "id",
3002
											"value": "-29029902",
3003
											"description": "(Required) "
3004
										}
3005
									]
3006
								}
3007
							},
3008
							"status": "Internal Server Error",
3009
							"code": 500,
3010
							"_postman_previewlanguage": "text",
3011
							"header": [
3012
								{
3013
									"key": "Content-Type",
3014
									"value": "*/*"
3015
								}
3016
							],
3017
							"cookie": [],
3018
							"body": ""
3019
						}
3020
					]
3021
				},
3022
				{
3023
					"name": "MPA  id=9999 get not found",
3024
					"event": [
3025
						{
3026
							"listen": "test",
3027
							"script": {
3028
								"exec": [
3029
									"pm.test(\"Status code is 404\", function () {\r",
3030
									"    pm.response.to.have.status(404);\r",
3031
									"});"
3032
								],
3033
								"type": "text/javascript"
3034
							}
3035
						}
3036
					],
3037
					"request": {
3038
						"method": "GET",
3039
						"header": [
3040
							{
3041
								"key": "Accept",
3042
								"value": "*/*"
3043
							}
3044
						],
3045
						"url": {
3046
							"raw": "{{baseUrl}}/mpa/:id",
3047
							"host": [
3048
								"{{baseUrl}}"
3049
							],
3050
							"path": [
3051
								"mpa",
3052
								":id"
3053
							],
3054
							"variable": [
3055
								{
3056
									"key": "id",
3057
									"value": "9999",
3058
									"description": "(Required) "
3059
								}
3060
							]
3061
						}
3062
					},
3063
					"response": [
3064
						{
3065
							"name": "OK",
3066
							"originalRequest": {
3067
								"method": "GET",
3068
								"header": [],
3069
								"url": {
3070
									"raw": "{{baseUrl}}/users/:id",
3071
									"host": [
3072
										"{{baseUrl}}"
3073
									],
3074
									"path": [
3075
										"users",
3076
										":id"
3077
									],
3078
									"variable": [
3079
										{
3080
											"key": "id",
3081
											"value": "-29029902",
3082
											"description": "(Required) "
3083
										}
3084
									]
3085
								}
3086
							},
3087
							"status": "OK",
3088
							"code": 200,
3089
							"_postman_previewlanguage": "text",
3090
							"header": [
3091
								{
3092
									"key": "Content-Type",
3093
									"value": "*/*"
3094
								}
3095
							],
3096
							"cookie": [],
3097
							"body": ""
3098
						},
3099
						{
3100
							"name": "Not Found",
3101
							"originalRequest": {
3102
								"method": "GET",
3103
								"header": [],
3104
								"url": {
3105
									"raw": "{{baseUrl}}/users/:id",
3106
									"host": [
3107
										"{{baseUrl}}"
3108
									],
3109
									"path": [
3110
										"users",
3111
										":id"
3112
									],
3113
									"variable": [
3114
										{
3115
											"key": "id",
3116
											"value": "-29029902",
3117
											"description": "(Required) "
3118
										}
3119
									]
3120
								}
3121
							},
3122
							"status": "Not Found",
3123
							"code": 404,
3124
							"_postman_previewlanguage": "text",
3125
							"header": [
3126
								{
3127
									"key": "Content-Type",
3128
									"value": "*/*"
3129
								}
3130
							],
3131
							"cookie": [],
3132
							"body": ""
3133
						},
3134
						{
3135
							"name": "Conflict",
3136
							"originalRequest": {
3137
								"method": "GET",
3138
								"header": [],
3139
								"url": {
3140
									"raw": "{{baseUrl}}/users/:id",
3141
									"host": [
3142
										"{{baseUrl}}"
3143
									],
3144
									"path": [
3145
										"users",
3146
										":id"
3147
									],
3148
									"variable": [
3149
										{
3150
											"key": "id",
3151
											"value": "-29029902",
3152
											"description": "(Required) "
3153
										}
3154
									]
3155
								}
3156
							},
3157
							"status": "Conflict",
3158
							"code": 409,
3159
							"_postman_previewlanguage": "text",
3160
							"header": [
3161
								{
3162
									"key": "Content-Type",
3163
									"value": "*/*"
3164
								}
3165
							],
3166
							"cookie": [],
3167
							"body": ""
3168
						},
3169
						{
3170
							"name": "Internal Server Error",
3171
							"originalRequest": {
3172
								"method": "GET",
3173
								"header": [],
3174
								"url": {
3175
									"raw": "{{baseUrl}}/users/:id",
3176
									"host": [
3177
										"{{baseUrl}}"
3178
									],
3179
									"path": [
3180
										"users",
3181
										":id"
3182
									],
3183
									"variable": [
3184
										{
3185
											"key": "id",
3186
											"value": "-29029902",
3187
											"description": "(Required) "
3188
										}
3189
									]
3190
								}
3191
							},
3192
							"status": "Internal Server Error",
3193
							"code": 500,
3194
							"_postman_previewlanguage": "text",
3195
							"header": [
3196
								{
3197
									"key": "Content-Type",
3198
									"value": "*/*"
3199
								}
3200
							],
3201
							"cookie": [],
3202
							"body": ""
3203
						}
3204
					]
3205
				},
3206
				{
3207
					"name": "MPA get All",
3208
					"event": [
3209
						{
3210
							"listen": "test",
3211
							"script": {
3212
								"exec": [
3213
									"pm.test(\"Status code is 200\", function () {\r",
3214
									"    pm.response.to.be.ok;\r",
3215
									"});\r",
3216
									"pm.test(\"Test list MPA response\", function () {\r",
3217
									"    pm.response.to.be.withBody;\r",
3218
									"    pm.response.to.be.json;\r",
3219
									"    var jsonData = pm.response.json();\r",
3220
									"    pm.expect(jsonData.length, 'List length must be 5').to.eql(5);\r",
3221
									"});\r",
3222
									"pm.test(\"Test MPA[0] 'id' field\", function () {\r",
3223
									"    var jsonData = pm.response.json();\r",
3224
									"    pm.expect(jsonData[0]).to.have.property('id');\r",
3225
									"    pm.expect(jsonData[0].id, '\"id\" must be 1').to.eql(1);\r",
3226
									"});\r",
3227
									"pm.test(\"Test MPA[0] 'name' field\", function () {\r",
3228
									"    var jsonData = pm.response.json();\r",
3229
									"    pm.expect(jsonData[0]).to.have.property('name');\r",
3230
									"    pm.expect(jsonData[0].name, '\"name\" must be \"G\"').to.eql('G');\r",
3231
									"});\r",
3232
									"pm.test(\"Test MPA[1] 'id' field\", function () {\r",
3233
									"    var jsonData = pm.response.json();\r",
3234
									"    pm.expect(jsonData[1]).to.have.property('id');\r",
3235
									"    pm.expect(jsonData[1].id, '\"id\" must be 2').to.eql(2);\r",
3236
									"});\r",
3237
									"pm.test(\"Test MPA[1] 'name' field\", function () {\r",
3238
									"    var jsonData = pm.response.json();\r",
3239
									"    pm.expect(jsonData[1]).to.have.property('name');\r",
3240
									"    pm.expect(jsonData[1].name, '\"name\" must be \"PG\"').to.eql('PG');\r",
3241
									"});\r",
3242
									"pm.test(\"Test MPA[2] 'id' field\", function () {\r",
3243
									"    var jsonData = pm.response.json();\r",
3244
									"    pm.expect(jsonData[2]).to.have.property('id');\r",
3245
									"    pm.expect(jsonData[2].id, '\"id\" must be 3').to.eql(3);\r",
3246
									"});\r",
3247
									"pm.test(\"Test MPA[2] 'name' field\", function () {\r",
3248
									"    var jsonData = pm.response.json();\r",
3249
									"    pm.expect(jsonData[2]).to.have.property('name');\r",
3250
									"    pm.expect(jsonData[2].name, '\"name\" must be \"PG-13\"').to.eql('PG-13');\r",
3251
									"});\r",
3252
									"pm.test(\"Test MPA[3] 'id' field\", function () {\r",
3253
									"    var jsonData = pm.response.json();\r",
3254
									"    pm.expect(jsonData[3]).to.have.property('id');\r",
3255
									"    pm.expect(jsonData[3].id, '\"id\" must be 4').to.eql(4);\r",
3256
									"});\r",
3257
									"pm.test(\"Test MPA[3] 'name' field\", function () {\r",
3258
									"    var jsonData = pm.response.json();\r",
3259
									"    pm.expect(jsonData[3]).to.have.property('name');\r",
3260
									"    pm.expect(jsonData[3].name, '\"name\" must be \"R\"').to.eql('R');\r",
3261
									"});\r",
3262
									"pm.test(\"Test MPA[4] 'id' field\", function () {\r",
3263
									"    var jsonData = pm.response.json();\r",
3264
									"    pm.expect(jsonData[4]).to.have.property('id');\r",
3265
									"    pm.expect(jsonData[4].id, '\"id\" must be 5').to.eql(5);\r",
3266
									"});\r",
3267
									"pm.test(\"Test MPA[4] 'name' field\", function () {\r",
3268
									"    var jsonData = pm.response.json();\r",
3269
									"    pm.expect(jsonData[4]).to.have.property('name');\r",
3270
									"    pm.expect(jsonData[4].name, '\"name\" must be \"NC-17\"').to.eql('NC-17');\r",
3271
									"});\r",
3272
									""
3273
								],
3274
								"type": "text/javascript"
3275
							}
3276
						}
3277
					],
3278
					"request": {
3279
						"method": "GET",
3280
						"header": [
3281
							{
3282
								"key": "Accept",
3283
								"value": "*/*"
3284
							}
3285
						],
3286
						"url": {
3287
							"raw": "{{baseUrl}}/mpa",
3288
							"host": [
3289
								"{{baseUrl}}"
3290
							],
3291
							"path": [
3292
								"mpa"
3293
							]
3294
						}
3295
					},
3296
					"response": [
3297
						{
3298
							"name": "OK",
3299
							"originalRequest": {
3300
								"method": "GET",
3301
								"header": [],
3302
								"url": {
3303
									"raw": "{{baseUrl}}/users",
3304
									"host": [
3305
										"{{baseUrl}}"
3306
									],
3307
									"path": [
3308
										"users"
3309
									]
3310
								}
3311
							},
3312
							"status": "OK",
3313
							"code": 200,
3314
							"_postman_previewlanguage": "text",
3315
							"header": [
3316
								{
3317
									"key": "Content-Type",
3318
									"value": "*/*"
3319
								}
3320
							],
3321
							"cookie": [],
3322
							"body": ""
3323
						}
3324
					]
3325
				}
3326
			]
3327
		},
3328
		{
3329
			"name": "Genre",
3330
			"item": [
3331
				{
3332
					"name": "Get Genre name by id",
3333
					"event": [
3334
						{
3335
							"listen": "test",
3336
							"script": {
3337
								"exec": [
3338
									"pm.test(\"Status code is 200\", function () {\r",
3339
									"    pm.response.to.be.ok;\r",
3340
									"});\r",
3341
									"pm.test(\"Get MPA response\", function () {\r",
3342
									"    pm.response.to.be.withBody;\r",
3343
									"    pm.response.to.be.json;\r",
3344
									"});\r",
3345
									"\r",
3346
									"const source = pm.collectionVariables.get(\"source\");\r",
3347
									"\r",
3348
									"pm.test(\"Test MPA 'id' field\", function () {\r",
3349
									"    var jsonData = pm.response.json();\r",
3350
									"    pm.expect(jsonData).to.have.property('id');\r",
3351
									"    pm.expect(jsonData.id, `\"id\" must be ${source}`).to.eql(source);\r",
3352
									"});\r",
3353
									"\r",
3354
									"const MPAS = {\r",
3355
									"    1: \"Комедия\",\r",
3356
									"    2: \"Драма\",\r",
3357
									"    3: \"Мультфильм\",\r",
3358
									"    4: \"Триллер\",\r",
3359
									"    5: \"Документальный\",\r",
3360
									"    6: \"Боевик\"\r",
3361
									"}\r",
3362
									"\r",
3363
									"pm.test(\"Test MPA 'name' field\", function () {\r",
3364
									"    var jsonData = pm.response.json();\r",
3365
									"    pm.expect(jsonData).to.have.property('name');\r",
3366
									"    pm.expect(jsonData.name, `\"name\" must be \"${MPAS[source]}\"`).to.eql(MPAS[source]);\r",
3367
									"});\r",
3368
									""
3369
								],
3370
								"type": "text/javascript"
3371
							}
3372
						},
3373
						{
3374
							"listen": "prerequest",
3375
							"script": {
3376
								"exec": [
3377
									"const mpa = Math.floor(Math.random() * (6 - 1 + 1) + 1);\r",
3378
									"pm.collectionVariables.set(\"id\", mpa);\r",
3379
									"pm.collectionVariables.set(\"source\", mpa)"
3380
								],
3381
								"type": "text/javascript"
3382
							}
3383
						}
3384
					],
3385
					"request": {
3386
						"method": "GET",
3387
						"header": [
3388
							{
3389
								"key": "Accept",
3390
								"value": "*/*"
3391
							}
3392
						],
3393
						"url": {
3394
							"raw": "{{baseUrl}}/genres/{{id}}",
3395
							"host": [
3396
								"{{baseUrl}}"
3397
							],
3398
							"path": [
3399
								"genres",
3400
								"{{id}}"
3401
							]
3402
						}
3403
					},
3404
					"response": [
3405
						{
3406
							"name": "OK",
3407
							"originalRequest": {
3408
								"method": "GET",
3409
								"header": [],
3410
								"url": {
3411
									"raw": "{{baseUrl}}/users/:id",
3412
									"host": [
3413
										"{{baseUrl}}"
3414
									],
3415
									"path": [
3416
										"users",
3417
										":id"
3418
									],
3419
									"variable": [
3420
										{
3421
											"key": "id",
3422
											"value": "-29029902",
3423
											"description": "(Required) "
3424
										}
3425
									]
3426
								}
3427
							},
3428
							"status": "OK",
3429
							"code": 200,
3430
							"_postman_previewlanguage": "text",
3431
							"header": [
3432
								{
3433
									"key": "Content-Type",
3434
									"value": "*/*"
3435
								}
3436
							],
3437
							"cookie": [],
3438
							"body": ""
3439
						},
3440
						{
3441
							"name": "Not Found",
3442
							"originalRequest": {
3443
								"method": "GET",
3444
								"header": [],
3445
								"url": {
3446
									"raw": "{{baseUrl}}/users/:id",
3447
									"host": [
3448
										"{{baseUrl}}"
3449
									],
3450
									"path": [
3451
										"users",
3452
										":id"
3453
									],
3454
									"variable": [
3455
										{
3456
											"key": "id",
3457
											"value": "-29029902",
3458
											"description": "(Required) "
3459
										}
3460
									]
3461
								}
3462
							},
3463
							"status": "Not Found",
3464
							"code": 404,
3465
							"_postman_previewlanguage": "text",
3466
							"header": [
3467
								{
3468
									"key": "Content-Type",
3469
									"value": "*/*"
3470
								}
3471
							],
3472
							"cookie": [],
3473
							"body": ""
3474
						},
3475
						{
3476
							"name": "Conflict",
3477
							"originalRequest": {
3478
								"method": "GET",
3479
								"header": [],
3480
								"url": {
3481
									"raw": "{{baseUrl}}/users/:id",
3482
									"host": [
3483
										"{{baseUrl}}"
3484
									],
3485
									"path": [
3486
										"users",
3487
										":id"
3488
									],
3489
									"variable": [
3490
										{
3491
											"key": "id",
3492
											"value": "-29029902",
3493
											"description": "(Required) "
3494
										}
3495
									]
3496
								}
3497
							},
3498
							"status": "Conflict",
3499
							"code": 409,
3500
							"_postman_previewlanguage": "text",
3501
							"header": [
3502
								{
3503
									"key": "Content-Type",
3504
									"value": "*/*"
3505
								}
3506
							],
3507
							"cookie": [],
3508
							"body": ""
3509
						},
3510
						{
3511
							"name": "Internal Server Error",
3512
							"originalRequest": {
3513
								"method": "GET",
3514
								"header": [],
3515
								"url": {
3516
									"raw": "{{baseUrl}}/users/:id",
3517
									"host": [
3518
										"{{baseUrl}}"
3519
									],
3520
									"path": [
3521
										"users",
3522
										":id"
3523
									],
3524
									"variable": [
3525
										{
3526
											"key": "id",
3527
											"value": "-29029902",
3528
											"description": "(Required) "
3529
										}
3530
									]
3531
								}
3532
							},
3533
							"status": "Internal Server Error",
3534
							"code": 500,
3535
							"_postman_previewlanguage": "text",
3536
							"header": [
3537
								{
3538
									"key": "Content-Type",
3539
									"value": "*/*"
3540
								}
3541
							],
3542
							"cookie": [],
3543
							"body": ""
3544
						}
3545
					]
3546
				},
3547
				{
3548
					"name": "Genre  id=9999 get not found",
3549
					"event": [
3550
						{
3551
							"listen": "test",
3552
							"script": {
3553
								"exec": [
3554
									"pm.test(\"Status code is 404\", function () {\r",
3555
									"    pm.response.to.have.status(404);\r",
3556
									"});"
3557
								],
3558
								"type": "text/javascript"
3559
							}
3560
						}
3561
					],
3562
					"request": {
3563
						"method": "GET",
3564
						"header": [
3565
							{
3566
								"key": "Accept",
3567
								"value": "*/*"
3568
							}
3569
						],
3570
						"url": {
3571
							"raw": "{{baseUrl}}/genres/:id",
3572
							"host": [
3573
								"{{baseUrl}}"
3574
							],
3575
							"path": [
3576
								"genres",
3577
								":id"
3578
							],
3579
							"variable": [
3580
								{
3581
									"key": "id",
3582
									"value": "9999",
3583
									"description": "(Required) "
3584
								}
3585
							]
3586
						}
3587
					},
3588
					"response": [
3589
						{
3590
							"name": "OK",
3591
							"originalRequest": {
3592
								"method": "GET",
3593
								"header": [],
3594
								"url": {
3595
									"raw": "{{baseUrl}}/users/:id",
3596
									"host": [
3597
										"{{baseUrl}}"
3598
									],
3599
									"path": [
3600
										"users",
3601
										":id"
3602
									],
3603
									"variable": [
3604
										{
3605
											"key": "id",
3606
											"value": "-29029902",
3607
											"description": "(Required) "
3608
										}
3609
									]
3610
								}
3611
							},
3612
							"status": "OK",
3613
							"code": 200,
3614
							"_postman_previewlanguage": "text",
3615
							"header": [
3616
								{
3617
									"key": "Content-Type",
3618
									"value": "*/*"
3619
								}
3620
							],
3621
							"cookie": [],
3622
							"body": ""
3623
						},
3624
						{
3625
							"name": "Not Found",
3626
							"originalRequest": {
3627
								"method": "GET",
3628
								"header": [],
3629
								"url": {
3630
									"raw": "{{baseUrl}}/users/:id",
3631
									"host": [
3632
										"{{baseUrl}}"
3633
									],
3634
									"path": [
3635
										"users",
3636
										":id"
3637
									],
3638
									"variable": [
3639
										{
3640
											"key": "id",
3641
											"value": "-29029902",
3642
											"description": "(Required) "
3643
										}
3644
									]
3645
								}
3646
							},
3647
							"status": "Not Found",
3648
							"code": 404,
3649
							"_postman_previewlanguage": "text",
3650
							"header": [
3651
								{
3652
									"key": "Content-Type",
3653
									"value": "*/*"
3654
								}
3655
							],
3656
							"cookie": [],
3657
							"body": ""
3658
						},
3659
						{
3660
							"name": "Conflict",
3661
							"originalRequest": {
3662
								"method": "GET",
3663
								"header": [],
3664
								"url": {
3665
									"raw": "{{baseUrl}}/users/:id",
3666
									"host": [
3667
										"{{baseUrl}}"
3668
									],
3669
									"path": [
3670
										"users",
3671
										":id"
3672
									],
3673
									"variable": [
3674
										{
3675
											"key": "id",
3676
											"value": "-29029902",
3677
											"description": "(Required) "
3678
										}
3679
									]
3680
								}
3681
							},
3682
							"status": "Conflict",
3683
							"code": 409,
3684
							"_postman_previewlanguage": "text",
3685
							"header": [
3686
								{
3687
									"key": "Content-Type",
3688
									"value": "*/*"
3689
								}
3690
							],
3691
							"cookie": [],
3692
							"body": ""
3693
						},
3694
						{
3695
							"name": "Internal Server Error",
3696
							"originalRequest": {
3697
								"method": "GET",
3698
								"header": [],
3699
								"url": {
3700
									"raw": "{{baseUrl}}/users/:id",
3701
									"host": [
3702
										"{{baseUrl}}"
3703
									],
3704
									"path": [
3705
										"users",
3706
										":id"
3707
									],
3708
									"variable": [
3709
										{
3710
											"key": "id",
3711
											"value": "-29029902",
3712
											"description": "(Required) "
3713
										}
3714
									]
3715
								}
3716
							},
3717
							"status": "Internal Server Error",
3718
							"code": 500,
3719
							"_postman_previewlanguage": "text",
3720
							"header": [
3721
								{
3722
									"key": "Content-Type",
3723
									"value": "*/*"
3724
								}
3725
							],
3726
							"cookie": [],
3727
							"body": ""
3728
						}
3729
					]
3730
				},
3731
				{
3732
					"name": "Genre get All",
3733
					"event": [
3734
						{
3735
							"listen": "test",
3736
							"script": {
3737
								"exec": [
3738
									"pm.test(\"Status code is 200\", function () {\r",
3739
									"    pm.response.to.be.ok;\r",
3740
									"});\r",
3741
									"pm.test(\"Test list genre response\", function () {\r",
3742
									"    pm.response.to.be.withBody;\r",
3743
									"    pm.response.to.be.json;\r",
3744
									"    var jsonData = pm.response.json();\r",
3745
									"    pm.expect(jsonData.length, 'List length must be 6').to.eql(6);\r",
3746
									"});\r",
3747
									"pm.test(\"Test genre[0] 'id' field\", function () {\r",
3748
									"    var jsonData = pm.response.json();\r",
3749
									"    pm.expect(jsonData[0]).to.have.property('id');\r",
3750
									"    pm.expect(jsonData[0].id, '\"id\" must be 1').to.eql(1);\r",
3751
									"});\r",
3752
									"pm.test(\"Test genre[0] 'name' field\", function () {\r",
3753
									"    var jsonData = pm.response.json();\r",
3754
									"    pm.expect(jsonData[0]).to.have.property('name');\r",
3755
									"    pm.expect(jsonData[0].name, '\"name\" must be \"Комедия\"').to.eql('Комедия');\r",
3756
									"});\r",
3757
									"pm.test(\"Test genre[1] 'id' field\", function () {\r",
3758
									"    var jsonData = pm.response.json();\r",
3759
									"    pm.expect(jsonData[1]).to.have.property('id');\r",
3760
									"    pm.expect(jsonData[1].id, '\"id\" must be 2').to.eql(2);\r",
3761
									"});\r",
3762
									"pm.test(\"Test genre[1] 'name' field\", function () {\r",
3763
									"    var jsonData = pm.response.json();\r",
3764
									"    pm.expect(jsonData[1]).to.have.property('name');\r",
3765
									"    pm.expect(jsonData[1].name, '\"name\" must be \"Драма\"').to.eql('Драма');\r",
3766
									"});\r",
3767
									"pm.test(\"Test genre[2] 'id' field\", function () {\r",
3768
									"    var jsonData = pm.response.json();\r",
3769
									"    pm.expect(jsonData[2]).to.have.property('id');\r",
3770
									"    pm.expect(jsonData[2].id, '\"id\" must be 3').to.eql(3);\r",
3771
									"});\r",
3772
									"pm.test(\"Test genre[2] 'name' field\", function () {\r",
3773
									"    var jsonData = pm.response.json();\r",
3774
									"    pm.expect(jsonData[2]).to.have.property('name');\r",
3775
									"    pm.expect(jsonData[2].name, '\"name\" must be \"Мультфильм\"').to.eql('Мультфильм');\r",
3776
									"});\r",
3777
									"pm.test(\"Test genre[3] 'id' field\", function () {\r",
3778
									"    var jsonData = pm.response.json();\r",
3779
									"    pm.expect(jsonData[3]).to.have.property('id');\r",
3780
									"    pm.expect(jsonData[3].id, '\"id\" must be 4').to.eql(4);\r",
3781
									"});\r",
3782
									"pm.test(\"Test genre[3] 'name' field\", function () {\r",
3783
									"    var jsonData = pm.response.json();\r",
3784
									"    pm.expect(jsonData[3]).to.have.property('name');\r",
3785
									"    pm.expect(jsonData[3].name, '\"name\" must be \"Триллер\"').to.eql('Триллер');\r",
3786
									"});\r",
3787
									"pm.test(\"Test genre[4] 'id' field\", function () {\r",
3788
									"    var jsonData = pm.response.json();\r",
3789
									"    pm.expect(jsonData[4]).to.have.property('id');\r",
3790
									"    pm.expect(jsonData[4].id, '\"id\" must be 5').to.eql(5);\r",
3791
									"});\r",
3792
									"pm.test(\"Test genre[4] 'name' field\", function () {\r",
3793
									"    var jsonData = pm.response.json();\r",
3794
									"    pm.expect(jsonData[4]).to.have.property('name');\r",
3795
									"    pm.expect(jsonData[4].name, '\"name\" must be \"Документальный\"').to.eql('Документальный');\r",
3796
									"});\r",
3797
									"pm.test(\"Test genre[5] 'id' field\", function () {\r",
3798
									"    var jsonData = pm.response.json();\r",
3799
									"    pm.expect(jsonData[5]).to.have.property('id');\r",
3800
									"    pm.expect(jsonData[5].id, '\"id\" must be 6').to.eql(6);\r",
3801
									"});\r",
3802
									"pm.test(\"Test genre[5] 'name' field\", function () {\r",
3803
									"    var jsonData = pm.response.json();\r",
3804
									"    pm.expect(jsonData[5]).to.have.property('name');\r",
3805
									"    pm.expect(jsonData[5].name, '\"name\" must be \"Боевик\"').to.eql('Боевик');\r",
3806
									"});\r",
3807
									"\r",
3808
									""
3809
								],
3810
								"type": "text/javascript"
3811
							}
3812
						}
3813
					],
3814
					"request": {
3815
						"method": "GET",
3816
						"header": [
3817
							{
3818
								"key": "Accept",
3819
								"value": "*/*"
3820
							}
3821
						],
3822
						"url": {
3823
							"raw": "{{baseUrl}}/genres",
3824
							"host": [
3825
								"{{baseUrl}}"
3826
							],
3827
							"path": [
3828
								"genres"
3829
							]
3830
						}
3831
					},
3832
					"response": [
3833
						{
3834
							"name": "OK",
3835
							"originalRequest": {
3836
								"method": "GET",
3837
								"header": [],
3838
								"url": {
3839
									"raw": "{{baseUrl}}/users",
3840
									"host": [
3841
										"{{baseUrl}}"
3842
									],
3843
									"path": [
3844
										"users"
3845
									]
3846
								}
3847
							},
3848
							"status": "OK",
3849
							"code": 200,
3850
							"_postman_previewlanguage": "text",
3851
							"header": [
3852
								{
3853
									"key": "Content-Type",
3854
									"value": "*/*"
3855
								}
3856
							],
3857
							"cookie": [],
3858
							"body": ""
3859
						}
3860
					]
3861
				},
3862
				{
3863
					"name": "Film get with genre",
3864
					"event": [
3865
						{
3866
							"listen": "test",
3867
							"script": {
3868
								"exec": [
3869
									"pm.test(\"Status code is 200\", function () {\r",
3870
									"    pm.response.to.be.ok;\r",
3871
									"});\r",
3872
									"pm.test(\"Get film response\", function () {\r",
3873
									"    pm.response.to.be.withBody;\r",
3874
									"    pm.response.to.be.json;\r",
3875
									"});\r",
3876
									"pm.test(\"Test film 'id' field\", function () {\r",
3877
									"    var jsonData = pm.response.json();\r",
3878
									"    pm.expect(jsonData).to.have.property('id');\r",
3879
									"    var filmId = pm.collectionVariables.get(\"id\");\r",
3880
									"    pm.expect(jsonData.id, `\"id\" must be ${filmId}`).to.eql(filmId);\r",
3881
									"});\r",
3882
									"pm.test(\"Test film 'name' field\", function () {\r",
3883
									"    var jsonData = pm.response.json();\r",
3884
									"    pm.expect(jsonData).to.have.property('name');\r",
3885
									"    pm.expect(jsonData.name, '\"name\" must be \"Film Updated\"').to.eql('Film Updated');\r",
3886
									"});\r",
3887
									"pm.test(\"Test film 'description' field\", function () {\r",
3888
									"    var jsonData = pm.response.json();\r",
3889
									"    pm.expect(jsonData).to.have.property('description');\r",
3890
									"    pm.expect(jsonData.description, '\"description\" must be \"New film update decription\"').to.eql('New film update decription');\r",
3891
									"});\r",
3892
									"pm.test(\"Test film 'releaseDate' field\", function () {\r",
3893
									"    var jsonData = pm.response.json();\r",
3894
									"    pm.expect(jsonData).to.have.property('releaseDate');\r",
3895
									"    pm.expect(jsonData.releaseDate, '\"releaseDate\" field must be \"1989-04-17\"').to.eql('1989-04-17');\r",
3896
									"});\r",
3897
									"pm.test(\"Test film 'duration' field\", function () {\r",
3898
									"    var jsonData = pm.response.json();\r",
3899
									"    pm.expect(jsonData).to.have.property('duration');\r",
3900
									"    pm.expect(jsonData.duration, '\"duration\" field must be 190').to.eql(190);    \r",
3901
									"});\r",
3902
									"pm.test(\"Test film 'mpa' field\", function () {\r",
3903
									"    var jsonData = pm.response.json();\r",
3904
									"    pm.expect(jsonData).to.have.property('mpa');\r",
3905
									"    pm.expect(jsonData.mpa).to.have.property('id');\r",
3906
									"    pm.expect(jsonData.mpa.id, '\"mpa.id\" field must be 5').to.eql(5);    \r",
3907
									"    pm.expect(jsonData.mpa).to.have.property('name');\r",
3908
									"    pm.expect(jsonData.mpa.name, '\"mpa.name\" field must be \"PG\"').to.eql(\"NC-17\");    \r",
3909
									"});\r",
3910
									"\r",
3911
									"pm.test(\"Test film 'genres' field\", function () {\r",
3912
									"    var jsonData = pm.response.json();\r",
3913
									"    pm.expect(jsonData).to.have.property('genres');\r",
3914
									"    pm.expect(jsonData.genres.length, '\"genres\" field must be have 1 genre').to.eql(1);\r",
3915
									"    pm.expect(jsonData.genres[0]).to.have.property('id');\r",
3916
									"    pm.expect(jsonData.genres[0].id, '\"genres[0].id\" field must be 2').to.eql(2);    \r",
3917
									"    pm.expect(jsonData.genres[0]).to.have.property('name');\r",
3918
									"    pm.expect(jsonData.genres[0].name, '\"genres[0].name\" field must be \"Драма\"').to.eql('Драма');\r",
3919
									"});\r",
3920
									""
3921
								],
3922
								"type": "text/javascript",
3923
								"packages": {}
3924
							}
3925
						},
3926
						{
3927
							"listen": "prerequest",
3928
							"script": {
3929
								"exec": [
3930
									"const main = async () => {\r",
3931
									"    const api = new API(pm);\r",
3932
									"    const rnd = new RandomUtils();\r",
3933
									"\r",
3934
									"    try {\r",
3935
									"        film = await api.addFilm({\r",
3936
									"            \"name\": \"Film Updated\",\r",
3937
									"            \"releaseDate\": \"1989-04-17\",\r",
3938
									"            \"description\": \"New film update decription\",\r",
3939
									"            \"duration\": 190,\r",
3940
									"            \"rate\": 4,\r",
3941
									"            \"mpa\": { \"id\": 5},\r",
3942
									"            \"genres\": [{ \"id\": 2}]\r",
3943
									"        });\r",
3944
									"        pm.collectionVariables.set(\"id\", film.id);\r",
3945
									"    } catch(err) {\r",
3946
									"        console.error(\"Ошибка при подготовке тестовых данных.\", err);\r",
3947
									"    }\r",
3948
									"\r",
3949
									"};\r",
3950
									"\r",
3951
									"const interval = setInterval(() => {}, 1000);\r",
3952
									"\r",
3953
									"setTimeout(async () => \r",
3954
									"    {\r",
3955
									"        try {\r",
3956
									"            await main();\r",
3957
									"        } catch (e) {\r",
3958
									"            console.error(e);\r",
3959
									"        } finally {\r",
3960
									"            clearInterval(interval);\r",
3961
									"        }\r",
3962
									"    },  \r",
3963
									"    100 \r",
3964
									");"
3965
								],
3966
								"type": "text/javascript",
3967
								"packages": {}
3968
							}
3969
						}
3970
					],
3971
					"request": {
3972
						"method": "GET",
3973
						"header": [
3974
							{
3975
								"key": "Accept",
3976
								"value": "*/*"
3977
							}
3978
						],
3979
						"url": {
3980
							"raw": "{{baseUrl}}/films/:id",
3981
							"host": [
3982
								"{{baseUrl}}"
3983
							],
3984
							"path": [
3985
								"films",
3986
								":id"
3987
							],
3988
							"variable": [
3989
								{
3990
									"key": "id",
3991
									"value": "{{id}}",
3992
									"description": "(Required) "
3993
								}
3994
							]
3995
						}
3996
					},
3997
					"response": [
3998
						{
3999
							"name": "OK",
4000
							"originalRequest": {
4001
								"method": "GET",
4002
								"header": [],
4003
								"url": {
4004
									"raw": "{{baseUrl}}/films/:id",
4005
									"host": [
4006
										"{{baseUrl}}"
4007
									],
4008
									"path": [
4009
										"films",
4010
										":id"
4011
									],
4012
									"variable": [
4013
										{
4014
											"key": "id",
4015
											"value": "-29029902",
4016
											"description": "(Required) "
4017
										}
4018
									]
4019
								}
4020
							},
4021
							"status": "OK",
4022
							"code": 200,
4023
							"_postman_previewlanguage": "text",
4024
							"header": [
4025
								{
4026
									"key": "Content-Type",
4027
									"value": "*/*"
4028
								}
4029
							],
4030
							"cookie": [],
4031
							"body": ""
4032
						},
4033
						{
4034
							"name": "Not Found",
4035
							"originalRequest": {
4036
								"method": "GET",
4037
								"header": [],
4038
								"url": {
4039
									"raw": "{{baseUrl}}/films/:id",
4040
									"host": [
4041
										"{{baseUrl}}"
4042
									],
4043
									"path": [
4044
										"films",
4045
										":id"
4046
									],
4047
									"variable": [
4048
										{
4049
											"key": "id",
4050
											"value": "-29029902",
4051
											"description": "(Required) "
4052
										}
4053
									]
4054
								}
4055
							},
4056
							"status": "Not Found",
4057
							"code": 404,
4058
							"_postman_previewlanguage": "text",
4059
							"header": [
4060
								{
4061
									"key": "Content-Type",
4062
									"value": "*/*"
4063
								}
4064
							],
4065
							"cookie": [],
4066
							"body": ""
4067
						},
4068
						{
4069
							"name": "Conflict",
4070
							"originalRequest": {
4071
								"method": "GET",
4072
								"header": [],
4073
								"url": {
4074
									"raw": "{{baseUrl}}/films/:id",
4075
									"host": [
4076
										"{{baseUrl}}"
4077
									],
4078
									"path": [
4079
										"films",
4080
										":id"
4081
									],
4082
									"variable": [
4083
										{
4084
											"key": "id",
4085
											"value": "-29029902",
4086
											"description": "(Required) "
4087
										}
4088
									]
4089
								}
4090
							},
4091
							"status": "Conflict",
4092
							"code": 409,
4093
							"_postman_previewlanguage": "text",
4094
							"header": [
4095
								{
4096
									"key": "Content-Type",
4097
									"value": "*/*"
4098
								}
4099
							],
4100
							"cookie": [],
4101
							"body": ""
4102
						},
4103
						{
4104
							"name": "Internal Server Error",
4105
							"originalRequest": {
4106
								"method": "GET",
4107
								"header": [],
4108
								"url": {
4109
									"raw": "{{baseUrl}}/films/:id",
4110
									"host": [
4111
										"{{baseUrl}}"
4112
									],
4113
									"path": [
4114
										"films",
4115
										":id"
4116
									],
4117
									"variable": [
4118
										{
4119
											"key": "id",
4120
											"value": "-29029902",
4121
											"description": "(Required) "
4122
										}
4123
									]
4124
								}
4125
							},
4126
							"status": "Internal Server Error",
4127
							"code": 500,
4128
							"_postman_previewlanguage": "text",
4129
							"header": [
4130
								{
4131
									"key": "Content-Type",
4132
									"value": "*/*"
4133
								}
4134
							],
4135
							"cookie": [],
4136
							"body": ""
4137
						}
4138
					]
4139
				},
4140
				{
4141
					"name": "Film get without genre",
4142
					"event": [
4143
						{
4144
							"listen": "test",
4145
							"script": {
4146
								"exec": [
4147
									"pm.test(\"Status code is 200\", function () {\r",
4148
									"    pm.response.to.be.ok;\r",
4149
									"});\r",
4150
									"pm.test(\"Get film response\", function () {\r",
4151
									"    pm.response.to.be.withBody;\r",
4152
									"    pm.response.to.be.json;\r",
4153
									"});\r",
4154
									"pm.test(\"Test film 'id' field\", function () {\r",
4155
									"    var jsonData = pm.response.json();\r",
4156
									"    pm.expect(jsonData).to.have.property('id');\r",
4157
									"    var filmId = pm.collectionVariables.get(\"id\");\r",
4158
									"    pm.expect(jsonData.id, `\"id\" must be ${filmId}`).to.eql(filmId);\r",
4159
									"});\r",
4160
									"pm.test(\"Test film 'name' field\", function () {\r",
4161
									"    var jsonData = pm.response.json();\r",
4162
									"    pm.expect(jsonData).to.have.property('name');\r",
4163
									"    pm.expect(jsonData.name, '\"name\" must be \"New film\"').to.eql('New film');\r",
4164
									"});\r",
4165
									"pm.test(\"Test film 'description' field\", function () {\r",
4166
									"    var jsonData = pm.response.json();\r",
4167
									"    pm.expect(jsonData).to.have.property('description');\r",
4168
									"    pm.expect(jsonData.description, '\"description\" must be \"New film about friends\"').to.eql('New film about friends');\r",
4169
									"});\r",
4170
									"pm.test(\"Test film 'releaseDate' field\", function () {\r",
4171
									"    var jsonData = pm.response.json();\r",
4172
									"    pm.expect(jsonData).to.have.property('releaseDate');\r",
4173
									"    pm.expect(jsonData.releaseDate, '\"releaseDate\" field must be \"1999-04-30\"').to.eql('1999-04-30');\r",
4174
									"});\r",
4175
									"pm.test(\"Test film 'duration' field\", function () {\r",
4176
									"    var jsonData = pm.response.json();\r",
4177
									"    pm.expect(jsonData).to.have.property('duration');\r",
4178
									"    pm.expect(jsonData.duration, '\"duration\" field must be 120').to.eql(120);    \r",
4179
									"});\r",
4180
									"pm.test(\"Test film 'mpa' field\", function () {\r",
4181
									"    var jsonData = pm.response.json();\r",
4182
									"    pm.expect(jsonData).to.have.property('mpa');\r",
4183
									"    pm.expect(jsonData.mpa).to.have.property('id');\r",
4184
									"    pm.expect(jsonData.mpa.id, '\"mpa.id\" field must be 3').to.eql(3);    \r",
4185
									"    pm.expect(jsonData.mpa).to.have.property('name');\r",
4186
									"    pm.expect(jsonData.mpa.name, '\"mpa.name\" field must be \"PG-13\"').to.eql(\"PG-13\");    \r",
4187
									"});\r",
4188
									"\r",
4189
									"pm.test(\"Test film 'genres' field\", function () {\r",
4190
									"    var jsonData = pm.response.json();\r",
4191
									"    pm.expect(jsonData).to.have.property('genres');\r",
4192
									"    if (jsonData.genres != null) {\r",
4193
									"        pm.expect(jsonData.genres.length, '\"genres\" field must be have 0 genre').to.eql(0);\r",
4194
									"    }\r",
4195
									"});\r",
4196
									""
4197
								],
4198
								"type": "text/javascript",
4199
								"packages": {}
4200
							}
4201
						},
4202
						{
4203
							"listen": "prerequest",
4204
							"script": {
4205
								"exec": [
4206
									"const main = async () => {\r",
4207
									"    const api = new API(pm);\r",
4208
									"    const rnd = new RandomUtils();\r",
4209
									"\r",
4210
									"    try {\r",
4211
									"        film = await api.addFilm({\r",
4212
									"            \"name\": \"New film\",\r",
4213
									"            \"releaseDate\": \"1999-04-30\",\r",
4214
									"            \"description\": \"New film about friends\",\r",
4215
									"            \"duration\": 120,\r",
4216
									"            \"mpa\": { \"id\": 3}\r",
4217
									"        });\r",
4218
									"        pm.collectionVariables.set(\"id\", film.id);\r",
4219
									"    } catch(err) {\r",
4220
									"        console.error(\"Ошибка при подготовке тестовых данных.\", err);\r",
4221
									"    }\r",
4222
									"\r",
4223
									"};\r",
4224
									"\r",
4225
									"const interval = setInterval(() => {}, 1000);\r",
4226
									"\r",
4227
									"setTimeout(async () => \r",
4228
									"    {\r",
4229
									"        try {\r",
4230
									"            await main();\r",
4231
									"        } catch (e) {\r",
4232
									"            console.error(e);\r",
4233
									"        } finally {\r",
4234
									"            clearInterval(interval);\r",
4235
									"        }\r",
4236
									"    },  \r",
4237
									"    100 \r",
4238
									");"
4239
								],
4240
								"type": "text/javascript",
4241
								"packages": {}
4242
							}
4243
						}
4244
					],
4245
					"request": {
4246
						"method": "GET",
4247
						"header": [
4248
							{
4249
								"key": "Accept",
4250
								"value": "*/*"
4251
							}
4252
						],
4253
						"url": {
4254
							"raw": "{{baseUrl}}/films/:id",
4255
							"host": [
4256
								"{{baseUrl}}"
4257
							],
4258
							"path": [
4259
								"films",
4260
								":id"
4261
							],
4262
							"variable": [
4263
								{
4264
									"key": "id",
4265
									"value": "{{id}}",
4266
									"description": "(Required) "
4267
								}
4268
							]
4269
						}
4270
					},
4271
					"response": [
4272
						{
4273
							"name": "OK",
4274
							"originalRequest": {
4275
								"method": "GET",
4276
								"header": [],
4277
								"url": {
4278
									"raw": "{{baseUrl}}/films/:id",
4279
									"host": [
4280
										"{{baseUrl}}"
4281
									],
4282
									"path": [
4283
										"films",
4284
										":id"
4285
									],
4286
									"variable": [
4287
										{
4288
											"key": "id",
4289
											"value": "-29029902",
4290
											"description": "(Required) "
4291
										}
4292
									]
4293
								}
4294
							},
4295
							"status": "OK",
4296
							"code": 200,
4297
							"_postman_previewlanguage": "text",
4298
							"header": [
4299
								{
4300
									"key": "Content-Type",
4301
									"value": "*/*"
4302
								}
4303
							],
4304
							"cookie": [],
4305
							"body": ""
4306
						},
4307
						{
4308
							"name": "Not Found",
4309
							"originalRequest": {
4310
								"method": "GET",
4311
								"header": [],
4312
								"url": {
4313
									"raw": "{{baseUrl}}/films/:id",
4314
									"host": [
4315
										"{{baseUrl}}"
4316
									],
4317
									"path": [
4318
										"films",
4319
										":id"
4320
									],
4321
									"variable": [
4322
										{
4323
											"key": "id",
4324
											"value": "-29029902",
4325
											"description": "(Required) "
4326
										}
4327
									]
4328
								}
4329
							},
4330
							"status": "Not Found",
4331
							"code": 404,
4332
							"_postman_previewlanguage": "text",
4333
							"header": [
4334
								{
4335
									"key": "Content-Type",
4336
									"value": "*/*"
4337
								}
4338
							],
4339
							"cookie": [],
4340
							"body": ""
4341
						},
4342
						{
4343
							"name": "Conflict",
4344
							"originalRequest": {
4345
								"method": "GET",
4346
								"header": [],
4347
								"url": {
4348
									"raw": "{{baseUrl}}/films/:id",
4349
									"host": [
4350
										"{{baseUrl}}"
4351
									],
4352
									"path": [
4353
										"films",
4354
										":id"
4355
									],
4356
									"variable": [
4357
										{
4358
											"key": "id",
4359
											"value": "-29029902",
4360
											"description": "(Required) "
4361
										}
4362
									]
4363
								}
4364
							},
4365
							"status": "Conflict",
4366
							"code": 409,
4367
							"_postman_previewlanguage": "text",
4368
							"header": [
4369
								{
4370
									"key": "Content-Type",
4371
									"value": "*/*"
4372
								}
4373
							],
4374
							"cookie": [],
4375
							"body": ""
4376
						},
4377
						{
4378
							"name": "Internal Server Error",
4379
							"originalRequest": {
4380
								"method": "GET",
4381
								"header": [],
4382
								"url": {
4383
									"raw": "{{baseUrl}}/films/:id",
4384
									"host": [
4385
										"{{baseUrl}}"
4386
									],
4387
									"path": [
4388
										"films",
4389
										":id"
4390
									],
4391
									"variable": [
4392
										{
4393
											"key": "id",
4394
											"value": "-29029902",
4395
											"description": "(Required) "
4396
										}
4397
									]
4398
								}
4399
							},
4400
							"status": "Internal Server Error",
4401
							"code": 500,
4402
							"_postman_previewlanguage": "text",
4403
							"header": [
4404
								{
4405
									"key": "Content-Type",
4406
									"value": "*/*"
4407
								}
4408
							],
4409
							"cookie": [],
4410
							"body": ""
4411
						}
4412
					]
4413
				},
4414
				{
4415
					"name": "Film get with genres",
4416
					"event": [
4417
						{
4418
							"listen": "test",
4419
							"script": {
4420
								"exec": [
4421
									"pm.test(\"Status code is 200\", function () {\r",
4422
									"    pm.response.to.be.ok;\r",
4423
									"});\r",
4424
									"pm.test(\"Get film response\", function () {\r",
4425
									"    pm.response.to.be.withBody;\r",
4426
									"    pm.response.to.be.json;\r",
4427
									"});\r",
4428
									"pm.test(\"Test film 'id' field\", function () {\r",
4429
									"    var jsonData = pm.response.json();\r",
4430
									"    pm.expect(jsonData).to.have.property('id');\r",
4431
									"    var filmId = pm.collectionVariables.get(\"id\");\r",
4432
									"    pm.expect(jsonData.id, `\"id\" must be ${filmId}`).to.eql(filmId);\r",
4433
									"});\r",
4434
									"pm.test(\"Test film 'name' field\", function () {\r",
4435
									"    var jsonData = pm.response.json();\r",
4436
									"    pm.expect(jsonData).to.have.property('name');\r",
4437
									"    pm.expect(jsonData.name, '\"name\" must be \"New film\"').to.eql('New film');\r",
4438
									"});\r",
4439
									"pm.test(\"Test film 'description' field\", function () {\r",
4440
									"    var jsonData = pm.response.json();\r",
4441
									"    pm.expect(jsonData).to.have.property('description');\r",
4442
									"    pm.expect(jsonData.description, '\"description\" must be \"New film about friends\"').to.eql('New film about friends');\r",
4443
									"});\r",
4444
									"pm.test(\"Test film 'releaseDate' field\", function () {\r",
4445
									"    var jsonData = pm.response.json();\r",
4446
									"    pm.expect(jsonData).to.have.property('releaseDate');\r",
4447
									"    pm.expect(jsonData.releaseDate, '\"releaseDate\" field must be \"1999-04-30\"').to.eql('1999-04-30');\r",
4448
									"});\r",
4449
									"pm.test(\"Test film 'duration' field\", function () {\r",
4450
									"    var jsonData = pm.response.json();\r",
4451
									"    pm.expect(jsonData).to.have.property('duration');\r",
4452
									"    pm.expect(jsonData.duration, '\"duration\" field must be 100').to.eql(120);    \r",
4453
									"});\r",
4454
									"\r",
4455
									"pm.test(\"Test film 'mpa.id' field\", function () {\r",
4456
									"    var jsonData = pm.response.json();\r",
4457
									"    pm.expect(jsonData).to.have.property('mpa');\r",
4458
									"    pm.expect(jsonData.mpa).to.have.property('id');\r",
4459
									"    pm.expect(jsonData.mpa.id, '\"mpa.id\" field must be 3').to.eql(3);\r",
4460
									"    pm.expect(jsonData.mpa).to.have.property('name');\r",
4461
									"    pm.expect(jsonData.mpa.name, '\"mpa.name\" field must be \"PG-13\"').to.eql(\"PG-13\");\r",
4462
									"});\r",
4463
									"\r",
4464
									"pm.test(\"Test film 'genres' field\", function () {\r",
4465
									"    var jsonData = pm.response.json();\r",
4466
									"    pm.expect(jsonData).to.have.property('genres');\r",
4467
									"    pm.expect(jsonData.genres.length, '\"genres\" field must be have 3 genres').to.eql(3);\r",
4468
									"    pm.expect(jsonData.genres[0]).to.have.property('id');\r",
4469
									"    pm.expect(jsonData.genres[0].id, '\"genres[0].id\" field must be 1').to.eql(1);    \r",
4470
									"    pm.expect(jsonData.genres[0]).to.have.property('name');\r",
4471
									"    pm.expect(jsonData.genres[0].name, '\"genres[0].name\" field must be \"Комедия\"').to.eql('Комедия');\r",
4472
									"    pm.expect(jsonData.genres[1]).to.have.property('id');\r",
4473
									"    pm.expect(jsonData.genres[1].id, '\"genres[1].id\" field must be 2').to.eql(2);\r",
4474
									"    pm.expect(jsonData.genres[1]).to.have.property('name');\r",
4475
									"    pm.expect(jsonData.genres[1].name, '\"genres[1].name\" field must be \"Драма\"').to.eql('Драма');\r",
4476
									"    pm.expect(jsonData.genres[2]).to.have.property('id');\r",
4477
									"    pm.expect(jsonData.genres[2].id, '\"genres[2].id\" field must be 3').to.eql(3);\r",
4478
									"    pm.expect(jsonData.genres[2]).to.have.property('name');\r",
4479
									"    pm.expect(jsonData.genres[2].name, '\"genres[2].name\" field must be \"Мультфильм\"').to.eql('Мультфильм');\r",
4480
									"});"
4481
								],
4482
								"type": "text/javascript",
4483
								"packages": {}
4484
							}
4485
						},
4486
						{
4487
							"listen": "prerequest",
4488
							"script": {
4489
								"exec": [
4490
									"const main = async () => {\r",
4491
									"    const api = new API(pm);\r",
4492
									"    const rnd = new RandomUtils();\r",
4493
									"\r",
4494
									"    try {\r",
4495
									"        film = await api.addFilm({\r",
4496
									"            \"name\": \"New film\",\r",
4497
									"            \"releaseDate\": \"1999-04-30\",\r",
4498
									"            \"description\": \"New film about friends\",\r",
4499
									"            \"duration\": 120,\r",
4500
									"            \"mpa\": { \"id\": 3},\r",
4501
									"            \"genres\": [{ \"id\": 1}, { \"id\": 2}, { \"id\": 3}]\r",
4502
									"        });\r",
4503
									"        pm.collectionVariables.set(\"id\", film.id);\r",
4504
									"    } catch(err) {\r",
4505
									"        console.error(\"Ошибка при подготовке тестовых данных.\", err);\r",
4506
									"    }\r",
4507
									"\r",
4508
									"};\r",
4509
									"\r",
4510
									"const interval = setInterval(() => {}, 1000);\r",
4511
									"\r",
4512
									"setTimeout(async () => \r",
4513
									"    {\r",
4514
									"        try {\r",
4515
									"            await main();\r",
4516
									"        } catch (e) {\r",
4517
									"            console.error(e);\r",
4518
									"        } finally {\r",
4519
									"            clearInterval(interval);\r",
4520
									"        }\r",
4521
									"    },  \r",
4522
									"    100 \r",
4523
									");"
4524
								],
4525
								"type": "text/javascript",
4526
								"packages": {}
4527
							}
4528
						}
4529
					],
4530
					"request": {
4531
						"method": "GET",
4532
						"header": [
4533
							{
4534
								"key": "Accept",
4535
								"value": "*/*"
4536
							}
4537
						],
4538
						"url": {
4539
							"raw": "{{baseUrl}}/films/:id",
4540
							"host": [
4541
								"{{baseUrl}}"
4542
							],
4543
							"path": [
4544
								"films",
4545
								":id"
4546
							],
4547
							"variable": [
4548
								{
4549
									"key": "id",
4550
									"value": "{{id}}",
4551
									"description": "(Required) "
4552
								}
4553
							]
4554
						}
4555
					},
4556
					"response": [
4557
						{
4558
							"name": "OK",
4559
							"originalRequest": {
4560
								"method": "GET",
4561
								"header": [],
4562
								"url": {
4563
									"raw": "{{baseUrl}}/films/:id",
4564
									"host": [
4565
										"{{baseUrl}}"
4566
									],
4567
									"path": [
4568
										"films",
4569
										":id"
4570
									],
4571
									"variable": [
4572
										{
4573
											"key": "id",
4574
											"value": "-29029902",
4575
											"description": "(Required) "
4576
										}
4577
									]
4578
								}
4579
							},
4580
							"status": "OK",
4581
							"code": 200,
4582
							"_postman_previewlanguage": "text",
4583
							"header": [
4584
								{
4585
									"key": "Content-Type",
4586
									"value": "*/*"
4587
								}
4588
							],
4589
							"cookie": [],
4590
							"body": ""
4591
						},
4592
						{
4593
							"name": "Not Found",
4594
							"originalRequest": {
4595
								"method": "GET",
4596
								"header": [],
4597
								"url": {
4598
									"raw": "{{baseUrl}}/films/:id",
4599
									"host": [
4600
										"{{baseUrl}}"
4601
									],
4602
									"path": [
4603
										"films",
4604
										":id"
4605
									],
4606
									"variable": [
4607
										{
4608
											"key": "id",
4609
											"value": "-29029902",
4610
											"description": "(Required) "
4611
										}
4612
									]
4613
								}
4614
							},
4615
							"status": "Not Found",
4616
							"code": 404,
4617
							"_postman_previewlanguage": "text",
4618
							"header": [
4619
								{
4620
									"key": "Content-Type",
4621
									"value": "*/*"
4622
								}
4623
							],
4624
							"cookie": [],
4625
							"body": ""
4626
						},
4627
						{
4628
							"name": "Conflict",
4629
							"originalRequest": {
4630
								"method": "GET",
4631
								"header": [],
4632
								"url": {
4633
									"raw": "{{baseUrl}}/films/:id",
4634
									"host": [
4635
										"{{baseUrl}}"
4636
									],
4637
									"path": [
4638
										"films",
4639
										":id"
4640
									],
4641
									"variable": [
4642
										{
4643
											"key": "id",
4644
											"value": "-29029902",
4645
											"description": "(Required) "
4646
										}
4647
									]
4648
								}
4649
							},
4650
							"status": "Conflict",
4651
							"code": 409,
4652
							"_postman_previewlanguage": "text",
4653
							"header": [
4654
								{
4655
									"key": "Content-Type",
4656
									"value": "*/*"
4657
								}
4658
							],
4659
							"cookie": [],
4660
							"body": ""
4661
						},
4662
						{
4663
							"name": "Internal Server Error",
4664
							"originalRequest": {
4665
								"method": "GET",
4666
								"header": [],
4667
								"url": {
4668
									"raw": "{{baseUrl}}/films/:id",
4669
									"host": [
4670
										"{{baseUrl}}"
4671
									],
4672
									"path": [
4673
										"films",
4674
										":id"
4675
									],
4676
									"variable": [
4677
										{
4678
											"key": "id",
4679
											"value": "-29029902",
4680
											"description": "(Required) "
4681
										}
4682
									]
4683
								}
4684
							},
4685
							"status": "Internal Server Error",
4686
							"code": 500,
4687
							"_postman_previewlanguage": "text",
4688
							"header": [
4689
								{
4690
									"key": "Content-Type",
4691
									"value": "*/*"
4692
								}
4693
							],
4694
							"cookie": [],
4695
							"body": ""
4696
						}
4697
					]
4698
				},
4699
				{
4700
					"name": "Film get with genre  without duplicate",
4701
					"event": [
4702
						{
4703
							"listen": "test",
4704
							"script": {
4705
								"exec": [
4706
									"pm.test(\"Status code is 200\", function () {\r",
4707
									"    pm.response.to.be.ok;\r",
4708
									"});\r",
4709
									"pm.test(\"Get film response\", function () {\r",
4710
									"    pm.response.to.be.withBody;\r",
4711
									"    pm.response.to.be.json;\r",
4712
									"});\r",
4713
									"pm.test(\"Test film 'id' field\", function () {\r",
4714
									"    var jsonData = pm.response.json();\r",
4715
									"    pm.expect(jsonData).to.have.property('id');\r",
4716
									"    var filmId = pm.collectionVariables.get(\"id\");\r",
4717
									"    pm.expect(jsonData.id, `\"id\" must be ${filmId}`).to.eql(filmId);\r",
4718
									"});\r",
4719
									"pm.test(\"Test film 'name' field\", function () {\r",
4720
									"    var jsonData = pm.response.json();\r",
4721
									"    pm.expect(jsonData).to.have.property('name');\r",
4722
									"    pm.expect(jsonData.name, '\"name\" must be \"New film\"').to.eql('New film');\r",
4723
									"});\r",
4724
									"pm.test(\"Test film 'description' field\", function () {\r",
4725
									"    var jsonData = pm.response.json();\r",
4726
									"    pm.expect(jsonData).to.have.property('description');\r",
4727
									"    pm.expect(jsonData.description, '\"description\" must be \"New film about friends\"').to.eql('New film about friends');\r",
4728
									"});\r",
4729
									"pm.test(\"Test film 'releaseDate' field\", function () {\r",
4730
									"    var jsonData = pm.response.json();\r",
4731
									"    pm.expect(jsonData).to.have.property('releaseDate');\r",
4732
									"    pm.expect(jsonData.releaseDate, '\"releaseDate\" field must be \"1999-04-30\"').to.eql('1999-04-30');\r",
4733
									"});\r",
4734
									"pm.test(\"Test film 'duration' field\", function () {\r",
4735
									"    var jsonData = pm.response.json();\r",
4736
									"    pm.expect(jsonData).to.have.property('duration');\r",
4737
									"    pm.expect(jsonData.duration, '\"duration\" field must be 100').to.eql(120);    \r",
4738
									"});\r",
4739
									"\r",
4740
									"pm.test(\"Test film 'mpa.id' field\", function () {\r",
4741
									"    var jsonData = pm.response.json();\r",
4742
									"    pm.expect(jsonData).to.have.property('mpa');\r",
4743
									"    pm.expect(jsonData.mpa).to.have.property('id');\r",
4744
									"    pm.expect(jsonData.mpa.id, '\"mpa.id\" field must be 3').to.eql(3);\r",
4745
									"    pm.expect(jsonData.mpa).to.have.property('name');\r",
4746
									"    pm.expect(jsonData.mpa.name, '\"mpa.name\" field must be \"PG-13\"').to.eql(\"PG-13\");\r",
4747
									"});\r",
4748
									"\r",
4749
									"pm.test(\"Test film 'genres' field\", function () {\r",
4750
									"    var jsonData = pm.response.json();\r",
4751
									"    pm.expect(jsonData).to.have.property('genres');\r",
4752
									"    pm.expect(jsonData.genres.length, '\"genres\" field must be have 2 genres').to.eql(2);\r",
4753
									"    pm.expect(jsonData.genres[0]).to.have.property('id');\r",
4754
									"    pm.expect(jsonData.genres[0].id, '\"genres[0].id\" field must be 1').to.eql(1);    \r",
4755
									"    pm.expect(jsonData.genres[0]).to.have.property('name');\r",
4756
									"    pm.expect(jsonData.genres[0].name, '\"genres[0].name\" field must be \"Комедия\"').to.eql('Комедия');\r",
4757
									"    pm.expect(jsonData.genres[1]).to.have.property('id');\r",
4758
									"    pm.expect(jsonData.genres[1].id, '\"genres[1].id\" field must be 2').to.eql(2);\r",
4759
									"    pm.expect(jsonData.genres[1]).to.have.property('name');\r",
4760
									"    pm.expect(jsonData.genres[1].name, '\"genres[1].name\" field must be \"Драма\"').to.eql('Драма');\r",
4761
									"});"
4762
								],
4763
								"type": "text/javascript",
4764
								"packages": {}
4765
							}
4766
						},
4767
						{
4768
							"listen": "prerequest",
4769
							"script": {
4770
								"exec": [
4771
									"const main = async () => {\r",
4772
									"    const api = new API(pm);\r",
4773
									"    const rnd = new RandomUtils();\r",
4774
									"\r",
4775
									"    try {\r",
4776
									"        film = await api.addFilm({\r",
4777
									"            \"name\": \"New film\",\r",
4778
									"            \"releaseDate\": \"1999-04-30\",\r",
4779
									"            \"description\": \"New film about friends\",\r",
4780
									"            \"duration\": 120,\r",
4781
									"            \"mpa\": { \"id\": 3},\r",
4782
									"            \"genres\": [{ \"id\": 1}, { \"id\": 2}, { \"id\": 1}]\r",
4783
									"        });\r",
4784
									"        pm.collectionVariables.set(\"id\", film.id);\r",
4785
									"    } catch(err) {\r",
4786
									"        console.error(\"Ошибка при подготовке тестовых данных.\", err);\r",
4787
									"    }\r",
4788
									"\r",
4789
									"};\r",
4790
									"\r",
4791
									"const interval = setInterval(() => {}, 1000);\r",
4792
									"\r",
4793
									"setTimeout(async () => \r",
4794
									"    {\r",
4795
									"        try {\r",
4796
									"            await main();\r",
4797
									"        } catch (e) {\r",
4798
									"            console.error(e);\r",
4799
									"        } finally {\r",
4800
									"            clearInterval(interval);\r",
4801
									"        }\r",
4802
									"    },  \r",
4803
									"    100 \r",
4804
									");"
4805
								],
4806
								"type": "text/javascript",
4807
								"packages": {}
4808
							}
4809
						}
4810
					],
4811
					"request": {
4812
						"method": "GET",
4813
						"header": [
4814
							{
4815
								"key": "Accept",
4816
								"value": "*/*"
4817
							}
4818
						],
4819
						"url": {
4820
							"raw": "{{baseUrl}}/films/:id",
4821
							"host": [
4822
								"{{baseUrl}}"
4823
							],
4824
							"path": [
4825
								"films",
4826
								":id"
4827
							],
4828
							"variable": [
4829
								{
4830
									"key": "id",
4831
									"value": "{{id}}",
4832
									"description": "(Required) "
4833
								}
4834
							]
4835
						}
4836
					},
4837
					"response": [
4838
						{
4839
							"name": "OK",
4840
							"originalRequest": {
4841
								"method": "GET",
4842
								"header": [],
4843
								"url": {
4844
									"raw": "{{baseUrl}}/films/:id",
4845
									"host": [
4846
										"{{baseUrl}}"
4847
									],
4848
									"path": [
4849
										"films",
4850
										":id"
4851
									],
4852
									"variable": [
4853
										{
4854
											"key": "id",
4855
											"value": "-29029902",
4856
											"description": "(Required) "
4857
										}
4858
									]
4859
								}
4860
							},
4861
							"status": "OK",
4862
							"code": 200,
4863
							"_postman_previewlanguage": "text",
4864
							"header": [
4865
								{
4866
									"key": "Content-Type",
4867
									"value": "*/*"
4868
								}
4869
							],
4870
							"cookie": [],
4871
							"body": ""
4872
						},
4873
						{
4874
							"name": "Not Found",
4875
							"originalRequest": {
4876
								"method": "GET",
4877
								"header": [],
4878
								"url": {
4879
									"raw": "{{baseUrl}}/films/:id",
4880
									"host": [
4881
										"{{baseUrl}}"
4882
									],
4883
									"path": [
4884
										"films",
4885
										":id"
4886
									],
4887
									"variable": [
4888
										{
4889
											"key": "id",
4890
											"value": "-29029902",
4891
											"description": "(Required) "
4892
										}
4893
									]
4894
								}
4895
							},
4896
							"status": "Not Found",
4897
							"code": 404,
4898
							"_postman_previewlanguage": "text",
4899
							"header": [
4900
								{
4901
									"key": "Content-Type",
4902
									"value": "*/*"
4903
								}
4904
							],
4905
							"cookie": [],
4906
							"body": ""
4907
						},
4908
						{
4909
							"name": "Conflict",
4910
							"originalRequest": {
4911
								"method": "GET",
4912
								"header": [],
4913
								"url": {
4914
									"raw": "{{baseUrl}}/films/:id",
4915
									"host": [
4916
										"{{baseUrl}}"
4917
									],
4918
									"path": [
4919
										"films",
4920
										":id"
4921
									],
4922
									"variable": [
4923
										{
4924
											"key": "id",
4925
											"value": "-29029902",
4926
											"description": "(Required) "
4927
										}
4928
									]
4929
								}
4930
							},
4931
							"status": "Conflict",
4932
							"code": 409,
4933
							"_postman_previewlanguage": "text",
4934
							"header": [
4935
								{
4936
									"key": "Content-Type",
4937
									"value": "*/*"
4938
								}
4939
							],
4940
							"cookie": [],
4941
							"body": ""
4942
						},
4943
						{
4944
							"name": "Internal Server Error",
4945
							"originalRequest": {
4946
								"method": "GET",
4947
								"header": [],
4948
								"url": {
4949
									"raw": "{{baseUrl}}/films/:id",
4950
									"host": [
4951
										"{{baseUrl}}"
4952
									],
4953
									"path": [
4954
										"films",
4955
										":id"
4956
									],
4957
									"variable": [
4958
										{
4959
											"key": "id",
4960
											"value": "-29029902",
4961
											"description": "(Required) "
4962
										}
4963
									]
4964
								}
4965
							},
4966
							"status": "Internal Server Error",
4967
							"code": 500,
4968
							"_postman_previewlanguage": "text",
4969
							"header": [
4970
								{
4971
									"key": "Content-Type",
4972
									"value": "*/*"
4973
								}
4974
							],
4975
							"cookie": [],
4976
							"body": ""
4977
						}
4978
					]
4979
				}
4980
			]
4981
		}
4982
	],
4983
	"event": [
4984
		{
4985
			"listen": "prerequest",
4986
			"script": {
4987
				"type": "text/javascript",
4988
				"exec": [
4989
					"API = class {",
4990
					"    constructor(postman, verbose = false, baseUrl = \"http://localhost:8080\") {",
4991
					"        this.baseUrl = baseUrl;",
4992
					"        this.pm = postman;",
4993
					"        this._verbose = verbose;",
4994
					"    }",
4995
					"",
4996
					"    async addUser(user, verbose=null) {",
4997
					"        return this.post(\"/users\", user, \"Ошибка при добавлении нового пользователя: \", verbose);",
4998
					"    }",
4999
					"",
5000
					"    async addFilm(film, verbose=null) {",
5001
					"        return this.post(\"/films\", film, \"Ошибка при добавлении нового фильма: \", verbose);",
5002
					"    }",
5003
					"",
5004
					"    async addFriend(userId, friendId, verbose=null) {",
5005
					"        return this.put(\"/users/\" + userId + '/friends/' + friendId, null, \"Ошибка при добавлении нового фильма: \", verbose);",
5006
					"    }",
5007
					"",
5008
					"    async addLike(filmId, userId, verbose=null) {",
5009
					"        return this.put(\"/films/\" + filmId + '/like/' + userId, null, \"Ошибка при добавлении лайка на фильм: \", verbose);",
5010
					"    }",
5011
					"",
5012
					"    async getFriends(userId, verbose=null) {",
5013
					"        return this.get('/users/' + userId + '/friends', null, \"Ошибка при поиске друзей по id пользователя\", verbose);",
5014
					"    }",
5015
					"",
5016
					"    async post(path, body, errorText = \"Ошибка при выполнении post-запроса: \", verbose=null) {",
5017
					"        return this.sendRequest(\"POST\", path, body, errorText, verbose);",
5018
					"    }",
5019
					"",
5020
					"    async patch(path, body = null, errorText = \"Ошибка при выполнении patch-запроса: \", verbose=null) {",
5021
					"        return this.sendRequest(\"PATCH\", path, body, errorText, verbose);",
5022
					"    }",
5023
					"",
5024
					"    async get(path, body = null, errorText = \"Ошибка при выполнении get-запроса: \", verbose=null) {",
5025
					"        return this.sendRequest(\"GET\", path, body, errorText, verbose);",
5026
					"    }",
5027
					"",
5028
					"    async put(path, body = null, errorText = \"Ошибка при выполнении put-запроса: \", verbose=null) {",
5029
					"        return this.sendRequest(\"PUT\", path, body, errorText, verbose);",
5030
					"    }",
5031
					"",
5032
					"    async sendRequest(method, path, body=null, errorText = \"Ошибка при выполнении запроса: \", verbose=null) {",
5033
					"        return new Promise((resolve, reject) => {",
5034
					"            verbose = verbose == null ? this._verbose : verbose;",
5035
					"            const request = {",
5036
					"                url: this.baseUrl + path,",
5037
					"                method: method,",
5038
					"                body: body == null ? \"\" : JSON.stringify(body),",
5039
					"                header: { \"Content-Type\": \"application/json\" },",
5040
					"            };",
5041
					"            if(verbose) {",
5042
					"                console.log(\"Отправляю запрос: \", request);",
5043
					"            }",
5044
					"",
5045
					"            try {",
5046
					"                this.pm.sendRequest(request, (error, response) => {",
5047
					"                    if(error || (response.code >= 400 && response.code <= 599)) {",
5048
					"                        let err = error ? error : JSON.stringify(response.json());",
5049
					"                        console.error(\"При выполнении запроса к серверу возникла ошика.\\n\", err,",
5050
					"                             \"\\nДля отладки проблемы повторите такой же запрос к вашей программе \" + ",
5051
					"                             \"на локальном компьютере. Данные запроса:\\n\", JSON.stringify(request));",
5052
					"",
5053
					"                        reject(new Error(errorText + err));",
5054
					"                    }",
5055
					"                    if(verbose) {",
5056
					"                        console.log(\"Результат обработки запроса: код состояния - \", response.code, \", тело: \", response.json());",
5057
					"                    }",
5058
					"                    if (response.stream.length === 0){",
5059
					"                        resolve(null);",
5060
					"                    }else{",
5061
					"                        resolve(response.json());",
5062
					"                    }",
5063
					"                });",
5064
					"                ",
5065
					"            } catch(err) {",
5066
					"                if(verbose) {",
5067
					"                    console.error(errorText, err);",
5068
					"                }",
5069
					"                return Promise.reject(err);",
5070
					"            }",
5071
					"        });",
5072
					"    }",
5073
					"};",
5074
					"",
5075
					"RandomUtils = class {",
5076
					"    constructor() {}",
5077
					"",
5078
					"    getUser() {",
5079
					"        let date = new Date(new Date(1960, 0, 1).getTime() + Math.random() * (new Date(2010, 0, 1).getTime() - new Date(1960, 0, 1).getTime()));",
5080
					"        return {",
5081
					"            name: pm.variables.replaceIn('{{$randomFullName}}'),",
5082
					"            login: this.getWord(10),",
5083
					"            email: pm.variables.replaceIn('{{$randomEmail}}'),",
5084
					"            birthday: date.toISOString().slice(0,10)",
5085
					"        };",
5086
					"    }",
5087
					"",
5088
					"    getFilm() {",
5089
					"        let date = new Date(new Date(1960, 0, 1).getTime() + Math.random() * (new Date(2010, 0, 1).getTime() - new Date(1960, 0, 1).getTime()));",
5090
					"        return {",
5091
					"            name: this.getWord(15),",
5092
					"            description: this.getWord(50),",
5093
					"            releaseDate: date.toISOString().slice(0,10),",
5094
					"            duration: Math.floor(Math.random() * (180 - 60 + 1) + 60),",
5095
					"            mpa: { id: Math.floor(Math.random() * (5 - 1 + 1) + 1)},",
5096
					"            genres: [{ id: Math.floor(Math.random() * (6 - 1 + 1) + 1)}]",
5097
					"        };",
5098
					"    }",
5099
					"",
5100
					"    getWord(length = 1) {",
5101
					"        let result = '';",
5102
					"        const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';",
5103
					"        const charactersLength = characters.length;",
5104
					"        let counter = 0;",
5105
					"        while (counter < length) {",
5106
					"            result += characters.charAt(Math.floor(Math.random() * charactersLength));",
5107
					"            counter += 1;",
5108
					"        }",
5109
					"        return result;",
5110
					"    }",
5111
					"",
5112
					"}"
5113
				]
5114
			}
5115
		},
5116
		{
5117
			"listen": "test",
5118
			"script": {
5119
				"type": "text/javascript",
5120
				"exec": [
5121
					""
5122
				]
5123
			}
5124
		}
5125
	],
5126
	"variable": [
5127
		{
5128
			"key": "baseUrl",
5129
			"value": "http://localhost:8080",
5130
			"type": "string"
5131
		},
5132
		{
5133
			"key": "id",
5134
			"value": ""
5135
		},
5136
		{
5137
			"key": "friend_id",
5138
			"value": ""
5139
		},
5140
		{
5141
			"key": "user_friends",
5142
			"value": ""
5143
		},
5144
		{
5145
			"key": "user3_id",
5146
			"value": ""
5147
		},
5148
		{
5149
			"key": "film",
5150
			"value": ""
5151
		},
5152
		{
5153
			"key": "film1_id",
5154
			"value": ""
5155
		},
5156
		{
5157
			"key": "film2_id",
5158
			"value": ""
5159
		},
5160
		{
5161
			"key": "film3_id",
5162
			"value": ""
5163
		},
5164
		{
5165
			"key": "source",
5166
			"value": ""
5167
		},
5168
		{
5169
			"key": "user",
5170
			"value": ""
5171
		},
5172
		{
5173
			"key": "film_id",
5174
			"value": ""
5175
		},
5176
		{
5177
			"key": "new_user_info",
5178
			"value": ""
5179
		}
5180
	]
5181
}
5182

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.