summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/twisted/Makefile.am2
-rw-r--r--tests/twisted/account-manager/avatar-persist.py48
-rw-r--r--tests/twisted/account-manager/avatar-refresh.py12
-rw-r--r--tests/twisted/account-manager/avatar.py23
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, {})