예제 #1
0
 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)
예제 #2
0
    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'))
예제 #3
0
    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)
예제 #4
0
    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()
예제 #5
0
 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)
예제 #6
0
 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')
예제 #7
0
 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
예제 #8
0
 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()), "")
예제 #9
0
 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()
예제 #10
0
 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)
예제 #11
0
    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)
예제 #12
0
    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=' >> ')
예제 #14
0
 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'],
                      ["Користувач з таким ім'ям вже існує."])
예제 #15
0
 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')
예제 #16
0
 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))
예제 #17
0
    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'
예제 #18
0
    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)
예제 #19
0
    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'
예제 #20
0
 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)
예제 #21
0
 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)
예제 #22
0
 def setUp(self):
     self.fred = DummyUser().create_dummy_user(username='******', password='******')
     self.dummy_user = AnonymousUser()
     DummyFlat().create_dummy_flat(id=1, flat_No='55')
예제 #23
0
 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)
예제 #24
0
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=' >> ')
예제 #25
0
 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))
예제 #26
0
 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)
예제 #27
0
 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")
예제 #28
0
 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")