summaryrefslogtreecommitdiff
path: root/tests/dbus/test-entity.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/dbus/test-entity.c')
-rw-r--r--tests/dbus/test-entity.c166
1 files changed, 166 insertions, 0 deletions
diff --git a/tests/dbus/test-entity.c b/tests/dbus/test-entity.c
new file mode 100644
index 0000000..5877a5d
--- /dev/null
+++ b/tests/dbus/test-entity.c
@@ -0,0 +1,166 @@
+#include <glib.h>
+#include <glib/gprintf.h>
+#include <telepathy-logger/entity.h>
+#include <telepathy-logger/entity-internal.h>
+
+#include "lib/util.h"
+#include "lib/contacts-conn.h"
+
+static void
+test_entity_instantiation (void)
+{
+ TplEntity *entity;
+
+ entity = g_object_new (TPL_TYPE_ENTITY,
+ "identifier", "my-identifier",
+ "type", TPL_ENTITY_CONTACT,
+ "alias", "my-alias",
+ "avatar-token", "my-token",
+ NULL);
+
+ g_assert_cmpstr (tpl_entity_get_identifier (entity), ==, "my-identifier");
+ g_assert (tpl_entity_get_entity_type (entity) == TPL_ENTITY_CONTACT);
+ g_assert_cmpstr (tpl_entity_get_alias (entity), ==, "my-alias");
+ g_assert_cmpstr (tpl_entity_get_avatar_token (entity), ==, "my-token");
+
+ g_object_unref (entity);
+}
+
+static void
+test_entity_instantiation_from_room_id (void)
+{
+ TplEntity *entity;
+
+ entity = _tpl_entity_new_from_room_id ("my-room-id");
+
+ g_assert_cmpstr (tpl_entity_get_identifier (entity), ==, "my-room-id");
+ g_assert (tpl_entity_get_entity_type (entity) == TPL_ENTITY_ROOM);
+ g_assert_cmpstr (tpl_entity_get_alias (entity), ==, "my-room-id");
+ g_assert (tpl_entity_get_avatar_token (entity) == NULL);
+
+ g_object_unref (entity);
+}
+
+
+typedef struct {
+ TpContact *contacts[2];
+ GMainLoop *loop;
+} Result;
+
+
+static void
+get_contacts_cb (TpConnection *connection,
+ guint n_contacts,
+ TpContact * const *contacts,
+ guint n_failed,
+ const TpHandle *failed,
+ const GError *error,
+ gpointer user_data,
+ GObject *weak_object)
+{
+ Result *result = user_data;
+
+ g_assert_no_error (error);
+ g_assert (n_contacts == 2);
+ g_assert (n_failed == 0);
+
+ result->contacts[0] = g_object_ref (contacts[0]);
+ result->contacts[1] = g_object_ref (contacts[1]);
+
+ g_main_loop_quit (result->loop);
+}
+
+
+static void
+test_entity_instantiation_from_tp_contact (void)
+{
+ TpBaseConnection *base_connection;
+ TpConnection *client_connection;
+ TpTestsContactsConnection *connection;
+ TpHandleRepoIface *repo;
+ TpHandle handles[2];
+ const char *alias[] = {"Alice in Wonderland", "Bob the builder"};
+ const char *avatar_tokens[] = {"alice-token", NULL};
+ TpContactFeature features[] =
+ { TP_CONTACT_FEATURE_ALIAS, TP_CONTACT_FEATURE_AVATAR_TOKEN };
+ Result result;
+ TplEntity *entity;
+
+ tp_tests_create_and_connect_conn (TP_TESTS_TYPE_CONTACTS_CONNECTION,
+ "me@test.com", &base_connection, &client_connection);
+
+ connection = TP_TESTS_CONTACTS_CONNECTION (base_connection);
+
+ repo = tp_base_connection_get_handles (base_connection,
+ TP_HANDLE_TYPE_CONTACT);
+
+ handles[0] = tp_handle_ensure (repo, "alice", NULL, NULL);
+ g_assert (handles[0] != 0);
+
+ handles[1] = tp_handle_ensure (repo, "bob", NULL, NULL);
+ g_assert (handles[1] != 0);
+
+ tp_tests_contacts_connection_change_aliases (connection, 2, handles,
+ alias);
+ tp_tests_contacts_connection_change_avatar_tokens (connection, 2, handles,
+ avatar_tokens);
+
+ result.contacts[0] = result.contacts[1] = 0;
+ result.loop = g_main_loop_new (NULL, FALSE);
+
+ tp_connection_get_contacts_by_handle (client_connection,
+ 2, handles,
+ 2, features,
+ get_contacts_cb, &result,
+ NULL, NULL);
+ g_main_loop_run (result.loop);
+
+ entity = _tpl_entity_new_from_tp_contact (result.contacts[0],
+ TPL_ENTITY_SELF);
+
+ g_assert_cmpstr (tpl_entity_get_identifier (entity), ==, "alice");
+ g_assert (tpl_entity_get_entity_type (entity) == TPL_ENTITY_SELF);
+ g_assert_cmpstr (tpl_entity_get_alias (entity), ==, alias[0]);
+ g_assert_cmpstr (tpl_entity_get_avatar_token (entity), ==, avatar_tokens[0]);
+ g_object_unref (entity);
+
+ entity = _tpl_entity_new_from_tp_contact (result.contacts[1],
+ TPL_ENTITY_CONTACT);
+
+ g_assert_cmpstr (tpl_entity_get_identifier (entity), ==, "bob");
+ g_assert (tpl_entity_get_entity_type (entity) == TPL_ENTITY_CONTACT);
+ g_assert_cmpstr (tpl_entity_get_alias (entity), ==, alias[1]);
+ g_assert (tpl_entity_get_avatar_token (entity) == NULL);
+ g_object_unref (entity);
+
+ g_object_unref (result.contacts[0]);
+ g_object_unref (result.contacts[1]);
+ g_main_loop_unref (result.loop);
+
+ tp_base_connection_change_status (base_connection,
+ TP_CONNECTION_STATUS_DISCONNECTED,
+ TP_CONNECTION_STATUS_REASON_REQUESTED);
+ tp_base_connection_finish_shutdown (base_connection);
+
+ g_object_unref (base_connection);
+ g_object_unref (client_connection);
+}
+
+int main (int argc,
+ char **argv)
+{
+ g_test_init (&argc, &argv, NULL);
+
+ g_type_init ();
+
+ g_test_add_func ("/entity/instantiation",
+ test_entity_instantiation);
+
+ g_test_add_func ("/entity/instantiation-from-room-id",
+ test_entity_instantiation_from_room_id);
+
+ g_test_add_func ("/entity/instantiation-from-tp-contact",
+ test_entity_instantiation_from_tp_contact);
+
+ return g_test_run ();
+}