1
# -*- Mode: Python; coding: utf-8; indent-tabs-mode: nil; tab-width: 4 -*-
2
# Copyright 2014 Canonical
4
# This program is free software: you can redistribute it and/or modify it
5
# under the terms of the GNU General Public License version 3, as published
6
# by the Free Software Foundation.
8
from gi.repository import Gio
11
from testtools.matchers import Equals, NotEquals
12
from autopilot.matchers import Eventually
14
from ubuntu_system_settings.tests import (
18
from ubuntu_system_settings.utils.i18n import ugettext as _
19
from ubuntuuitoolkit import emulators as toolkit_emulators
22
class SecurityTestCase(SecurityBaseTestCase):
23
""" Tests for Security Page """
26
super(SecurityTestCase, self).setUp()
27
self.assertEqual(['pin'], self.modem_0.Get(SIM_IFACE, 'LockedPins'))
28
prps = self.system_settings.main_view.security_page.get_properties()
29
self.use_powerd = prps['usePowerd']
31
gsettings = Gio.Settings.new('com.ubuntu.touch.system')
32
prev = gsettings.get_uint('activity-timeout')
34
self.set_prev_activity_timeout, gsettings, prev)
36
gsettings = Gio.Settings.new('org.gnome.desktop.session')
37
prev = gsettings.get_uint('idle-delay')
39
self.set_prev_idle_delay, gsettings, prev)
41
def set_prev_idle_delay(self, gsettings, prev):
42
gsettings.set_uint('idle-delay', prev)
44
lambda: int(gsettings.get_uint('idle-delay')),
45
Eventually(Equals(prev))
48
def set_prev_activity_timeout(self, gsettings, prev):
49
gsettings.set_uint('activity-timeout', prev)
51
lambda: int(gsettings.get_uint('activity-timeout')),
52
Eventually(Equals(prev))
55
def _get_activity_timeout(self):
57
gsettings = Gio.Settings.new('com.ubuntu.touch.system')
58
prev = gsettings.get_uint('activity-timeout')
61
gsettings = Gio.Settings.new('org.gnome.desktop.session')
62
prev = gsettings.get_uint('idle-delay')
65
def _go_to_phone_lock(self):
66
selector = self.security_page.select_single(
67
objectName="lockingControl"
69
self.system_settings.main_view.scroll_to_and_click(selector)
71
def _go_to_sim_lock(self):
72
selector = self.security_page.select_single(
73
objectName="simControl"
75
self.system_settings.main_view.scroll_to_and_click(selector)
77
def _go_to_sleep_values(self):
78
self._go_to_phone_lock()
79
selector = self.system_settings.main_view.select_single(
80
objectName="lockTimeout"
82
self.system_settings.main_view.scroll_to_and_click(selector)
84
def _get_sleep_selector(self):
85
self._go_to_sleep_values()
86
sleep_values_page = self.system_settings.main_view.select_single(
87
objectName='sleepValues')
92
self._go_to_sleep_values()
93
sleep_values_page = self.system_settings.main_view.select_single(
94
objectName='sleepValues')
95
return sleep_values_page.select_single(
96
toolkit_emulators.ItemSelector,
97
objectName="sleepSelector"
100
def test_security_page(self):
101
""" Checks whether Security page is available """
103
self.system_settings.main_view.security_page,
107
self.system_settings.main_view.security_page.title,
108
Equals(_('Security & Privacy'))
111
def test_locking_control_value(self):
112
actTimeout = self._get_activity_timeout()
113
activityTimeout = self.security_page.select_single(
114
objectName='lockingControl').value
116
self.assertEquals(activityTimeout, ('Manually'))
117
elif actTimeout is 60:
120
('After {:d} minute').format(int(actTimeout/60)))
124
('After {:d} minutes').format(int(actTimeout/60)))
126
def test_phone_lock_page(self):
127
self._go_to_phone_lock()
128
phone_lock_page = self.system_settings.main_view.select_single(
129
objectName='phoneLockingPage')
135
phone_lock_page.title,
136
Equals(_('Phone locking'))
139
def test_phone_lock_value(self):
140
self._go_to_phone_lock()
141
phone_lock_page = self.system_settings.main_view.select_single(
142
objectName='phoneLockingPage')
143
actTimeout = self._get_activity_timeout()
144
activityTimeout = phone_lock_page.select_single(
145
objectName='lockTimeout').value
147
self.assertEquals(activityTimeout, ('Never'))
148
elif actTimeout is 60:
151
('{:d} minute').format(int(actTimeout/60))
156
('{:d} minutes').format(int(actTimeout/60))
159
def test_idle_never_timeout(self):
160
selector = self._get_sleep_selector()
161
to_select = selector.select_single(
162
'OptionSelectorDelegate', text='Never')
163
self.system_settings.main_view.pointing_device.click_object(to_select)
164
to_select.selected.wait_for(True)
166
actTimeout = self._get_activity_timeout()
167
self.assertEquals(actTimeout, 0)
168
selected_delegate = selector.select_single(
169
'OptionSelectorDelegate', selected=True)
170
self.assertEquals(selected_delegate.text, 'Never')
172
def test_idle_change_timeout(self):
173
selector = self._get_sleep_selector()
174
to_select = selector.select_single(
175
'OptionSelectorDelegate', text='After 4 minutes')
176
self.system_settings.main_view.pointing_device.click_object(to_select)
177
to_select.selected.wait_for(True)
179
actTimeout = self._get_activity_timeout()
180
self.assertEquals(actTimeout, 240)
181
selected_delegate = selector.select_single(
182
'OptionSelectorDelegate', selected=True)
183
self.assertEquals(selected_delegate.text, 'After 4 minutes')
185
def test_sim_pin_control_value(self):
186
self.assertEqual('none', self.modem_0.Get(SIM_IFACE, 'PinRequired'))
187
self.assertEqual(['pin'], self.modem_0.Get(SIM_IFACE, 'LockedPins'))
189
sim_pin_value = self.security_page.select_single(
190
objectName='simControl').value
197
def test_sim_pin_lock_control(self):
198
self._go_to_sim_lock()
199
sim_lock_control = self.system_settings.main_view.select_single(
200
objectName='simPinSwitch')
201
locked = len(self.modem_0.Get(SIM_IFACE, 'LockedPins')) > 0
202
self.assertEquals(locked, sim_lock_control.checked)
204
def test_sim_pin_lock_control_unlock(self):
205
self._go_to_sim_lock()
206
sim_lock_control = self.system_settings.main_view.select_single(
207
objectName='simPinSwitch')
209
self.assertTrue(sim_lock_control.checked)
211
self.system_settings.main_view.scroll_to_and_click(sim_lock_control)
213
lock_dialog = self.system_settings.main_view.select_single(
214
objectName='lockDialogComponent')
220
prev_input = self.system_settings.main_view.select_single(
221
objectName='prevInput')
222
submit_button = self.system_settings.main_view.select_single(
223
objectName='lockButton')
231
submit_button.get_properties()['enabled']
233
self.system_settings.main_view.scroll_to_and_click(prev_input)
234
self.keyboard.type("246")
236
submit_button.get_properties()['enabled']
238
self.keyboard.type("8")
241
submit_button.get_properties()['enabled']
244
self.system_settings.main_view.scroll_to_and_click(submit_button)
246
self.assertFalse(sim_lock_control.checked)
248
locked = len(self.modem_0.Get(SIM_IFACE, 'LockedPins')) > 0
249
self.assertEquals(locked, sim_lock_control.checked)
251
@unittest.skip('skipped because the simPinSwitch state fails to update')
252
def test_sim_pin_lock_control_lock(self):
253
self.modem_0.Set(SIM_IFACE, 'LockedPins', "")
254
self._go_to_sim_lock()
255
sim_lock_control = self.system_settings.main_view.select_single(
256
objectName='simPinSwitch')
258
self.assertFalse(sim_lock_control.checked)
260
self.system_settings.main_view.scroll_to_and_click(sim_lock_control)
262
lock_dialog = self.system_settings.main_view.select_single(
263
objectName='lockDialogComponent')
269
prev_input = self.system_settings.main_view.select_single(
270
objectName='prevInput')
271
submit_button = self.system_settings.main_view.select_single(
272
objectName='lockButton')
280
submit_button.get_properties()['enabled']
282
self.system_settings.main_view.scroll_to_and_click(prev_input)
283
self.keyboard.type("246")
285
submit_button.get_properties()['enabled']
287
self.keyboard.type("8")
290
submit_button.get_properties()['enabled']
293
self.system_settings.main_view.scroll_to_and_click(submit_button)
295
self.assertTrue(sim_lock_control.checked)
297
self.assertEqual(['pin'], self.modem_0.Get(SIM_IFACE, 'LockedPins'))
298
locked = len(self.modem_0.Get(SIM_IFACE, 'LockedPins')) > 0
299
self.assertEquals(locked, sim_lock_control.checked)
301
def test_sim_pin_lock_control_unlock_fail(self):
302
self._go_to_sim_lock()
303
sim_lock_control = self.system_settings.main_view.select_single(
304
objectName='simPinSwitch')
307
len(self.modem_0.Get(SIM_IFACE, 'LockedPins')) > 0
309
self.assertTrue(sim_lock_control.checked)
311
self.system_settings.main_view.scroll_to_and_click(sim_lock_control)
313
lock_dialog = self.system_settings.main_view.select_single(
314
objectName='lockDialogComponent')
320
prev_input = self.system_settings.main_view.select_single(
321
objectName='prevInput')
322
submit_button = self.system_settings.main_view.select_single(
323
objectName='lockButton')
331
submit_button.get_properties()['enabled']
333
self.system_settings.main_view.scroll_to_and_click(prev_input)
334
self.keyboard.type("1234")
337
submit_button.get_properties()['enabled']
340
self.system_settings.main_view.scroll_to_and_click(submit_button)
343
len(self.modem_0.Get(SIM_IFACE, 'LockedPins')) > 0
346
@unittest.skip('skipped because the simPinSwitch state fails to update')
347
def test_sim_pin_lock_control_lock_fail(self):
348
self.modem_0.Set(SIM_IFACE, 'LockedPins', "")
349
self._go_to_sim_lock()
350
sim_lock_control = self.system_settings.main_view.select_single(
351
objectName='simPinSwitch')
354
len(self.modem_0.Get(SIM_IFACE, 'LockedPins')) > 0
357
self.system_settings.main_view.scroll_to_and_click(sim_lock_control)
359
lock_dialog = self.system_settings.main_view.select_single(
360
objectName='lockDialogComponent')
366
prev_input = self.system_settings.main_view.select_single(
367
objectName='prevInput')
368
submit_button = self.system_settings.main_view.select_single(
369
objectName='lockButton')
377
submit_button.get_properties()['enabled']
379
self.system_settings.main_view.scroll_to_and_click(prev_input)
380
self.keyboard.type("1234")
383
submit_button.get_properties()['enabled']
386
self.system_settings.main_view.scroll_to_and_click(submit_button)
389
len(self.modem_0.Get(SIM_IFACE, 'LockedPins')) > 0