libnm/tests: turn all mock objects into ExportedObjs
This way they will all be able to register with the ObjectManager mock.
This commit is contained in:
@@ -92,9 +92,14 @@ class ExportedObj(dbus.service.Object):
|
|||||||
dbus.service.Object.__init__(self, bus, object_path)
|
dbus.service.Object.__init__(self, bus, object_path)
|
||||||
self._bus = bus
|
self._bus = bus
|
||||||
self.path = object_path
|
self.path = object_path
|
||||||
self.__dbus_ifaces = {}
|
self.__ensure_dbus_ifaces()
|
||||||
|
|
||||||
|
def __ensure_dbus_ifaces(self):
|
||||||
|
if not hasattr(self, '_ExportedObj__dbus_ifaces'):
|
||||||
|
self.__dbus_ifaces = {}
|
||||||
|
|
||||||
def add_dbus_interface(self, dbus_iface, get_props_func, prop_changed_func):
|
def add_dbus_interface(self, dbus_iface, get_props_func, prop_changed_func):
|
||||||
|
self.__ensure_dbus_ifaces()
|
||||||
self.__dbus_ifaces[dbus_iface] = ExportedObj.DBusInterface(dbus_iface, get_props_func, prop_changed_func)
|
self.__dbus_ifaces[dbus_iface] = ExportedObj.DBusInterface(dbus_iface, get_props_func, prop_changed_func)
|
||||||
|
|
||||||
def __dbus_interface_get(self, dbus_iface):
|
def __dbus_interface_get(self, dbus_iface):
|
||||||
@@ -957,7 +962,7 @@ class InvalidSettingException(dbus.DBusException):
|
|||||||
class MissingSettingException(dbus.DBusException):
|
class MissingSettingException(dbus.DBusException):
|
||||||
_dbus_error_name = IFACE_CONNECTION + '.MissingSetting'
|
_dbus_error_name = IFACE_CONNECTION + '.MissingSetting'
|
||||||
|
|
||||||
class Connection(dbus.service.Object):
|
class Connection(ExportedObj):
|
||||||
def __init__(self, bus, object_path, settings, remove_func, verify_connection=True):
|
def __init__(self, bus, object_path, settings, remove_func, verify_connection=True):
|
||||||
|
|
||||||
if self.get_uuid(settings) is None:
|
if self.get_uuid(settings) is None:
|
||||||
@@ -966,8 +971,6 @@ class Connection(dbus.service.Object):
|
|||||||
settings['connection']['uuid'] = uuid.uuid4()
|
settings['connection']['uuid'] = uuid.uuid4()
|
||||||
self.verify(settings, verify_strict=verify_connection)
|
self.verify(settings, verify_strict=verify_connection)
|
||||||
|
|
||||||
dbus.service.Object.__init__(self, bus, object_path)
|
|
||||||
|
|
||||||
self.path = object_path
|
self.path = object_path
|
||||||
self.settings = settings
|
self.settings = settings
|
||||||
self.remove_func = remove_func
|
self.remove_func = remove_func
|
||||||
@@ -975,6 +978,9 @@ class Connection(dbus.service.Object):
|
|||||||
self.props = {}
|
self.props = {}
|
||||||
self.props['Unsaved'] = False
|
self.props['Unsaved'] = False
|
||||||
|
|
||||||
|
self.add_dbus_interface(IFACE_CONNECTION, self.__get_props, None)
|
||||||
|
ExportedObj.__init__(self, bus, object_path)
|
||||||
|
|
||||||
def get_uuid(self, settings=None):
|
def get_uuid(self, settings=None):
|
||||||
if settings is None:
|
if settings is None:
|
||||||
settings = self.settings
|
settings = self.settings
|
||||||
@@ -1014,20 +1020,11 @@ class Connection(dbus.service.Object):
|
|||||||
self.settings = settings;
|
self.settings = settings;
|
||||||
self.Updated()
|
self.Updated()
|
||||||
|
|
||||||
# Properties interface
|
def __get_props(self):
|
||||||
@dbus.service.method(dbus_interface=dbus.PROPERTIES_IFACE, in_signature='s', out_signature='a{sv}')
|
|
||||||
def GetAll(self, iface):
|
|
||||||
if iface != IFACE_CONNECTION:
|
|
||||||
raise UnknownInterfaceException()
|
|
||||||
return self.props
|
return self.props
|
||||||
|
|
||||||
@dbus.service.method(dbus_interface=dbus.PROPERTIES_IFACE, in_signature='ss', out_signature='v')
|
def __notify(self, propname):
|
||||||
def Get(self, iface, name):
|
self._dbus_property_notify(IFACE_CONNECTION, propname)
|
||||||
if iface != IFACE_CONNECTION:
|
|
||||||
raise UnknownInterfaceException()
|
|
||||||
if not name in self.props.keys():
|
|
||||||
raise UnknownPropertyException()
|
|
||||||
return self.props[name]
|
|
||||||
|
|
||||||
# Connection methods
|
# Connection methods
|
||||||
@dbus.service.method(dbus_interface=IFACE_CONNECTION, in_signature='', out_signature='a{sa{sv}}')
|
@dbus.service.method(dbus_interface=IFACE_CONNECTION, in_signature='', out_signature='a{sa{sv}}')
|
||||||
@@ -1065,9 +1062,8 @@ IFACE_SETTINGS = 'org.freedesktop.NetworkManager.Settings'
|
|||||||
class InvalidHostnameException(dbus.DBusException):
|
class InvalidHostnameException(dbus.DBusException):
|
||||||
_dbus_error_name = IFACE_SETTINGS + '.InvalidHostname'
|
_dbus_error_name = IFACE_SETTINGS + '.InvalidHostname'
|
||||||
|
|
||||||
class Settings(dbus.service.Object):
|
class Settings(ExportedObj):
|
||||||
def __init__(self, bus, object_path):
|
def __init__(self, bus, object_path):
|
||||||
dbus.service.Object.__init__(self, bus, object_path)
|
|
||||||
self.connections = {}
|
self.connections = {}
|
||||||
self.bus = bus
|
self.bus = bus
|
||||||
self.counter = 1
|
self.counter = 1
|
||||||
@@ -1077,6 +1073,9 @@ class Settings(dbus.service.Object):
|
|||||||
self.props['CanModify'] = True
|
self.props['CanModify'] = True
|
||||||
self.props['Connections'] = dbus.Array([], 'o')
|
self.props['Connections'] = dbus.Array([], 'o')
|
||||||
|
|
||||||
|
self.add_dbus_interface(IFACE_SETTINGS, self.__get_props, Settings.PropertiesChanged)
|
||||||
|
ExportedObj.__init__(self, bus, object_path)
|
||||||
|
|
||||||
def auto_remove_next_connection(self):
|
def auto_remove_next_connection(self):
|
||||||
self.remove_next_connection = True;
|
self.remove_next_connection = True;
|
||||||
|
|
||||||
@@ -1103,7 +1102,7 @@ class Settings(dbus.service.Object):
|
|||||||
self.connections[path] = con
|
self.connections[path] = con
|
||||||
self.props['Connections'] = dbus.Array(self.connections.keys(), 'o')
|
self.props['Connections'] = dbus.Array(self.connections.keys(), 'o')
|
||||||
self.NewConnection(path)
|
self.NewConnection(path)
|
||||||
self.PropertiesChanged({ 'connections': self.props['Connections'] })
|
self.__notify('Connections')
|
||||||
|
|
||||||
if self.remove_next_connection:
|
if self.remove_next_connection:
|
||||||
self.remove_next_connection = False
|
self.remove_next_connection = False
|
||||||
@@ -1122,7 +1121,7 @@ class Settings(dbus.service.Object):
|
|||||||
def delete_connection(self, connection):
|
def delete_connection(self, connection):
|
||||||
del self.connections[connection.path]
|
del self.connections[connection.path]
|
||||||
self.props['Connections'] = dbus.Array(self.connections.keys(), 'o')
|
self.props['Connections'] = dbus.Array(self.connections.keys(), 'o')
|
||||||
self.PropertiesChanged({ 'connections': self.props['Connections'] })
|
self.__notify('Connections')
|
||||||
|
|
||||||
@dbus.service.method(dbus_interface=IFACE_SETTINGS, in_signature='s', out_signature='')
|
@dbus.service.method(dbus_interface=IFACE_SETTINGS, in_signature='s', out_signature='')
|
||||||
def SaveHostname(self, hostname):
|
def SaveHostname(self, hostname):
|
||||||
@@ -1130,21 +1129,13 @@ class Settings(dbus.service.Object):
|
|||||||
if hostname.find('.') == -1:
|
if hostname.find('.') == -1:
|
||||||
raise InvalidHostnameException()
|
raise InvalidHostnameException()
|
||||||
self.props['Hostname'] = hostname
|
self.props['Hostname'] = hostname
|
||||||
self.PropertiesChanged({ 'hostname': hostname })
|
self.__notify('Hostname')
|
||||||
|
|
||||||
@dbus.service.method(dbus_interface=dbus.PROPERTIES_IFACE, in_signature='s', out_signature='a{sv}')
|
def __get_props(self):
|
||||||
def GetAll(self, iface):
|
|
||||||
if iface != IFACE_SETTINGS:
|
|
||||||
raise UnknownInterfaceException()
|
|
||||||
return self.props
|
return self.props
|
||||||
|
|
||||||
@dbus.service.method(dbus_interface=dbus.PROPERTIES_IFACE, in_signature='ss', out_signature='v')
|
def __notify(self, propname):
|
||||||
def Get(self, iface, name):
|
self._dbus_property_notify(IFACE_SETTINGS, propname)
|
||||||
if iface != IFACE_SETTINGS:
|
|
||||||
raise UnknownInterfaceException()
|
|
||||||
if not name in self.props.keys():
|
|
||||||
raise UnknownPropertyException()
|
|
||||||
return self.props[name]
|
|
||||||
|
|
||||||
@dbus.service.signal(IFACE_SETTINGS, signature='o')
|
@dbus.service.signal(IFACE_SETTINGS, signature='o')
|
||||||
def NewConnection(self, path):
|
def NewConnection(self, path):
|
||||||
|
Reference in New Issue
Block a user