summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTheJackiMonster <thejackimonster@gmail.com>2022-04-02 14:50:52 +0200
committerTheJackiMonster <thejackimonster@gmail.com>2022-04-02 14:50:52 +0200
commitcd4754e94da6553f93c0d499a1feb95025b44638 (patch)
treec5c3211ed4e644c1db599a90fc8856fd3b15caf7
parente2baf6fe4dd8358095a102ca320bf4abf034716a (diff)
Add test for account renaming
Signed-off-by: TheJackiMonster <thejackimonster@gmail.com>
-rw-r--r--tests/test_gnunet_chat_handle.c110
1 files changed, 110 insertions, 0 deletions
diff --git a/tests/test_gnunet_chat_handle.c b/tests/test_gnunet_chat_handle.c
index f4d4ef8..6bc6fbf 100644
--- a/tests/test_gnunet_chat_handle.c
+++ b/tests/test_gnunet_chat_handle.c
@@ -287,12 +287,122 @@ call_gnunet_chat_handle_update(const struct GNUNET_CONFIGURATION_Handle *cfg)
CREATE_GNUNET_TEST(test_gnunet_chat_handle_update, call_gnunet_chat_handle_update)
+int
+on_gnunet_chat_handle_rename_it(void *cls,
+ const struct GNUNET_CHAT_Handle *handle,
+ struct GNUNET_CHAT_Account *account)
+{
+ struct GNUNET_CHAT_Handle *chat = (struct GNUNET_CHAT_Handle*) cls;
+
+ ck_assert_ptr_ne(chat, NULL);
+ ck_assert_ptr_eq(handle, chat);
+ ck_assert_ptr_ne(account, NULL);
+
+ const char *name = GNUNET_CHAT_account_get_name(account);
+
+ ck_assert_ptr_ne(name, NULL);
+ ck_assert_ptr_eq(GNUNET_CHAT_get_connected(handle), NULL);
+
+ if (0 == strcmp(name, "gnunet_chat_handle_rename_A"))
+ {
+ GNUNET_CHAT_connect(chat, account);
+ return GNUNET_NO;
+ }
+
+ return GNUNET_YES;
+}
+
+int
+on_gnunet_chat_handle_rename_msg(void *cls,
+ struct GNUNET_CHAT_Context *context,
+ const struct GNUNET_CHAT_Message *message)
+{
+ struct GNUNET_CHAT_Handle *handle = *(
+ (struct GNUNET_CHAT_Handle**) cls
+ );
+
+ ck_assert_ptr_ne(handle, NULL);
+ ck_assert_ptr_eq(context, NULL);
+ ck_assert_ptr_ne(message, NULL);
+
+ enum GNUNET_CHAT_MessageKind kind = GNUNET_CHAT_message_get_kind(message);
+
+ if (GNUNET_CHAT_get_connected(handle))
+ goto skip_search_account;
+
+ GNUNET_CHAT_iterate_accounts(
+ handle,
+ on_gnunet_chat_handle_rename_it,
+ handle
+ );
+
+ if (!GNUNET_CHAT_get_connected(handle))
+ return GNUNET_YES;
+
+skip_search_account:
+ if (GNUNET_CHAT_KIND_LOGIN != kind)
+ return GNUNET_YES;
+
+ const char *name = GNUNET_CHAT_get_name(handle);
+ ck_assert_ptr_ne(name, NULL);
+
+ char *dup = (char*) GNUNET_CHAT_get_user_pointer(handle);
+
+ if (!dup)
+ {
+ dup = GNUNET_strdup(name);
+
+ ck_assert_ptr_ne(dup, NULL);
+ ck_assert_str_eq(name, dup);
+
+ GNUNET_CHAT_set_user_pointer(handle, (void*) dup);
+
+ ck_assert_int_eq(GNUNET_CHAT_set_name(
+ handle,
+ "gnunet_chat_handle_rename_B"
+ ), GNUNET_YES);
+ }
+ else
+ {
+ ck_assert_ptr_ne(dup, NULL);
+ ck_assert_str_ne(name, dup);
+
+ GNUNET_free(dup);
+
+ GNUNET_CHAT_disconnect(handle);
+
+ ck_assert_int_eq(GNUNET_CHAT_account_delete(
+ handle,
+ "gnunet_chat_handle_rename_B"
+ ), GNUNET_OK);
+
+ GNUNET_CHAT_stop(handle);
+ }
+
+ return GNUNET_YES;
+}
+
+void
+call_gnunet_chat_handle_rename(const struct GNUNET_CONFIGURATION_Handle *cfg)
+{
+ static struct GNUNET_CHAT_Handle *handle = NULL;
+ handle = GNUNET_CHAT_start(cfg, on_gnunet_chat_handle_rename_msg, &handle);
+
+ ck_assert_ptr_ne(handle, NULL);
+ ck_assert_int_eq(GNUNET_CHAT_account_create(
+ handle,
+ "gnunet_chat_handle_rename_A"
+ ), GNUNET_OK);
+}
+
+CREATE_GNUNET_TEST(test_gnunet_chat_handle_rename, call_gnunet_chat_handle_rename)
START_SUITE(handle_suite, "Handle")
ADD_TEST_TO_SUITE(test_gnunet_chat_handle_init, "Start/Stop")
ADD_TEST_TO_SUITE(test_gnunet_chat_handle_accounts, "Accounts")
ADD_TEST_TO_SUITE(test_gnunet_chat_handle_connection, "Connect/Disconnect")
ADD_TEST_TO_SUITE(test_gnunet_chat_handle_update, "Update")
+ADD_TEST_TO_SUITE(test_gnunet_chat_handle_rename, "Rename")
END_SUITE
MAIN_SUITE(handle_suite, CK_NORMAL)