from unittest.mock import patch from tests.test_utils import FixtureLoader from models import models from tests import BaseTestCase, mock from tests.projects.fixtures.projects_fixture import fixture @patch("auth.atlas.atlas_token_decoder.jwt.decode", mock.jwt_decode) class TestSearchUsers(BaseTestCase): def setUp(self): super().setUp() FixtureLoader(models=models).import_as_sql(fixture) @staticmethod def get_set_of_ids(obj): return set([user["id"] for user in obj]) def test_get_all_unassigned_users(self): url = "/projects/502/users" response = self.execute_get(url, headers=self.headers) users = response.json self.assertEqual(200, response.status_code) self.soft_assert(self.assertEqual, len(users), 9) self.soft_assert(self.assertEqual, {1, 2, 3, 4, 5, 6, 9, 10, 42}, set(user["id"] for user in users)) self.soft_assert(self.assertEqual, users[0]["email"], "dev-marketing-user-1@example.com") self.soft_assert(self.assertEqual, users[0]["id"], 1) self.soft_assert(self.assertEqual, self.get_set_of_ids(users[0]["labels"]), {1, 2, 3, 4, 5}) self.soft_assert(self.assertEqual, users[1]["email"], "dev-marketing-user-2@example.com") self.soft_assert(self.assertEqual, users[1]["id"], 2) self.soft_assert(self.assertEqual, self.get_set_of_ids(users[1]["labels"]), {6}) self.soft_assert(self.assertEqual, users[2]["email"], "dev-marketing-user-3@example.com") self.soft_assert(self.assertEqual, users[2]["id"], 3) self.soft_assert(self.assertEqual, users[2]["labels"], []) self.soft_assert(self.assertEqual, users[3]["email"], "dev-marketing-user-4@example.com") self.soft_assert(self.assertEqual, users[3]["id"], 4) self.soft_assert(self.assertEqual, users[3]["labels"], []) self.soft_assert(self.assertEqual, users[4]["email"], "dev-marketing-user-5@example.com") self.soft_assert(self.assertEqual, users[4]["id"], 5) self.soft_assert(self.assertEqual, self.get_set_of_ids(users[4]["labels"]), {4}) self.soft_assert(self.assertEqual, users[5]["email"], "dev-marketing-user-6@example.com") self.soft_assert(self.assertEqual, users[5]["id"], 6) self.soft_assert(self.assertEqual, self.get_set_of_ids(users[5]["labels"]), {7}) self.soft_assert(self.assertEqual, users[6]["email"], "dev-marketing-adminuch9@example.com") self.soft_assert(self.assertEqual, users[6]["id"], 9) self.soft_assert(self.assertEqual, self.get_set_of_ids(users[6]["labels"]), {1, 3}) self.assert_all() def test_get_all_users_by_email(self): url = "/projects/502/users" response = self.execute_get( url, headers=self.headers, query_string={"freeText": "dev-marketing-user-3@example.com"} ) users = response.json self.assertEqual(200, response.status_code) self.soft_assert(self.assertEqual, len(users), 1) self.soft_assert(self.assertEqual, users[0]["email"], "dev-marketing-user-3@example.com") self.soft_assert(self.assertEqual, users[0]["id"], 3) self.soft_assert(self.assertEqual, users[0]["labels"], []) self.assert_all() def test_get_users_by_non_existed_project_id(self): url = "/projects/50505050/users" response = self.execute_get(url, headers=self.headers, query_string={"freeText": "blabla@example.com"}) self.assertEqual(404, response.status_code) self.assertEqual("project_not_found", response.json["code"]) def test_get_users_by_non_existed_email(self): url = "/projects/502/users" response = self.execute_get(url, headers=self.headers, query_string={"freeText": "blabla@example.com"}) users = response.json self.assertEqual(200, response.status_code) self.soft_assert(self.assertEqual, len(users), 0) self.assert_all()