1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
|
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""Tests the client module."""
import logging
import time
import unittest
import dbus
import defer
from gi.repository import GObject
import aptdaemon.client
import aptdaemon.loop
import aptdaemon.enums
import aptdaemon.test
DEBUG=True
class ClientTest(aptdaemon.test.AptDaemonTestCase):
"""Test the python client."""
def setUp(self):
"""Setup a chroot, run the aptdaemon and a fake PolicyKit daemon."""
# Setup chroot
self.chroot = aptdaemon.test.Chroot()
self.chroot.setup()
self.addCleanup(self.chroot.remove)
self.chroot.add_test_repository()
# Start aptdaemon with the chroot on the session bus
self.start_dbus_daemon()
self.bus = dbus.bus.BusConnection(self.dbus_address)
self.start_session_aptd(self.chroot.path)
# Start the fake PolikcyKit daemon
self.start_fake_polkitd()
time.sleep(1)
def _on_finished(self, trans, exit):
"""Callback to stop the mainloop after a transaction is done."""
aptdaemon.loop.mainloop.quit()
def test_sync(self):
"""Test synchronous calls to the client."""
self.client = aptdaemon.client.AptClient(self.bus)
trans = self.client.update_cache()
trans.connect("finished", self._on_finished)
trans.run()
aptdaemon.loop.mainloop.run()
self.assertEqual(trans.exit, aptdaemon.enums.EXIT_SUCCESS)
def test_deferred(self):
"""Test deferred calls to the client."""
@defer.inline_callbacks
def run():
self.client = aptdaemon.client.AptClient(self.bus)
trans = yield self.client.update_cache()
trans.connect("finished", self._on_finished)
yield trans.run()
defer.return_value(trans)
deferred = run()
aptdaemon.loop.mainloop.run()
self.assertEqual(deferred.result.exit, aptdaemon.enums.EXIT_SUCCESS)
def test_client_methods_sync(self):
""" Test most client methods (syncronous) """
test_methods = [
("enable_distro_component", ("universe",)),
("add_repository", ("deb", "http://archive.ubuntu.com/ubuntu",
"lucid", "restricted")),
]
client = aptdaemon.client.AptClient(self.bus)
for (method, args) in test_methods:
f = getattr(client, method)
exit = f(*args, wait=True)
self.assertEqual(exit, aptdaemon.enums.EXIT_SUCCESS)
if __name__ == "__main__":
if DEBUG:
logging.basicConfig(level=logging.DEBUG)
unittest.main()
# vim: ts=4 et sts=4
|