18
18
# pylint: disable=F0401,E0611,E1101
20
20
from PyQt4 import QtGui, QtCore
21
from twisted.internet import defer
23
22
from ubuntu_sso.utils.ui import (
27
from ubuntu_sso.qt import gui
28
27
from ubuntu_sso.qt import common
29
28
from ubuntu_sso.qt.reset_password_page import (
34
from ubuntu_sso.qt.ui.reset_password_ui import Ui_ResetPasswordPage
35
from ubuntu_sso.qt.tests import (
43
class FakePasswordAssistance(object):
44
"""Fake password_assistance_* calls."""
48
def call(self, *args, **kwargs):
49
"""Check if the method was called."""
50
FakePasswordAssistance._called = True
53
"""Clean up the variable."""
54
FakePasswordAssistance._called = False
33
from ubuntu_sso.qt.tests import PageBaseTestCase
57
36
# We need this Fake until a future refactor.
75
54
return self.line_text
78
class ResetPasswordTestCase(BaseTestCase):
57
class ResetPasswordTestCase(PageBaseTestCase):
79
58
"""Test the ResetPasswordPage code."""
81
@defer.inlineCallbacks
83
yield super(ResetPasswordTestCase, self).setUp()
84
self.patch(gui.main, "get_sso_client", FakedBackend)
85
self.app_name = 'my_app'
86
self.ui = ResetPasswordPage(Ui_ResetPasswordPage(),
87
app_name=self.app_name,
89
self.wizard = FakeWizard()
90
self.patch(self.ui, 'wizard', lambda: self.wizard)
91
self.fake = FakePasswordAssistance()
60
ui_class = ResetPasswordPage
61
ui_signals = ('passwordChanged',)
62
ui_backend_siganls = ('PasswordChanged', 'PasswordChangeError')
64
def test_password_line(self):
94
65
"""Check the initial state of ResetPassword."""
95
66
self.assertEqual(self.ui.ui.password_line_edit.receivers(
96
67
QtCore.SIGNAL('textEdited(QString)')), 1)
103
74
self.ui.initializePage()
104
75
self.addCleanup(self.ui.hide)
105
self.assertEqual(self.ui.header.title_label.text(), RESET_TITLE)
106
self.assertEqual(self.ui.header.subtitle_label.text(),
76
self.assert_title_correct(RESET_TITLE)
77
self.assert_subtitle_correct(RESET_SUBTITLE)
108
78
self.assertEqual(self.ui.ui.password_label.text(), PASSWORD1_ENTRY)
109
79
self.assertEqual(self.ui.ui.confirm_password_label.text(),
132
102
def test_focus_changed_1(self):
133
103
"""Check functions execution when focus_changed() is executed."""
134
self.patch(common, 'password_default_assistance', self.fake.call)
135
self.addCleanup(self.fake.clenaup)
104
self.patch(common, 'password_default_assistance', self._set_called)
137
107
self.addCleanup(self.ui.hide)
138
self.assertFalse(FakePasswordAssistance._called)
109
self.assertFalse(self._called)
139
110
self.ui.focus_changed(None, self.ui.ui.password_line_edit)
140
111
self.assertTrue(self.ui.ui.password_assistance.isVisible())
141
self.assertTrue(FakePasswordAssistance._called)
112
self.assertTrue(self._called)
143
114
def test_focus_changed_2(self):
144
115
"""Check functions execution when focus_changed() is executed."""
145
self.patch(common, 'password_check_match', self.fake.call)
146
self.addCleanup(self.fake.clenaup)
116
self.patch(common, 'password_check_match', self._set_called)
148
119
self.addCleanup(self.ui.hide)
149
self.assertFalse(FakePasswordAssistance._called)
121
self.assertFalse(self._called)
150
122
self.ui.focus_changed(None, self.ui.ui.confirm_password_line_edit)
151
123
self.assertTrue(self.ui.ui.password_assistance.isVisible())
152
self.assertTrue(FakePasswordAssistance._called)
124
self.assertTrue(self._called)
154
126
# pylint: enable=W0212
156
128
def test_set_new_password(self):
157
129
"""Test set_new_password method."""
130
self.patch(self.ui, "hide_error", self._set_called)
158
131
email = 'email@example.com'
160
133
password = 'password'
161
134
forgotten = FakeForgottenPage()
162
135
forgotten.setText(email)
163
136
self.patch(self.wizard, "forgotten", forgotten)
164
exposed_methods = ['set_new_password']
165
self.patch(FakedObject, "exposed_methods", exposed_methods)
166
faked_object = FakedObject()
167
self.patch(self.ui, "backend", faked_object)
168
137
self.ui.ui.reset_code_line_edit.setText(code)
169
138
self.ui.ui.password_line_edit.setText(password)
170
140
self.ui.set_new_password()
171
142
self.assert_backend_called('set_new_password',
172
143
self.app_name, email, code, password)
145
self.assertEqual(expected, self._called)