From 01eaf362aa7e03f5623e80cb12ad0b9a429ae588 Mon Sep 17 00:00:00 2001 From: Kirill Sizov Date: Tue, 22 Feb 2022 16:04:50 +0300 Subject: [PATCH] REST API tests: patch job/annotations, patch job (#4351) --- tests/rest_api/assets/annotations.json | 93 +++++- tests/rest_api/assets/cvat_data.tar.bz2 | Bin 67748 -> 85061 bytes tests/rest_api/assets/cvat_db/cvat_db.sql | 85 +++-- tests/rest_api/assets/jobs.json | 53 ++- tests/rest_api/assets/tasks.json | 92 +++++- tests/rest_api/assets/users.json | 4 +- tests/rest_api/conftest.py | 80 ++++- tests/rest_api/test_0100_jobs.py | 170 ---------- ...st_0004_analytics.py => test_analytics.py} | 0 ...chache_policy.py => test_chache_policy.py} | 0 ...ity.py => test_check_objects_integrity.py} | 0 ...050_invitations.py => test_invitations.py} | 0 tests/rest_api/test_jobs.py | 306 ++++++++++++++++++ ...0003_membership.py => test_memberships.py} | 0 ...organizations.py => test_organizations.py} | 0 .../{test_0001_users.py => test_users.py} | 0 16 files changed, 674 insertions(+), 209 deletions(-) delete mode 100644 tests/rest_api/test_0100_jobs.py rename tests/rest_api/{test_0004_analytics.py => test_analytics.py} (100%) rename tests/rest_api/{test_0005_chache_policy.py => test_chache_policy.py} (100%) rename tests/rest_api/{test_0000_check_objects_integrity.py => test_check_objects_integrity.py} (100%) rename tests/rest_api/{test_0050_invitations.py => test_invitations.py} (100%) create mode 100644 tests/rest_api/test_jobs.py rename tests/rest_api/{test_0003_membership.py => test_memberships.py} (100%) rename tests/rest_api/{test_0002_organizations.py => test_organizations.py} (100%) rename tests/rest_api/{test_0001_users.py => test_users.py} (100%) diff --git a/tests/rest_api/assets/annotations.json b/tests/rest_api/assets/annotations.json index 32bfa80a..a80822b7 100644 --- a/tests/rest_api/assets/annotations.json +++ b/tests/rest_api/assets/annotations.json @@ -295,10 +295,39 @@ "version": 3 }, "3": { - "shapes": [], + "shapes": [ + { + "attributes": [], + "frame": 0, + "group": 0, + "id": 28, + "label_id": 6, + "occluded": false, + "points": [ + 155.5, + 634.4814453125, + 222.17951945080313, + 575.8846681922205, + 214.09713958810244, + 384.9384439359292, + 160.55137299771377, + 255.6203661327254, + 96.90263157894879, + 137.41556064073302, + 284.8179633867294, + 65.68443935926916, + 354.52848970251944, + 264.713043478263 + ], + "rotation": 0.0, + "source": "manual", + "type": "polyline", + "z_order": 0 + } + ], "tags": [], "tracks": [], - "version": 0 + "version": 6 }, "4": { "shapes": [ @@ -1434,16 +1463,72 @@ "version": 3 }, "7": { - "shapes": [], + "shapes": [ + { + "attributes": [], + "frame": 0, + "group": 0, + "id": 29, + "label_id": 9, + "occluded": false, + "points": [ + 364.0361328125, + 528.87890625, + 609.5286041189956, + 586.544622425632, + 835.2494279176244, + 360.0000000000018, + 543.6247139588122, + 175.4691075514893, + 326.9656750572103, + 192.76887871853796, + 244.58581235698148, + 319.63386727689067 + ], + "rotation": 0.0, + "source": "manual", + "type": "polygon", + "z_order": 0 + } + ], "tags": [], "tracks": [], - "version": 0 + "version": 3 }, "8": { "shapes": [], "tags": [], "tracks": [], "version": 0 + }, + "9": { + "shapes": [ + { + "attributes": [], + "frame": 0, + "group": 0, + "id": 27, + "label_id": 11, + "occluded": false, + "points": [ + 448.3779296875, + 356.4892578125, + 438.2558352402775, + 761.3861556064112, + 744.1780320366161, + 319.37356979405195, + 446.1288329519466, + 163.03832951945333 + ], + "rotation": 0.0, + "source": "manual", + "type": "polygon", + "z_order": 0 + } + ], + "tags": [], + "tracks": [], + "version": 3 } } } \ No newline at end of file diff --git a/tests/rest_api/assets/cvat_data.tar.bz2 b/tests/rest_api/assets/cvat_data.tar.bz2 index 07ffd46a868ca707f0993567c2dcb3037a8e00f7..624ee1ab9cf87f589e2c77d9525a63e3eddfb620 100644 GIT binary patch literal 85061 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

+hmGPrPacNcu!-RV^XMEb=%O6C<43n7Vy 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 wJ>qh224v>z*+ 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 diff --git a/tests/rest_api/assets/cvat_db/cvat_db.sql b/tests/rest_api/assets/cvat_db/cvat_db.sql index a4a3b6c8..06c9e60a 100644 --- a/tests/rest_api/assets/cvat_db/cvat_db.sql +++ b/tests/rest_api/assets/cvat_db/cvat_db.sql @@ -2,8 +2,8 @@ -- PostgreSQL database dump -- --- Dumped from database version 10.19 --- Dumped by pg_dump version 10.19 +-- Dumped from database version 10.20 +-- Dumped by pg_dump version 10.20 SET statement_timeout = 0; SET lock_timeout = 0; @@ -2640,7 +2640,6 @@ COPY public.auth_user (id, password, last_login, is_superuser, username, first_n 7 pbkdf2_sha256$260000$EtdCZTYNPHPX50kM67A7kA$JxuHkmB25RkeMszSV9Pd58E9AFdSu3Rx2UYSAKu/q4k= \N f worker2 Worker Second worker2@cvat.org f t 2021-12-14 18:30:43+00 8 pbkdf2_sha256$260000$PNnmu5EKgxZCY9HQgNLfta$JjsE9zrFYJ3ISUHANjjwnxuiGNRGIyVamqnqrkqR9fQ= \N f worker3 Worker Third worker3@cvat.org f t 2021-12-14 18:31:25+00 9 pbkdf2_sha256$260000$ipL3D6HSba1Cn7pzb5Q7bh$OFx/xO6Q3Q5sBGq3W3MBsmqFhVjkPmVVfaQdnJ8FAtg= \N f worker4 Worker Fourth worker4@cvat.org f t 2021-12-14 18:32:01+00 -11 pbkdf2_sha256$260000$Zw76ANIvIsDngZGsTv2G8O$piTVoqHrpTskW8rI1FBT9rzM2dcpjhrcOfI3pDgtjbo= \N f business2 Business Second business2@cvat.org f t 2021-12-14 18:34:01+00 12 pbkdf2_sha256$260000$KcNRm6RwodBaGfWhh7ngqB$SsKUBx7vF1Ee0WBDwExd/JI39w1Ee0cBoox7lqNbhCk= \N f business3 Business Third business3@cvat.org f t 2021-12-14 18:34:34+00 13 pbkdf2_sha256$260000$BbdWU6TKtVfIAW00Dk4Qyb$mkqf3VrZULPrzfH5NFEeEYCnzBPLaBBsVgdeTCve4lA= \N f business4 Business Fourth business4@cvat.org f t 2021-12-14 18:35:15+00 14 pbkdf2_sha256$260000$47xWwGNsT3dvBc1qZDcLvC$fLC2y72acILlhGFiVp3nA/bnCxY/mRb7xOqOh7Es95k= \N f dummy1 Dummy First dummy1@cvat.org f t 2021-12-14 18:36:00+00 @@ -2650,8 +2649,9 @@ COPY public.auth_user (id, password, last_login, is_superuser, username, first_n 18 pbkdf2_sha256$260000$uOqP32bk2zHuvO0sdGBGmu$hMbzA1yBWcY5rIU670sZ3SHXRLUa7bCkbrMnrEDGSRM= \N t admin2 Admin Second admin2@cvat.org t t 2021-12-14 18:38:46+00 6 pbkdf2_sha256$260000$15iUjDNh5gPg5683u1HhOG$fF8hW6AR90o9SCsO/MomzdQFkgQsMUW3YQUlwwiC1vA= 2021-12-14 19:11:21.04874+00 f worker1 Worker First worker1@cvat.org f t 2021-12-14 18:30:00+00 10 pbkdf2_sha256$260000$X4F89IRqnBtojZuHidrwQG$j1+EpXfyvMesHdod4N+dNUfF4WKS2NWFfeGDec/43as= 2022-01-19 13:52:59.477881+00 f business1 Business First business1@cvat.org f t 2021-12-14 18:33:06+00 -1 pbkdf2_sha256$260000$DevmxlmLwciP1P6sZs2Qag$U9DFtjTWx96Sk95qY6UXVcvpdQEP2LcoFBftk5D2RKY= 2022-02-11 14:54:28.083729+00 t admin1 Admin First admin1@cvat.org t t 2021-12-14 18:04:57+00 2 pbkdf2_sha256$260000$Pf2xYWXBedoAJ504jyDD8e$8sJ244Ai0xhZrUTelapPNHlEg7CV0cCUaxbcxZtfaug= 2022-02-16 06:24:53.910205+00 f user1 User First user1@cvat.org f t 2021-12-14 18:21:09+00 +11 pbkdf2_sha256$260000$Zw76ANIvIsDngZGsTv2G8O$piTVoqHrpTskW8rI1FBT9rzM2dcpjhrcOfI3pDgtjbo= 2022-02-21 10:29:16.518442+00 f business2 Business Second business2@cvat.org f t 2021-12-14 18:34:01+00 +1 pbkdf2_sha256$260000$DevmxlmLwciP1P6sZs2Qag$U9DFtjTWx96Sk95qY6UXVcvpdQEP2LcoFBftk5D2RKY= 2022-02-21 10:37:08.94795+00 t admin1 Admin First admin1@cvat.org t t 2021-12-14 18:04:57+00 \. @@ -2691,8 +2691,8 @@ COPY public.auth_user_user_permissions (id, user_id, permission_id) FROM stdin; COPY public.authtoken_token (key, created, user_id) FROM stdin; a959159194c4b5238d95ef4e07919110fab346b0 2021-12-14 19:44:48.519942+00 10 -f952dc4730c58346882176f775ccaaf2a1c72416 2021-12-22 08:11:58.498742+00 1 e28ce88d18614314476dec601b5c29b9093045f1 2022-02-16 06:24:53.902374+00 2 +48372a6aac494a9932803913ec9088216778b57c 2022-02-21 10:37:08.935479+00 1 \. @@ -2919,6 +2919,8 @@ po0rbd1yhywmc0i2jfam69r419a66aj8 .eJxVjMsOwiAQRf-FtSE8pB1cuvcbCMMMUjWQlHZl_HdD0o v28l0efbrv9x06z97ilwcf7lwtuf4ctc .eJxVjDsOwjAQRO_iGlm22fhDSc8ZrLV3gwPIluKkQtydREoBzRTz3sxbRFyXEtfOc5xIXIRW4vRbJsxPrjuhB9Z7k7nVZZ6S3BV50C5vjfh1Pdy_g4K9bGuLXqMDQqdDTtYN6AHIIoGGMIJlQwxB-VFn3gLPzjil3ABkAIBZfL7_vTer:1nABOV:0UAK9VV6D18QF1-189XQ2T9LrQUSdioGNoHdRUzzt7o 2022-02-02 13:52:59.489923+00 wf6d6vzf4u74l08o0qgbqehei21hibea .eJxVjDEOwjAMRe-SGUUkpHZgZO8ZIttxSAG1UtNOiLtDpQ6w_vfef5lE61LT2nROQzYX48zhd2OSh44byHcab5OVaVzmge2m2J02209Zn9fd_Tuo1Oq3DrGwD040Ro_-nJmJgkgsqAAIioCi0KGKMhU4Mgip6wjRF6JyMu8PBAI5Mw:1nIXJc:oovNJRods5cbviWOWush4H3jDdP8XklEignva_EnQ8Q 2022-02-25 14:54:28.092369+00 9rh2r15lb3xra3kdqjtll5n4zw7ebw95 .eJxVjDsOwjAQBe_iGln-xJ9Q0ucM1q69xgFkS3FSIe5OIqWA9s3Me7MA21rC1mkJc2JXptjld0OIT6oHSA-o98Zjq-syIz8UftLOp5bodTvdv4MCvey1tOiNIpGNATlq55IZvaABd4Ao1RCzARLWJ5dRA2kJGqxU1kfjPRL7fAHVPjfN:1nKDkD:rZM4YHHS9MckfKB5KrsvNBVMegYSRdlMqL3uDJRE0Cg 2022-03-02 06:24:53.914069+00 +khn67dfajnzkr0tlusuyyub011gt0aqb .eJxVjMEOwiAQRP-FsyEsobL16N1vIAvLStVAUtqT8d9tkx70OPPezFsFWpcS1p7nMLG6KFCn3y5Seua6A35QvTedWl3mKepd0Qft-tY4v66H-3dQqJdt7UU4MedxGKwFh0RoCBFi4niOTsSAHQFA_JaYmI2nTBEdGRRrSX2-CY443A:1nM5q9:nf3N_nhzYu-XfEC1O2ICYP2Zt9XXPPVziSLrP5uHSVw 2022-03-07 10:22:45.432248+00 +5x9v6r58e4l9if78anupog0ittsq2w3j .eJxVjMEOwiAQRP-FsyEsobL16N1vIAvLStVAUtqT8d9tkx70OPPezFsFWpcS1p7nMLG6KFCn3y5Seua6A35QvTedWl3mKepd0Qft-tY4v66H-3dQqJdt7UU4MedxGKwFh0RoCBFi4niOTsSAHQFA_JaYmI2nTBEdGRRrSX2-CY443A:1nM644:zfo0j_Zkrm04UxrDj8g_nnsXrpWtRzL4oRx3hAdqyqI 2022-03-07 10:37:08.963511+00 \. @@ -3306,6 +3308,17 @@ COPY public.engine_clientfile (id, file, data_id) FROM stdin; 359 /home/django/data/data/4/raw/134.png 4 360 /home/django/data/data/5/raw/test_video_1.mp4 5 361 /home/django/data/data/6/raw/test_pointcloud_pcd.zip 6 +362 /home/django/data/data/7/raw/10.png 7 +363 /home/django/data/data/7/raw/3.png 7 +364 /home/django/data/data/7/raw/9.png 7 +365 /home/django/data/data/7/raw/6.png 7 +366 /home/django/data/data/7/raw/0.png 7 +367 /home/django/data/data/7/raw/8.png 7 +368 /home/django/data/data/7/raw/2.png 7 +369 /home/django/data/data/7/raw/7.png 7 +370 /home/django/data/data/7/raw/5.png 7 +371 /home/django/data/data/7/raw/1.png 7 +372 /home/django/data/data/7/raw/4.png 7 \. @@ -3342,6 +3355,7 @@ COPY public.engine_data (id, chunk_size, size, image_quality, start_frame, stop_ 4 72 58 70 0 57 imageset imageset cache local \N lexicographical 5 72 25 70 0 24 imageset video cache local \N lexicographical 6 72 1 70 0 0 imageset imageset cache local \N lexicographical +7 72 11 70 0 10 imageset imageset cache local \N lexicographical \. @@ -3710,6 +3724,17 @@ COPY public.engine_image (id, path, frame, height, width, data_id) FROM stdin; 358 98.png 56 370 615 4 359 99.png 57 545 343 4 360 test_pointcloud_pcd/pointcloud/000001.pcd 0 1 100 6 +361 0.png 0 983 827 7 +362 1.png 1 547 467 7 +363 10.png 2 202 598 7 +364 2.png 3 276 449 7 +365 3.png 4 999 170 7 +366 4.png 5 471 473 7 +367 5.png 6 745 607 7 +368 6.png 7 578 853 7 +369 7.png 8 270 823 7 +370 8.png 9 179 545 7 +371 9.png 10 932 827 7 \. @@ -3730,14 +3755,15 @@ COPY public.engine_issue (id, frame, "position", created_date, updated_date, job -- COPY public.engine_job (id, segment_id, assignee_id, status, stage, state) FROM stdin; -3 3 \N annotation annotation new 5 5 \N validation acceptance new 2 2 6 annotation annotation new -1 1 \N annotation annotation new 6 6 7 annotation annotation new 4 4 \N validation validation new -7 7 \N annotation annotation new 8 8 \N annotation annotation new +1 1 1 annotation annotation new +9 9 \N annotation annotation in progress +3 3 \N annotation annotation in progress +7 7 9 annotation annotation in progress \. @@ -3761,6 +3787,18 @@ COPY public.engine_jobcommit (id, version, "timestamp", message, owner_id, job_i 13 4 2021-12-22 07:22:30.331021+00 Changes: tags - 0; shapes - 0; tracks - 0 \N 4 14 5 2021-12-22 07:22:30.362857+00 Changes: tags - 0; shapes - 0; tracks - 0 \N 4 15 6 2021-12-22 07:22:30.388715+00 Changes: tags - 0; shapes - 0; tracks - 0 \N 4 +16 1 2022-02-21 10:32:04.068136+00 Changes: tags - 0; shapes - 1; tracks - 0 \N 9 +17 2 2022-02-21 10:32:04.169838+00 Changes: tags - 0; shapes - 0; tracks - 0 \N 9 +18 3 2022-02-21 10:32:04.256121+00 Changes: tags - 0; shapes - 0; tracks - 0 \N 9 +19 1 2022-02-21 10:37:22.961448+00 Changes: tags - 0; shapes - 0; tracks - 0 \N 3 +20 2 2022-02-21 10:37:23.075321+00 Changes: tags - 0; shapes - 0; tracks - 0 \N 3 +21 3 2022-02-21 10:37:23.187161+00 Changes: tags - 0; shapes - 0; tracks - 0 \N 3 +22 4 2022-02-21 10:37:27.7082+00 Changes: tags - 0; shapes - 1; tracks - 0 \N 3 +23 5 2022-02-21 10:37:27.834371+00 Changes: tags - 0; shapes - 0; tracks - 0 \N 3 +24 6 2022-02-21 10:37:27.95231+00 Changes: tags - 0; shapes - 0; tracks - 0 \N 3 +25 1 2022-02-21 10:40:21.267763+00 Changes: tags - 0; shapes - 1; tracks - 0 \N 7 +26 2 2022-02-21 10:40:21.354689+00 Changes: tags - 0; shapes - 0; tracks - 0 \N 7 +27 3 2022-02-21 10:40:21.435822+00 Changes: tags - 0; shapes - 0; tracks - 0 \N 7 \. @@ -3779,6 +3817,8 @@ COPY public.engine_label (id, name, task_id, color, project_id) FROM stdin; 8 dog \N #406040 2 9 car 5 #2080c0 \N 10 car 6 #2080c0 \N +11 cat 7 #6080c0 \N +12 dog 7 #406040 \N \. @@ -3829,6 +3869,9 @@ COPY public.engine_labeledshape (id, frame, "group", type, occluded, z_order, po 24 52 0 rectangle f 0 85.9462890625,138.1123046875,166.75294494628906,391.78382873535156 4 5 manual 0 25 52 0 rectangle f 0 45.03125,638.294921875,224.0333251953125,770.2450256347656 4 5 manual 0 26 53 0 rectangle f 0 34.384765625,283.845703125,108.30784606933594,382.30724334716797 4 5 manual 0 +27 0 0 polygon f 0 448.3779296875,356.4892578125,438.2558352402775,761.3861556064112,744.1780320366161,319.37356979405195,446.1288329519466,163.03832951945333 9 11 manual 0 +28 0 0 polyline f 0 155.5,634.4814453125,222.17951945080313,575.8846681922205,214.09713958810244,384.9384439359292,160.55137299771377,255.6203661327254,96.90263157894879,137.41556064073302,284.8179633867294,65.68443935926916,354.52848970251944,264.713043478263 3 6 manual 0 +29 0 0 polygon f 0 364.0361328125,528.87890625,609.5286041189956,586.544622425632,835.2494279176244,360.0000000000018,543.6247139588122,175.4691075514893,326.9656750572103,192.76887871853796,244.58581235698148,319.63386727689067 7 9 manual 0 \. @@ -3935,6 +3978,7 @@ COPY public.engine_segment (id, start_frame, stop_frame, task_id) FROM stdin; 6 0 57 4 7 0 24 5 8 0 0 6 +9 0 10 7 \. @@ -3954,9 +3998,10 @@ COPY public.engine_task (id, name, mode, created_date, updated_date, status, bug 2 task2 annotation 2021-12-14 18:50:29.458488+00 2021-12-22 07:14:15.234748+00 annotation 2 0 \N 23 \N 2 2d 1 1 task1 annotation 2021-12-14 18:43:47.601289+00 2021-12-22 07:15:22.942484+00 annotation 2 0 \N 130 \N 1 2d \N 4 task1_in_project2 annotation 2021-12-14 19:55:57.475273+00 2021-12-22 07:17:34.836384+00 annotation 10 0 \N 58 2 4 2d train 2 -3 task1_in_project1 annotation 2021-12-14 19:48:33.089778+00 2021-12-22 07:19:33.85476+00 annotation 10 0 \N 50 1 3 2d Train \N -5 task2 interpolation 2022-02-16 06:25:48.168612+00 2022-02-16 06:25:48.889352+00 annotation 2 5 \N 25 \N 5 2d \N 6 task3 annotation 2022-02-16 06:26:54.631217+00 2022-02-16 06:26:54.836403+00 annotation 2 0 \N 1 \N 6 3d \N +3 task1_in_project1 annotation 2021-12-14 19:48:33.089778+00 2022-02-21 10:37:27.697705+00 annotation 10 0 \N 50 1 3 2d Train \N +5 task2 interpolation 2022-02-16 06:25:48.168612+00 2022-02-21 10:40:21.257604+00 annotation 2 5 \N 25 \N 5 2d \N +7 task_2_org2 annotation 2022-02-21 10:31:52.429478+00 2022-02-21 10:41:38.540427+00 annotation 11 0 7 11 \N 7 2d 2 \. @@ -4102,7 +4147,7 @@ SELECT pg_catalog.setval('public.auth_permission_id_seq', 88, true); -- Name: auth_user_groups_id_seq; Type: SEQUENCE SET; Schema: public; Owner: root -- -SELECT pg_catalog.setval('public.auth_user_groups_id_seq', 44, true); +SELECT pg_catalog.setval('public.auth_user_groups_id_seq', 47, true); -- @@ -4158,7 +4203,7 @@ SELECT pg_catalog.setval('public.engine_attributespec_id_seq', 1, true); -- Name: engine_clientfile_id_seq; Type: SEQUENCE SET; Schema: public; Owner: root -- -SELECT pg_catalog.setval('public.engine_clientfile_id_seq', 361, true); +SELECT pg_catalog.setval('public.engine_clientfile_id_seq', 372, true); -- @@ -4179,14 +4224,14 @@ SELECT pg_catalog.setval('public.engine_comment_id_seq', 6, true); -- Name: engine_data_id_seq; Type: SEQUENCE SET; Schema: public; Owner: root -- -SELECT pg_catalog.setval('public.engine_data_id_seq', 6, true); +SELECT pg_catalog.setval('public.engine_data_id_seq', 7, true); -- -- Name: engine_image_id_seq; Type: SEQUENCE SET; Schema: public; Owner: root -- -SELECT pg_catalog.setval('public.engine_image_id_seq', 360, true); +SELECT pg_catalog.setval('public.engine_image_id_seq', 371, true); -- @@ -4200,21 +4245,21 @@ SELECT pg_catalog.setval('public.engine_issue_id_seq', 4, true); -- Name: engine_job_id_seq; Type: SEQUENCE SET; Schema: public; Owner: root -- -SELECT pg_catalog.setval('public.engine_job_id_seq', 8, true); +SELECT pg_catalog.setval('public.engine_job_id_seq', 9, true); -- -- Name: engine_jobcommit_id_seq; Type: SEQUENCE SET; Schema: public; Owner: root -- -SELECT pg_catalog.setval('public.engine_jobcommit_id_seq', 15, true); +SELECT pg_catalog.setval('public.engine_jobcommit_id_seq', 27, true); -- -- Name: engine_label_id_seq; Type: SEQUENCE SET; Schema: public; Owner: root -- -SELECT pg_catalog.setval('public.engine_label_id_seq', 10, true); +SELECT pg_catalog.setval('public.engine_label_id_seq', 12, true); -- @@ -4235,7 +4280,7 @@ SELECT pg_catalog.setval('public.engine_labeledimageattributeval_id_seq', 1, fal -- Name: engine_labeledshape_id_seq; Type: SEQUENCE SET; Schema: public; Owner: root -- -SELECT pg_catalog.setval('public.engine_labeledshape_id_seq', 26, true); +SELECT pg_catalog.setval('public.engine_labeledshape_id_seq', 29, true); -- @@ -4298,7 +4343,7 @@ SELECT pg_catalog.setval('public.engine_remotefile_id_seq', 1, false); -- Name: engine_segment_id_seq; Type: SEQUENCE SET; Schema: public; Owner: root -- -SELECT pg_catalog.setval('public.engine_segment_id_seq', 8, true); +SELECT pg_catalog.setval('public.engine_segment_id_seq', 9, true); -- @@ -4312,7 +4357,7 @@ SELECT pg_catalog.setval('public.engine_serverfile_id_seq', 1, false); -- Name: engine_task_id_seq; Type: SEQUENCE SET; Schema: public; Owner: root -- -SELECT pg_catalog.setval('public.engine_task_id_seq', 6, true); +SELECT pg_catalog.setval('public.engine_task_id_seq', 7, true); -- diff --git a/tests/rest_api/assets/jobs.json b/tests/rest_api/assets/jobs.json index 7da9c015..d742c3c4 100644 --- a/tests/rest_api/assets/jobs.json +++ b/tests/rest_api/assets/jobs.json @@ -1,10 +1,16 @@ { - "count": 8, + "count": 9, "next": null, "previous": null, "results": [ { - "assignee": null, + "assignee": { + "first_name": "Admin", + "id": 1, + "last_name": "First", + "url": "http://localhost:8080/api/users/1", + "username": "admin1" + }, "bug_tracker": null, "data_chunk_size": 72, "data_compressed_chunk_type": "imageset", @@ -109,7 +115,7 @@ "project_id": 1, "stage": "annotation", "start_frame": 0, - "state": "new", + "state": "in progress", "status": "annotation", "stop_frame": 49, "task_id": 3, @@ -241,7 +247,13 @@ "url": "http://localhost:8080/api/jobs/6" }, { - "assignee": null, + "assignee": { + "first_name": "Worker", + "id": 9, + "last_name": "Fourth", + "url": "http://localhost:8080/api/users/9", + "username": "worker4" + }, "bug_tracker": null, "data_chunk_size": 72, "data_compressed_chunk_type": "imageset", @@ -259,7 +271,7 @@ "project_id": null, "stage": "annotation", "start_frame": 0, - "state": "new", + "state": "in progress", "status": "annotation", "stop_frame": 24, "task_id": 5, @@ -289,6 +301,37 @@ "stop_frame": 0, "task_id": 6, "url": "http://localhost:8080/api/jobs/8" + }, + { + "assignee": null, + "bug_tracker": null, + "data_chunk_size": 72, + "data_compressed_chunk_type": "imageset", + "dimension": "2d", + "id": 9, + "labels": [ + { + "attributes": [], + "color": "#6080c0", + "id": 11, + "name": "cat" + }, + { + "attributes": [], + "color": "#406040", + "id": 12, + "name": "dog" + } + ], + "mode": "annotation", + "project_id": null, + "stage": "annotation", + "start_frame": 0, + "state": "in progress", + "status": "annotation", + "stop_frame": 10, + "task_id": 7, + "url": "http://localhost:8080/api/jobs/9" } ] } \ No newline at end of file diff --git a/tests/rest_api/assets/tasks.json b/tests/rest_api/assets/tasks.json index fc724715..e68fb425 100644 --- a/tests/rest_api/assets/tasks.json +++ b/tests/rest_api/assets/tasks.json @@ -1,8 +1,74 @@ { - "count": 6, + "count": 7, "next": null, "previous": null, "results": [ + { + "assignee": { + "first_name": "Worker", + "id": 7, + "last_name": "Second", + "url": "http://localhost:8080/api/users/7", + "username": "worker2" + }, + "bug_tracker": "", + "created_date": "2022-02-21T10:31:52.429478Z", + "data": 7, + "data_chunk_size": 72, + "data_compressed_chunk_type": "imageset", + "data_original_chunk_type": "imageset", + "dimension": "2d", + "id": 7, + "image_quality": 70, + "labels": [ + { + "attributes": [], + "color": "#6080c0", + "id": 11, + "name": "cat" + }, + { + "attributes": [], + "color": "#406040", + "id": 12, + "name": "dog" + } + ], + "mode": "annotation", + "name": "task_2_org2", + "organization": 2, + "overlap": 0, + "owner": { + "first_name": "Business", + "id": 11, + "last_name": "Second", + "url": "http://localhost:8080/api/users/11", + "username": "business2" + }, + "project_id": null, + "segment_size": 11, + "segments": [ + { + "jobs": [ + { + "assignee": null, + "id": 9, + "stage": "annotation", + "state": "in progress", + "status": "annotation", + "url": "http://localhost:8080/api/jobs/9" + } + ], + "start_frame": 0, + "stop_frame": 10 + } + ], + "size": 11, + "status": "annotation", + "subset": "", + "updated_date": "2022-02-21T10:41:38.540427Z", + "url": "http://localhost:8080/api/tasks/7" + }, { "assignee": null, "bug_tracker": "", @@ -93,10 +159,16 @@ { "jobs": [ { - "assignee": null, + "assignee": { + "first_name": "Worker", + "id": 9, + "last_name": "Fourth", + "url": "http://localhost:8080/api/users/9", + "username": "worker4" + }, "id": 7, "stage": "annotation", - "state": "new", + "state": "in progress", "status": "annotation", "url": "http://localhost:8080/api/jobs/7" } @@ -108,7 +180,7 @@ "size": 25, "status": "annotation", "subset": "", - "updated_date": "2022-02-16T06:25:48.889352Z", + "updated_date": "2022-02-21T10:40:21.257604Z", "url": "http://localhost:8080/api/tasks/5" }, { @@ -235,7 +307,7 @@ "assignee": null, "id": 3, "stage": "annotation", - "state": "new", + "state": "in progress", "status": "annotation", "url": "http://localhost:8080/api/jobs/3" } @@ -275,7 +347,7 @@ "size": 148, "status": "annotation", "subset": "Train", - "updated_date": "2021-12-22T07:19:33.854760Z", + "updated_date": "2022-02-21T10:37:27.697705Z", "url": "http://localhost:8080/api/tasks/3" }, { @@ -386,7 +458,13 @@ { "jobs": [ { - "assignee": null, + "assignee": { + "first_name": "Admin", + "id": 1, + "last_name": "First", + "url": "http://localhost:8080/api/users/1", + "username": "admin1" + }, "id": 1, "stage": "annotation", "state": "new", diff --git a/tests/rest_api/assets/users.json b/tests/rest_api/assets/users.json index 65d4ffba..3e7a0b38 100644 --- a/tests/rest_api/assets/users.json +++ b/tests/rest_api/assets/users.json @@ -14,7 +14,7 @@ "is_active": true, "is_staff": true, "is_superuser": true, - "last_login": "2022-02-11T14:54:28.083729Z", + "last_login": "2022-02-21T10:37:08.947950Z", "last_name": "First", "url": "http://localhost:8080/api/users/1", "username": "admin1" @@ -174,7 +174,7 @@ "is_active": true, "is_staff": false, "is_superuser": false, - "last_login": null, + "last_login": "2022-02-21T10:29:16.518442Z", "last_name": "Second", "url": "http://localhost:8080/api/users/11", "username": "business2" diff --git a/tests/rest_api/conftest.py b/tests/rest_api/conftest.py index 1ca201a6..5d3e587a 100644 --- a/tests/rest_api/conftest.py +++ b/tests/rest_api/conftest.py @@ -31,7 +31,7 @@ def drop_test_db(): def create_test_db(): docker_cp(source=osp.join(ASSETS_DIR, 'cvat_db'), target='cvat_db:/') cvat_db_container('createdb test_db') - cvat_db_container('psql -U root -d test_db -f /cvat_db/cvat_db.sql') + cvat_db_container('psql -U root -q -d test_db -f /cvat_db/cvat_db.sql') @pytest.fixture(scope='session', autouse=True) def init_test_db(): @@ -118,6 +118,53 @@ def annotations(): def users_by_name(users): return {user['username']: user for user in users} +@pytest.fixture(scope='module') +def jobs_by_org(tasks, jobs): + data = {} + for job in jobs: + data.setdefault(tasks[job['task_id']]['organization'], []).append(job) + data[''] = data.pop(None, []) + return data + +@pytest.fixture(scope='module') +def assignee_id(): + def get_id(data): + if data.get('assignee') is not None: + return data['assignee']['id'] + return get_id + +def ownership(func): + def wrap(user_id, resource_id): + if resource_id is None: + return False + return func(user_id, resource_id) + return wrap + +@pytest.fixture(scope='module') +def is_project_staff(projects, assignee_id): + @ownership + def check(user_id, pid): + return user_id == projects[pid]['owner']['id'] or \ + user_id == assignee_id(projects[pid]) + return check + +@pytest.fixture(scope='module') +def is_task_staff(tasks, is_project_staff, assignee_id): + @ownership + def check(user_id, tid): + return user_id == tasks[tid]['owner']['id'] or \ + user_id == assignee_id(tasks[tid]) or \ + is_project_staff(user_id, tasks[tid]['project_id']) + return check + +@pytest.fixture(scope='module') +def is_job_staff(jobs, is_task_staff, assignee_id): + @ownership + def check(user_id, jid): + return user_id == assignee_id(jobs[jid]) or \ + is_task_staff(user_id, jobs[jid]['task_id']) + return check + @pytest.fixture(scope='module') def find_users(test_db): def find(**kwargs): @@ -158,3 +205,34 @@ def test_db(users, users_by_name, memberships): membership_id=membership['id']) return data + +@pytest.fixture(scope='module') +def org_staff(memberships): + def find(org_id): + if org_id in ['', None]: + return set() + else: + return set(m['user']['id'] for m in memberships + if m['role'] in ['maintainer', 'owner'] and m['user'] != None + and m['organization'] == org_id) + return find + +@pytest.fixture(scope='module') +def is_org_member(memberships): + def check(user_id, org_id): + if org_id in ['', None]: + return True + else: + return user_id in set(m['user']['id'] for m in memberships + if m['user'] != None and m['organization'] == org_id) + return check + +@pytest.fixture(scope='module') +def find_job_staff_user(is_job_staff): + def find(jobs, users, is_staff): + for job in jobs: + for user in users: + if is_staff == is_job_staff(user['id'], job['id']): + return user['username'], job['id'] + return None, None + return find \ No newline at end of file diff --git a/tests/rest_api/test_0100_jobs.py b/tests/rest_api/test_0100_jobs.py deleted file mode 100644 index 887d768c..00000000 --- a/tests/rest_api/test_0100_jobs.py +++ /dev/null @@ -1,170 +0,0 @@ -# Copyright (C) 2021 Intel Corporation -# -# SPDX-License-Identifier: MIT - -from http import HTTPStatus -from deepdiff import DeepDiff -import pytest -from .utils.config import get_method - -def get_job_staff(job, tasks, projects): - job_staff = [] - job_staff.append(job['assignee']) - tid = job['task_id'] - job_staff.append(tasks[tid]['owner']) - job_staff.append(tasks[tid]['assignee']) - - pid = job['project_id'] - if pid: - job_staff.append(projects[pid]['owner']) - job_staff.append(projects[pid]['assignee']) - job_staff = set(u['id'] for u in job_staff if u is not None) - - return job_staff - -def get_org_staff(org_id, memberships): - if org_id in ['', None]: - return set() - else: - return set(m['user']['id'] for m in memberships - if m['role'] in ['maintainer', 'owner'] and m['user'] != None - and m['organization'] == org_id) - -def filter_jobs(jobs, tasks, org): - if org is None: - kwargs = {} - jobs = jobs.raw - elif org == '': - kwargs = {'org': ''} - jobs = [job for job in jobs - if tasks[job['task_id']]['organization'] is None] - else: - kwargs = {'org_id': org} - jobs = [job for job in jobs - if tasks[job['task_id']]['organization'] == org] - - return jobs, kwargs - -def is_org_member(memberships, user, org_id): - if org_id in ['', None]: - return True - else: - return user['id'] in set(m['user']['id'] for m in memberships - if m['user'] != None and m['organization'] == org_id) - -class TestGetJobs: - def _test_get_job_200(self, user, jid, data, **kwargs): - response = get_method(user, f'jobs/{jid}', **kwargs) - - assert response.status_code == HTTPStatus.OK - assert DeepDiff(data, response.json()) == {} - - def _test_get_job_403(self, user, jid, **kwargs): - response = get_method(user, f'jobs/{jid}', **kwargs) - assert response.status_code == HTTPStatus.FORBIDDEN - - @pytest.mark.parametrize('org', [None, '', 1, 2]) - def test_admin_get_job(self, jobs, tasks, org): - jobs, kwargs = filter_jobs(jobs, tasks, org) - - # keep only the reasonable amount of jobs - for job in jobs[:8]: - self._test_get_job_200('admin2', job['id'], job, **kwargs) - - @pytest.mark.parametrize('org_id', ['', None, 1, 2]) - @pytest.mark.parametrize('groups', [['business'], ['user'], ['worker'], []]) - def test_non_admin_get_job(self, org_id, groups, users, jobs, tasks, projects, - memberships): - # keep the reasonable amount of users and jobs - users = [u for u in users if u['groups'] == groups][:4] - jobs, kwargs = filter_jobs(jobs, tasks, org_id) - org_staff = get_org_staff(org_id, memberships) - - for job in jobs[:8]: - job_staff = get_job_staff(job, tasks, projects) - - # check if the specific user in job_staff to see the job - for user in users: - if user['id'] in job_staff | org_staff: - self._test_get_job_200(user['username'], job['id'], job, **kwargs) - else: - self._test_get_job_403(user['username'], job['id'], **kwargs) - -class TestListJobs: - def _test_list_jobs_200(self, user, data, **kwargs): - response = get_method(user, 'jobs', **kwargs, page_size=all) - - assert response.status_code == HTTPStatus.OK - assert DeepDiff(data, response.json()['results']) == {} - - def _test_list_jobs_403(self, user, **kwargs): - response = get_method(user, 'jobs', **kwargs) - assert response.status_code == HTTPStatus.FORBIDDEN - - @pytest.mark.parametrize('org', [None, '', 1, 2]) - def test_admin_list_jobs(self, jobs, tasks, org): - jobs, kwargs = filter_jobs(jobs, tasks, org) - self._test_list_jobs_200('admin1', jobs, **kwargs) - - @pytest.mark.parametrize('org_id', ['', None, 1, 2]) - @pytest.mark.parametrize('groups', [['business'], ['user'], ['worker'], []]) - def test_non_admin_list_jobs(self, org_id, groups, users, jobs, tasks, - projects, memberships): - # keep the reasonable amount of users and jobs - users = [u for u in users if u['groups'] == groups][:2] - jobs, kwargs = filter_jobs(jobs, tasks, org_id) - org_staff = get_org_staff(org_id, memberships) - - for user in users: - user_jobs = [] - for job in jobs: - job_staff = get_job_staff(job, tasks, projects) - if user['id'] in job_staff | org_staff: - user_jobs.append(job) - if is_org_member(memberships, user, org_id): - self._test_list_jobs_200(user['username'], user_jobs, **kwargs) - else: - self._test_list_jobs_403(user['username'], **kwargs) - - -class TestGetAnnotations: - def _test_get_job_annotations_200(self, user, jid, data, **kwargs): - response = get_method(user, f'jobs/{jid}/annotations', **kwargs) - - assert response.status_code == HTTPStatus.OK - assert DeepDiff(data, response.json()) == {} - - def _test_get_job_annotations_403(self, user, jid, **kwargs): - response = get_method(user, f'jobs/{jid}/annotations', **kwargs) - assert response.status_code == HTTPStatus.FORBIDDEN - - @pytest.mark.parametrize('org', [None, '', 1, 2]) - def test_admin_get_job_annotations(self, jobs, tasks, annotations, org): - jobs, kwargs = filter_jobs(jobs, tasks, org) - - # keep only the reasonable amount of jobs - for job in jobs[:8]: - jid = str(job['id']) - self._test_get_job_annotations_200('admin2', jid, - annotations['job'][jid], **kwargs) - - @pytest.mark.parametrize('org_id', ['', None]) - @pytest.mark.parametrize('groups', [['business'], ['user'], ['worker'], []]) - def test_non_admin_get_job_annotations(self, org_id, groups, users, jobs, tasks, - projects, annotations, memberships): - users = [u for u in users if u['groups'] == groups][:4] - jobs, kwargs = filter_jobs(jobs, tasks, org_id) - org_staff = get_org_staff(org_id, memberships) - - # keep only the reasonable amount of jobs - for job in jobs[:8]: - job_staff = get_job_staff(job, tasks, projects) - jid = str(job['id']) - - for user in users: - if user['id'] in job_staff | org_staff: - self._test_get_job_annotations_200(user['username'], - jid, annotations['job'][jid], **kwargs) - else: - self._test_get_job_annotations_403(user['username'], - jid, **kwargs) diff --git a/tests/rest_api/test_0004_analytics.py b/tests/rest_api/test_analytics.py similarity index 100% rename from tests/rest_api/test_0004_analytics.py rename to tests/rest_api/test_analytics.py diff --git a/tests/rest_api/test_0005_chache_policy.py b/tests/rest_api/test_chache_policy.py similarity index 100% rename from tests/rest_api/test_0005_chache_policy.py rename to tests/rest_api/test_chache_policy.py diff --git a/tests/rest_api/test_0000_check_objects_integrity.py b/tests/rest_api/test_check_objects_integrity.py similarity index 100% rename from tests/rest_api/test_0000_check_objects_integrity.py rename to tests/rest_api/test_check_objects_integrity.py diff --git a/tests/rest_api/test_0050_invitations.py b/tests/rest_api/test_invitations.py similarity index 100% rename from tests/rest_api/test_0050_invitations.py rename to tests/rest_api/test_invitations.py diff --git a/tests/rest_api/test_jobs.py b/tests/rest_api/test_jobs.py new file mode 100644 index 00000000..e17775af --- /dev/null +++ b/tests/rest_api/test_jobs.py @@ -0,0 +1,306 @@ +# Copyright (C) 2021 Intel Corporation +# +# SPDX-License-Identifier: MIT + +from http import HTTPStatus +from deepdiff import DeepDiff +import pytest +from .utils.config import get_method, patch_method + +def get_job_staff(job, tasks, projects): + job_staff = [] + job_staff.append(job['assignee']) + tid = job['task_id'] + job_staff.append(tasks[tid]['owner']) + job_staff.append(tasks[tid]['assignee']) + + pid = job['project_id'] + if pid: + job_staff.append(projects[pid]['owner']) + job_staff.append(projects[pid]['assignee']) + job_staff = set(u['id'] for u in job_staff if u is not None) + + return job_staff + +def filter_jobs(jobs, tasks, org): + if org is None: + kwargs = {} + jobs = jobs.raw + elif org == '': + kwargs = {'org': ''} + jobs = [job for job in jobs + if tasks[job['task_id']]['organization'] is None] + else: + kwargs = {'org_id': org} + jobs = [job for job in jobs + if tasks[job['task_id']]['organization'] == org] + + return jobs, kwargs + +class TestGetJobs: + def _test_get_job_200(self, user, jid, data, **kwargs): + response = get_method(user, f'jobs/{jid}', **kwargs) + + assert response.status_code == HTTPStatus.OK + assert DeepDiff(data, response.json()) == {} + + def _test_get_job_403(self, user, jid, **kwargs): + response = get_method(user, f'jobs/{jid}', **kwargs) + assert response.status_code == HTTPStatus.FORBIDDEN + + @pytest.mark.parametrize('org', [None, '', 1, 2]) + def test_admin_get_job(self, jobs, tasks, org): + jobs, kwargs = filter_jobs(jobs, tasks, org) + + # keep only the reasonable amount of jobs + for job in jobs[:8]: + self._test_get_job_200('admin2', job['id'], job, **kwargs) + + @pytest.mark.parametrize('org_id', ['', None, 1, 2]) + @pytest.mark.parametrize('groups', [['business'], ['user'], ['worker'], []]) + def test_non_admin_get_job(self, org_id, groups, users, jobs, tasks, projects, + org_staff): + # keep the reasonable amount of users and jobs + users = [u for u in users if u['groups'] == groups][:4] + jobs, kwargs = filter_jobs(jobs, tasks, org_id) + org_staff = org_staff(org_id) + + for job in jobs[:8]: + job_staff = get_job_staff(job, tasks, projects) + + # check if the specific user in job_staff to see the job + for user in users: + if user['id'] in job_staff | org_staff: + self._test_get_job_200(user['username'], job['id'], job, **kwargs) + else: + self._test_get_job_403(user['username'], job['id'], **kwargs) + +class TestListJobs: + def _test_list_jobs_200(self, user, data, **kwargs): + response = get_method(user, 'jobs', **kwargs, page_size=all) + + assert response.status_code == HTTPStatus.OK + assert DeepDiff(data, response.json()['results']) == {} + + def _test_list_jobs_403(self, user, **kwargs): + response = get_method(user, 'jobs', **kwargs) + assert response.status_code == HTTPStatus.FORBIDDEN + + @pytest.mark.parametrize('org', [None, '', 1, 2]) + def test_admin_list_jobs(self, jobs, tasks, org): + jobs, kwargs = filter_jobs(jobs, tasks, org) + self._test_list_jobs_200('admin1', jobs, **kwargs) + + @pytest.mark.parametrize('org_id', ['', None, 1, 2]) + @pytest.mark.parametrize('groups', [['business'], ['user'], ['worker'], []]) + def test_non_admin_list_jobs(self, org_id, groups, users, jobs, tasks, + projects, org_staff, is_org_member): + users = [u for u in users if u['groups'] == groups][:2] + jobs, kwargs = filter_jobs(jobs, tasks, org_id) + org_staff = org_staff(org_id) + + for user in users: + user_jobs = [] + for job in jobs: + job_staff = get_job_staff(job, tasks, projects) + if user['id'] in job_staff | org_staff: + user_jobs.append(job) + if is_org_member(user['id'], org_id): + self._test_list_jobs_200(user['username'], user_jobs, **kwargs) + else: + self._test_list_jobs_403(user['username'], **kwargs) + + +class TestGetAnnotations: + def _test_get_job_annotations_200(self, user, jid, data, **kwargs): + response = get_method(user, f'jobs/{jid}/annotations', **kwargs) + + assert response.status_code == HTTPStatus.OK + assert DeepDiff(data, response.json()) == {} + + def _test_get_job_annotations_403(self, user, jid, **kwargs): + response = get_method(user, f'jobs/{jid}/annotations', **kwargs) + assert response.status_code == HTTPStatus.FORBIDDEN + + @pytest.mark.parametrize('org', ['']) + @pytest.mark.parametrize('groups, job_staff, is_allow', [ + (['admin'], True, True), (['admin'], False, True), + (['business'], True, True), (['business'], False, False), + (['worker'], True, True), (['worker'], False, False), + (['user'], True, True), (['user'], False, False) + ]) + def test_user_get_job_annotations(self, org, groups, job_staff, + is_allow, users, jobs, tasks, annotations, find_job_staff_user): + users = [u for u in users if u['groups'] == groups] + jobs, kwargs = filter_jobs(jobs, tasks, org) + username, job_id = find_job_staff_user(jobs, users, job_staff) + + if is_allow: + self._test_get_job_annotations_200(username, + job_id, annotations['job'][str(job_id)], **kwargs) + else: + self._test_get_job_annotations_403(username, job_id, **kwargs) + + @pytest.mark.parametrize('org', [2]) + @pytest.mark.parametrize('role, job_staff, is_allow', [ + ('owner', True, True), ('owner', False, True), + ('maintainer', True, True), ('maintainer', False, True), + ('supervisor', True, True), ('supervisor', False, False), + ('worker', True, True), ('worker', False, False), + ]) + def test_member_get_job_annotations(self, org, role, job_staff, is_allow, + jobs, tasks, find_job_staff_user, annotations, find_users): + users = find_users(org=org, role=role) + jobs, kwargs = filter_jobs(jobs, tasks, org) + username, jid = find_job_staff_user(jobs, users, job_staff) + + if is_allow: + self._test_get_job_annotations_200(username, + jid, annotations['job'][str(jid)], **kwargs) + else: + self._test_get_job_annotations_403(username, jid, **kwargs) + + @pytest.mark.parametrize('org', [1]) + @pytest.mark.parametrize('privilege, is_allow', [ + ('admin', True), ('business', False), ('worker', False), ('user', False) + ]) + def test_non_member_get_job_annotations(self, org, privilege, is_allow, + jobs, tasks, find_job_staff_user, annotations, find_users): + users = find_users(privilege=privilege, exclude_org=org) + jobs, kwargs = filter_jobs(jobs, tasks, org) + username, job_id = find_job_staff_user(jobs, users, False) + + kwargs = {'org_id': org} + if is_allow: + self._test_get_job_annotations_200(username, + job_id, annotations['job'][str(job_id)], **kwargs) + else: + self._test_get_job_annotations_403(username, job_id, **kwargs) + + +class TestPatchJobAnnotations: + _ORG = 2 + + def _test_check_respone(self, is_allow, response, data=None): + if is_allow: + assert response.status_code == HTTPStatus.OK + assert DeepDiff(data, response.json()) == {} + else: + assert response.status_code == HTTPStatus.FORBIDDEN + + @pytest.fixture(scope='class') + def request_data(self, annotations): + def get_data(jid): + data = annotations['job'][str(jid)].copy() + data['shapes'][0].update({'points': [2.0, 3.0, 4.0, 5.0, 6.0, 7.0]}) + data['version'] += 1 + return data + return get_data + + @pytest.mark.parametrize('org', [2]) + @pytest.mark.parametrize('role, job_staff, is_allow', [ + ('maintainer', False, True), ('owner', False, True), + ('supervisor', False, False), ('worker', False, False), + ('maintainer', True, True), ('owner', True, True), + ('supervisor', True, True), ('worker', True, True) + ]) + def test_member_update_job_annotations(self, org, role, job_staff, is_allow, + find_job_staff_user, find_users, request_data, jobs_by_org): + users = find_users(role=role, org=org) + jobs = jobs_by_org[org] + username, jid = find_job_staff_user(jobs, users, job_staff) + + data = request_data(jid) + response = patch_method(username, f'jobs/{jid}/annotations', + data, org_id=org, action='update') + + self._test_check_respone(is_allow, response, data) + + + @pytest.mark.parametrize('org', [2]) + @pytest.mark.parametrize('privilege, is_allow', [ + ('admin', True), ('business', False), ('worker', False), ('user', False) + ]) + def test_non_member_update_job_annotations(self, org, privilege, is_allow, + find_job_staff_user, find_users, request_data, jobs_by_org): + users = find_users(privilege=privilege, exclude_org=org) + jobs = jobs_by_org[org] + username, jid = find_job_staff_user(jobs, users, False) + + data = request_data(jid) + response = patch_method(username, f'jobs/{jid}/annotations', data, + org_id=org, action='update') + + self._test_check_respone(is_allow, response, data) + + @pytest.mark.parametrize('org', ['']) + @pytest.mark.parametrize('privilege, job_staff, is_allow', [ + ('admin', True, True), ('admin', False, True), + ('business', True, True), ('business', False, False), + ('worker', True, True), ('worker', False, False), + ('user', True, True), ('user', False, False) + ]) + def test_user_update_job_annotations(self, org, privilege, job_staff, is_allow, + find_job_staff_user, find_users, request_data, jobs_by_org): + users = find_users(privilege=privilege) + jobs = jobs_by_org[org] + username, jid = find_job_staff_user(jobs, users, job_staff) + + data = request_data(jid) + response = patch_method(username, f'jobs/{jid}/annotations', data, + org_id=org, action='update') + + self._test_check_respone(is_allow, response, data) + +class TestPatchJob: + _ORG = 2 + + @pytest.fixture(scope='class') + def find_task_staff_user(self, is_task_staff): + def find(jobs, users, is_staff): + for job in jobs: + for user in users: + if is_staff == is_task_staff(user['id'], job['task_id']): + return user, job['id'] + return None, None + return find + + @pytest.fixture(scope='class') + def expected_data(self, jobs, users): + keys = ['url', 'id', 'username', 'first_name', 'last_name'] + def find(job_id, assignee_id): + data = jobs[job_id].copy() + data['assignee'] = dict(filter(lambda a: a[0] in keys, + users[assignee_id].items())) + return data + return find + + @pytest.fixture(scope='class') + def new_assignee(self, jobs, tasks, assignee_id, org_staff): + def find_new_assignee(jid, user_id): + members = org_staff(tasks[jobs[jid]['task_id']]['organization']) + members -= {assignee_id(jobs[jid]), user_id} + return members.pop() + return find_new_assignee + + @pytest.mark.parametrize('org', [2]) + @pytest.mark.parametrize('role, task_staff, is_allow', [ + ('maintainer', False, True), ('owner', False, True), + ('supervisor', False, False), ('worker', False, False), + ('maintainer', True, True), ('owner', True, True), + ('supervisor', True, True), ('worker', True, True) + ]) + def test_member_update_job_assignee(self, org, role, task_staff, is_allow, + find_task_staff_user, find_users, jobs_by_org, new_assignee, expected_data): + users, jobs = find_users(role=role, org=org), jobs_by_org[org] + user, jid = find_task_staff_user(jobs, users, task_staff) + + assignee = new_assignee(jid, user['id']) + response = patch_method(user['username'], f'jobs/{jid}', + {'assignee': assignee}, org_id=self._ORG) + + if is_allow: + assert response.status_code == HTTPStatus.OK + assert DeepDiff(expected_data(jid, assignee), response.json()) == {} + else: + assert response.status_code == HTTPStatus.FORBIDDEN diff --git a/tests/rest_api/test_0003_membership.py b/tests/rest_api/test_memberships.py similarity index 100% rename from tests/rest_api/test_0003_membership.py rename to tests/rest_api/test_memberships.py diff --git a/tests/rest_api/test_0002_organizations.py b/tests/rest_api/test_organizations.py similarity index 100% rename from tests/rest_api/test_0002_organizations.py rename to tests/rest_api/test_organizations.py diff --git a/tests/rest_api/test_0001_users.py b/tests/rest_api/test_users.py similarity index 100% rename from tests/rest_api/test_0001_users.py rename to tests/rest_api/test_users.py