# -*- coding: utf-8 -*- from __future__ import unicode_literals from django.contrib.auth import get_user_model from django.test import SimpleTestCase, tag from django.utils.translation import gettext from django.urls import reverse from selenium.common.exceptions import NoSuchElementException from selenium.webdriver.common.by import By from dav_base.tests.generic import SeleniumTestCase from .generic import SeleniumAuthMixin TEST_USERNAME = 'root@localhost' TEST_PASSWORD = 'me||ön 21ABll' TEST_EMAIL = TEST_USERNAME class TemplatesTestCase(SimpleTestCase): def test_recreate_link_in_login_form(self): login_url = reverse('dav_auth:login') recreate_url = reverse('dav_auth:recreate_password') text = gettext('Passwort vergessen?') html = '{text}'.format(url=recreate_url, text=text) response = self.client.get(login_url) self.assertInHTML(html, response.content.decode('utf-8')) @tag('browser') class TestCase(SeleniumAuthMixin, SeleniumTestCase): def setUp(self): super().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_login_button_in_root_page(self): c = self.selenium c.get(self.complete_url('/')) try: c.find_element(By.CSS_SELECTOR, '#login-widget a') except NoSuchElementException as e: # pragma: no cover 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'), 'true') field = c.find_element(By.ID, 'id_password') self.assertEqual(field.get_attribute('required'), 'true') def test_required_fields_in_set_password_form(self): c = self.login(self.selenium, self.test_username, self.test_password) 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'), 'true') field = c.find_element(By.ID, 'id_new_password_repeat') self.assertEqual(field.get_attribute('required'), 'true') field = c.find_element(By.ID, 'id_send_password_mail') self.assertEqual(field.get_attribute('required'), None)