81 lines
3.0 KiB
Python
81 lines
3.0 KiB
Python
# -*- coding: utf-8 -*-
|
|
from django.contrib.auth import get_user_model
|
|
from django.test import SimpleTestCase, tag
|
|
from django.utils.translation import ugettext
|
|
from django.urls import reverse
|
|
from selenium.common.exceptions import NoSuchElementException
|
|
from selenium.webdriver.common.by import By
|
|
from selenium.webdriver.common.keys import Keys
|
|
from unittest import skip
|
|
|
|
from dav_base.tests.generic import SeleniumTestCase
|
|
|
|
TEST_USERNAME = 'root@localhost'
|
|
TEST_PASSWORD = u'me||ön 2'
|
|
TEST_EMAIL = TEST_USERNAME
|
|
|
|
|
|
class TemplatesTestCase(SimpleTestCase):
|
|
def test_reset_link_in_login_form(self):
|
|
login_url = reverse('dav_auth:login')
|
|
reset_url = reverse('dav_auth:reset_password')
|
|
text = ugettext(u'Passwort vergessen?')
|
|
html = u'<a href="{url}">{text}</a>'.format(url=reset_url, text=text)
|
|
response = self.client.get(login_url)
|
|
self.assertInHTML(html, response.content)
|
|
|
|
|
|
@tag('browser')
|
|
class TestCase(SeleniumTestCase):
|
|
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 _login(self, driver):
|
|
url = self.complete_url(reverse('dav_auth:login'))
|
|
driver.get(url)
|
|
username_field = self.wait_on_presence(driver, (By.ID, "id_username"))
|
|
username_field.clear()
|
|
username_field.send_keys(self.test_username)
|
|
password_field = driver.find_element_by_id('id_password')
|
|
password_field.clear()
|
|
password_field.send_keys(self.test_password)
|
|
password_field.send_keys(Keys.RETURN)
|
|
self.wait_on_presence(driver, (By.CSS_SELECTOR, "#messages .alert-success"))
|
|
return driver
|
|
|
|
def test_login_button_in_root_page(self):
|
|
c = self.selenium
|
|
c.get(self.complete_url('/'))
|
|
try:
|
|
link = c.find_element_by_css_selector('#login-widget a')
|
|
except NoSuchElementException as e:
|
|
self.fail(str(e))
|
|
|
|
def test_required_fields_in_login_form(self):
|
|
c = self.selenium
|
|
|
|
location = reverse('dav_auth:login')
|
|
c.get(self.complete_url(location))
|
|
|
|
field = c.find_element_by_id('id_username')
|
|
self.assertEqual(field.get_attribute('required'), u'true')
|
|
field = c.find_element_by_id('id_password')
|
|
self.assertEqual(field.get_attribute('required'), u'true')
|
|
|
|
def test_required_fields_in_set_password_form(self):
|
|
c = self._login(self.selenium)
|
|
|
|
c.get(self.complete_url(reverse('dav_auth:set_password')))
|
|
field = self.wait_on_presence(c, (By.ID, "id_new_password"))
|
|
self.assertEqual(field.get_attribute('required'), u'true')
|
|
field = c.find_element_by_id('id_new_password_repeat')
|
|
self.assertEqual(field.get_attribute('required'), u'true')
|
|
field = c.find_element_by_id('id_send_password_mail')
|
|
self.assertEqual(field.get_attribute('required'), None)
|
|
|