diff options
Diffstat (limited to 'tests/test_gnunet_chat_handle.c')
-rw-r--r-- | tests/test_gnunet_chat_handle.c | 146 |
1 files changed, 88 insertions, 58 deletions
diff --git a/tests/test_gnunet_chat_handle.c b/tests/test_gnunet_chat_handle.c index efa2ba9..f8a7b60 100644 --- a/tests/test_gnunet_chat_handle.c +++ b/tests/test_gnunet_chat_handle.c @@ -1,6 +1,6 @@ /* This file is part of GNUnet. - Copyright (C) 2021 GNUnet e.V. + Copyright (C) 2021--2022 GNUnet e.V. GNUnet is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published @@ -37,104 +37,134 @@ call_gnunet_chat_handle_init(const struct GNUNET_CONFIGURATION_Handle *cfg) CREATE_GNUNET_TEST(test_gnunet_chat_handle_init, call_gnunet_chat_handle_init) -struct GNUNET_CHAT_Handle *login_handle; +struct GNUNET_CHAT_Handle *accounts_handle; +int accounts_stage; int -on_gnunet_chat_handle_login_msg(void *cls, - struct GNUNET_CHAT_Context *context, - const struct GNUNET_CHAT_Message *message) +on_gnunet_chat_handle_accounts_it(__attribute__ ((unused)) void *cls, + __attribute__ ((unused)) const struct GNUNET_CHAT_Handle *handle, + struct GNUNET_CHAT_Account *account) +{ + const char *name = GNUNET_CHAT_account_get_name(account); + + ck_assert_ptr_ne(name, NULL); + + if (0 == strcmp(name, GNUNET_CHAT_TEST_ACCOUNT)) + accounts_stage |= 2; + + return GNUNET_YES; +} + +int +on_gnunet_chat_handle_accounts_msg(void *cls, + struct GNUNET_CHAT_Context *context, + const struct GNUNET_CHAT_Message *message) { enum GNUNET_CHAT_MessageKind kind = GNUNET_CHAT_message_get_kind(message); - ck_assert(kind == GNUNET_CHAT_KIND_LOGIN); + ck_assert(kind == GNUNET_CHAT_KIND_REFRESH); ck_assert_ptr_eq(cls, NULL); ck_assert_ptr_eq(context, NULL); - GNUNET_CHAT_stop(login_handle); + GNUNET_CHAT_iterate_accounts( + accounts_handle, + on_gnunet_chat_handle_accounts_it, + NULL + ); + + if (2 & accounts_stage) + { + if (3 == accounts_stage) + ck_assert_int_eq(GNUNET_CHAT_account_delete( + accounts_handle, + GNUNET_CHAT_TEST_ACCOUNT + ), GNUNET_OK); + + accounts_stage = 4; + } + else if (4 == accounts_stage) + GNUNET_CHAT_stop(accounts_handle); + else if (0 == accounts_stage) + { + ck_assert_int_eq(GNUNET_CHAT_account_create( + accounts_handle, + GNUNET_CHAT_TEST_ACCOUNT + ), GNUNET_OK); + + accounts_stage = 1; + } + return GNUNET_YES; } void -call_gnunet_chat_handle_login(const struct GNUNET_CONFIGURATION_Handle *cfg) +call_gnunet_chat_handle_accounts(const struct GNUNET_CONFIGURATION_Handle *cfg) { - login_handle = GNUNET_CHAT_start(cfg, on_gnunet_chat_handle_login_msg, NULL); - ck_assert_ptr_ne(login_handle, NULL); + accounts_handle = GNUNET_CHAT_start(cfg, on_gnunet_chat_handle_accounts_msg, NULL); + accounts_stage = 0; + + ck_assert_ptr_ne(accounts_handle, NULL); } -CREATE_GNUNET_TEST(test_gnunet_chat_handle_login, call_gnunet_chat_handle_login) +CREATE_GNUNET_TEST(test_gnunet_chat_handle_accounts, call_gnunet_chat_handle_accounts) -struct GNUNET_CHAT_Handle *access_handle; -int access_logins; +struct GNUNET_CHAT_Handle *connection_handle; int -on_gnunet_chat_handle_access_msg(void *cls, - struct GNUNET_CHAT_Context *context, - const struct GNUNET_CHAT_Message *message) +on_gnunet_chat_handle_connection_msg(void *cls, + struct GNUNET_CHAT_Context *context, + const struct GNUNET_CHAT_Message *message) { enum GNUNET_CHAT_MessageKind kind = GNUNET_CHAT_message_get_kind(message); + ck_assert(kind == GNUNET_CHAT_KIND_LOGIN); ck_assert_ptr_eq(cls, NULL); ck_assert_ptr_eq(context, NULL); - const char *key; - const char *name; - int result; - - if (access_logins == 0) - { - ck_assert(kind == GNUNET_CHAT_KIND_LOGIN); - - key = GNUNET_CHAT_get_key(access_handle); - ck_assert_ptr_eq(key, NULL); - - result = GNUNET_CHAT_update(access_handle); - ck_assert_int_eq(result, GNUNET_OK); - - name = GNUNET_CHAT_get_name(access_handle); - ck_assert_str_eq(name, "Access"); - } - else if (access_logins == 1) - { - ck_assert(kind == GNUNET_CHAT_KIND_LOGIN); + GNUNET_CHAT_stop(connection_handle); + return GNUNET_YES; +} - key = GNUNET_CHAT_get_key(access_handle); - ck_assert_ptr_ne(key, NULL); +void +call_gnunet_chat_handle_connection(const struct GNUNET_CONFIGURATION_Handle *cfg) +{ + connection_handle = GNUNET_CHAT_start(cfg, on_gnunet_chat_handle_connection_msg, NULL); + ck_assert_ptr_ne(connection_handle, NULL); +} - result = GNUNET_CHAT_set_name(access_handle, "Bccess"); - ck_assert_int_eq(result, GNUNET_YES); - } - else - { - ck_assert(kind == GNUNET_CHAT_KIND_CONTACT); +CREATE_GNUNET_TEST(test_gnunet_chat_handle_connection, call_gnunet_chat_handle_connection) - ck_assert_int_eq(access_logins, 2); +struct GNUNET_CHAT_Handle *update_handle; - name = GNUNET_CHAT_get_name(access_handle); - ck_assert_str_eq(name, "Bccess"); +int +on_gnunet_chat_handle_update_msg(void *cls, + struct GNUNET_CHAT_Context *context, + const struct GNUNET_CHAT_Message *message) +{ + enum GNUNET_CHAT_MessageKind kind = GNUNET_CHAT_message_get_kind(message); - GNUNET_CHAT_stop(access_handle); - } + ck_assert_ptr_eq(cls, NULL); + ck_assert_ptr_eq(context, NULL); - access_logins++; + GNUNET_CHAT_stop(update_handle); return GNUNET_YES; } void -call_gnunet_chat_handle_access(const struct GNUNET_CONFIGURATION_Handle *cfg) +call_gnunet_chat_handle_update(const struct GNUNET_CONFIGURATION_Handle *cfg) { - access_logins = 0; - - access_handle = GNUNET_CHAT_start(cfg, on_gnunet_chat_handle_access_msg, NULL); - ck_assert_ptr_ne(access_handle, NULL); + update_handle = GNUNET_CHAT_start(cfg, on_gnunet_chat_handle_update_msg, NULL); + ck_assert_ptr_ne(update_handle, NULL); } -CREATE_GNUNET_TEST(test_gnunet_chat_handle_access, call_gnunet_chat_handle_access) +CREATE_GNUNET_TEST(test_gnunet_chat_handle_update, call_gnunet_chat_handle_update) START_SUITE(handle_suite, "Handle") ADD_TEST_TO_SUITE(test_gnunet_chat_handle_init, "Start/Stop") -ADD_TEST_TO_SUITE(test_gnunet_chat_handle_login, "Login") -ADD_TEST_TO_SUITE(test_gnunet_chat_handle_access, "Get/Set") +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") END_SUITE MAIN_SUITE(handle_suite, CK_NORMAL) |