class TestTenantDashboardViews(TenantTestCase): """ Console: python manage.py test tenant_dashboard.tests.test_web_views """ @classmethod def setUpClass(cls): """ Run at the beginning before all the unit tests run. """ super().setUpClass() def setUp(self): """ Run at the beginning of every unit test. """ super(TestTenantDashboardViews, self).setUp() # Setup our app and account. call_command('init_app', verbosity=0) call_command( 'create_shared_account', TEST_USER_EMAIL, TEST_USER_PASSWORD, "Bart", "Mika", verbosity=0 ) # Get user and credentials. user = SharedUser.objects.get() token, orig_iat = get_jwt_token_and_orig_iat(user) # Setup our clients. self.anon_c = TenantClient(self.tenant) self.auth_c = TenantClient(self.tenant, HTTP_AUTHORIZATION='JWT {0}'.format(token)) self.auth_c.login( username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD ) def tearDown(self): """ Run at the end of every unit test. """ # Delete previous data. SharedUser.objects.all().delete() # Delete our clients. del self.anon_c del self.auth_c # Finish teardown. super(TestTenantDashboardViews, self).tearDown() def test_master_page(self): response = self.auth_c.get(self.tenant.reverse('workery_tenant_dashboard_master')) self.assertEqual(response.status_code, 200) self.assertIn('Dashboard', str(response.content))
class LoggedInTestCase(FastTenantTestCase): @classmethod def setup_tenant(cls, tenant): tenant.owner = UserFactory() tenant.owner.set_password('password') tenant.owner.save() @classmethod def setUpClass(cls): super().setUpClass() # authorize tenant owner cls.tenant.authorized_users.add(cls.tenant.owner) cls.tester = UserFactory() cls.tester.set_password('password') cls.tester.save() # authorize this user cls.tenant.authorized_users.add(cls.tester) def setUp(self): super().setUp() self.client = TenantClient(self.tenant) self.client.login(username=self.tester.username, # nosec:B106:hardcoded_password_funcarg password='******')
class TestUsernames(TenantTestCase): def setUp(self): super().setUp() self.client = TenantClient(self.tenant) for i in range(5): user = get_user_model().objects.create( **{get_user_model().USERNAME_FIELD: f"user{i}"}) user.set_password("dummypassword") user.save() def test_users_list_view(self): logged_in = self.client.login(**{ get_user_model().USERNAME_FIELD: "user0", 'password': "******" }) found = resolve(reverse('django_chatter:users_list')) self.assertEqual(found.func, users_list) response = self.client.get(reverse('django_chatter:users_list'), HTTP_X_REQUESTED_WITH='XMLHttpRequest') json_array = [] for user in get_user_model().objects.all(): dict = {} dict["id"] = user.pk dict["text"] = user.get_username() json_array.append(dict) self.assertEqual(response.status_code, 200) self.assertEqual(str(response.content, encoding='utf-8'), json.dumps(json_array))
class TestMessagesFetch(TenantTestCase): def setUp(self): super().setUp() self.client = TenantClient(self.tenant) user = get_user_model().objects.create(username="******") user.set_password('dummypassword') user.save() room = Room.objects.create() room.members.add(user) for i in range(25): Message.objects.create(sender=user, room=room, text=f"Message {i}") def test_pagination(self): logged_in = self.client.login(username="******", password="******") assert logged_in room_uuid = str(Room.objects.all()[0].id) messages = Message.objects.all()[:20] messages_array = [] for message in messages: dict = {} dict['sender'] = message.sender.username dict['message'] = message.text dict['received_room_id'] = room_uuid dict['date_created'] = message.date_created.strftime( "%d %b %Y %H:%M:%S %Z") messages_array.append(dict) response = self.client.get(f'/ajax/get-messages/{room_uuid}/?page=1', HTTP_X_REQUESTED_WITH='XMLHttpRequest') content = json.loads(response.content) self.assertEqual(content, messages_array) # Check second page messages = Message.objects.all()[20:] messages_array = [] for message in messages: dict = {} dict['sender'] = message.sender.username dict['message'] = message.text dict['received_room_id'] = room_uuid dict['date_created'] = message.date_created.strftime( "%d %b %Y %H:%M:%S %Z") messages_array.append(dict) response = self.client.get(f'/ajax/get-messages/{room_uuid}/?page=2', HTTP_X_REQUESTED_WITH='XMLHttpRequest') content = json.loads(response.content) self.assertEqual(content, messages_array) response = self.client.get(f'/ajax/get-messages/{room_uuid}/?page=3', HTTP_X_REQUESTED_WITH='XMLHttpRequest') content = json.loads(response.content) self.assertEqual(content, [])
class LoggedInTestCase(FastTenantTestCase): @classmethod def get_test_schema_name(cls): return 'fast' @classmethod def get_test_tenant_domain(cls): return 'tenant.fast-test.com' @classmethod def setup_tenant(cls, tenant): tenant.publicly_readable = False tenant.owner = UserFactory() tenant.owner.set_password('password') tenant.owner.save() @classmethod def setUpClass(cls): super().setUpClass() # authorize tenant owner cls.tenant.authorized_users.add(cls.tenant.owner) cls.tester = UserFactory() cls.tester.set_password('password') cls.tester.save() # authorize this user cls.tenant.authorized_users.add(cls.tester) # initial data with tenant_context(cls.tenant): cls.test_plan_by_owner = TestPlanFactory(author=cls.tenant.owner) def setUp(self): super().setUp() self.client = TenantClient(self.tenant) self.client.login( username=self.tester. username, # nosec:B106:hardcoded_password_funcarg password='******')
class TestIndexView(TenantTestCase): def setUp(self): super().setUp() self.client = TenantClient(self.tenant) user = get_user_model().objects.create(username="******") user.set_password('dummypassword') user.save() room = Room.objects.create() room.members.add(user) message_1 = Message.objects.create( sender=user, text="first message", room=room ) message_2 = Message.objects.create( sender=user, text="last message", room=room ) def test_chat_render_view(self): logged_in = self.client.login(username="******", password="******") found = resolve(reverse('django_chatter:index')) self.assertEqual( type(found.func), type(IndexView.as_view()) ) response = self.client.get(reverse('django_chatter:index'), follow=True) self.assertEqual(response.status_code, 200) room = Room.objects.all()[0] room_url = f"/chat/{room.id}/" message = Message.objects.all()[0] self.assertEqual(response.redirect_chain[0][0], room_url) self.assertEqual(str(room.id), response.context['room_uuid_json']) self.assertEqual( str(response.context['latest_messages_curr_room']), str(Message.objects.all()) ) self.assertEqual(response.context['room_name'], 'Notes to Yourself') self.assertTemplateUsed(response, 'django_chatter/base.html') self.assertTemplateUsed(response, 'django_chatter/chat-window.html') self.assertTemplateUsed(response, 'django_chatter/chatroom-list.html') self.assertQuerysetEqual( response.context['rooms_with_unread'], Room.objects.none() )
def test_tenantmemiddleware_with_authenticated_user_in_tenant_schema(self): # Verify that no "Me" objects are created. self.assertEqual(Me.objects.all().count(), 0) # Create our User and run our test. user = User.objects.create_user( # Create our User. email=TEST_USER_EMAIL, username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD, first_name=TEST_USER_FIRSTNAME, last_name=TEST_USER_LASTNAME, ) user.is_active = True user.save() token = Token.objects.get(user=user) client = TenantClient(self.tenant, HTTP_AUTHORIZATION='Token ' + token.key) client.login(username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD) response = client.get(reverse('public_home')) self.assertEqual(response.status_code, 200) # Verify me = Me.objects.get_by_owner_or_none(owner=user) self.assertIsNotNone(me)
def test_authenticate_with_success(self): # Setup email = self.user.email.lower( ) # Emails should be case-insensitive unique converted = email.encode( 'utf8', 'ignore') # Deal with internationalized email addresses self.user.username = base64.urlsafe_b64encode( hashlib.sha256(converted).digest())[:30] self.user.save() # Test token = Token.objects.get(user__email=TEST_USER_EMAIL) authorized_client = TenantClient(self.tenant, HTTP_AUTHORIZATION='Token ' + token.key) authenticated_user = authorized_client.login( username=TEST_USER_EMAIL, password=TEST_USER_PASSWORD) self.assertTrue(authenticated_user)
class TenantIntakeEntrepreneurTestCases(APITestCase, TenantTestCase): fixtures = [] def setup_tenant(self, tenant): """Tenant Schema""" tenant.schema_name = 'galacticalliance' tenant.name = "Galactic Alliance of Humankind" tenant.is_setup = True tenant.has_perks = True tenant.has_mentors = True tenant.how_discovered = "Command HQ" tenant.how_many_served = 1 @classmethod def setUpTestData(cls): Group.objects.bulk_create([ Group( id=constants.ENTREPRENEUR_GROUP_ID, name="Entreprenuer", ), Group( id=constants.MENTOR_GROUP_ID, name="Mentor", ), Group( id=constants.ADVISOR_GROUP_ID, name="Advisor", ), Group( id=constants.ORGANIZATION_MANAGER_GROUP_ID, name="Org Manager", ), Group( id=constants.ORGANIZATION_ADMIN_GROUP_ID, name="Org Admin", ), Group( id=constants.CLIENT_MANAGER_GROUP_ID, name="Client Manager", ), Group( id=constants.SYSTEM_ADMIN_GROUP_ID, name="System Admin", ), ]) User.objects.bulk_create([ User( email='*****@*****.**', username='******', password='******', is_active=True, ), User( email='*****@*****.**', username='******', password='******', is_active=True, ), User( email='*****@*****.**', username='******', password='******', is_active=True, ), User( email='*****@*****.**', username='******', password='******', is_active=True, ), User( email='*****@*****.**', username='******', password='******', is_active=True, ), User( email='*****@*****.**', username='******', password='******', is_active=True, ), User( email='*****@*****.**', username='******', password='******', is_active=True, ), User( email='*****@*****.**', username='******', password='******', is_active=True, ), User( email='*****@*****.**', username='******', password='******', is_active=True, ), ]) user = User.objects.create_user( # Create our User. email=TEST_USER_EMAIL, username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD) user.is_active = True user.save() @transaction.atomic def setUp(self): translation.activate('en') # Set English super(TenantIntakeEntrepreneurTestCases, self).setUp() # Initialize our test data. self.user = User.objects.get(username=TEST_USER_USERNAME) token = Token.objects.get(user=self.user) # Setup. self.unauthorized_client = TenantClient(self.tenant) self.authorized_client = TenantClient(self.tenant, HTTP_AUTHORIZATION='Token ' + token.key) self.authorized_client.login(username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD) # Update Organization. self.tenant.users.add(self.user) self.tenant.save() # Setup User. country = CountryOption.objects.create(id=1, name='Avalan') province = ProvinceOption.objects.create(id=1, name='Colony 01', country=country) city = CityOption.objects.create( id=1, name='Megazone 23', province=province, country=country, ) self.me = Me.objects.create( owner=self.user, address=PostalAddress.objects.create( country=CountryOption.objects.get(id=1), region=ProvinceOption.objects.get(id=1), locality=CityOption.objects.get(id=1), owner=self.user)) # Make the User belong to the Entrepreneur group. entrepreneur_group = Group.objects.get( id=constants.ENTREPRENEUR_GROUP_ID) self.user.groups.add(entrepreneur_group) self.user.save() # Create the Intake object. intake = Intake.objects.create(me=self.me, status=constants.CREATED_STATUS) @transaction.atomic def tearDown(self): PostalAddress.objects.delete_all() ContactPoint.objects.delete_all() Me.objects.delete_all() users = User.objects.all() for user in users.all(): user.delete() items = Group.objects.all() for item in items.all(): item.delete() # super(TenantIntakeEntrepreneurTestCases, self).tearDown() @transaction.atomic def test_intake_page_with_employee_user(self): entrepreneur_group = Group.objects.get( id=constants.ENTREPRENEUR_GROUP_ID) self.user.groups.remove(entrepreneur_group) self.user.save() url = reverse('tenant_intake_entr_round_one_step_one') response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) @transaction.atomic def test_intake_round_one_page_one_with_entrepreneur_user(self): url = reverse('tenant_intake_entr_round_one_step_one') response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertTrue(len(response.content) > 1) #self.assertIn(b'Rewards',response.content) @transaction.atomic def test_intake_round_one_page_two_with_entrepreneur_user(self): url = reverse('tenant_intake_entr_round_one_step_two') response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertTrue(len(response.content) > 1) #self.assertIn(b'Rewards',response.content) @transaction.atomic def test_intake_round_one_page_three_with_entrepreneur_user(self): url = reverse('tenant_intake_entr_round_one_step_three') response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertTrue(len(response.content) > 1) #self.assertIn(b'Rewards',response.content) @transaction.atomic def test_intake_round_one_page_four_with_entrepreneur_user(self): url = reverse('tenant_intake_entr_round_one_step_four') response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertTrue(len(response.content) > 1) #self.assertIn(b'Rewards',response.content) @transaction.atomic def test_intake_round_one_page_five_with_entrepreneur_user(self): url = reverse('tenant_intake_entr_round_one_step_five') response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertTrue(len(response.content) > 1) #self.assertIn(b'Rewards',response.content) @transaction.atomic def test_intake_round_one_page_six_with_entrepreneur_user(self): url = reverse('tenant_intake_entr_round_one_step_six') response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertTrue(len(response.content) > 1) #self.assertIn(b'Rewards',response.content) @transaction.atomic def test_intake_round_two_page_one_with_entrepreneur_user(self): url = reverse('tenant_intake_entr_round_two_step_one') response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertTrue(len(response.content) > 1) #self.assertIn(b'Rewards',response.content) @transaction.atomic def test_intake_round_two_page_two_with_entrepreneur_user(self): url = reverse('tenant_intake_entr_round_two_step_two') response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertTrue(len(response.content) > 1) #self.assertIn(b'Rewards',response.content) @transaction.atomic def test_intake_round_two_page_three_with_entrepreneur_user(self): url = reverse('tenant_intake_entr_round_two_step_three') response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertTrue(len(response.content) > 1) #self.assertIn(b'Rewards',response.content) @transaction.atomic def test_intake_round_two_page_four_with_entrepreneur_user(self): url = reverse('tenant_intake_entr_round_two_step_four') response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertTrue(len(response.content) > 1) #self.assertIn(b'Rewards',response.content) @transaction.atomic def test_intake_round_two_page_five_with_entrepreneur_user(self): url = reverse('tenant_intake_entr_round_two_step_five') response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertTrue(len(response.content) > 1) #self.assertIn(b'Rewards',response.content) @transaction.atomic def test_intake_finished_page_with_entrepreneur_user(self): url = reverse('tenant_intake_finished') response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertTrue(len(response.content) > 1)
class TestTenantTeamViews(TenantTestCase): """ Console: python manage.py test tenant_task.tests.test_views """ #------------------# # Setup Unit Tests # #------------------# def setup_tenant(tenant): """Tenant Schema""" tenant.schema_name = TEST_SCHEMA_NAME tenant.name = 'Over 55 (London) Inc.', tenant.alternate_name = "Over55", tenant.description = "Located at the Forks of the Thames in ...", tenant.address_country = "CA", tenant.address_locality = "London", tenant.address_region = "Ontario", tenant.post_office_box_number = "", # Post Offic # tenant.postal_code = "N6H 1B4", tenant.street_address = "78 Riverside Drive", tenant.street_address_extra = "", # Extra line. @classmethod def setUpClass(cls): """ Run at the beginning before all the unit tests run. """ super().setUpClass() def setUp(self): """ Run at the beginning of every unit test. """ super(TestTenantTeamViews, self).setUp() # Setup our app and account. call_command('init_app', verbosity=0) call_command('populate_tenant_content', TEST_SCHEMA_NAME, verbosity=0) call_command('populate_tenant_sample_db', TEST_SCHEMA_NAME, verbosity=0) # Get user and credentials. user = SharedUser.objects.get(email="*****@*****.**") user2 = SharedUser.objects.get(email="*****@*****.**") token, orig_iat = get_jwt_token_and_orig_iat(user) token2, orig_iat2 = get_jwt_token_and_orig_iat(user2) # Setup our clients. self.anon_c = TenantClient(self.tenant) self.exec_auth_c = TenantClient( self.tenant, HTTP_AUTHORIZATION='JWT {0}'.format(token)) self.exec_auth_c.login(username="******", password="******") self.frontline_auth_c = TenantClient( self.tenant, HTTP_AUTHORIZATION='JWT {0}'.format(token2)) self.frontline_auth_c.login(username="******", password="******") TaskItem.objects.update_or_create( id=1, defaults={ 'id': 1, 'type_of': FOLLOW_UP_CUSTOMER_SURVEY_TASK_ITEM_TYPE_OF_ID, 'title': _('Completion Survey'), 'description': _('Please call up the client and perform the satisfaction survey.' ), 'due_date': timezone.now(), 'is_closed': False, 'job': None, 'ongoing_job': None, # 'created_by': None, # created_from # created_from_is_public # last_modified_by }) def tearDown(self): """ Run at the end of every unit test. """ # Delete previous data. SharedUser.objects.delete_all() TaskItem.objects.delete_all() # Delete our clients. del self.anon_c del self.exec_auth_c del self.frontline_auth_c # Finish teardown. super(TestTenantTeamViews, self).tearDown() def test_unassigned_task_list_page_with_executive_staff(self): response = self.exec_auth_c.get( self.tenant.reverse('workery_tenant_unassigned_task_list')) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIn('Unassigned Tasks', str(response.content)) def test_unassigned_task_list_page_with_frontline_staff(self): response = self.frontline_auth_c.get( self.tenant.reverse('workery_tenant_unassigned_task_list')) self.assertEqual(response.status_code, status.HTTP_200_OK) def test_pending_task_list_page_with_executive_staff(self): response = self.exec_auth_c.get( self.tenant.reverse('workery_tenant_task_list')) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIn('Pending Tasks', str(response.content)) def test_pending_task_list_page_with_frontline_staff(self): response = self.frontline_auth_c.get( self.tenant.reverse('workery_tenant_task_list')) self.assertEqual(response.status_code, status.HTTP_200_OK) def test_closed_task_list_page_with_executive_staff(self): response = self.exec_auth_c.get( self.tenant.reverse('workery_tenant_closed_task_list')) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIn('Closed Tasks', str(response.content)) def test_closed_task_list_page_with_frontline_staff(self): response = self.frontline_auth_c.get( self.tenant.reverse('workery_tenant_closed_task_list')) self.assertEqual(response.status_code, status.HTTP_200_OK) def test_pending_task_retrieve_page_with_open_task(self): obj = TaskItem.objects.get() a_url = self.tenant.reverse( reverse_id='workery_tenant_pending_task_retrieve', reverse_args=[int(obj.id)]) response = self.exec_auth_c.get(a_url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIn('Task', str(response.content)) def test_pending_task_retrieve_page_with_closed_task(self): obj = TaskItem.objects.get() obj.is_closed = True obj.save() a_url = self.tenant.reverse( reverse_id='workery_tenant_pending_task_retrieve', reverse_args=[int(obj.id)]) response = self.exec_auth_c.get(a_url) self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND) def test_pending_task_retrieve_2_page(self): obj = TaskItem.objects.get() a_url = self.tenant.reverse( reverse_id= 'workery_tenant_pending_task_retrieve_for_activity_sheet_retrieve', reverse_args=[int(obj.id)]) response = self.exec_auth_c.get(a_url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIn('Task', str(response.content)) def test_pending_task_retrieve_2_page_with_closed_task(self): obj = TaskItem.objects.get() obj.is_closed = True obj.save() a_url = self.tenant.reverse( reverse_id= 'workery_tenant_pending_task_retrieve_for_activity_sheet_retrieve', reverse_args=[int(obj.id)]) response = self.exec_auth_c.get(a_url) self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND) def test_pending_task_retrieve_3_page(self): obj = TaskItem.objects.get() a_url = self.tenant.reverse( reverse_id= 'workery_tenant_pending_task_retrieve_for_activity_sheet_retrieve_and_create', reverse_args=[int(obj.id)]) response = self.exec_auth_c.get(a_url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIn('Task', str(response.content)) def test_pending_task_retrieve_3_page_with_closed_task(self): obj = TaskItem.objects.get() obj.is_closed = True obj.save() a_url = self.tenant.reverse( reverse_id= 'workery_tenant_pending_task_retrieve_for_activity_sheet_retrieve_and_create', reverse_args=[int(obj.id)]) response = self.exec_auth_c.get(a_url) self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND) def test_pending_task_retrieve_4_page(self): obj = TaskItem.objects.get() a_url = self.tenant.reverse( reverse_id= 'workery_tenant_pending_task_retrieve_for_activity_sheet_follow_up_with_associate_retrieve', reverse_args=[int(obj.id)]) response = self.exec_auth_c.get(a_url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIn('Task', str(response.content)) def test_pending_task_retrieve_and_complete_page(self): obj = TaskItem.objects.get() a_url = self.tenant.reverse( reverse_id= 'workery_tenant_pending_task_retrieve_and_complete_create', reverse_args=[int(obj.id)]) response = self.exec_auth_c.get(a_url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIn('Task', str(response.content)) def test_pending_task_retrieve_and_complete_page_with_closed_task(self): obj = TaskItem.objects.get() obj.is_closed = True obj.save() a_url = self.tenant.reverse( reverse_id= 'workery_tenant_pending_task_retrieve_and_complete_create', reverse_args=[int(obj.id)]) response = self.exec_auth_c.get(a_url) self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND) def test_pending_task_retrieve_and_ongoing_update_page(self): obj = TaskItem.objects.get() a_url = self.tenant.reverse( reverse_id= 'workery_tenant_pending_task_retrieve_and_ongoing_update_create', reverse_args=[int(obj.id)]) response = self.exec_auth_c.get(a_url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIn('Task', str(response.content)) def test_search_page(self): response = self.exec_auth_c.get( self.tenant.reverse('workery_tenant_task_search', ['pending'])) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIn('Search', str(response.content)) def test_search_confirmation_page(self): response = self.exec_auth_c.get( self.tenant.reverse('workery_tenant_task_search_results', ['pending']) + '?keyword=' + TEST_USER_EMAIL) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIn('Search', str(response.content)) def test_search_confirmation_page_with_wrong_template(self): response = self.exec_auth_c.get( self.tenant.reverse('workery_tenant_task_search_results', ['la-la-la-la-la']) + '?keyword=' + TEST_USER_EMAIL) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
class TenantReceptionResourceTestCases(APITestCase, TenantTestCase): fixtures = [] def setup_tenant(self, tenant): """Tenant Schema""" tenant.schema_name = 'galacticalliance' tenant.name = "Galactic Alliance of Humankind" tenant.is_setup = True tenant.has_perks = True tenant.has_mentors = True tenant.how_discovered = "Command HQ" tenant.how_many_served = 1 @classmethod def setUpTestData(cls): Group.objects.bulk_create([ Group( id=constants.ENTREPRENEUR_GROUP_ID, name="Entreprenuer", ), Group( id=constants.MENTOR_GROUP_ID, name="Mentor", ), Group( id=constants.ADVISOR_GROUP_ID, name="Advisor", ), Group( id=constants.ORGANIZATION_MANAGER_GROUP_ID, name="Org Manager", ), Group( id=constants.ORGANIZATION_ADMIN_GROUP_ID, name="Org Admin", ), Group( id=constants.CLIENT_MANAGER_GROUP_ID, name="Client Manager", ), Group( id=constants.SYSTEM_ADMIN_GROUP_ID, name="System Admin", ), ]) User.objects.bulk_create([ User( email='*****@*****.**', username='******', password='******', is_active=True, ), User( email='*****@*****.**', username='******', password='******', is_active=True, ), User( email='*****@*****.**', username='******', password='******', is_active=True, ), User( email='*****@*****.**', username='******', password='******', is_active=True, ), User( email='*****@*****.**', username='******', password='******', is_active=True, ), User( email='*****@*****.**', username='******', password='******', is_active=True, ), User( email='*****@*****.**', username='******', password='******', is_active=True, ), User( email='*****@*****.**', username='******', password='******', is_active=True, ), User( email='*****@*****.**', username='******', password='******', is_active=True, ), ]) user = User.objects.create_user( # Create our User. email=TEST_USER_EMAIL, username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD) user.is_active = True user.save() @transaction.atomic def setUp(self): translation.activate('en') # Set English super(TenantReceptionResourceTestCases, self).setUp() # Initialize our test data. self.user = User.objects.get(username=TEST_USER_USERNAME) token = Token.objects.get(user=self.user) # Setup. self.unauthorized_client = TenantClient(self.tenant) self.authorized_client = TenantClient(self.tenant, HTTP_AUTHORIZATION='Token ' + token.key) self.authorized_client.login(username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD) # Update Organization. self.tenant.users.add(self.user) self.tenant.save() # Setup User. self.me = Me.objects.create( id=666, owner=self.user, notify_when_task_had_an_interaction=True, ) @transaction.atomic def tearDown(self): PostalAddress.objects.delete_all() ContactPoint.objects.delete_all() InfoResource.objects.delete_all() SortedLogEventByCreated.objects.delete_all() SortedCommentPostByCreated.objects.delete_all() Me.objects.delete_all() users = User.objects.all() for user in users.all(): user.delete() # super(TenantReceptionResourceTestCases, self).tearDown() @transaction.atomic def test_resource_master_page(self): url = reverse('tenant_reception_resource_master') response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertTrue(len(response.content) > 1) self.assertIn(b'Resource', response.content) @transaction.atomic def test_resource_details_page(self): info = InfoResource.objects.create( id=666, owner=self.user, name="Test", description="Testing", url="https://mikasoftware.com", type_of=constants.INFO_RESOURCE_EXTERNAL_URL_TYPE) url = reverse('tenant_reception_resource_details', args=[ info.id, ]) response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertTrue(len(response.content) > 1) self.assertIn(b'Resource', response.content)
class FoundationEmailViewsWithTenatSchemaTestCases(APITestCase, TenantTestCase): fixtures = [] def setup_tenant(self, tenant): """Tenant Schema""" tenant.schema_name = 'galacticalliance' tenant.name = "Galactic Alliance of Humankind" tenant.has_perks = True tenant.has_mentors = True tenant.how_discovered = "Command HQ" tenant.how_many_served = 1 @classmethod def setUpTestData(cls): Group.objects.bulk_create([ Group( id=constants.ENTREPRENEUR_GROUP_ID, name="Entreprenuer", ), Group( id=constants.MENTOR_GROUP_ID, name="Mentor", ), Group( id=constants.ADVISOR_GROUP_ID, name="Advisor", ), Group( id=constants.ORGANIZATION_MANAGER_GROUP_ID, name="Org Manager", ), Group( id=constants.ORGANIZATION_ADMIN_GROUP_ID, name="Org Admin", ), Group( id=constants.CLIENT_MANAGER_GROUP_ID, name="Client Manager", ), Group( id=constants.SYSTEM_ADMIN_GROUP_ID, name="System Admin", ), ]) user = User.objects.create_user( # Create our User. email=TEST_USER_EMAIL, username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD) user.is_active = True user.save() @transaction.atomic def setUp(self): translation.activate('en') # Set English super(FoundationEmailViewsWithTenatSchemaTestCases, self).setUp() # Initialize our test data. self.user = User.objects.get() token = Token.objects.get(user__username=TEST_USER_USERNAME) # Setup. self.unauthorized_client = TenantClient(self.tenant) self.authorized_client = TenantClient(self.tenant, HTTP_AUTHORIZATION='Token ' + token.key) self.authorized_client.login(username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD) # Update Organization. self.tenant.users.add(self.user) self.tenant.save() @transaction.atomic def tearDown(self): SortedLogEventByCreated.objects.delete_all() SortedCommentPostByCreated.objects.delete_all() Task.objects.delete_all() Message.objects.delete_all() Intake.objects.delete_all() Note.objects.delete_all() PostalAddress.objects.delete_all() ContactPoint.objects.delete_all() Me.objects.delete_all() items = User.objects.all() for item in items.all(): item.delete() items = Group.objects.all() for item in items.all(): item.delete() # super(FoundationEmailViewsWithTenatSchemaTestCases, self).tearDown() @transaction.atomic def test_pending_intake_with_anonymous_user(self): url = reverse('foundation_email_pending_intake', args=[ 666, ]) response = self.unauthorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_302_FOUND) self.assertRedirects( response, 'http://galacticalliance.example.com/en/login?next=/en/email/intake/pending/666/' ) @transaction.atomic def test_pending_intake_with_admin_user(self): target_group = Group.objects.get( id=constants.ORGANIZATION_ADMIN_GROUP_ID) self.user.groups.add(target_group) me = Me.objects.create( id=1, owner=self.user, ) intake = Intake.objects.create( id=1, me=me, judgement_note=Note.objects.create( id=1, me=me, name="Space Citizen\'s Newsletter", description="Hail, citizen of the Galactic Alliance ...", )) url = reverse('foundation_email_pending_intake', args=[ intake.id, ]) response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertTrue(len(response.content) > 1) self.assertIn( b'A new Entrepreneur has completed the intake application.', response.content) @transaction.atomic def test_pending_intake_with_non_admin_user(self): target_group = Group.objects.get(id=constants.ENTREPRENEUR_GROUP_ID) self.user.groups.add(target_group) me = Me.objects.create( id=1, owner=self.user, ) intake = Intake.objects.create( id=1, me=me, judgement_note=Note.objects.create( id=1, me=me, name="Space Citizen\'s Newsletter", description="Hail, citizen of the Galactic Alliance ...", )) url = reverse('foundation_email_pending_intake', args=[ intake.id, ]) response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIn(b'403', response.content) @transaction.atomic def test_approved_intake_with_anonymous_user(self): url = reverse('foundation_email_approved_intake', args=[ 666, ]) response = self.unauthorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_302_FOUND) self.assertRedirects( response, 'http://galacticalliance.example.com/en/login?next=/en/email/intake/approved/666/' ) @transaction.atomic def test_approved_intake_with_owner_user(self): target_group = Group.objects.get( id=constants.ORGANIZATION_ADMIN_GROUP_ID) self.user.groups.add(target_group) me = Me.objects.create( id=1, owner=self.user, ) intake = Intake.objects.create( id=1, me=me, judgement_note=Note.objects.create( id=1, me=me, name="Space Citizen\'s Newsletter", description="Hail, citizen of the Galactic Alliance ...", )) url = reverse('foundation_email_approved_intake', args=[ intake.id, ]) response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertTrue(len(response.content) > 1) @transaction.atomic def test_approved_intake_with_404(self): url = reverse('foundation_email_approved_intake', args=[ 666, ]) response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIn(b'404', response.content) @transaction.atomic def test_approved_intake_with_non_owner_user(self): target_group = Group.objects.get(id=constants.ENTREPRENEUR_GROUP_ID) user = User.objects.create_user( # Create our User. email='*****@*****.**', username='******', password='******') user.is_active = True user.save() user.groups.add(target_group) me = Me.objects.create( id=666, owner=user, ) intake = Intake.objects.create( id=666, me=me, judgement_note=Note.objects.create( id=666, me=me, name="Space Citizen\'s Newsletter", description="Hail, citizen of the Galactic Alliance ...", )) url = reverse('foundation_email_approved_intake', args=[ intake.id, ]) response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIn(b'403', response.content) @transaction.atomic def test_rejected_intake_with_anonymous_user(self): url = reverse('foundation_email_rejected_intake', args=[ 666, ]) response = self.unauthorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_302_FOUND) self.assertRedirects( response, 'http://galacticalliance.example.com/en/login?next=/en/email/intake/rejected/666/' ) @transaction.atomic def test_rejected_intake_with_owner_user(self): target_group = Group.objects.get( id=constants.ORGANIZATION_ADMIN_GROUP_ID) self.user.groups.add(target_group) me = Me.objects.create( id=1, owner=self.user, ) intake = Intake.objects.create( id=1, me=me, judgement_note=Note.objects.create( id=1, me=me, name="Space Citizen\'s Newsletter", description="Hail, citizen of the Galactic Alliance ...", )) url = reverse('foundation_email_rejected_intake', args=[ intake.id, ]) response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertTrue(len(response.content) > 1) @transaction.atomic def test_approved_intake_with_404(self): url = reverse('foundation_email_rejected_intake', args=[ 666, ]) response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIn(b'404', response.content) @transaction.atomic def test_approved_intake_with_non_owner_user(self): target_group = Group.objects.get(id=constants.ENTREPRENEUR_GROUP_ID) user = User.objects.create_user( # Create our User. email='*****@*****.**', username='******', password='******') user.is_active = True user.save() user.groups.add(target_group) me = Me.objects.create( id=666, owner=user, ) intake = Intake.objects.create( id=666, me=me, judgement_note=Note.objects.create( id=666, me=me, name="Space Citizen\'s Newsletter", description="Hail, citizen of the Galactic Alliance ...", )) url = reverse('foundation_email_rejected_intake', args=[ intake.id, ]) response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIn(b'403', response.content) @transaction.atomic def test_message_with_anonymous_user(self): url = reverse('foundation_email_message', args=[ 666, ]) response = self.unauthorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_302_FOUND) self.assertRedirects( response, 'http://galacticalliance.example.com/en/login?next=/en/email/message/666/' ) @transaction.atomic def test_message_with_404(self): url = reverse('foundation_email_message', args=[ 666, ]) response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIn(b'404', response.content) @transaction.atomic def test_message_with_participant(self): target_group = Group.objects.get( id=constants.ORGANIZATION_ADMIN_GROUP_ID) self.user.groups.add(target_group) me = Me.objects.create( id=1, owner=self.user, ) message = Message.objects.create( sender=me, recipient=me, name="Space Citizen\'s Newsletter", description="Hail, citizen of the Galactic Alliance ...", ) message.participants.add(me) url = reverse('foundation_email_message', args=[ message.id, ]) response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertTrue(len(response.content) > 1) self.assertIn(b'Hail, citizen of the Galactic Alliance', response.content) @transaction.atomic def test_message_without_participant(self): target_group = Group.objects.get( id=constants.ORGANIZATION_ADMIN_GROUP_ID) self.user.groups.add(target_group) me = Me.objects.create( id=1, owner=self.user, ) message = Message.objects.create( sender=me, recipient=me, name="Space Citizen\'s Newsletter", description="Hail, citizen of the Galactic Alliance ...", ) url = reverse('foundation_email_message', args=[ message.id, ]) response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertTrue(len(response.content) > 1) self.assertIn(b'403', response.content) @transaction.atomic def test_tasks_with_anonymous_user(self): url = reverse('foundation_email_task', args=[ 666, 666, ]) response = self.unauthorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_302_FOUND) self.assertRedirects( response, 'http://galacticalliance.example.com/en/login?next=/en/email/task/666/666/' ) @transaction.atomic def test_task_with_404(self): url = reverse('foundation_email_task', args=[ 666, 666, ]) response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIn(b'404', response.content) @transaction.atomic def test_task_with_participant(self): target_group = Group.objects.get( id=constants.ORGANIZATION_ADMIN_GROUP_ID) self.user.groups.add(target_group) me = Me.objects.create( id=999, owner=self.user, notify_when_task_had_an_interaction=True, ) log_event = SortedLogEventByCreated.objects.create( id=666, me=me, text="Hail, citizen of the Galactic Alliance ...", ) task = Task.objects.create(id=666, owner=self.user, assigned_by=me, assignee=me, status=constants.OPEN_TASK_STATUS) task.participants.add(me) task.log_events.add(log_event) url = reverse('foundation_email_task', args=[task.id, log_event.id]) response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertTrue(len(response.content) > 1) self.assertIn(b'Hail, citizen of the Galactic Alliance', response.content) @transaction.atomic def test_task_without_participant(self): target_group = Group.objects.get( id=constants.ORGANIZATION_ADMIN_GROUP_ID) self.user.groups.add(target_group) me = Me.objects.create( id=999, owner=self.user, notify_when_task_had_an_interaction=True, ) log_event = SortedLogEventByCreated.objects.create( id=666, me=me, text="Hail, citizen of the Galactic Alliance ...", ) task = Task.objects.create(id=666, owner=self.user, assigned_by=me, assignee=me, status=constants.OPEN_TASK_STATUS) task.log_events.add(log_event) url = reverse('foundation_email_task', args=[task.id, log_event.id]) response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertTrue(len(response.content) > 1) self.assertIn(b'403', response.content)
class TenantWorkspaceTestCases(APITestCase, FastTenantTestCase): fixtures = [] @staticmethod def get_test_schema_name(): return 'galacticalliance' def setup_tenant(self, tenant): """Tenant Schema""" tenant.schema_name = 'galacticalliance' tenant.name = "Galactic Alliance of Humankind" tenant.is_setup = True tenant.has_perks = True tenant.has_mentors = True tenant.how_discovered = "Command HQ" tenant.how_many_served = 1 @classmethod def setUpTestData(cls): Group.objects.bulk_create([ Group( id=constants.ENTREPRENEUR_GROUP_ID, name="Entreprenuer", ), Group( id=constants.MENTOR_GROUP_ID, name="Mentor", ), Group( id=constants.ADVISOR_GROUP_ID, name="Advisor", ), Group( id=constants.ORGANIZATION_MANAGER_GROUP_ID, name="Org Manager", ), Group( id=constants.ORGANIZATION_ADMIN_GROUP_ID, name="Org Admin", ), Group( id=constants.CLIENT_MANAGER_GROUP_ID, name="Client Manager", ), Group( id=constants.SYSTEM_ADMIN_GROUP_ID, name="System Admin", ), ]) user = User.objects.create_user( # Create our User. email=TEST_USER_EMAIL, username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD) user.is_active = True user.save() @transaction.atomic def setUp(self): translation.activate('en') # Set English # super(TenantRewardTestCases, self).setUp() # Initialize our test data. self.user = User.objects.get(username=TEST_USER_USERNAME) token = Token.objects.get(user=self.user) # Setup. self.unauthorized_client = TenantClient(self.tenant) self.authorized_client = TenantClient(self.tenant, HTTP_AUTHORIZATION='Token ' + token.key) self.authorized_client.login(username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD) # Update Organization. self.tenant.users.add(self.user) self.tenant.save() # Setup User. self.me = Me.objects.create(owner=self.user, ) self.workspace = Workspace.objects.create(name="Test Workspace") self.workspace.owners.add(self.user) @transaction.atomic def tearDown(self): Workspace.objects.delete_all() Module.objects.delete_all() PostalAddress.objects.delete_all() ContactPoint.objects.delete_all() Me.objects.delete_all() users = User.objects.all() for user in users.all(): user.delete() @transaction.atomic def test_workspace_create_page(self): url = reverse('tenant_workspace_create') response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertTrue(len(response.content) > 1) self.assertIn(b'Workspace', response.content) @transaction.atomic def test_workspace_master_page(self): url = reverse('tenant_workspace_master', args=[ self.workspace.id, ]) response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertTrue(len(response.content) > 1) self.assertIn(b'Workspace', response.content)
class TestTenantOngoingOrderOperationViews(TenantTestCase): """ Console: python manage.py test tenant_ongoing_order_operation.tests """ #------------------# # Setup Unit Tests # #------------------# def setup_tenant(tenant): """Tenant Schema""" tenant.schema_name = TEST_SCHEMA_NAME tenant.name = 'Over 55 (London) Inc.', tenant.alternate_name = "Over55", tenant.description = "Located at the Forks of the Thames in ...", tenant.address_country = "CA", tenant.address_locality = "London", tenant.address_region = "Ontario", tenant.post_office_box_number = "", # Post Offic # tenant.postal_code = "N6H 1B4", tenant.street_address = "78 Riverside Drive", tenant.street_address_extra = "", # Extra line. @classmethod def setUpClass(cls): """ Run at the beginning before all the unit tests run. """ super().setUpClass() def setUp(self): """ Run at the beginning of every unit test. """ super(TestTenantOngoingOrderOperationViews, self).setUp() # Setup our app and account. call_command('init_app', verbosity=0) call_command('populate_tenant_content', TEST_SCHEMA_NAME, verbosity=0) call_command('populate_tenant_sample_db', TEST_SCHEMA_NAME, verbosity=0) # Get user and credentials. user = SharedUser.objects.get(email="*****@*****.**") token, orig_iat = get_jwt_token_and_orig_iat(user) # Setup our clients. self.anon_c = TenantClient(self.tenant) self.auth_c = TenantClient(self.tenant, HTTP_AUTHORIZATION='JWT {0}'.format(token)) self.auth_c.login(username="******", password="******") def tearDown(self): """ Run at the end of every unit test. """ # Delete previous data. SharedUser.objects.all().delete() # Delete our clients. del self.anon_c del self.auth_c # Finish teardown. super(TestTenantOngoingOrderOperationViews, self).tearDown() def test_ongoing_job_assign_operation_page(self): ongoing_work = OngoingWorkOrder.objects.get() a_url = self.tenant.reverse( reverse_id='workery_tenant_ongoing_job_assign_operation', reverse_args=[int(ongoing_work.id)]) a_url += "?return_id=lite-retrieve" response = self.auth_c.get(a_url) self.assertEqual(response.status_code, status.HTTP_200_OK) def test_ongoing_job_assign_confirm_operation_page(self): ongoing_work = OngoingWorkOrder.objects.get() a_url = self.tenant.reverse( reverse_id='workery_tenant_ongoing_job_assign_confirm_operation', reverse_args=[int(ongoing_work.id)]) a_url += "?return_id=lite-retrieve" response = self.auth_c.get(a_url) self.assertEqual(response.status_code, status.HTTP_200_OK) def test_ongoing_job_unassign_operation_page(self): ongoing_work = OngoingWorkOrder.objects.get() a_url = self.tenant.reverse( reverse_id='workery_tenant_ongoing_job_unassign_operation', reverse_args=[int(ongoing_work.id)]) a_url += "?return_id=lite-retrieve" response = self.auth_c.get(a_url) self.assertEqual(response.status_code, status.HTTP_200_OK) def test_ongoing_job_close_operation_page(self): ongoing_work = OngoingWorkOrder.objects.get() a_url = self.tenant.reverse( reverse_id='workery_tenant_ongoing_job_close_operation', reverse_args=[int(ongoing_work.id)]) a_url += "?return_id=lite-retrieve" response = self.auth_c.get(a_url) self.assertEqual(response.status_code, status.HTTP_200_OK) def test_ongoing_job_creation_wizard_operation_page(self): ongoing_work = OngoingWorkOrder.objects.get() a_url = self.tenant.reverse( reverse_id='workery_tenant_ongoing_job_creation_wizard_operation', reverse_args=[int(ongoing_work.id)]) a_url += "?return_id=lite-retrieve" response = self.auth_c.get(a_url) self.assertEqual(response.status_code, status.HTTP_200_OK) def test_ongoing_job_follow_up_operation_page(self): ongoing_work = OngoingWorkOrder.objects.get() a_url = self.tenant.reverse( reverse_id='workery_tenant_ongoing_job_follow_up_operation', reverse_args=[int(ongoing_work.id)]) a_url += "?return_id=lite-retrieve" response = self.auth_c.get(a_url) self.assertEqual(response.status_code, status.HTTP_200_OK) def test_ongoing_job_completion_survey_operation_page(self): ongoing_work = OngoingWorkOrder.objects.get() a_url = self.tenant.reverse( reverse_id='workery_tenant_ongoing_job_completion_survey_operation', reverse_args=[int(ongoing_work.id)]) a_url += "?return_id=lite-retrieve" response = self.auth_c.get(a_url) self.assertEqual(response.status_code, status.HTTP_200_OK) def test_ongoing_job_postpone_operation_page(self): ongoing_work = OngoingWorkOrder.objects.get() a_url = self.tenant.reverse( reverse_id='workery_tenant_ongoing_job_postpone_operation', reverse_args=[int(ongoing_work.id)]) a_url += "?return_id=lite-retrieve" response = self.auth_c.get(a_url) self.assertEqual(response.status_code, status.HTTP_200_OK)
class TagListCreateAPIViewWithTenantTestCase(APITestCase, TenantTestCase): """ Console: python manage.py test tenant_api.tests.test_tag_views """ #------------------# # Setup Unit Tests # #------------------# def setup_tenant(tenant): """Tenant Schema""" tenant.schema_name = TEST_SCHEMA_NAME tenant.name = 'Over 55 (London) Inc.', tenant.alternate_name = "Over55", tenant.description = "Located at the Forks of the Thames in ...", tenant.address_country = "CA", tenant.address_locality = "London", tenant.address_region = "Ontario", tenant.post_office_box_number = "", # Post Offic # tenant.postal_code = "N6H 1B4", tenant.street_address = "78 Riverside Drive", tenant.street_address_extra = "", # Extra line. @transaction.atomic def setUp(self): translation.activate('en') # Set English super(TagListCreateAPIViewWithTenantTestCase, self).setUp() # Load up the dependat. call_command('init_app', verbosity=0) call_command('populate_tenant_content', TEST_SCHEMA_NAME, verbosity=0) call_command('populate_tenant_sample_db', TEST_SCHEMA_NAME, verbosity=0) # Get objects. self.customer = Customer.objects.get(owner__email='*****@*****.**') self.associate = Associate.objects.get( owner__email='*****@*****.**') # Get users. exec_user = SharedUser.objects.get(email='*****@*****.**') manager_user = SharedUser.objects.get(email='*****@*****.**') frontline_user = SharedUser.objects.get(email='*****@*****.**') associate_user = SharedUser.objects.get(email='*****@*****.**') customer_user = SharedUser.objects.get(email='*****@*****.**') # Get tokens. exec_token, exec_orig_iat = get_jwt_token_and_orig_iat(exec_user) manager_token, manager_orig_iat = get_jwt_token_and_orig_iat( manager_user) frontline_token, frontline_orig_iat = get_jwt_token_and_orig_iat( frontline_user) associate_token, associate_orig_iat = get_jwt_token_and_orig_iat( associate_user) customer_token, customer_orig_iat = get_jwt_token_and_orig_iat( customer_user) # Setup. self.unauthorized_client = TenantClient(self.tenant) self.exec_client = TenantClient( self.tenant, HTTP_AUTHORIZATION='JWT {0}'.format(exec_token)) self.exec_client.login(username='******', password=TEST_USER_PASSWORD) self.manager_client = TenantClient( self.tenant, HTTP_AUTHORIZATION='JWT {0}'.format(manager_token)) self.manager_client.login(username='******', password=TEST_USER_PASSWORD) self.staff_client = TenantClient( self.tenant, HTTP_AUTHORIZATION='JWT {0}'.format(manager_token)) self.staff_client.login(username='******', password=TEST_USER_PASSWORD) self.customer_client = TenantClient( self.tenant, HTTP_AUTHORIZATION='JWT {0}'.format(manager_token)) self.customer_client.login(username='******', password=TEST_USER_PASSWORD) self.tag = Tag.objects.create(text="Some generic text") @transaction.atomic def tearDown(self): connection.set_schema(TEST_SCHEMA_NAME, True) # Switch to Tenant. Tag.objects.delete_all() del self.unauthorized_client del self.exec_client del self.manager_client del self.staff_client del self.customer_client super(TagListCreateAPIViewWithTenantTestCase, self).tearDown() #-------------------# # List API-endpoint # #-------------------# @transaction.atomic def test_list_with_401_by_permissions(self): """ Unit test will test anonymous make a GET request to the LIST API-endpoint. """ url = reverse('workery_tag_list_create_api_endpoint') + "?format=json" response = self.unauthorized_client.get( url, data=None, content_type='application/json') self.assertIsNotNone(response) self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) @transaction.atomic def test_list_with_200_by_permissions(self): """ Unit test will test authenticated user, who has permission, to make a GET request to the list API-endpoint. """ url = reverse('workery_tag_list_create_api_endpoint') url += "?format=json" # Executive response = self.exec_client.get(url, data=None, content_type='application/json') self.assertIsNotNone(response) self.assertEqual(response.status_code, status.HTTP_200_OK) # Manager response = self.manager_client.get(url, data=None, content_type='application/json') self.assertIsNotNone(response) self.assertEqual(response.status_code, status.HTTP_200_OK) # Staff response = self.staff_client.get(url, data=None, content_type='application/json') self.assertIsNotNone(response) self.assertEqual(response.status_code, status.HTTP_200_OK) @transaction.atomic def test_list_with_403_by_permissions(self): """ Unit test will test authenticated user, who does not have permission, to make a GET request to the list API-endpoint. """ Permission.objects.all().delete() url = reverse('workery_tag_list_create_api_endpoint') url += "?format=json" response = self.customer_client.get(url, data=None, content_type='application/json') self.assertIsNotNone(response) self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) self.assertIn( "You do not have permission to access this API-endpoint.", str(response.data)) #---------------------# # Create API-endpoint # #---------------------# @transaction.atomic def test_create_with_401_by_permissions(self): """ Unit test will test anonymous make a POST request to the create API-endpoint. """ url = reverse('workery_tag_list_create_api_endpoint') + "?format=json" response = self.unauthorized_client.post( url, data={}, content_type='application/json') self.assertIsNotNone(response) self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) @transaction.atomic def test_create_with_200_by_permissions(self): """ Unit test will test authenticated user, who has permission, to make a POST request to the create API-endpoint. """ url = reverse('workery_tag_list_create_api_endpoint') url += "?format=json" # Executive response = self.exec_client.post(url, data=json.dumps({ 'text': 'generic text', }), content_type='application/json') self.assertIsNotNone(response) # print(response.content) self.assertEqual(response.status_code, status.HTTP_201_CREATED) self.assertIn("generic text", str(response.data)) # Manager response = self.manager_client.post(url, data=json.dumps({ 'text': 'generic text #2', }), content_type='application/json') self.assertIsNotNone(response) # print(response.content) self.assertEqual(response.status_code, status.HTTP_201_CREATED) self.assertIn("#2", str(response.data)) # Staff response = self.staff_client.post(url, data=json.dumps({ 'text': 'generic text #3', }), content_type='application/json') self.assertIsNotNone(response) # print(response) self.assertEqual(response.status_code, status.HTTP_201_CREATED) self.assertIn("#3", str(response.data)) @transaction.atomic def test_create_with_403_by_permissions(self): """ Unit test will test authenticated user, who does not have permission, to make a POST request to the list API-endpoint. """ Permission.objects.all().delete() url = reverse('workery_tag_list_create_api_endpoint') url += "?format=json" response = self.customer_client.post(url, data=json.dumps({}), content_type='application/json') self.assertIsNotNone(response) self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) self.assertIn( "You do not have permission to access this API-endpoint.", str(response.data)) #---------------------# # Update API-endpoint # #---------------------# @transaction.atomic def test_update_with_401_by_permissions(self): """ Unit test will test anonymous make a PUT request to the update API-endpoint. """ url = reverse('workery_tag_retrieve_update_destroy_api_endpoint', args=[self.tag.id]) + "?format=json" response = self.unauthorized_client.post( url, data={}, content_type='application/json') self.assertIsNotNone(response) self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) @transaction.atomic def test_update_with_200_by_permissions(self): """ Unit test will test authenticated user, who has permission, to make a PUT request to the update API-endpoint. """ url = reverse('workery_tag_retrieve_update_destroy_api_endpoint', args=[self.tag.id]) + "?format=json" data = json.dumps({ 'text': 'generic text #1', }) # Executive response = self.exec_client.put(url, data=data, content_type='application/json') self.assertIsNotNone(response) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIn("generic text #1", str(response.data)) # Manager response = self.manager_client.put(url, data=data, content_type='application/json') self.assertIsNotNone(response) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIn("generic text #1", str(response.data)) # Staff response = self.staff_client.put(url, data=data, content_type='application/json') self.assertIsNotNone(response) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIn("generic text #1", str(response.data)) @transaction.atomic def test_update_with_403_by_permissions(self): """ Unit test will test authenticated user, who does not have permission, to make a PUT request to the update API-endpoint. """ Permission.objects.all().delete() url = reverse('workery_tag_retrieve_update_destroy_api_endpoint', args=[self.tag.id]) + "?format=json" data = json.dumps({ 'text': 'generic text', }) response = self.customer_client.put(url, data=data, content_type='application/json') self.assertIsNotNone(response) self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) self.assertIn( "You do not have permission to access this API-endpoint.", str(response.data)) #-----------------------# # Retrieve API-endpoint # #-----------------------# @transaction.atomic def test_retrieve_with_401_by_permissions(self): """ Unit test will test anonymous make a GET request to the retrieve API-endpoint. """ url = reverse('workery_tag_retrieve_update_destroy_api_endpoint', args=[self.tag.id]) + "?format=json" response = self.unauthorized_client.get( url, data={}, content_type='application/json') self.assertIsNotNone(response) self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) @transaction.atomic def test_retrieve_with_200_by_permissions(self): """ Unit test will test authenticated user, who has permission, to make a GET request to the retrieve API-endpoint. """ url = reverse('workery_tag_retrieve_update_destroy_api_endpoint', args=[self.tag.id]) + "?format=json" response = self.exec_client.get(url, data=None, content_type='application/json') self.assertIsNotNone(response) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIn("generic text", str(response.data)) response = self.manager_client.get(url, data=None, content_type='application/json') self.assertIsNotNone(response) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIn("generic text", str(response.data)) response = self.staff_client.get(url, data=None, content_type='application/json') self.assertIsNotNone(response) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIn("generic text", str(response.data)) @transaction.atomic def test_retrieve_with_403_by_permissions(self): """ Unit test will test authenticated user, who does not have permission, to make a GET request to the retrieve API-endpoint. """ Permission.objects.all().delete() url = reverse('workery_tag_retrieve_update_destroy_api_endpoint', args=[self.tag.id]) + "?format=json" response = self.exec_client.get(url, data=None, content_type='application/json') self.assertIsNotNone(response) self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) self.assertIn( "You do not have permission to access this API-endpoint.", str(response.data)) #-----------------------# # Delete API-endpoint # #-----------------------# @transaction.atomic def test_delete_with_401_by_permissions(self): """ Unit test will test anonymous make a DELETE request to the delete API-endpoint. """ url = reverse('workery_tag_retrieve_update_destroy_api_endpoint', args=[self.tag.id]) + "?format=json" response = self.unauthorized_client.delete( url, data={}, content_type='application/json') self.assertIsNotNone(response) self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) @transaction.atomic def test_delete_with_200_by_permissions(self): """ Unit test will test authenticated user, who has permission, to make a DELETE request to the delete API-endpoint. """ url = reverse('workery_tag_retrieve_update_destroy_api_endpoint', args=[self.tag.id]) + "?format=json" response = self.exec_client.delete(url, data=None, content_type='application/json') self.assertIsNotNone(response) self.assertEqual(response.status_code, status.HTTP_200_OK) @transaction.atomic def test_delete_with_403_by_permissions(self): """ Unit test will test authenticated user, who does not have permission, to make a DELETE request to the delete API-endpoint. """ Permission.objects.all().delete() url = reverse('workery_tag_retrieve_update_destroy_api_endpoint', args=[self.tag.id]) + "?format=json" response = self.exec_client.delete(url, data=None, content_type='application/json') self.assertIsNotNone(response) self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) self.assertIn( "You do not have permission to access this API-endpoint.", str(response.data))
class TestSharedAuthWebViews(TenantTestCase): """ Class used to test the web views. Console: python manage.py test shared_auth.tests.test_web_views """ @classmethod def setUpClass(cls): """ Run at the beginning before all the unit tests run. """ super().setUpClass() def setUp(self): """ Run at the beginning of every unit test. """ super(TestSharedAuthWebViews, self).setUp() # Setup our app and account. call_command('init_app', verbosity=0) call_command('create_shared_account', TEST_USER_EMAIL, TEST_USER_PASSWORD, "Bart", "Mika", verbosity=0) # Get user and credentials. user = SharedUser.objects.get() token = Token.objects.get(user_id=user.id) # Setup our clients. self.anon_c = TenantClient(self.tenant) self.auth_c = TenantClient(self.tenant, HTTP_AUTHORIZATION='Token ' + token.key) self.auth_c.login(username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD) # Attach our user(s) to our test tenant organization. user.franchise = self.tenant user.save() def tearDown(self): """ Run at the end of every unit test. """ # Delete our clients. del self.anon_c del self.auth_c # Delete previous data. SharedUser.objects.all().delete() # Finish teardown. super(TestSharedAuthWebViews, self).tearDown() def test_get_index_page(self): response = self.anon_c.get(reverse('at_login_master')) self.assertEqual(response.status_code, status.HTTP_200_OK) def test_user_login_redirector_page_with_anonymous_user(self): response = self.anon_c.get(reverse('at_login_redirector')) self.assertEqual(response.status_code, status.HTTP_302_FOUND) def test_user_login_redirector_page_with_authenticated_user(self): response = self.auth_c.get(reverse('at_login_redirector'), ) self.assertEqual(response.status_code, status.HTTP_302_FOUND) def test_send_reset_password_email_master_page(self): response = self.anon_c.get( reverse('at_send_reset_password_email_master')) self.assertEqual(response.status_code, status.HTTP_200_OK) def test_send_reset_password_email_submitted_page(self): response = self.anon_c.get( reverse('at_send_reset_password_email_submitted')) self.assertEqual(response.status_code, status.HTTP_200_OK) def test_rest_password_master_page_with_success(self): me = SharedUser.objects.get(email=TEST_USER_EMAIL) url = reverse('at_reset_password_master', args=[me.pr_access_code]) response = self.anon_c.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) def test_rest_password_master_page_with_bad_pr_access_code(self): me = SharedUser.objects.get(email=TEST_USER_EMAIL) url = reverse('at_reset_password_master', args=['some-bad-pr-access-code']) response = self.anon_c.get(url) self.assertEqual(response.status_code, status.HTTP_302_FOUND) def test_rest_password_master_page_with_expired_pr_access_code(self): # Get the user profile. me = SharedUser.objects.get(email=TEST_USER_EMAIL) # Set the expiry date to be old! today = timezone.now() today_minus_1_year = today - timedelta(minutes=1) me.pr_expiry_date = today_minus_1_year me.save() # Run our test... url = reverse('at_reset_password_master', args=[me.pr_access_code]) response = self.anon_c.get(url) # Verify the results. self.assertEqual(response.status_code, status.HTTP_302_FOUND) def test_user_activation_detail_page_with_success(self): me = SharedUser.objects.get(email=TEST_USER_EMAIL) url = reverse('at_user_activation_detail', args=[me.pr_access_code]) response = self.anon_c.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) def test_rest_user_activation_detail_page_with_bad_pr_access_code(self): me = SharedUser.objects.get(email=TEST_USER_EMAIL) url = reverse('at_user_activation_detail', args=['some-bad-pr-access-code']) response = self.anon_c.get(url) self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) def test_rest_user_activation_detail_page_with_expired_pr_access_code( self): # Get the user profile. me = SharedUser.objects.get(email=TEST_USER_EMAIL) # Set the expiry date to be old! today = timezone.now() today_minus_1_year = today - timedelta(minutes=1) me.pr_expiry_date = today_minus_1_year me.save() # Run our test... url = reverse('at_user_activation_detail', args=[me.pr_access_code]) response = self.anon_c.get(url) # Verify the results. self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) def test_user_logout_redirector_master_page_with_redirect(self): me = SharedUser.objects.get(email=TEST_USER_EMAIL) url = reverse('at_logout_redirector') response = self.anon_c.get(url) self.assertEqual(response.status_code, 302) def test_user_logout_redirector_master_page_with_success(self): me = SharedUser.objects.get(email=TEST_USER_EMAIL) url = reverse('at_logout_redirector') response = self.auth_c.get(url) self.assertEqual(response.status_code, 302)
class TestTenantReportViews(TenantTestCase): """ Console: python manage.py test tenant_report.tests.test_views.TestTenantReportViews """ #------------------# # Setup Unit Tests # #------------------# def setup_tenant(tenant): """Tenant Schema""" tenant.schema_name = TEST_SCHEMA_NAME tenant.name = 'Over 55 (London) Inc.', tenant.alternate_name = "Over55", tenant.description = "Located at the Forks of the Thames in ...", tenant.address_country = "CA", tenant.address_locality = "London", tenant.address_region = "Ontario", tenant.post_office_box_number = "", # Post Offic # tenant.postal_code = "N6H 1B4", tenant.street_address = "78 Riverside Drive", tenant.street_address_extra = "", # Extra line. @classmethod def setUpClass(cls): """ Run at the beginning before all the unit tests run. """ super().setUpClass() def setUp(self): """ Run at the beginning of every unit test. """ super(TestTenantReportViews, self).setUp() # Setup our app and account. call_command('init_app', verbosity=0) call_command('populate_tenant_content', TEST_SCHEMA_NAME, verbosity=0) call_command('populate_tenant_sample_db', TEST_SCHEMA_NAME, verbosity=0) # Create the account. call_command( 'create_tenant_account', TEST_SCHEMA_NAME, MANAGEMENT_GROUP_ID, TEST_USER_EMAIL, TEST_USER_PASSWORD, "Bart", "Mika", TEST_USER_TEL_NUM, TEST_USER_TEL_EX_NUM, TEST_USER_CELL_NUM, "CA", "London", "Ontario", "", # Post Offic # "N6H 1B4", "78 Riverside Drive", "", # Extra line. verbosity=0) # Get user and credentials. user = SharedUser.objects.filter(email=TEST_USER_EMAIL).first() token, orig_iat = get_jwt_token_and_orig_iat(user) # Setup our clients. self.anon_c = TenantClient(self.tenant) self.auth_c = TenantClient(self.tenant, HTTP_AUTHORIZATION='JWT {0}'.format(token)) self.auth_c.login(username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD) TaskItem.objects.update_or_create( id=1, defaults={ 'id': 1, 'type_of': FOLLOW_UP_CUSTOMER_SURVEY_TASK_ITEM_TYPE_OF_ID, 'title': _('Completion Survey'), 'description': _('Please call up the client and perform the satisfaction survey.' ), 'due_date': timezone.now(), 'is_closed': False, 'job': None, 'ongoing_job': None, # 'created_by': None, # created_from # created_from_is_public # last_modified_by }) def tearDown(self): """ Run at the end of every unit test. """ # Delete previous data. SharedUser.objects.delete_all() TaskItem.objects.delete_all() # Delete our clients. del self.anon_c del self.auth_c # Finish teardown. super(TestTenantReportViews, self).tearDown() def test_report_listing_page(self): response = self.auth_c.get( self.tenant.reverse('workery_tenant_reports_list_master')) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIn('Reports', str(response.content)) def test_report_1_details_page(self): response = self.auth_c.get( self.tenant.reverse('workery_tenant_report_01_detail_master')) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIn('Reports', str(response.content)) self.assertIn('Service Fee', str(response.content)) def test_report_2_details_page(self): response = self.auth_c.get( self.tenant.reverse('workery_tenant_report_02_detail_master')) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIn('Reports', str(response.content)) self.assertIn('Associate Jobs Report', str(response.content)) def test_report_3_details_page(self): response = self.auth_c.get( self.tenant.reverse('workery_tenant_report_03_detail_master')) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIn('Reports', str(response.content)) self.assertIn('Service Fees by Skill Set Report', str(response.content)) def test_report_4_details_page(self): response = self.auth_c.get( self.tenant.reverse('workery_tenant_report_04_detail_master')) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIn('Reports', str(response.content)) self.assertIn('Cancelled Jobs Report', str(response.content)) def test_report_5_details_page(self): response = self.auth_c.get( self.tenant.reverse('workery_tenant_report_05_detail_master')) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIn('Reports', str(response.content)) self.assertIn('Associate Insurance Report', str(response.content)) def test_report_6_details_page(self): response = self.auth_c.get( self.tenant.reverse('workery_tenant_report_06_detail_master')) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIn('Reports', str(response.content)) self.assertIn('Associate Police Check Due Date Report', str(response.content)) def test_report_7_details_page(self): response = self.auth_c.get( self.tenant.reverse('workery_tenant_report_07_detail_master')) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIn('Reports', str(response.content)) self.assertIn('Associate Birthdays Report', str(response.content)) def test_report_8_details_page(self): response = self.auth_c.get( self.tenant.reverse('workery_tenant_report_08_detail_master')) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIn('Reports', str(response.content)) self.assertIn('Associate Skill Sets Report', str(response.content)) def test_report_9_details_page(self): response = self.auth_c.get( self.tenant.reverse('workery_tenant_report_09_detail_master')) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIn('Reports', str(response.content)) self.assertIn('Client Addresses Report', str(response.content)) def test_report_10_details_page(self): response = self.auth_c.get( self.tenant.reverse('workery_tenant_report_10_detail_master')) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIn('Reports', str(response.content)) self.assertIn('Jobs Report', str(response.content)) def test_report_11_details_page(self): response = self.auth_c.get( self.tenant.reverse('workery_tenant_report_11_detail_master')) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIn('Reports', str(response.content)) self.assertIn('Commercial Jobs Report', str(response.content))
class APIMessageWithTenantSchemaTestCase(APITestCase, TenantTestCase): fixtures = [] def setup_tenant(self, tenant): """Tenant Schema""" tenant.schema_name = 'galacticalliance' tenant.name = "Galactic Alliance of Humankind" tenant.has_perks = True tenant.has_mentors = True tenant.how_discovered = "Command HQ" tenant.how_many_served = 1 @classmethod def setUpTestData(cls): Group.objects.bulk_create([ Group( id=constants.ENTREPRENEUR_GROUP_ID, name="Entreprenuer", ), Group( id=constants.MENTOR_GROUP_ID, name="Mentor", ), Group( id=constants.ADVISOR_GROUP_ID, name="Advisor", ), Group( id=constants.ORGANIZATION_MANAGER_GROUP_ID, name="Org Manager", ), Group( id=constants.ORGANIZATION_ADMIN_GROUP_ID, name="Org Admin", ), Group( id=constants.CLIENT_MANAGER_GROUP_ID, name="Client Manager", ), Group( id=constants.SYSTEM_ADMIN_GROUP_ID, name="System Admin", ), ]) user = User.objects.create_user( # Create our user. email=TEST_USER_EMAIL, username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD) user.is_superuser = True user.is_active = True user.save() @transaction.atomic def setUp(self): translation.activate('en') # Set English. super(APIMessageWithTenantSchemaTestCase, self).setUp() # Initialize our test data. self.user = User.objects.get() token = Token.objects.get(user__username=TEST_USER_USERNAME) # Setup. self.unauthorized_client = TenantClient(self.tenant) self.authorized_client = TenantClient(self.tenant, HTTP_AUTHORIZATION='Token ' + token.key) self.authorized_client.login(username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD) self.tenant.owner = self.user self.tenant.save() # Above taken from: # http://www.django-rest-framework.org/api-guide/testing/#authenticating @transaction.atomic def tearDown(self): Message.objects.delete_all() PostalAddress.objects.delete_all() ContactPoint.objects.delete_all() Me.objects.delete_all() users = User.objects.all() for user in users.all(): user.delete() # super(APIMessageWithTenantSchemaTestCase, self).tearDown() @transaction.atomic def test_list_with_anonymous_user(self): response = self.unauthorized_client.get( '/api/tenantmessage/?format=json') self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) @transaction.atomic def test_list_with_authenticated_user(self): org_admin_group = Group.objects.get( id=constants.ORGANIZATION_ADMIN_GROUP_ID) self.user.groups.add(org_admin_group) response = self.authorized_client.get( '/api/tenantmessage/?format=json') self.assertEqual(response.status_code, status.HTTP_200_OK) @transaction.atomic def test_post_with_anonymous_user(self): data = { 'name': 'Unit Test', 'owner': self.user.id, } response = self.unauthorized_client.post( '/api/tenantmessage/?format=json', json.dumps(data), content_type='application/json') self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) self.assertEqual(len(mail.outbox), 0) @transaction.atomic def test_post_from_sender_to_recipient(self): # Create our recipient recipient_user = User.objects.create_user( # Create our user. email='*****@*****.**', username='******', password='******') recipient_user.is_active = True recipient_user.save() recipient = Me.objects.create(owner=recipient_user) # Run the test and verify. data = { 'name': 'Unit Test', 'recipient': recipient.id, 'description': 'Glory to Galactic Alliance', } response = self.authorized_client.post( '/api/tenantmessage/?format=json', json.dumps(data), content_type='application/json') self.assertEqual(response.status_code, status.HTTP_201_CREATED) self.assertEqual(len(mail.outbox), 1) @transaction.atomic def test_put_with_anonymous_user(self): # Create a new object with our specific test data. Message.objects.create( id=666, name="Unit Test", owner=self.user, ) # Run the test. data = { 'id': 666, 'name': 'Unit Test', 'owner': self.user.id, } response = self.unauthorized_client.put( '/api/tenantmessage/666/?format=json', json.dumps(data), content_type='application/json') self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) self.assertEqual(len(mail.outbox), 0) @transaction.atomic def test_put_with_original_sender(self): # Create our sender. sender = Me.objects.create(owner=self.user, ) # Create our recipient recipient_user = User.objects.create_user( # Create our user. email='*****@*****.**', username='******', password='******') recipient_user.is_active = True recipient_user.save() recipient = Me.objects.create(owner=recipient_user) # Create a new object with our specific test data. Message.objects.create( id=666, name="Unit Test #666", recipient=recipient, sender=sender, ) # Run the test. data = { 'id': 666, 'name': 'Unit Test', 'recipient': recipient.id, } response = self.authorized_client.put('/api/tenantmessage/666/', json.dumps(data), content_type='application/json') self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(len(mail.outbox), 0) # Editing does not qualify for email notification. @transaction.atomic def test_put_with_different_sender(self): # Create our CURRENT sender. Me.objects.create(owner=self.user, ) # Create our NEW sender. sender_user = User.objects.create_user( # Create our user. email='*****@*****.**', username='******', password='******') sender_user.is_active = True sender_user.save() sender = Me.objects.create(owner=sender_user) # Create our NEW recipient recipient_user = User.objects.create_user( # Create our user. email='*****@*****.**', username='******', password='******') recipient_user.is_active = True recipient_user.save() recipient = Me.objects.create(owner=recipient_user) # Create a new object with our specific test data. Message.objects.create( id=666, name="Unit Test #666", recipient=recipient, sender=sender, ) # Run the test. data = { 'id': 666, 'name': 'Unit Test', 'recipient': recipient.id, } response = self.authorized_client.put('/api/tenantmessage/666/', json.dumps(data), content_type='application/json') self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) self.assertEqual(len(mail.outbox), 0) @transaction.atomic def test_delete_with_anonymous_user(self): # Create our CURRENT sender. sender = Me.objects.create(owner=self.user, ) # Create a new object with our specific test data. message = Message.objects.create( id=666, name="Unit Test #666", sender=sender, ) message.participants.add(sender) message.save() # Run our test and verify. response = self.unauthorized_client.delete( '/api/tenantmessage/666/?format=json') self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) self.assertEqual(Message.objects.all().count(), 1) message = Message.objects.get(id=666) self.assertEqual(message.participants.count(), 1) @transaction.atomic def test_delete_with_sender(self): # Create our SENDER user. sender = Me.objects.create(owner=self.user, ) # Create our RECIPIENT user. recipient_user = User.objects.create_user( # Create our user. email='*****@*****.**', username='******', password='******') recipient_user.is_active = True recipient_user.save() recipient = Me.objects.create(owner=recipient_user) # Create a new object with our specific test data. message = Message.objects.create( id=666, name="Unit Test #666", sender=sender, recipient=recipient, ) message.participants.add(sender) message.save() # Run our test and verify. response = self.authorized_client.delete( '/api/tenantmessage/666/?format=json') self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT) self.assertEqual(Message.objects.all().count(), 1) # Check message has not been deleted message = Message.objects.get(id=666) self.assertEqual(message.participants.count(), 0) @transaction.atomic def test_delete_with_recipient(self): # Create our CURRENT sender. recipient = Me.objects.create(owner=self.user, ) # Create our NEW recipient sender_user = User.objects.create_user( # Create our user. email='*****@*****.**', username='******', password='******') sender_user.is_active = True sender_user.save() sender = Me.objects.create(owner=sender_user) # Create a new object with our specific test data. message = Message.objects.create( id=666, name="Unit Test #666", sender=sender, recipient=recipient, ) message.participants.add(recipient, sender) message.save() # Run our test and verify. response = self.authorized_client.delete( '/api/tenantmessage/666/?format=json') self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT) self.assertEqual(Message.objects.all().count(), 1) # Check message has not been deleted message = Message.objects.get(id=666) self.assertEqual(message.participants.count(), 1) @transaction.atomic def test_delete_with_different_sender(self): # Create our CURRENT sender. Me.objects.create(owner=self.user, ) # Create our NEW sender. sender_user = User.objects.create_user( # Create our user. email='*****@*****.**', username='******', password='******') sender_user.is_active = True sender_user.save() sender = Me.objects.create(owner=sender_user) # Create our NEW recipient recipient_user = User.objects.create_user( # Create our user. email='*****@*****.**', username='******', password='******') recipient_user.is_active = True recipient_user.save() recipient = Me.objects.create(owner=recipient_user) # Create a new object with our specific test data. message = Message.objects.create( id=666, name="Unit Test #666", recipient=recipient, sender=sender, ) message.participants.add(recipient, sender) message.save() # Run our test and verify. response = self.authorized_client.delete( '/api/tenantmessage/666/?format=json') self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) self.assertEqual(Message.objects.all().count(), 1) message = Message.objects.get(id=666) self.assertEqual(message.participants.count(), 2)
class TenantTeamTestCases(APITestCase, TenantTestCase): fixtures = [] def setup_tenant(self, tenant): """Tenant Schema""" tenant.schema_name = 'galacticallianceofhumankind' tenant.name = "Galactic Alliance of Humankind" tenant.is_setup = True tenant.has_perks = True tenant.has_mentors = True tenant.how_discovered = "Command HQ" tenant.how_many_served = 1 @classmethod def setUpTestData(cls): Group.objects.bulk_create([ Group( id=constants.ENTREPRENEUR_GROUP_ID, name="Entreprenuer", ), Group( id=constants.MENTOR_GROUP_ID, name="Mentor", ), Group( id=constants.ADVISOR_GROUP_ID, name="Advisor", ), Group( id=constants.ORGANIZATION_MANAGER_GROUP_ID, name="Org Manager", ), Group( id=constants.ORGANIZATION_ADMIN_GROUP_ID, name="Org Admin", ), Group( id=constants.CLIENT_MANAGER_GROUP_ID, name="Client Manager", ), Group( id=constants.SYSTEM_ADMIN_GROUP_ID, name="System Admin", ), ]) User.objects.bulk_create([ User( email='*****@*****.**', username='******', password='******', is_active=True, ), User( email='*****@*****.**', username='******', password='******', is_active=True, ), User( email='*****@*****.**', username='******', password='******', is_active=True, ), User( email='*****@*****.**', username='******', password='******', is_active=True, ), User( email='*****@*****.**', username='******', password='******', is_active=True, ), User( email='*****@*****.**', username='******', password='******', is_active=True, ), User( email='*****@*****.**', username='******', password='******', is_active=True, ), User( email='*****@*****.**', username='******', password='******', is_active=True, ), User( email='*****@*****.**', username='******', password='******', is_active=True, ), ]) user = User.objects.create_user( # Create our User. email=TEST_USER_EMAIL, username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD) user.is_active = True user.save() @transaction.atomic def setUp(self): translation.activate('en') # Set English super(TenantTeamTestCases, self).setUp() # Initialize our test data. self.user = User.objects.get(username=TEST_USER_USERNAME) token = Token.objects.get(user=self.user) # Setup. self.unauthorized_client = TenantClient(self.tenant) self.authorized_client = TenantClient(self.tenant, HTTP_AUTHORIZATION='Token ' + token.key) self.authorized_client.login(username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD) # Update Organization. self.tenant.users.add(self.user) self.tenant.save() # Setup User. country = CountryOption.objects.create(id=666, name="Avalon") region = ProvinceOption.objects.create(id=666, name="Colony Pod #1", country=country) address = PostalAddress.objects.create(id=666, country=country, region=region, locality="District 9") self.me = Me.objects.create( id=666, owner=self.user, address=address, ) manager_group = Group.objects.get( id=constants.ORGANIZATION_MANAGER_GROUP_ID) self.me.owner.groups.add(manager_group) @transaction.atomic def tearDown(self): CountryOption.objects.delete_all() ProvinceOption.objects.delete_all() PostalAddress.objects.delete_all() ContactPoint.objects.delete_all() Me.objects.delete_all() users = User.objects.all() for user in users.all(): user.delete() # super(TenantTeamTestCases, self).tearDown() @transaction.atomic def test_master_page(self): url = reverse('tenant_team_master') response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertTrue(len(response.content) > 1) self.assertIn(b'Team', response.content) @transaction.atomic def test_create_page(self): url = reverse('tenant_team_create') response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_302_FOUND) @transaction.atomic def test_update_page(self): url = reverse('tenant_team_update', args=[ self.me.id, ]) response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertTrue(len(response.content) > 1) self.assertIn(b'Team', response.content)
class MessageTestCases(APITestCase, TenantTestCase): fixtures = [] def setup_tenant(self, tenant): """Tenant Schema""" tenant.schema_name = 'galacticalliance' tenant.name = "Galactic Alliance of Humankind" tenant.is_setup = True tenant.has_perks = True tenant.has_mentors = True tenant.how_discovered = "Command HQ" tenant.how_many_served = 1 @classmethod def setUpTestData(cls): Group.objects.bulk_create([ Group( id=constants.ENTREPRENEUR_GROUP_ID, name="Entreprenuer", ), Group( id=constants.MENTOR_GROUP_ID, name="Mentor", ), Group( id=constants.ADVISOR_GROUP_ID, name="Advisor", ), Group( id=constants.ORGANIZATION_MANAGER_GROUP_ID, name="Org Manager", ), Group( id=constants.ORGANIZATION_ADMIN_GROUP_ID, name="Org Admin", ), Group( id=constants.CLIENT_MANAGER_GROUP_ID, name="Client Manager", ), Group( id=constants.SYSTEM_ADMIN_GROUP_ID, name="System Admin", ), ]) User.objects.bulk_create([ User( email='*****@*****.**', username='******', password='******', is_active=True, ), User( email='*****@*****.**', username='******', password='******', is_active=True, ), User( email='*****@*****.**', username='******', password='******', is_active=True, ), User( email='*****@*****.**', username='******', password='******', is_active=True, ), User( email='*****@*****.**', username='******', password='******', is_active=True, ), User( email='*****@*****.**', username='******', password='******', is_active=True, ), User( email='*****@*****.**', username='******', password='******', is_active=True, ), User( email='*****@*****.**', username='******', password='******', is_active=True, ), User( email='*****@*****.**', username='******', password='******', is_active=True, ), ]) user = User.objects.create_user( # Create our User. email=TEST_USER_EMAIL, username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD, first_name=TEST_USER_FIRST_NAME, last_name=TEST_USER_LAST_NAME, ) user.is_active = True user.save() @transaction.atomic def setUp(self): translation.activate('en') # Set English super(MessageTestCases, self).setUp() # Initialize our test data. self.user = User.objects.get(username=TEST_USER_USERNAME) token = Token.objects.get(user=self.user) # Setup. self.unauthorized_client = TenantClient(self.tenant) self.authorized_client = TenantClient(self.tenant, HTTP_AUTHORIZATION='Token ' + token.key) self.authorized_client.login(username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD) # Update Organization. self.tenant.users.add(self.user) self.tenant.save() @transaction.atomic def tearDown(self): Message.objects.delete_all() PostalAddress.objects.delete_all() ContactPoint.objects.delete_all() Me.objects.delete_all() items = Group.objects.all() for item in items.all(): item.delete() items = User.objects.all() for item in items.all(): item.delete() # super(MessageTestCases, self).tearDown() @transaction.atomic def test_inbox_page(self): url = reverse('tenant_message_inbox') response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertTrue(len(response.content) > 1) self.assertIn(b'id_table', response.content) @transaction.atomic def test_composer_page(self): url = reverse('tenant_message_composer') response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertTrue(len(response.content) > 1) self.assertIn(b'ajax_create_message', response.content) @transaction.atomic def test_specific_composer_page(self): recipient, created = Me.objects.get_or_create(owner=self.user, ) url = reverse('tenant_message_specific_composer', args=[ recipient.id, ]) response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertTrue(len(response.content) > 1) self.assertIn(b'ajax_create_message', response.content) @transaction.atomic def test_conversation_page(self): # Create our sender. recipient, created = Me.objects.get_or_create(owner=self.user, ) # Create our recipient sender_user = User.objects.create_user(email='*****@*****.**', username='******', password='******') sender_user.is_active = True sender_user.save() sender = Me.objects.create(id=666, owner=sender_user) # Create a new object with our specific test data. message = Message.objects.create( name="Unit Test", description="This is a unit test message.", recipient=recipient, sender=sender, ) message.participants.add(sender, recipient) message.save() # Run the test and verify. url = reverse('tenant_conversation', args=[ 666, ]) response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertTrue(len(response.content) > 1) self.assertIn(b'This is a unit test message.', response.content) @transaction.atomic def test_archive_conversation_page(self): # Create our sender. recipient = Me.objects.create( id=999, owner=self.user, ) # Create our recipient sender_user = User.objects.create_user(email='*****@*****.**', username='******', password='******') sender_user.is_active = True sender_user.save() sender = Me.objects.create(id=666, owner=sender_user) # Create a new object with our specific test data. message = Message.objects.create( name="Unit Test #666", description="This is a test message.", recipient=recipient, sender=sender, ) # Run the test and verify. url = reverse('tenant_archive_conversation', args=[ 666, ]) response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_302_FOUND) # Redirect happens. @transaction.atomic def test_archive_list_page(self): url = reverse('tenant_archive_inbox') response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertTrue(len(response.content) > 1) self.assertIn(b'Archive', response.content) @transaction.atomic def test_archive_details_page(self): # Create our sender. recipient = Me.objects.create( id=999, owner=self.user, ) # Create our recipient sender_user = User.objects.create_user(email='*****@*****.**', username='******', password='******') sender_user.is_active = True sender_user.save() sender = Me.objects.create(id=666, owner=sender_user) # Create a new object with our specific test data. message = Message.objects.create( name="Test Message", description="This is a test message.", recipient=recipient, sender=sender, ) # Run the test and verify. url = reverse('tenant_archive_details', args=[ 666, ]) response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertTrue(len(response.content) > 1) self.assertIn(b'This is a test message.', response.content)
class TestSharedFranchiseViews(TenantTestCase): """ Class used to test the web views. Console: python manage.py test shared_franchise.tests """ @classmethod def setUpClass(cls): """ Run at the beginning before all the unit tests run. """ super().setUpClass() def setUp(self): """ Run at the beginning of every unit test. """ super(TestSharedFranchiseViews, self).setUp() # Setup our app and account. call_command('init_app', verbosity=0) call_command('create_shared_account', TEST_USER_EMAIL, TEST_USER_PASSWORD, "Bart", "Mika", verbosity=0) # Get user and credentials. user = SharedUser.objects.get() token, orig_iat = get_jwt_token_and_orig_iat(user) # Setup our clients. self.anon_c = TenantClient(self.tenant) self.auth_c = TenantClient(self.tenant, HTTP_AUTHORIZATION='JWT {0}'.format(token)) self.auth_c.login(username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD) # Attach our user(s) to our test tenant organization. user.franchise = self.tenant user.save() def tearDown(self): """ Run at the end of every unit test. """ # Delete our clients. del self.anon_c del self.auth_c # Delete previous data. SharedUser.objects.all().delete() # Finish teardown. super(TestSharedFranchiseViews, self).tearDown() def test_shared_franchise_list_page(self): response = self.auth_c.get(reverse('workery_shared_franchise_list')) self.assertEqual(response.status_code, status.HTTP_200_OK) def test_hared_franchise_create_1_of_3_page(self): response = self.auth_c.get( reverse('workery_shared_franchise_create_1_of_3'), ) self.assertEqual(response.status_code, status.HTTP_200_OK) def test_shared_franchise_create_2_of_3_page(self): response = self.auth_c.get( reverse('workery_shared_franchise_create_2_of_3'), ) self.assertEqual(response.status_code, status.HTTP_200_OK) def test_shared_franchise_create_3_of_3_page(self): response = self.auth_c.get( reverse('workery_shared_franchise_create_3_of_3'), ) self.assertEqual(response.status_code, status.HTTP_200_OK)
class FoundationPublicDecoratorWithPublicSchemaTestCase( APITestCase, TenantTestCase): fixtures = [] def setup_tenant(self, tenant): """Public Schema""" tenant.schema_name = 'test' tenant.name = "Galactic Alliance of Humankind" tenant.has_perks = True tenant.has_mentors = True tenant.how_discovered = "Command HQ" tenant.how_many_served = 1 @transaction.atomic def setUp(self): translation.activate('en') # Set English super(FoundationPublicDecoratorWithPublicSchemaTestCase, self).setUp() # Initialize our test data. Group.objects.bulk_create([ Group( id=constants.ENTREPRENEUR_GROUP_ID, name="Entreprenuer", ), Group( id=constants.MENTOR_GROUP_ID, name="Mentor", ), Group( id=constants.ADVISOR_GROUP_ID, name="Advisor", ), Group( id=constants.ORGANIZATION_MANAGER_GROUP_ID, name="Org Manager", ), Group( id=constants.ORGANIZATION_ADMIN_GROUP_ID, name="Org Admin", ), Group( id=constants.CLIENT_MANAGER_GROUP_ID, name="Client Manager", ), Group( id=constants.SYSTEM_ADMIN_GROUP_ID, name="System Admin", ), ]) self.user = User.objects.create_user( # Create our User. email=TEST_USER_EMAIL, username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD) self.user.is_active = True self.user.save() token = Token.objects.get(user__username=TEST_USER_USERNAME) # Setup. self.unauthorized_client = TenantClient(self.tenant) self.authorized_client = TenantClient(self.tenant, HTTP_AUTHORIZATION='Token ' + token.key) self.authorized_client.login(username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD) # Update Organization. self.tenant.users.add(self.user) self.tenant.save() @transaction.atomic def tearDown(self): users = User.objects.all() groups = Group.objects.all() for user in users.all(): user.delete() for group in groups.all(): group.delete() # super(FoundationPublicDecoratorWithPublicSchemaTestCase, self).tearDown() @transaction.atomic def test_tenant_required_decorator_with_access_denied(self): response = self.authorized_client.get(reverse('tenant_is_valid')) self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) @transaction.atomic def test_group_is_org_admin_with_failure1(self): org_admin_group = Group.objects.get( id=constants.ORGANIZATION_ADMIN_GROUP_ID) self.user.groups.add(org_admin_group) self.user.save() response = self.authorized_client.get(reverse('group_is_entrepreneur')) self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) @transaction.atomic def test_group_is_org_admin_with_failure2(self): entrepreneur_group = Group.objects.get( id=constants.ENTREPRENEUR_GROUP_ID) self.user.groups.add(entrepreneur_group) self.user.save() response = self.authorized_client.get(reverse('group_is_org_admin')) self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) @transaction.atomic def test_group_required_with_success(self): org_admin_group = Group.objects.get( id=constants.ORGANIZATION_ADMIN_GROUP_ID) entrepreneur_group = Group.objects.get( id=constants.ENTREPRENEUR_GROUP_ID) self.user.groups.add(org_admin_group) self.user.groups.add(entrepreneur_group) self.user.save() response = self.authorized_client.get(reverse('group_is_org_admin')) self.assertEqual(response.status_code, status.HTTP_200_OK) response = self.authorized_client.get(reverse('group_is_entrepreneur')) self.assertEqual(response.status_code, status.HTTP_200_OK)
class TenantCalendarTestCases(APITestCase, TenantTestCase): fixtures = [] def setup_tenant(self, tenant): """Tenant Schema""" tenant.schema_name = 'galacticalliance' tenant.name = "Galactic Alliance of Humankind" tenant.is_setup = True tenant.has_perks = True tenant.has_mentors = True tenant.how_discovered = "Command HQ" tenant.how_many_served = 1 @classmethod def setUpTestData(cls): Group.objects.bulk_create([ Group( id=constants.ENTREPRENEUR_GROUP_ID, name="Entreprenuer", ), Group( id=constants.MENTOR_GROUP_ID, name="Mentor", ), Group( id=constants.ADVISOR_GROUP_ID, name="Advisor", ), Group( id=constants.ORGANIZATION_MANAGER_GROUP_ID, name="Org Manager", ), Group( id=constants.ORGANIZATION_ADMIN_GROUP_ID, name="Org Admin", ), Group( id=constants.CLIENT_MANAGER_GROUP_ID, name="Client Manager", ), Group( id=constants.SYSTEM_ADMIN_GROUP_ID, name="System Admin", ), ]) User.objects.bulk_create([ User( email='*****@*****.**', username='******', password='******', is_active=True, ), User( email='*****@*****.**', username='******', password='******', is_active=True, ), User( email='*****@*****.**', username='******', password='******', is_active=True, ), User( email='*****@*****.**', username='******', password='******', is_active=True, ), User( email='*****@*****.**', username='******', password='******', is_active=True, ), User( email='*****@*****.**', username='******', password='******', is_active=True, ), User( email='*****@*****.**', username='******', password='******', is_active=True, ), User( email='*****@*****.**', username='******', password='******', is_active=True, ), User( email='*****@*****.**', username='******', password='******', is_active=True, ), ]) user = User.objects.create_user( # Create our User. email=TEST_USER_EMAIL, username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD) user.is_active = True user.save() @transaction.atomic def setUp(self): translation.activate('en') # Set English super(TenantCalendarTestCases, self).setUp() # Initialize our test data. self.user = User.objects.get(username=TEST_USER_USERNAME) token = Token.objects.get(user=self.user) # Setup. self.unauthorized_client = TenantClient(self.tenant) self.authorized_client = TenantClient(self.tenant, HTTP_AUTHORIZATION='Token ' + token.key) self.authorized_client.login(username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD) # Update Organization. self.tenant.users.add(self.user) self.tenant.save() # Create our Profile. country = CountryOption.objects.create(id=1, name='Avalan') province = ProvinceOption.objects.create(id=1, name='Colony 01', country=country) city = CityOption.objects.create( id=1, name='Megazone 23', province=province, country=country, ) self.me = Me.objects.create( owner=self.user, is_in_intake=True, address=PostalAddress.objects.create( country=CountryOption.objects.get(id=1), region=ProvinceOption.objects.get(id=1), locality=CityOption.objects.get(id=1), owner=self.user)) @transaction.atomic def tearDown(self): PostalAddress.objects.delete_all() ContactPoint.objects.delete_all() CityOption.objects.delete_all() ProvinceOption.objects.delete_all() CountryOption.objects.delete_all() Me.objects.delete_all() users = User.objects.all() for user in users.all(): user.delete() # super(TenantCalendarTestCases, self).tearDown() @transaction.atomic def test_calendar_master_page(self): url = reverse('tenant_calendar_master') response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertTrue(len(response.content) > 1) self.assertIn(b'Calendar', response.content) @transaction.atomic def test_calendar_details_page(self): calendar_event = CalendarEvent.objects.create( id=666, owner=self.user, name='Celebrate victorious battle of Hideauze', description='Come and celebrate!', start='1980-01-01', finish='1980-01-01', ) calendar_event.pending.add(self.me) url = reverse('tenant_calendar_details_edit', args=[ calendar_event.id, ]) response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertTrue(len(response.content) > 1) self.assertIn(b'Calendar', response.content) @transaction.atomic def test_calendar_info_page(self): calendar_event = CalendarEvent.objects.create( id=666, owner=self.user, name='Celebrate victorious battle of Hideauze', description='Come and celebrate!', start='1980-01-01', finish='1980-01-01', ) calendar_event.pending.add(self.me) url = reverse('tenant_calendar_details_info', args=[ calendar_event.id, ]) response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertTrue(len(response.content) > 1) self.assertIn(b'Calendar', response.content) @transaction.atomic def test_calendar_created_page(self): url = reverse('tenant_calendar_create') response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertTrue(len(response.content) > 1) self.assertIn(b'Calendar', response.content)
class FoundationConfigurationOrganizationViewsWithTenatSchemaTestCases( APITestCase, TenantTestCase): fixtures = [] def setup_tenant(self, tenant): """Tenant Schema""" tenant.schema_name = 'galacticalliance' tenant.name = "Galactic Alliance of Humankind" tenant.has_perks = True tenant.has_mentors = True tenant.how_discovered = "Command HQ" tenant.how_many_served = 1 @classmethod def setUpTestData(cls): Group.objects.bulk_create([ Group( id=constants.ENTREPRENEUR_GROUP_ID, name="Entreprenuer", ), Group( id=constants.MENTOR_GROUP_ID, name="Mentor", ), Group( id=constants.ADVISOR_GROUP_ID, name="Advisor", ), Group( id=constants.ORGANIZATION_MANAGER_GROUP_ID, name="Org Manager", ), Group( id=constants.ORGANIZATION_ADMIN_GROUP_ID, name="Org Admin", ), Group( id=constants.CLIENT_MANAGER_GROUP_ID, name="Client Manager", ), Group( id=constants.SYSTEM_ADMIN_GROUP_ID, name="System Admin", ), ]) user = User.objects.create_user( # Create our User. email=TEST_USER_EMAIL, username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD) user.is_active = True user.save() @transaction.atomic def setUp(self): translation.activate('en') # Set English super(FoundationConfigurationOrganizationViewsWithTenatSchemaTestCases, self).setUp() # Initialize our test data. self.user = User.objects.get() token = Token.objects.get(user__username=TEST_USER_USERNAME) # Setup. self.unauthorized_client = TenantClient(self.tenant) self.authorized_client = TenantClient(self.tenant, HTTP_AUTHORIZATION='Token ' + token.key) self.authorized_client.login(username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD) # Update Organization. self.tenant.users.add(self.user) self.tenant.save() @transaction.atomic def tearDown(self): PostalAddress.objects.delete_all() ContactPoint.objects.delete_all() BusinessIdea.objects.delete_all() Tag.objects.delete_all() Me.objects.delete_all() users = User.objects.all() for user in users.all(): user.delete() groups = Group.objects.all() for group in groups.all(): group.delete() # super(FoundationConfigurationOrganizationViewsWithTenatSchemaTestCases, self).tearDown() #------------------------------------------------# # DEVELOPERS NOTE: # # (1) Cannot run this unit test for some reason. # #------------------------------------------------# # @transaction.atomic # def test_config_org_step_one_page_view_with_success(self): # # Setup our User. # org_admin_group = Group.objects.get(id=constants.ORGANIZATION_ADMIN_GROUP_ID) # self.user.groups.add(org_admin_group) # self.user.save() # # # Test & verify. # url = reverse('foundation_auth_config_org_step_one') # response = self.authorized_client.get(url) # self.assertEqual(response.status_code, status.HTTP_200_OK) @transaction.atomic def test_config_org_step_one_page_view_with_failure(self): url = reverse('foundation_auth_config_org_step_one') response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) @transaction.atomic def test_config_org_step_two_page_view_with_success(self): # Setup our User. org_admin_group = Group.objects.get( id=constants.ORGANIZATION_ADMIN_GROUP_ID) self.user.groups.add(org_admin_group) self.user.save() # Test & verify. url = reverse('foundation_auth_config_org_step_two') response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) @transaction.atomic def test_config_org_step_two_page_view_with_failure(self): url = reverse('foundation_auth_config_org_step_two') response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) @transaction.atomic def test_config_org_step_three_page_view_with_success(self): # Setup our User. org_admin_group = Group.objects.get( id=constants.ORGANIZATION_ADMIN_GROUP_ID) self.user.groups.add(org_admin_group) self.user.save() # Test & verify. url = reverse('foundation_auth_config_org_step_three') response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) @transaction.atomic def test_config_org_step_three_page_view_with_failure(self): # Test & verify. url = reverse('foundation_auth_config_org_step_three') response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) @transaction.atomic def test_config_org_step_four_page_view_with_success(self): # Setup our User. org_admin_group = Group.objects.get( id=constants.ORGANIZATION_ADMIN_GROUP_ID) self.user.groups.add(org_admin_group) self.user.save() # Test & verify. url = reverse('foundation_auth_config_org_step_four') response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) @transaction.atomic def test_config_org_step_four_page_view_with_failure(self): url = reverse('foundation_auth_config_org_step_four') response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) @transaction.atomic def test_config_org_step_five_page_view_with_success(self): # Setup our User. org_admin_group = Group.objects.get( id=constants.ORGANIZATION_ADMIN_GROUP_ID) self.user.groups.add(org_admin_group) self.user.save() # Test & verify. url = reverse('foundation_auth_config_org_step_five') response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) @transaction.atomic def test_config_org_step_five_page_view_with_failure(self): url = reverse('foundation_auth_config_org_step_five') response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) @transaction.atomic def test_config_org_step_six_page_view_with_success(self): # Setup our User. org_admin_group = Group.objects.get( id=constants.ORGANIZATION_ADMIN_GROUP_ID) self.user.groups.add(org_admin_group) self.user.save() # Test & verify. url = reverse('foundation_auth_config_org_step_six') response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) @transaction.atomic def test_config_org_step_six_page_view_with_failure(self): url = reverse('foundation_auth_config_org_step_six') response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) @transaction.atomic def test_config_org_step_seven_page_view_with_success(self): # Setup our User. org_admin_group = Group.objects.get( id=constants.ORGANIZATION_ADMIN_GROUP_ID) self.user.groups.add(org_admin_group) self.user.save() # Test & verify. url = reverse('foundation_auth_config_org_step_seven') response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) @transaction.atomic def test_config_org_step_seven_page_view_with_failure(self): url = reverse('foundation_auth_config_org_step_seven') response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) @transaction.atomic def test_config_org_step_eight_page_view_with_success(self): # Setup our User. org_admin_group = Group.objects.get( id=constants.ORGANIZATION_ADMIN_GROUP_ID) self.user.groups.add(org_admin_group) self.user.save() # Test & verify. url = reverse('foundation_auth_config_org_step_eight') response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) @transaction.atomic def test_config_org_step_eight_page_view_with_failure(self): url = reverse('foundation_auth_config_org_step_eight') response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
class APITagWithTenantSchemaTestCase(APITestCase, TenantTestCase): fixtures = [] def setup_tenant(self, tenant): """Tenant Schema""" tenant.schema_name = 'galacticalliance' tenant.name = "Galactic Alliance of Humankind" tenant.has_perks=True tenant.has_mentors=True tenant.how_discovered = "Command HQ" tenant.how_many_served = 1 @classmethod def setUpTestData(cls): Group.objects.bulk_create([ Group(id=constants.ENTREPRENEUR_GROUP_ID, name="Entreprenuer",), Group(id=constants.MENTOR_GROUP_ID, name="Mentor",), Group(id=constants.ADVISOR_GROUP_ID, name="Advisor",), Group(id=constants.ORGANIZATION_MANAGER_GROUP_ID, name="Org Manager",), Group(id=constants.ORGANIZATION_ADMIN_GROUP_ID, name="Org Admin",), Group(id=constants.CLIENT_MANAGER_GROUP_ID, name="Client Manager",), Group(id=constants.SYSTEM_ADMIN_GROUP_ID, name="System Admin",), ]) org_admin_group = Group.objects.get(id=constants.ORGANIZATION_ADMIN_GROUP_ID) user = User.objects.create_user( # Create our user. email=TEST_USER_EMAIL, username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD ) user.is_superuser = True user.is_active = True user.groups.add(org_admin_group) user.save() @transaction.atomic def setUp(self): translation.activate('en') # Set English. super(APITagWithTenantSchemaTestCase, self).setUp() # Initialize our test data. self.user = User.objects.get() token = Token.objects.get(user__username=TEST_USER_USERNAME) # Setup. self.unauthorized_client = TenantClient(self.tenant) self.authorized_client = TenantClient(self.tenant, HTTP_AUTHORIZATION='Token ' + token.key) self.authorized_client.login( username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD ) self.tenant.owner = self.user self.tenant.save() # Above taken from: # http://www.django-rest-framework.org/api-guide/testing/#authenticating # Initialize our test data. Tag.objects.bulk_create([ Tag(name='1'), Tag(name='2'), Tag(name='3'), ]) @transaction.atomic def tearDown(self): Tag.objects.delete_all() PostalAddress.objects.delete_all() ContactPoint.objects.delete_all() Me.objects.delete_all() users = User.objects.all() for user in users.all(): user.delete() # super(APITagWithTenantSchemaTestCase, self).tearDown() @transaction.atomic def test_list_with_anonymous_user(self): response = self.unauthorized_client.get('/api/tenanttag/') self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) @transaction.atomic def test_list_with_authenticated_management_group_user(self): response = self.authorized_client.get('/api/tenanttag/') self.assertEqual(response.status_code, status.HTTP_200_OK) @transaction.atomic def test_list_with_authenticated_advisor_group_user(self): # Change Group that the User belongs in. org_admin_group = Group.objects.get(id=constants.ORGANIZATION_ADMIN_GROUP_ID) advisor_group = Group.objects.get(id=constants.ADVISOR_GROUP_ID) self.user.groups.remove(org_admin_group) self.user.groups.add(advisor_group) self.user.save() # Test and verify. response = self.authorized_client.get('/api/tenanttag/') self.assertEqual(response.status_code, status.HTTP_200_OK) @transaction.atomic def test_post_with_anonymous_user(self): data = { 'name': 'Unit Test', } response = self.unauthorized_client.post('/api/tenanttag/', json.dumps(data), content_type='application/json') self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) @transaction.atomic def test_post_with_authenticated_management_group_user(self): # Run the test and verify. data = { 'name': 'Unit Test', } response = self.authorized_client.post('/api/tenanttag/', json.dumps(data), content_type='application/json') self.assertEqual(response.status_code, status.HTTP_201_CREATED) @transaction.atomic def test_post_with_authenticated_advisor_group_user(self): # Change Group that the User belongs in. org_admin_group = Group.objects.get(id=constants.ORGANIZATION_ADMIN_GROUP_ID) advisor_group = Group.objects.get(id=constants.ADVISOR_GROUP_ID) self.user.groups.remove(org_admin_group) self.user.groups.add(advisor_group) self.user.save() # Test and verify. data = { 'name': 'Unit Test', } response = self.authorized_client.post('/api/tenanttag/', json.dumps(data), content_type='application/json') self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) @transaction.atomic def test_put_with_anonymous_user(self): # Delete any previous data. items = Tag.objects.all() for item in items.all(): item.delete() # Create a new object with our specific test data. Tag.objects.create( id=1, name="Unit Test", ) # Run the test. data = { 'id': 1, 'name': 'Unit Test', } response = self.unauthorized_client.put('/api/tenanttag/1/', json.dumps(data), content_type='application/json') self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) @transaction.atomic def test_put_with_authenticated_management_user(self): # Delete any previous data. items = Tag.objects.all() for item in items.all(): item.delete() # Create a new object with our specific test data. Tag.objects.create( id=1, name="Unit Test", ) # Run the test. data = { 'id': 1, 'name': 'Unit Test', } response = self.authorized_client.put('/api/tenanttag/1/', json.dumps(data), content_type='application/json') self.assertEqual(response.status_code, status.HTTP_200_OK) @transaction.atomic def test_put_with_authenticated_advisor_user(self): # Change Group that the User belongs in. org_admin_group = Group.objects.get(id=constants.ORGANIZATION_ADMIN_GROUP_ID) advisor_group = Group.objects.get(id=constants.ADVISOR_GROUP_ID) self.user.groups.remove(org_admin_group) self.user.groups.add(advisor_group) self.user.save() # Delete any previous data. items = Tag.objects.all() for item in items.all(): item.delete() # Create a new object with our specific test data. Tag.objects.create( id=1, name="Unit Test", ) # Run the test. data = { 'id': 1, 'name': 'Unit Test', } response = self.authorized_client.put('/api/tenanttag/1/', json.dumps(data), content_type='application/json') self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) @transaction.atomic def test_delete_with_anonymous_user(self): response = self.unauthorized_client.delete('/api/tenanttag/1/') self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) @transaction.atomic def test_delete_with_authenticated_management_user(self): response = self.authorized_client.delete('/api/tenanttag/1/') self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT) @transaction.atomic def test_delete_with_authenticated_advisor_user(self): # Change Group that the User belongs in. org_admin_group = Group.objects.get(id=constants.ORGANIZATION_ADMIN_GROUP_ID) advisor_group = Group.objects.get(id=constants.ADVISOR_GROUP_ID) self.user.groups.remove(org_admin_group) self.user.groups.add(advisor_group) self.user.save() # Run test and verify. response = self.authorized_client.delete('/api/tenanttag/1/') self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
class TenantCustomerTestCases(APITestCase, TenantTestCase): fixtures = [] def setup_tenant(self, tenant): """Tenant Schema""" tenant.schema_name = 'galacticalliance' tenant.name = "Galactic Alliance of Humankind" tenant.is_setup = True tenant.has_perks = True tenant.has_mentors = True tenant.how_discovered = "Command HQ" tenant.how_many_served = 1 @classmethod def setUpTestData(cls): Group.objects.bulk_create([ Group( id=constants.ENTREPRENEUR_GROUP_ID, name="Entreprenuer", ), Group( id=constants.MENTOR_GROUP_ID, name="Mentor", ), Group( id=constants.ADVISOR_GROUP_ID, name="Advisor", ), Group( id=constants.ORGANIZATION_MANAGER_GROUP_ID, name="Org Manager", ), Group( id=constants.ORGANIZATION_ADMIN_GROUP_ID, name="Org Admin", ), Group( id=constants.CLIENT_MANAGER_GROUP_ID, name="Client Manager", ), Group( id=constants.SYSTEM_ADMIN_GROUP_ID, name="System Admin", ), ]) User.objects.bulk_create([ User( email='*****@*****.**', username='******', password='******', is_active=True, ), User( email='*****@*****.**', username='******', password='******', is_active=True, ), User( email='*****@*****.**', username='******', password='******', is_active=True, ), User( email='*****@*****.**', username='******', password='******', is_active=True, ), User( email='*****@*****.**', username='******', password='******', is_active=True, ), User( email='*****@*****.**', username='******', password='******', is_active=True, ), User( email='*****@*****.**', username='******', password='******', is_active=True, ), User( email='*****@*****.**', username='******', password='******', is_active=True, ), User( email='*****@*****.**', username='******', password='******', is_active=True, ), ]) user = User.objects.create_user( # Create our User. email=TEST_USER_EMAIL, username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD) user.is_active = True user.save() @transaction.atomic def setUp(self): translation.activate('en') # Set English super(TenantCustomerTestCases, self).setUp() # Initialize our test data. self.user = User.objects.get(username=TEST_USER_USERNAME) token = Token.objects.get(user=self.user) # Setup. self.unauthorized_client = TenantClient(self.tenant) self.authorized_client = TenantClient(self.tenant, HTTP_AUTHORIZATION='Token ' + token.key) self.authorized_client.login(username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD) # Update Organization. self.tenant.users.add(self.user) self.tenant.save() # Setup User. Me.objects.create(owner=self.user, ) @transaction.atomic def tearDown(self): PostalAddress.objects.delete_all() ContactPoint.objects.delete_all() Me.objects.delete_all() users = User.objects.all() for user in users.all(): user.delete() # super(TenantCustomerTestCases, self).tearDown() @transaction.atomic def test_customer_master_page_with_200(self): url = reverse('tenant_customer_entrepreneur_master') response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertTrue(len(response.content) > 1) self.assertIn(b'Clients', response.content) @transaction.atomic def test_customer_details_page_with_404(self): url = reverse('tenant_customer_entrepreneur_details', args=[666]) response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertTrue(len(response.content) > 1) self.assertIn(b'404', response.content) @transaction.atomic def test_customer_details_page_with_200(self): # Make employee advisor_group = Group.objects.get(id=constants.ADVISOR_GROUP_ID) self.user.groups.add(advisor_group) # Make Me setup. me = Me.objects.get() me.is_setup = True me.save() # Make Intake object. intake = Intake.objects.create( me=me, status=constants.APPROVED_STATUS, ) # Run test and verify. url = reverse('tenant_customer_entrepreneur_details', args=[ intake.id, ]) response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertTrue(len(response.content) > 1) self.assertIn(b'Clients', response.content)
class TenantDashboardTestCases(APITestCase, TenantTestCase): fixtures = [] def setup_tenant(self, tenant): """Tenant Schema""" tenant.schema_name = 'galacticalliance' tenant.name = "Galactic Alliance of Humankind" tenant.is_setup = True tenant.has_perks = True tenant.has_mentors = True tenant.how_discovered = "Command HQ" tenant.how_many_served = 1 @classmethod def setUpTestData(cls): Group.objects.bulk_create([ Group( id=constants.ENTREPRENEUR_GROUP_ID, name="Entreprenuer", ), Group( id=constants.MENTOR_GROUP_ID, name="Mentor", ), Group( id=constants.ADVISOR_GROUP_ID, name="Advisor", ), Group( id=constants.ORGANIZATION_MANAGER_GROUP_ID, name="Org Manager", ), Group( id=constants.ORGANIZATION_ADMIN_GROUP_ID, name="Org Admin", ), Group( id=constants.CLIENT_MANAGER_GROUP_ID, name="Client Manager", ), Group( id=constants.SYSTEM_ADMIN_GROUP_ID, name="System Admin", ), ]) User.objects.bulk_create([ User( email='*****@*****.**', username='******', password='******', is_active=True, ), User( email='*****@*****.**', username='******', password='******', is_active=True, ), User( email='*****@*****.**', username='******', password='******', is_active=True, ), User( email='*****@*****.**', username='******', password='******', is_active=True, ), User( email='*****@*****.**', username='******', password='******', is_active=True, ), User( email='*****@*****.**', username='******', password='******', is_active=True, ), User( email='*****@*****.**', username='******', password='******', is_active=True, ), User( email='*****@*****.**', username='******', password='******', is_active=True, ), User( email='*****@*****.**', username='******', password='******', is_active=True, ), ]) user = User.objects.create_user( # Create our User. email=TEST_USER_EMAIL, username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD) user.is_active = True user.save() @transaction.atomic def setUp(self): translation.activate('en') # Set English super(TenantDashboardTestCases, self).setUp() # Initialize our test data. self.user = User.objects.get(username=TEST_USER_USERNAME) token = Token.objects.get(user=self.user) # Setup. self.unauthorized_client = TenantClient(self.tenant) self.authorized_client = TenantClient(self.tenant, HTTP_AUTHORIZATION='Token ' + token.key) self.authorized_client.login(username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD) # Update Organization. self.tenant.users.add(self.user) self.tenant.save() @transaction.atomic def tearDown(self): PostalAddress.objects.delete_all() ContactPoint.objects.delete_all() Me.objects.delete_all() users = User.objects.all() for user in users.all(): user.delete() items = Group.objects.all() for item in items.all(): item.delete() # super(TenantDashboardTestCases, self).tearDown() @transaction.atomic def test_dashboard_page_with_anonymous_user(self): url = reverse('tenant_dashboard') response = self.unauthorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_302_FOUND) @transaction.atomic def test_dashboard_page_with_organization_admin_user(self): org_admin_group = Group.objects.get( id=constants.ORGANIZATION_ADMIN_GROUP_ID) self.user.groups.add(org_admin_group) self.user.save() url = reverse('tenant_dashboard') response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertTrue(len(response.content) > 1) self.assertIn(b'Dashboard', response.content) @transaction.atomic def test_dashboard_page_with_entrepreneur_user_when_not_admitted(self): entrepreneur_group = Group.objects.get( id=constants.ENTREPRENEUR_GROUP_ID) self.user.groups.add(entrepreneur_group) self.user.save() url = reverse('tenant_dashboard') response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_302_FOUND) @transaction.atomic def test_dashboard_page_with_entrepreneur_user_when_admitted(self): # Pre-configure the unit test. entrepreneur_group = Group.objects.get( id=constants.ENTREPRENEUR_GROUP_ID) self.user.groups.add(entrepreneur_group) self.user.save() me, created = Me.objects.get_or_create(owner=self.user) me.is_in_intake = True me.is_setup = True me.save() # Run test and verify. url = reverse('tenant_dashboard') response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertTrue(len(response.content) > 1) self.assertIn(b'Dashboard', response.content)
class APITaskBaseWithTenantSchemaTestCase(APITestCase, TenantTestCase): fixtures = [] def setup_tenant(self, tenant): """Tenant Schema""" tenant.schema_name = 'galacticalliance' tenant.name = "Galactic Alliance of Humankind" tenant.has_perks = True tenant.has_mentors = True tenant.how_discovered = "Command HQ" tenant.how_many_served = 1 @classmethod def setUpTestData(cls): Group.objects.bulk_create([ Group( id=constants.ENTREPRENEUR_GROUP_ID, name="Entreprenuer", ), Group( id=constants.MENTOR_GROUP_ID, name="Mentor", ), Group( id=constants.ADVISOR_GROUP_ID, name="Advisor", ), Group( id=constants.ORGANIZATION_MANAGER_GROUP_ID, name="Org Manager", ), Group( id=constants.ORGANIZATION_ADMIN_GROUP_ID, name="Org Admin", ), Group( id=constants.CLIENT_MANAGER_GROUP_ID, name="Client Manager", ), Group( id=constants.SYSTEM_ADMIN_GROUP_ID, name="System Admin", ), ]) user = User.objects.create_user( # Create our user. email=TEST_USER_EMAIL, username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD) user.is_active = True user.save() @transaction.atomic def setUp(self): translation.activate('en') # Set English. super(APITaskBaseWithTenantSchemaTestCase, self).setUp() # Initialize our test data. self.user = User.objects.get() token = Token.objects.get(user__username=TEST_USER_USERNAME) # Setup. self.unauthorized_client = TenantClient(self.tenant) self.authorized_client = TenantClient(self.tenant, HTTP_AUTHORIZATION='Token ' + token.key) self.authorized_client.login(username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD) # Above taken from: # http://www.django-rest-framework.org/api-guide/testing/#authenticating # Initialize our test data. Task.objects.bulk_create([ Task(owner=self.user), Task(owner=self.user), Task(owner=self.user), ]) @transaction.atomic def tearDown(self): PostalAddress.objects.delete_all() # Must be above Tasks. ContactPoint.objects.delete_all() # Must be above Tasks. CalendarEvent.objects.delete_all() Task.objects.delete_all() SortedLogEventByCreated.objects.delete_all() SortedCommentPostByCreated.objects.delete_all() Me.objects.delete_all() users = User.objects.all() for user in users.all(): user.delete() # super(APITaskBaseWithTenantSchemaTestCase, self).tearDown() @transaction.atomic def test_list_with_anonymous_user(self): response = self.unauthorized_client.get('/api/tenanttask/') self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) @transaction.atomic def test_list_with_authenticated_user(self): me = Me.objects.create( # Create our models. id=1, owner=self.user, ) task = Task.objects.create( id=666, assigned_by=me, assignee=me, ) response = self.authorized_client.get( '/api/tenanttask/') # Run test and verify. self.assertEqual(response.status_code, status.HTTP_200_OK) @transaction.atomic def test_post_with_anonymous_user(self): me = Me.objects.create( id=1, owner=self.user, ) data = { 'name': 'Unit Test', 'description': 'Used for unit testing purposes.', 'assigned_by': me.id, 'assignee': me.id, 'status': constants.OPEN_TASK_STATUS, } response = self.unauthorized_client.post( '/api/tenanttask/', json.dumps(data), content_type='application/json') self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) @transaction.atomic def test_post_with_authenticated_user(self): me = Me.objects.create( id=1, owner=self.user, ) data = { 'name': 'Unit Test', 'description': 'Used for unit testing purposes.', 'assigned_by': me.id, 'assignee': me.id, 'status': constants.OPEN_TASK_STATUS, } response = self.authorized_client.post('/api/tenanttask/', json.dumps(data), content_type='application/json') self.assertEqual(response.status_code, status.HTTP_201_CREATED) @transaction.atomic def test_put_with_anonymous_user(self): me = Me.objects.create( id=1, owner=self.user, ) task = Task.objects.create( id=666, assigned_by=me, assignee=me, ) data = { 'id': task.id, 'name': 'Unit Test', 'description': 'Used for unit testing purposes.', 'assigned_by': me.id, 'assignee': me.id, 'status': constants.OPEN_TASK_STATUS, } response = self.unauthorized_client.put( '/api/tenanttask/666/', json.dumps(data), content_type='application/json') self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) @transaction.atomic def test_put_with_owner_user(self): me = Me.objects.create( id=1, owner=self.user, ) task = Task.objects.create( id=666, owner=self.user, assigned_by=me, assignee=me, ) data = { 'id': task.id, 'name': 'Unit Test', 'description': 'Used for unit testing purposes.', 'assigned_by': me.id, 'assignee': me.id, 'status': constants.OPEN_TASK_STATUS, } response = self.authorized_client.put('/api/tenanttask/666/', json.dumps(data), content_type='application/json') self.assertEqual(response.status_code, status.HTTP_200_OK) @transaction.atomic def test_delete_by_anonymous_user(self): me = Me.objects.create( id=1, owner=self.user, ) task = Task.objects.create( id=666, owner=self.user, assigned_by=me, assignee=me, ) response = self.unauthorized_client.delete('/api/tenanttask/' + str(task.id) + '/') self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) @transaction.atomic def test_delete_by_owner_user(self): me = Me.objects.create( id=1, owner=self.user, ) calendar_event = CalendarEvent.objects.create(id=666, owner=self.user) task = Task.objects.create(id=666, owner=self.user, assigned_by=me, assignee=me, calendar_event=calendar_event) response = self.authorized_client.delete('/api/tenanttask/' + str(task.id) + '/') self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
class TestTenantPartnerViews(TenantTestCase): """ Console: python manage.py test tenant_partner.tests """ #------------------# # Setup Unit Tests # #------------------# def setup_tenant(tenant): """Tenant Schema""" tenant.schema_name = TEST_SCHEMA_NAME tenant.name = 'Over 55 (London) Inc.', tenant.alternate_name = "Over55", tenant.description = "Located at the Forks of the Thames in ...", tenant.address_country = "CA", tenant.address_locality = "London", tenant.address_region = "Ontario", tenant.post_office_box_number = "", # Post Offic # tenant.postal_code = "N6H 1B4", tenant.street_address = "78 Riverside Drive", tenant.street_address_extra = "", # Extra line. @classmethod def setUpClass(cls): """ Run at the beginning before all the unit tests run. """ super().setUpClass() def setUp(self): """ Run at the beginning of every unit test. """ super(TestTenantPartnerViews, self).setUp() # Setup our app and account. call_command('init_app', verbosity=0) call_command('populate_tenant_content', TEST_SCHEMA_NAME, verbosity=0) call_command('populate_tenant_sample_db', TEST_SCHEMA_NAME, verbosity=0) # Get user and credentials. user = SharedUser.objects.get(email='*****@*****.**') token, orig_iat = get_jwt_token_and_orig_iat(user) # Setup our clients. self.anon_c = TenantClient(self.tenant) self.auth_c = TenantClient(self.tenant, HTTP_AUTHORIZATION='JWT {0}'.format(token)) self.auth_c.login(username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD) def tearDown(self): """ Run at the end of every unit test. """ # Delete previous data. SharedUser.objects.all().delete() # Delete our clients. del self.anon_c del self.auth_c # Finish teardown. super(TestTenantPartnerViews, self).tearDown() def test_summary_page(self): response = self.auth_c.get( self.tenant.reverse('workery_tenant_partner_summary')) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIn('Partner', str(response.content)) def test_create_confirmation_page(self): response = self.auth_c.get( self.tenant.reverse('workery_tenant_partner_confirm_create')) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIn('Add Partner', str(response.content)) def test_create_page(self): response = self.auth_c.get( self.tenant.reverse('workery_tenant_partner_create')) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIn('Add Partner', str(response.content)) def test_list_page(self): response = self.auth_c.get( self.tenant.reverse('workery_tenant_partner_list')) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIn('Partner List', str(response.content)) def test_search_page(self): response = self.auth_c.get( self.tenant.reverse('workery_tenant_partner_search')) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIn('Partners Search', str(response.content)) def test_search_confirmation_page(self): response = self.auth_c.get( self.tenant.reverse('workery_tenant_partner_search_results') + '?keyword=' + TEST_USER_EMAIL) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIn('Search', str(response.content)) self.assertIn('Search Results', str(response.content)) # self.assertIn(TEST_USER_EMAIL, str(response.content)) def test_lite_retrieve_page(self): partner = Partner.objects.get() a_url = self.tenant.reverse( reverse_id='workery_tenant_partner_lite_retrieve', reverse_args=['summary', int(partner.id)]) response = self.auth_c.get(a_url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIn('Partner', str(response.content)) # self.assertIn('Gendo', str(response.content)) def test_full_retrieve_page(self): partner = Partner.objects.get() a_url = self.tenant.reverse( reverse_id='workery_tenant_partner_full_retrieve', reverse_args=['summary', int(partner.id)]) response = self.auth_c.get(a_url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIn('Partner', str(response.content)) # self.assertIn('Gendo', str(response.content)) def test_comments_retrieve_page(self): partner = Partner.objects.get() a_url = self.tenant.reverse( reverse_id='workery_tenant_partner_retrieve_for_comment_list', reverse_args=['summary', int(partner.id)]) response = self.auth_c.get(a_url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIn('Partner', str(response.content)) self.assertIn('Add Comment/Note', str(response.content)) def test_update_page(self): partner = Partner.objects.get() a_url = self.tenant.reverse(reverse_id='workery_tenant_partner_update', reverse_args=['summary', int(partner.id)]) response = self.auth_c.get(a_url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIn('Partner', str(response.content)) self.assertIn('Edit Partner', str(response.content))
class APIIntakeWithTenantSchemaTestCase(APITestCase, TenantTestCase): fixtures = [] def setup_tenant(self, tenant): """Tenant Schema""" tenant.schema_name = 'galacticalliance' tenant.name = "Galactic Alliance of Humankind" tenant.has_perks=True tenant.has_mentors=True tenant.how_discovered = "Command HQ" tenant.how_many_served = 1 @classmethod def setUpTestData(cls): Group.objects.bulk_create([ Group(id=constants.ENTREPRENEUR_GROUP_ID, name="Entreprenuer",), Group(id=constants.MENTOR_GROUP_ID, name="Mentor",), Group(id=constants.ADVISOR_GROUP_ID, name="Advisor",), Group(id=constants.ORGANIZATION_MANAGER_GROUP_ID, name="Org Manager",), Group(id=constants.ORGANIZATION_ADMIN_GROUP_ID, name="Org Admin",), Group(id=constants.CLIENT_MANAGER_GROUP_ID, name="Client Manager",), Group(id=constants.SYSTEM_ADMIN_GROUP_ID, name="System Admin",), ]) org_admin_group = Group.objects.get(id=constants.ORGANIZATION_ADMIN_GROUP_ID) user = User.objects.create_user( # Create our user. email=TEST_USER_EMAIL, username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD ) user.is_superuser = True user.is_active = True user.groups.add(org_admin_group) user.save() @transaction.atomic def setUp(self): translation.activate('en') # Set English. super(APIIntakeWithTenantSchemaTestCase, self).setUp() # Initialize our test data. self.user = User.objects.get() token = Token.objects.get(user__username=TEST_USER_USERNAME) # Setup. self.unauthorized_client = TenantClient(self.tenant) self.authorized_client = TenantClient(self.tenant, HTTP_AUTHORIZATION='Token ' + token.key) self.authorized_client.login( username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD ) self.tenant.owner = self.user self.tenant.save() self.me = Me.objects.create( owner=self.user, ) # Above taken from: # http://www.django-rest-framework.org/api-guide/testing/#authenticating @transaction.atomic def tearDown(self): Intake.objects.delete_all() Note.objects.delete_all() PostalAddress.objects.delete_all() ContactPoint.objects.delete_all() Me.objects.delete_all() items = User.objects.all() for item in items.all(): item.delete() items = Group.objects.all() for item in items.all(): item.delete() # super(APIIntakeWithTenantSchemaTestCase, self).tearDown() @transaction.atomic def test_list_with_anonymous_user(self): response = self.unauthorized_client.get('/api/tenantintake/?format=json') self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) @transaction.atomic def test_list_with_authenticated__user(self): # Change Group that the User belongs in. entrepreneur_group = Group.objects.get(id=constants.ENTREPRENEUR_GROUP_ID) self.user.groups.add(entrepreneur_group) self.user.save() # Test and verify. response = self.authorized_client.get('/api/tenantintake/?format=json') self.assertEqual(response.status_code, status.HTTP_200_OK) @transaction.atomic def test_list_with_authenticated_management_group_user(self): # Change Group that the User belongs in. org_admin_group = Group.objects.get(id=constants.ORGANIZATION_ADMIN_GROUP_ID) self.user.groups.remove(org_admin_group) self.user.save() # Test and verify. response = self.authorized_client.get('/api/tenantintake/?format=json') self.assertEqual(response.status_code, status.HTTP_200_OK) @transaction.atomic def test_list_with_authenticated_advisor_group_user(self): # Change Group that the User belongs in. advisor_group = Group.objects.get(id=constants.ADVISOR_GROUP_ID) self.user.groups.add(advisor_group) self.user.save() # Test and verify. response = self.authorized_client.get('/api/tenantintake/?format=json') self.assertEqual(response.status_code, status.HTTP_200_OK) @transaction.atomic def test_post_with_anonymous_user(self): data = { 'me': self.me.id, } response = self.unauthorized_client.post('/api/tenantintake/?format=json', json.dumps(data), content_type='application/json') self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) @transaction.atomic def test_post_with_authenticated_management_group_user(self): # Run the test and verify. data = { 'me': self.me.id, } response = self.authorized_client.post('/api/tenantintake/?format=json', json.dumps(data), content_type='application/json') self.assertEqual(response.status_code, status.HTTP_201_CREATED) @transaction.atomic def test_post_with_authenticated_advisor_group_user(self): # Change Group that the User belongs in. org_admin_group = Group.objects.get(id=constants.ORGANIZATION_ADMIN_GROUP_ID) advisor_group = Group.objects.get(id=constants.ADVISOR_GROUP_ID) self.user.groups.remove(org_admin_group) self.user.groups.add(advisor_group) self.user.save() # Test and verify. data = { 'me': self.me.id, } response = self.authorized_client.post('/api/tenantintake/?format=json', json.dumps(data), content_type='application/json') self.assertEqual(response.status_code, status.HTTP_201_CREATED) @transaction.atomic def test_put_with_anonymous_user(self): # Create a new object with our specific test data. Intake.objects.create( id=1, me=self.me, ) # Run the test. data = { 'id': 1, 'me': self.me.id, } response = self.unauthorized_client.put('/api/tenantintake/1/?format=json', json.dumps(data), content_type='application/json') self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) @transaction.atomic def test_put_with_authenticated_management_user(self): # Create a new object with our specific test data. Intake.objects.create( id=1, me=self.me, ) # Run the test. data = { 'id': 1, 'me': self.me.id, } response = self.authorized_client.put('/api/tenantintake/1/?format=json', json.dumps(data), content_type='application/json') self.assertEqual(response.status_code, status.HTTP_200_OK) @transaction.atomic def test_put_with_authenticated_advisor_user(self): # Change Group that the User belongs in. org_admin_group = Group.objects.get(id=constants.ORGANIZATION_ADMIN_GROUP_ID) advisor_group = Group.objects.get(id=constants.ADVISOR_GROUP_ID) self.user.groups.remove(org_admin_group) self.user.groups.add(advisor_group) self.user.save() # Create a new object with our specific test data. Intake.objects.create( id=1, me=self.me, ) # Run the test. data = { 'id': 1, 'me': self.me.id, } response = self.authorized_client.put('/api/tenantintake/1/?format=json', json.dumps(data), content_type='application/json') self.assertEqual(response.status_code, status.HTTP_200_OK) @transaction.atomic def test_delete_with_anonymous_user(self): Intake.objects.create( id=1, me=self.me, ) response = self.unauthorized_client.delete('/api/tenantintake/1/?format=json') self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) @transaction.atomic def test_delete_with_authenticated_management_user(self): Intake.objects.create( id=1, me=self.me, judgement_note=Note.objects.create( id=1, me=self.me, ), privacy_note=Note.objects.create( id=2, me=self.me, ), terms_note=Note.objects.create( id=3, me=self.me, ), confidentiality_note=Note.objects.create( id=4, me=self.me, ), collection_note=Note.objects.create( id=5, me=self.me, ), ) response = self.authorized_client.delete('/api/tenantintake/1/?format=json') self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT) @transaction.atomic def test_delete_with_authenticated_advisor_user(self): # Create our object to be deleted. Intake.objects.create( id=1, me=self.me, status=constants.CREATED_STATUS, judgement_note=Note.objects.create( id=1, me=self.me, ), ) # Change Group that the User belongs in. org_admin_group = Group.objects.get(id=constants.ORGANIZATION_ADMIN_GROUP_ID) advisor_group = Group.objects.get(id=constants.ADVISOR_GROUP_ID) self.user.groups.remove(org_admin_group) self.user.groups.add(advisor_group) self.user.save() # Run test and verify. response = self.authorized_client.delete('/api/tenantintake/1/?format=json') self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT) @transaction.atomic def test_complete_intake_with_anonymous_user(self): # Setup our object. Intake.objects.create( id=1, me=self.me, status=constants.PENDING_REVIEW_STATUS, judgement_note=Note.objects.create( id=1, me=self.me, ), ) # Run the test and verify. response = self.unauthorized_client.put( '/api/tenantintake/1/complete_intake/?format=json', json.dumps({}), content_type='application/json' ) self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) me = Intake.objects.get(id=1) self.assertEqual(me.status, constants.PENDING_REVIEW_STATUS) self.assertEqual(len(mail.outbox), 0) # Test that one message has not been sent. @transaction.atomic def test_complete_intake_with_owner_user(self): # Setup our object. Intake.objects.create( id=1, me=self.me, status=constants.CREATED_STATUS, ) # Run the test and verify. response = self.authorized_client.put( '/api/tenantintake/1/complete_intake/?format=json', json.dumps({}), content_type='application/json' ) self.assertEqual(response.status_code, status.HTTP_200_OK) me = Intake.objects.get(id=1) self.assertEqual(me.status, constants.PENDING_REVIEW_STATUS) # Test that one email has been sent. self.assertEqual(len(mail.outbox), 1) # Verify that the subject of the first message is correct. self.assertEqual(mail.outbox[0].subject, 'New Entrepreneur Application!') @transaction.atomic def test_complete_intake_with_different_owner_user(self): # Setup our objects. org_admin_group = Group.objects.get(id=constants.ORGANIZATION_ADMIN_GROUP_ID) new_user = User.objects.create_user( # Create our user. email='*****@*****.**', username='******', password='******', ) new_user.is_active = True new_user.groups.add(org_admin_group) new_user.save() new_me = Me.objects.create( owner=new_user ) Intake.objects.create( id=1, me=new_me, status=constants.CREATED_STATUS, ) # Run the test and verify. response = self.authorized_client.put( '/api/tenantintake/1/complete_intake/?format=json', json.dumps({}), content_type='application/json' ) self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) me = Intake.objects.get(id=1) self.assertEqual(me.status, constants.CREATED_STATUS) self.assertEqual(len(mail.outbox), 0) # Test that one message has not been sent. @transaction.atomic def test_complete_intake_with_owner_user_with_404(self): # Setup our object. Intake.objects.create( id=1, me=self.me, status=constants.CREATED_STATUS, ) # Run the test and verify. response = self.authorized_client.put( '/api/tenantintake/6666/complete_intake/?format=json', json.dumps({}), content_type='application/json' ) self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND) me = Intake.objects.get(id=1) self.assertEqual(me.status, constants.CREATED_STATUS) self.assertEqual(len(mail.outbox), 0) # Test that one message has not been sent. @transaction.atomic def test_judge_with_anonymous_user(self): # Create a new object with our specific test data. # Setup our object. Intake.objects.create( id=1, me=self.me, status=constants.CREATED_STATUS, ) # Run the test. data = { 'id': 1, 'owner': self.user.id, 'is_employee_created': False, } response = self.unauthorized_client.put( '/api/tenantintake/1/judge/?format=json', json.dumps(data), content_type='application/json' ) self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) intake = Intake.objects.get(id=1) self.assertEqual(intake.status, constants.CREATED_STATUS) self.assertFalse(intake.me.is_in_intake) self.assertEqual(len(mail.outbox), 0) # Test that one message has not been sent. @transaction.atomic def test_judge_with_employee_user_for_existing_intake_with_note(self): # Setup our object. Intake.objects.create( id=1, me=self.me, status=constants.CREATED_STATUS, judgement_note=Note.objects.create( me=self.me, ), ) # Run the test and verify. response = self.authorized_client.put( '/api/tenantintake/1/judge/?format=json', json.dumps({ 'status': constants.APPROVED_STATUS, 'comment': 'This is a test comment.', 'is_employee_created': False, }), content_type='application/json' ) self.assertEqual(response.status_code, status.HTTP_200_OK) intake = Intake.objects.get(id=1) self.assertEqual(intake.status, constants.APPROVED_STATUS) self.assertTrue(intake.me.is_in_intake) note = Note.objects.get(id=1) self.assertIn('This is a test comment.', note.description) self.assertEqual(len(mail.outbox), 1) # Test that one message has been sent. self.assertIn('Accepted', mail.outbox[0].subject) @transaction.atomic def test_judge_with_employee_user_for_existing_intake_without_note(self): # Setup our object. Intake.objects.create( id=1, me=self.me, status=constants.CREATED_STATUS, ) # Run the test and verify. response = self.authorized_client.put( '/api/tenantintake/1/judge/?format=json', json.dumps({ 'status': constants.REJECTED_STATUS, 'comment': 'This is a test comment.', 'is_employee_created': False, }), content_type='application/json' ) self.assertEqual(response.status_code, status.HTTP_200_OK) intake = Intake.objects.get(id=1) self.assertEqual(intake.status, constants.REJECTED_STATUS) self.assertFalse(intake.me.is_in_intake) note = Note.objects.get(id=1) self.assertIn('This is a test comment.', note.description) self.assertEqual(len(mail.outbox), 1) # Test that one message has been sent. self.assertIn('Rejected', mail.outbox[0].subject) @transaction.atomic def test_judge_with_employee_user_for_manually_created_intake(self): # Setup our object. Intake.objects.create( id=1, me=self.me, status=constants.CREATED_STATUS, ) # Run the test and verify. response = self.authorized_client.put( '/api/tenantintake/1/judge/?format=json', json.dumps({ 'status': constants.APPROVED_STATUS, 'comment': 'This is a test comment.', 'is_employee_created': True, }), content_type='application/json' ) self.assertEqual(response.status_code, status.HTTP_200_OK) intake = Intake.objects.get(id=1) self.assertEqual(intake.status, constants.APPROVED_STATUS) self.assertTrue(intake.me.is_in_intake) note = Note.objects.get(id=1) self.assertIn('This is a test comment.', note.description) self.assertEqual(len(mail.outbox), 1) # Test that one message has been sent. @transaction.atomic def test_judge_with_non_employee_user(self): org_admin_group = Group.objects.get(id=constants.ORGANIZATION_ADMIN_GROUP_ID) self.user.groups.remove(org_admin_group) group = Group.objects.get(id=constants.ENTREPRENEUR_GROUP_ID) self.user.groups.add(group) Intake.objects.create( id=1, me=self.me, status=constants.CREATED_STATUS, ) # Run the test. response = self.authorized_client.put( '/api/tenantintake/1/judge/?format=json', json.dumps({ 'status': constants.APPROVED_STATUS, 'comment': 'This is a test comment.', 'is_employee_created': False, }), content_type='application/json' ) self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) intake = Intake.objects.get(id=1) self.assertEqual(intake.status, constants.CREATED_STATUS) self.assertFalse(intake.me.is_in_intake) self.assertEqual(len(mail.outbox), 0) # Test that one message has not been sent. @transaction.atomic def test_judge_with_owner_user_with_404(self): org_admin_group = Group.objects.get(id=constants.ORGANIZATION_ADMIN_GROUP_ID) self.user.groups.remove(org_admin_group) group = Group.objects.get(id=constants.ADVISOR_GROUP_ID) self.user.groups.add(group) response = self.authorized_client.put( '/api/tenantintake/666/judge/?format=json', json.dumps({ 'status': constants.APPROVED_STATUS, 'comment': 'This is a test comment.', 'is_employee_created': False, }), content_type='application/json' ) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) self.assertIn(b'No Intake matches the given query.', response.content) self.assertEqual(len(mail.outbox), 0) # Test that one message has not been sent. @transaction.atomic def test_crm_update_with_anonymous_user(self): # Setup our object. Intake.objects.create( id=1, me=self.me, status=constants.PENDING_REVIEW_STATUS, has_signed_with_name="Ledo" ) # Run the test and verify. response = self.unauthorized_client.put( '/api/tenantintake/1/crm_update/?format=json', json.dumps({}), content_type='application/json' ) self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) @transaction.atomic def test_crm_update_with_owner_user(self): # Setup our object. Intake.objects.create( id=1, me=self.me, status=constants.CREATED_STATUS, has_signed_with_name="Ledo" ) # Run the test and verify. response = self.authorized_client.put( '/api/tenantintake/1/crm_update/?format=json', json.dumps({}), content_type='application/json' ) self.assertEqual(response.status_code, status.HTTP_200_OK) @transaction.atomic def test_crm_update_with_different_owner_user(self): # Setup our objects. org_admin_group = Group.objects.get(id=constants.ORGANIZATION_ADMIN_GROUP_ID) new_user = User.objects.create_user( # Create our user. email='*****@*****.**', username='******', password='******', ) new_user.is_active = True new_user.groups.add(org_admin_group) new_user.save() new_me = Me.objects.create( owner=new_user ) Intake.objects.create( id=1, me=new_me, status=constants.CREATED_STATUS, has_signed_with_name="Ledo" ) # Run the test and verify. response = self.authorized_client.put( '/api/tenantintake/1/crm_update/?format=json', json.dumps({}), content_type='application/json' ) self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) @transaction.atomic def test_crm_update_with_owner_user_with_404(self): # Run the test and verify. response = self.authorized_client.put( '/api/tenantintake/6666/crm_update/?format=json', json.dumps({}), content_type='application/json' ) self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)