class TestMessagesFetch(TenantTestCase):
    def setUp(self):
        super().setUp()
        self.client = TenantClient(self.tenant)
        user = get_user_model().objects.create(username="******")
        user.set_password('dummypassword')
        user.save()
        room = Room.objects.create()
        room.members.add(user)
        for i in range(25):
            Message.objects.create(sender=user, room=room, text=f"Message {i}")

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

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

        self.assertEqual(content, messages_array)

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

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

        self.assertEqual(content, messages_array)

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

        content = json.loads(response.content)

        self.assertEqual(content, [])
class SharedFranchiseListAPIViewWithPublicSchemaTestCase(
        APITestCase, TenantTestCase):
    """
    Console:
    python manage.py test shared_api.tests.test_franchise_list_views
    """
    @transaction.atomic
    def setUp(self):
        translation.activate('en')  # Set English
        super(SharedFranchiseListAPIViewWithPublicSchemaTestCase, self).setUp()
        self.anon_client = TenantClient(self.tenant)
        call_command('init_app', verbosity=0)

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

    @transaction.atomic
    def tearDown(self):
        del self.anon_client
        super(SharedFranchiseListAPIViewWithPublicSchemaTestCase,
              self).tearDown()

    @transaction.atomic
    def test_anonymous_get_with_200(self):
        url = reverse('workery_franchise_list_create_api_endpoint')
        response = self.anon_client.get(url,
                                        data=None,
                                        content_type='application/json')
        self.assertIsNotNone(response)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertIn("London", str(response.data))
        self.assertIn("Ontario", str(response.data))

    @transaction.atomic
    def test_anonymous_search_get_with_200_(self):
        url = reverse('workery_franchise_list_create_api_endpoint'
                      ) + "?format=json&search=London"
        response = self.anon_client.get(url,
                                        data=None,
                                        content_type='application/json')
        self.assertIsNotNone(response)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertIn("London", str(response.data))
        self.assertIn("Ontario", str(response.data))
Beispiel #3
0
class BaseSetup(TenantTestCase):
    def setUp(self):
        super().setUp()
        self.c = TenantClient(self.tenant)

    def test_role_list_view(self):
        response = self.c.get(reverse('roles:roles'))
        self.assertEqual(response.status_code, 200)

    def test_role_create_view(self):
        response = self.c.get(reverse('roles:create'))
        self.assertEqual(response.status_code, 200)
Beispiel #4
0
class BaseSetup(TenantTestCase):
    def setUp(self):
        super().setUp()
        self.c = TenantClient(self.tenant)

    # test para proba que existe una vista de listar usuarios
    def test_user_list_view(self):
        response = self.c.get(reverse('users:users'))
        self.assertEqual(response.status_code, 200)

    #comentario 2 modificado
    def test_user_create_view(self):
        response = self.c.get(reverse('users:create'))
        self.assertEqual(response.status_code, 200)
class FoundationPublicDecoratorWithTenantSchemaTestCase(TenantTestCase):
    fixtures = []

    def setup_tenant(self, tenant):
        """Tenant Schema"""
        tenant.schema_name = 'galactic'
        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):
        super(FoundationPublicDecoratorWithTenantSchemaTestCase, self).setUp()
        self.c = TenantClient(self.tenant)

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

    @transaction.atomic
    def test_tenant_required_decorator_with_access_granted(self):
        response = self.c.get(reverse('tenant_is_valid'))
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertTrue(len(response.content) > 1)
        self.assertIn(b'access-granted', response.content)
Beispiel #6
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 #7
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))
Beispiel #8
0
class GetIsUniqueWithPublicSchemaTestCase(APITestCase, TenantTestCase):
    """
    Console:
    python manage.py test shared_api.tests.test_get_is_unique_views
    """
    @transaction.atomic
    def setUp(self):
        translation.activate('en')  # Set English
        super(GetIsUniqueWithPublicSchemaTestCase, self).setUp()
        self.c = TenantClient(self.tenant)
        call_command('init_app', verbosity=0)
        call_command('create_shared_account',
                     TEST_USER_EMAIL,
                     TEST_USER_PASSWORD,
                     "Bart",
                     "Mika",
                     verbosity=0)

    @transaction.atomic
    def tearDown(self):
        users = SharedUser.objects.all()
        for user in users.all():
            user.delete()
        del self.c
        super(GetIsUniqueWithPublicSchemaTestCase, self).tearDown()

    @transaction.atomic
    def test_anonymous_get_with_200(self):
        # CASE 1 OF 2:
        url = reverse(
            'at_get_is_unique_api_endpoint') + "?email=" + TEST_USER_EMAIL
        response = self.c.get(url, {}, format='json')
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertEqual(1, int(response.content))

        # CASE 2 OF 2:
        url = reverse('at_get_is_unique_api_endpoint'
                      ) + "[email protected]"
        response = self.c.get(url, {}, format='json')
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertEqual(0, int(response.content))
    def test_tenantmemiddleware_with_unauthenticated_user_in_public_schema(
            self):
        # Verify that no "Me" objects are created.
        self.assertEqual(Me.objects.all().count(), 0)

        # Run the test.
        client = TenantClient(self.tenant)
        response = client.get(reverse('public_home'))
        self.assertEqual(response.status_code, 200)

        # Verify that no "Me" objects are created.
        self.assertEqual(Me.objects.all().count(), 0)
Beispiel #10
0
class TestHomeViews(TenantTestCase):
    """
    Class used to test the "views".

    Console:
    python manage.py test shared_home.tests.test_views
    """

    def setUp(self):
        super(TestHomeViews, self).setUp()
        self.c = TenantClient(self.tenant)

    def tearDown(self):
        del self.c

    def test_get_index_page(self):
        response = self.c.get(reverse('at_index_master'))
        self.assertEqual(response.status_code, 200)

    def test_http_404_page(self):
        response = self.c.get('la-la-la-la-la-la-la-la-la-la-la')
        self.assertEqual(response.status_code, 404)
Beispiel #11
0
class APICountryAndProvinceViewslWithSchemaTestCase(APITestCase,
                                                    TenantTestCase):
    """
    Console:
    python manage.py test shared_api.tests.views.test_country_and_province_views
    """
    @transaction.atomic
    def setUp(self):
        translation.activate('en')  # Set English
        super(APICountryAndProvinceViewslWithSchemaTestCase, self).setUp()
        self.c = TenantClient(self.tenant)
        call_command('init_app', verbosity=0)

    @transaction.atomic
    def tearDown(self):
        SharedUser.objects.delete_all()
        del self.c
        super(APICountryAndProvinceViewslWithSchemaTestCase, self).tearDown()

    @transaction.atomic
    def test_country_api_endpoint_with_success(self):
        # Log out.
        url = reverse('workery_get_countries_api_endpoint')
        data = {}
        response = self.c.get(url, data, content_type='application/json')

        # Confirm.
        self.assertEqual(response.status_code, status.HTTP_200_OK)

    @transaction.atomic
    def test_province_api_endpoint_with_success(self):
        # Log out.
        url = reverse('workery_get_provinces_api_endpoint')
        data = {}
        response = self.c.get(url, data, content_type='application/json')

        # Confirm.
        self.assertEqual(response.status_code, status.HTTP_200_OK)
Beispiel #12
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()
        )
Beispiel #13
0
    def test_token_middleware_with_authentication_with_token(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)

        response = authorized_client.get(reverse('public_home'))
        self.assertEqual(response.status_code, 200)
Beispiel #14
0
class TodoGroupTestAPI(APITestCase, DjangoReduxTestCases):
    def setUp(self):
        self.data = {
            'name': 'todo group',
        }
        self.client = TenantClient(self.tenant)

    @patch.object(DjangoReduxJWTAuthentication, 'authenticate')
    def test_create_todo_group_api(self, mock):
        mock.return_value = self.account, {}
        response = self.client.post(reverse('todo:todo-group-list'), self.data)
        self.assertEquals(response.status_code, HTTP_201_CREATED)

    @patch.object(DjangoReduxJWTAuthentication, 'authenticate')
    def test_get_todo_group_by_id_api(self, mock):
        mock.return_value = self.account, {}
        response = self.client.post(reverse('todo:todo-group-list'), self.data)
        self.assertEquals(response.status_code, HTTP_201_CREATED)

        id = response.data['id']
        response = self.client.get(
            reverse('todo:todo-group-detail', kwargs={'pk': id}))
        self.assertEquals(response.status_code, HTTP_200_OK)
        self.assertEquals(response.data['name'], self.data['name'])

    @patch.object(DjangoReduxJWTAuthentication, 'authenticate')
    def test_update_todo_group_api(self, mock):
        mock.return_value = self.account, {}
        response = self.client.post(reverse('todo:todo-group-list'), self.data)
        self.assertEquals(response.status_code, HTTP_201_CREATED)

        id = response.data['id']
        self.data['name'] = 'update todo group'
        response = self.client.put(path=reverse('todo:todo-group-detail',
                                                kwargs={'pk': id}),
                                   data=json.dumps(self.data),
                                   content_type='application/json')
        self.assertEquals(response.status_code, HTTP_200_OK)
        self.assertEquals(response.data['name'], 'update todo group')
    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)
Beispiel #16
0
class APICityOptionWithTenantSchemaTestCase(APITestCase, TenantTestCase):
    fixtures = []

    def setup_tenant(self, tenant):
        """Tenant Schema"""
        tenant.schema_name = 'galacticallianceofhumankind'
        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(APICityOptionWithTenantSchemaTestCase, self).setUp()

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

        # Setup.
        self.unauthorized_client = TenantClient(self.tenant)
        self.authorized_client = TenantClient(self.tenant,
                                              HTTP_AUTHORIZATION='Token ' +
                                              token.key)

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

    @transaction.atomic
    def tearDown(self):
        ProvinceOption.objects.delete_all()
        CityOption.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(APICityOptionWithTenantSchemaTestCase, self).tearDown()

    @transaction.atomic
    def test_list(self):
        response = self.unauthorized_client.get('/api/tenantcityoption/')
        self.assertEqual(response.status_code, status.HTTP_200_OK)

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

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

    @transaction.atomic
    def test_post_with_authentication(self):
        country = CountryOption.objects.create(
            id=1,
            name="Unit Test",
        )
        province = ProvinceOption.objects.create(
            id=1,
            name="Unit Test",
            country=country,
        )
        data = {
            'name': 'Unit Test',
            'country': country.id,
            'province': province.id
        }
        response = self.authorized_client.post('/api/tenantcityoption/',
                                               json.dumps(data),
                                               content_type='application/json')
        self.assertEqual(response.status_code, status.HTTP_201_CREATED)

    @transaction.atomic
    def test_put(self):
        # Create a new object with our specific test data.
        country = CountryOption.objects.create(
            id=1,
            name="Unit Test",
        )
        province = ProvinceOption.objects.create(
            id=1,
            name="Unit Test",
            country=country,
        )
        city = CityOption.objects.create(
            id=1,
            name="Unit Test",
            country=country,
            province=province,
        )

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

    @transaction.atomic
    def test_put_with_authorization(self):
        # Create a new object with our specific test data.
        country = CountryOption.objects.create(
            id=1,
            name="Unit Test",
        )
        province = ProvinceOption.objects.create(
            id=1,
            name="Unit Test",
            country=country,
        )
        city = CityOption.objects.create(
            id=1,
            name="Unit Test",
            country=country,
            province=province,
        )

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

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

    @transaction.atomic
    def test_delete_with_authentication(self):
        country = CountryOption.objects.create(
            id=1,
            name="Unit Test",
        )
        province = ProvinceOption.objects.create(
            id=1,
            name="Unit Test",
            country=country,
        )
        city = CityOption.objects.create(
            id=1,
            name="Unit Test",
            country=country,
            province=province,
        )
        response = self.authorized_client.delete('/api/tenantcityoption/1/')
        self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
Beispiel #17
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 #18
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 #19
0
class WorkspaceAPIWithTenantSchemaTestCase(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.has_perks = True
        tenant.has_mentors = True
        tenant.how_discovered = "Command HQ"
        tenant.how_many_served = 1

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

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

        # 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)

        Workspace.objects.bulk_create([
            Workspace(owner=self.user),
            Workspace(owner=self.user),
            Workspace(owner=self.user),
        ])

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

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

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

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

    @transaction.atomic
    def test_post_with_anonymous_user(self):
        data = {
            'name': 'Unit Test',
            'description': 'Used for unit testing purposes.',
            'owner': self.user.id
        }
        response = self.unauthorized_client.post('/api/tenantworkspace/',
                                                 data,
                                                 format="json")
        self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)

    @transaction.atomic
    def test_post_with_non_management_user(self):
        for group in self.user.groups.all():
            group.delete()

        data = {
            'name': 'Unit Test',
            'description': 'Used for unit testing purposes.',
            'owner': self.user.id,
            'type_of': constants.INFO_RESOURCE_INTERAL_URL_TYPE,
            'url': 'http://smegurus.com'
        }
        response = self.authorized_client.post('/api/tenantworkspace/',
                                               data,
                                               format="json")
        self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)

    @transaction.atomic
    def test_post_with_authentication(self):
        # CASE 1 OF 5: SUCCESS
        data = {
            'name': 'Unit Test',
            'description': 'Used for unit testing purposes.',
            'owner': self.user.id,
            'type_of': constants.INFO_RESOURCE_INTERAL_URL_TYPE,
            'url': 'http://smegurus.com'
        }
        response = self.authorized_client.post('/api/tenantworkspace/',
                                               data,
                                               format="json")
        self.assertEqual(response.status_code, status.HTTP_201_CREATED)

    @transaction.atomic
    def test_put(self):
        # Create a new object with our specific test data.
        Workspace.objects.create(id=999,
                                 name="Unit Test",
                                 description="Used for unit testing purposes.")

        # Run the test.
        data = {
            'id': 999,
            'name': 'Unit Test',
            'description': 'Used for unit testing purposes.',
            'owner': self.user.id
        }
        response = self.unauthorized_client.put(
            '/api/tenantworkspace/999/',
            json.dumps(data),
            content_type='application/json')
        self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)

    @transaction.atomic
    def test_put_with_authorization(self):
        # Create a new object with our specific test data.
        Workspace.objects.create(id=666,
                                 name="Unit Test",
                                 description="Used for unit testing purposes.",
                                 owner_id=self.user.id)

        # Run the test.
        data = {
            'id': 666,
            'name': 'Unit Test',
            'description': 'Used for unit testing purposes.',
            'owner': self.user.id
        }
        response = self.authorized_client.put('/api/tenantworkspace/666/',
                                              json.dumps(data),
                                              content_type='application/json')
        self.assertEqual(response.status_code, status.HTTP_200_OK)

    @transaction.atomic
    def test_delete(self):
        Workspace.objects.create(id=999,
                                 name="Unit Test",
                                 description="Used for unit testing purposes.")
        response = self.unauthorized_client.delete('/api/tenantworkspace/999/')
        self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)

    @transaction.atomic
    def test_delete_with_authentication(self):
        Workspace.objects.create(id=999,
                                 name="Unit Test",
                                 description="Used for unit testing purposes.")
        response = self.authorized_client.delete('/api/tenantworkspace/999/')
        self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
Beispiel #20
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))
Beispiel #21
0
class SMEGurusTokenMiddlewareWithPublicSchemaTestCase(APITestCase,
                                                      TenantTestCase):
    fixtures = []

    def setup_tenant(self, tenant):
        """Public Schema"""
        tenant.schema_name = 'test'  # Do not change this!
        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(SMEGurusTokenMiddlewareWithPublicSchemaTestCase, self).setUp()
        self.c = TenantClient(self.tenant)
        self.user = User.objects.get()

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

    @transaction.atomic
    def test_token_middleware_with_authentication_with_token(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)

        response = authorized_client.get(reverse('public_home'))
        self.assertEqual(response.status_code, 200)

    @transaction.atomic
    def test_token_middleware_with_anonymous_user(self):
        response = self.c.get(reverse('public_home'))
        self.assertEqual(response.status_code, 200)

    @transaction.atomic
    def test_token_middleware_with_authentication_without_token(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)
        token = Token.objects.get(user__email=TEST_USER_EMAIL)
        token.delete()

        response = authorized_client.get(reverse('public_home'))
        self.assertEqual(response.status_code, 200)
Beispiel #22
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)
Beispiel #23
0
class TestPortalDashView(BaseTenantTestCase):
    def test_get(self):
        self.client = TenantClient(self.tenant)
        response = self.client.get(reverse("management:dashboard"))
        self.assertEqual(response.status_code, status.HTTP_200_OK)
Beispiel #24
0
class PublicIndexTestCase(TenantTestCase):
    fixtures = [
        # 'banned_domains.json',
        # 'banned_ips.json',
        # 'banned_words.json',
        # 'groups',
        # 'permissions',
    ]

    def setup_tenant(self, tenant):
        """Public Schema"""
        tenant.schema_name = 'test'  # Do not change this!
        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",
            ),
        ])

    @transaction.atomic
    def setUp(self):
        super(PublicIndexTestCase, self).setUp()
        self.c = TenantClient(self.tenant)

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

    @transaction.atomic
    def test_index_page_view(self):
        response = self.c.get(reverse('public_home'))
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertTrue(len(response.content) > 1)
        self.assertIn(b'This is a land page.', response.content)

    @transaction.atomic
    def test_403_page_view(self):
        response = self.c.get(reverse('public_403_error'))
        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_404_page_view(self):
        response = self.c.get(reverse('public_404_error'))
        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_500_page_view(self):
        response = self.c.get(reverse('public_500_error'))
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertTrue(len(response.content) > 1)
        self.assertIn(b'500', response.content)

    @transaction.atomic
    def test_terms_page_view(self):
        response = self.c.get(reverse('public_terms'))
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertTrue(len(response.content) > 1)
        self.assertIn(b'Terms', response.content)
Beispiel #25
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 #26
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)
class APIPublicFileUploadWithPublicSchemaTestCase(APITestCase, TenantTestCase):
    fixtures = []

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

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

    @transaction.atomic
    def setUp(self):
        translation.activate('en')  # Set English.
        super(APIPublicFileUploadWithPublicSchemaTestCase, 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)

        PublicFileUpload.objects.bulk_create([
            PublicFileUpload(owner=self.user),
            PublicFileUpload(owner=self.user),
            PublicFileUpload(owner=self.user),
        ])

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

    @transaction.atomic
    def tearDown(self):
        entries = PublicFileUpload.objects.all()
        for entry in entries.all():
            entry.delete()
        users = User.objects.all()
        for user in users.all():
            user.delete()
        super(APIPublicFileUploadWithPublicSchemaTestCase, self).tearDown()

    def _create_test_file(self, path):
        """
        Creates a simulated file.

        Source: https://medium.com/@jxstanford/django-rest-framework-file-upload-e4bc8de669c0#.l8dbmtosq
        """
        f = open(path, 'w')
        f.write('test123\n')
        f.close()
        f = open(path, 'rb')
        return {'datafile': f}

    @transaction.atomic
    def test_to_string(self):
        # Create a new object with our specific test data.
        entry = PublicFileUpload.objects.create(
            id=2030,
            owner=self.user,
        )
        entry.save()
        self.assertEqual(str(entry), "")

    @transaction.atomic
    def test_post_with_authenticated_user(self):
        # Step 1: Set the location variables.
        url = reverse('publicfileupload-list')
        data = self._create_test_file('/tmp/test_upload')
        data['owner'] = self.user.id

        # Step 2: Perform a "multiform" post using AJAX.
        response = self.authorized_client.post(url, data, format='multipart')

        # Step 3: Test & verify.
        self.assertEqual(response.status_code, status.HTTP_201_CREATED)
        self.assertIn('created', response.data)

    @transaction.atomic
    def test_post(self):
        # Step 1: Set the location variables.
        url = reverse('publicfileupload-list')
        data = self._create_test_file('/tmp/test_upload')

        # Step 2: Perform a "multiform" post using AJAX.
        response = self.unauthorized_client.post(url, data, format='multipart')

        # Step 3: Test & verify.
        self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)

    @transaction.atomic
    def test_list(self):
        # Step 1: Set the location variables.
        url = reverse('publicfileupload-list')

        # Step 2: Test & verify.
        response = self.unauthorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)

    @transaction.atomic
    def test_list_with_authentication(self):
        # Step 1: Set the location variables.
        url = reverse('publicfileupload-list')

        # Step 2: Test & verify.
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)

    @transaction.atomic
    def test_list_with_banning(self):
        # Step 1: Setup variables.
        url = reverse('publicfileupload-list')

        # Step 2: Ban self.
        BannedIP.objects.create(address='127.0.0.1',
                                reason='For unit testing purposes.')

        # Step 3: Test & verify.
        response = self.authorized_client.get(url)
        self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)

    @transaction.atomic
    def test_put(self):
        # Delete any previous data.
        uploads = PublicFileUpload.objects.all()
        for upload in uploads.all():
            upload.delete()

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

        # Run the test.
        url = reverse('publicfileupload-list') + '1/'
        response = self.unauthorized_client.put(
            url, json.dumps({
                'id': 1,
            }), content_type='application/json')
        self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)

    @transaction.atomic
    def test_put_with_authorization(self):
        # Delete any previous data.
        uploads = PublicFileUpload.objects.all()
        for upload in uploads.all():
            upload.delete()

        # Create a new object with our specific test data.
        PublicFileUpload.objects.create(
            id=1,
            owner_id=self.user.id,
        )
        data = {'id': 1, 'owner': self.user.id}

        # Run the test.
        url = reverse('publicfileupload-list') + '1/'
        response = self.authorized_client.put(url,
                                              json.dumps(data),
                                              content_type='application/json')
        self.assertEqual(response.status_code, status.HTTP_200_OK)

    @transaction.atomic
    def test_delete(self):
        # Step 1: Set the location variables.
        url = reverse('publicfileupload-list') + '1/'

        # Step 2: Test & verify.
        response = self.unauthorized_client.delete(url)
        self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)

    @transaction.atomic
    def test_delete_with_authentication(self):
        # Step 1: Delete any previous data.
        uploads = PublicFileUpload.objects.all()
        for upload in uploads.all():
            upload.delete()

        # Step 2: Set the location variables.
        PublicFileUpload.objects.create(
            id=1,
            owner_id=self.user.id,
        )
        url = reverse('publicfileupload-list') + '1/'

        # Step 3: Test & verify.
        response = self.authorized_client.delete(url)
        self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
Beispiel #28
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))
Beispiel #29
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 #30
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 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)