|
|
@@ -19,6 +19,8 @@ |
|
|
import os
|
|
|
import re
|
|
|
|
|
|
+from gi.repository import GLib
|
|
|
+
|
|
|
from dbusmock.templates.networkmanager import DeviceState
|
|
|
from dbusmock.templates.networkmanager import NM80211ApSecurityFlags
|
|
|
from dbusmock.templates.networkmanager import InfrastructureMode
|
|
|
@@ -389,6 +391,69 @@ def test_add_remove_settings(self): |
|
|
connectionC = self.settings.AddConnection(connection)
|
|
|
self.assertEqual(self.settings.ListConnections(), [connectionB, connectionC])
|
|
|
|
|
|
+ def test_add_update_settings(self):
|
|
|
+ connection = {
|
|
|
+ 'connection': {
|
|
|
+ 'timestamp': 1441979296,
|
|
|
+ 'type': 'vpn',
|
|
|
+ 'id': 'a',
|
|
|
+ 'uuid': '11111111-1111-1111-1111-111111111111'
|
|
|
+ },
|
|
|
+ 'vpn': {
|
|
|
+ 'service-type': 'org.freedesktop.NetworkManager.openvpn',
|
|
|
+ 'data': {
|
|
|
+ 'connection-type': 'tls'
|
|
|
+ }
|
|
|
+ },
|
|
|
+ 'ipv4': {
|
|
|
+ 'routes': dbus.Array([], signature='o'),
|
|
|
+ 'never-default': True,
|
|
|
+ 'addresses': dbus.Array([], signature='o'),
|
|
|
+ 'dns': dbus.Array([], signature='o'),
|
|
|
+ 'method': 'auto'
|
|
|
+ },
|
|
|
+ 'ipv6': {
|
|
|
+ 'addresses': dbus.Array([], signature='o'),
|
|
|
+ 'ip6-privacy': 0,
|
|
|
+ 'dns': dbus.Array([], signature='o'),
|
|
|
+ 'never-default': True,
|
|
|
+ 'routes': dbus.Array([], signature='o'),
|
|
|
+ 'method': 'auto'
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ connectionA = self.settings.AddConnection(connection)
|
|
|
+ self.assertEqual(self.settings.ListConnections(), [connectionA])
|
|
|
+
|
|
|
+ connectionA_i = dbus.Interface(
|
|
|
+ self.dbus_con.get_object(MAIN_IFACE, connectionA), CSETTINGS_IFACE)
|
|
|
+ connection['connection']['id'] = 'b'
|
|
|
+
|
|
|
+ def do_update():
|
|
|
+ connectionA_i.Update(connection)
|
|
|
+
|
|
|
+ caught = []
|
|
|
+ ml = GLib.MainLoop()
|
|
|
+
|
|
|
+ def catch(*args, **kwargs):
|
|
|
+ if (kwargs['interface'] == 'org.freedesktop.NetworkManager.Settings.Connection' and
|
|
|
+ kwargs['member'] == 'Updated'):
|
|
|
+ caught.append(kwargs['path'])
|
|
|
+ ml.quit()
|
|
|
+
|
|
|
+ self.dbus_con.add_signal_receiver(catch,
|
|
|
+ interface_keyword='interface',
|
|
|
+ path_keyword='path',
|
|
|
+ member_keyword='member')
|
|
|
+
|
|
|
+ GLib.timeout_add(200, do_update)
|
|
|
+ # ensure that the loop quits even when we don't catch anything
|
|
|
+ GLib.timeout_add(3000, ml.quit)
|
|
|
+ ml.run()
|
|
|
+
|
|
|
+ self.assertEqual(connectionA_i.GetSettings(), connection)
|
|
|
+ self.assertEqual(caught, [connectionA])
|
|
|
+
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
unittest.main(testRunner=unittest.TextTestRunner(stream=sys.stdout, verbosity=2))
|