UPD: improved tests.
This commit is contained in:
@@ -1,19 +1,190 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.test import tag
|
||||
from django.urls import reverse
|
||||
from django.utils.translation import ugettext
|
||||
from selenium.webdriver.common.by import By
|
||||
from selenium.webdriver.common.keys import Keys
|
||||
|
||||
|
||||
from dav_base.tests.generic import skip_unless_tag_option, ScreenshotTestCase
|
||||
|
||||
TEST_USERNAME = 'root@localhost'
|
||||
TEST_PASSWORD = u'me||ön 2'
|
||||
TEST_EMAIL = TEST_USERNAME
|
||||
|
||||
#@skip_unless_tag_option()
|
||||
#@tag('screenshots')
|
||||
|
||||
@skip_unless_tag_option()
|
||||
@tag('screenshots')
|
||||
class TestCase(ScreenshotTestCase):
|
||||
def test_some(self):
|
||||
screenshot_prefix = 'dav_auth-'
|
||||
|
||||
def setUp(self):
|
||||
super(TestCase, self).setUp()
|
||||
# Need a test user
|
||||
self.test_username = TEST_USERNAME
|
||||
self.test_password = TEST_PASSWORD
|
||||
model = get_user_model()
|
||||
self.user = model.objects.create_user(username=TEST_USERNAME, password=TEST_PASSWORD, email=TEST_EMAIL)
|
||||
|
||||
def test_screenshots(self):
|
||||
sequence_name = 'walkthrough'
|
||||
|
||||
# Go to login page via login button on root page -> save plain login form
|
||||
c = self.selenium
|
||||
c.get(self.complete_url('/'))
|
||||
link = c.find_element_by_css_selector('#login-widget a')
|
||||
link.click()
|
||||
self.save_screenshot('login-form')
|
||||
link = c.find_element_by_link_text('Passwort vergessen?')
|
||||
self.wait_on_presence(c, (By.ID, 'id_username'))
|
||||
self.save_screenshot(sequence=sequence_name)
|
||||
|
||||
# Fill in a password -> Save dots in password field
|
||||
username_field = c.find_element_by_id('id_username')
|
||||
username_field.clear()
|
||||
username_field.send_keys('username')
|
||||
password_field = c.find_element_by_id('id_password')
|
||||
password_field.clear()
|
||||
password_field.send_keys(self.test_password)
|
||||
self.save_screenshot(sequence=sequence_name)
|
||||
|
||||
# Wrong username -> save error message
|
||||
username_field = c.find_element_by_id('id_username')
|
||||
username_field.clear()
|
||||
username_field.send_keys(self.test_username[::-1])
|
||||
password_field = c.find_element_by_id('id_password')
|
||||
password_field.clear()
|
||||
password_field.send_keys(self.test_password)
|
||||
password_field.send_keys(Keys.RETURN)
|
||||
alert_button = self.wait_on_presence(c, (By.CSS_SELECTOR, 'form .alert-danger button.close'))
|
||||
self.save_screenshot(sequence=sequence_name)
|
||||
alert_button.click()
|
||||
|
||||
# Wrong password -> save error message
|
||||
username_field = c.find_element_by_id('id_username')
|
||||
username_field.clear()
|
||||
username_field.send_keys(self.test_username)
|
||||
password_field = c.find_element_by_id('id_password')
|
||||
password_field.clear()
|
||||
password_field.send_keys(self.test_password[::-1])
|
||||
password_field.send_keys(Keys.RETURN)
|
||||
alert_button = self.wait_on_presence(c, (By.CSS_SELECTOR, 'form .alert-danger button.close'))
|
||||
self.save_screenshot(sequence=sequence_name)
|
||||
alert_button.click()
|
||||
|
||||
# Login of inactive user -> save error message
|
||||
self.user.is_active = False
|
||||
self.user.save()
|
||||
username_field = c.find_element_by_id('id_username')
|
||||
username_field.clear()
|
||||
username_field.send_keys(self.test_username)
|
||||
password_field = c.find_element_by_id('id_password')
|
||||
password_field.clear()
|
||||
password_field.send_keys(self.test_password)
|
||||
password_field.send_keys(Keys.RETURN)
|
||||
alert_button = self.wait_on_presence(c, (By.CSS_SELECTOR, 'form .alert-danger button.close'))
|
||||
self.save_screenshot(sequence=sequence_name)
|
||||
alert_button.click()
|
||||
# Reactivate test user again
|
||||
self.user.is_active = True
|
||||
self.user.save()
|
||||
|
||||
# Login -> save success message
|
||||
username_field = c.find_element_by_id('id_username')
|
||||
username_field.clear()
|
||||
username_field.send_keys(self.test_username)
|
||||
password_field = c.find_element_by_id('id_password')
|
||||
password_field.clear()
|
||||
password_field.send_keys(self.test_password)
|
||||
password_field.send_keys(Keys.RETURN)
|
||||
alert_button = self.wait_on_presence(c, (By.CSS_SELECTOR, '#messages .alert-success button.close'))
|
||||
self.save_screenshot(sequence=sequence_name)
|
||||
alert_button.click()
|
||||
|
||||
# Open user dropdown menu -> save menu
|
||||
dropdown_button = self.wait_on_presence(c, (By.ID, 'user_dropdown_button'))
|
||||
dropdown_button.click()
|
||||
self.save_screenshot(sequence=sequence_name)
|
||||
|
||||
# Click on 'set password' -> save set password page
|
||||
user_menu = c.find_element_by_css_selector('#login-widget ul')
|
||||
link = user_menu.find_element_by_partial_link_text(ugettext(u'Passwort ändern'))
|
||||
link.click()
|
||||
self.save_screenshot('reset-password-form')
|
||||
self.wait_on_presence(c, (By.ID, 'id_new_password'))
|
||||
self.save_screenshot(sequence=sequence_name)
|
||||
|
||||
# Fill in a password -> Save dots in password field
|
||||
password_field = c.find_element_by_id('id_new_password')
|
||||
password_field.clear()
|
||||
password_field.send_keys(self.test_password)
|
||||
password2_field = c.find_element_by_id('id_new_password_repeat')
|
||||
password2_field.clear()
|
||||
password2_field.send_keys(self.test_password)
|
||||
self.save_screenshot(sequence=sequence_name)
|
||||
|
||||
# New passwords mismatch -> save error message
|
||||
password_field = c.find_element_by_id('id_new_password')
|
||||
password_field.clear()
|
||||
password_field.send_keys(self.test_password)
|
||||
password2_field = c.find_element_by_id('id_new_password_repeat')
|
||||
password2_field.clear()
|
||||
password2_field.send_keys(self.test_password[::-1])
|
||||
password2_field.send_keys(Keys.RETURN)
|
||||
self.wait_until_stale(c, password2_field)
|
||||
self.save_screenshot(sequence=sequence_name)
|
||||
|
||||
# New passwords too common and too short -> save error message
|
||||
password = 'abcdef'
|
||||
password_field = c.find_element_by_id('id_new_password')
|
||||
password_field.clear()
|
||||
password_field.send_keys(password)
|
||||
password2_field = c.find_element_by_id('id_new_password_repeat')
|
||||
password2_field.clear()
|
||||
password2_field.send_keys(password)
|
||||
password2_field.send_keys(Keys.RETURN)
|
||||
self.wait_until_stale(c, password2_field)
|
||||
self.save_screenshot(sequence=sequence_name)
|
||||
|
||||
# New passwords entirely_numeric -> save error message
|
||||
password = '9126735804'
|
||||
password_field = c.find_element_by_id('id_new_password')
|
||||
password_field.clear()
|
||||
password_field.send_keys(password)
|
||||
password2_field = c.find_element_by_id('id_new_password_repeat')
|
||||
password2_field.clear()
|
||||
password2_field.send_keys(password)
|
||||
password2_field.send_keys(Keys.RETURN)
|
||||
self.wait_until_stale(c, password2_field)
|
||||
self.save_screenshot(sequence=sequence_name)
|
||||
|
||||
# New passwords too similar -> save error message
|
||||
password = self.test_username
|
||||
password_field = c.find_element_by_id('id_new_password')
|
||||
password_field.clear()
|
||||
password_field.send_keys(password)
|
||||
password2_field = c.find_element_by_id('id_new_password_repeat')
|
||||
password2_field.clear()
|
||||
password2_field.send_keys(password)
|
||||
password2_field.send_keys(Keys.RETURN)
|
||||
self.wait_until_stale(c, password2_field)
|
||||
self.save_screenshot(sequence=sequence_name)
|
||||
|
||||
# Change password -> save success message
|
||||
password = self.test_password[::-1]
|
||||
password_field = c.find_element_by_id('id_new_password')
|
||||
password_field.clear()
|
||||
password_field.send_keys(password)
|
||||
password2_field = c.find_element_by_id('id_new_password_repeat')
|
||||
password2_field.clear()
|
||||
password2_field.send_keys(password)
|
||||
password2_field.send_keys(Keys.RETURN)
|
||||
self.wait_until_stale(c, password2_field)
|
||||
self.save_screenshot(sequence=sequence_name)
|
||||
|
||||
# Click on 'logout' -> save page
|
||||
dropdown_button = self.wait_on_presence(c, (By.ID, 'user_dropdown_button'))
|
||||
dropdown_button.click()
|
||||
user_menu = c.find_element_by_css_selector('#login-widget ul')
|
||||
link = user_menu.find_element_by_partial_link_text(ugettext(u'Logout'))
|
||||
link.click()
|
||||
self.wait_until_stale(c, user_menu)
|
||||
self.save_screenshot(sequence=sequence_name)
|
||||
|
||||
Reference in New Issue
Block a user