Beispiel #1
0
class TestTenantDashboardViews(TenantTestCase):
    """
    Console:
    python manage.py test tenant_dashboard.tests.test_web_views
    """

    @classmethod
    def setUpClass(cls):
        """
        Run at the beginning before all the unit tests run.
        """
        super().setUpClass()

    def setUp(self):
        """
        Run at the beginning of every unit test.
        """
        super(TestTenantDashboardViews, self).setUp()

        # Setup our app and account.
        call_command('init_app', verbosity=0)
        call_command(
           'create_shared_account',
           TEST_USER_EMAIL,
           TEST_USER_PASSWORD,
           "Bart",
           "Mika",
           verbosity=0
        )

        # Get user and credentials.
        user = SharedUser.objects.get()
        token, orig_iat = get_jwt_token_and_orig_iat(user)

        # Setup our clients.
        self.anon_c = TenantClient(self.tenant)
        self.auth_c = TenantClient(self.tenant, HTTP_AUTHORIZATION='JWT {0}'.format(token))
        self.auth_c.login(
            username=TEST_USER_USERNAME,
            password=TEST_USER_PASSWORD
        )

    def tearDown(self):
        """
        Run at the end of every unit test.
        """
        # Delete previous data.
        SharedUser.objects.all().delete()

        # Delete our clients.
        del self.anon_c
        del self.auth_c

        # Finish teardown.
        super(TestTenantDashboardViews, self).tearDown()

    def test_master_page(self):
        response = self.auth_c.get(self.tenant.reverse('workery_tenant_dashboard_master'))
        self.assertEqual(response.status_code, 200)
        self.assertIn('Dashboard', str(response.content))
Beispiel #2
0
class LoggedInTestCase(FastTenantTestCase):
    @classmethod
    def setup_tenant(cls, tenant):
        tenant.owner = UserFactory()
        tenant.owner.set_password('password')
        tenant.owner.save()

    @classmethod
    def setUpClass(cls):
        super().setUpClass()

        # authorize tenant owner
        cls.tenant.authorized_users.add(cls.tenant.owner)

        cls.tester = UserFactory()
        cls.tester.set_password('password')
        cls.tester.save()

        # authorize this user
        cls.tenant.authorized_users.add(cls.tester)

    def setUp(self):
        super().setUp()

        self.client = TenantClient(self.tenant)
        self.client.login(username=self.tester.username,  # nosec:B106:hardcoded_password_funcarg
                          password='******')
Beispiel #3
0
class TestUsernames(TenantTestCase):
    def setUp(self):
        super().setUp()
        self.client = TenantClient(self.tenant)
        for i in range(5):
            user = get_user_model().objects.create(
                **{get_user_model().USERNAME_FIELD: f"user{i}"})
            user.set_password("dummypassword")
            user.save()

    def test_users_list_view(self):
        logged_in = self.client.login(**{
            get_user_model().USERNAME_FIELD: "user0",
            'password': "******"
        })
        found = resolve(reverse('django_chatter:users_list'))
        self.assertEqual(found.func, users_list)
        response = self.client.get(reverse('django_chatter:users_list'),
                                   HTTP_X_REQUESTED_WITH='XMLHttpRequest')
        json_array = []
        for user in get_user_model().objects.all():
            dict = {}
            dict["id"] = user.pk
            dict["text"] = user.get_username()
            json_array.append(dict)
        self.assertEqual(response.status_code, 200)
        self.assertEqual(str(response.content, encoding='utf-8'),
                         json.dumps(json_array))
class TestMessagesFetch(TenantTestCase):
    def setUp(self):
        super().setUp()
        self.client = TenantClient(self.tenant)
        user = get_user_model().objects.create(username="******")
        user.set_password('dummypassword')
        user.save()
        room = Room.objects.create()
        room.members.add(user)
        for i in range(25):
            Message.objects.create(sender=user, room=room, text=f"Message {i}")

    def test_pagination(self):
        logged_in = self.client.login(username="******", password="******")
        assert logged_in
        room_uuid = str(Room.objects.all()[0].id)
        messages = Message.objects.all()[:20]
        messages_array = []
        for message in messages:
            dict = {}
            dict['sender'] = message.sender.username
            dict['message'] = message.text
            dict['received_room_id'] = room_uuid
            dict['date_created'] = message.date_created.strftime(
                "%d %b %Y %H:%M:%S %Z")
            messages_array.append(dict)

        response = self.client.get(f'/ajax/get-messages/{room_uuid}/?page=1',
                                   HTTP_X_REQUESTED_WITH='XMLHttpRequest')
        content = json.loads(response.content)

        self.assertEqual(content, messages_array)

        # Check second page
        messages = Message.objects.all()[20:]
        messages_array = []
        for message in messages:
            dict = {}
            dict['sender'] = message.sender.username
            dict['message'] = message.text
            dict['received_room_id'] = room_uuid
            dict['date_created'] = message.date_created.strftime(
                "%d %b %Y %H:%M:%S %Z")
            messages_array.append(dict)

        response = self.client.get(f'/ajax/get-messages/{room_uuid}/?page=2',
                                   HTTP_X_REQUESTED_WITH='XMLHttpRequest')
        content = json.loads(response.content)

        self.assertEqual(content, messages_array)

        response = self.client.get(f'/ajax/get-messages/{room_uuid}/?page=3',
                                   HTTP_X_REQUESTED_WITH='XMLHttpRequest')

        content = json.loads(response.content)

        self.assertEqual(content, [])
Beispiel #5
0
class LoggedInTestCase(FastTenantTestCase):
    @classmethod
    def get_test_schema_name(cls):
        return 'fast'

    @classmethod
    def get_test_tenant_domain(cls):
        return 'tenant.fast-test.com'

    @classmethod
    def setup_tenant(cls, tenant):
        tenant.publicly_readable = False
        tenant.owner = UserFactory()
        tenant.owner.set_password('password')
        tenant.owner.save()

    @classmethod
    def setUpClass(cls):
        super().setUpClass()

        # authorize tenant owner
        cls.tenant.authorized_users.add(cls.tenant.owner)

        cls.tester = UserFactory()
        cls.tester.set_password('password')
        cls.tester.save()

        # authorize this user
        cls.tenant.authorized_users.add(cls.tester)

        # initial data
        with tenant_context(cls.tenant):
            cls.test_plan_by_owner = TestPlanFactory(author=cls.tenant.owner)

    def setUp(self):
        super().setUp()

        self.client = TenantClient(self.tenant)
        self.client.login(
            username=self.tester.
            username,  # nosec:B106:hardcoded_password_funcarg
            password='******')
Beispiel #6
0
class TestIndexView(TenantTestCase):

    def setUp(self):
        super().setUp()
        self.client = TenantClient(self.tenant)
        user = get_user_model().objects.create(username="******")
        user.set_password('dummypassword')
        user.save()
        room = Room.objects.create()
        room.members.add(user)
        message_1 = Message.objects.create(
            sender=user,
            text="first message",
            room=room
        )
        message_2 = Message.objects.create(
            sender=user,
            text="last message",
            room=room
        )

    def test_chat_render_view(self):
        logged_in = self.client.login(username="******", password="******")
        found = resolve(reverse('django_chatter:index'))
        self.assertEqual(
            type(found.func), type(IndexView.as_view())
        )
        response = self.client.get(reverse('django_chatter:index'), follow=True)
        self.assertEqual(response.status_code, 200)
        room = Room.objects.all()[0]
        room_url = f"/chat/{room.id}/"
        message = Message.objects.all()[0]

        self.assertEqual(response.redirect_chain[0][0], room_url)

        self.assertEqual(str(room.id), response.context['room_uuid_json'])
        self.assertEqual(
            str(response.context['latest_messages_curr_room']),
            str(Message.objects.all())
        )
        self.assertEqual(response.context['room_name'], 'Notes to Yourself')
        self.assertTemplateUsed(response, 'django_chatter/base.html')
        self.assertTemplateUsed(response, 'django_chatter/chat-window.html')
        self.assertTemplateUsed(response, 'django_chatter/chatroom-list.html')

        self.assertQuerysetEqual(
            response.context['rooms_with_unread'],
            Room.objects.none()
        )
    def test_tenantmemiddleware_with_authenticated_user_in_tenant_schema(self):
        # Verify that no "Me" objects are created.
        self.assertEqual(Me.objects.all().count(), 0)

        # Create our User and run our test.
        user = User.objects.create_user(  # Create our User.
            email=TEST_USER_EMAIL,
            username=TEST_USER_USERNAME,
            password=TEST_USER_PASSWORD,
            first_name=TEST_USER_FIRSTNAME,
            last_name=TEST_USER_LASTNAME,
        )
        user.is_active = True
        user.save()
        token = Token.objects.get(user=user)
        client = TenantClient(self.tenant,
                              HTTP_AUTHORIZATION='Token ' + token.key)
        client.login(username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD)
        response = client.get(reverse('public_home'))
        self.assertEqual(response.status_code, 200)

        # Verify
        me = Me.objects.get_by_owner_or_none(owner=user)
        self.assertIsNotNone(me)
    def test_authenticate_with_success(self):
        # Setup
        email = self.user.email.lower(
        )  # Emails should be case-insensitive unique
        converted = email.encode(
            'utf8', 'ignore')  # Deal with internationalized email addresses
        self.user.username = base64.urlsafe_b64encode(
            hashlib.sha256(converted).digest())[:30]
        self.user.save()

        # Test
        token = Token.objects.get(user__email=TEST_USER_EMAIL)
        authorized_client = TenantClient(self.tenant,
                                         HTTP_AUTHORIZATION='Token ' +
                                         token.key)
        authenticated_user = authorized_client.login(
            username=TEST_USER_EMAIL, password=TEST_USER_PASSWORD)
        self.assertTrue(authenticated_user)
class TenantIntakeEntrepreneurTestCases(APITestCase, TenantTestCase):
    fixtures = []

    def setup_tenant(self, tenant):
        """Tenant Schema"""
        tenant.schema_name = 'galacticalliance'
        tenant.name = "Galactic Alliance of Humankind"
        tenant.is_setup = True
        tenant.has_perks = True
        tenant.has_mentors = True
        tenant.how_discovered = "Command HQ"
        tenant.how_many_served = 1

    @classmethod
    def setUpTestData(cls):
        Group.objects.bulk_create([
            Group(
                id=constants.ENTREPRENEUR_GROUP_ID,
                name="Entreprenuer",
            ),
            Group(
                id=constants.MENTOR_GROUP_ID,
                name="Mentor",
            ),
            Group(
                id=constants.ADVISOR_GROUP_ID,
                name="Advisor",
            ),
            Group(
                id=constants.ORGANIZATION_MANAGER_GROUP_ID,
                name="Org Manager",
            ),
            Group(
                id=constants.ORGANIZATION_ADMIN_GROUP_ID,
                name="Org Admin",
            ),
            Group(
                id=constants.CLIENT_MANAGER_GROUP_ID,
                name="Client Manager",
            ),
            Group(
                id=constants.SYSTEM_ADMIN_GROUP_ID,
                name="System Admin",
            ),
        ])
        User.objects.bulk_create([
            User(
                email='*****@*****.**',
                username='******',
                password='******',
                is_active=True,
            ),
            User(
                email='*****@*****.**',
                username='******',
                password='******',
                is_active=True,
            ),
            User(
                email='*****@*****.**',
                username='******',
                password='******',
                is_active=True,
            ),
            User(
                email='*****@*****.**',
                username='******',
                password='******',
                is_active=True,
            ),
            User(
                email='*****@*****.**',
                username='******',
                password='******',
                is_active=True,
            ),
            User(
                email='*****@*****.**',
                username='******',
                password='******',
                is_active=True,
            ),
            User(
                email='*****@*****.**',
                username='******',
                password='******',
                is_active=True,
            ),
            User(
                email='*****@*****.**',
                username='******',
                password='******',
                is_active=True,
            ),
            User(
                email='*****@*****.**',
                username='******',
                password='******',
                is_active=True,
            ),
        ])
        user = User.objects.create_user(  # Create our User.
            email=TEST_USER_EMAIL,
            username=TEST_USER_USERNAME,
            password=TEST_USER_PASSWORD)
        user.is_active = True
        user.save()

    @transaction.atomic
    def setUp(self):
        translation.activate('en')  # Set English
        super(TenantIntakeEntrepreneurTestCases, self).setUp()
        # Initialize our test data.
        self.user = User.objects.get(username=TEST_USER_USERNAME)
        token = Token.objects.get(user=self.user)

        # Setup.
        self.unauthorized_client = TenantClient(self.tenant)
        self.authorized_client = TenantClient(self.tenant,
                                              HTTP_AUTHORIZATION='Token ' +
                                              token.key)
        self.authorized_client.login(username=TEST_USER_USERNAME,
                                     password=TEST_USER_PASSWORD)

        # Update Organization.
        self.tenant.users.add(self.user)
        self.tenant.save()

        # Setup User.
        country = CountryOption.objects.create(id=1, name='Avalan')
        province = ProvinceOption.objects.create(id=1,
                                                 name='Colony 01',
                                                 country=country)
        city = CityOption.objects.create(
            id=1,
            name='Megazone 23',
            province=province,
            country=country,
        )
        self.me = Me.objects.create(
            owner=self.user,
            address=PostalAddress.objects.create(
                country=CountryOption.objects.get(id=1),
                region=ProvinceOption.objects.get(id=1),
                locality=CityOption.objects.get(id=1),
                owner=self.user))

        # Make the User belong to the Entrepreneur group.
        entrepreneur_group = Group.objects.get(
            id=constants.ENTREPRENEUR_GROUP_ID)
        self.user.groups.add(entrepreneur_group)
        self.user.save()

        # Create the Intake object.
        intake = Intake.objects.create(me=self.me,
                                       status=constants.CREATED_STATUS)

    @transaction.atomic
    def tearDown(self):
        PostalAddress.objects.delete_all()
        ContactPoint.objects.delete_all()
        Me.objects.delete_all()
        users = User.objects.all()
        for user in users.all():
            user.delete()
        items = Group.objects.all()
        for item in items.all():
            item.delete()
        # super(TenantIntakeEntrepreneurTestCases, self).tearDown()

    @transaction.atomic
    def test_intake_page_with_employee_user(self):
        entrepreneur_group = Group.objects.get(
            id=constants.ENTREPRENEUR_GROUP_ID)
        self.user.groups.remove(entrepreneur_group)
        self.user.save()

        url = reverse('tenant_intake_entr_round_one_step_one')
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)

    @transaction.atomic
    def test_intake_round_one_page_one_with_entrepreneur_user(self):
        url = reverse('tenant_intake_entr_round_one_step_one')
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertTrue(len(response.content) > 1)
        #self.assertIn(b'Rewards',response.content)

    @transaction.atomic
    def test_intake_round_one_page_two_with_entrepreneur_user(self):
        url = reverse('tenant_intake_entr_round_one_step_two')
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertTrue(len(response.content) > 1)
        #self.assertIn(b'Rewards',response.content)

    @transaction.atomic
    def test_intake_round_one_page_three_with_entrepreneur_user(self):
        url = reverse('tenant_intake_entr_round_one_step_three')
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertTrue(len(response.content) > 1)
        #self.assertIn(b'Rewards',response.content)

    @transaction.atomic
    def test_intake_round_one_page_four_with_entrepreneur_user(self):
        url = reverse('tenant_intake_entr_round_one_step_four')
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertTrue(len(response.content) > 1)
        #self.assertIn(b'Rewards',response.content)

    @transaction.atomic
    def test_intake_round_one_page_five_with_entrepreneur_user(self):
        url = reverse('tenant_intake_entr_round_one_step_five')
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertTrue(len(response.content) > 1)
        #self.assertIn(b'Rewards',response.content)

    @transaction.atomic
    def test_intake_round_one_page_six_with_entrepreneur_user(self):
        url = reverse('tenant_intake_entr_round_one_step_six')
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertTrue(len(response.content) > 1)
        #self.assertIn(b'Rewards',response.content)

    @transaction.atomic
    def test_intake_round_two_page_one_with_entrepreneur_user(self):
        url = reverse('tenant_intake_entr_round_two_step_one')
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertTrue(len(response.content) > 1)
        #self.assertIn(b'Rewards',response.content)

    @transaction.atomic
    def test_intake_round_two_page_two_with_entrepreneur_user(self):
        url = reverse('tenant_intake_entr_round_two_step_two')
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertTrue(len(response.content) > 1)
        #self.assertIn(b'Rewards',response.content)

    @transaction.atomic
    def test_intake_round_two_page_three_with_entrepreneur_user(self):
        url = reverse('tenant_intake_entr_round_two_step_three')
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertTrue(len(response.content) > 1)
        #self.assertIn(b'Rewards',response.content)

    @transaction.atomic
    def test_intake_round_two_page_four_with_entrepreneur_user(self):
        url = reverse('tenant_intake_entr_round_two_step_four')
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertTrue(len(response.content) > 1)
        #self.assertIn(b'Rewards',response.content)

    @transaction.atomic
    def test_intake_round_two_page_five_with_entrepreneur_user(self):
        url = reverse('tenant_intake_entr_round_two_step_five')
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertTrue(len(response.content) > 1)
        #self.assertIn(b'Rewards',response.content)

    @transaction.atomic
    def test_intake_finished_page_with_entrepreneur_user(self):
        url = reverse('tenant_intake_finished')
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertTrue(len(response.content) > 1)
Beispiel #10
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_and_complete_create',
            reverse_args=[int(obj.id)])
        response = self.exec_auth_c.get(a_url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertIn('Task', str(response.content))

    def test_pending_task_retrieve_and_complete_page_with_closed_task(self):
        obj = TaskItem.objects.get()
        obj.is_closed = True
        obj.save()
        a_url = self.tenant.reverse(
            reverse_id=
            'workery_tenant_pending_task_retrieve_and_complete_create',
            reverse_args=[int(obj.id)])
        response = self.exec_auth_c.get(a_url)
        self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)

    def test_pending_task_retrieve_and_ongoing_update_page(self):
        obj = TaskItem.objects.get()
        a_url = self.tenant.reverse(
            reverse_id=
            'workery_tenant_pending_task_retrieve_and_ongoing_update_create',
            reverse_args=[int(obj.id)])
        response = self.exec_auth_c.get(a_url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertIn('Task', str(response.content))

    def test_search_page(self):
        response = self.exec_auth_c.get(
            self.tenant.reverse('workery_tenant_task_search', ['pending']))
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertIn('Search', str(response.content))

    def test_search_confirmation_page(self):
        response = self.exec_auth_c.get(
            self.tenant.reverse('workery_tenant_task_search_results',
                                ['pending']) + '?keyword=' + TEST_USER_EMAIL)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertIn('Search', str(response.content))

    def test_search_confirmation_page_with_wrong_template(self):
        response = self.exec_auth_c.get(
            self.tenant.reverse('workery_tenant_task_search_results',
                                ['la-la-la-la-la']) + '?keyword=' +
            TEST_USER_EMAIL)
        self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
Beispiel #11
0
class TenantReceptionResourceTestCases(APITestCase, TenantTestCase):
    fixtures = []

    def setup_tenant(self, tenant):
        """Tenant Schema"""
        tenant.schema_name = 'galacticalliance'
        tenant.name = "Galactic Alliance of Humankind"
        tenant.is_setup = True
        tenant.has_perks = True
        tenant.has_mentors = True
        tenant.how_discovered = "Command HQ"
        tenant.how_many_served = 1

    @classmethod
    def setUpTestData(cls):
        Group.objects.bulk_create([
            Group(
                id=constants.ENTREPRENEUR_GROUP_ID,
                name="Entreprenuer",
            ),
            Group(
                id=constants.MENTOR_GROUP_ID,
                name="Mentor",
            ),
            Group(
                id=constants.ADVISOR_GROUP_ID,
                name="Advisor",
            ),
            Group(
                id=constants.ORGANIZATION_MANAGER_GROUP_ID,
                name="Org Manager",
            ),
            Group(
                id=constants.ORGANIZATION_ADMIN_GROUP_ID,
                name="Org Admin",
            ),
            Group(
                id=constants.CLIENT_MANAGER_GROUP_ID,
                name="Client Manager",
            ),
            Group(
                id=constants.SYSTEM_ADMIN_GROUP_ID,
                name="System Admin",
            ),
        ])
        User.objects.bulk_create([
            User(
                email='*****@*****.**',
                username='******',
                password='******',
                is_active=True,
            ),
            User(
                email='*****@*****.**',
                username='******',
                password='******',
                is_active=True,
            ),
            User(
                email='*****@*****.**',
                username='******',
                password='******',
                is_active=True,
            ),
            User(
                email='*****@*****.**',
                username='******',
                password='******',
                is_active=True,
            ),
            User(
                email='*****@*****.**',
                username='******',
                password='******',
                is_active=True,
            ),
            User(
                email='*****@*****.**',
                username='******',
                password='******',
                is_active=True,
            ),
            User(
                email='*****@*****.**',
                username='******',
                password='******',
                is_active=True,
            ),
            User(
                email='*****@*****.**',
                username='******',
                password='******',
                is_active=True,
            ),
            User(
                email='*****@*****.**',
                username='******',
                password='******',
                is_active=True,
            ),
        ])
        user = User.objects.create_user(  # Create our User.
            email=TEST_USER_EMAIL,
            username=TEST_USER_USERNAME,
            password=TEST_USER_PASSWORD)
        user.is_active = True
        user.save()

    @transaction.atomic
    def setUp(self):
        translation.activate('en')  # Set English
        super(TenantReceptionResourceTestCases, self).setUp()
        # Initialize our test data.
        self.user = User.objects.get(username=TEST_USER_USERNAME)
        token = Token.objects.get(user=self.user)

        # Setup.
        self.unauthorized_client = TenantClient(self.tenant)
        self.authorized_client = TenantClient(self.tenant,
                                              HTTP_AUTHORIZATION='Token ' +
                                              token.key)
        self.authorized_client.login(username=TEST_USER_USERNAME,
                                     password=TEST_USER_PASSWORD)

        # Update Organization.
        self.tenant.users.add(self.user)
        self.tenant.save()

        # Setup User.
        self.me = Me.objects.create(
            id=666,
            owner=self.user,
            notify_when_task_had_an_interaction=True,
        )

    @transaction.atomic
    def tearDown(self):
        PostalAddress.objects.delete_all()
        ContactPoint.objects.delete_all()
        InfoResource.objects.delete_all()
        SortedLogEventByCreated.objects.delete_all()
        SortedCommentPostByCreated.objects.delete_all()
        Me.objects.delete_all()
        users = User.objects.all()
        for user in users.all():
            user.delete()
        # super(TenantReceptionResourceTestCases, self).tearDown()

    @transaction.atomic
    def test_resource_master_page(self):
        url = reverse('tenant_reception_resource_master')
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertTrue(len(response.content) > 1)
        self.assertIn(b'Resource', response.content)

    @transaction.atomic
    def test_resource_details_page(self):
        info = InfoResource.objects.create(
            id=666,
            owner=self.user,
            name="Test",
            description="Testing",
            url="https://mikasoftware.com",
            type_of=constants.INFO_RESOURCE_EXTERNAL_URL_TYPE)
        url = reverse('tenant_reception_resource_details', args=[
            info.id,
        ])
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertTrue(len(response.content) > 1)
        self.assertIn(b'Resource', response.content)
Beispiel #12
0
class FoundationEmailViewsWithTenatSchemaTestCases(APITestCase,
                                                   TenantTestCase):
    fixtures = []

    def setup_tenant(self, tenant):
        """Tenant Schema"""
        tenant.schema_name = 'galacticalliance'
        tenant.name = "Galactic Alliance of Humankind"
        tenant.has_perks = True
        tenant.has_mentors = True
        tenant.how_discovered = "Command HQ"
        tenant.how_many_served = 1

    @classmethod
    def setUpTestData(cls):
        Group.objects.bulk_create([
            Group(
                id=constants.ENTREPRENEUR_GROUP_ID,
                name="Entreprenuer",
            ),
            Group(
                id=constants.MENTOR_GROUP_ID,
                name="Mentor",
            ),
            Group(
                id=constants.ADVISOR_GROUP_ID,
                name="Advisor",
            ),
            Group(
                id=constants.ORGANIZATION_MANAGER_GROUP_ID,
                name="Org Manager",
            ),
            Group(
                id=constants.ORGANIZATION_ADMIN_GROUP_ID,
                name="Org Admin",
            ),
            Group(
                id=constants.CLIENT_MANAGER_GROUP_ID,
                name="Client Manager",
            ),
            Group(
                id=constants.SYSTEM_ADMIN_GROUP_ID,
                name="System Admin",
            ),
        ])

        user = User.objects.create_user(  # Create our User.
            email=TEST_USER_EMAIL,
            username=TEST_USER_USERNAME,
            password=TEST_USER_PASSWORD)
        user.is_active = True
        user.save()

    @transaction.atomic
    def setUp(self):
        translation.activate('en')  # Set English
        super(FoundationEmailViewsWithTenatSchemaTestCases, self).setUp()

        # Initialize our test data.
        self.user = User.objects.get()
        token = Token.objects.get(user__username=TEST_USER_USERNAME)

        # Setup.
        self.unauthorized_client = TenantClient(self.tenant)
        self.authorized_client = TenantClient(self.tenant,
                                              HTTP_AUTHORIZATION='Token ' +
                                              token.key)
        self.authorized_client.login(username=TEST_USER_USERNAME,
                                     password=TEST_USER_PASSWORD)

        # Update Organization.
        self.tenant.users.add(self.user)
        self.tenant.save()

    @transaction.atomic
    def tearDown(self):
        SortedLogEventByCreated.objects.delete_all()
        SortedCommentPostByCreated.objects.delete_all()
        Task.objects.delete_all()
        Message.objects.delete_all()
        Intake.objects.delete_all()
        Note.objects.delete_all()
        PostalAddress.objects.delete_all()
        ContactPoint.objects.delete_all()
        Me.objects.delete_all()
        items = User.objects.all()
        for item in items.all():
            item.delete()
        items = Group.objects.all()
        for item in items.all():
            item.delete()
        # super(FoundationEmailViewsWithTenatSchemaTestCases, self).tearDown()

    @transaction.atomic
    def test_pending_intake_with_anonymous_user(self):
        url = reverse('foundation_email_pending_intake', args=[
            666,
        ])
        response = self.unauthorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_302_FOUND)
        self.assertRedirects(
            response,
            'http://galacticalliance.example.com/en/login?next=/en/email/intake/pending/666/'
        )

    @transaction.atomic
    def test_pending_intake_with_admin_user(self):
        target_group = Group.objects.get(
            id=constants.ORGANIZATION_ADMIN_GROUP_ID)
        self.user.groups.add(target_group)
        me = Me.objects.create(
            id=1,
            owner=self.user,
        )
        intake = Intake.objects.create(
            id=1,
            me=me,
            judgement_note=Note.objects.create(
                id=1,
                me=me,
                name="Space Citizen\'s Newsletter",
                description="Hail, citizen of the Galactic Alliance ...",
            ))
        url = reverse('foundation_email_pending_intake', args=[
            intake.id,
        ])
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertTrue(len(response.content) > 1)
        self.assertIn(
            b'A new Entrepreneur has completed the intake application.',
            response.content)

    @transaction.atomic
    def test_pending_intake_with_non_admin_user(self):
        target_group = Group.objects.get(id=constants.ENTREPRENEUR_GROUP_ID)
        self.user.groups.add(target_group)
        me = Me.objects.create(
            id=1,
            owner=self.user,
        )
        intake = Intake.objects.create(
            id=1,
            me=me,
            judgement_note=Note.objects.create(
                id=1,
                me=me,
                name="Space Citizen\'s Newsletter",
                description="Hail, citizen of the Galactic Alliance ...",
            ))
        url = reverse('foundation_email_pending_intake', args=[
            intake.id,
        ])
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertIn(b'403', response.content)

    @transaction.atomic
    def test_approved_intake_with_anonymous_user(self):
        url = reverse('foundation_email_approved_intake', args=[
            666,
        ])
        response = self.unauthorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_302_FOUND)
        self.assertRedirects(
            response,
            'http://galacticalliance.example.com/en/login?next=/en/email/intake/approved/666/'
        )

    @transaction.atomic
    def test_approved_intake_with_owner_user(self):
        target_group = Group.objects.get(
            id=constants.ORGANIZATION_ADMIN_GROUP_ID)
        self.user.groups.add(target_group)
        me = Me.objects.create(
            id=1,
            owner=self.user,
        )
        intake = Intake.objects.create(
            id=1,
            me=me,
            judgement_note=Note.objects.create(
                id=1,
                me=me,
                name="Space Citizen\'s Newsletter",
                description="Hail, citizen of the Galactic Alliance ...",
            ))
        url = reverse('foundation_email_approved_intake', args=[
            intake.id,
        ])
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertTrue(len(response.content) > 1)

    @transaction.atomic
    def test_approved_intake_with_404(self):
        url = reverse('foundation_email_approved_intake', args=[
            666,
        ])
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertIn(b'404', response.content)

    @transaction.atomic
    def test_approved_intake_with_non_owner_user(self):
        target_group = Group.objects.get(id=constants.ENTREPRENEUR_GROUP_ID)
        user = User.objects.create_user(  # Create our User.
            email='*****@*****.**', username='******', password='******')
        user.is_active = True
        user.save()
        user.groups.add(target_group)
        me = Me.objects.create(
            id=666,
            owner=user,
        )
        intake = Intake.objects.create(
            id=666,
            me=me,
            judgement_note=Note.objects.create(
                id=666,
                me=me,
                name="Space Citizen\'s Newsletter",
                description="Hail, citizen of the Galactic Alliance ...",
            ))
        url = reverse('foundation_email_approved_intake', args=[
            intake.id,
        ])
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertIn(b'403', response.content)

    @transaction.atomic
    def test_rejected_intake_with_anonymous_user(self):
        url = reverse('foundation_email_rejected_intake', args=[
            666,
        ])
        response = self.unauthorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_302_FOUND)
        self.assertRedirects(
            response,
            'http://galacticalliance.example.com/en/login?next=/en/email/intake/rejected/666/'
        )

    @transaction.atomic
    def test_rejected_intake_with_owner_user(self):
        target_group = Group.objects.get(
            id=constants.ORGANIZATION_ADMIN_GROUP_ID)
        self.user.groups.add(target_group)
        me = Me.objects.create(
            id=1,
            owner=self.user,
        )
        intake = Intake.objects.create(
            id=1,
            me=me,
            judgement_note=Note.objects.create(
                id=1,
                me=me,
                name="Space Citizen\'s Newsletter",
                description="Hail, citizen of the Galactic Alliance ...",
            ))
        url = reverse('foundation_email_rejected_intake', args=[
            intake.id,
        ])
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertTrue(len(response.content) > 1)

    @transaction.atomic
    def test_approved_intake_with_404(self):
        url = reverse('foundation_email_rejected_intake', args=[
            666,
        ])
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertIn(b'404', response.content)

    @transaction.atomic
    def test_approved_intake_with_non_owner_user(self):
        target_group = Group.objects.get(id=constants.ENTREPRENEUR_GROUP_ID)
        user = User.objects.create_user(  # Create our User.
            email='*****@*****.**', username='******', password='******')
        user.is_active = True
        user.save()
        user.groups.add(target_group)
        me = Me.objects.create(
            id=666,
            owner=user,
        )
        intake = Intake.objects.create(
            id=666,
            me=me,
            judgement_note=Note.objects.create(
                id=666,
                me=me,
                name="Space Citizen\'s Newsletter",
                description="Hail, citizen of the Galactic Alliance ...",
            ))
        url = reverse('foundation_email_rejected_intake', args=[
            intake.id,
        ])
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertIn(b'403', response.content)

    @transaction.atomic
    def test_message_with_anonymous_user(self):
        url = reverse('foundation_email_message', args=[
            666,
        ])
        response = self.unauthorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_302_FOUND)
        self.assertRedirects(
            response,
            'http://galacticalliance.example.com/en/login?next=/en/email/message/666/'
        )

    @transaction.atomic
    def test_message_with_404(self):
        url = reverse('foundation_email_message', args=[
            666,
        ])
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertIn(b'404', response.content)

    @transaction.atomic
    def test_message_with_participant(self):
        target_group = Group.objects.get(
            id=constants.ORGANIZATION_ADMIN_GROUP_ID)
        self.user.groups.add(target_group)
        me = Me.objects.create(
            id=1,
            owner=self.user,
        )
        message = Message.objects.create(
            sender=me,
            recipient=me,
            name="Space Citizen\'s Newsletter",
            description="Hail, citizen of the Galactic Alliance ...",
        )
        message.participants.add(me)
        url = reverse('foundation_email_message', args=[
            message.id,
        ])
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertTrue(len(response.content) > 1)
        self.assertIn(b'Hail, citizen of the Galactic Alliance',
                      response.content)

    @transaction.atomic
    def test_message_without_participant(self):
        target_group = Group.objects.get(
            id=constants.ORGANIZATION_ADMIN_GROUP_ID)
        self.user.groups.add(target_group)
        me = Me.objects.create(
            id=1,
            owner=self.user,
        )
        message = Message.objects.create(
            sender=me,
            recipient=me,
            name="Space Citizen\'s Newsletter",
            description="Hail, citizen of the Galactic Alliance ...",
        )
        url = reverse('foundation_email_message', args=[
            message.id,
        ])
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertTrue(len(response.content) > 1)
        self.assertIn(b'403', response.content)

    @transaction.atomic
    def test_tasks_with_anonymous_user(self):
        url = reverse('foundation_email_task', args=[
            666,
            666,
        ])
        response = self.unauthorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_302_FOUND)
        self.assertRedirects(
            response,
            'http://galacticalliance.example.com/en/login?next=/en/email/task/666/666/'
        )

    @transaction.atomic
    def test_task_with_404(self):
        url = reverse('foundation_email_task', args=[
            666,
            666,
        ])
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertIn(b'404', response.content)

    @transaction.atomic
    def test_task_with_participant(self):
        target_group = Group.objects.get(
            id=constants.ORGANIZATION_ADMIN_GROUP_ID)
        self.user.groups.add(target_group)
        me = Me.objects.create(
            id=999,
            owner=self.user,
            notify_when_task_had_an_interaction=True,
        )
        log_event = SortedLogEventByCreated.objects.create(
            id=666,
            me=me,
            text="Hail, citizen of the Galactic Alliance ...",
        )
        task = Task.objects.create(id=666,
                                   owner=self.user,
                                   assigned_by=me,
                                   assignee=me,
                                   status=constants.OPEN_TASK_STATUS)
        task.participants.add(me)
        task.log_events.add(log_event)

        url = reverse('foundation_email_task', args=[task.id, log_event.id])
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertTrue(len(response.content) > 1)
        self.assertIn(b'Hail, citizen of the Galactic Alliance',
                      response.content)

    @transaction.atomic
    def test_task_without_participant(self):
        target_group = Group.objects.get(
            id=constants.ORGANIZATION_ADMIN_GROUP_ID)
        self.user.groups.add(target_group)
        me = Me.objects.create(
            id=999,
            owner=self.user,
            notify_when_task_had_an_interaction=True,
        )
        log_event = SortedLogEventByCreated.objects.create(
            id=666,
            me=me,
            text="Hail, citizen of the Galactic Alliance ...",
        )
        task = Task.objects.create(id=666,
                                   owner=self.user,
                                   assigned_by=me,
                                   assignee=me,
                                   status=constants.OPEN_TASK_STATUS)
        task.log_events.add(log_event)

        url = reverse('foundation_email_task', args=[task.id, log_event.id])
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertTrue(len(response.content) > 1)
        self.assertIn(b'403', response.content)
Beispiel #13
0
class TenantWorkspaceTestCases(APITestCase, FastTenantTestCase):
    fixtures = []

    @staticmethod
    def get_test_schema_name():
        return 'galacticalliance'

    def setup_tenant(self, tenant):
        """Tenant Schema"""
        tenant.schema_name = 'galacticalliance'
        tenant.name = "Galactic Alliance of Humankind"
        tenant.is_setup = True
        tenant.has_perks = True
        tenant.has_mentors = True
        tenant.how_discovered = "Command HQ"
        tenant.how_many_served = 1

    @classmethod
    def setUpTestData(cls):
        Group.objects.bulk_create([
            Group(
                id=constants.ENTREPRENEUR_GROUP_ID,
                name="Entreprenuer",
            ),
            Group(
                id=constants.MENTOR_GROUP_ID,
                name="Mentor",
            ),
            Group(
                id=constants.ADVISOR_GROUP_ID,
                name="Advisor",
            ),
            Group(
                id=constants.ORGANIZATION_MANAGER_GROUP_ID,
                name="Org Manager",
            ),
            Group(
                id=constants.ORGANIZATION_ADMIN_GROUP_ID,
                name="Org Admin",
            ),
            Group(
                id=constants.CLIENT_MANAGER_GROUP_ID,
                name="Client Manager",
            ),
            Group(
                id=constants.SYSTEM_ADMIN_GROUP_ID,
                name="System Admin",
            ),
        ])
        user = User.objects.create_user(  # Create our User.
            email=TEST_USER_EMAIL,
            username=TEST_USER_USERNAME,
            password=TEST_USER_PASSWORD)
        user.is_active = True
        user.save()

    @transaction.atomic
    def setUp(self):
        translation.activate('en')  # Set English
        # super(TenantRewardTestCases, self).setUp()

        # Initialize our test data.
        self.user = User.objects.get(username=TEST_USER_USERNAME)
        token = Token.objects.get(user=self.user)

        # Setup.
        self.unauthorized_client = TenantClient(self.tenant)
        self.authorized_client = TenantClient(self.tenant,
                                              HTTP_AUTHORIZATION='Token ' +
                                              token.key)
        self.authorized_client.login(username=TEST_USER_USERNAME,
                                     password=TEST_USER_PASSWORD)

        # Update Organization.
        self.tenant.users.add(self.user)
        self.tenant.save()

        # Setup User.
        self.me = Me.objects.create(owner=self.user, )
        self.workspace = Workspace.objects.create(name="Test Workspace")
        self.workspace.owners.add(self.user)

    @transaction.atomic
    def tearDown(self):
        Workspace.objects.delete_all()
        Module.objects.delete_all()
        PostalAddress.objects.delete_all()
        ContactPoint.objects.delete_all()
        Me.objects.delete_all()
        users = User.objects.all()
        for user in users.all():
            user.delete()

    @transaction.atomic
    def test_workspace_create_page(self):
        url = reverse('tenant_workspace_create')
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertTrue(len(response.content) > 1)
        self.assertIn(b'Workspace', response.content)

    @transaction.atomic
    def test_workspace_master_page(self):
        url = reverse('tenant_workspace_master', args=[
            self.workspace.id,
        ])
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertTrue(len(response.content) > 1)
        self.assertIn(b'Workspace', response.content)
Beispiel #14
0
class TestTenantOngoingOrderOperationViews(TenantTestCase):
    """
    Console:
    python manage.py test tenant_ongoing_order_operation.tests
    """

    #------------------#
    # Setup Unit Tests #
    #------------------#

    def setup_tenant(tenant):
        """Tenant Schema"""
        tenant.schema_name = TEST_SCHEMA_NAME
        tenant.name = 'Over 55 (London) Inc.',
        tenant.alternate_name = "Over55",
        tenant.description = "Located at the Forks of the Thames in ...",
        tenant.address_country = "CA",
        tenant.address_locality = "London",
        tenant.address_region = "Ontario",
        tenant.post_office_box_number = "",  # Post Offic #
        tenant.postal_code = "N6H 1B4",
        tenant.street_address = "78 Riverside Drive",
        tenant.street_address_extra = "",  # Extra line.

    @classmethod
    def setUpClass(cls):
        """
        Run at the beginning before all the unit tests run.
        """
        super().setUpClass()

    def setUp(self):
        """
        Run at the beginning of every unit test.
        """
        super(TestTenantOngoingOrderOperationViews, self).setUp()

        # Setup our app and account.
        call_command('init_app', verbosity=0)
        call_command('populate_tenant_content', TEST_SCHEMA_NAME, verbosity=0)
        call_command('populate_tenant_sample_db',
                     TEST_SCHEMA_NAME,
                     verbosity=0)

        # Get user and credentials.
        user = SharedUser.objects.get(email="*****@*****.**")
        token, orig_iat = get_jwt_token_and_orig_iat(user)

        # Setup our clients.
        self.anon_c = TenantClient(self.tenant)
        self.auth_c = TenantClient(self.tenant,
                                   HTTP_AUTHORIZATION='JWT {0}'.format(token))
        self.auth_c.login(username="******",
                          password="******")

    def tearDown(self):
        """
        Run at the end of every unit test.
        """
        # Delete previous data.
        SharedUser.objects.all().delete()

        # Delete our clients.
        del self.anon_c
        del self.auth_c

        # Finish teardown.
        super(TestTenantOngoingOrderOperationViews, self).tearDown()

    def test_ongoing_job_assign_operation_page(self):
        ongoing_work = OngoingWorkOrder.objects.get()
        a_url = self.tenant.reverse(
            reverse_id='workery_tenant_ongoing_job_assign_operation',
            reverse_args=[int(ongoing_work.id)])
        a_url += "?return_id=lite-retrieve"
        response = self.auth_c.get(a_url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)

    def test_ongoing_job_assign_confirm_operation_page(self):
        ongoing_work = OngoingWorkOrder.objects.get()
        a_url = self.tenant.reverse(
            reverse_id='workery_tenant_ongoing_job_assign_confirm_operation',
            reverse_args=[int(ongoing_work.id)])
        a_url += "?return_id=lite-retrieve"
        response = self.auth_c.get(a_url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)

    def test_ongoing_job_unassign_operation_page(self):
        ongoing_work = OngoingWorkOrder.objects.get()
        a_url = self.tenant.reverse(
            reverse_id='workery_tenant_ongoing_job_unassign_operation',
            reverse_args=[int(ongoing_work.id)])
        a_url += "?return_id=lite-retrieve"
        response = self.auth_c.get(a_url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)

    def test_ongoing_job_close_operation_page(self):
        ongoing_work = OngoingWorkOrder.objects.get()
        a_url = self.tenant.reverse(
            reverse_id='workery_tenant_ongoing_job_close_operation',
            reverse_args=[int(ongoing_work.id)])
        a_url += "?return_id=lite-retrieve"
        response = self.auth_c.get(a_url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)

    def test_ongoing_job_creation_wizard_operation_page(self):
        ongoing_work = OngoingWorkOrder.objects.get()
        a_url = self.tenant.reverse(
            reverse_id='workery_tenant_ongoing_job_creation_wizard_operation',
            reverse_args=[int(ongoing_work.id)])
        a_url += "?return_id=lite-retrieve"
        response = self.auth_c.get(a_url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)

    def test_ongoing_job_follow_up_operation_page(self):
        ongoing_work = OngoingWorkOrder.objects.get()
        a_url = self.tenant.reverse(
            reverse_id='workery_tenant_ongoing_job_follow_up_operation',
            reverse_args=[int(ongoing_work.id)])
        a_url += "?return_id=lite-retrieve"
        response = self.auth_c.get(a_url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)

    def test_ongoing_job_completion_survey_operation_page(self):
        ongoing_work = OngoingWorkOrder.objects.get()
        a_url = self.tenant.reverse(
            reverse_id='workery_tenant_ongoing_job_completion_survey_operation',
            reverse_args=[int(ongoing_work.id)])
        a_url += "?return_id=lite-retrieve"
        response = self.auth_c.get(a_url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)

    def test_ongoing_job_postpone_operation_page(self):
        ongoing_work = OngoingWorkOrder.objects.get()
        a_url = self.tenant.reverse(
            reverse_id='workery_tenant_ongoing_job_postpone_operation',
            reverse_args=[int(ongoing_work.id)])
        a_url += "?return_id=lite-retrieve"
        response = self.auth_c.get(a_url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
Beispiel #15
0
class TagListCreateAPIViewWithTenantTestCase(APITestCase, TenantTestCase):
    """
    Console:
    python manage.py test tenant_api.tests.test_tag_views
    """

    #------------------#
    # Setup Unit Tests #
    #------------------#

    def setup_tenant(tenant):
        """Tenant Schema"""
        tenant.schema_name = TEST_SCHEMA_NAME
        tenant.name = 'Over 55 (London) Inc.',
        tenant.alternate_name = "Over55",
        tenant.description = "Located at the Forks of the Thames in ...",
        tenant.address_country = "CA",
        tenant.address_locality = "London",
        tenant.address_region = "Ontario",
        tenant.post_office_box_number = "",  # Post Offic #
        tenant.postal_code = "N6H 1B4",
        tenant.street_address = "78 Riverside Drive",
        tenant.street_address_extra = "",  # Extra line.

    @transaction.atomic
    def setUp(self):
        translation.activate('en')  # Set English
        super(TagListCreateAPIViewWithTenantTestCase, self).setUp()

        # Load up the dependat.
        call_command('init_app', verbosity=0)
        call_command('populate_tenant_content', TEST_SCHEMA_NAME, verbosity=0)
        call_command('populate_tenant_sample_db',
                     TEST_SCHEMA_NAME,
                     verbosity=0)

        # Get objects.
        self.customer = Customer.objects.get(owner__email='*****@*****.**')
        self.associate = Associate.objects.get(
            owner__email='*****@*****.**')

        # Get users.
        exec_user = SharedUser.objects.get(email='*****@*****.**')
        manager_user = SharedUser.objects.get(email='*****@*****.**')
        frontline_user = SharedUser.objects.get(email='*****@*****.**')
        associate_user = SharedUser.objects.get(email='*****@*****.**')
        customer_user = SharedUser.objects.get(email='*****@*****.**')

        # Get tokens.
        exec_token, exec_orig_iat = get_jwt_token_and_orig_iat(exec_user)
        manager_token, manager_orig_iat = get_jwt_token_and_orig_iat(
            manager_user)
        frontline_token, frontline_orig_iat = get_jwt_token_and_orig_iat(
            frontline_user)
        associate_token, associate_orig_iat = get_jwt_token_and_orig_iat(
            associate_user)
        customer_token, customer_orig_iat = get_jwt_token_and_orig_iat(
            customer_user)

        # Setup.
        self.unauthorized_client = TenantClient(self.tenant)
        self.exec_client = TenantClient(
            self.tenant, HTTP_AUTHORIZATION='JWT {0}'.format(exec_token))
        self.exec_client.login(username='******',
                               password=TEST_USER_PASSWORD)
        self.manager_client = TenantClient(
            self.tenant, HTTP_AUTHORIZATION='JWT {0}'.format(manager_token))
        self.manager_client.login(username='******',
                                  password=TEST_USER_PASSWORD)
        self.staff_client = TenantClient(
            self.tenant, HTTP_AUTHORIZATION='JWT {0}'.format(manager_token))
        self.staff_client.login(username='******',
                                password=TEST_USER_PASSWORD)
        self.customer_client = TenantClient(
            self.tenant, HTTP_AUTHORIZATION='JWT {0}'.format(manager_token))
        self.customer_client.login(username='******',
                                   password=TEST_USER_PASSWORD)
        self.tag = Tag.objects.create(text="Some generic text")

    @transaction.atomic
    def tearDown(self):
        connection.set_schema(TEST_SCHEMA_NAME, True)  # Switch to Tenant.
        Tag.objects.delete_all()
        del self.unauthorized_client
        del self.exec_client
        del self.manager_client
        del self.staff_client
        del self.customer_client
        super(TagListCreateAPIViewWithTenantTestCase, self).tearDown()

    #-------------------#
    # List API-endpoint #
    #-------------------#

    @transaction.atomic
    def test_list_with_401_by_permissions(self):
        """
        Unit test will test anonymous make a GET request to the LIST API-endpoint.
        """
        url = reverse('workery_tag_list_create_api_endpoint') + "?format=json"
        response = self.unauthorized_client.get(
            url, data=None, content_type='application/json')
        self.assertIsNotNone(response)
        self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)

    @transaction.atomic
    def test_list_with_200_by_permissions(self):
        """
        Unit test will test authenticated user, who has permission, to make a
        GET request to the list API-endpoint.
        """
        url = reverse('workery_tag_list_create_api_endpoint')
        url += "?format=json"

        # Executive
        response = self.exec_client.get(url,
                                        data=None,
                                        content_type='application/json')
        self.assertIsNotNone(response)
        self.assertEqual(response.status_code, status.HTTP_200_OK)

        # Manager
        response = self.manager_client.get(url,
                                           data=None,
                                           content_type='application/json')
        self.assertIsNotNone(response)
        self.assertEqual(response.status_code, status.HTTP_200_OK)

        # Staff
        response = self.staff_client.get(url,
                                         data=None,
                                         content_type='application/json')
        self.assertIsNotNone(response)
        self.assertEqual(response.status_code, status.HTTP_200_OK)

    @transaction.atomic
    def test_list_with_403_by_permissions(self):
        """
        Unit test will test authenticated user, who does not have permission, to
        make a GET request to the list API-endpoint.
        """
        Permission.objects.all().delete()
        url = reverse('workery_tag_list_create_api_endpoint')
        url += "?format=json"
        response = self.customer_client.get(url,
                                            data=None,
                                            content_type='application/json')
        self.assertIsNotNone(response)
        self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
        self.assertIn(
            "You do not have permission to access this API-endpoint.",
            str(response.data))

    #---------------------#
    # Create API-endpoint #
    #---------------------#

    @transaction.atomic
    def test_create_with_401_by_permissions(self):
        """
        Unit test will test anonymous make a POST request to the create API-endpoint.
        """
        url = reverse('workery_tag_list_create_api_endpoint') + "?format=json"
        response = self.unauthorized_client.post(
            url, data={}, content_type='application/json')
        self.assertIsNotNone(response)
        self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)

    @transaction.atomic
    def test_create_with_200_by_permissions(self):
        """
        Unit test will test authenticated user, who has permission, to make a
        POST request to the create API-endpoint.
        """
        url = reverse('workery_tag_list_create_api_endpoint')
        url += "?format=json"

        # Executive
        response = self.exec_client.post(url,
                                         data=json.dumps({
                                             'text':
                                             'generic text',
                                         }),
                                         content_type='application/json')
        self.assertIsNotNone(response)
        # print(response.content)
        self.assertEqual(response.status_code, status.HTTP_201_CREATED)
        self.assertIn("generic text", str(response.data))

        # Manager
        response = self.manager_client.post(url,
                                            data=json.dumps({
                                                'text':
                                                'generic text #2',
                                            }),
                                            content_type='application/json')
        self.assertIsNotNone(response)
        # print(response.content)
        self.assertEqual(response.status_code, status.HTTP_201_CREATED)
        self.assertIn("#2", str(response.data))

        # Staff
        response = self.staff_client.post(url,
                                          data=json.dumps({
                                              'text':
                                              'generic text #3',
                                          }),
                                          content_type='application/json')
        self.assertIsNotNone(response)
        # print(response)
        self.assertEqual(response.status_code, status.HTTP_201_CREATED)
        self.assertIn("#3", str(response.data))

    @transaction.atomic
    def test_create_with_403_by_permissions(self):
        """
        Unit test will test authenticated user, who does not have permission, to
        make a POST request to the list API-endpoint.
        """
        Permission.objects.all().delete()
        url = reverse('workery_tag_list_create_api_endpoint')
        url += "?format=json"
        response = self.customer_client.post(url,
                                             data=json.dumps({}),
                                             content_type='application/json')
        self.assertIsNotNone(response)
        self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
        self.assertIn(
            "You do not have permission to access this API-endpoint.",
            str(response.data))

    #---------------------#
    # Update API-endpoint #
    #---------------------#

    @transaction.atomic
    def test_update_with_401_by_permissions(self):
        """
        Unit test will test anonymous make a PUT request to the update API-endpoint.
        """
        url = reverse('workery_tag_retrieve_update_destroy_api_endpoint',
                      args=[self.tag.id]) + "?format=json"
        response = self.unauthorized_client.post(
            url, data={}, content_type='application/json')
        self.assertIsNotNone(response)
        self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)

    @transaction.atomic
    def test_update_with_200_by_permissions(self):
        """
        Unit test will test authenticated user, who has permission, to make a
        PUT request to the update API-endpoint.
        """
        url = reverse('workery_tag_retrieve_update_destroy_api_endpoint',
                      args=[self.tag.id]) + "?format=json"
        data = json.dumps({
            'text': 'generic text #1',
        })

        # Executive
        response = self.exec_client.put(url,
                                        data=data,
                                        content_type='application/json')
        self.assertIsNotNone(response)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertIn("generic text #1", str(response.data))

        # Manager
        response = self.manager_client.put(url,
                                           data=data,
                                           content_type='application/json')
        self.assertIsNotNone(response)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertIn("generic text #1", str(response.data))

        # Staff
        response = self.staff_client.put(url,
                                         data=data,
                                         content_type='application/json')
        self.assertIsNotNone(response)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertIn("generic text #1", str(response.data))

    @transaction.atomic
    def test_update_with_403_by_permissions(self):
        """
        Unit test will test authenticated user, who does not have permission, to
        make a PUT request to the update API-endpoint.
        """
        Permission.objects.all().delete()
        url = reverse('workery_tag_retrieve_update_destroy_api_endpoint',
                      args=[self.tag.id]) + "?format=json"
        data = json.dumps({
            'text': 'generic text',
        })
        response = self.customer_client.put(url,
                                            data=data,
                                            content_type='application/json')
        self.assertIsNotNone(response)
        self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
        self.assertIn(
            "You do not have permission to access this API-endpoint.",
            str(response.data))

    #-----------------------#
    # Retrieve API-endpoint #
    #-----------------------#

    @transaction.atomic
    def test_retrieve_with_401_by_permissions(self):
        """
        Unit test will test anonymous make a GET request to the retrieve API-endpoint.
        """
        url = reverse('workery_tag_retrieve_update_destroy_api_endpoint',
                      args=[self.tag.id]) + "?format=json"
        response = self.unauthorized_client.get(
            url, data={}, content_type='application/json')
        self.assertIsNotNone(response)
        self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)

    @transaction.atomic
    def test_retrieve_with_200_by_permissions(self):
        """
        Unit test will test authenticated user, who has permission, to make a
        GET request to the retrieve API-endpoint.
        """
        url = reverse('workery_tag_retrieve_update_destroy_api_endpoint',
                      args=[self.tag.id]) + "?format=json"

        response = self.exec_client.get(url,
                                        data=None,
                                        content_type='application/json')
        self.assertIsNotNone(response)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertIn("generic text", str(response.data))

        response = self.manager_client.get(url,
                                           data=None,
                                           content_type='application/json')
        self.assertIsNotNone(response)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertIn("generic text", str(response.data))

        response = self.staff_client.get(url,
                                         data=None,
                                         content_type='application/json')
        self.assertIsNotNone(response)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertIn("generic text", str(response.data))

    @transaction.atomic
    def test_retrieve_with_403_by_permissions(self):
        """
        Unit test will test authenticated user, who does not have permission, to
        make a GET request to the retrieve API-endpoint.
        """
        Permission.objects.all().delete()
        url = reverse('workery_tag_retrieve_update_destroy_api_endpoint',
                      args=[self.tag.id]) + "?format=json"
        response = self.exec_client.get(url,
                                        data=None,
                                        content_type='application/json')
        self.assertIsNotNone(response)
        self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
        self.assertIn(
            "You do not have permission to access this API-endpoint.",
            str(response.data))

    #-----------------------#
    # Delete API-endpoint #
    #-----------------------#

    @transaction.atomic
    def test_delete_with_401_by_permissions(self):
        """
        Unit test will test anonymous make a DELETE request to the delete API-endpoint.
        """
        url = reverse('workery_tag_retrieve_update_destroy_api_endpoint',
                      args=[self.tag.id]) + "?format=json"
        response = self.unauthorized_client.delete(
            url, data={}, content_type='application/json')
        self.assertIsNotNone(response)
        self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)

    @transaction.atomic
    def test_delete_with_200_by_permissions(self):
        """
        Unit test will test authenticated user, who has permission, to make a
        DELETE request to the delete API-endpoint.
        """
        url = reverse('workery_tag_retrieve_update_destroy_api_endpoint',
                      args=[self.tag.id]) + "?format=json"
        response = self.exec_client.delete(url,
                                           data=None,
                                           content_type='application/json')
        self.assertIsNotNone(response)
        self.assertEqual(response.status_code, status.HTTP_200_OK)

    @transaction.atomic
    def test_delete_with_403_by_permissions(self):
        """
        Unit test will test authenticated user, who does not have permission, to
        make a DELETE request to the delete API-endpoint.
        """
        Permission.objects.all().delete()
        url = reverse('workery_tag_retrieve_update_destroy_api_endpoint',
                      args=[self.tag.id]) + "?format=json"
        response = self.exec_client.delete(url,
                                           data=None,
                                           content_type='application/json')
        self.assertIsNotNone(response)
        self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
        self.assertIn(
            "You do not have permission to access this API-endpoint.",
            str(response.data))
class TestSharedAuthWebViews(TenantTestCase):
    """
    Class used to test the web views.

    Console:
    python manage.py test shared_auth.tests.test_web_views
    """
    @classmethod
    def setUpClass(cls):
        """
        Run at the beginning before all the unit tests run.
        """
        super().setUpClass()

    def setUp(self):
        """
        Run at the beginning of every unit test.
        """
        super(TestSharedAuthWebViews, self).setUp()

        # Setup our app and account.
        call_command('init_app', verbosity=0)
        call_command('create_shared_account',
                     TEST_USER_EMAIL,
                     TEST_USER_PASSWORD,
                     "Bart",
                     "Mika",
                     verbosity=0)

        # Get user and credentials.
        user = SharedUser.objects.get()
        token = Token.objects.get(user_id=user.id)

        # Setup our clients.
        self.anon_c = TenantClient(self.tenant)
        self.auth_c = TenantClient(self.tenant,
                                   HTTP_AUTHORIZATION='Token ' + token.key)
        self.auth_c.login(username=TEST_USER_USERNAME,
                          password=TEST_USER_PASSWORD)

        # Attach our user(s) to our test tenant organization.
        user.franchise = self.tenant
        user.save()

    def tearDown(self):
        """
        Run at the end of every unit test.
        """
        # Delete our clients.
        del self.anon_c
        del self.auth_c

        # Delete previous data.
        SharedUser.objects.all().delete()

        # Finish teardown.
        super(TestSharedAuthWebViews, self).tearDown()

    def test_get_index_page(self):
        response = self.anon_c.get(reverse('at_login_master'))
        self.assertEqual(response.status_code, status.HTTP_200_OK)

    def test_user_login_redirector_page_with_anonymous_user(self):
        response = self.anon_c.get(reverse('at_login_redirector'))
        self.assertEqual(response.status_code, status.HTTP_302_FOUND)

    def test_user_login_redirector_page_with_authenticated_user(self):
        response = self.auth_c.get(reverse('at_login_redirector'), )
        self.assertEqual(response.status_code, status.HTTP_302_FOUND)

    def test_send_reset_password_email_master_page(self):
        response = self.anon_c.get(
            reverse('at_send_reset_password_email_master'))
        self.assertEqual(response.status_code, status.HTTP_200_OK)

    def test_send_reset_password_email_submitted_page(self):
        response = self.anon_c.get(
            reverse('at_send_reset_password_email_submitted'))
        self.assertEqual(response.status_code, status.HTTP_200_OK)

    def test_rest_password_master_page_with_success(self):
        me = SharedUser.objects.get(email=TEST_USER_EMAIL)
        url = reverse('at_reset_password_master', args=[me.pr_access_code])
        response = self.anon_c.get(url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)

    def test_rest_password_master_page_with_bad_pr_access_code(self):
        me = SharedUser.objects.get(email=TEST_USER_EMAIL)
        url = reverse('at_reset_password_master',
                      args=['some-bad-pr-access-code'])
        response = self.anon_c.get(url)
        self.assertEqual(response.status_code, status.HTTP_302_FOUND)

    def test_rest_password_master_page_with_expired_pr_access_code(self):
        # Get the user profile.
        me = SharedUser.objects.get(email=TEST_USER_EMAIL)

        # Set the expiry date to be old!
        today = timezone.now()
        today_minus_1_year = today - timedelta(minutes=1)
        me.pr_expiry_date = today_minus_1_year
        me.save()

        # Run our test...
        url = reverse('at_reset_password_master', args=[me.pr_access_code])
        response = self.anon_c.get(url)

        # Verify the results.
        self.assertEqual(response.status_code, status.HTTP_302_FOUND)

    def test_user_activation_detail_page_with_success(self):
        me = SharedUser.objects.get(email=TEST_USER_EMAIL)
        url = reverse('at_user_activation_detail', args=[me.pr_access_code])
        response = self.anon_c.get(url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)

    def test_rest_user_activation_detail_page_with_bad_pr_access_code(self):
        me = SharedUser.objects.get(email=TEST_USER_EMAIL)
        url = reverse('at_user_activation_detail',
                      args=['some-bad-pr-access-code'])
        response = self.anon_c.get(url)
        self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)

    def test_rest_user_activation_detail_page_with_expired_pr_access_code(
            self):
        # Get the user profile.
        me = SharedUser.objects.get(email=TEST_USER_EMAIL)

        # Set the expiry date to be old!
        today = timezone.now()
        today_minus_1_year = today - timedelta(minutes=1)
        me.pr_expiry_date = today_minus_1_year
        me.save()

        # Run our test...
        url = reverse('at_user_activation_detail', args=[me.pr_access_code])
        response = self.anon_c.get(url)

        # Verify the results.
        self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)

    def test_user_logout_redirector_master_page_with_redirect(self):
        me = SharedUser.objects.get(email=TEST_USER_EMAIL)
        url = reverse('at_logout_redirector')
        response = self.anon_c.get(url)
        self.assertEqual(response.status_code, 302)

    def test_user_logout_redirector_master_page_with_success(self):
        me = SharedUser.objects.get(email=TEST_USER_EMAIL)
        url = reverse('at_logout_redirector')
        response = self.auth_c.get(url)
        self.assertEqual(response.status_code, 302)
Beispiel #17
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 Fee', str(response.content))

    def test_report_2_details_page(self):
        response = self.auth_c.get(
            self.tenant.reverse('workery_tenant_report_02_detail_master'))
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertIn('Reports', str(response.content))
        self.assertIn('Associate Jobs Report', str(response.content))

    def test_report_3_details_page(self):
        response = self.auth_c.get(
            self.tenant.reverse('workery_tenant_report_03_detail_master'))
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertIn('Reports', str(response.content))
        self.assertIn('Service Fees by Skill Set Report',
                      str(response.content))

    def test_report_4_details_page(self):
        response = self.auth_c.get(
            self.tenant.reverse('workery_tenant_report_04_detail_master'))
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertIn('Reports', str(response.content))
        self.assertIn('Cancelled Jobs Report', str(response.content))

    def test_report_5_details_page(self):
        response = self.auth_c.get(
            self.tenant.reverse('workery_tenant_report_05_detail_master'))
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertIn('Reports', str(response.content))
        self.assertIn('Associate Insurance Report', str(response.content))

    def test_report_6_details_page(self):
        response = self.auth_c.get(
            self.tenant.reverse('workery_tenant_report_06_detail_master'))
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertIn('Reports', str(response.content))
        self.assertIn('Associate Police Check Due Date Report',
                      str(response.content))

    def test_report_7_details_page(self):
        response = self.auth_c.get(
            self.tenant.reverse('workery_tenant_report_07_detail_master'))
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertIn('Reports', str(response.content))
        self.assertIn('Associate Birthdays Report', str(response.content))

    def test_report_8_details_page(self):
        response = self.auth_c.get(
            self.tenant.reverse('workery_tenant_report_08_detail_master'))
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertIn('Reports', str(response.content))
        self.assertIn('Associate Skill Sets Report', str(response.content))

    def test_report_9_details_page(self):
        response = self.auth_c.get(
            self.tenant.reverse('workery_tenant_report_09_detail_master'))
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertIn('Reports', str(response.content))
        self.assertIn('Client Addresses Report', str(response.content))

    def test_report_10_details_page(self):
        response = self.auth_c.get(
            self.tenant.reverse('workery_tenant_report_10_detail_master'))
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertIn('Reports', str(response.content))
        self.assertIn('Jobs Report', str(response.content))

    def test_report_11_details_page(self):
        response = self.auth_c.get(
            self.tenant.reverse('workery_tenant_report_11_detail_master'))
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertIn('Reports', str(response.content))
        self.assertIn('Commercial Jobs Report', str(response.content))
class APIMessageWithTenantSchemaTestCase(APITestCase, TenantTestCase):
    fixtures = []

    def setup_tenant(self, tenant):
        """Tenant Schema"""
        tenant.schema_name = 'galacticalliance'
        tenant.name = "Galactic Alliance of Humankind"
        tenant.has_perks = True
        tenant.has_mentors = True
        tenant.how_discovered = "Command HQ"
        tenant.how_many_served = 1

    @classmethod
    def setUpTestData(cls):
        Group.objects.bulk_create([
            Group(
                id=constants.ENTREPRENEUR_GROUP_ID,
                name="Entreprenuer",
            ),
            Group(
                id=constants.MENTOR_GROUP_ID,
                name="Mentor",
            ),
            Group(
                id=constants.ADVISOR_GROUP_ID,
                name="Advisor",
            ),
            Group(
                id=constants.ORGANIZATION_MANAGER_GROUP_ID,
                name="Org Manager",
            ),
            Group(
                id=constants.ORGANIZATION_ADMIN_GROUP_ID,
                name="Org Admin",
            ),
            Group(
                id=constants.CLIENT_MANAGER_GROUP_ID,
                name="Client Manager",
            ),
            Group(
                id=constants.SYSTEM_ADMIN_GROUP_ID,
                name="System Admin",
            ),
        ])
        user = User.objects.create_user(  # Create our user.
            email=TEST_USER_EMAIL,
            username=TEST_USER_USERNAME,
            password=TEST_USER_PASSWORD)
        user.is_superuser = True
        user.is_active = True
        user.save()

    @transaction.atomic
    def setUp(self):
        translation.activate('en')  # Set English.
        super(APIMessageWithTenantSchemaTestCase, self).setUp()

        # Initialize our test data.
        self.user = User.objects.get()
        token = Token.objects.get(user__username=TEST_USER_USERNAME)

        # Setup.
        self.unauthorized_client = TenantClient(self.tenant)
        self.authorized_client = TenantClient(self.tenant,
                                              HTTP_AUTHORIZATION='Token ' +
                                              token.key)
        self.authorized_client.login(username=TEST_USER_USERNAME,
                                     password=TEST_USER_PASSWORD)
        self.tenant.owner = self.user
        self.tenant.save()

        # Above taken from:
        # http://www.django-rest-framework.org/api-guide/testing/#authenticating

    @transaction.atomic
    def tearDown(self):
        Message.objects.delete_all()
        PostalAddress.objects.delete_all()
        ContactPoint.objects.delete_all()
        Me.objects.delete_all()
        users = User.objects.all()
        for user in users.all():
            user.delete()
        # super(APIMessageWithTenantSchemaTestCase, self).tearDown()

    @transaction.atomic
    def test_list_with_anonymous_user(self):
        response = self.unauthorized_client.get(
            '/api/tenantmessage/?format=json')
        self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)

    @transaction.atomic
    def test_list_with_authenticated_user(self):
        org_admin_group = Group.objects.get(
            id=constants.ORGANIZATION_ADMIN_GROUP_ID)
        self.user.groups.add(org_admin_group)

        response = self.authorized_client.get(
            '/api/tenantmessage/?format=json')
        self.assertEqual(response.status_code, status.HTTP_200_OK)

    @transaction.atomic
    def test_post_with_anonymous_user(self):
        data = {
            'name': 'Unit Test',
            'owner': self.user.id,
        }
        response = self.unauthorized_client.post(
            '/api/tenantmessage/?format=json',
            json.dumps(data),
            content_type='application/json')
        self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)
        self.assertEqual(len(mail.outbox), 0)

    @transaction.atomic
    def test_post_from_sender_to_recipient(self):
        # Create our recipient
        recipient_user = User.objects.create_user(  # Create our user.
            email='*****@*****.**',
            username='******',
            password='******')
        recipient_user.is_active = True
        recipient_user.save()
        recipient = Me.objects.create(owner=recipient_user)

        # Run the test and verify.
        data = {
            'name': 'Unit Test',
            'recipient': recipient.id,
            'description': 'Glory to Galactic Alliance',
        }
        response = self.authorized_client.post(
            '/api/tenantmessage/?format=json',
            json.dumps(data),
            content_type='application/json')
        self.assertEqual(response.status_code, status.HTTP_201_CREATED)
        self.assertEqual(len(mail.outbox), 1)

    @transaction.atomic
    def test_put_with_anonymous_user(self):
        # Create a new object with our specific test data.
        Message.objects.create(
            id=666,
            name="Unit Test",
            owner=self.user,
        )

        # Run the test.
        data = {
            'id': 666,
            'name': 'Unit Test',
            'owner': self.user.id,
        }
        response = self.unauthorized_client.put(
            '/api/tenantmessage/666/?format=json',
            json.dumps(data),
            content_type='application/json')
        self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)
        self.assertEqual(len(mail.outbox), 0)

    @transaction.atomic
    def test_put_with_original_sender(self):
        # Create our sender.
        sender = Me.objects.create(owner=self.user, )

        # Create our recipient
        recipient_user = User.objects.create_user(  # Create our user.
            email='*****@*****.**',
            username='******',
            password='******')
        recipient_user.is_active = True
        recipient_user.save()
        recipient = Me.objects.create(owner=recipient_user)

        # Create a new object with our specific test data.
        Message.objects.create(
            id=666,
            name="Unit Test #666",
            recipient=recipient,
            sender=sender,
        )

        # Run the test.
        data = {
            'id': 666,
            'name': 'Unit Test',
            'recipient': recipient.id,
        }
        response = self.authorized_client.put('/api/tenantmessage/666/',
                                              json.dumps(data),
                                              content_type='application/json')
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertEqual(len(mail.outbox),
                         0)  # Editing does not qualify for email notification.

    @transaction.atomic
    def test_put_with_different_sender(self):
        # Create our CURRENT sender.
        Me.objects.create(owner=self.user, )

        # Create our NEW sender.
        sender_user = User.objects.create_user(  # Create our user.
            email='*****@*****.**',
            username='******',
            password='******')
        sender_user.is_active = True
        sender_user.save()
        sender = Me.objects.create(owner=sender_user)

        # Create our NEW recipient
        recipient_user = User.objects.create_user(  # Create our user.
            email='*****@*****.**',
            username='******',
            password='******')
        recipient_user.is_active = True
        recipient_user.save()
        recipient = Me.objects.create(owner=recipient_user)

        # Create a new object with our specific test data.
        Message.objects.create(
            id=666,
            name="Unit Test #666",
            recipient=recipient,
            sender=sender,
        )

        # Run the test.
        data = {
            'id': 666,
            'name': 'Unit Test',
            'recipient': recipient.id,
        }
        response = self.authorized_client.put('/api/tenantmessage/666/',
                                              json.dumps(data),
                                              content_type='application/json')
        self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
        self.assertEqual(len(mail.outbox), 0)

    @transaction.atomic
    def test_delete_with_anonymous_user(self):
        # Create our CURRENT sender.
        sender = Me.objects.create(owner=self.user, )

        # Create a new object with our specific test data.
        message = Message.objects.create(
            id=666,
            name="Unit Test #666",
            sender=sender,
        )
        message.participants.add(sender)
        message.save()

        # Run our test and verify.
        response = self.unauthorized_client.delete(
            '/api/tenantmessage/666/?format=json')
        self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)
        self.assertEqual(Message.objects.all().count(), 1)
        message = Message.objects.get(id=666)
        self.assertEqual(message.participants.count(), 1)

    @transaction.atomic
    def test_delete_with_sender(self):
        # Create our SENDER user.
        sender = Me.objects.create(owner=self.user, )

        # Create our RECIPIENT user.
        recipient_user = User.objects.create_user(  # Create our user.
            email='*****@*****.**',
            username='******',
            password='******')
        recipient_user.is_active = True
        recipient_user.save()
        recipient = Me.objects.create(owner=recipient_user)

        # Create a new object with our specific test data.
        message = Message.objects.create(
            id=666,
            name="Unit Test #666",
            sender=sender,
            recipient=recipient,
        )
        message.participants.add(sender)
        message.save()

        # Run our test and verify.
        response = self.authorized_client.delete(
            '/api/tenantmessage/666/?format=json')
        self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
        self.assertEqual(Message.objects.all().count(),
                         1)  # Check message has not been deleted
        message = Message.objects.get(id=666)
        self.assertEqual(message.participants.count(), 0)

    @transaction.atomic
    def test_delete_with_recipient(self):
        # Create our CURRENT sender.
        recipient = Me.objects.create(owner=self.user, )

        # Create our NEW recipient
        sender_user = User.objects.create_user(  # Create our user.
            email='*****@*****.**',
            username='******',
            password='******')
        sender_user.is_active = True
        sender_user.save()
        sender = Me.objects.create(owner=sender_user)

        # Create a new object with our specific test data.
        message = Message.objects.create(
            id=666,
            name="Unit Test #666",
            sender=sender,
            recipient=recipient,
        )
        message.participants.add(recipient, sender)
        message.save()

        # Run our test and verify.
        response = self.authorized_client.delete(
            '/api/tenantmessage/666/?format=json')
        self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
        self.assertEqual(Message.objects.all().count(),
                         1)  # Check message has not been deleted
        message = Message.objects.get(id=666)
        self.assertEqual(message.participants.count(), 1)

    @transaction.atomic
    def test_delete_with_different_sender(self):
        # Create our CURRENT sender.
        Me.objects.create(owner=self.user, )

        # Create our NEW sender.
        sender_user = User.objects.create_user(  # Create our user.
            email='*****@*****.**',
            username='******',
            password='******')
        sender_user.is_active = True
        sender_user.save()
        sender = Me.objects.create(owner=sender_user)

        # Create our NEW recipient
        recipient_user = User.objects.create_user(  # Create our user.
            email='*****@*****.**',
            username='******',
            password='******')
        recipient_user.is_active = True
        recipient_user.save()
        recipient = Me.objects.create(owner=recipient_user)

        # Create a new object with our specific test data.
        message = Message.objects.create(
            id=666,
            name="Unit Test #666",
            recipient=recipient,
            sender=sender,
        )
        message.participants.add(recipient, sender)
        message.save()

        # Run our test and verify.
        response = self.authorized_client.delete(
            '/api/tenantmessage/666/?format=json')
        self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
        self.assertEqual(Message.objects.all().count(), 1)
        message = Message.objects.get(id=666)
        self.assertEqual(message.participants.count(), 2)
Beispiel #19
0
class TenantTeamTestCases(APITestCase, TenantTestCase):
    fixtures = []

    def setup_tenant(self, tenant):
        """Tenant Schema"""
        tenant.schema_name = 'galacticallianceofhumankind'
        tenant.name = "Galactic Alliance of Humankind"
        tenant.is_setup = True
        tenant.has_perks = True
        tenant.has_mentors = True
        tenant.how_discovered = "Command HQ"
        tenant.how_many_served = 1

    @classmethod
    def setUpTestData(cls):
        Group.objects.bulk_create([
            Group(
                id=constants.ENTREPRENEUR_GROUP_ID,
                name="Entreprenuer",
            ),
            Group(
                id=constants.MENTOR_GROUP_ID,
                name="Mentor",
            ),
            Group(
                id=constants.ADVISOR_GROUP_ID,
                name="Advisor",
            ),
            Group(
                id=constants.ORGANIZATION_MANAGER_GROUP_ID,
                name="Org Manager",
            ),
            Group(
                id=constants.ORGANIZATION_ADMIN_GROUP_ID,
                name="Org Admin",
            ),
            Group(
                id=constants.CLIENT_MANAGER_GROUP_ID,
                name="Client Manager",
            ),
            Group(
                id=constants.SYSTEM_ADMIN_GROUP_ID,
                name="System Admin",
            ),
        ])
        User.objects.bulk_create([
            User(
                email='*****@*****.**',
                username='******',
                password='******',
                is_active=True,
            ),
            User(
                email='*****@*****.**',
                username='******',
                password='******',
                is_active=True,
            ),
            User(
                email='*****@*****.**',
                username='******',
                password='******',
                is_active=True,
            ),
            User(
                email='*****@*****.**',
                username='******',
                password='******',
                is_active=True,
            ),
            User(
                email='*****@*****.**',
                username='******',
                password='******',
                is_active=True,
            ),
            User(
                email='*****@*****.**',
                username='******',
                password='******',
                is_active=True,
            ),
            User(
                email='*****@*****.**',
                username='******',
                password='******',
                is_active=True,
            ),
            User(
                email='*****@*****.**',
                username='******',
                password='******',
                is_active=True,
            ),
            User(
                email='*****@*****.**',
                username='******',
                password='******',
                is_active=True,
            ),
        ])
        user = User.objects.create_user(  # Create our User.
            email=TEST_USER_EMAIL,
            username=TEST_USER_USERNAME,
            password=TEST_USER_PASSWORD)
        user.is_active = True
        user.save()

    @transaction.atomic
    def setUp(self):
        translation.activate('en')  # Set English
        super(TenantTeamTestCases, self).setUp()
        # Initialize our test data.
        self.user = User.objects.get(username=TEST_USER_USERNAME)
        token = Token.objects.get(user=self.user)

        # Setup.
        self.unauthorized_client = TenantClient(self.tenant)
        self.authorized_client = TenantClient(self.tenant,
                                              HTTP_AUTHORIZATION='Token ' +
                                              token.key)
        self.authorized_client.login(username=TEST_USER_USERNAME,
                                     password=TEST_USER_PASSWORD)

        # Update Organization.
        self.tenant.users.add(self.user)
        self.tenant.save()

        # Setup User.
        country = CountryOption.objects.create(id=666, name="Avalon")
        region = ProvinceOption.objects.create(id=666,
                                               name="Colony Pod #1",
                                               country=country)
        address = PostalAddress.objects.create(id=666,
                                               country=country,
                                               region=region,
                                               locality="District 9")
        self.me = Me.objects.create(
            id=666,
            owner=self.user,
            address=address,
        )
        manager_group = Group.objects.get(
            id=constants.ORGANIZATION_MANAGER_GROUP_ID)
        self.me.owner.groups.add(manager_group)

    @transaction.atomic
    def tearDown(self):
        CountryOption.objects.delete_all()
        ProvinceOption.objects.delete_all()
        PostalAddress.objects.delete_all()
        ContactPoint.objects.delete_all()
        Me.objects.delete_all()
        users = User.objects.all()
        for user in users.all():
            user.delete()
        # super(TenantTeamTestCases, self).tearDown()

    @transaction.atomic
    def test_master_page(self):
        url = reverse('tenant_team_master')
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertTrue(len(response.content) > 1)
        self.assertIn(b'Team', response.content)

    @transaction.atomic
    def test_create_page(self):
        url = reverse('tenant_team_create')
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_302_FOUND)

    @transaction.atomic
    def test_update_page(self):
        url = reverse('tenant_team_update', args=[
            self.me.id,
        ])
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertTrue(len(response.content) > 1)
        self.assertIn(b'Team', response.content)
Beispiel #20
0
class MessageTestCases(APITestCase, TenantTestCase):
    fixtures = []

    def setup_tenant(self, tenant):
        """Tenant Schema"""
        tenant.schema_name = 'galacticalliance'
        tenant.name = "Galactic Alliance of Humankind"
        tenant.is_setup = True
        tenant.has_perks = True
        tenant.has_mentors = True
        tenant.how_discovered = "Command HQ"
        tenant.how_many_served = 1

    @classmethod
    def setUpTestData(cls):
        Group.objects.bulk_create([
            Group(
                id=constants.ENTREPRENEUR_GROUP_ID,
                name="Entreprenuer",
            ),
            Group(
                id=constants.MENTOR_GROUP_ID,
                name="Mentor",
            ),
            Group(
                id=constants.ADVISOR_GROUP_ID,
                name="Advisor",
            ),
            Group(
                id=constants.ORGANIZATION_MANAGER_GROUP_ID,
                name="Org Manager",
            ),
            Group(
                id=constants.ORGANIZATION_ADMIN_GROUP_ID,
                name="Org Admin",
            ),
            Group(
                id=constants.CLIENT_MANAGER_GROUP_ID,
                name="Client Manager",
            ),
            Group(
                id=constants.SYSTEM_ADMIN_GROUP_ID,
                name="System Admin",
            ),
        ])
        User.objects.bulk_create([
            User(
                email='*****@*****.**',
                username='******',
                password='******',
                is_active=True,
            ),
            User(
                email='*****@*****.**',
                username='******',
                password='******',
                is_active=True,
            ),
            User(
                email='*****@*****.**',
                username='******',
                password='******',
                is_active=True,
            ),
            User(
                email='*****@*****.**',
                username='******',
                password='******',
                is_active=True,
            ),
            User(
                email='*****@*****.**',
                username='******',
                password='******',
                is_active=True,
            ),
            User(
                email='*****@*****.**',
                username='******',
                password='******',
                is_active=True,
            ),
            User(
                email='*****@*****.**',
                username='******',
                password='******',
                is_active=True,
            ),
            User(
                email='*****@*****.**',
                username='******',
                password='******',
                is_active=True,
            ),
            User(
                email='*****@*****.**',
                username='******',
                password='******',
                is_active=True,
            ),
        ])
        user = User.objects.create_user(  # Create our User.
            email=TEST_USER_EMAIL,
            username=TEST_USER_USERNAME,
            password=TEST_USER_PASSWORD,
            first_name=TEST_USER_FIRST_NAME,
            last_name=TEST_USER_LAST_NAME,
        )
        user.is_active = True
        user.save()

    @transaction.atomic
    def setUp(self):
        translation.activate('en')  # Set English
        super(MessageTestCases, self).setUp()
        # Initialize our test data.
        self.user = User.objects.get(username=TEST_USER_USERNAME)
        token = Token.objects.get(user=self.user)

        # Setup.
        self.unauthorized_client = TenantClient(self.tenant)
        self.authorized_client = TenantClient(self.tenant,
                                              HTTP_AUTHORIZATION='Token ' +
                                              token.key)
        self.authorized_client.login(username=TEST_USER_USERNAME,
                                     password=TEST_USER_PASSWORD)

        # Update Organization.
        self.tenant.users.add(self.user)
        self.tenant.save()

    @transaction.atomic
    def tearDown(self):
        Message.objects.delete_all()
        PostalAddress.objects.delete_all()
        ContactPoint.objects.delete_all()
        Me.objects.delete_all()
        items = Group.objects.all()
        for item in items.all():
            item.delete()
        items = User.objects.all()
        for item in items.all():
            item.delete()
        # super(MessageTestCases, self).tearDown()

    @transaction.atomic
    def test_inbox_page(self):
        url = reverse('tenant_message_inbox')
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertTrue(len(response.content) > 1)
        self.assertIn(b'id_table', response.content)

    @transaction.atomic
    def test_composer_page(self):
        url = reverse('tenant_message_composer')
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertTrue(len(response.content) > 1)
        self.assertIn(b'ajax_create_message', response.content)

    @transaction.atomic
    def test_specific_composer_page(self):
        recipient, created = Me.objects.get_or_create(owner=self.user, )
        url = reverse('tenant_message_specific_composer',
                      args=[
                          recipient.id,
                      ])
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertTrue(len(response.content) > 1)
        self.assertIn(b'ajax_create_message', response.content)

    @transaction.atomic
    def test_conversation_page(self):
        # Create our sender.
        recipient, created = Me.objects.get_or_create(owner=self.user, )

        # Create our recipient
        sender_user = User.objects.create_user(email='*****@*****.**',
                                               username='******',
                                               password='******')
        sender_user.is_active = True
        sender_user.save()
        sender = Me.objects.create(id=666, owner=sender_user)

        # Create a new object with our specific test data.
        message = Message.objects.create(
            name="Unit Test",
            description="This is a unit test message.",
            recipient=recipient,
            sender=sender,
        )
        message.participants.add(sender, recipient)
        message.save()

        # Run the test and verify.
        url = reverse('tenant_conversation', args=[
            666,
        ])
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertTrue(len(response.content) > 1)
        self.assertIn(b'This is a unit test message.', response.content)

    @transaction.atomic
    def test_archive_conversation_page(self):
        # Create our sender.
        recipient = Me.objects.create(
            id=999,
            owner=self.user,
        )

        # Create our recipient
        sender_user = User.objects.create_user(email='*****@*****.**',
                                               username='******',
                                               password='******')
        sender_user.is_active = True
        sender_user.save()
        sender = Me.objects.create(id=666, owner=sender_user)

        # Create a new object with our specific test data.
        message = Message.objects.create(
            name="Unit Test #666",
            description="This is a test message.",
            recipient=recipient,
            sender=sender,
        )

        # Run the test and verify.
        url = reverse('tenant_archive_conversation', args=[
            666,
        ])
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code,
                         status.HTTP_302_FOUND)  # Redirect happens.

    @transaction.atomic
    def test_archive_list_page(self):
        url = reverse('tenant_archive_inbox')
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertTrue(len(response.content) > 1)
        self.assertIn(b'Archive', response.content)

    @transaction.atomic
    def test_archive_details_page(self):
        # Create our sender.
        recipient = Me.objects.create(
            id=999,
            owner=self.user,
        )

        # Create our recipient
        sender_user = User.objects.create_user(email='*****@*****.**',
                                               username='******',
                                               password='******')
        sender_user.is_active = True
        sender_user.save()
        sender = Me.objects.create(id=666, owner=sender_user)

        # Create a new object with our specific test data.
        message = Message.objects.create(
            name="Test Message",
            description="This is a test message.",
            recipient=recipient,
            sender=sender,
        )

        # Run the test and verify.
        url = reverse('tenant_archive_details', args=[
            666,
        ])
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertTrue(len(response.content) > 1)
        self.assertIn(b'This is a test message.', response.content)
Beispiel #21
0
class TestSharedFranchiseViews(TenantTestCase):
    """
    Class used to test the web views.

    Console:
    python manage.py test shared_franchise.tests
    """
    @classmethod
    def setUpClass(cls):
        """
        Run at the beginning before all the unit tests run.
        """
        super().setUpClass()

    def setUp(self):
        """
        Run at the beginning of every unit test.
        """
        super(TestSharedFranchiseViews, self).setUp()

        # Setup our app and account.
        call_command('init_app', verbosity=0)
        call_command('create_shared_account',
                     TEST_USER_EMAIL,
                     TEST_USER_PASSWORD,
                     "Bart",
                     "Mika",
                     verbosity=0)

        # Get user and credentials.
        user = SharedUser.objects.get()
        token, orig_iat = get_jwt_token_and_orig_iat(user)

        # Setup our clients.
        self.anon_c = TenantClient(self.tenant)
        self.auth_c = TenantClient(self.tenant,
                                   HTTP_AUTHORIZATION='JWT {0}'.format(token))
        self.auth_c.login(username=TEST_USER_USERNAME,
                          password=TEST_USER_PASSWORD)

        # Attach our user(s) to our test tenant organization.
        user.franchise = self.tenant
        user.save()

    def tearDown(self):
        """
        Run at the end of every unit test.
        """
        # Delete our clients.
        del self.anon_c
        del self.auth_c

        # Delete previous data.
        SharedUser.objects.all().delete()

        # Finish teardown.
        super(TestSharedFranchiseViews, self).tearDown()

    def test_shared_franchise_list_page(self):
        response = self.auth_c.get(reverse('workery_shared_franchise_list'))
        self.assertEqual(response.status_code, status.HTTP_200_OK)

    def test_hared_franchise_create_1_of_3_page(self):
        response = self.auth_c.get(
            reverse('workery_shared_franchise_create_1_of_3'), )
        self.assertEqual(response.status_code, status.HTTP_200_OK)

    def test_shared_franchise_create_2_of_3_page(self):
        response = self.auth_c.get(
            reverse('workery_shared_franchise_create_2_of_3'), )
        self.assertEqual(response.status_code, status.HTTP_200_OK)

    def test_shared_franchise_create_3_of_3_page(self):
        response = self.auth_c.get(
            reverse('workery_shared_franchise_create_3_of_3'), )
        self.assertEqual(response.status_code, status.HTTP_200_OK)
class FoundationPublicDecoratorWithPublicSchemaTestCase(
        APITestCase, TenantTestCase):
    fixtures = []

    def setup_tenant(self, tenant):
        """Public Schema"""
        tenant.schema_name = 'test'
        tenant.name = "Galactic Alliance of Humankind"
        tenant.has_perks = True
        tenant.has_mentors = True
        tenant.how_discovered = "Command HQ"
        tenant.how_many_served = 1

    @transaction.atomic
    def setUp(self):
        translation.activate('en')  # Set English
        super(FoundationPublicDecoratorWithPublicSchemaTestCase, self).setUp()

        # Initialize our test data.
        Group.objects.bulk_create([
            Group(
                id=constants.ENTREPRENEUR_GROUP_ID,
                name="Entreprenuer",
            ),
            Group(
                id=constants.MENTOR_GROUP_ID,
                name="Mentor",
            ),
            Group(
                id=constants.ADVISOR_GROUP_ID,
                name="Advisor",
            ),
            Group(
                id=constants.ORGANIZATION_MANAGER_GROUP_ID,
                name="Org Manager",
            ),
            Group(
                id=constants.ORGANIZATION_ADMIN_GROUP_ID,
                name="Org Admin",
            ),
            Group(
                id=constants.CLIENT_MANAGER_GROUP_ID,
                name="Client Manager",
            ),
            Group(
                id=constants.SYSTEM_ADMIN_GROUP_ID,
                name="System Admin",
            ),
        ])

        self.user = User.objects.create_user(  # Create our User.
            email=TEST_USER_EMAIL,
            username=TEST_USER_USERNAME,
            password=TEST_USER_PASSWORD)
        self.user.is_active = True
        self.user.save()
        token = Token.objects.get(user__username=TEST_USER_USERNAME)

        # Setup.
        self.unauthorized_client = TenantClient(self.tenant)
        self.authorized_client = TenantClient(self.tenant,
                                              HTTP_AUTHORIZATION='Token ' +
                                              token.key)
        self.authorized_client.login(username=TEST_USER_USERNAME,
                                     password=TEST_USER_PASSWORD)

        # Update Organization.
        self.tenant.users.add(self.user)
        self.tenant.save()

    @transaction.atomic
    def tearDown(self):
        users = User.objects.all()
        groups = Group.objects.all()
        for user in users.all():
            user.delete()
        for group in groups.all():
            group.delete()
        # super(FoundationPublicDecoratorWithPublicSchemaTestCase, self).tearDown()

    @transaction.atomic
    def test_tenant_required_decorator_with_access_denied(self):
        response = self.authorized_client.get(reverse('tenant_is_valid'))
        self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)

    @transaction.atomic
    def test_group_is_org_admin_with_failure1(self):
        org_admin_group = Group.objects.get(
            id=constants.ORGANIZATION_ADMIN_GROUP_ID)
        self.user.groups.add(org_admin_group)
        self.user.save()
        response = self.authorized_client.get(reverse('group_is_entrepreneur'))
        self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)

    @transaction.atomic
    def test_group_is_org_admin_with_failure2(self):
        entrepreneur_group = Group.objects.get(
            id=constants.ENTREPRENEUR_GROUP_ID)
        self.user.groups.add(entrepreneur_group)
        self.user.save()
        response = self.authorized_client.get(reverse('group_is_org_admin'))
        self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)

    @transaction.atomic
    def test_group_required_with_success(self):
        org_admin_group = Group.objects.get(
            id=constants.ORGANIZATION_ADMIN_GROUP_ID)
        entrepreneur_group = Group.objects.get(
            id=constants.ENTREPRENEUR_GROUP_ID)
        self.user.groups.add(org_admin_group)
        self.user.groups.add(entrepreneur_group)
        self.user.save()
        response = self.authorized_client.get(reverse('group_is_org_admin'))
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        response = self.authorized_client.get(reverse('group_is_entrepreneur'))
        self.assertEqual(response.status_code, status.HTTP_200_OK)
Beispiel #23
0
class TenantCalendarTestCases(APITestCase, TenantTestCase):
    fixtures = []

    def setup_tenant(self, tenant):
        """Tenant Schema"""
        tenant.schema_name = 'galacticalliance'
        tenant.name = "Galactic Alliance of Humankind"
        tenant.is_setup = True
        tenant.has_perks = True
        tenant.has_mentors = True
        tenant.how_discovered = "Command HQ"
        tenant.how_many_served = 1

    @classmethod
    def setUpTestData(cls):
        Group.objects.bulk_create([
            Group(
                id=constants.ENTREPRENEUR_GROUP_ID,
                name="Entreprenuer",
            ),
            Group(
                id=constants.MENTOR_GROUP_ID,
                name="Mentor",
            ),
            Group(
                id=constants.ADVISOR_GROUP_ID,
                name="Advisor",
            ),
            Group(
                id=constants.ORGANIZATION_MANAGER_GROUP_ID,
                name="Org Manager",
            ),
            Group(
                id=constants.ORGANIZATION_ADMIN_GROUP_ID,
                name="Org Admin",
            ),
            Group(
                id=constants.CLIENT_MANAGER_GROUP_ID,
                name="Client Manager",
            ),
            Group(
                id=constants.SYSTEM_ADMIN_GROUP_ID,
                name="System Admin",
            ),
        ])
        User.objects.bulk_create([
            User(
                email='*****@*****.**',
                username='******',
                password='******',
                is_active=True,
            ),
            User(
                email='*****@*****.**',
                username='******',
                password='******',
                is_active=True,
            ),
            User(
                email='*****@*****.**',
                username='******',
                password='******',
                is_active=True,
            ),
            User(
                email='*****@*****.**',
                username='******',
                password='******',
                is_active=True,
            ),
            User(
                email='*****@*****.**',
                username='******',
                password='******',
                is_active=True,
            ),
            User(
                email='*****@*****.**',
                username='******',
                password='******',
                is_active=True,
            ),
            User(
                email='*****@*****.**',
                username='******',
                password='******',
                is_active=True,
            ),
            User(
                email='*****@*****.**',
                username='******',
                password='******',
                is_active=True,
            ),
            User(
                email='*****@*****.**',
                username='******',
                password='******',
                is_active=True,
            ),
        ])
        user = User.objects.create_user(  # Create our User.
            email=TEST_USER_EMAIL,
            username=TEST_USER_USERNAME,
            password=TEST_USER_PASSWORD)
        user.is_active = True
        user.save()

    @transaction.atomic
    def setUp(self):
        translation.activate('en')  # Set English
        super(TenantCalendarTestCases, self).setUp()
        # Initialize our test data.
        self.user = User.objects.get(username=TEST_USER_USERNAME)
        token = Token.objects.get(user=self.user)

        # Setup.
        self.unauthorized_client = TenantClient(self.tenant)
        self.authorized_client = TenantClient(self.tenant,
                                              HTTP_AUTHORIZATION='Token ' +
                                              token.key)
        self.authorized_client.login(username=TEST_USER_USERNAME,
                                     password=TEST_USER_PASSWORD)

        # Update Organization.
        self.tenant.users.add(self.user)
        self.tenant.save()

        # Create our Profile.
        country = CountryOption.objects.create(id=1, name='Avalan')
        province = ProvinceOption.objects.create(id=1,
                                                 name='Colony 01',
                                                 country=country)
        city = CityOption.objects.create(
            id=1,
            name='Megazone 23',
            province=province,
            country=country,
        )
        self.me = Me.objects.create(
            owner=self.user,
            is_in_intake=True,
            address=PostalAddress.objects.create(
                country=CountryOption.objects.get(id=1),
                region=ProvinceOption.objects.get(id=1),
                locality=CityOption.objects.get(id=1),
                owner=self.user))

    @transaction.atomic
    def tearDown(self):
        PostalAddress.objects.delete_all()
        ContactPoint.objects.delete_all()
        CityOption.objects.delete_all()
        ProvinceOption.objects.delete_all()
        CountryOption.objects.delete_all()
        Me.objects.delete_all()
        users = User.objects.all()
        for user in users.all():
            user.delete()
        # super(TenantCalendarTestCases, self).tearDown()

    @transaction.atomic
    def test_calendar_master_page(self):
        url = reverse('tenant_calendar_master')
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertTrue(len(response.content) > 1)
        self.assertIn(b'Calendar', response.content)

    @transaction.atomic
    def test_calendar_details_page(self):
        calendar_event = CalendarEvent.objects.create(
            id=666,
            owner=self.user,
            name='Celebrate victorious battle of Hideauze',
            description='Come and celebrate!',
            start='1980-01-01',
            finish='1980-01-01',
        )
        calendar_event.pending.add(self.me)
        url = reverse('tenant_calendar_details_edit',
                      args=[
                          calendar_event.id,
                      ])
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertTrue(len(response.content) > 1)
        self.assertIn(b'Calendar', response.content)

    @transaction.atomic
    def test_calendar_info_page(self):
        calendar_event = CalendarEvent.objects.create(
            id=666,
            owner=self.user,
            name='Celebrate victorious battle of Hideauze',
            description='Come and celebrate!',
            start='1980-01-01',
            finish='1980-01-01',
        )
        calendar_event.pending.add(self.me)
        url = reverse('tenant_calendar_details_info',
                      args=[
                          calendar_event.id,
                      ])
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertTrue(len(response.content) > 1)
        self.assertIn(b'Calendar', response.content)

    @transaction.atomic
    def test_calendar_created_page(self):
        url = reverse('tenant_calendar_create')
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertTrue(len(response.content) > 1)
        self.assertIn(b'Calendar', response.content)
class FoundationConfigurationOrganizationViewsWithTenatSchemaTestCases(
        APITestCase, TenantTestCase):
    fixtures = []

    def setup_tenant(self, tenant):
        """Tenant Schema"""
        tenant.schema_name = 'galacticalliance'
        tenant.name = "Galactic Alliance of Humankind"
        tenant.has_perks = True
        tenant.has_mentors = True
        tenant.how_discovered = "Command HQ"
        tenant.how_many_served = 1

    @classmethod
    def setUpTestData(cls):
        Group.objects.bulk_create([
            Group(
                id=constants.ENTREPRENEUR_GROUP_ID,
                name="Entreprenuer",
            ),
            Group(
                id=constants.MENTOR_GROUP_ID,
                name="Mentor",
            ),
            Group(
                id=constants.ADVISOR_GROUP_ID,
                name="Advisor",
            ),
            Group(
                id=constants.ORGANIZATION_MANAGER_GROUP_ID,
                name="Org Manager",
            ),
            Group(
                id=constants.ORGANIZATION_ADMIN_GROUP_ID,
                name="Org Admin",
            ),
            Group(
                id=constants.CLIENT_MANAGER_GROUP_ID,
                name="Client Manager",
            ),
            Group(
                id=constants.SYSTEM_ADMIN_GROUP_ID,
                name="System Admin",
            ),
        ])

        user = User.objects.create_user(  # Create our User.
            email=TEST_USER_EMAIL,
            username=TEST_USER_USERNAME,
            password=TEST_USER_PASSWORD)
        user.is_active = True
        user.save()

    @transaction.atomic
    def setUp(self):
        translation.activate('en')  # Set English
        super(FoundationConfigurationOrganizationViewsWithTenatSchemaTestCases,
              self).setUp()

        # Initialize our test data.
        self.user = User.objects.get()
        token = Token.objects.get(user__username=TEST_USER_USERNAME)

        # Setup.
        self.unauthorized_client = TenantClient(self.tenant)
        self.authorized_client = TenantClient(self.tenant,
                                              HTTP_AUTHORIZATION='Token ' +
                                              token.key)
        self.authorized_client.login(username=TEST_USER_USERNAME,
                                     password=TEST_USER_PASSWORD)

        # Update Organization.
        self.tenant.users.add(self.user)
        self.tenant.save()

    @transaction.atomic
    def tearDown(self):
        PostalAddress.objects.delete_all()
        ContactPoint.objects.delete_all()
        BusinessIdea.objects.delete_all()
        Tag.objects.delete_all()
        Me.objects.delete_all()
        users = User.objects.all()
        for user in users.all():
            user.delete()
        groups = Group.objects.all()
        for group in groups.all():
            group.delete()
        # super(FoundationConfigurationOrganizationViewsWithTenatSchemaTestCases, self).tearDown()

    #------------------------------------------------#
    # DEVELOPERS NOTE:                               #
    # (1) Cannot run this unit test for some reason. #
    #------------------------------------------------#

    # @transaction.atomic
    # def test_config_org_step_one_page_view_with_success(self):
    #     # Setup our User.
    #     org_admin_group = Group.objects.get(id=constants.ORGANIZATION_ADMIN_GROUP_ID)
    #     self.user.groups.add(org_admin_group)
    #     self.user.save()
    #
    #     # Test & verify.
    #     url = reverse('foundation_auth_config_org_step_one')
    #     response = self.authorized_client.get(url)
    #     self.assertEqual(response.status_code, status.HTTP_200_OK)

    @transaction.atomic
    def test_config_org_step_one_page_view_with_failure(self):
        url = reverse('foundation_auth_config_org_step_one')
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)

    @transaction.atomic
    def test_config_org_step_two_page_view_with_success(self):
        # Setup our User.
        org_admin_group = Group.objects.get(
            id=constants.ORGANIZATION_ADMIN_GROUP_ID)
        self.user.groups.add(org_admin_group)
        self.user.save()

        # Test & verify.
        url = reverse('foundation_auth_config_org_step_two')
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)

    @transaction.atomic
    def test_config_org_step_two_page_view_with_failure(self):
        url = reverse('foundation_auth_config_org_step_two')
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)

    @transaction.atomic
    def test_config_org_step_three_page_view_with_success(self):
        # Setup our User.
        org_admin_group = Group.objects.get(
            id=constants.ORGANIZATION_ADMIN_GROUP_ID)
        self.user.groups.add(org_admin_group)
        self.user.save()

        # Test & verify.
        url = reverse('foundation_auth_config_org_step_three')
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)

    @transaction.atomic
    def test_config_org_step_three_page_view_with_failure(self):
        # Test & verify.
        url = reverse('foundation_auth_config_org_step_three')
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)

    @transaction.atomic
    def test_config_org_step_four_page_view_with_success(self):
        # Setup our User.
        org_admin_group = Group.objects.get(
            id=constants.ORGANIZATION_ADMIN_GROUP_ID)
        self.user.groups.add(org_admin_group)
        self.user.save()

        # Test & verify.
        url = reverse('foundation_auth_config_org_step_four')
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)

    @transaction.atomic
    def test_config_org_step_four_page_view_with_failure(self):
        url = reverse('foundation_auth_config_org_step_four')
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)

    @transaction.atomic
    def test_config_org_step_five_page_view_with_success(self):
        # Setup our User.
        org_admin_group = Group.objects.get(
            id=constants.ORGANIZATION_ADMIN_GROUP_ID)
        self.user.groups.add(org_admin_group)
        self.user.save()

        # Test & verify.
        url = reverse('foundation_auth_config_org_step_five')
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)

    @transaction.atomic
    def test_config_org_step_five_page_view_with_failure(self):
        url = reverse('foundation_auth_config_org_step_five')
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)

    @transaction.atomic
    def test_config_org_step_six_page_view_with_success(self):
        # Setup our User.
        org_admin_group = Group.objects.get(
            id=constants.ORGANIZATION_ADMIN_GROUP_ID)
        self.user.groups.add(org_admin_group)
        self.user.save()

        # Test & verify.
        url = reverse('foundation_auth_config_org_step_six')
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)

    @transaction.atomic
    def test_config_org_step_six_page_view_with_failure(self):
        url = reverse('foundation_auth_config_org_step_six')
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)

    @transaction.atomic
    def test_config_org_step_seven_page_view_with_success(self):
        # Setup our User.
        org_admin_group = Group.objects.get(
            id=constants.ORGANIZATION_ADMIN_GROUP_ID)
        self.user.groups.add(org_admin_group)
        self.user.save()

        # Test & verify.
        url = reverse('foundation_auth_config_org_step_seven')
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)

    @transaction.atomic
    def test_config_org_step_seven_page_view_with_failure(self):
        url = reverse('foundation_auth_config_org_step_seven')
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)

    @transaction.atomic
    def test_config_org_step_eight_page_view_with_success(self):
        # Setup our User.
        org_admin_group = Group.objects.get(
            id=constants.ORGANIZATION_ADMIN_GROUP_ID)
        self.user.groups.add(org_admin_group)
        self.user.save()

        # Test & verify.
        url = reverse('foundation_auth_config_org_step_eight')
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)

    @transaction.atomic
    def test_config_org_step_eight_page_view_with_failure(self):
        url = reverse('foundation_auth_config_org_step_eight')
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
Beispiel #25
0
class APITagWithTenantSchemaTestCase(APITestCase, TenantTestCase):
    fixtures = []

    def setup_tenant(self, tenant):
        """Tenant Schema"""
        tenant.schema_name = 'galacticalliance'
        tenant.name = "Galactic Alliance of Humankind"
        tenant.has_perks=True
        tenant.has_mentors=True
        tenant.how_discovered = "Command HQ"
        tenant.how_many_served = 1

    @classmethod
    def setUpTestData(cls):
        Group.objects.bulk_create([
            Group(id=constants.ENTREPRENEUR_GROUP_ID, name="Entreprenuer",),
            Group(id=constants.MENTOR_GROUP_ID, name="Mentor",),
            Group(id=constants.ADVISOR_GROUP_ID, name="Advisor",),
            Group(id=constants.ORGANIZATION_MANAGER_GROUP_ID, name="Org Manager",),
            Group(id=constants.ORGANIZATION_ADMIN_GROUP_ID, name="Org Admin",),
            Group(id=constants.CLIENT_MANAGER_GROUP_ID, name="Client Manager",),
            Group(id=constants.SYSTEM_ADMIN_GROUP_ID, name="System Admin",),
        ])
        org_admin_group = Group.objects.get(id=constants.ORGANIZATION_ADMIN_GROUP_ID)
        user = User.objects.create_user(  # Create our user.
            email=TEST_USER_EMAIL,
            username=TEST_USER_USERNAME,
            password=TEST_USER_PASSWORD
        )
        user.is_superuser = True
        user.is_active = True
        user.groups.add(org_admin_group)
        user.save()

    @transaction.atomic
    def setUp(self):
        translation.activate('en')  # Set English.
        super(APITagWithTenantSchemaTestCase, self).setUp()

        # Initialize our test data.
        self.user = User.objects.get()
        token = Token.objects.get(user__username=TEST_USER_USERNAME)

        # Setup.
        self.unauthorized_client = TenantClient(self.tenant)
        self.authorized_client = TenantClient(self.tenant, HTTP_AUTHORIZATION='Token ' + token.key)
        self.authorized_client.login(
            username=TEST_USER_USERNAME,
            password=TEST_USER_PASSWORD
        )
        self.tenant.owner = self.user
        self.tenant.save()

        # Above taken from:
        # http://www.django-rest-framework.org/api-guide/testing/#authenticating

        # Initialize our test data.
        Tag.objects.bulk_create([
            Tag(name='1'),
            Tag(name='2'),
            Tag(name='3'),
        ])

    @transaction.atomic
    def tearDown(self):
        Tag.objects.delete_all()
        PostalAddress.objects.delete_all()
        ContactPoint.objects.delete_all()
        Me.objects.delete_all()
        users = User.objects.all()
        for user in users.all():
            user.delete()
        # super(APITagWithTenantSchemaTestCase, self).tearDown()

    @transaction.atomic
    def test_list_with_anonymous_user(self):
        response = self.unauthorized_client.get('/api/tenanttag/')
        self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)

    @transaction.atomic
    def test_list_with_authenticated_management_group_user(self):
        response = self.authorized_client.get('/api/tenanttag/')
        self.assertEqual(response.status_code, status.HTTP_200_OK)

    @transaction.atomic
    def test_list_with_authenticated_advisor_group_user(self):
        # Change Group that the User belongs in.
        org_admin_group = Group.objects.get(id=constants.ORGANIZATION_ADMIN_GROUP_ID)
        advisor_group = Group.objects.get(id=constants.ADVISOR_GROUP_ID)
        self.user.groups.remove(org_admin_group)
        self.user.groups.add(advisor_group)
        self.user.save()

        # Test and verify.
        response = self.authorized_client.get('/api/tenanttag/')
        self.assertEqual(response.status_code, status.HTTP_200_OK)

    @transaction.atomic
    def test_post_with_anonymous_user(self):
        data = {
            'name': 'Unit Test',
        }
        response = self.unauthorized_client.post('/api/tenanttag/', json.dumps(data), content_type='application/json')
        self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)

    @transaction.atomic
    def test_post_with_authenticated_management_group_user(self):
        # Run the test and verify.
        data = {
            'name': 'Unit Test',
        }
        response = self.authorized_client.post('/api/tenanttag/', json.dumps(data), content_type='application/json')
        self.assertEqual(response.status_code, status.HTTP_201_CREATED)

    @transaction.atomic
    def test_post_with_authenticated_advisor_group_user(self):
        # Change Group that the User belongs in.
        org_admin_group = Group.objects.get(id=constants.ORGANIZATION_ADMIN_GROUP_ID)
        advisor_group = Group.objects.get(id=constants.ADVISOR_GROUP_ID)
        self.user.groups.remove(org_admin_group)
        self.user.groups.add(advisor_group)
        self.user.save()

        # Test and verify.
        data = {
            'name': 'Unit Test',
        }
        response = self.authorized_client.post('/api/tenanttag/', json.dumps(data), content_type='application/json')
        self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)

    @transaction.atomic
    def test_put_with_anonymous_user(self):
        # Delete any previous data.
        items = Tag.objects.all()
        for item in items.all():
            item.delete()

        # Create a new object with our specific test data.
        Tag.objects.create(
            id=1,
            name="Unit Test",
        )

        # Run the test.
        data = {
            'id': 1,
            'name': 'Unit Test',
        }
        response = self.unauthorized_client.put('/api/tenanttag/1/', json.dumps(data), content_type='application/json')
        self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)

    @transaction.atomic
    def test_put_with_authenticated_management_user(self):
        # Delete any previous data.
        items = Tag.objects.all()
        for item in items.all():
            item.delete()

        # Create a new object with our specific test data.
        Tag.objects.create(
            id=1,
            name="Unit Test",
        )

        # Run the test.
        data = {
            'id': 1,
            'name': 'Unit Test',
        }
        response = self.authorized_client.put('/api/tenanttag/1/', json.dumps(data), content_type='application/json')
        self.assertEqual(response.status_code, status.HTTP_200_OK)

    @transaction.atomic
    def test_put_with_authenticated_advisor_user(self):
        # Change Group that the User belongs in.
        org_admin_group = Group.objects.get(id=constants.ORGANIZATION_ADMIN_GROUP_ID)
        advisor_group = Group.objects.get(id=constants.ADVISOR_GROUP_ID)
        self.user.groups.remove(org_admin_group)
        self.user.groups.add(advisor_group)
        self.user.save()

        # Delete any previous data.
        items = Tag.objects.all()
        for item in items.all():
            item.delete()

        # Create a new object with our specific test data.
        Tag.objects.create(
            id=1,
            name="Unit Test",
        )

        # Run the test.
        data = {
            'id': 1,
            'name': 'Unit Test',
        }
        response = self.authorized_client.put('/api/tenanttag/1/', json.dumps(data), content_type='application/json')
        self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)

    @transaction.atomic
    def test_delete_with_anonymous_user(self):
        response = self.unauthorized_client.delete('/api/tenanttag/1/')
        self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)

    @transaction.atomic
    def test_delete_with_authenticated_management_user(self):
        response = self.authorized_client.delete('/api/tenanttag/1/')
        self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)

    @transaction.atomic
    def test_delete_with_authenticated_advisor_user(self):
        # Change Group that the User belongs in.
        org_admin_group = Group.objects.get(id=constants.ORGANIZATION_ADMIN_GROUP_ID)
        advisor_group = Group.objects.get(id=constants.ADVISOR_GROUP_ID)
        self.user.groups.remove(org_admin_group)
        self.user.groups.add(advisor_group)
        self.user.save()

        # Run test and verify.
        response = self.authorized_client.delete('/api/tenanttag/1/')
        self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
Beispiel #26
0
class TenantCustomerTestCases(APITestCase, TenantTestCase):
    fixtures = []

    def setup_tenant(self, tenant):
        """Tenant Schema"""
        tenant.schema_name = 'galacticalliance'
        tenant.name = "Galactic Alliance of Humankind"
        tenant.is_setup = True
        tenant.has_perks = True
        tenant.has_mentors = True
        tenant.how_discovered = "Command HQ"
        tenant.how_many_served = 1

    @classmethod
    def setUpTestData(cls):
        Group.objects.bulk_create([
            Group(
                id=constants.ENTREPRENEUR_GROUP_ID,
                name="Entreprenuer",
            ),
            Group(
                id=constants.MENTOR_GROUP_ID,
                name="Mentor",
            ),
            Group(
                id=constants.ADVISOR_GROUP_ID,
                name="Advisor",
            ),
            Group(
                id=constants.ORGANIZATION_MANAGER_GROUP_ID,
                name="Org Manager",
            ),
            Group(
                id=constants.ORGANIZATION_ADMIN_GROUP_ID,
                name="Org Admin",
            ),
            Group(
                id=constants.CLIENT_MANAGER_GROUP_ID,
                name="Client Manager",
            ),
            Group(
                id=constants.SYSTEM_ADMIN_GROUP_ID,
                name="System Admin",
            ),
        ])
        User.objects.bulk_create([
            User(
                email='*****@*****.**',
                username='******',
                password='******',
                is_active=True,
            ),
            User(
                email='*****@*****.**',
                username='******',
                password='******',
                is_active=True,
            ),
            User(
                email='*****@*****.**',
                username='******',
                password='******',
                is_active=True,
            ),
            User(
                email='*****@*****.**',
                username='******',
                password='******',
                is_active=True,
            ),
            User(
                email='*****@*****.**',
                username='******',
                password='******',
                is_active=True,
            ),
            User(
                email='*****@*****.**',
                username='******',
                password='******',
                is_active=True,
            ),
            User(
                email='*****@*****.**',
                username='******',
                password='******',
                is_active=True,
            ),
            User(
                email='*****@*****.**',
                username='******',
                password='******',
                is_active=True,
            ),
            User(
                email='*****@*****.**',
                username='******',
                password='******',
                is_active=True,
            ),
        ])
        user = User.objects.create_user(  # Create our User.
            email=TEST_USER_EMAIL,
            username=TEST_USER_USERNAME,
            password=TEST_USER_PASSWORD)
        user.is_active = True
        user.save()

    @transaction.atomic
    def setUp(self):
        translation.activate('en')  # Set English
        super(TenantCustomerTestCases, self).setUp()
        # Initialize our test data.
        self.user = User.objects.get(username=TEST_USER_USERNAME)
        token = Token.objects.get(user=self.user)

        # Setup.
        self.unauthorized_client = TenantClient(self.tenant)
        self.authorized_client = TenantClient(self.tenant,
                                              HTTP_AUTHORIZATION='Token ' +
                                              token.key)
        self.authorized_client.login(username=TEST_USER_USERNAME,
                                     password=TEST_USER_PASSWORD)

        # Update Organization.
        self.tenant.users.add(self.user)
        self.tenant.save()

        # Setup User.
        Me.objects.create(owner=self.user, )

    @transaction.atomic
    def tearDown(self):
        PostalAddress.objects.delete_all()
        ContactPoint.objects.delete_all()
        Me.objects.delete_all()
        users = User.objects.all()
        for user in users.all():
            user.delete()
        # super(TenantCustomerTestCases, self).tearDown()

    @transaction.atomic
    def test_customer_master_page_with_200(self):
        url = reverse('tenant_customer_entrepreneur_master')
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertTrue(len(response.content) > 1)
        self.assertIn(b'Clients', response.content)

    @transaction.atomic
    def test_customer_details_page_with_404(self):
        url = reverse('tenant_customer_entrepreneur_details', args=[666])
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertTrue(len(response.content) > 1)
        self.assertIn(b'404', response.content)

    @transaction.atomic
    def test_customer_details_page_with_200(self):
        # Make employee
        advisor_group = Group.objects.get(id=constants.ADVISOR_GROUP_ID)
        self.user.groups.add(advisor_group)

        # Make Me setup.
        me = Me.objects.get()
        me.is_setup = True
        me.save()

        # Make Intake object.
        intake = Intake.objects.create(
            me=me,
            status=constants.APPROVED_STATUS,
        )

        # Run test and verify.
        url = reverse('tenant_customer_entrepreneur_details',
                      args=[
                          intake.id,
                      ])
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertTrue(len(response.content) > 1)
        self.assertIn(b'Clients', response.content)
Beispiel #27
0
class TenantDashboardTestCases(APITestCase, TenantTestCase):
    fixtures = []

    def setup_tenant(self, tenant):
        """Tenant Schema"""
        tenant.schema_name = 'galacticalliance'
        tenant.name = "Galactic Alliance of Humankind"
        tenant.is_setup = True
        tenant.has_perks = True
        tenant.has_mentors = True
        tenant.how_discovered = "Command HQ"
        tenant.how_many_served = 1

    @classmethod
    def setUpTestData(cls):
        Group.objects.bulk_create([
            Group(
                id=constants.ENTREPRENEUR_GROUP_ID,
                name="Entreprenuer",
            ),
            Group(
                id=constants.MENTOR_GROUP_ID,
                name="Mentor",
            ),
            Group(
                id=constants.ADVISOR_GROUP_ID,
                name="Advisor",
            ),
            Group(
                id=constants.ORGANIZATION_MANAGER_GROUP_ID,
                name="Org Manager",
            ),
            Group(
                id=constants.ORGANIZATION_ADMIN_GROUP_ID,
                name="Org Admin",
            ),
            Group(
                id=constants.CLIENT_MANAGER_GROUP_ID,
                name="Client Manager",
            ),
            Group(
                id=constants.SYSTEM_ADMIN_GROUP_ID,
                name="System Admin",
            ),
        ])
        User.objects.bulk_create([
            User(
                email='*****@*****.**',
                username='******',
                password='******',
                is_active=True,
            ),
            User(
                email='*****@*****.**',
                username='******',
                password='******',
                is_active=True,
            ),
            User(
                email='*****@*****.**',
                username='******',
                password='******',
                is_active=True,
            ),
            User(
                email='*****@*****.**',
                username='******',
                password='******',
                is_active=True,
            ),
            User(
                email='*****@*****.**',
                username='******',
                password='******',
                is_active=True,
            ),
            User(
                email='*****@*****.**',
                username='******',
                password='******',
                is_active=True,
            ),
            User(
                email='*****@*****.**',
                username='******',
                password='******',
                is_active=True,
            ),
            User(
                email='*****@*****.**',
                username='******',
                password='******',
                is_active=True,
            ),
            User(
                email='*****@*****.**',
                username='******',
                password='******',
                is_active=True,
            ),
        ])
        user = User.objects.create_user(  # Create our User.
            email=TEST_USER_EMAIL,
            username=TEST_USER_USERNAME,
            password=TEST_USER_PASSWORD)
        user.is_active = True
        user.save()

    @transaction.atomic
    def setUp(self):
        translation.activate('en')  # Set English
        super(TenantDashboardTestCases, self).setUp()
        # Initialize our test data.
        self.user = User.objects.get(username=TEST_USER_USERNAME)
        token = Token.objects.get(user=self.user)

        # Setup.
        self.unauthorized_client = TenantClient(self.tenant)
        self.authorized_client = TenantClient(self.tenant,
                                              HTTP_AUTHORIZATION='Token ' +
                                              token.key)
        self.authorized_client.login(username=TEST_USER_USERNAME,
                                     password=TEST_USER_PASSWORD)

        # Update Organization.
        self.tenant.users.add(self.user)
        self.tenant.save()

    @transaction.atomic
    def tearDown(self):
        PostalAddress.objects.delete_all()
        ContactPoint.objects.delete_all()
        Me.objects.delete_all()
        users = User.objects.all()
        for user in users.all():
            user.delete()
        items = Group.objects.all()
        for item in items.all():
            item.delete()
        # super(TenantDashboardTestCases, self).tearDown()

    @transaction.atomic
    def test_dashboard_page_with_anonymous_user(self):
        url = reverse('tenant_dashboard')
        response = self.unauthorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_302_FOUND)

    @transaction.atomic
    def test_dashboard_page_with_organization_admin_user(self):
        org_admin_group = Group.objects.get(
            id=constants.ORGANIZATION_ADMIN_GROUP_ID)
        self.user.groups.add(org_admin_group)
        self.user.save()

        url = reverse('tenant_dashboard')
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertTrue(len(response.content) > 1)
        self.assertIn(b'Dashboard', response.content)

    @transaction.atomic
    def test_dashboard_page_with_entrepreneur_user_when_not_admitted(self):
        entrepreneur_group = Group.objects.get(
            id=constants.ENTREPRENEUR_GROUP_ID)
        self.user.groups.add(entrepreneur_group)
        self.user.save()

        url = reverse('tenant_dashboard')
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_302_FOUND)

    @transaction.atomic
    def test_dashboard_page_with_entrepreneur_user_when_admitted(self):
        # Pre-configure the unit test.
        entrepreneur_group = Group.objects.get(
            id=constants.ENTREPRENEUR_GROUP_ID)
        self.user.groups.add(entrepreneur_group)
        self.user.save()
        me, created = Me.objects.get_or_create(owner=self.user)
        me.is_in_intake = True
        me.is_setup = True
        me.save()

        # Run test and verify.
        url = reverse('tenant_dashboard')
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertTrue(len(response.content) > 1)
        self.assertIn(b'Dashboard', response.content)
Beispiel #28
0
class APITaskBaseWithTenantSchemaTestCase(APITestCase, TenantTestCase):
    fixtures = []

    def setup_tenant(self, tenant):
        """Tenant Schema"""
        tenant.schema_name = 'galacticalliance'
        tenant.name = "Galactic Alliance of Humankind"
        tenant.has_perks = True
        tenant.has_mentors = True
        tenant.how_discovered = "Command HQ"
        tenant.how_many_served = 1

    @classmethod
    def setUpTestData(cls):
        Group.objects.bulk_create([
            Group(
                id=constants.ENTREPRENEUR_GROUP_ID,
                name="Entreprenuer",
            ),
            Group(
                id=constants.MENTOR_GROUP_ID,
                name="Mentor",
            ),
            Group(
                id=constants.ADVISOR_GROUP_ID,
                name="Advisor",
            ),
            Group(
                id=constants.ORGANIZATION_MANAGER_GROUP_ID,
                name="Org Manager",
            ),
            Group(
                id=constants.ORGANIZATION_ADMIN_GROUP_ID,
                name="Org Admin",
            ),
            Group(
                id=constants.CLIENT_MANAGER_GROUP_ID,
                name="Client Manager",
            ),
            Group(
                id=constants.SYSTEM_ADMIN_GROUP_ID,
                name="System Admin",
            ),
        ])
        user = User.objects.create_user(  # Create our user.
            email=TEST_USER_EMAIL,
            username=TEST_USER_USERNAME,
            password=TEST_USER_PASSWORD)
        user.is_active = True
        user.save()

    @transaction.atomic
    def setUp(self):
        translation.activate('en')  # Set English.
        super(APITaskBaseWithTenantSchemaTestCase, self).setUp()

        # Initialize our test data.
        self.user = User.objects.get()
        token = Token.objects.get(user__username=TEST_USER_USERNAME)

        # Setup.
        self.unauthorized_client = TenantClient(self.tenant)
        self.authorized_client = TenantClient(self.tenant,
                                              HTTP_AUTHORIZATION='Token ' +
                                              token.key)
        self.authorized_client.login(username=TEST_USER_USERNAME,
                                     password=TEST_USER_PASSWORD)

        # Above taken from:
        # http://www.django-rest-framework.org/api-guide/testing/#authenticating

        # Initialize our test data.
        Task.objects.bulk_create([
            Task(owner=self.user),
            Task(owner=self.user),
            Task(owner=self.user),
        ])

    @transaction.atomic
    def tearDown(self):
        PostalAddress.objects.delete_all()  # Must be above Tasks.
        ContactPoint.objects.delete_all()  # Must be above Tasks.
        CalendarEvent.objects.delete_all()
        Task.objects.delete_all()
        SortedLogEventByCreated.objects.delete_all()
        SortedCommentPostByCreated.objects.delete_all()
        Me.objects.delete_all()
        users = User.objects.all()
        for user in users.all():
            user.delete()
        # super(APITaskBaseWithTenantSchemaTestCase, self).tearDown()

    @transaction.atomic
    def test_list_with_anonymous_user(self):
        response = self.unauthorized_client.get('/api/tenanttask/')
        self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)

    @transaction.atomic
    def test_list_with_authenticated_user(self):
        me = Me.objects.create(  # Create our models.
            id=1,
            owner=self.user,
        )
        task = Task.objects.create(
            id=666,
            assigned_by=me,
            assignee=me,
        )
        response = self.authorized_client.get(
            '/api/tenanttask/')  # Run test and verify.
        self.assertEqual(response.status_code, status.HTTP_200_OK)

    @transaction.atomic
    def test_post_with_anonymous_user(self):
        me = Me.objects.create(
            id=1,
            owner=self.user,
        )
        data = {
            'name': 'Unit Test',
            'description': 'Used for unit testing purposes.',
            'assigned_by': me.id,
            'assignee': me.id,
            'status': constants.OPEN_TASK_STATUS,
        }
        response = self.unauthorized_client.post(
            '/api/tenanttask/',
            json.dumps(data),
            content_type='application/json')
        self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)

    @transaction.atomic
    def test_post_with_authenticated_user(self):
        me = Me.objects.create(
            id=1,
            owner=self.user,
        )
        data = {
            'name': 'Unit Test',
            'description': 'Used for unit testing purposes.',
            'assigned_by': me.id,
            'assignee': me.id,
            'status': constants.OPEN_TASK_STATUS,
        }
        response = self.authorized_client.post('/api/tenanttask/',
                                               json.dumps(data),
                                               content_type='application/json')
        self.assertEqual(response.status_code, status.HTTP_201_CREATED)

    @transaction.atomic
    def test_put_with_anonymous_user(self):
        me = Me.objects.create(
            id=1,
            owner=self.user,
        )
        task = Task.objects.create(
            id=666,
            assigned_by=me,
            assignee=me,
        )
        data = {
            'id': task.id,
            'name': 'Unit Test',
            'description': 'Used for unit testing purposes.',
            'assigned_by': me.id,
            'assignee': me.id,
            'status': constants.OPEN_TASK_STATUS,
        }
        response = self.unauthorized_client.put(
            '/api/tenanttask/666/',
            json.dumps(data),
            content_type='application/json')
        self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)

    @transaction.atomic
    def test_put_with_owner_user(self):
        me = Me.objects.create(
            id=1,
            owner=self.user,
        )
        task = Task.objects.create(
            id=666,
            owner=self.user,
            assigned_by=me,
            assignee=me,
        )
        data = {
            'id': task.id,
            'name': 'Unit Test',
            'description': 'Used for unit testing purposes.',
            'assigned_by': me.id,
            'assignee': me.id,
            'status': constants.OPEN_TASK_STATUS,
        }
        response = self.authorized_client.put('/api/tenanttask/666/',
                                              json.dumps(data),
                                              content_type='application/json')
        self.assertEqual(response.status_code, status.HTTP_200_OK)

    @transaction.atomic
    def test_delete_by_anonymous_user(self):
        me = Me.objects.create(
            id=1,
            owner=self.user,
        )
        task = Task.objects.create(
            id=666,
            owner=self.user,
            assigned_by=me,
            assignee=me,
        )
        response = self.unauthorized_client.delete('/api/tenanttask/' +
                                                   str(task.id) + '/')
        self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)

    @transaction.atomic
    def test_delete_by_owner_user(self):
        me = Me.objects.create(
            id=1,
            owner=self.user,
        )
        calendar_event = CalendarEvent.objects.create(id=666, owner=self.user)
        task = Task.objects.create(id=666,
                                   owner=self.user,
                                   assigned_by=me,
                                   assignee=me,
                                   calendar_event=calendar_event)
        response = self.authorized_client.delete('/api/tenanttask/' +
                                                 str(task.id) + '/')
        self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
Beispiel #29
0
class TestTenantPartnerViews(TenantTestCase):
    """
    Console:
    python manage.py test tenant_partner.tests
    """

    #------------------#
    # Setup Unit Tests #
    #------------------#

    def setup_tenant(tenant):
        """Tenant Schema"""
        tenant.schema_name = TEST_SCHEMA_NAME
        tenant.name = 'Over 55 (London) Inc.',
        tenant.alternate_name = "Over55",
        tenant.description = "Located at the Forks of the Thames in ...",
        tenant.address_country = "CA",
        tenant.address_locality = "London",
        tenant.address_region = "Ontario",
        tenant.post_office_box_number = "",  # Post Offic #
        tenant.postal_code = "N6H 1B4",
        tenant.street_address = "78 Riverside Drive",
        tenant.street_address_extra = "",  # Extra line.

    @classmethod
    def setUpClass(cls):
        """
        Run at the beginning before all the unit tests run.
        """
        super().setUpClass()

    def setUp(self):
        """
        Run at the beginning of every unit test.
        """
        super(TestTenantPartnerViews, self).setUp()

        # Setup our app and account.
        call_command('init_app', verbosity=0)
        call_command('populate_tenant_content', TEST_SCHEMA_NAME, verbosity=0)
        call_command('populate_tenant_sample_db',
                     TEST_SCHEMA_NAME,
                     verbosity=0)

        # Get user and credentials.
        user = SharedUser.objects.get(email='*****@*****.**')
        token, orig_iat = get_jwt_token_and_orig_iat(user)

        # Setup our clients.
        self.anon_c = TenantClient(self.tenant)
        self.auth_c = TenantClient(self.tenant,
                                   HTTP_AUTHORIZATION='JWT {0}'.format(token))
        self.auth_c.login(username=TEST_USER_USERNAME,
                          password=TEST_USER_PASSWORD)

    def tearDown(self):
        """
        Run at the end of every unit test.
        """
        # Delete previous data.
        SharedUser.objects.all().delete()

        # Delete our clients.
        del self.anon_c
        del self.auth_c

        # Finish teardown.
        super(TestTenantPartnerViews, self).tearDown()

    def test_summary_page(self):
        response = self.auth_c.get(
            self.tenant.reverse('workery_tenant_partner_summary'))
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertIn('Partner', str(response.content))

    def test_create_confirmation_page(self):
        response = self.auth_c.get(
            self.tenant.reverse('workery_tenant_partner_confirm_create'))
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertIn('Add Partner', str(response.content))

    def test_create_page(self):
        response = self.auth_c.get(
            self.tenant.reverse('workery_tenant_partner_create'))
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertIn('Add Partner', str(response.content))

    def test_list_page(self):
        response = self.auth_c.get(
            self.tenant.reverse('workery_tenant_partner_list'))
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertIn('Partner List', str(response.content))

    def test_search_page(self):
        response = self.auth_c.get(
            self.tenant.reverse('workery_tenant_partner_search'))
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertIn('Partners Search', str(response.content))

    def test_search_confirmation_page(self):
        response = self.auth_c.get(
            self.tenant.reverse('workery_tenant_partner_search_results') +
            '?keyword=' + TEST_USER_EMAIL)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertIn('Search', str(response.content))
        self.assertIn('Search Results', str(response.content))
        # self.assertIn(TEST_USER_EMAIL, str(response.content))

    def test_lite_retrieve_page(self):
        partner = Partner.objects.get()
        a_url = self.tenant.reverse(
            reverse_id='workery_tenant_partner_lite_retrieve',
            reverse_args=['summary', int(partner.id)])
        response = self.auth_c.get(a_url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertIn('Partner', str(response.content))
        # self.assertIn('Gendo', str(response.content))

    def test_full_retrieve_page(self):
        partner = Partner.objects.get()
        a_url = self.tenant.reverse(
            reverse_id='workery_tenant_partner_full_retrieve',
            reverse_args=['summary', int(partner.id)])
        response = self.auth_c.get(a_url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertIn('Partner', str(response.content))
        # self.assertIn('Gendo', str(response.content))

    def test_comments_retrieve_page(self):
        partner = Partner.objects.get()
        a_url = self.tenant.reverse(
            reverse_id='workery_tenant_partner_retrieve_for_comment_list',
            reverse_args=['summary', int(partner.id)])
        response = self.auth_c.get(a_url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertIn('Partner', str(response.content))
        self.assertIn('Add Comment/Note', str(response.content))

    def test_update_page(self):
        partner = Partner.objects.get()
        a_url = self.tenant.reverse(reverse_id='workery_tenant_partner_update',
                                    reverse_args=['summary',
                                                  int(partner.id)])
        response = self.auth_c.get(a_url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertIn('Partner', str(response.content))
        self.assertIn('Edit Partner', str(response.content))
class APIIntakeWithTenantSchemaTestCase(APITestCase, TenantTestCase):
    fixtures = []

    def setup_tenant(self, tenant):
        """Tenant Schema"""
        tenant.schema_name = 'galacticalliance'
        tenant.name = "Galactic Alliance of Humankind"
        tenant.has_perks=True
        tenant.has_mentors=True
        tenant.how_discovered = "Command HQ"
        tenant.how_many_served = 1

    @classmethod
    def setUpTestData(cls):
        Group.objects.bulk_create([
            Group(id=constants.ENTREPRENEUR_GROUP_ID, name="Entreprenuer",),
            Group(id=constants.MENTOR_GROUP_ID, name="Mentor",),
            Group(id=constants.ADVISOR_GROUP_ID, name="Advisor",),
            Group(id=constants.ORGANIZATION_MANAGER_GROUP_ID, name="Org Manager",),
            Group(id=constants.ORGANIZATION_ADMIN_GROUP_ID, name="Org Admin",),
            Group(id=constants.CLIENT_MANAGER_GROUP_ID, name="Client Manager",),
            Group(id=constants.SYSTEM_ADMIN_GROUP_ID, name="System Admin",),
        ])
        org_admin_group = Group.objects.get(id=constants.ORGANIZATION_ADMIN_GROUP_ID)
        user = User.objects.create_user(  # Create our user.
            email=TEST_USER_EMAIL,
            username=TEST_USER_USERNAME,
            password=TEST_USER_PASSWORD
        )
        user.is_superuser = True
        user.is_active = True
        user.groups.add(org_admin_group)
        user.save()

    @transaction.atomic
    def setUp(self):
        translation.activate('en')  # Set English.
        super(APIIntakeWithTenantSchemaTestCase, self).setUp()

        # Initialize our test data.
        self.user = User.objects.get()
        token = Token.objects.get(user__username=TEST_USER_USERNAME)

        # Setup.
        self.unauthorized_client = TenantClient(self.tenant)
        self.authorized_client = TenantClient(self.tenant, HTTP_AUTHORIZATION='Token ' + token.key)
        self.authorized_client.login(
            username=TEST_USER_USERNAME,
            password=TEST_USER_PASSWORD
        )
        self.tenant.owner = self.user
        self.tenant.save()
        self.me = Me.objects.create(
            owner=self.user,
        )

        # Above taken from:
        # http://www.django-rest-framework.org/api-guide/testing/#authenticating

    @transaction.atomic
    def tearDown(self):
        Intake.objects.delete_all()
        Note.objects.delete_all()
        PostalAddress.objects.delete_all()
        ContactPoint.objects.delete_all()
        Me.objects.delete_all()
        items = User.objects.all()
        for item in items.all():
            item.delete()
        items = Group.objects.all()
        for item in items.all():
            item.delete()
        # super(APIIntakeWithTenantSchemaTestCase, self).tearDown()

    @transaction.atomic
    def test_list_with_anonymous_user(self):
        response = self.unauthorized_client.get('/api/tenantintake/?format=json')
        self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)

    @transaction.atomic
    def test_list_with_authenticated__user(self):
        # Change Group that the User belongs in.
        entrepreneur_group = Group.objects.get(id=constants.ENTREPRENEUR_GROUP_ID)
        self.user.groups.add(entrepreneur_group)
        self.user.save()

        # Test and verify.
        response = self.authorized_client.get('/api/tenantintake/?format=json')
        self.assertEqual(response.status_code, status.HTTP_200_OK)

    @transaction.atomic
    def test_list_with_authenticated_management_group_user(self):
        # Change Group that the User belongs in.
        org_admin_group = Group.objects.get(id=constants.ORGANIZATION_ADMIN_GROUP_ID)
        self.user.groups.remove(org_admin_group)
        self.user.save()

        # Test and verify.
        response = self.authorized_client.get('/api/tenantintake/?format=json')
        self.assertEqual(response.status_code, status.HTTP_200_OK)

    @transaction.atomic
    def test_list_with_authenticated_advisor_group_user(self):
        # Change Group that the User belongs in.
        advisor_group = Group.objects.get(id=constants.ADVISOR_GROUP_ID)
        self.user.groups.add(advisor_group)
        self.user.save()

        # Test and verify.
        response = self.authorized_client.get('/api/tenantintake/?format=json')
        self.assertEqual(response.status_code, status.HTTP_200_OK)

    @transaction.atomic
    def test_post_with_anonymous_user(self):
        data = {
            'me': self.me.id,
        }
        response = self.unauthorized_client.post('/api/tenantintake/?format=json', json.dumps(data), content_type='application/json')
        self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)

    @transaction.atomic
    def test_post_with_authenticated_management_group_user(self):
        # Run the test and verify.
        data = {
            'me': self.me.id,
        }
        response = self.authorized_client.post('/api/tenantintake/?format=json', json.dumps(data), content_type='application/json')
        self.assertEqual(response.status_code, status.HTTP_201_CREATED)

    @transaction.atomic
    def test_post_with_authenticated_advisor_group_user(self):
        # Change Group that the User belongs in.
        org_admin_group = Group.objects.get(id=constants.ORGANIZATION_ADMIN_GROUP_ID)
        advisor_group = Group.objects.get(id=constants.ADVISOR_GROUP_ID)
        self.user.groups.remove(org_admin_group)
        self.user.groups.add(advisor_group)
        self.user.save()

        # Test and verify.
        data = {
            'me': self.me.id,
        }
        response = self.authorized_client.post('/api/tenantintake/?format=json', json.dumps(data), content_type='application/json')
        self.assertEqual(response.status_code, status.HTTP_201_CREATED)

    @transaction.atomic
    def test_put_with_anonymous_user(self):
        # Create a new object with our specific test data.
        Intake.objects.create(
            id=1,
            me=self.me,
        )

        # Run the test.
        data = {
            'id': 1,
            'me': self.me.id,
        }
        response = self.unauthorized_client.put('/api/tenantintake/1/?format=json', json.dumps(data), content_type='application/json')
        self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)

    @transaction.atomic
    def test_put_with_authenticated_management_user(self):
        # Create a new object with our specific test data.
        Intake.objects.create(
            id=1,
            me=self.me,
        )

        # Run the test.
        data = {
            'id': 1,
            'me': self.me.id,
        }
        response = self.authorized_client.put('/api/tenantintake/1/?format=json', json.dumps(data), content_type='application/json')
        self.assertEqual(response.status_code, status.HTTP_200_OK)

    @transaction.atomic
    def test_put_with_authenticated_advisor_user(self):
        # Change Group that the User belongs in.
        org_admin_group = Group.objects.get(id=constants.ORGANIZATION_ADMIN_GROUP_ID)
        advisor_group = Group.objects.get(id=constants.ADVISOR_GROUP_ID)
        self.user.groups.remove(org_admin_group)
        self.user.groups.add(advisor_group)
        self.user.save()

        # Create a new object with our specific test data.
        Intake.objects.create(
            id=1,
            me=self.me,
        )

        # Run the test.
        data = {
            'id': 1,
            'me': self.me.id,
        }
        response = self.authorized_client.put('/api/tenantintake/1/?format=json', json.dumps(data), content_type='application/json')
        self.assertEqual(response.status_code, status.HTTP_200_OK)

    @transaction.atomic
    def test_delete_with_anonymous_user(self):
        Intake.objects.create(
            id=1,
            me=self.me,
        )
        response = self.unauthorized_client.delete('/api/tenantintake/1/?format=json')
        self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)

    @transaction.atomic
    def test_delete_with_authenticated_management_user(self):
        Intake.objects.create(
            id=1,
            me=self.me,
            judgement_note=Note.objects.create(
                id=1,
                me=self.me,
            ),
            privacy_note=Note.objects.create(
                id=2,
                me=self.me,
            ),
            terms_note=Note.objects.create(
                id=3,
                me=self.me,
            ),
            confidentiality_note=Note.objects.create(
                id=4,
                me=self.me,
            ),
            collection_note=Note.objects.create(
                id=5,
                me=self.me,
            ),
        )
        response = self.authorized_client.delete('/api/tenantintake/1/?format=json')
        self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)

    @transaction.atomic
    def test_delete_with_authenticated_advisor_user(self):
        # Create our object to be deleted.

        Intake.objects.create(
            id=1,
            me=self.me,
            status=constants.CREATED_STATUS,
            judgement_note=Note.objects.create(
                id=1,
                me=self.me,
            ),
        )

        # Change Group that the User belongs in.
        org_admin_group = Group.objects.get(id=constants.ORGANIZATION_ADMIN_GROUP_ID)
        advisor_group = Group.objects.get(id=constants.ADVISOR_GROUP_ID)
        self.user.groups.remove(org_admin_group)
        self.user.groups.add(advisor_group)
        self.user.save()

        # Run test and verify.
        response = self.authorized_client.delete('/api/tenantintake/1/?format=json')
        self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)

    @transaction.atomic
    def test_complete_intake_with_anonymous_user(self):
        # Setup our object.
        Intake.objects.create(
            id=1,
            me=self.me,
            status=constants.PENDING_REVIEW_STATUS,
            judgement_note=Note.objects.create(
                id=1,
                me=self.me,
            ),
        )

        # Run the test and verify.
        response = self.unauthorized_client.put(
            '/api/tenantintake/1/complete_intake/?format=json',
            json.dumps({}),
            content_type='application/json'
        )
        self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)
        me = Intake.objects.get(id=1)
        self.assertEqual(me.status, constants.PENDING_REVIEW_STATUS)
        self.assertEqual(len(mail.outbox), 0)  # Test that one message has not been sent.

    @transaction.atomic
    def test_complete_intake_with_owner_user(self):
        # Setup our object.
        Intake.objects.create(
            id=1,
            me=self.me,
            status=constants.CREATED_STATUS,
        )

        # Run the test and verify.
        response = self.authorized_client.put(
            '/api/tenantintake/1/complete_intake/?format=json',
            json.dumps({}),
            content_type='application/json'
        )
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        me = Intake.objects.get(id=1)
        self.assertEqual(me.status, constants.PENDING_REVIEW_STATUS)

        # Test that one email has been sent.
        self.assertEqual(len(mail.outbox), 1)

        # Verify that the subject of the first message is correct.
        self.assertEqual(mail.outbox[0].subject, 'New Entrepreneur Application!')

    @transaction.atomic
    def test_complete_intake_with_different_owner_user(self):
        # Setup our objects.
        org_admin_group = Group.objects.get(id=constants.ORGANIZATION_ADMIN_GROUP_ID)
        new_user = User.objects.create_user(  # Create our user.
            email='*****@*****.**',
            username='******',
            password='******',
        )
        new_user.is_active = True
        new_user.groups.add(org_admin_group)
        new_user.save()
        new_me = Me.objects.create(
            owner=new_user
        )
        Intake.objects.create(
            id=1,
            me=new_me,
            status=constants.CREATED_STATUS,
        )

        # Run the test and verify.
        response = self.authorized_client.put(
            '/api/tenantintake/1/complete_intake/?format=json',
            json.dumps({}),
            content_type='application/json'
        )
        self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)
        me = Intake.objects.get(id=1)
        self.assertEqual(me.status, constants.CREATED_STATUS)
        self.assertEqual(len(mail.outbox), 0)  # Test that one message has not been sent.

    @transaction.atomic
    def test_complete_intake_with_owner_user_with_404(self):
        # Setup our object.
        Intake.objects.create(
            id=1,
            me=self.me,
            status=constants.CREATED_STATUS,
        )

        # Run the test and verify.
        response = self.authorized_client.put(
            '/api/tenantintake/6666/complete_intake/?format=json',
            json.dumps({}),
            content_type='application/json'
        )
        self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
        me = Intake.objects.get(id=1)
        self.assertEqual(me.status, constants.CREATED_STATUS)
        self.assertEqual(len(mail.outbox), 0)  # Test that one message has not been sent.

    @transaction.atomic
    def test_judge_with_anonymous_user(self):
        # Create a new object with our specific test data.
        # Setup our object.
        Intake.objects.create(
            id=1,
            me=self.me,
            status=constants.CREATED_STATUS,
        )

        # Run the test.
        data = {
            'id': 1,
            'owner': self.user.id,
            'is_employee_created': False,
        }
        response = self.unauthorized_client.put(
            '/api/tenantintake/1/judge/?format=json',
            json.dumps(data),
            content_type='application/json'
        )
        self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)
        intake = Intake.objects.get(id=1)
        self.assertEqual(intake.status, constants.CREATED_STATUS)
        self.assertFalse(intake.me.is_in_intake)
        self.assertEqual(len(mail.outbox), 0)  # Test that one message has not been sent.

    @transaction.atomic
    def test_judge_with_employee_user_for_existing_intake_with_note(self):
        # Setup our object.
        Intake.objects.create(
            id=1,
            me=self.me,
            status=constants.CREATED_STATUS,
            judgement_note=Note.objects.create(
                me=self.me,
            ),
        )

        # Run the test and verify.
        response = self.authorized_client.put(
            '/api/tenantintake/1/judge/?format=json',
            json.dumps({
                'status': constants.APPROVED_STATUS,
                'comment': 'This is a test comment.',
                'is_employee_created': False,
            }),
            content_type='application/json'
        )
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        intake = Intake.objects.get(id=1)
        self.assertEqual(intake.status, constants.APPROVED_STATUS)
        self.assertTrue(intake.me.is_in_intake)
        note = Note.objects.get(id=1)
        self.assertIn('This is a test comment.', note.description)
        self.assertEqual(len(mail.outbox), 1)  # Test that one message has been sent.
        self.assertIn('Accepted', mail.outbox[0].subject)

    @transaction.atomic
    def test_judge_with_employee_user_for_existing_intake_without_note(self):
        # Setup our object.
        Intake.objects.create(
            id=1,
            me=self.me,
            status=constants.CREATED_STATUS,
        )

        # Run the test and verify.
        response = self.authorized_client.put(
            '/api/tenantintake/1/judge/?format=json',
            json.dumps({
                'status': constants.REJECTED_STATUS,
                'comment': 'This is a test comment.',
                'is_employee_created': False,
            }),
            content_type='application/json'
        )
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        intake = Intake.objects.get(id=1)
        self.assertEqual(intake.status, constants.REJECTED_STATUS)
        self.assertFalse(intake.me.is_in_intake)
        note = Note.objects.get(id=1)
        self.assertIn('This is a test comment.', note.description)
        self.assertEqual(len(mail.outbox), 1)  # Test that one message has been sent.
        self.assertIn('Rejected', mail.outbox[0].subject)

    @transaction.atomic
    def test_judge_with_employee_user_for_manually_created_intake(self):
        # Setup our object.
        Intake.objects.create(
            id=1,
            me=self.me,
            status=constants.CREATED_STATUS,
        )

        # Run the test and verify.
        response = self.authorized_client.put(
            '/api/tenantintake/1/judge/?format=json',
            json.dumps({
                'status': constants.APPROVED_STATUS,
                'comment': 'This is a test comment.',
                'is_employee_created': True,
            }),
            content_type='application/json'
        )
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        intake = Intake.objects.get(id=1)
        self.assertEqual(intake.status, constants.APPROVED_STATUS)
        self.assertTrue(intake.me.is_in_intake)
        note = Note.objects.get(id=1)
        self.assertIn('This is a test comment.', note.description)
        self.assertEqual(len(mail.outbox), 1)  # Test that one message has been sent.

    @transaction.atomic
    def test_judge_with_non_employee_user(self):
        org_admin_group = Group.objects.get(id=constants.ORGANIZATION_ADMIN_GROUP_ID)
        self.user.groups.remove(org_admin_group)
        group = Group.objects.get(id=constants.ENTREPRENEUR_GROUP_ID)
        self.user.groups.add(group)
        Intake.objects.create(
            id=1,
            me=self.me,
            status=constants.CREATED_STATUS,
        )

        # Run the test.
        response = self.authorized_client.put(
            '/api/tenantintake/1/judge/?format=json',
            json.dumps({
                'status': constants.APPROVED_STATUS,
                'comment': 'This is a test comment.',
                'is_employee_created': False,
            }),
            content_type='application/json'
        )
        self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
        intake = Intake.objects.get(id=1)
        self.assertEqual(intake.status, constants.CREATED_STATUS)
        self.assertFalse(intake.me.is_in_intake)
        self.assertEqual(len(mail.outbox), 0)  # Test that one message has not been sent.

    @transaction.atomic
    def test_judge_with_owner_user_with_404(self):
        org_admin_group = Group.objects.get(id=constants.ORGANIZATION_ADMIN_GROUP_ID)
        self.user.groups.remove(org_admin_group)
        group = Group.objects.get(id=constants.ADVISOR_GROUP_ID)
        self.user.groups.add(group)

        response = self.authorized_client.put(
            '/api/tenantintake/666/judge/?format=json',
            json.dumps({
                'status': constants.APPROVED_STATUS,
                'comment': 'This is a test comment.',
                'is_employee_created': False,
            }),
            content_type='application/json'
        )
        self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
        self.assertIn(b'No Intake matches the given query.', response.content)
        self.assertEqual(len(mail.outbox), 0)  # Test that one message has not been sent.

    @transaction.atomic
    def test_crm_update_with_anonymous_user(self):
        # Setup our object.
        Intake.objects.create(
            id=1,
            me=self.me,
            status=constants.PENDING_REVIEW_STATUS,
            has_signed_with_name="Ledo"
        )

        # Run the test and verify.
        response = self.unauthorized_client.put(
            '/api/tenantintake/1/crm_update/?format=json',
            json.dumps({}),
            content_type='application/json'
        )
        self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)

    @transaction.atomic
    def test_crm_update_with_owner_user(self):
        # Setup our object.
        Intake.objects.create(
            id=1,
            me=self.me,
            status=constants.CREATED_STATUS,
            has_signed_with_name="Ledo"
        )

        # Run the test and verify.
        response = self.authorized_client.put(
            '/api/tenantintake/1/crm_update/?format=json',
            json.dumps({}),
            content_type='application/json'
        )
        self.assertEqual(response.status_code, status.HTTP_200_OK)

    @transaction.atomic
    def test_crm_update_with_different_owner_user(self):
        # Setup our objects.
        org_admin_group = Group.objects.get(id=constants.ORGANIZATION_ADMIN_GROUP_ID)
        new_user = User.objects.create_user(  # Create our user.
            email='*****@*****.**',
            username='******',
            password='******',
        )
        new_user.is_active = True
        new_user.groups.add(org_admin_group)
        new_user.save()
        new_me = Me.objects.create(
            owner=new_user
        )
        Intake.objects.create(
            id=1,
            me=new_me,
            status=constants.CREATED_STATUS,
            has_signed_with_name="Ledo"
        )

        # Run the test and verify.
        response = self.authorized_client.put(
            '/api/tenantintake/1/crm_update/?format=json',
            json.dumps({}),
            content_type='application/json'
        )
        self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)

    @transaction.atomic
    def test_crm_update_with_owner_user_with_404(self):
        # Run the test and verify.
        response = self.authorized_client.put(
            '/api/tenantintake/6666/crm_update/?format=json',
            json.dumps({}),
            content_type='application/json'
        )
        self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)