import json from unittest.mock import patch from tests.test_utils import FixtureLoader from models import models from tests import BaseTestCase, mock_for_user from tests.projects.fixtures.projects_permissions_fixture import fixture user1Mock = mock_for_user(1, "user-1@example.com", "sme-dna|user-1", labels=[1, 2, 3, 4, 5]) user2Mock = mock_for_user(2, "user-2@example.com", "sme-dna|user-2") user3Mock = mock_for_user(3, "user-3@example.com", "sme-dna|user-3", labels=[4]) user4Mock = mock_for_user(4, "user-4@example.com", "sme-dna|user-4") user5Mock = mock_for_user(5, "user-5@example.com", "sme-dna|user-5") class TestGetProjectPermissions(BaseTestCase): url = "/projects/500" update_project_data = { "targets": { "items": [ { "id": "plylistID1", "images": [{"height": 10, "url": "http://test.com/qwer", "width": 1}], "ownerName": "User1234", "provider": "spotify", "name": "Best of Mick Gordon", } ], "type": "Playlist", }, "name": "project_name", "endDate": "2020-10-11", "startDate": "2019-09-12", } def setUp(self): super().setUp() FixtureLoader(models=models).import_as_sql(fixture) @patch("auth.atlas.atlas_token_decoder.jwt.decode", user1Mock.jwt_decode) def test_get_project_by_owner_200(self): response = self.execute_get(self.url, headers=self.headers) self.assertEqual(200, response.status_code) @patch("auth.atlas.atlas_token_decoder.jwt.decode", user3Mock.jwt_decode) def test_get_project_by_user_with_same_label_200(self): response = self.execute_get(self.url, headers=self.headers) self.assertEqual(200, response.status_code) @patch("auth.atlas.atlas_token_decoder.jwt.decode", user2Mock.jwt_decode) def test_get_project_by_not_owner_403(self): response = self.execute_get(self.url, headers=self.headers) self.assertEqual(403, response.status_code) @patch("auth.atlas.atlas_token_decoder.jwt.decode", user4Mock.jwt_decode) def test_get_project_by_shared_user_with_read_permission_200(self): response = self.execute_get(self.url, headers=self.headers) self.assertEqual(200, response.status_code) @patch("auth.atlas.atlas_token_decoder.jwt.decode", user1Mock.jwt_decode) def test_update_project_by_owner_200(self): response = self.execute_put(self.url, data=json.dumps(self.update_project_data), headers=self.headers) self.assertEqual(200, response.status_code) @patch("auth.atlas.atlas_token_decoder.jwt.decode", user2Mock.jwt_decode) def test_update_project_by_not_a_team_member_403(self): response = self.execute_put(self.url, data=json.dumps(self.update_project_data), headers=self.headers) self.assertEqual(403, response.status_code) @patch("auth.atlas.atlas_token_decoder.jwt.decode", user3Mock.jwt_decode) def test_update_project_by_user_with_same_label_403(self): response = self.execute_put(self.url, data=json.dumps(self.update_project_data), headers=self.headers) self.assertEqual(403, response.status_code) @patch("auth.atlas.atlas_token_decoder.jwt.decode", user4Mock.jwt_decode) def test_update_project_by_shared_user_with_read_permission_403(self): response = self.execute_put(self.url, data=json.dumps(self.update_project_data), headers=self.headers) self.assertEqual(403, response.status_code)