Example #1
0
    def test_authenticated(self, user: User, rf: RequestFactory):
        request = rf.get("/fake-url/")
        request.user = UserFactory()

        response = user_detail_view(request, username=user.username)

        assert response.status_code == 200
Example #2
0
    def test_clean_username(self):
        # A user with proto_user params does not exist yet.
        proto_user = UserFactory.build()

        form = UserCreationForm({
            "username": proto_user.username,
            "password1": proto_user._password,
            "password2": proto_user._password,
        })

        assert form.is_valid()
        assert form.clean_username() == proto_user.username

        # Creating a user.
        form.save()

        # The user with proto_user params already exists,
        # hence cannot be created.
        form = UserCreationForm({
            "username": proto_user.username,
            "password1": proto_user._password,
            "password2": proto_user._password,
        })

        assert not form.is_valid()
        assert len(form.errors) == 1
        assert "username" in form.errors
Example #3
0
 def test_not_owner(self):
     """
     User tries to update account of another user and gets error message
     """
     user = UserFactory()
     self.client.login(username=user.email, password=TEST_USER_PASSWORD)
     response = self.client.put(self.url, self.data, format='json')
     self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
Example #4
0
 def setUp(self):
     self.user = UserFactory()
     self.strain = StrainFactory()
     self.url = reverse('search_api:strain_rate', args=(self.strain.pk,))
     self.data = {
         'rating': 5,
         'review': 'test'
     }
Example #5
0
    def test_email_duplicate(self):
        user = UserFactory()
        self.data['email'] = user.email

        self.client.login(username=self.user.email,
                          password=TEST_USER_PASSWORD)
        response = self.client.put(self.url, self.data, format='json')
        self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
        self.assertEqual(
            response.json(), {
                'email': [
                    'There is already an account associated with that email address'
                ]
            })
Example #6
0
 def setUp(self):
     self.user = UserFactory()
     self.url = reverse('users_api:user-detail', args=(self.user.pk, ))
     self.data = {
         'name': lorem_ipsum.words(1),
         'last_name': lorem_ipsum.words(1),
         'first_name': lorem_ipsum.words(1),
         'email': '{}@example.com'.format(lorem_ipsum.words(1)),
         'birth_month': 'Jan',
         'birth_day': 10,
         'birth_year': 1989,
         'gender': GENDER[1][0],
         'timezone': random.choice(pytz.common_timezones),
         'location': {
             'zipcode': '65000',
             'street1': lorem_ipsum.words(1),
             'city': lorem_ipsum.words(1),
             'state': lorem_ipsum.words(1),
             'location_raw': {},
             'lat': 46,
             'lng': 30
         }
     }
Example #7
0
class UserSignUpWizardTestCase(TestCase):
    def setUp(self):
        self.user = UserFactory(is_email_verified=False)
        self.url = reverse('users:confirm_email', args=(self.user.pk, ))

    def test_confirm_email_without_search_settings(self):
        response = self.client.get(self.url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.user.refresh_from_db()
        self.assertTrue(self.user.is_email_verified)
        self.assertContains(response, "= '{}'".format(reverse('home')))

    def test_confirm_email_with_search_settings(self):
        UserSearch.objects.create(user=self.user,
                                  varieties={},
                                  effects={},
                                  benefits={},
                                  side_effects={})
        response = self.client.get(self.url)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.user.refresh_from_db()
        self.assertTrue(self.user.is_email_verified)
        self.assertContains(response,
                            "= '{}'".format(reverse('search:strain_results')))
Example #8
0
 def setUp(self):
     self.user = UserFactory(is_email_verified=False)
     self.url = reverse('users:confirm_email', args=(self.user.pk, ))
Example #9
0
class UserDetailTestCase(APITestCase):
    def setUp(self):
        self.user = UserFactory()
        self.url = reverse('users_api:user-detail', args=(self.user.pk, ))
        self.data = {
            'name': lorem_ipsum.words(1),
            'last_name': lorem_ipsum.words(1),
            'first_name': lorem_ipsum.words(1),
            'email': '{}@example.com'.format(lorem_ipsum.words(1)),
            'birth_month': 'Jan',
            'birth_day': 10,
            'birth_year': 1989,
            'gender': GENDER[1][0],
            'timezone': random.choice(pytz.common_timezones),
            'location': {
                'zipcode': '65000',
                'street1': lorem_ipsum.words(1),
                'city': lorem_ipsum.words(1),
                'state': lorem_ipsum.words(1),
                'location_raw': {},
                'lat': 46,
                'lng': 30
            }
        }

    def test_update_user_detail(self):
        """
        User successfully update his account
        """
        name = self.user.name
        self.client.login(username=self.user.email,
                          password=TEST_USER_PASSWORD)
        response = self.client.put(self.url, self.data, format='json')
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.user.refresh_from_db()
        for field in [
                'last_name', 'first_name', 'email', 'birth_month', 'birth_day',
                'birth_year', 'gender', 'timezone'
        ]:
            self.assertEqual(getattr(self.user, field), self.data[field])
        self.assertEqual(self.user.name, name)

    def test_update_user_detail_without_name(self):
        """
        User successfully update his account
        """
        self.user.name = ''
        self.user.save()
        self.client.login(username=self.user.email,
                          password=TEST_USER_PASSWORD)
        response = self.client.put(self.url, self.data, format='json')
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.user.refresh_from_db()
        for field in [
                'name', 'last_name', 'first_name', 'email', 'birth_month',
                'birth_day', 'birth_year', 'gender', 'timezone'
        ]:
            self.assertEqual(getattr(self.user, field), self.data[field])

    def test_not_owner(self):
        """
        User tries to update account of another user and gets error message
        """
        user = UserFactory()
        self.client.login(username=user.email, password=TEST_USER_PASSWORD)
        response = self.client.put(self.url, self.data, format='json')
        self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)

    def test_anonymous(self):
        """
        Anonymous tries to update his account and gets error
        """
        response = self.client.put(self.url, self.data, format='json')
        self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)

    def test_empty_data(self):
        """
        User make request with empty data, user's name and email stay same
        """
        email = self.user.email
        name = self.user.name
        self.client.login(username=self.user.email,
                          password=TEST_USER_PASSWORD)
        response = self.client.put(self.url, format='json')
        self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
        self.assertEqual(response.json(),
                         {'email': ['This field is required.']})
        self.user.refresh_from_db()
        self.assertEqual(email, self.user.email)
        self.assertEqual(name, self.user.name)

    def test_empty_data_values(self):
        """
        User make request with empty data values, user's name and email stay same
        """
        self.data = {
            'name': '',
            'last_name': '',
            'first_name': '',
            'email': '',
            'birth_month': '',
            'birth_day': '',
            'birth_year': '',
            'gender': ''
        }

        self.client.login(username=self.user.email,
                          password=TEST_USER_PASSWORD)
        response = self.client.put(self.url, self.data, format='json')
        self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
        self.assertEqual(response.json(),
                         {'email': ['This field may not be blank.']})

        self.data.pop('email')
        response = self.client.put(self.url, self.data, format='json')
        self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
        self.assertEqual(response.json(),
                         {'email': ['This field is required.']})

        self.data['email'] = self.user.email
        response = self.client.put(self.url, self.data, format='json')
        self.assertEqual(response.status_code, status.HTTP_200_OK)

    def test_birthday(self):
        """
        User does not send full birthday date and get error
        """
        data = {
            'email': '{}@example.com'.format(lorem_ipsum.words(1)),
            'birth_month': 'Jan'
        }
        self.client.login(username=self.user.email,
                          password=TEST_USER_PASSWORD)
        response = self.client.put(self.url, data, format='json')
        self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
        self.assertEqual(response.json(),
                         {'birth_day': ['This field is required.']})

        data = {
            'email': '{}@example.com'.format(lorem_ipsum.words(1)),
            'birth_month': 'Jan',
            'birth_day': 10
        }
        response = self.client.put(self.url, data, format='json')
        self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
        self.assertEqual(response.json(),
                         {'birth_year': ['This field is required.']})

        data = {
            'birth_month': '',
            'birth_day': '',
            'birth_year': '',
            'email': '{}@example.com'.format(lorem_ipsum.words(1))
        }
        response = self.client.put(self.url, data, format='json')
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertEqual(
            response.json(), {
                'birth_day': None,
                'birth_month': None,
                'birth_year': None,
                'email': data['email'],
                'first_name': self.user.first_name,
                'gender': self.user.gender,
                'last_name': self.user.last_name,
                'name': self.user.name,
                'timezone': self.user.timezone
            })

    def test_gender(self):
        self.client.login(username=self.user.email,
                          password=TEST_USER_PASSWORD)
        data = {
            'gender': '',
            'email': '{}@example.com'.format(lorem_ipsum.words(1))
        }
        response = self.client.put(self.url, data, format='json')
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.user.refresh_from_db()
        self.assertEqual(
            response.json(), {
                'birth_day': None,
                'birth_month': None,
                'birth_year': None,
                'email': data['email'],
                'first_name': self.user.first_name,
                'gender': '',
                'last_name': self.user.last_name,
                'name': self.user.name,
                'timezone': self.user.timezone
            })

    def test_email_duplicate(self):
        user = UserFactory()
        self.data['email'] = user.email

        self.client.login(username=self.user.email,
                          password=TEST_USER_PASSWORD)
        response = self.client.put(self.url, self.data, format='json')
        self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
        self.assertEqual(
            response.json(), {
                'email': [
                    'There is already an account associated with that email address'
                ]
            })

    def test_username_duplicate(self):
        self.user.name = ''
        self.user.save()

        user = UserFactory()
        self.data['name'] = user.name

        self.client.login(username=self.user.email,
                          password=TEST_USER_PASSWORD)
        response = self.client.put(self.url, self.data, format='json')
        self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
        self.assertEqual(response.json(), {
            'name':
            ['There is already an account associated with that user name']
        })
Example #10
0
    def test_case_sensitivity(self, rf: RequestFactory):
        request = rf.get("/fake-url/")
        request.user = UserFactory(username="******")

        with pytest.raises(Http404):
            user_detail_view(request, username="******")
Example #11
0
def user() -> User:
    return UserFactory()
Example #12
0
 def setUp(self, *args):
     self.user = UserFactory()
     self.menu = BusinessLocationMenuItemFactory()
     self.url = reverse(
         'businesses_api:business_location_report_out_of_stock',
         args=(self.menu.business_location.business_id, self.menu.pk))