21 from __future__
import absolute_import
27 from autopilot.matchers
import Eventually
29 from testtools.matchers
import Equals
32 logger = logging.getLogger(__name__)
35 if sys.version >=
'3':
41 """Tests for the lock screen."""
43 scenarios = _get_device_emulation_scenarios()
45 @with_lightdm_mock(
"single-pin")
47 """Must be able to unlock the PIN entry lock screen."""
49 greeter = self.main_window.get_greeter()
51 if greeter.narrowMode:
52 unlock_unity(unity_proxy)
55 self.assertThat(lockscreen.shown, Eventually(Equals(
False)))
58 self.assertThat(greeter.shown, Eventually(Equals(
False)))
60 @with_lightdm_mock(
"single-passphrase")
62 """Must be able to unlock the passphrase entry screen."""
64 greeter = self.main_window.get_greeter()
66 if greeter.narrowMode:
67 unlock_unity(unity_proxy)
70 self.assertThat(lockscreen.shown, Eventually(Equals(
False)))
73 self.assertThat(greeter.shown, Eventually(Equals(
False)))
75 @with_lightdm_mock(
"single-pin")
77 """Entering the wrong pin code must not dismiss the lock screen."""
79 greeter = self.main_window.get_greeter()
81 if greeter.narrowMode:
82 unlock_unity(unity_proxy)
85 pinentryField = self.main_window.get_pinentryField()
86 self.assertThat(pinentryField.text, Eventually(Equals(
"")))
87 self.assertThat(lockscreen.shown, Eventually(Equals(
True)))
90 prompt = self.main_window.get_greeter().get_prompt()
91 self.assertThat(prompt.text, Eventually(Equals(
"")))
92 self.assertThat(greeter.shown, Eventually(Equals(
True)))
94 @with_lightdm_mock(
"single-passphrase")
96 """Entering the wrong password must not dismiss the lock screen."""
98 greeter = self.main_window.get_greeter()
100 if greeter.narrowMode:
101 unlock_unity(unity_proxy)
104 pinentryField = self.main_window.get_pinentryField()
105 self.assertThat(pinentryField.text, Eventually(Equals(
"")))
106 self.assertThat(lockscreen.shown, Eventually(Equals(
True)))
109 prompt = self.main_window.get_greeter().get_prompt()
110 self.assertThat(prompt.text, Eventually(Equals(
"")))
111 self.assertThat(greeter.shown, Eventually(Equals(
True)))
113 def _wait_for_lockscreen(self):
114 """Wait for the lock screen to load, and return it."""
115 pinPadLoader = self.main_window.get_pinPadLoader()
116 self.assertThat(pinPadLoader.progress, Eventually(Equals(1)))
117 lockscreen = self.main_window.get_lockscreen()
118 self.assertThat(lockscreen.shown, Eventually(Equals(
True)))
121 def _enter_pincode(self, code):
122 """Enter code 'code' into the single-pin lightdm pincode entry
125 :param code: must be a string of numeric characters.
126 :raises: TypeError if code is not a string.
127 :raises: ValueError if code contains non-numeric characters.
131 if not isinstance(code, basestring):
133 "'code' parameter must be a string, not %r."
137 if not num.isdigit():
139 "'code' parameter contains non-numeric characters."
141 self.touch.tap_object(self.main_window.get_pinPadButton(int(num)))
143 def _enter_pin_passphrase(self, passphrase):
144 """Enter the password specified in 'passphrase' into the password entry
145 field of the pin lock screen.
147 :param passphrase: The string you want to enter.
148 :raises: TypeError if passphrase is not a string.
151 if not isinstance(passphrase, basestring):
153 "'passphrase' parameter must be a string, not %r."
157 pinentryField = self.main_window.get_pinentryField()
158 self.touch.tap_object(pinentryField)
159 self.assertThat(pinentryField.activeFocus, Eventually(Equals(
True)))
160 for character
in passphrase:
162 logger.debug(
"Typed passphrase: %s", pinentryField.text)
163 self.keyboard.type(
"\n")
165 def _enter_prompt_passphrase(self, passphrase):
166 """Enter the password specified in 'passphrase' into the password entry
167 field of the main user list's prompt.
169 :param passphrase: The string you want to enter.
170 :raises: TypeError if passphrase is not a string.
173 if not isinstance(passphrase, basestring):
175 "'passphrase' parameter must be a string, not %r."
179 prompt = self.main_window.get_greeter().get_prompt()
180 self.touch.tap_object(prompt)
181 self.assertThat(prompt.activeFocus, Eventually(Equals(
True)))
182 for character
in passphrase:
184 logger.debug(
"Typed passphrase: %s", prompt.text)
185 self.keyboard.type(
"\n")
187 def _type_character(self, character, prompt, retries=5):
188 current_text = prompt.text
189 self.keyboard.type(character)
192 prompt.text, Eventually(Equals(current_text + character)))
193 except AssertionError:
def test_can_unlock_pin_screen
def test_can_unlock_passphrase_screen
def _enter_pin_passphrase
def test_passphrase_screen_wrong_password
def test_pin_screen_wrong_code
def _enter_prompt_passphrase