Skip to content

Commit

Permalink
Completed group keys C api unit test
Browse files Browse the repository at this point in the history
  • Loading branch information
dr7ana committed Aug 31, 2023
1 parent 24ed158 commit 4d0c6e4
Show file tree
Hide file tree
Showing 6 changed files with 167 additions and 89 deletions.
5 changes: 1 addition & 4 deletions include/session/config/convo_info_volatile.h
Original file line number Diff line number Diff line change
Expand Up @@ -280,7 +280,6 @@ LIBSESSION_EXPORT bool convo_info_volatile_get_or_construct_group(
config_object* conf, convo_info_volatile_group* convo, const char* id)
__attribute__((warn_unused_result));


/// API: convo_info_volatile/convo_info_volatile_get_legacy_group
///
/// Fills `convo` with the conversation info given a legacy group ID (specified as a null-terminated
Expand Down Expand Up @@ -478,9 +477,7 @@ LIBSESSION_EXPORT bool convo_info_volatile_erase_community(
///
/// Outputs:
/// - `bool` - Returns true if group was found and removed
LIBSESSION_EXPORT bool convo_info_volatile_erase_group(
config_object* conf, const char* group_id);

LIBSESSION_EXPORT bool convo_info_volatile_erase_group(config_object* conf, const char* group_id);

/// API: convo_info_volatile/convo_info_volatile_erase_legacy_group
///
Expand Down
25 changes: 8 additions & 17 deletions include/session/config/user_groups.h
Original file line number Diff line number Diff line change
Expand Up @@ -121,9 +121,7 @@ LIBSESSION_EXPORT int user_groups_init(
/// Outputs:
/// Returns `true` and populates `group` if the group was found; returns false otherwise.
LIBSESSION_EXPORT bool user_groups_get_group(
config_object* conf,
ugroups_group_info* group,
const char* group_id);
config_object* conf, ugroups_group_info* group, const char* group_id);

/// API: user_groups/user_groups_get_or_construct_group
///
Expand All @@ -138,9 +136,7 @@ LIBSESSION_EXPORT bool user_groups_get_group(
/// Outputs:
/// Returns `true` on success, `false` upon error (such as when given an invalid group id).
LIBSESSION_EXPORT bool user_groups_get_or_construct_group(
config_object* conf,
ugroups_group_info* group,
const char* group_id);
config_object* conf, ugroups_group_info* group, const char* group_id);

/// API: user_groups/user_groups_get_community
///
Expand Down Expand Up @@ -318,8 +314,7 @@ LIBSESSION_EXPORT void user_groups_set_community(
/// Inputs:
/// - `conf` -- [in] Pointer to config_object object
/// - `group` -- [in] Pointer to a group info object
LIBSESSION_EXPORT void user_groups_set_group(
config_object* conf, const ugroups_group_info* group);
LIBSESSION_EXPORT void user_groups_set_group(config_object* conf, const ugroups_group_info* group);

/// API: user_groups/user_groups_set_legacy_group
///
Expand Down Expand Up @@ -407,8 +402,7 @@ LIBSESSION_EXPORT bool user_groups_erase_community(
///
/// Outputs:
/// - `bool` -- Returns True if conversation was found and removed
LIBSESSION_EXPORT bool user_groups_erase_group(
config_object* conf, const char* group_id);
LIBSESSION_EXPORT bool user_groups_erase_group(config_object* conf, const char* group_id);

/// API: user_groups/user_groups_erase_legacy_group
///
Expand Down Expand Up @@ -778,9 +772,7 @@ LIBSESSION_EXPORT user_groups_iterator* user_groups_iterator_new_legacy_groups(
///
/// Outputs:
/// - `user_groups_iterator*` -- The Iterator
LIBSESSION_EXPORT user_groups_iterator* user_groups_iterator_new_groups(
const config_object* conf);

LIBSESSION_EXPORT user_groups_iterator* user_groups_iterator_new_groups(const config_object* conf);

/// API: user_groups/user_groups_iterator_free
///
Expand Down Expand Up @@ -862,10 +854,9 @@ LIBSESSION_EXPORT bool user_groups_it_is_community(
/// - `group` -- [out] sets details of the group into here (if true is returned)
///
/// Outputs:
/// - `bool` -- Returns `true` and sets `group` if the group is a non-legacy group (aka closed group).
LIBSESSION_EXPORT bool user_groups_it_is_group(
user_groups_iterator* it, ugroups_group_info* group);

/// - `bool` -- Returns `true` and sets `group` if the group is a non-legacy group (aka closed
/// group).
LIBSESSION_EXPORT bool user_groups_it_is_group(user_groups_iterator* it, ugroups_group_info* group);

/// API: user_groups/user_groups_it_is_legacy_group
///
Expand Down
8 changes: 2 additions & 6 deletions src/config/convo_info_volatile.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,6 @@ namespace convo {
c.unread = unread;
}


legacy_group::legacy_group(std::string&& cgid) : id{std::move(cgid)} {
check_session_id(id);
}
Expand Down Expand Up @@ -174,8 +173,7 @@ convo::community ConvoInfoVolatile::get_or_construct_community(
return result;
}

std::optional<convo::group> ConvoInfoVolatile::get_group(
std::string_view pubkey_hex) const {
std::optional<convo::group> ConvoInfoVolatile::get_group(std::string_view pubkey_hex) const {
std::string pubkey = session_id_to_bytes(pubkey_hex, "03");

auto* info_dict = data["g"][pubkey].dict();
Expand All @@ -187,15 +185,13 @@ std::optional<convo::group> ConvoInfoVolatile::get_group(
return result;
}

convo::group ConvoInfoVolatile::get_or_construct_group(
std::string_view pubkey_hex) const {
convo::group ConvoInfoVolatile::get_or_construct_group(std::string_view pubkey_hex) const {
if (auto maybe = get_group(pubkey_hex))
return *std::move(maybe);

return convo::group{std::string{pubkey_hex}};
}


std::optional<convo::legacy_group> ConvoInfoVolatile::get_legacy_group(
std::string_view pubkey_hex) const {
std::string pubkey = session_id_to_bytes(pubkey_hex);
Expand Down
22 changes: 7 additions & 15 deletions src/config/user_groups.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -614,7 +614,7 @@ LIBSESSION_C_API bool user_groups_get_or_construct_community(
}
}
LIBSESSION_C_API bool user_groups_get_group(
config_object* conf, ugroups_group_info* group, const char* group_id){
config_object* conf, ugroups_group_info* group, const char* group_id) {
try {
conf->last_error = nullptr;
if (auto g = unbox<UserGroups>(conf)->get_group(group_id)) {
Expand All @@ -627,14 +627,10 @@ LIBSESSION_C_API bool user_groups_get_group(
return false;
}
LIBSESSION_C_API bool user_groups_get_or_construct_group(
config_object* conf,
ugroups_group_info* group,
const char* group_id) {
config_object* conf, ugroups_group_info* group, const char* group_id) {
try {
conf->last_error = nullptr;
unbox<UserGroups>(conf)
->get_or_construct_group(group_id)
.into(*group);
unbox<UserGroups>(conf)->get_or_construct_group(group_id).into(*group);
return true;
} catch (const std::exception& e) {
set_error(conf, e.what());
Expand Down Expand Up @@ -685,8 +681,7 @@ LIBSESSION_C_API void user_groups_set_community(
config_object* conf, const ugroups_community_info* comm) {
unbox<UserGroups>(conf)->set(community_info{*comm});
}
LIBSESSION_C_API void user_groups_set_group(
config_object* conf, const ugroups_group_info* group) {
LIBSESSION_C_API void user_groups_set_group(config_object* conf, const ugroups_group_info* group) {
unbox<UserGroups>(conf)->set(group_info{*group});
}
LIBSESSION_C_API void user_groups_set_legacy_group(
Expand All @@ -706,8 +701,7 @@ LIBSESSION_C_API bool user_groups_erase_community(
return false;
}
}
LIBSESSION_C_API bool user_groups_erase_group(
config_object* conf, const char* group_id) {
LIBSESSION_C_API bool user_groups_erase_group(config_object* conf, const char* group_id) {
try {
return unbox<UserGroups>(conf)->erase_group(group_id);
} catch (...) {
Expand Down Expand Up @@ -827,8 +821,7 @@ LIBSESSION_C_API user_groups_iterator* user_groups_iterator_new_communities(
const config_object* conf) {
return new user_groups_iterator{{unbox<UserGroups>(conf)->begin_communities()}};
}
LIBSESSION_C_API user_groups_iterator* user_groups_iterator_new_groups(
const config_object* conf) {
LIBSESSION_C_API user_groups_iterator* user_groups_iterator_new_groups(const config_object* conf) {
return new user_groups_iterator{{unbox<UserGroups>(conf)->begin_groups()}};
}
LIBSESSION_C_API user_groups_iterator* user_groups_iterator_new_legacy_groups(
Expand Down Expand Up @@ -865,8 +858,7 @@ LIBSESSION_C_API bool user_groups_it_is_community(
return user_groups_it_is_impl<community_info>(it, c);
}

LIBSESSION_C_API bool user_groups_it_is_group(
user_groups_iterator* it, ugroups_group_info* g) {
LIBSESSION_C_API bool user_groups_it_is_group(user_groups_iterator* it, ugroups_group_info* g) {
return user_groups_it_is_impl<group_info>(it, g);
}

Expand Down
1 change: 0 additions & 1 deletion tests/test_config_convo_info_volatile.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,6 @@ TEST_CASE("Conversations", "[config][conversations]") {
g.unread = true;
convos.set(g);


auto [seqno, to_push, obs] = convos.push();

CHECK(seqno == 1);
Expand Down
Loading

0 comments on commit 4d0c6e4

Please sign in to comment.