Merge lp:~diegosarmentero/ubuntuone-windows-installer/mismatch-password into lp:ubuntuone-windows-installer

Proposed by Diego Sarmentero
Status: Merged
Approved by: Diego Sarmentero
Approved revision: 72
Merged at revision: 70
Proposed branch: lp:~diegosarmentero/ubuntuone-windows-installer/mismatch-password
Merge into: lp:ubuntuone-windows-installer
Diff against target: 208 lines (+49/-95)
3 files modified
ubuntuone_installer/gui/qt/gui.py (+4/-2)
ubuntuone_installer/gui/qt/setup_account.py (+11/-25)
ubuntuone_installer/gui/qt/tests/test_setup_account.py (+34/-68)
To merge this branch: bzr merge lp:~diegosarmentero/ubuntuone-windows-installer/mismatch-password
Reviewer Review Type Date Requested Status
Roberto Alsina (community) Approve
Natalia Bidart (community) Approve
Review via email: mp+75785@code.launchpad.net

Commit message

- Fixed: Setup account button can be clicked with password not matching (LP: #850334).

Description of the change

- Fixed: Setup account button can be clicked with password not matching (LP: #850334).

To post a comment you must log in.
70. By Diego Sarmentero

merge

71. By Diego Sarmentero

Conflict resolved.

Revision history for this message
Natalia Bidart (nataliabidart) wrote :

* This statement is very hard to read:

        self.email_verification = EmailVerificationPage(
                                                Ui_EmailVerificationPage(),
                                                EmailVerificationController(
                                                    message_box=self))

can you please change it to:

        controller = EmailVerificationController(message_box=self)
        page = Ui_EmailVerificationPage()
        self.email_verification = EmailVerificationPage(page, controller)

* Looks like you resolved the conflicts with trunk dropping some changes from there. Please view the changes from this branch against trunk using meld and revert to trunk version all the changes you're reverting in ubuntuone_installer/gui/qt/tests/test_setup_account.py.

In particular, restore this import:

from ubuntuone_installer.gui.qt import setup_account as gui

and restore all the changes from setup_account.something to gui.something.

This certainly needs fixing and can't go into trunk as is, so I'll mark as such. Ping me whenever is ready and I'll re-review, no matter if I'm off or not.

Thanks!

review: Needs Fixing
72. By Diego Sarmentero

Removed code that remains from conflict.

Revision history for this message
Natalia Bidart (nataliabidart) wrote :

Looks good now!

review: Approve
Revision history for this message
Roberto Alsina (ralsina) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'ubuntuone_installer/gui/qt/gui.py'
2--- ubuntuone_installer/gui/qt/gui.py 2011-09-16 12:55:16 +0000
3+++ ubuntuone_installer/gui/qt/gui.py 2011-09-19 15:53:25 +0000
4@@ -325,9 +325,11 @@
5 self.setup_controller,
6 parent=self)
7
8+ email_controller = EmailVerificationController(message_box=self)
9+ email_verification_page = Ui_EmailVerificationPage()
10 self.email_verification = EmailVerificationPage(
11- Ui_EmailVerificationPage(),
12- EmailVerificationController())
13+ email_verification_page,
14+ email_controller)
15 self.email_verification.next_button.clicked.connect(
16 self.overlay.show)
17
18
19=== modified file 'ubuntuone_installer/gui/qt/setup_account.py'
20--- ubuntuone_installer/gui/qt/setup_account.py 2011-09-16 12:55:16 +0000
21+++ ubuntuone_installer/gui/qt/setup_account.py 2011-09-19 15:53:25 +0000
22@@ -69,20 +69,8 @@
23 self.terms_checkbox = enhanced_check_box.EnhancedCheckBox(terms)
24 self.ui.hlayout_check.addWidget(self.terms_checkbox)
25
26- # The functions are placed based on the focus order of the widgets.
27- self.validation_functions = [
28- self.name_assistance,
29- self.email_assistance,
30- self.confirm_email_assistance,
31- self.password_check_match_wrapper]
32 self.set_up_button = None
33
34- def password_check_match_wrapper(self):
35- """Wrapper between validation_functions calls and utils function."""
36- common.password_check_match(self.ui.password_edit,
37- self.ui.confirm_password_edit,
38- self.ui.password_assistance)
39-
40 # Invalid name "initializePage"
41 # pylint: disable=C0103
42
43@@ -128,20 +116,18 @@
44
45 def focus_changed(self, old, now):
46 """Check who has the focus to activate password popups if necessary."""
47- if now == self.ui.email_edit:
48- self.validate_data_on_focus_changed(1)
49- elif now == self.ui.confirm_email_edit:
50- self.validate_data_on_focus_changed(2)
51- elif now == self.ui.password_edit:
52- self.validate_data_on_focus_changed(3)
53+ if old == self.ui.name_edit:
54+ self.name_assistance()
55+ elif old == self.ui.email_edit:
56+ self.email_assistance()
57+ elif old == self.ui.confirm_email_edit:
58+ self.confirm_email_assistance()
59+ elif old == self.ui.confirm_password_edit:
60+ common.password_check_match(self.ui.password_edit,
61+ self.ui.confirm_password_edit,
62+ self.ui.password_assistance)
63+ if now == self.ui.password_edit:
64 self.ui.password_assistance.setVisible(True)
65- elif now == self.ui.captcha_solution_edit:
66- self.validate_data_on_focus_changed(4)
67-
68- def validate_data_on_focus_changed(self, until):
69- """Validate the all the text fields until the given index."""
70- for func in self.validation_functions[:until]:
71- func()
72
73 def name_assistance(self):
74 """Show help for the name field."""
75
76=== modified file 'ubuntuone_installer/gui/qt/tests/test_setup_account.py'
77--- ubuntuone_installer/gui/qt/tests/test_setup_account.py 2011-09-16 12:58:50 +0000
78+++ ubuntuone_installer/gui/qt/tests/test_setup_account.py 2011-09-19 15:53:25 +0000
79@@ -33,37 +33,6 @@
80 from ubuntuone_installer.gui.qt.ui import setup_account_ui
81
82
83-class FakeValidationDict(object):
84- """A Fake dictionary to replace validation_functions on Setup Account."""
85-
86- def __init__(self):
87- for i in xrange(len(self)):
88- # set all the instance variables
89- setattr(FakeValidationDict, 'valid%s' % i, False)
90- setattr(self, 'validate_%s' % i, self.wrapper(i))
91-
92- def __getitem__(self, i):
93- """Get the proper function depending on the index received."""
94- return getattr(self, 'validate_%s' % i)
95-
96- def __getslice__(self, i, j):
97- """Check that the class length is not exceded and return the funcs."""
98- j = j if j <= len(self) else len(self)
99- return [self[q] for q in xrange(j)]
100-
101- def __len__(self):
102- """Return the number of functions in this class."""
103- return 4
104-
105- def wrapper(self, i):
106- """Change the state of the attributes based on the index."""
107- def inner(*args, **kwargs):
108- """Replace the value of the attributes depending on the index."""
109- for j in xrange(i + 1):
110- setattr(FakeValidationDict, 'valid%s' % j, True)
111- return inner
112-
113-
114 class SetupAccountTestCase(BaseTestCase):
115 """Test the SetupAccountPage code."""
116
117@@ -82,7 +51,6 @@
118 """Check the initial state of SetupAccount."""
119 self.assertEqual(self.ui.ui.password_edit.receivers(
120 QtCore.SIGNAL('textEdited(QString)')), 1)
121- self.assertTrue(self.ui.validation_functions)
122
123 def test_empty_name(self):
124 """Status when the name field is empty.
125@@ -107,7 +75,7 @@
126 """
127 self.ui.ui.password_edit.setText("")
128 self.ui.ui.confirm_password_edit.setText("")
129- self.ui.validate_data_on_focus_changed(4)
130+ common.password_default_assistance(self.ui.ui.password_assistance)
131 self.ui.focus_changed(None, self.ui.ui.password_edit)
132 self.assertIn(
133 common.NORMAL % common.PASSWORD_LENGTH,
134@@ -122,41 +90,39 @@
135 unicode(self.ui.ui.password_assistance.text()),
136 )
137
138- def test_focus_changed_1(self):
139- """Check functions execution when focus_changed() is executed."""
140- self.patch(self.ui, 'validation_functions', FakeValidationDict())
141- self.ui.validate_data_on_focus_changed(1)
142- self.assertTrue(getattr(FakeValidationDict, "valid0"))
143- self.assertFalse(getattr(FakeValidationDict, "valid1"))
144- self.assertFalse(getattr(FakeValidationDict, "valid2"))
145- self.assertFalse(getattr(FakeValidationDict, "valid3"))
146-
147- def test_focus_changed_2(self):
148- """Check functions execution when focus_changed() is executed."""
149- self.patch(self.ui, 'validation_functions', FakeValidationDict())
150- self.ui.validate_data_on_focus_changed(2)
151- self.assertTrue(getattr(FakeValidationDict, "valid0"))
152- self.assertTrue(getattr(FakeValidationDict, "valid1"))
153- self.assertFalse(getattr(FakeValidationDict, "valid2"))
154- self.assertFalse(getattr(FakeValidationDict, "valid3"))
155-
156- def test_focus_changed_3(self):
157- """Check functions execution when focus_changed() is executed."""
158- self.patch(self.ui, 'validation_functions', FakeValidationDict())
159- self.ui.validate_data_on_focus_changed(3)
160- self.assertTrue(getattr(FakeValidationDict, "valid0"))
161- self.assertTrue(getattr(FakeValidationDict, "valid1"))
162- self.assertTrue(getattr(FakeValidationDict, "valid2"))
163- self.assertFalse(getattr(FakeValidationDict, "valid3"))
164-
165- def test_focus_changed_4(self):
166- """Check functions execution when focus_changed() is executed."""
167- self.patch(self.ui, 'validation_functions', FakeValidationDict())
168- self.ui.validate_data_on_focus_changed(4)
169- self.assertTrue(getattr(FakeValidationDict, "valid0"))
170- self.assertTrue(getattr(FakeValidationDict, "valid1"))
171- self.assertTrue(getattr(FakeValidationDict, "valid2"))
172- self.assertTrue(getattr(FakeValidationDict, "valid3"))
173+ def test_password_focus_gain(self):
174+ """Check functions execution when focus_changed() is executed."""
175+ self.ui.show()
176+ self.addCleanup(self.ui.hide)
177+ self.ui.ui.password_assistance.setVisible(False)
178+ self.assertFalse(self.ui.ui.password_assistance.isVisible())
179+ self.patch(self.ui, 'name_assistance', self._set_called)
180+ self.ui.focus_changed(None, self.ui.ui.password_edit)
181+ self.assertTrue(self.ui.ui.password_assistance.isVisible())
182+
183+ def test_name_focus_lost(self):
184+ """Check functions execution when focus_changed() is executed."""
185+ self.patch(self.ui, 'name_assistance', self._set_called)
186+ self.ui.focus_changed(self.ui.ui.name_edit, None)
187+ self.assertTrue(self._called)
188+
189+ def test_email_focus_lost(self):
190+ """Check functions execution when focus_changed() is executed."""
191+ self.patch(self.ui, 'email_assistance', self._set_called)
192+ self.ui.focus_changed(self.ui.ui.email_edit, None)
193+ self.assertTrue(self._called)
194+
195+ def test_confirm_email_focus_lost(self):
196+ """Check functions execution when focus_changed() is executed."""
197+ self.patch(self.ui, 'confirm_email_assistance', self._set_called)
198+ self.ui.focus_changed(self.ui.ui.confirm_email_edit, None)
199+ self.assertTrue(self._called)
200+
201+ def test_confirm_password_focus_lost(self):
202+ """Check functions execution when focus_changed() is executed."""
203+ self.patch(common, 'password_check_match', self._set_called)
204+ self.ui.focus_changed(self.ui.ui.confirm_password_edit, None)
205+ self.assertTrue(self._called)
206
207
208 class SetupAccountFakeWizardTestCase(BaseTestCase):

Subscribers

People subscribed via source and target branches