diff options
author | TheJackiMonster <thejackimonster@gmail.com> | 2022-04-02 14:50:52 +0200 |
---|---|---|
committer | TheJackiMonster <thejackimonster@gmail.com> | 2022-04-02 14:50:52 +0200 |
commit | cd4754e94da6553f93c0d499a1feb95025b44638 (patch) | |
tree | c5c3211ed4e644c1db599a90fc8856fd3b15caf7 | |
parent | e2baf6fe4dd8358095a102ca320bf4abf034716a (diff) |
Add test for account renaming
Signed-off-by: TheJackiMonster <thejackimonster@gmail.com>
-rw-r--r-- | tests/test_gnunet_chat_handle.c | 110 |
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) |