Пример #1
0
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)
Пример #2
0
 def setUp(self):
     super(TestCreateManagementAccountManagementCommand, self).setUp()
     self.c = TenantClient(self.tenant)
     call_command('init_app', verbosity=0)
Пример #3
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)
Пример #4
0
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)
Пример #6
0
 def setUp(self):
     translation.activate('en')  # Set English
     super(APICountryAndProvinceViewslWithSchemaTestCase, self).setUp()
     self.c = TenantClient(self.tenant)
     call_command('init_app', verbosity=0)
Пример #7
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
            })
Пример #8
0
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
Пример #9
0
 def setUp(self):
     super(TestCreateFranchiseTenantManagementCommand, self).setUp()
     self.c = TenantClient(self.tenant)
Пример #10
0
 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)
Пример #12
0
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)
Пример #13
0
 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)
Пример #14
0
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)
Пример #15
0
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)
Пример #19
0
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)
Пример #21
0
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)
Пример #22
0
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)
Пример #23
0
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'))
Пример #24
0
 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)
Пример #28
0
 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)
Пример #31
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)
Пример #32
0
 def setUp(self):
     super(TestHomeViews, self).setUp()
     self.c = TenantClient(self.tenant)