def test_view_renders_proper_template(self): dummy_user = DummyUser().create_dummy_user(username='******', password='******') self.client.login(username='******', password='******') DummyUser().add_dummy_permission(dummy_user, 'view_userprofile') response = self.client.get(self.path) self.assertTemplateUsed(response, self.template)
def test_form_save(self): dummy_user = DummyUser().create_dummy_user(username='******') DummyUser().create_dummy_group(group_name='members') self.assertFalse(has_group(dummy_user, 'members')) # Створюємо форму з instance і data # (заповнюємо також required fields, бо super().save не зможе зберегти) data = { 'username': '******', 'has_perm_member': True, 'date_joined': now() } form = self.cls_form(instance=dummy_user, data=data) saved_user = form.save() # Чи збережено? self.assertEqual(saved_user, User.objects.last()) # Чи змінилось значення поля? self.assertTrue(has_group(dummy_user, 'members')) # Створюємо форму з user + додаткові data data = { 'username': '******', 'has_perm_member': False, 'date_joined': now() } form = self.cls_form(instance=dummy_user, data=data) saved_user = form.save() # Чи збережено? self.assertEqual(saved_user, User.objects.last()) # Чи змінилось значення поля? self.assertFalse(has_group(dummy_user, 'members'))
def test_init_and_get_is_member(self): form = self.cls_form() # empty form: self.assertFalse(form.is_member) self.assertFalse(form.fields['has_perm_member'].initial) dummy_user = DummyUser().create_dummy_user(username='******') # form with initial data initial_data = { 'username': '******', } form = self.cls_form(data=initial_data) self.assertFalse(form.is_member) self.assertFalse(form.fields['has_perm_member'].initial) # form with initial user instance: DummyUser().create_dummy_group(group_name='members') DummyUser().add_dummy_group(dummy_user, group_name='members') self.assertTrue(has_group(dummy_user, 'members')) form = self.cls_form(instance=dummy_user) self.assertTrue(form.is_member) self.assertEqual(form.fields['has_perm_member'].initial, form.is_member)
def test_save_file_update_profile_but_not_file(self): user = DummyUser().create_dummy_user() # Спочатку повторимо всі операції по створенню профілю: # Створюємо профіль, у полі picture вибираємо великий файл: DummyUser().create_dummy_profile(user, picture=self.uploaded_big_file) profile = user.userprofile profile_id = profile.id # Тепер змінимо у профілі якесь поле (але не picture!) і збережемо: flat = DummyFlat().create_dummy_flat(flat_No='55', id=155) profile.flat = flat profile.save() saved_profile = UserProfile.objects.get(id=profile_id) # Вмісти збереженого файла і первинного мінімізованого до 200*200 співпадають? self.assertEqual(saved_profile.picture.read(), self.expected_mini_content) # Чи правильний фактичний шлях до файла basename = os.path.basename(saved_profile.picture.path) self.assertEqual(basename, "1.jpg") # Видляємо з диска (бо файл по-чесному записався в /media/profile_images/1.jpg) saved_profile.picture.delete()
def test_view_gives_response_status_code_200(self): dummy_user = DummyUser().create_dummy_user(username='******', password='******') self.client.login(username='******', password='******') DummyUser().add_dummy_permission(dummy_user, 'view_userprofile') request = RequestFactory().get(self.path) request.user = dummy_user view = self.cls_view.as_view() response = view(request, pk=1) self.assertEqual(response.status_code, 200)
def test_thumbnail_for_file(self): user = DummyUser().create_dummy_user() picture_path = "koopsite/tests/profile_image.jpg" DummyUser().create_dummy_profile(user, picture_path=picture_path) mini_url = thumbnail(user.userprofile.picture) self.assertEqual(mini_url, '/media/profile_images/1_30x24.jpg') mini_url = thumbnail(user.userprofile.picture, "200x100") self.assertEqual(mini_url, '/media/profile_images/1_200x100.jpg') os.remove('media/profile_images/1.jpg') os.remove('media/profile_images/1_30x24.jpg') os.remove('media/profile_images/1_200x100.jpg')
def setUp(self): self.cls_view = FlatUsersList self.path = '/flats/1/users-list/' self.template = 'flats/flat_users_list.html' john, paul, george, ringo, freddy = DummyUser().create_dummy_beatles() flat1, flat2 = DummyUser().set_flats_to_beatles( john, paul, george, ringo, freddy) DummyUser().add_dummy_permission(john, 'view_userprofile') self.john = john self.paul = paul self.flat1 = flat1
def test_flat_user_CSS_class(self): john, paul, george, ringo, freddy = DummyUser().create_dummy_beatles() flat_1, flat_2 = DummyUser().set_flats_to_beatles(john, paul, george, ringo, freddy) flat_3 = Flat() DummyUser().create_dummy_group(group_name='members') DummyUser().add_dummy_group(john, group_name='members') self.assertEqual(flat_user_CSS_class(flat_1), "flat-has-member") self.assertEqual(flat_user_CSS_class(flat_2), "flat-has-users") self.assertEqual(flat_user_CSS_class(flat_3), "") self.assertEqual(flat_user_CSS_class(None), "") self.assertEqual(flat_user_CSS_class(User()), "")
def test_saving_and_retrieving_files(self): user = DummyUser().create_dummy_user() file = SimpleUploadedFile("file.txt", b"file_content") expected = file.read() DummyUser().create_dummy_profile(user, picture=file) saved_profile = UserProfile.objects.first() # Вмісти збереженого файда і первинного співпадають? self.assertEqual(saved_profile.picture.read(), expected) # Чи правильний фактичний шлях до файла basename = os.path.basename(saved_profile.picture.path) self.assertEqual(basename, "1.jpg") # Видляємо з диска (бо файл по-чесному записався в /media/profile_images/1.jpg) saved_profile.picture.delete()
def setUp(self): self.cls_form = ProfileFullForm self.cls_model = UserProfile self.expected_meta_fields = ('is_recognized', 'flat', 'picture') self.expected_form_fields = ('is_recognized', 'flat', 'picture') self.initial_data = { 'flat': '1', } self.empty_data = {}.fromkeys(self.expected_meta_fields) user = DummyUser().create_dummy_user(username='******') flat = DummyFlat().create_dummy_flat(id=1, flat_No='25') self.profile = DummyUser().create_dummy_profile(user, flat=flat, is_recognized=True)
def test_author_or_permission_required_UserProfile_Perm_False(self): view_func = self.view_func self.user.has_perms.return_value = False DummyUser().create_dummy_profile(self.user, id=3) DummyUser().create_dummy_profile(self.user2, id=4) decorated = author_or_permission_required(UserProfile, "") self.assertEqual(view_func(0), 'passed') self.assertEqual(decorated(view_func)(self.request, pk='3'), 'passed') self.assertEqual(type(decorated(view_func)(self.request, pk='4')), HttpResponseRedirect)
def test_save_file_create_profile(self): user = DummyUser().create_dummy_user() # Створюємо профіль, у полі picture вибираємо великий файл: DummyUser().create_dummy_profile(user, picture=self.uploaded_big_file) saved_profile = UserProfile.objects.first() # Вмісти збереженого файла і первинного мінімізованого до 200*200 співпадають? self.assertEqual(saved_profile.picture.read(), self.expected_mini_content) # Чи правильний фактичний шлях до файла basename = os.path.basename(saved_profile.picture.path) self.assertEqual(basename, "1.jpg") # Видляємо з диска (бо файл по-чесному записався в /media/profile_images/1.jpg) saved_profile.picture.delete()
def test_error_message_if_not_unique_username(self): # Користувач відкриває сторінку self.browser.get('%s%s' % (self.server_url, self.this_url)) DummyUser().create_dummy_user('john') field_id = "id_username" field_css = '#%s' % field_id # Вводить у полі неправильні дані inputbox = self.browser.find_element_by_id(field_id) inputbox.send_keys('john') # Натискає кнопку submit button = self.browser.find_element_by_css_selector('input[type=submit]') button.click() error = self.get_error_elements_for_field(field_css)[0] self.assertTrue(error.is_displayed()) self.assertEqual(error.text, "Користувач з таким ім'ям вже існує.") # Починає вводити щоб виправити помилку inputbox = self.browser.find_element_by_id(field_id) inputbox.send_keys('a') # Повідомлення про помилку зникає error = self.get_error_elements_for_field(field_css)[0] self.assertFalse(error.is_displayed()) # Повідомлення про помилку в іншому полі залишається error = self.get_error_elements_for_field('#id_password1')[0] self.assertTrue(error.is_displayed()) print('finished: %s' % inspect.stack()[0][3], end=' >> ')
def test_form_validation_for_duplicate_fields(self): DummyUser().create_dummy_user(username='******') # Передаємо у форму неунікальне значення поля: data = {'username': "******"} form = self.cls_form(data=data) self.assertFalse(form.is_valid()) self.assertEqual(form.errors['username'], ["Користувач з таким ім'ям вже існує."])
def test_thumbnail_for_path(self): user = DummyUser().create_dummy_user() picture_path = "koopsite/tests/profile_image.jpg" mini_url = thumbnail(picture_path) self.assertEqual(mini_url, 'koopsite/tests/profile_image_30x24.jpg') mini_url = thumbnail(picture_path, "200x100") self.assertEqual(mini_url, 'koopsite/tests/profile_image_200x100.jpg') os.remove('koopsite/tests/profile_image_30x24.jpg') os.remove('koopsite/tests/profile_image_200x100.jpg')
def test_view_gives_response_status_code_302_user_wo_permission(self): dummy_user = DummyUser().create_dummy_user(username='******', password='******') self.client.login(username='******', password='******') request = RequestFactory().get(self.path) request.user = dummy_user view = self.cls_view.as_view() response = view(request) self.assertEqual(response.status_code, 302) self.assertTrue(response.url.startswith(LOGIN_URL))
def setUp(self): # Параметри, при яких декоратор пропускає до функції: user = DummyUser().create_dummy_user(username='******') user.has_perms = Mock() user.has_perms.return_value = True user2 = DummyUser().create_dummy_user(username='******') user2.has_perms = Mock() user2.has_perms.return_value = True root = DummyFolder().create_dummy_root_folder() object = DummyFolder().create_dummy_report(root, id=1, filename='report1', user=user) object2 = DummyFolder().create_dummy_report(root, id=2, filename='report2') model = Report request = RequestFactory() request.build_absolute_uri = Mock() request.build_absolute_uri.return_value = "" # path request.get_full_path = Mock() request.get_full_path.return_value = "" # path request.user = user view_func = Mock() view_func.return_value = 'passed' test_func = Mock() test_func.return_value = True self.user = user self.user2 = user2 self.object = object self.model = model self.request = request self.view_func = view_func self.test_func = test_func self.perm = 'can'
def test_save_file_update_profile_just_file(self): user = DummyUser().create_dummy_user() # Спочатку повторимо всі операції по створенню профілю: # Створюємо профіль, у полі picture вибираємо великий файл: DummyUser().create_dummy_profile(user, picture=self.uploaded_big_file) profile = user.userprofile profile_id = profile.id saved_file_path = profile.picture.path # Тепер приготуємо інший файл: # Для прикладу беремо цей файл, з якого створимо мініатюру: full_path_2, \ mini_path_2, \ uploaded_big_file_2, \ expected_mini_content_2 \ = create_dummy_miniature_file('example_2.jpg') # Тепер змінимо у профілі поле picture і збережемо: profile.picture.name = 'example_2.jpg' profile.picture.file = uploaded_big_file_2 profile.save() saved_profile = UserProfile.objects.get(id=profile_id) # Вмісти збереженого файла і другого мінімізованого до 200*200 співпадають? self.assertEqual(saved_profile.picture.read(), expected_mini_content_2) # Чи правильний фактичний шлях до файла basename = os.path.basename(saved_profile.picture.path) # self.assertEqual(basename, "1.jpg") # Видляємо з диска (бо файл по-чесному записався в /media/profile_images/1.jpg) saved_profile.picture.delete() # Видаляємо створений міні-файл os.unlink(mini_path_2) # Видаляємо перший файл os.unlink(saved_file_path)
def test_view_renders_no_template_user_wo_permission(self): DummyUser().create_dummy_user(username='******', password='******') self.client.login(username='******', password='******') response = self.client.get(self.path) with self.assertRaises(AssertionError): self.assertTemplateUsed(response, self.template)
def test_get_absolute_url(self): user = DummyUser().create_dummy_user(id=2) profile = DummyUser().create_dummy_profile(user, is_recognized=True) expected = reverse('adm-users-profile', kwargs={'pk': 2}) self.assertEqual(profile.get_absolute_url(), expected)
def setUp(self): self.fred = DummyUser().create_dummy_user(username='******', password='******') self.dummy_user = AnonymousUser() DummyFlat().create_dummy_flat(id=1, flat_No='55')
def setUp(self): self.fred = DummyUser().create_dummy_user(username='******', password='******') self.dummy_user = self.create_dummy_user() self.add_user_cookie_to_browser(self.dummy_user)
class LoginPageAnonymousVisitorCanLoginTest(LoginPageVisitTest): """ Тест відвідання сторінки сайту користувачем Чи всі дані правильно відображені? Параметри сторінки описані в суперкласі, тому не потребують переозначення. """ def setUp(self): self.fred = DummyUser().create_dummy_user(username='******', password='******') self.dummy_user = AnonymousUser() DummyFlat().create_dummy_flat(id=1, flat_No='55') def test_anon_visitor_can_login(self): # Користувач відкриває сторінку self.browser.get('%s%s' % (self.server_url, self.this_url)) # Вводить дані і натискає кнопку Готово self.enter_and_check_data() # Опиняється на потрібній сторінці self.check_passed_link(url_name='index') print('finished: %s' % inspect.stack()[0][3], end=' >> ') def test_error_message_if_empty_required_fields(self): # Користувач відкриває сторінку self.browser.get('%s%s' % (self.server_url, self.this_url)) # НЕ вводить у полі дані # Натискає кнопку submit button = self.browser.find_element_by_css_selector('input[type=submit]') button.click() for field_css in ['#id_username', '#id_password']: error = self.get_error_elements_for_field(field_css)[0] self.assertTrue(error.is_displayed()) self.assertEqual(error.text, "Це поле обов'язкове.") print('finished: %s' % inspect.stack()[0][3], end=' >> ') # @skip def test_error_message_if_empty_required_fields_is_cleared_on_input(self): # Користувач відкриває сторінку self.browser.get('%s%s' % (self.server_url, self.this_url)) # НЕ вводить у полі дані # Натискає кнопку submit button = self.browser.find_element_by_css_selector('input[type=submit]') button.click() for field_css in ['#id_username', '#id_password']: # Виникає помилка error = self.get_error_elements_for_field(field_css)[0] self.assertTrue(error.is_displayed()) # Починає вводити щоб виправити помилку inputbox = self.browser.find_element_by_id(field_css.lstrip('#')) inputbox.send_keys('a') # Повідомлення про помилку зникає error = self.get_error_elements_for_field(field_css)[0] self.assertFalse(error.is_displayed()) print('finished: %s' % inspect.stack()[0][3], end=' >> ') def test_error_message_if_not_active_account(self): # Користувач відкриває сторінку self.browser.get('%s%s' % (self.server_url, self.this_url)) self.fred.is_active = False self.fred.save() # Вводить дані і натискає кнопку Готово self.enter_and_check_data() field_id = "id_username" field_css = '#%s' % field_id error = self.get_error_element(".errorlist") self.assertTrue(error.is_displayed()) self.assertEqual(error.text, "Цей запис користувача не активний.") print('finished: %s' % inspect.stack()[0][3], end=' >> ') def test_error_message_if_bad_username_and_or_password(self): # Користувач відкриває сторінку self.browser.get('%s%s' % (self.server_url, self.this_url)) # Вводить у полі неправильні дані inputbox = self.browser.find_element_by_id('id_username') inputbox.send_keys('john') inputbox = self.browser.find_element_by_id('id_password') inputbox.send_keys('john') # Натискає кнопку submit button = self.browser.find_element_by_css_selector('input[type=submit]') button.click() error = self.get_error_element(".errorlist") self.assertTrue(error.is_displayed()) self.assertEqual(error.text, "Будь ласка, введіть правильні ім'я користувача та пароль. Зауважте, що обидва поля чутливі до регістру.") print('finished: %s' % inspect.stack()[0][3], end=' >> ')
def test_has_members_perms(self): john, paul, george, ringo, freddy = DummyUser().create_dummy_beatles() DummyUser().create_dummy_group(group_name='members') DummyUser().add_dummy_group(john, group_name='members') self.assertTrue(has_member_perms(john)) self.assertFalse(has_member_perms(paul))
def test_user_full_name(self): user = DummyUser().create_dummy_user(first_name="ringo", last_name="starr") self.assertEqual(user_full_name(user), "Starr Ringo")
def test_user_flat_No(self): user = DummyUser().create_dummy_user() flat = DummyFlat().create_dummy_flat(flat_No="55") DummyUser().create_dummy_profile(user, flat=flat) self.assertEqual(user_flat_No(user), "55")