import json import pytest from unittest.mock import patch from tests.test_utils import FixtureLoader from models import models from tests import BaseTestCase, mock_for_user from tests.permissions.fixtures.fixture import fixture unauthorizedUserMock = mock_for_user(6, "user-6@example.com", "sme-dna|phn0091d6cuhjp30fe6opttml") @patch("auth.atlas.atlas_token_decoder.jwt.decode", unauthorizedUserMock.jwt_decode) class TestProjectPermissions(BaseTestCase): update_project_data = { "targets": { "items": [{"id": "artst1", "image": None, "isSony": True, "name": "Mick Gordon"}], "type": "Artist", }, "name": "project_name", "endDate": "2020-10-11", } def setUp(self): super().setUp() FixtureLoader(models=models).import_as_sql(fixture) def test_cant_view_project(self): url = "/projects/500" response = self.execute_get(url, headers=self.headers) self.assertEqual(403, response.status_code) def test_cant_update_project(self): url = "/projects/500" response = self.execute_put(url, data=json.dumps(self.update_project_data), headers=self.headers) self.assertEqual(403, response.status_code) def test_cant_view_project_team(self): url = "/projects/500/team" response = self.client.get(url, headers=self.headers) self.assertEqual(403, response.status_code) def test_cant_manage_project_team(self): url = "/projects/500/team" data = {"added": [{"userId": 6, "roleId": 4, "categoryIds": []}]} response = self.client.post(url, data=json.dumps(data), headers=self.headers) self.assertEqual(403, response.status_code) @pytest.mark.skip(reason="Test skipped because Phase logic changed") @patch("auth.atlas.atlas_token_decoder.jwt.decode", unauthorizedUserMock.jwt_decode) class TestCampaignPermissions(BaseTestCase): def setUp(self): super().setUp() FixtureLoader(models=models).import_as_sql(fixture) def test_cant_view_campaign_list(self): url = "/projects/500/campaigns" response = self.execute_get(url, headers=self.headers) self.assertEqual(403, response.status_code) def test_cant_view_campaign(self): url = "/projects/500/campaigns/100" response = self.execute_get(url, headers=self.headers) self.assertEqual(403, response.status_code) def test_cant_create_campaign(self): url = "/projects/500/campaigns" data = { "name": "test111", "territories": [2], "startDate": "2019-09-12", "endDate": "2019-09-21", "plannedBudget": 1999, "campaignType": 5, "gratis": False, "platforms": [2], "objective": 2, "genders": [1], "provider": 2, "audienceLowerAge": 18, "audienceHigherAge": 25, "notes": "Some notes", } response = self.execute_post(url, data=json.dumps(data), headers=self.headers) self.assertEqual(403, response.status_code) def test_cant_update_campaign(self): url = "/projects/500/campaigns/100" update_campaign_data = { "name": "Campaign 1", "territories": [2], "startDate": "2019-09-12", "endDate": "2019-09-26", "plannedBudget": 122, "objective": 1, "genders": [1], "provider": 2, "audienceLowerAge": 18, "audienceHigherAge": 25, "platforms": [2], } response = self.execute_put(url, data=json.dumps(update_campaign_data), headers=self.headers) self.assertEqual(403, response.status_code) def test_cant_delete_campaign(self): url = "/projects/500/campaigns/100" response = self.execute_delete(url, data=json.dumps({}), headers=self.headers) self.assertEqual(403, response.status_code)