diff options
author | 2023-08-03 16:33:41 +0600 | |
---|---|---|
committer | 2023-08-03 16:33:41 +0600 | |
commit | 70faa8e9a0ff3cba74b4f753e257d56b768fcbd2 (patch) | |
tree | 3a49460715f7319d100e0cc9c1a278758500c7c8 /tests/fake-polkitd.py | |
download | aptdaemon-70faa8e9a0ff3cba74b4f753e257d56b768fcbd2.tar.gz aptdaemon-70faa8e9a0ff3cba74b4f753e257d56b768fcbd2.zip |
Import Upstream version 1.1.1+bzr982
Diffstat (limited to 'tests/fake-polkitd.py')
-rwxr-xr-x | tests/fake-polkitd.py | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/tests/fake-polkitd.py b/tests/fake-polkitd.py new file mode 100755 index 0000000..e8dfa70 --- /dev/null +++ b/tests/fake-polkitd.py @@ -0,0 +1,64 @@ +#!/usr/bin/python3 +"""Fake a PolicyKit daemon.""" + +from optparse import OptionParser +import sys + +import dbus +import dbus.mainloop.glib +import dbus.service +from gi.repository import GLib + +# Setup the DBus main loop +dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) + + +class FakePolicyKitDaemon(dbus.service.Object): + + def __init__(self, allowed_actions): + self.allowed_actions = allowed_actions + bus_name = dbus.service.BusName("org.freedesktop.PolicyKit1", + dbus.SystemBus(), + do_not_queue=True) + dbus.service.Object.__init__(self, bus_name, + "/org/freedesktop/PolicyKit1/Authority") + self.loop = GLib.MainLoop() + + def run(self): + self.loop.run() + + @dbus.service.method("org.freedesktop.PolicyKit1.Authority", + in_signature='(sa{sv})sa{ss}us', + out_signature='(bba{ss})') + def CheckAuthorization(self, subject, action_id, details, flags, + cancellation_id): + if "all" in self.allowed_actions: + allowed = True + else: + allowed = action_id in self.allowed_actions + challenged = False + details = {"test": "test"} + return (allowed, challenged, details) + + @dbus.service.method("org.freedesktop.PolicyKit1.Authority", + in_signature='', out_signature='') + def Quit(self): + GLib.idle_add(self._quit) + + def _quit(self): + self.loop.quit() + sys.exit() + + +def main(): + parser = OptionParser() + parser.add_option("-a", "--allowed-actions", + default="", action="store", type="string", + dest="allowed_actions", + help="Comma separated list of allowed action ids") + options, args = parser.parse_args() + polkitd = FakePolicyKitDaemon(options.allowed_actions.split(",")) + polkitd.run() + +if __name__ == "__main__": + main() |