diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/twisted/Makefile.am | 2 | ||||
-rw-r--r-- | tests/twisted/account-manager/avatar-persist.py | 48 | ||||
-rw-r--r-- | tests/twisted/account-manager/avatar-refresh.py | 12 | ||||
-rw-r--r-- | tests/twisted/account-manager/avatar.py | 23 |
4 files changed, 79 insertions, 6 deletions
diff --git a/tests/twisted/Makefile.am b/tests/twisted/Makefile.am index ca3b28db..ac931465 100644 --- a/tests/twisted/Makefile.am +++ b/tests/twisted/Makefile.am @@ -226,7 +226,7 @@ BASIC_TESTS_ENVIRONMENT = \ XDG_CONFIG_HOME=@abs_top_builddir@/tests/twisted/tmp-$(TMPSUFFIX)/config \ XDG_CONFIG_DIRS=@abs_top_srcdir@/tests/twisted \ XDG_DATA_HOME=@abs_top_builddir@/tests/twisted/tmp-$(TMPSUFFIX)/localshare \ - XDG_DATA_DIRS=@abs_top_srcdir@/tests/twisted \ + XDG_DATA_DIRS=@abs_top_builddir@/tests/twisted/tmp-$(TMPSUFFIX)/share:@abs_top_srcdir@/tests/twisted \ XDG_CACHE_DIR=@abs_top_builddir@/tests/twisted/tmp-$(TMPSUFFIX)/cache \ XDG_CACHE_HOME=@abs_top_builddir@/tests/twisted/tmp-$(TMPSUFFIX)/cache \ MC_CLIENTS_DIR=@abs_top_srcdir@/tests/twisted/telepathy/clients \ diff --git a/tests/twisted/account-manager/avatar-persist.py b/tests/twisted/account-manager/avatar-persist.py index e9078732..6dfae62a 100644 --- a/tests/twisted/account-manager/avatar-persist.py +++ b/tests/twisted/account-manager/avatar-persist.py @@ -27,7 +27,7 @@ import dbus import dbus.service from servicetest import EventPattern, tp_name_prefix, tp_path_prefix, \ - call_async + call_async, assertEquals from mctest import exec_test, SimulatedConnection, create_fakecm_account, MC import constants as cs @@ -65,8 +65,12 @@ avatar_token=Deus Ex """ % account_id) accounts_cfg.close() - os.makedirs(accounts_dir + '/' + account_id) - avatar_bin = open(accounts_dir + '/' + account_id + '/avatar.bin', 'w') + datadirs = os.environ['XDG_DATA_DIRS'].split(':') + + os.makedirs(datadirs[0] + '/telepathy/mission-control') + avatar_filename = (datadirs[0] + '/telepathy/mission-control/' + + account_id.replace('/', '-') + '.avatar') + avatar_bin = open(avatar_filename, 'w') avatar_bin.write('Deus Ex') avatar_bin.close() @@ -138,6 +142,44 @@ def test(q, bus, unused): assert account_props.Get(cs.ACCOUNT_IFACE_AVATAR, 'Avatar', byte_arrays=True) == conn.avatar + # The avatar wasn't deleted from $XDG_DATA_DIRS, but it was overridden. + assert not os.path.exists(os.environ['MC_ACCOUNT_DIR'] + '/' + + account_id + '/avatar.bin') + assert not os.path.exists(os.environ['MC_ACCOUNT_DIR'] + '/fakecm') + + avatar_filename = account_id + avatar_filename = avatar_filename.replace('/', '-') + '.avatar' + avatar_filename = (os.environ['XDG_DATA_HOME'] + + '/telepathy/mission-control/' + avatar_filename) + assertEquals('MJ12', ''.join(open(avatar_filename, 'r').readlines())) + + datadirs = os.environ['XDG_DATA_DIRS'].split(':') + low_prio_filename = account_id + low_prio_filename = low_prio_filename.replace('/', '-') + '.avatar' + low_prio_filename = (datadirs[0] + + '/telepathy/mission-control/' + low_prio_filename) + assertEquals('Deus Ex', ''.join(open(low_prio_filename, 'r').readlines())) + + # If we set the avatar to be empty, that's written out as a file, + # so it'll override the one in XDG_DATA_DIRS + call_async(q, account_props, 'Set', cs.ACCOUNT_IFACE_AVATAR, 'Avatar', + (dbus.ByteArray(''), '')) + + q.expect_many( + EventPattern('dbus-method-call', + interface=cs.CONN_IFACE_AVATARS, method='ClearAvatar', + args=[]), + EventPattern('dbus-signal', path=account.object_path, + interface=cs.ACCOUNT_IFACE_AVATAR, signal='AvatarChanged'), + EventPattern('dbus-return', method='Set') + ) + + assert account_props.Get(cs.ACCOUNT_IFACE_AVATAR, 'Avatar', + byte_arrays=True) == ('', '') + + assertEquals('', ''.join(open(avatar_filename, 'r').readlines())) + assertEquals('Deus Ex', ''.join(open(low_prio_filename, 'r').readlines())) + if __name__ == '__main__': preseed() exec_test(test, {}, preload_mc=False) diff --git a/tests/twisted/account-manager/avatar-refresh.py b/tests/twisted/account-manager/avatar-refresh.py index 42dd5d3f..f3e535a9 100644 --- a/tests/twisted/account-manager/avatar-refresh.py +++ b/tests/twisted/account-manager/avatar-refresh.py @@ -27,7 +27,7 @@ import dbus import dbus.service from servicetest import EventPattern, tp_name_prefix, tp_path_prefix, \ - call_async + call_async, assertEquals from mctest import exec_test, SimulatedConnection, create_fakecm_account, MC import constants as cs @@ -119,6 +119,16 @@ def test(q, bus, unused): ), ) + # The avatar got migrated, too. + assert not os.path.exists(os.environ['MC_ACCOUNT_DIR'] + '/' + + account_id + '/avatar.bin') + assert not os.path.exists(os.environ['MC_ACCOUNT_DIR'] + '/fakecm') + avatar_filename = account_id + avatar_filename = avatar_filename.replace('/', '-') + '.avatar' + avatar_filename = (os.environ['XDG_DATA_HOME'] + + '/telepathy/mission-control/' + avatar_filename) + assertEquals('Deus Ex', ''.join(open(avatar_filename, 'r').readlines())) + if __name__ == '__main__': preseed() exec_test(test, {}, preload_mc=False) diff --git a/tests/twisted/account-manager/avatar.py b/tests/twisted/account-manager/avatar.py index c616e146..af89c6fc 100644 --- a/tests/twisted/account-manager/avatar.py +++ b/tests/twisted/account-manager/avatar.py @@ -16,7 +16,8 @@ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA # 02110-1301 USA -import dbus +import os + import dbus import dbus.service @@ -33,6 +34,13 @@ def test(q, bus, mc): account_iface = dbus.Interface(account, cs.ACCOUNT) account_props = dbus.Interface(account, cs.PROPERTIES_IFACE) + assertEquals(cs.ACCOUNT_PATH_PREFIX, + account.object_path[:len(cs.ACCOUNT_PATH_PREFIX)]) + avatar_filename = account.object_path[len(cs.ACCOUNT_PATH_PREFIX):] + avatar_filename = avatar_filename.replace('/', '-') + '.avatar' + avatar_filename = (os.environ['XDG_DATA_HOME'] + + '/telepathy/mission-control/' + avatar_filename) + call_async(q, account_props, 'Set', cs.ACCOUNT_IFACE_AVATAR, 'Avatar', dbus.Struct((dbus.ByteArray('AAAA'), 'image/jpeg'))) q.expect_many( @@ -46,6 +54,10 @@ def test(q, bus, mc): assert account_props.Get(cs.ACCOUNT_IFACE_AVATAR, 'Avatar', byte_arrays=True) == ('AAAA', 'image/jpeg') + assertEquals('AAAA', ''.join(open(avatar_filename, 'r').readlines())) + # We aren't storing in the old location + assert not os.path.exists(os.environ['MC_ACCOUNT_DIR'] + '/fakecm') + # OK, let's go online. The avatar is set regardless of the CM conn, e = enable_fakecm_account(q, bus, mc, account, params, has_avatars=True, avatars_persist=True, @@ -72,6 +84,9 @@ def test(q, bus, mc): assert account_props.Get(cs.ACCOUNT_IFACE_AVATAR, 'Avatar', byte_arrays=True) == ('BBBB', 'image/png') + assertEquals('BBBB', ''.join(open(avatar_filename, 'r').readlines())) + assert not os.path.exists(os.environ['MC_ACCOUNT_DIR'] + '/fakecm') + someone_else = conn.ensure_handle(cs.HT_CONTACT, 'alberto@example.com') # Another contact changes their avatar: ignored @@ -97,6 +112,8 @@ def test(q, bus, mc): assert account_props.Get(cs.ACCOUNT_IFACE_AVATAR, 'Avatar', byte_arrays=True) == ('CCCC', 'image/svg') + assertEquals('CCCC', ''.join(open(avatar_filename, 'r').readlines())) + # empty avatar tests conn.forget_avatar() q.dbus_emit(conn.object_path, cs.CONN_IFACE_AVATARS, 'AvatarUpdated', @@ -108,5 +125,9 @@ def test(q, bus, mc): assertEquals(account_props.Get(cs.ACCOUNT_IFACE_AVATAR, 'Avatar', byte_arrays=False), ([], '')) + # empty avatars are represented by an empty file, not no file, + # to get the right precedence over XDG_DATA_DIRS + assertEquals('', ''.join(open(avatar_filename, 'r').readlines())) + if __name__ == '__main__': exec_test(test, {}) |