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
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
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 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' }
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 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 } }
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')))
def setUp(self): self.user = UserFactory(is_email_verified=False) self.url = reverse('users:confirm_email', args=(self.user.pk, ))
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'] })
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="******")
def user() -> User: return UserFactory()
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))