34
33
RDO_IFACE = 'org.ofono.RadioSettings'
35
34
SIM_IFACE = 'org.ofono.SimManager'
36
35
NETREG_IFACE = 'org.ofono.NetworkRegistration'
36
CALL_FWD_IFACE = 'org.ofono.CallForwarding'
37
CALL_SETTINGS_IFACE = 'org.ofono.CallSettings'
37
38
SYSTEM_IFACE = 'com.canonical.SystemImage'
38
39
SYSTEM_SERVICE_OBJ = '/Service'
40
LM_SERVICE = 'org.freedesktop.login1'
41
LM_PATH = '/org/freedesktop/login1'
42
LM_IFACE = 'org.freedesktop.login1.Manager'
43
NM_SERVICE = 'org.freedesktop.NetworkManager'
44
NM_PATH = '/org/freedesktop/NetworkManager'
45
NM_IFACE = 'org.freedesktop.NetworkManager'
41
48
class UbuntuSystemSettingsTestCase(
178
def mock_radio_settings(self, modem):
180
RDO_IFACE, 'TechnologyPreference', self.technology_preference)
185
def mock_radio_settings(self, modem, preference='gsm',
186
technologies=['gsm', 'umts', 'lte']):
188
RDO_IFACE, 'TechnologyPreference', preference)
190
RDO_IFACE, 'ModemTechnologies', technologies)
181
191
modem.AddMethods(
183
193
[('GetProperties', '', 'a{sv}',
188
198
"PropertyChanged", "sv", [args[0], args[1]])'
189
199
.replace('IFACE', RDO_IFACE)), ])
191
def mock_sim_manager(self, modem, properties=None):
194
'SubscriberNumbers': ['123456', '234567']
196
modem.AddProperties(SIM_IFACE, properties)
199
[('GetProperties', '', 'a{sv}',
200
'ret = self.GetAll("%s")' % SIM_IFACE),
201
('SetProperty', 'sv', '',
202
'self.Set("IFACE", args[0], args[1]); '
203
'self.EmitSignal("IFACE",\
204
"PropertyChanged", "sv", [args[0], args[1]])'
205
.replace('IFACE', SIM_IFACE)), ])
201
def mock_call_forwarding(self, modem):
203
CALL_FWD_IFACE, 'VoiceUnconditional', '')
206
[('GetProperties', '', 'a{sv}',
207
'ret = self.GetAll("%s")' % CALL_FWD_IFACE),
208
('SetProperty', 'sv', '',
209
'self.Set("IFACE", args[0], args[1]); '
210
'self.EmitSignal("IFACE",\
211
"PropertyChanged", "sv", [args[0], args[1]])'
212
.replace('IFACE', CALL_FWD_IFACE)), ])
214
def mock_call_settings(self, modem):
216
CALL_SETTINGS_IFACE, 'VoiceCallWaiting', 'disabled')
219
[('GetProperties', '', 'a{sv}',
220
'ret = self.GetAll("%s")' % CALL_SETTINGS_IFACE),
221
('SetProperty', 'sv', '',
222
'self.Set("IFACE", args[0], args[1]); '
223
'self.EmitSignal("IFACE",\
224
"PropertyChanged", "sv", [args[0], args[1]])'
225
.replace('IFACE', CALL_SETTINGS_IFACE)), ])
207
227
def add_sim1(self):
208
228
# create modem_0 proxy
209
229
self.modem_0 = self.dbus_con.get_object('org.ofono', '/ril_0')
211
# Add an available carrier
212
231
self.mock_carriers('ril_0')
214
232
self.mock_radio_settings(self.modem_0)
216
233
self.mock_connection_manager(self.modem_0)
218
self.mock_sim_manager(self.modem_0)
234
self.mock_call_forwarding(self.modem_0)
235
self.mock_call_settings(self.modem_0)
220
237
self.modem_0.AddMethods('org.ofono.NetworkRegistration', [
221
238
('GetProperties', '', 'a{sv}',
242
260
self.get_all_operators(second_modem)),
244
262
self.mock_carriers(second_modem)
245
self.mock_radio_settings(self.modem_1)
263
self.mock_radio_settings(self.modem_1, technologies=['gsm'])
246
264
self.mock_connection_manager(self.modem_1)
265
self.mock_call_forwarding(self.modem_1)
266
self.mock_call_settings(self.modem_1)
248
self.mock_sim_manager(self.modem_1, {
249
'SubscriberNumbers': ['08123', '938762783']
270
'SubscriberNumbers', ['08123', '938762783']
253
274
def setUpClass(cls):
254
275
cls.start_system_bus()
255
276
cls.dbus_con = cls.get_dbus(True)
277
template = os.path.join(os.path.dirname(__file__), 'ofono.py')
256
278
# Add a mock Ofono environment so we get consistent results
257
279
(cls.p_mock, cls.obj_ofono) = cls.spawn_server_template(
258
'ofono', stdout=subprocess.PIPE)
280
template, stdout=subprocess.PIPE)
259
281
cls.dbusmock = dbus.Interface(cls.obj_ofono, dbusmock.MOCK_IFACE)
261
283
def setUp(self, panel=None):
562
595
'GetIncomingMessageVibrateSilentMode', '', 'v',
563
596
'ret = self.Get("%s", \
564
597
"IncomingMessageVibrateSilentMode")' %
598
ACCOUNTS_SOUND_IFACE),
600
'GetDialpadSoundsEnabled', '', 'v',
601
'ret = self.Get("%s", \
602
"DialpadSoundsEnabled")' %
565
603
ACCOUNTS_SOUND_IFACE)
568
606
self.obj_test = self.dbus_con.get_object(ACCOUNTS_IFACE, user_obj,
571
super(SoundBaseTestCase, self).setUp('sound')
609
super(SoundBaseTestCase, self).setUp(panel)
573
611
""" Go to Sound page """
574
self.assertThat(self.system_settings.main_view.sound_page.active,
575
Eventually(Equals(True)))
613
self.assertThat(self.system_settings.main_view.sound_page.active,
614
Eventually(Equals(True)))
577
616
def tearDown(self):
578
617
self.mock_server.terminate()
584
623
dbusmock.DBusTestCase):
585
624
""" Base class for reset settings tests"""
587
def mock_for_launcher_reset(self):
588
user_obj = '/user/foo'
589
# start dbus system bus
590
self.mock_server = self.spawn_server(ACCOUNTS_IFACE, ACCOUNTS_OBJ,
591
ACCOUNTS_IFACE, system_bus=True,
592
stdout=subprocess.PIPE)
594
# spawn_server does not wait properly
595
# Reported as bug here: http://pad.lv/1350833
597
self.acc_proxy = dbus.Interface(self.dbus_con.get_object(
598
ACCOUNTS_IFACE, ACCOUNTS_OBJ), dbusmock.MOCK_IFACE)
600
self.acc_proxy.AddMethod(ACCOUNTS_IFACE, 'FindUserById', 'x', 'o',
601
'ret = "%s"' % user_obj)
603
self.acc_proxy.AddObject(
604
user_obj, ACCOUNTS_USER_IFACE, {}, [])
606
self.user_mock = dbus.Interface(self.dbus_con.get_object(
607
ACCOUNTS_IFACE, user_obj),
610
self.user_mock.AddMethod(
611
'org.freedesktop.DBus.Properties', 'Set', 'ssaa{sv}', '', '')
613
626
def mock_for_factory_reset(self):
614
627
self.mock_server = self.spawn_server(SYSTEM_IFACE, SYSTEM_SERVICE_OBJ,
615
628
SYSTEM_IFACE, system_bus=True,
638
649
self.mock_server.terminate()
639
650
self.mock_server.wait()
640
651
super(ResetBaseTestCase, self).tearDown()
654
class SecurityBaseTestCase(UbuntuSystemSettingsOfonoTestCase):
655
""" Base class for security and privacy settings tests"""
658
super(SecurityBaseTestCase, self).setUp('security-privacy')
659
""" Go to Security & Privacy page """
660
self.security_page = self.system_settings.main_view.select_single(
661
objectName='securityPrivacyPage'
663
self.assertThat(self.security_page.active,
664
Eventually(Equals(True)))
667
super(SecurityBaseTestCase, self).tearDown()
670
class PhoneSoundBaseTestCase(SoundBaseTestCase):
672
""" Go to Phone page """
673
super(PhoneSoundBaseTestCase, self).setUp('phone')
674
self.phone_page = self.system_settings.main_view.select_single(
675
objectName='phonePage'
679
super(PhoneSoundBaseTestCase, self).tearDown()
682
class LanguageBaseTestCase(UbuntuSystemSettingsTestCase,
683
dbusmock.DBusTestCase):
684
""" Base class for language settings tests"""
686
def mock_loginmanager(self):
687
self.mock_server = self.spawn_server(LM_SERVICE, LM_PATH,
688
LM_IFACE, system_bus=True,
689
stdout=subprocess.PIPE)
690
# spawn_server does not wait properly
691
# Reported as bug here: http://pad.lv/1350833
693
self.session_mock = dbus.Interface(self.dbus_con.get_object(
694
LM_SERVICE, LM_PATH), dbusmock.MOCK_IFACE)
696
self.session_mock.AddMethod(LM_IFACE, 'Reboot', 'b', '', '')
699
def setUpClass(klass):
700
klass.start_system_bus()
701
klass.dbus_con = klass.get_dbus(True)
704
self.mock_loginmanager()
706
super(LanguageBaseTestCase, self).setUp()
707
self.language_page = self.system_settings.\
708
main_view.go_to_language_page()
711
self.mock_server.terminate()
712
self.mock_server.wait()
713
super(LanguageBaseTestCase, self).tearDown()
716
class WifiBaseTestCase(UbuntuSystemSettingsTestCase,
717
dbusmock.DBusTestCase):
718
""" Base class for wifi settings tests"""
722
cls.start_system_bus()
723
cls.dbus_con = cls.get_dbus(True)
724
# Add a mock NetworkManager environment so we get consistent results
725
(cls.p_mock, cls.obj_nm) = cls.spawn_server_template(
726
'networkmanager', stdout=subprocess.PIPE)
727
cls.dbusmock = dbus.Interface(cls.obj_nm, dbusmock.MOCK_IFACE)
729
def setUp(self, panel=None):
731
device_path = self.obj_nm.AddWiFiDevice('test0', 'Barbaz', 1)
732
self.device_mock = dbus.Interface(self.dbus_con.get_object(
733
'org.freedesktop.NetworkManager', device_path),
736
"""A device should not just implement Device.Wireless/Device.Wired
737
interfaces, but also the Device interface. Since we want to test
738
the Disconnect method, we add it."""
741
self.device_mock.AddMethod(DEVICE_IFACE, 'Disconnect', '', '', '')
743
# it was already added
746
super(WifiBaseTestCase, self).setUp()
747
self.wifi_page = self.system_settings.\
748
main_view.go_to_wifi_page()
750
def add_previous_networks(self, networks):
751
dev_path = str(self.obj_nm.GetDevices()[0])
752
for network in networks:
753
self.obj_nm.AddWiFiConnection(
754
dev_path, network['connection_name'],
755
network['ssid'], network.get('keymng', ''))