~ubuntu-branches/ubuntu/oneiric/ubuntuone-client/oneiric

« back to all changes in this revision

Viewing changes to tests/syncdaemon/test_dbus.py

  • Committer: Bazaar Package Importer
  • Author(s): Rodrigo Moya
  • Date: 2010-06-23 23:08:15 UTC
  • mto: This revision was merged to the branch mainline in revision 34.
  • Revision ID: james.westby@ubuntu.com-20100623230815-4m3ugh10u9x9xzw5
Tags: upstream-1.3.2
Import upstream version 1.3.2

Show diffs side-by-side

added added

removed removed

Lines of Context:
35
35
    DBUS_IFACE_CONFIG_NAME,
36
36
    DBUS_IFACE_FOLDERS_NAME,
37
37
    DBUS_IFACE_PUBLIC_FILES_NAME,
38
 
    EventListener,
 
38
    EventListener, _get_share_dict, _get_udf_dict, bool_str
39
39
)
40
40
from ubuntuone.syncdaemon.volume_manager import (
41
41
    Share,
1155
1155
            match = self.bus.add_signal_receiver(status_handler,
1156
1156
                                     signal_name='StatusChanged')
1157
1157
            self.signal_receivers.add(match)
1158
 
            bool_str = self.dbus_iface.status.bool_str
1159
1158
            state = states.StateManager.READY
1160
1159
            state_dict = {'name':state.name,
1161
1160
                          'description':state.description,
1191
1190
        self.fs_manager.set_node_id(a_path, "node_id")
1192
1191
        handled_events = {}
1193
1192
        # filter only events we handle
1194
 
        for (name, kind, _, _) in \
1195
 
                                  inspect.classify_class_attrs(EventListener):
 
1193
        for (name, kind, _, _) in inspect.classify_class_attrs(EventListener):
1196
1194
            if kind == 'method' and name.startswith('handle_') \
1197
1195
               and not name == 'handle_default':
1198
1196
                key = name.split('handle_')[1]
1565
1563
                          error=expected_error)
1566
1564
        return d
1567
1565
 
 
1566
    def assert_quota_exceeded(self, volume_id, expected_volume_dict):
 
1567
        """Check correct signaling of QuotaExceeded."""
 
1568
        d = defer.Deferred()
 
1569
 
 
1570
        def quota_exceeded_handler(volume_dict):
 
1571
            """Handler for QuotaExceeded signal."""
 
1572
            if volume_dict == expected_volume_dict:
 
1573
                d.callback(volume_dict)
 
1574
            else:
 
1575
                d.errback('volume_dict must be %s (got %s instead)' %
 
1576
                          (expected_volume_dict, volume_dict))
 
1577
 
 
1578
        match = self.bus.add_signal_receiver(quota_exceeded_handler,
 
1579
                                             signal_name='QuotaExceeded')
 
1580
        self.signal_receivers.add(match)
 
1581
        self.event_q.push('SYS_QUOTA_EXCEEDED', volume_id=volume_id)
 
1582
        return d
 
1583
 
 
1584
    def test_quota_exceeded_for_share(self):
 
1585
        """Test QuotaExceeded signal for share."""
 
1586
        volume_id = 'test this please'
 
1587
        path = 'test/path/bla'
 
1588
        name = 'Beatiful Stranger'
 
1589
        a_share = Share(volume_id=volume_id, node_id=None, path=path, name=name,
 
1590
                        other_username=None, other_visible_name=None,
 
1591
                        accepted=False, access_level='View', free_bytes=None)
 
1592
        self.main.vm.add_share(a_share)
 
1593
        return self.assert_quota_exceeded(volume_id, _get_share_dict(a_share))
 
1594
 
 
1595
    def test_quota_exceeded_for_udf(self):
 
1596
        """Test QuotaExceeded signal for UDF."""
 
1597
        volume_id = 'test this please'
 
1598
        path = 'test/path/bla'
 
1599
        a_udf = UDF(volume_id=volume_id, node_id='test', suggested_path=None,
 
1600
                    path=path, subscribed=True)
 
1601
        d = self.main.vm.add_udf(a_udf)
 
1602
        test = self.assert_quota_exceeded(volume_id, _get_udf_dict(a_udf))
 
1603
        d.addCallback(lambda _: test)
 
1604
        return d
 
1605
 
 
1606
    def test_quota_exceeded_for_root(self):
 
1607
        """Test QuotaExceeded signal for UDF."""
 
1608
        root = self.main.vm.root
 
1609
        return self.assert_quota_exceeded(root.volume_id, _get_share_dict(root))
 
1610
 
1568
1611
 
1569
1612
class TestDBusRestart(DBusTwistedTestCase):
1570
1613
    """
1885
1928
        suggested_path = u'~/ñoño'
1886
1929
        udf = self._create_udf(uuid.uuid4(), 'node_id', suggested_path,
1887
1930
                               subscribed=False)
1888
 
        udf_dict = self.dbus_iface.folders._get_udf_dict(udf)
 
1931
        udf_dict = _get_udf_dict(udf)
1889
1932
        # check the path it's unicode
1890
1933
        self.assertEquals(udf_dict['path'], udf.path.decode('utf-8'))
1891
1934
        self.assertEquals(udf_dict['volume_id'], udf.id)
1899
1942
        udf = self._create_udf(uuid.uuid4(), 'node_id', suggested_path,
1900
1943
                               subscribed=False)
1901
1944
        udf.suggested_path = udf.suggested_path.encode('utf-8')
1902
 
        udf_dict = self.dbus_iface.folders._get_udf_dict(udf)
 
1945
        udf_dict = _get_udf_dict(udf)
1903
1946
        # check the path it's unicode
1904
1947
        self.assertEquals(udf_dict['path'], udf.path.decode('utf-8'))
1905
1948
        self.assertEquals(udf_dict['volume_id'], udf.id)
1926
1969
                                        reply_handler=d2.callback,
1927
1970
                                        error_handler=self.error_handler)
1928
1971
        info = yield d2
1929
 
        udf_dict = self.dbus_iface.folders._get_udf_dict(udf)
 
1972
        udf_dict = _get_udf_dict(udf)
1930
1973
        self.assertEquals(1, len(info))
1931
1974
        for key, value in udf_dict.items():
1932
1975
            self.assertEquals(info[0][key], value)
1957
2000
            return add_deferred
1958
2001
        def check(info):
1959
2002
            """Check we get the udf info."""
1960
 
            udf_dict = self.dbus_iface.folders._get_udf_dict(udf)
 
2003
            udf_dict = _get_udf_dict(udf)
1961
2004
            self.assertEquals(info, udf_dict)
1962
2005
        d.addCallback(check_error)
1963
2006
        d.addCallback(check)
1998
2041
            udf = self.main.vm.get_volume(mdobj.share_id)
1999
2042
            self.assertNotEquals(None, udf)
2000
2043
            self.assertEquals(udf.path, os.path.normpath(path.encode('utf-8')))
2001
 
            udf_dict = self.dbus_iface.folders._get_udf_dict(udf)
 
2044
            udf_dict = _get_udf_dict(udf)
2002
2045
            self.assertEquals(info, udf_dict)
2003
2046
            self.main.vm.udf_deleted(udf.volume_id)
2004
2047