summaryrefslogtreecommitdiff
path: root/tests/test_gnunet_chat_handle.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_gnunet_chat_handle.c')
-rw-r--r--tests/test_gnunet_chat_handle.c146
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)