class TestTenantFinancialViews(TenantTestCase): """ Console: python manage.py test tenant_customer_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(TestTenantFinancialViews, 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(TestTenantFinancialViews, self).tearDown() def test_residential_customer_upgrade_operation_page(self): customer = Customer.objects.all().first() a_url = self.tenant.reverse( reverse_id='workery_tenant_residential_customer_upgrade_operation', reverse_args=['summary', int(customer.id)]) response = self.auth_c.get(a_url) self.assertEqual(response.status_code, status.HTTP_200_OK)
def setUp(self): super(TestCreateManagementAccountManagementCommand, self).setUp() self.c = TenantClient(self.tenant) call_command('init_app', verbosity=0)
class APIImageUploadWithTenantSchemaTestCase(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(APIImageUploadWithTenantSchemaTestCase, 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) # Above taken from: # http://www.django-rest-framework.org/api-guide/testing/#authenticating # Initialize our test data. ImageUpload.objects.bulk_create([ ImageUpload(owner=self.user), ImageUpload(owner=self.user), ImageUpload(owner=self.user), ]) @transaction.atomic def tearDown(self): """Delete all the images we uploaded for this Test""" ImageUpload.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(APIImageUploadWithTenantSchemaTestCase, self).tearDown() def _create_test_image(self, path): # Create the image. from PIL import Image width = 2 height = 2 img = Image.new('RGB', (width, height)) img.save(path) # Open image. f = open(path, 'rb') return {'imagefile': f} @transaction.atomic def test_to_string(self): # Create a new object with our specific test data. upload = ImageUpload.objects.create( id=2030, owner=self.user, ) upload.save() self.assertEqual(str(upload), "") @transaction.atomic def test_post_with_authenticated_user(self): # Step 1: Set the location variables. url = reverse('tenantimageupload-list') data = self._create_test_image('/tmp/test_upload.png') data['owner'] = self.user.id # Step 2: Perform a "multiform" post using AJAX. response = self.authorized_client.post(url, data, format='multipart') # Step 3: Test & verify. self.assertEqual(response.status_code, status.HTTP_201_CREATED) self.assertIn('created', response.data) @transaction.atomic def test_post(self): # Step 1: Set the location variables. url = reverse('tenantimageupload-list') data = self._create_test_image('/tmp/test_upload.png') # Step 2: Perform a "multiform" post using AJAX. response = self.unauthorized_client.post(url, data, format='multipart') # Step 3: Test & verify. self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) @transaction.atomic def test_list_with_banning(self): # Step 1: Setup variables. url = reverse('tenantimageupload-list') # Step 2: Ban self. BannedIP.objects.create( address='127.0.0.1', reason='For unit testing purposes.' ) # Step 3: Test & verify. response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) @transaction.atomic def test_list_with_authenticated_user(self): # Step 1: Setup variables. url = reverse('tenantimageupload-list') # Step 2: Test & verify. response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.data['count'], 3) @transaction.atomic def test_list(self): # Step 1: Setup variables. url = reverse('tenantimageupload-list') # Step 2: Test & verify. response = self.unauthorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.data['count'], 3) @transaction.atomic def test_get_with_authenticated_user(self): # Step 1: Setup variables. url = reverse('tenantimageupload-list') # Step 2: Test & verify. response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(len(response.data) > 0, True) @transaction.atomic def test_get(self): # Step 1: Setup variables. url = reverse('tenantimageupload-list') # Step 2: Test & verify. response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(len(response.data) > 0, True) @transaction.atomic def test_put_with_authenticated_user(self): # Delete any previous data. uploads = ImageUpload.objects.all() for upload in uploads.all(): upload.delete() # Create a new object with our specific test data. ImageUpload.objects.create(id=1, owner_id=self.user.id,) # Run the test. url = reverse('tenantimageupload-list')+'1/' response = self.authorized_client.put(url, json.dumps({'id': 1, 'owner': self.user.id}), content_type='application/json') self.assertEqual(response.status_code, status.HTTP_200_OK) @transaction.atomic def test_put_with_different_owner(self): # Initialize our test user. user = User.objects.create_user( # Create our user. email='*****@*****.**', username='******', password=TEST_USER_PASSWORD ) user.is_active = True user.save() token = Token.objects.get(user=user) # Perform this unit test. # Step 1: Log in and get the first ImageUpload object. client = TenantClient(self.tenant, HTTP_AUTHORIZATION='Token ' + token.key) # Delete any previous data. uploads = ImageUpload.objects.all() for upload in uploads.all(): upload.delete() # Create a new object with our specific test data. ImageUpload.objects.create(id=1, owner_id=self.user.id,) # Run the test. url = reverse('tenantimageupload-list')+'1/' response = client.put(url, json.dumps({'id': 1, 'owner': user.id }), content_type='application/json') self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) @transaction.atomic def test_put(self): # Step 1: Set the location variables. url = reverse('tenantimageupload-list') data = self._create_test_image('/tmp/test_upload.png') kwargs = {'HTTP_X_REQUESTED_WITH':'XMLHttpRequest'} # Step 2: Perform a "multiform" post using AJAX. response = self.unauthorized_client.put(url,{ 'id': 1, 'imagefile': data, }, **kwargs) self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) @transaction.atomic def test_delete_with_authenticated_user(self): # Step 1: Delete any previous data. uploads = ImageUpload.objects.all() for upload in uploads.all(): upload.delete() # Step 2: Setup variables. ImageUpload.objects.create(id=1, owner_id=self.user.id,) url = reverse('tenantimageupload-list')+'1/' # Step 3: Test & verify. response = self.authorized_client.delete(url) self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT) @transaction.atomic def test_delete_with_different_owner(self): # Step 1: Delete any previous data. uploads = ImageUpload.objects.all() for upload in uploads.all(): upload.delete() # Step 2: Initialize our test user. ImageUpload.objects.create(id=1, owner_id=self.user.id,) user = User.objects.create_user( # Create our user. email='*****@*****.**', username='******', password=TEST_USER_PASSWORD ) user.is_active = True user.save() token = Token.objects.get(user=user) # Step 3: Connect to the server. client = TenantClient(self.tenant, HTTP_AUTHORIZATION='Token ' + token.key) # Step 4: Test & verify. url = reverse('tenantimageupload-list')+'1/' response = client.delete(url) self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) @transaction.atomic def test_delete(self): # Step 1: Setup variables. url = reverse('tenantimageupload-list')+'1/' # Step 2: Test & verify. response = self.unauthorized_client.delete(url) self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) self.assertEqual(len(response.data) > 0, True)
class TestTenantTeamViews(TenantTestCase): """ Console: python manage.py test tenant_team.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(TestTenantTeamViews, self).setUp() # Setup our app and account. call_command('init_app', verbosity=0) call_command('populate_tenant_content', TEST_SCHEMA_NAME, verbosity=0) # Create the account. call_command( 'create_tenant_account', TEST_SCHEMA_NAME, constants.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.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(TestTenantTeamViews, self).tearDown() def test_summary_page(self): response = self.auth_c.get( self.tenant.reverse('workery_tenant_team_summary')) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIn('Staff', str(response.content)) def test_create_confirmation_page(self): response = self.auth_c.get( self.tenant.reverse('workery_tenant_team_confirm_create')) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIn('Add Staff', str(response.content)) def test_create_page(self): response = self.auth_c.get( self.tenant.reverse('workery_tenant_team_create')) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIn('Add Staff', str(response.content)) def test_list_page(self): response = self.auth_c.get( self.tenant.reverse('workery_tenant_team_list')) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIn('Staff List', str(response.content)) def test_search_page(self): response = self.auth_c.get( self.tenant.reverse('workery_tenant_team_search')) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIn('Staff Search', str(response.content)) def test_search_confirmation_page(self): response = self.auth_c.get( self.tenant.reverse('workery_tenant_team_search_results') + '?keyword=' + TEST_USER_EMAIL) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIn('Staff Search', str(response.content)) self.assertIn(TEST_USER_EMAIL, str(response.content)) def test_lite_retrieve_page_with_200(self): staff = Staff.objects.get() a_url = self.tenant.reverse( reverse_id='workery_tenant_team_lite_retrieve', reverse_args=['summary', int(staff.id)]) response = self.auth_c.get(a_url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIn('Staff', str(response.content)) self.assertIn(TEST_USER_EMAIL, str(response.content)) def test_lite_retrieve_page_with_400(self): staff = Staff.objects.get() a_url = self.tenant.reverse( reverse_id='workery_tenant_team_lite_retrieve', reverse_args=['la-la-la-la-la', int(staff.id)]) response = self.auth_c.get(a_url) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) def test_full_retrieve_page_with_200(self): staff = Staff.objects.get() a_url = self.tenant.reverse( reverse_id='workery_tenant_team_full_retrieve', reverse_args=['summary', int(staff.id)]) response = self.auth_c.get(a_url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIn('Staff', str(response.content)) self.assertIn(TEST_USER_EMAIL, str(response.content)) def test_full_retrieve_page_with_400(self): staff = Staff.objects.get() a_url = self.tenant.reverse( reverse_id='workery_tenant_team_full_retrieve', reverse_args=['la-la-la-la-la', int(staff.id)]) response = self.auth_c.get(a_url) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) def test_comments_retrieve_page_with_200(self): staff = Staff.objects.get() a_url = self.tenant.reverse( reverse_id= 'workery_tenant_team_retrieve_for_comment_list_and_create', reverse_args=['summary', int(staff.id)]) response = self.auth_c.get(a_url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIn('Staff', str(response.content)) self.assertIn('Add Comment/Note', str(response.content)) def test_comment_list_and_create_page_with_400(self): staff = Staff.objects.get() a_url = self.tenant.reverse( reverse_id= 'workery_tenant_team_retrieve_for_comment_list_and_create', reverse_args=['la-la-la-la-la', int(staff.id)]) response = self.auth_c.get(a_url) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) def test_uodate_page_with_200(self): staff = Staff.objects.get() a_url = self.tenant.reverse(reverse_id='workery_tenant_team_update', reverse_args=['summary', int(staff.id)]) response = self.auth_c.get(a_url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIn('Staff', str(response.content)) self.assertIn('Edit Staff Member', str(response.content)) def test_update_page_with_400(self): staff = Staff.objects.get() a_url = self.tenant.reverse( reverse_id='workery_tenant_team_update', reverse_args=['la-la-la-la-la', int(staff.id)]) response = self.auth_c.get(a_url) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
class APIFileUploadWithTenantSchemaTestCase(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(APIFileUploadWithTenantSchemaTestCase, 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) FileUpload.objects.bulk_create([ FileUpload(owner=self.user), FileUpload(owner=self.user), FileUpload(owner=self.user), ]) # Above taken from: # http://www.django-rest-framework.org/api-guide/testing/#authenticating @transaction.atomic def tearDown(self): FileUpload.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(APIFileUploadWithTenantSchemaTestCase, self).tearDown() def _create_test_file(self, path): """ Creates a simulated file. Source: https://medium.com/@jxstanford/django-rest-framework-file-upload-e4bc8de669c0#.l8dbmtosq """ f = open(path, 'w') f.write('test123\n') f.close() f = open(path, 'rb') return {'datafile': f} @transaction.atomic def test_to_string(self): # Create a new object with our specific test data. entry = FileUpload.objects.create( id=2030, owner=self.user, ) entry.save() self.assertEqual(str(entry), "") @transaction.atomic def test_post_with_authenticated_user(self): # Step 1: Set the location variables. url = reverse('tenantfileupload-list') data = self._create_test_file('/tmp/test_upload') data['owner'] = self.user.id # Step 2: Perform a "multiform" post using AJAX. response = self.authorized_client.post(url, data, format='multipart') # Step 3: Test & verify. self.assertEqual(response.status_code, status.HTTP_201_CREATED) self.assertIn('created', response.data) @transaction.atomic def test_post(self): # Step 1: Set the location variables. url = reverse('tenantfileupload-list') data = self._create_test_file('/tmp/test_upload') # Step 2: Perform a "multiform" post using AJAX. response = self.unauthorized_client.post(url, data, format='multipart') # Step 3: Test & verify. self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) @transaction.atomic def test_list(self): # Step 1: Set the location variables. url = reverse('tenantfileupload-list') # Step 2: Test & verify. response = self.unauthorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) @transaction.atomic def test_list_with_authentication(self): # Step 1: Set the location variables. url = reverse('tenantfileupload-list') # Step 2: Test & verify. response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) @transaction.atomic def test_list_with_banning(self): # Step 1: Setup variables. url = reverse('tenantfileupload-list') # Step 2: Ban self. BannedIP.objects.create(address='127.0.0.1', reason='For unit testing purposes.') # Step 3: Test & verify. response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) @transaction.atomic def test_put(self): # Delete any previous data. uploads = FileUpload.objects.all() for upload in uploads.all(): upload.delete() # Create a new object with our specific test data. FileUpload.objects.create(id=1, ) # Run the test. url = reverse('tenantfileupload-list') + '1/' response = self.unauthorized_client.put( url, json.dumps({ 'id': 1, }), content_type='application/json') self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) @transaction.atomic def test_put_with_authorization(self): # Delete any previous data. uploads = FileUpload.objects.all() for upload in uploads.all(): upload.delete() # Create a new object with our specific test data. FileUpload.objects.create( id=1, owner_id=self.user.id, ) data = {'id': 1, 'owner': self.user.id} # Run the test. url = reverse('tenantfileupload-list') + '1/' response = self.authorized_client.put(url, json.dumps(data), content_type='application/json') self.assertEqual(response.status_code, status.HTTP_200_OK) @transaction.atomic def test_delete(self): # Step 1: Set the location variables. url = reverse('tenantfileupload-list') + '1/' # Step 2: Test & verify. response = self.unauthorized_client.delete(url) self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) @transaction.atomic def test_delete_with_authentication(self): # Step 1: Delete any previous data. uploads = FileUpload.objects.all() for upload in uploads.all(): upload.delete() # Step 2: Set the location variables. FileUpload.objects.create( id=1, owner_id=self.user.id, ) url = reverse('tenantfileupload-list') + '1/' # Step 3: Test & verify. response = self.authorized_client.delete(url) self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
def setUp(self): translation.activate('en') # Set English super(APICountryAndProvinceViewslWithSchemaTestCase, self).setUp() self.c = TenantClient(self.tenant) call_command('init_app', verbosity=0)
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 })
class TenantWorkspaceModuleTestCases(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) self.module = Module.objects.create(workspace=self.workspace, title="Test Module") @transaction.atomic def tearDown(self): Slide.objects.delete_all() 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_module_master_page(self): pass
def setUp(self): super(TestCreateFranchiseTenantManagementCommand, self).setUp() self.c = TenantClient(self.tenant)
def setUp(self): super().setUp() self.c = TenantClient(self.tenant)
class TestSharedAuthEmailViews(TenantTestCase): """ Class used to test the email views. Console: python manage.py test shared_auth.tests.test_email_views """ def setUp(self): super(TestSharedAuthEmailViews, self).setUp() self.c = TenantClient(self.tenant) call_command('init_app', verbosity=0) call_command( 'create_shared_account', TEST_USER_EMAIL, TEST_USER_PASSWORD, "Bart", "Mika", verbosity=0 ) def tearDown(self): del self.c users = SharedUser.objects.all() for user in users.all(): user.delete() super(TestSharedAuthEmailViews, self).tearDown() def test_reset_password_email_page_with_200(self): me = SharedUser.objects.get(email=TEST_USER_EMAIL) url = reverse('at_reset_password_email', args=[me.pr_access_code]) response = self.c.get(url) self.assertEqual(response.status_code, 200) def test_reset_password_email_page_with_403(self): # CASE 1 of 2: Expired token. me = SharedUser.objects.get(email=TEST_USER_EMAIL) me.pr_expiry_date = timezone.now() + timedelta(days=-500) me.save() url = reverse('at_reset_password_email', args=[me.pr_access_code]) response = self.c.get(url) self.assertEqual(response.status_code, 403) # Case 2 of 2: Missing token. url = reverse('at_reset_password_email', args=[None]) response = self.c.get(url) self.assertEqual(response.status_code, 403) def test_activate_email_page_with_200(self): me = SharedUser.objects.get(email=TEST_USER_EMAIL) url = reverse('at_activate_email', args=[me.pr_access_code]) response = self.c.get(url) self.assertEqual(response.status_code, 200) def test_activate_email_page_with_403(self): # CASE 1 of 2: Expired token. me = SharedUser.objects.get(email=TEST_USER_EMAIL) me.pr_expiry_date = timezone.now() + timedelta(days=-500) me.save() url = reverse('at_activate_email', args=[me.pr_access_code]) response = self.c.get(url) self.assertEqual(response.status_code, 403) # Case 2 of 2: Missing token. url = reverse('at_activate_email', args=[None]) response = self.c.get(url) self.assertEqual(response.status_code, 403)
class SharedFranchiseListAPIViewWithPublicSchemaTestCase( TenantTestCase, TransactionTestCase): """ Console: python manage.py test shared_api.tests.views.test_franchise_list_views """ def setUp(self): translation.activate('en') # Set English SharedUser.objects.delete_all() super(SharedFranchiseListAPIViewWithPublicSchemaTestCase, self).setUp() self.anon_client = TenantClient(self.tenant) call_command('init_app', verbosity=0) # Update the tenant. self.tenant.name = 'Over 55 (London) Inc.', self.tenant.alternate_name = "Over55", self.tenant.description = "Located at the Forks of the Thames in ...", self.tenant.address_country = "CA", self.tenant.address_locality = "London", self.tenant.address_region = "Ontario", self.tenant.post_office_box_number = "", # Post Offic # self.tenant.postal_code = "N6H 1B4", self.tenant.street_address = "78 Riverside Drive", self.tenant.street_address_extra = "", # Extra line. self.tenant.save() # Create our test user. call_command('create_shared_account', TEST_USER_EMAIL, TEST_USER_PASSWORD, "Bart", "Mika", verbosity=0) # Initialize our test data. self.user = SharedUser.objects.get(email=TEST_USER_EMAIL) token, orig_iat = get_jwt_token_and_orig_iat(self.user) self.authorized_client = TenantClient( self.tenant, HTTP_AUTHORIZATION='JWT {0}'.format(token)) self.authorized_client.login(username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD) def tearDown(self): SharedUser.objects.delete_all() del self.anon_client del self.authorized_client super(SharedFranchiseListAPIViewWithPublicSchemaTestCase, self).tearDown() def test_anonymous_get_with_200(self): url = reverse('workery_franchise_list_create_api_endpoint') response = self.anon_client.get(url, data=None, content_type='application/json') self.assertIsNotNone(response) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIn("London", str(response.data)) self.assertIn("Ontario", str(response.data)) def test_anonymous_search_get_with_200_(self): url = reverse('workery_franchise_list_create_api_endpoint' ) + "?format=json&search=London" response = self.anon_client.get(url, data=None, content_type='application/json') self.assertIsNotNone(response) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertIn("London", str(response.data)) self.assertIn("Ontario", str(response.data)) def test_anonymous_post(self): url = reverse('workery_franchise_list_create_api_endpoint') post_data = json.dumps({ "schema_name": "mikasoftware", "postal_code": "n6j4x4", "name": "Mika Software Corporation", "alternate_name": "Mika Software", "description": "An open source software company.", "url": "https://mikasoftware.com", "timezone_name": "America/Toronto", "address_country": "Canada", "address_locality": "London", "address_region": "Ontario", "postal_code": "N6J4X4", "street_address": "120 Centre Street", "street_address_extra": "Unit 102" }) response = self.anon_client.post(url, data=post_data, content_type='application/json') get_worker().work( burst=True ) # Processes all BACKGROUND jobs in FOREGROUND then stop. (Note: https://stackoverflow.com/a/12273705) self.assertIsNotNone(response) self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)
def test_get(self): self.client = TenantClient(self.tenant) response = self.client.get(reverse("management:dashboard")) self.assertEqual(response.status_code, status.HTTP_200_OK)
class TestPortalDashView(BaseTenantTestCase): def test_get(self): self.client = TenantClient(self.tenant) response = self.client.get(reverse("management:dashboard")) self.assertEqual(response.status_code, status.HTTP_200_OK)
class APINoteWithTenantSchemaTestCase(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, first_name=TEST_USER_FIRSTNAME, last_name=TEST_USER_LASTNAME, ) user.is_active = True user.save() @transaction.atomic def setUp(self): translation.activate('en') # Set English. super(APINoteWithTenantSchemaTestCase, 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): Note.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() groups = Group.objects.all() for group in groups.all(): group.delete() # super(APINoteWithTenantSchemaTestCase, self).tearDown() @transaction.atomic def test_list_with_anonymous_user(self): response = self.unauthorized_client.get('/api/tenantnote/') self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) @transaction.atomic def test_list_with_authenticated_management_group_user(self): group = Group.objects.get(id=constants.ORGANIZATION_ADMIN_GROUP_ID) self.user.groups.add(group) response = self.authorized_client.get('/api/tenantnote/') self.assertEqual(response.status_code, status.HTTP_200_OK) @transaction.atomic def test_list_with_authenticated_advisor_group_user(self): group = Group.objects.get(id=constants.ADVISOR_GROUP_ID) self.user.groups.add(group) response = self.authorized_client.get('/api/tenantnote/') self.assertEqual(response.status_code, status.HTTP_200_OK) @transaction.atomic def test_list_with_authenticated_entrepreneur_group_user(self): group = Group.objects.get(id=constants.ENTREPRENEUR_GROUP_ID) self.user.groups.add(group) response = self.authorized_client.get('/api/tenantnote/') self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) @transaction.atomic def test_post_with_anonymous_user(self): data = { 'name': 'Test Note', 'description': 'This is a test note', } response = self.unauthorized_client.post( '/api/tenantnote/', 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): me = Me.objects.create( id=1, owner=self.user, ) group = Group.objects.get(id=constants.ORGANIZATION_ADMIN_GROUP_ID) self.user.groups.add(group) data = { 'name': 'Test Note', 'description': 'This is a test note', 'me': me.id, } response = self.authorized_client.post( '/api/tenantnote/', 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): me = Me.objects.create( id=1, owner=self.user, ) group = Group.objects.get(id=constants.ADVISOR_GROUP_ID) self.user.groups.add(group) data = { 'name': 'Test Note', 'description': 'This is a test note', 'me': me.id, } response = self.authorized_client.post( '/api/tenantnote/', json.dumps(data), content_type='application/json' ) self.assertEqual(response.status_code, status.HTTP_201_CREATED) @transaction.atomic def test_post_with_authenticated_entrepreneur_group_user(self): me = Me.objects.create( id=1, owner=self.user, ) group = Group.objects.get(id=constants.ENTREPRENEUR_GROUP_ID) self.user.groups.add(group) data = { 'name': 'Test Note', 'description': 'This is a test note', 'me': me.id, } response = self.authorized_client.post( '/api/tenantnote/', 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): Note.objects.create( id=1, name='Test Note', description='This is a test note', me = Me.objects.create( id=1, owner=self.user, ), ) data = { 'id': 1, 'name': 'Test Note', 'description': 'This is a test note', 'me': 1, } response = self.unauthorized_client.put( '/api/tenantnote/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_group_user(self): group = Group.objects.get(id=constants.ORGANIZATION_ADMIN_GROUP_ID) self.user.groups.add(group) Note.objects.create( id=1, name='Test Note', description='This is a test note', me = Me.objects.create( id=1, owner=self.user, ), ) data = { 'id': 1, 'name': 'Test Note', 'description': 'This is a test note', 'me': 1, } response = self.authorized_client.put( '/api/tenantnote/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_group_user(self): group = Group.objects.get(id=constants.ADVISOR_GROUP_ID) self.user.groups.add(group) Note.objects.create( id=1, name='Test Note', description='This is a test note', me = Me.objects.create( id=1, owner=self.user, ), ) data = { 'id': 1, 'name': 'Test Note', 'description': 'This is a test note', 'me': 1, } response = self.authorized_client.put( '/api/tenantnote/1/', json.dumps(data), content_type='application/json' ) self.assertEqual(response.status_code, status.HTTP_200_OK) @transaction.atomic def test_put_with_authenticated_entrepreneur_group_user(self): group = Group.objects.get(id=constants.ENTREPRENEUR_GROUP_ID) self.user.groups.add(group) Note.objects.create( id=1, name='Test Note', description='This is a test note', me = Me.objects.create( id=1, owner=self.user, ), ) data = { 'id': 1, 'name': 'Test Note', 'description': 'This is a test note', 'me': 1, } response = self.authorized_client.put( '/api/tenantnote/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/tenantnote/1/') self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) @transaction.atomic def test_delete_with_authenticated_management_user(self): group = Group.objects.get(id=constants.ORGANIZATION_ADMIN_GROUP_ID) self.user.groups.add(group) Note.objects.create( id=1, name='Test Note', description='This is a test note', me = Me.objects.create( id=1, owner=self.user, ), ) response = self.authorized_client.delete('/api/tenantnote/1/') self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT) @transaction.atomic def test_delete_with_authenticated_advisor_user(self): group = Group.objects.get(id=constants.ADVISOR_GROUP_ID) self.user.groups.add(group) Note.objects.create( id=1, name='Test Note', description='This is a test note', me = Me.objects.create( id=1, owner=self.user, ), ) response = self.authorized_client.delete('/api/tenantnote/1/') self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT) @transaction.atomic def test_delete_with_authenticated_entrepreneur_user(self): group = Group.objects.get(id=constants.ENTREPRENEUR_GROUP_ID) self.user.groups.add(group) Note.objects.create( id=1, name='Test Note', description='This is a test note', me = Me.objects.create( id=1, owner=self.user, ), ) response = self.authorized_client.delete('/api/tenantnote/1/') self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
def setUp(self): translation.activate('en') # Set English super(FoundationTenantModelsWithTenantSchemaTestCases, self).setUp() self.c = TenantClient(self.tenant)
def setUp(self): translation.activate('en') # Set English super(APIRegistrationWithPublicSchemaTestCase, self).setUp() self.c = TenantClient(self.tenant)
class APIInfoResourceWithTenantSchemaTestCase(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() group = Group.objects.get(id=constants.ORGANIZATION_ADMIN_GROUP_ID) user.groups.add(group) @transaction.atomic def setUp(self): translation.activate('en') # Set English. super(APIInfoResourceWithTenantSchemaTestCase, 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) InfoResource.objects.bulk_create([ InfoResource(owner=self.user), InfoResource(owner=self.user), InfoResource(owner=self.user), ]) # Above taken from: # http://www.django-rest-framework.org/api-guide/testing/#authenticating @transaction.atomic def tearDown(self): InfoResource.objects.delete_all() PostalAddress.objects.delete_all() ContactPoint.objects.delete_all() InfoResource.objects.delete_all() FileUpload.objects.delete_all() Me.objects.delete_all() users = User.objects.all() for user in users.all(): user.delete() # super(APIInfoResourceWithTenantSchemaTestCase, self).tearDown() @transaction.atomic def test_list(self): response = self.unauthorized_client.get('/api/tenantinforesource/') self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) @transaction.atomic def test_list_with_authentication(self): response = self.authorized_client.get('/api/tenantinforesource/') self.assertEqual(response.status_code, status.HTTP_200_OK) @transaction.atomic def test_post_with_anonymous_user(self): data = { 'name': 'Unit Test', 'description': 'Used for unit testing purposes.', 'owner': self.user.id } response = self.unauthorized_client.post('/api/tenantinforesource/', data, format="json") self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) @transaction.atomic def test_post_with_non_management_user(self): for group in self.user.groups.all(): group.delete() data = { 'name': 'Unit Test', 'description': 'Used for unit testing purposes.', 'owner': self.user.id, 'type_of': constants.INFO_RESOURCE_INTERAL_URL_TYPE, 'url': 'http://smegurus.com' } response = self.authorized_client.post('/api/tenantinforesource/', data, format="json") self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) @transaction.atomic def test_post_with_authentication(self): # CASE 1 OF 5: SUCCESS data = { 'name': 'Unit Test', 'description': 'Used for unit testing purposes.', 'owner': self.user.id, 'type_of': constants.INFO_RESOURCE_INTERAL_URL_TYPE, 'url': 'http://smegurus.com' } response = self.authorized_client.post('/api/tenantinforesource/', data, format="json") self.assertEqual(response.status_code, status.HTTP_201_CREATED) # CASE 2 OF 5: FAILS INTERNAL URL data = { 'name': 'Unit Test', 'description': 'Used for unit testing purposes.', 'owner': self.user.id, 'type_of': constants.INFO_RESOURCE_INTERAL_URL_TYPE, 'url': 'http://hideauze.com' } response = self.authorized_client.post('/api/tenantinforesource/', data, format="json") self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) # CASE 3 OF 5: FAILS EMBEDDED YOUTUBE VIDEO URL data = { 'name': 'Unit Test', 'description': 'Used for unit testing purposes.', 'owner': self.user.id, 'type_of': constants.INFO_RESOURCE_EMBEDDED_YOUTUBE_VIDEO_TYPE, 'url': 'https://youtu.be/sNuvSWwIExk' } response = self.authorized_client.post('/api/tenantinforesource/', data, format="json") self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) # CASE 4 OF 5: FAILS BAD WORD IN NAME. banned_word = BannedWord.objects.create( id=1, text='Hideauze', ) data = { 'name': 'Hideauze', 'description': 'Used for unit testing purposes.', 'owner': self.user.id, 'type_of': constants.INFO_RESOURCE_INTERAL_URL_TYPE, 'url': 'http://smegurus.com' } response = self.authorized_client.post('/api/tenantinforesource/', data, format="json") self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) # CASE 5 OF 5: FAILS BAD WORD IN DESCRIPTION. data = { 'name': 'Unit Test', 'description': 'Hideauze', 'owner': self.user.id, 'type_of': constants.INFO_RESOURCE_INTERAL_URL_TYPE, 'url': 'http://smegurus.com' } response = self.authorized_client.post('/api/tenantinforesource/', data, format="json") self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) banned_word.delete() @transaction.atomic def test_put(self): # Create a new object with our specific test data. InfoResource.objects.create( id=999, name="Unit Test", description="Used for unit testing purposes.") # Run the test. data = { 'id': 999, 'name': 'Unit Test', 'description': 'Used for unit testing purposes.', 'owner': self.user.id } response = self.unauthorized_client.put( '/api/tenantinforesource/999/', json.dumps(data), content_type='application/json') self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) @transaction.atomic def test_put_with_authorization(self): # Create a new object with our specific test data. InfoResource.objects.create( id=666, name="Unit Test", description="Used for unit testing purposes.", owner_id=self.user.id) # Run the test. data = { 'id': 666, 'name': 'Unit Test', 'description': 'Used for unit testing purposes.', 'owner': self.user.id } response = self.authorized_client.put('/api/tenantinforesource/666/', json.dumps(data), content_type='application/json') self.assertEqual(response.status_code, status.HTTP_200_OK) @transaction.atomic def test_delete(self): response = self.unauthorized_client.delete( '/api/tenantinforesource/1/') self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) @transaction.atomic def test_delete_with_authentication(self): info_resource = InfoResource.objects.get(id=1) info_resource.upload = FileUpload.objects.create( id=666, owner=self.user, ) info_resource.save() response = self.authorized_client.delete('/api/tenantinforesource/1/') self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
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 Fees Due Report', 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 APITaskCustomWithTenantSchemaTestCase(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(APITaskCustomWithTenantSchemaTestCase, 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(APITaskCustomWithTenantSchemaTestCase, self).tearDown() @transaction.atomic def test_log_event_with_anonymous_user(self): me = Me.objects.create( id=1, owner=self.user, ) task = Task.objects.create( id=666, assigned_by=me, assignee=me, status=constants.OPEN_TASK_STATUS ) data = { 'id': task.id, 'text': 'Used for unit testing purposes.', 'me': me.id, } response = self.unauthorized_client.put( '/api/tenanttask/666/log_event/?format=json', json.dumps(data), content_type='application/json' ) self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) log_event_count = SortedLogEventByCreated.objects.count() self.assertEqual(log_event_count, 0) self.assertEqual(len(mail.outbox), 0) @transaction.atomic def test_log_event_with_owner_user(self): me = Me.objects.create( id=999, owner=self.user, notify_when_task_had_an_interaction=True, ) task = Task.objects.create( id=666, owner=self.user, assigned_by=me, assignee=me, status=constants.OPEN_TASK_STATUS ) task.participants.add(me) data = { 'id': task.id, 'text': 'Used for unit testing purposes.', 'me': me.id, } response = self.authorized_client.put( '/api/tenanttask/666/log_event/?format=json', json.dumps(data), content_type='application/json' ) self.assertEqual(response.status_code, status.HTTP_200_OK) log_event_count = SortedLogEventByCreated.objects.count() self.assertEqual(log_event_count, 1) self.assertEqual(len(mail.outbox), 1) @transaction.atomic def test_log_event_with_different_owner_user(self): new_user = User.objects.create_user( # Create our user. email='*****@*****.**', username='******', password='******' ) new_user.is_active = True new_user.save() me = Me.objects.create( id=666, owner=new_user, notify_when_task_had_an_interaction=True, ) task = Task.objects.create( id=666, owner=new_user, assigned_by=me, assignee=me, status=constants.OPEN_TASK_STATUS ) task.participants.add(me) data = { 'id': task.id, 'text': 'Used for unit testing purposes.', 'me': me.id, } response = self.authorized_client.put( '/api/tenanttask/666/log_event/?format=json', json.dumps(data), content_type='application/json' ) self.assertEqual(response.status_code, status.HTTP_200_OK) log_event_count = SortedLogEventByCreated.objects.count() self.assertEqual(log_event_count, 1) self.assertEqual(len(mail.outbox), 1) @transaction.atomic def test_post_comment_with_anonymous_user(self): me = Me.objects.create( id=1, owner=self.user, ) task = Task.objects.create( id=666, assigned_by=me, assignee=me, status=constants.OPEN_TASK_STATUS ) data = { 'id': task.id, 'text': 'Used for unit testing purposes.', 'me': me.id, } response = self.unauthorized_client.put( '/api/tenanttask/666/post_comment/?format=json', json.dumps(data), content_type='application/json' ) self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) count = SortedCommentPostByCreated.objects.count() self.assertEqual(count, 0) self.assertEqual(len(mail.outbox), 0) log_event_count = SortedLogEventByCreated.objects.count() self.assertEqual(log_event_count, 0) @transaction.atomic def test_post_comment_with_owner_user(self): me = Me.objects.create( id=999, owner=self.user, notify_when_task_had_an_interaction=True, ) task = Task.objects.create( id=666, owner=self.user, assigned_by=me, assignee=me, status=constants.OPEN_TASK_STATUS ) task.participants.add(me) data = { 'id': task.id, 'text': 'Used for unit testing purposes.', 'me': me.id, } response = self.authorized_client.put( '/api/tenanttask/666/post_comment/?format=json', json.dumps(data), content_type='application/json' ) self.assertEqual(response.status_code, status.HTTP_200_OK) count = SortedCommentPostByCreated.objects.count() self.assertEqual(count, 1) self.assertEqual(len(mail.outbox), 1) log_event_count = SortedLogEventByCreated.objects.count() self.assertEqual(log_event_count, 1) @transaction.atomic def test_post_comment_with_different_owner_user(self): new_user = User.objects.create_user( # Create our user. email='*****@*****.**', username='******', password='******' ) new_user.is_active = True new_user.save() me = Me.objects.create( id=666, owner=new_user, notify_when_task_had_an_interaction=True, ) task = Task.objects.create( id=666, owner=new_user, assigned_by=me, assignee=me, status=constants.OPEN_TASK_STATUS ) task.participants.add(me) data = { 'id': task.id, 'text': 'Used for unit testing purposes.', 'me': me.id, } response = self.authorized_client.put( '/api/tenanttask/666/post_comment/?format=json', json.dumps(data), content_type='application/json' ) self.assertEqual(response.status_code, status.HTTP_200_OK) count = SortedCommentPostByCreated.objects.count() self.assertEqual(count, 1) self.assertEqual(len(mail.outbox), 1) log_event_count = SortedLogEventByCreated.objects.count() self.assertEqual(log_event_count, 1) @transaction.atomic def test_complete_task_with_anonymous_user(self): me = Me.objects.create( id=1, owner=self.user, ) task = Task.objects.create( id=666, assigned_by=me, assignee=me, status=constants.OPEN_TASK_STATUS ) data = { 'id': task.id, 'text': 'Used for unit testing purposes.', 'me': me.id, } response = self.unauthorized_client.put( '/api/tenanttask/666/complete_task/?format=json', json.dumps(data), content_type='application/json' ) self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) count = SortedCommentPostByCreated.objects.count() self.assertEqual(count, 0) self.assertEqual(len(mail.outbox), 0) log_event_count = SortedLogEventByCreated.objects.count() self.assertEqual(log_event_count, 0) task = Task.objects.get(pk=666) self.assertEqual(task.status, constants.OPEN_TASK_STATUS) @transaction.atomic def test_complete_task_with_owner_user(self): me = Me.objects.create( id=999, owner=self.user, notify_when_task_had_an_interaction=True, ) task = Task.objects.create( id=666, owner=self.user, assigned_by=me, assignee=me, status=constants.OPEN_TASK_STATUS, ) task.participants.add(me) data = { 'id': task.id, 'text': 'Used for unit testing purposes.', 'me': me.id, } response = self.authorized_client.put( '/api/tenanttask/666/complete_task/?format=json', json.dumps(data), content_type='application/json' ) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(len(mail.outbox), 1) log_event_count = SortedLogEventByCreated.objects.count() self.assertEqual(log_event_count, 1) task = Task.objects.get(pk=666) self.assertEqual(task.status, constants.CLOSED_TASK_STATUS) @transaction.atomic def test_complete_task_with_different_owner_user(self): new_user = User.objects.create_user( # Create our user. email='*****@*****.**', username='******', password='******' ) new_user.is_active = True new_user.save() me = Me.objects.create( id=666, owner=new_user, notify_when_task_had_an_interaction=True, ) task = Task.objects.create( id=666, owner=new_user, assigned_by=me, assignee=me, status=constants.OPEN_TASK_STATUS ) task.participants.add(me) data = { 'id': task.id, 'text': 'Used for unit testing purposes.', 'me': me.id, } response = self.authorized_client.put( '/api/tenanttask/666/complete_task/?format=json', json.dumps(data), content_type='application/json' ) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(len(mail.outbox), 1) log_event_count = SortedLogEventByCreated.objects.count() self.assertEqual(log_event_count, 1) task = Task.objects.get(pk=666) self.assertEqual(task.status, constants.CLOSED_TASK_STATUS) @transaction.atomic def test_incomplete_task_with_anonymous_user(self): me = Me.objects.create( id=1, owner=self.user, ) task = Task.objects.create( id=666, assigned_by=me, assignee=me, status=constants.OPEN_TASK_STATUS, ) data = { 'id': task.id, 'text': 'Used for unit testing purposes.', 'me': me.id, } response = self.unauthorized_client.put( '/api/tenanttask/666/incomplete_task/?format=json', json.dumps(data), content_type='application/json' ) self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) count = SortedCommentPostByCreated.objects.count() self.assertEqual(count, 0) self.assertEqual(len(mail.outbox), 0) log_event_count = SortedLogEventByCreated.objects.count() self.assertEqual(log_event_count, 0) task = Task.objects.get(pk=666) self.assertEqual(task.status, constants.OPEN_TASK_STATUS) @transaction.atomic def test_incomplete_task_with_owner_user(self): me = Me.objects.create( id=999, owner=self.user, notify_when_task_had_an_interaction=True, ) task = Task.objects.create( id=666, owner=self.user, assigned_by=me, assignee=me, status=constants.OPEN_TASK_STATUS, ) task.participants.add(me) data = { 'id': task.id, 'text': 'Used for unit testing purposes.', 'me': me.id, } response = self.authorized_client.put( '/api/tenanttask/666/incomplete_task/?format=json', json.dumps(data), content_type='application/json' ) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(len(mail.outbox), 1) log_event_count = SortedLogEventByCreated.objects.count() self.assertEqual(log_event_count, 1) task = Task.objects.get(pk=666) self.assertEqual(task.status, constants.INCOMPLETE_TASK_STATUS) @transaction.atomic def test_incomplete_task_with_different_owner_user(self): new_user = User.objects.create_user( # Create our user. email='*****@*****.**', username='******', password='******' ) new_user.is_active = True new_user.save() me = Me.objects.create( id=666, owner=new_user, notify_when_task_had_an_interaction=True, ) task = Task.objects.create( id=666, owner=new_user, assigned_by=me, assignee=me, status=constants.OPEN_TASK_STATUS, ) task.participants.add(me) data = { 'id': task.id, 'text': 'Used for unit testing purposes.', 'me': me.id, } response = self.authorized_client.put( '/api/tenanttask/666/incomplete_task/?format=json', json.dumps(data), content_type='application/json' ) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(len(mail.outbox), 1) log_event_count = SortedLogEventByCreated.objects.count() self.assertEqual(log_event_count, 1) task = Task.objects.get(pk=666) self.assertEqual(task.status, constants.INCOMPLETE_TASK_STATUS) @transaction.atomic def test_set_calendar_event_with_anonymous_user(self): me = Me.objects.create( id=1, owner=self.user, ) task = Task.objects.create( id=666, assigned_by=me, assignee=me, status=constants.OPEN_TASK_STATUS, ) data = { 'datetime': '2016-09-20 18:16:36.687365-04', } response = self.unauthorized_client.put( '/api/tenanttask/666/set_calendar_event/?format=json', json.dumps(data), content_type='application/json' ) self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) @transaction.atomic def test_set_calendar_event_with_owner_user(self): me = Me.objects.create( id=999, owner=self.user, notify_when_task_had_an_interaction=True, ) task = Task.objects.create( id=666, owner=self.user, assigned_by=me, assignee=me, status=constants.OPEN_TASK_STATUS, ) task.participants.add(me) #--------------------# # CASE 1 OF 4: VALID # #--------------------# data = { 'datetime': '2016-09-20 18:16:36.687365-04', } response = self.authorized_client.put( '/api/tenanttask/666/set_calendar_event/?format=json', json.dumps(data), content_type='application/json' ) self.assertEqual(response.status_code, status.HTTP_200_OK) #------------------------# # CASE 2 OF 4: NOT VALID # #------------------------# data = { 'datetime': 'da future yo', } response = self.authorized_client.put( '/api/tenanttask/666/set_calendar_event/?format=json', json.dumps(data), content_type='application/json' ) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) #-------------------------------# # CASE 3 OF 4: MISSING ASSIGNEE # #-------------------------------# task.assignee = None task.save() data = { 'datetime': '2016-09-20 18:16:36.687365-04', } response = self.authorized_client.put( '/api/tenanttask/666/set_calendar_event/?format=json', json.dumps(data), content_type='application/json' ) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) #--------------------------------# # CASE 4 OF 4: VALID WITH DELETE # #--------------------------------# task.assignee = me task.save() data = { 'datetime': '2016-09-20 18:16:36.687365-04', } response = self.authorized_client.put( '/api/tenanttask/666/set_calendar_event/?format=json', json.dumps(data), content_type='application/json' ) self.assertEqual(response.status_code, status.HTTP_200_OK)
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_for_48h_follow_up_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_for_48h_follow_up_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 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, 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(TestSharedAuthWebViews, self).tearDown() def test_get_index_page(self): response = self.anon_c.get(reverse('workery_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('workery_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('workery_login_redirector'), ) self.assertEqual(response.status_code, status.HTTP_302_FOUND)
class TenantProfileTestCases(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(TenantProfileTestCases, 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='Avalon') province = ProvinceOption.objects.create(id=1, name='Colony', country=country) city = CityOption.objects.create(id=1, name='Sector 666', province=province, country=country) self.me = Me.objects.create(owner=self.user, address=PostalAddress.objects.create( id=1, name='Test Address', owner=self.user, street_number='120', street_name='Centre Street', suite_number='102', postal_code='N6J4X4', locality='London', region=region, country=country, )) @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(TenantProfileTestCases, self).tearDown() @transaction.atomic def test_profile_page(self): url = reverse('tenant_profile') response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertTrue(len(response.content) > 1) self.assertIn(b'Profile', response.content) @transaction.atomic def test_profile_settings_page(self): url = reverse('tenant_profile_setting_profile') response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertTrue(len(response.content) > 1) self.assertIn(b'Personal Settings', response.content) @transaction.atomic def test_locked_page(self): """Load up the lock page and verify User is locked afterwards""" # Pre-test to verify the User is NOT locked out. me = Me.objects.get(owner=self.user) self.assertFalse(me.is_locked) # Run our test. url = reverse('tenant_profile_lock') response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertTrue(len(response.content) > 1) # self.assertIn(b'Profile Settings',response.content) # Verfiy our User has been locked out. me = Me.objects.get(owner=self.user) self.assertTrue(me.is_locked) @transaction.atomic def test_tenant_profile_required_decorator_with_redirect(self): """Load up the lock page and verify User is locked afterwards""" # Pre-configure to lock the user out. me = Me.objects.get(owner=self.user) me.is_locked = True me.save() # Run our test. url = reverse('tenant_profile_is_locked') response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_302_FOUND) self.assertRedirects(response, reverse('tenant_profile_lock')) @transaction.atomic def test_tenant_profile_required_decorator_without_redirect(self): """Load up the lock page and verify User is locked afterwards""" # Run our test. url = reverse('tenant_profile_is_locked') response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertTrue(len(response.content) > 1) self.assertIn(b'access-granted', response.content) @transaction.atomic def test_profile_page_with_redirect_on_lockout(self): # Pre-configure to lock the user out. me = Me.objects.get(owner=self.user) me.is_locked = True me.save() # Run our test and verify. url = reverse('tenant_profile') response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_302_FOUND) self.assertRedirects(response, reverse('tenant_profile_lock'))
def setUp(self): super(TestPopulatePublicManagementCommand, self).setUp() self.c = TenantClient(self.tenant)
class TenantReceptionDashboardTestCases(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(TenantReceptionDashboardTestCases, 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(TenantReceptionDashboardTestCases, self).tearDown() @transaction.atomic def test_dashboard_page(self): url = reverse('tenant_reception') response = self.authorized_client.get(url) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertTrue(len(response.content) > 1) self.assertIn(b'Reception',response.content)
class APICalendarEventWithTenantSchemaTestCase(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(APICalendarEventWithTenantSchemaTestCase, 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): CalendarEvent.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(APICalendarEventWithTenantSchemaTestCase, self).tearDown() @transaction.atomic def test_list_with_anonymous_user(self): response = self.unauthorized_client.get('/api/tenantcalendarevent/') 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/tenantcalendarevent/') 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/tenantcalendarevent/') 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/tenantcalendarevent/', 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/tenantcalendarevent/', 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/tenantcalendarevent/', 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. CalendarEvent.objects.create( id=1, name="Unit Test", ) # Run the test. data = { 'id': 1, 'name': 'Unit Test', } response = self.unauthorized_client.put( '/api/tenantcalendarevent/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): # Create a new object with our specific test data. CalendarEvent.objects.create( id=1, name="Unit Test", ) # Run the test. data = { 'id': 1, 'name': 'Unit Test', } response = self.authorized_client.put('/api/tenantcalendarevent/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() # Create a new object with our specific test data. CalendarEvent.objects.create( id=1, name="Unit Test", ) # Run the test. data = { 'id': 1, 'name': 'Unit Test', } response = self.authorized_client.put('/api/tenantcalendarevent/1/', 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): response = self.unauthorized_client.delete( '/api/tenantcalendarevent/1/') self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) @transaction.atomic def test_delete_with_authenticated_management_user(self): # Create a new object with our specific test data. CalendarEvent.objects.create( id=1, name="Unit Test", ) # Test and verify. response = self.authorized_client.delete('/api/tenantcalendarevent/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() # Create a new object with our specific test data. CalendarEvent.objects.create( id=1, name="Unit Test", ) # Run test and verify. response = self.authorized_client.delete('/api/tenantcalendarevent/1/') self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
class APIProvinceOptionOptionWithPublicSchemaTestCase(APITestCase, TenantTestCase): fixtures = [] def setup_tenant(self, tenant): """Tenant 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 @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(APIProvinceOptionOptionWithPublicSchemaTestCase, 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) # Above taken from: # http://www.django-rest-framework.org/api-guide/testing/#authenticating @transaction.atomic def tearDown(self): 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(APIProvinceOptionOptionWithPublicSchemaTestCase, self).tearDown() @transaction.atomic def test_list(self): response = self.unauthorized_client.get('/api/publicprovinceoption/') self.assertEqual(response.status_code, status.HTTP_200_OK) @transaction.atomic def test_list_with_authentication(self): response = self.authorized_client.get('/api/publicprovinceoption/') self.assertEqual(response.status_code, status.HTTP_200_OK) @transaction.atomic def test_post(self): data = { 'name': 'Unit Test', } response = self.unauthorized_client.post( '/api/publicprovinceoption/', json.dumps(data), content_type='application/json') self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) @transaction.atomic def test_post_with_authentication(self): country = CountryOption.objects.create( id=1, name="Unit Test", ) data = {'name': 'Unit Test', 'country': country.id} response = self.authorized_client.post('/api/publicprovinceoption/', json.dumps(data), content_type='application/json') self.assertEqual(response.status_code, status.HTTP_201_CREATED) @transaction.atomic def test_put(self): # Create a new object with our specific test data. country = CountryOption.objects.create( id=1, name="Unit Test", ) ProvinceOption.objects.create( id=1, name="Unit Test", country=country, ) # Run the test. data = {'id': 1, 'name': 'Unit Test', 'country': country.id} response = self.unauthorized_client.put( '/api/publicprovinceoption/1/', json.dumps(data), content_type='application/json') self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) @transaction.atomic def test_put_with_authorization(self): # Create a new object with our specific test data. country = CountryOption.objects.create( id=1, name="Unit Test", ) ProvinceOption.objects.create(id=1, name="Unit Test", country=country) # Run the test. data = {'id': 1, 'name': 'Unit Test', 'country': country.id} response = self.authorized_client.put('/api/publicprovinceoption/1/', json.dumps(data), content_type='application/json') self.assertEqual(response.status_code, status.HTTP_200_OK) @transaction.atomic def test_delete(self): response = self.unauthorized_client.delete( '/api/publicprovinceoption/1/') self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) @transaction.atomic def test_delete_with_authentication(self): country = CountryOption.objects.create( id=1, name="Unit Test", ) ProvinceOption.objects.create( id=1, name="Unit Test", country=country, ) response = self.authorized_client.delete( '/api/publicprovinceoption/1/') self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
def setUpTestData(cls): cls.client = TenantClient(cls.tenant)
def setUp(self): super(TestPopulateTenantContentManagementCommand, self).setUp() self.c = TenantClient(self.tenant) call_command('init_app', verbosity=0)
class APIRegistrationWithPublicSchemaTestCase(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 @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(APIRegistrationWithPublicSchemaTestCase, self).setUp() self.c = TenantClient(self.tenant) @transaction.atomic def tearDown(self): users = User.objects.all() for user in users.all(): user.delete() groups = Group.objects.all() for group in groups.all(): group.delete() super(APIRegistrationWithPublicSchemaTestCase, self).tearDown() @transaction.atomic def test_api_registration_with_success_for_org_admin(self): # Remove the existing user(s) before continuing. self.assertEqual(User.objects.count(), 1) for user in User.objects.all(): user.delete() self.assertEqual(User.objects.count(), 0) # Perform the Unit-Tests url = reverse('api_register') data = { 'username': '******', 'email': '*****@*****.**', 'password': TEST_USER_PASSWORD, 'first_name': 'Transhumanist', 'last_name': '#1' } response = self.c.post(url, data, format='json') # Verify general info. self.assertEqual(response.status_code, status.HTTP_201_CREATED) self.assertEqual(User.objects.count(), 1) self.assertEqual(User.objects.get().email, '*****@*****.**') group = Group.objects.get(id=constants.ORGANIZATION_ADMIN_GROUP_ID) # Verify group membership. is_org_admin = False for a_group in User.objects.get().groups.all(): if a_group == group: is_org_admin = True self.assertEqual(is_org_admin, True) # Test that one message 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, 'Account Activation - SME Gurus for your Organization') @transaction.atomic def test_api_registration_with_failure(self): self.assertEqual(User.objects.count(), 1) url = reverse('api_register') data = { 'username': TEST_USER_USERNAME, 'email': TEST_USER_EMAIL, 'password': TEST_USER_PASSWORD, 'first_name': 'Ledo', 'last_name': 'Clone #123' } response = self.c.post(url, data, format='json') self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) self.assertEqual(User.objects.count(), 1) self.assertEqual(User.objects.get().email, TEST_USER_EMAIL) self.assertEqual(len(mail.outbox), 0) @transaction.atomic def test_api_registration_with_banned_domain(self): # Create our Banned Domain BannedDomain.objects.create( name='hideauze.com', reason='They are enemies of humankind!', ) # Remove the existing user(s) before continuing. self.assertEqual(User.objects.count(), 1) for user in User.objects.all(): user.delete() self.assertEqual(User.objects.count(), 0) # Perform the Unit-Tests url = reverse('api_register') data = { 'username': '******', 'email': '*****@*****.**', 'password': TEST_USER_PASSWORD, 'first_name': 'Transhumanist', 'last_name': '#1' } response = self.c.post(url, data, format='json') # Verify general info. self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) self.assertEqual(User.objects.count(), 0) self.assertEqual(len(mail.outbox), 0)
class TenantTaskTestCases(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(TenantTaskTestCases, 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() # Must be above Tasks. ContactPoint.objects.delete_all() # Must be above Tasks. 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(TenantTaskTestCases, self).tearDown() @transaction.atomic def test_task_master_page_with_empty(self): url = reverse('tenant_task_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'Tasks', response.content) @transaction.atomic def test_task_master_page_with_data(self): me = Me.objects.create( id=999, owner=self.user, notify_when_task_had_an_interaction=True, ) task = Task.objects.create(id=666, owner=self.user, assigned_by=me, assignee=me, status=constants.OPEN_TASK_STATUS) task.participants.add(me) url = reverse('tenant_task_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'Tasks', response.content) @transaction.atomic def test_task_edit_details_page_with_404(self): url = reverse('tenant_task_details_edit', 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_task_edit_details_page(self): me = Me.objects.create( id=999, owner=self.user, notify_when_task_had_an_interaction=True, ) task = Task.objects.create(id=666, owner=self.user, assigned_by=me, assignee=me, status=constants.OPEN_TASK_STATUS) task.participants.add(me) url = reverse('tenant_task_details_edit', 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'Tasks', response.content)
def setUp(self): super(TestHomeViews, self).setUp() self.c = TenantClient(self.tenant)