|
|
@ -331,7 +331,7 @@ TEST_F(GroupEncryptionTest, check_new_group) { |
|
|
|
free_group(group); |
|
|
|
} |
|
|
|
|
|
|
|
TEST_F(GroupEncryptionTest, check_create_group) { |
|
|
|
TEST_F(GroupEncryptionTest, check_null_membership_from_create_group) { |
|
|
|
pEp_identity* group_leader = new_identity("alistair@lost.pants", NULL, PEP_OWN_USERID, "Alistair Theirin"); |
|
|
|
PEP_STATUS status = myself(session, group_leader); |
|
|
|
ASSERT_OK; |
|
|
@ -340,27 +340,116 @@ TEST_F(GroupEncryptionTest, check_create_group) { |
|
|
|
status = myself(session, group_ident); |
|
|
|
ASSERT_OK; |
|
|
|
|
|
|
|
// Create member list
|
|
|
|
pEp_identity* carol = new_identity("carol@bob.bob", NULL, "CAROL_ID", "Carol"); |
|
|
|
ASSERT_NE(carol, nullptr); |
|
|
|
status = update_identity(session, carol); |
|
|
|
pEp_group* group = NULL; |
|
|
|
status = group_create(session, group_ident, group_leader, NULL, &group); |
|
|
|
ASSERT_OK; |
|
|
|
|
|
|
|
identity_list* list = new_identity_list(carol); |
|
|
|
ASSERT_NE(list, nullptr); |
|
|
|
member_list* retrieved_members = NULL; |
|
|
|
status = retrieve_full_group_membership(session, group_ident, &retrieved_members); |
|
|
|
ASSERT_OK; |
|
|
|
ASSERT_EQ(retrieved_members, nullptr); |
|
|
|
|
|
|
|
pEp_identity* bob = new_identity("bob@bob.bob", NULL, "BOB_ID", NULL); |
|
|
|
status = update_identity(session, bob); |
|
|
|
free_group(group); |
|
|
|
} |
|
|
|
|
|
|
|
TEST_F(GroupEncryptionTest, check_null_manager_from_create_group) { |
|
|
|
|
|
|
|
pEp_identity* group_ident = new_identity("groupies@group.group", NULL, PEP_OWN_USERID, "Bad group"); |
|
|
|
PEP_STATUS status = myself(session, group_ident); |
|
|
|
ASSERT_OK; |
|
|
|
|
|
|
|
pEp_group* group = NULL; |
|
|
|
status = group_create(session, group_ident, NULL, NULL, &group); |
|
|
|
ASSERT_EQ(status, PEP_ILLEGAL_VALUE); |
|
|
|
ASSERT_EQ(group, nullptr); |
|
|
|
} |
|
|
|
|
|
|
|
TEST_F(GroupEncryptionTest, check_null_group_ident_from_create_group) { |
|
|
|
pEp_identity* group_leader = new_identity("alistair@lost.pants", NULL, PEP_OWN_USERID, "Alistair Theirin"); |
|
|
|
PEP_STATUS status = myself(session, group_leader); |
|
|
|
ASSERT_OK; |
|
|
|
|
|
|
|
pEp_group* group = NULL; |
|
|
|
status = group_create(session, NULL, group_leader, NULL, &group); |
|
|
|
ASSERT_EQ(status, PEP_ILLEGAL_VALUE); |
|
|
|
ASSERT_EQ(group, nullptr); |
|
|
|
} |
|
|
|
|
|
|
|
TEST_F(GroupEncryptionTest, check_null_group_address_from_create_group) { |
|
|
|
pEp_identity* group_leader = new_identity("alistair@lost.pants", NULL, PEP_OWN_USERID, "Alistair Theirin"); |
|
|
|
PEP_STATUS status = myself(session, group_leader); |
|
|
|
ASSERT_OK; |
|
|
|
ASSERT_NE(identity_list_add(list, bob), nullptr); |
|
|
|
|
|
|
|
pEp_identity* solas = new_identity("solas@solas.solas", NULL, "SOLAS_ID", "The Dread Wolf, Betrayer of All"); |
|
|
|
status = update_identity(session, solas); |
|
|
|
pEp_identity* group_ident = new_identity("groupies@group.group", NULL, PEP_OWN_USERID, "Bad group"); |
|
|
|
status = myself(session, group_ident); |
|
|
|
ASSERT_OK; |
|
|
|
free(group_ident->address); |
|
|
|
group_ident->address = NULL; |
|
|
|
|
|
|
|
pEp_group* group = NULL; |
|
|
|
status = group_create(session, group_ident, group_leader, NULL, &group); |
|
|
|
ASSERT_EQ(status, PEP_ILLEGAL_VALUE); |
|
|
|
ASSERT_EQ(group, nullptr); |
|
|
|
} |
|
|
|
|
|
|
|
TEST_F(GroupEncryptionTest, check_null_manager_address_from_create_group) { |
|
|
|
pEp_identity* group_leader = new_identity("alistair@lost.pants", NULL, PEP_OWN_USERID, "Alistair Theirin"); |
|
|
|
PEP_STATUS status = myself(session, group_leader); |
|
|
|
ASSERT_OK; |
|
|
|
free(group_leader->address); |
|
|
|
group_leader->address = NULL; |
|
|
|
|
|
|
|
pEp_identity* group_ident = new_identity("groupies@group.group", NULL, PEP_OWN_USERID, "Bad group"); |
|
|
|
status = myself(session, group_ident); |
|
|
|
ASSERT_OK; |
|
|
|
ASSERT_NE(identity_list_add(list, solas), nullptr); |
|
|
|
|
|
|
|
pEp_group* group = NULL; |
|
|
|
status = group_create(session, group_ident, group_leader, list, &group); |
|
|
|
status = group_create(session, group_ident, group_leader, NULL, &group); |
|
|
|
ASSERT_EQ(status, PEP_ILLEGAL_VALUE); |
|
|
|
ASSERT_EQ(group, nullptr); |
|
|
|
} |
|
|
|
|
|
|
|
TEST_F(GroupEncryptionTest, check_add_invite_exist_members) { |
|
|
|
pEp_identity* me = new_identity(manager_1_address, NULL, PEP_OWN_USERID, manager_1_name); |
|
|
|
read_file_and_import_key(session, kf_name(manager_1_prefix, false).c_str()); |
|
|
|
read_file_and_import_key(session, kf_name(manager_1_prefix, true).c_str()); |
|
|
|
PEP_STATUS status = set_own_key(session, me, manager_1_fpr); |
|
|
|
ASSERT_OK; |
|
|
|
|
|
|
|
pEp_identity* member_1 = new_identity(member_1_address, NULL, "MEMBER1", member_1_name); |
|
|
|
read_file_and_import_key(session, kf_name(member_1_prefix, false).c_str()); |
|
|
|
status = update_identity(session, member_1); |
|
|
|
ASSERT_OK; |
|
|
|
status = set_pEp_version(session, member_1, 2, 2); |
|
|
|
ASSERT_OK; |
|
|
|
status = set_as_pEp_user(session, member_1); |
|
|
|
ASSERT_OK; |
|
|
|
pEp_identity* member_2 = new_identity(member_2_address, NULL, "MEMBER2", member_2_name); |
|
|
|
read_file_and_import_key(session, kf_name(member_2_prefix, false).c_str()); |
|
|
|
status = update_identity(session, member_2); |
|
|
|
ASSERT_OK; |
|
|
|
status = set_pEp_version(session, member_2, 2, 2); |
|
|
|
ASSERT_OK; |
|
|
|
status = set_as_pEp_user(session, member_2); |
|
|
|
ASSERT_OK; |
|
|
|
pEp_identity* member_3 = new_identity(member_3_address, NULL, "MEMBER3", member_3_name); |
|
|
|
read_file_and_import_key(session, kf_name(member_3_prefix, false).c_str()); |
|
|
|
status = update_identity(session, member_3); |
|
|
|
ASSERT_OK; |
|
|
|
status = set_pEp_version(session, member_3, 2, 2); |
|
|
|
ASSERT_OK; |
|
|
|
status = set_as_pEp_user(session, member_3); |
|
|
|
ASSERT_OK; |
|
|
|
|
|
|
|
identity_list* new_member_idents = new_identity_list(member_1); |
|
|
|
ASSERT_NE(new_member_idents, nullptr); |
|
|
|
identity_list_add(new_member_idents, member_2); |
|
|
|
identity_list_add(new_member_idents, member_3); |
|
|
|
|
|
|
|
pEp_identity* group_ident = new_identity(group_1_address, NULL, PEP_OWN_USERID, group_1_name); |
|
|
|
|
|
|
|
pEp_group* group = NULL; |
|
|
|
status = group_create(session, group_ident, me, new_member_idents, &group); |
|
|
|
ASSERT_OK; |
|
|
|
ASSERT_NE(group, nullptr); |
|
|
|
ASSERT_NE(group->group_identity, nullptr); |
|
|
@ -368,17 +457,18 @@ TEST_F(GroupEncryptionTest, check_create_group) { |
|
|
|
ASSERT_STREQ(group->group_identity->user_id, group_ident->user_id); |
|
|
|
ASSERT_NE(group->group_identity->flags & PEP_idf_group_ident, 0); |
|
|
|
ASSERT_NE(group->manager, nullptr); |
|
|
|
ASSERT_STREQ(group->manager->address, group_leader->address); |
|
|
|
ASSERT_STREQ(group->manager->user_id, group_leader->user_id); |
|
|
|
ASSERT_STREQ(group->manager->address, me->address); |
|
|
|
ASSERT_STREQ(group->manager->user_id, me->user_id); |
|
|
|
ASSERT_EQ(group->manager->flags & PEP_idf_group_ident, 0); |
|
|
|
ASSERT_STRNE(group_ident->fpr, group_leader->fpr); |
|
|
|
ASSERT_STRNE(group_ident->fpr, me->fpr); |
|
|
|
|
|
|
|
// We need to check for identity parity in the input ident list and the member list, I guess:
|
|
|
|
identity_list* input_idents = list; |
|
|
|
identity_list* input_idents = new_member_idents; |
|
|
|
member_list* group_members = group->members; |
|
|
|
|
|
|
|
int member_count = 0; |
|
|
|
for ( ; input_idents && group_members && input_idents->ident && group_members->member && group_members->member->ident; |
|
|
|
group_members = group_members->next, input_idents = input_idents->next) { |
|
|
|
group_members = group_members->next, input_idents = input_idents->next) { |
|
|
|
// Check that the bare essentials match
|
|
|
|
pEp_identity* ident_ident = input_idents->ident; |
|
|
|
pEp_identity* member_ident = group_members->member->ident; |
|
|
@ -386,191 +476,256 @@ TEST_F(GroupEncryptionTest, check_create_group) { |
|
|
|
ASSERT_STREQ(ident_ident->user_id, member_ident->user_id); |
|
|
|
ASSERT_STREQ(ident_ident->address, member_ident->address); |
|
|
|
ASSERT_FALSE(group_members->member->joined); |
|
|
|
|
|
|
|
member_count++; |
|
|
|
} |
|
|
|
|
|
|
|
ASSERT_EQ(member_count, 3); |
|
|
|
|
|
|
|
// Make sure both lists hit their end
|
|
|
|
ASSERT_EQ(input_idents, nullptr); |
|
|
|
ASSERT_EQ(group_members, nullptr); |
|
|
|
|
|
|
|
free_group(group); |
|
|
|
} |
|
|
|
|
|
|
|
TEST_F(GroupEncryptionTest, check_membership_from_create_group) { |
|
|
|
pEp_identity* group_leader = new_identity("alistair@lost.pants", NULL, PEP_OWN_USERID, "Alistair Theirin"); |
|
|
|
PEP_STATUS status = myself(session, group_leader); |
|
|
|
pEp_identity* member_4 = new_identity(member_4_address, NULL, "MEMBER4", member_4_name); |
|
|
|
read_file_and_import_key(session, kf_name(member_4_prefix, false).c_str()); |
|
|
|
status = update_identity(session, member_4); |
|
|
|
ASSERT_OK; |
|
|
|
|
|
|
|
pEp_identity* group_ident = new_identity("groupies@group.group", NULL, PEP_OWN_USERID, "Bad group"); |
|
|
|
status = myself(session, group_ident); |
|
|
|
status = set_pEp_version(session, member_4, 2, 2); |
|
|
|
ASSERT_OK; |
|
|
|
|
|
|
|
// Create member list
|
|
|
|
pEp_identity* carol = new_identity("carol@bob.bob", NULL, "CAROL_ID", "Carol"); |
|
|
|
ASSERT_NE(carol, nullptr); |
|
|
|
status = update_identity(session, carol); |
|
|
|
status = set_as_pEp_user(session, member_4); |
|
|
|
ASSERT_OK; |
|
|
|
|
|
|
|
identity_list* list = new_identity_list(carol); |
|
|
|
ASSERT_NE(list, nullptr); |
|
|
|
|
|
|
|
pEp_identity* bob = new_identity("bob@bob.bob", NULL, "BOB_ID", NULL); |
|
|
|
status = update_identity(session, bob); |
|
|
|
// Ok, add Solas to the group
|
|
|
|
status = group_invite_member(session, group_ident, member_4); |
|
|
|
ASSERT_OK; |
|
|
|
ASSERT_NE(identity_list_add(list, bob), nullptr); |
|
|
|
|
|
|
|
pEp_identity* solas = new_identity("solas@solas.solas", NULL, "SOLAS_ID", "The Dread Wolf, Betrayer of All"); |
|
|
|
status = update_identity(session, solas); |
|
|
|
free_group(group); |
|
|
|
group = NULL; |
|
|
|
status = retrieve_group_info(session, group_ident, &group); |
|
|
|
ASSERT_OK; |
|
|
|
ASSERT_NE(identity_list_add(list, solas), nullptr); |
|
|
|
ASSERT_NE(group, nullptr); |
|
|
|
|
|
|
|
pEp_group* group = NULL; |
|
|
|
status = group_create(session, group_ident, group_leader, list, &group); |
|
|
|
ASSERT_OK; |
|
|
|
member_list* output_idents = group->members; |
|
|
|
member_count = 0; |
|
|
|
bool member_4_found = false; |
|
|
|
for ( ; output_idents && output_idents->member && output_idents->member->ident ; output_idents = output_idents->next) { |
|
|
|
pEp_identity* the_member = output_idents->member->ident; |
|
|
|
ASSERT_FALSE(output_idents->member->joined); |
|
|
|
member_count++; |
|
|
|
if (strcmp(the_member->address, member_4_address) == 0 && strcmp(the_member->address, member_4_address) == 0) { |
|
|
|
member_4_found = true; |
|
|
|
} |
|
|
|
} |
|
|
|
ASSERT_EQ(member_count, 4); |
|
|
|
ASSERT_TRUE(member_4_found); |
|
|
|
|
|
|
|
bool carol_found = false; |
|
|
|
bool solas_found = false; |
|
|
|
bool bob_found = false; |
|
|
|
free(group); |
|
|
|
} |
|
|
|
|
|
|
|
member_list* retrieved_members = NULL; |
|
|
|
status = retrieve_full_group_membership(session, group_ident, &retrieved_members); |
|
|
|
TEST_F(GroupEncryptionTest, check_add_invite_empty_members) { |
|
|
|
pEp_identity* me = new_identity(manager_1_address, NULL, PEP_OWN_USERID, manager_1_name); |
|
|
|
read_file_and_import_key(session, kf_name(manager_1_prefix, false).c_str()); |
|
|
|
read_file_and_import_key(session, kf_name(manager_1_prefix, true).c_str()); |
|
|
|
PEP_STATUS status = set_own_key(session, me, manager_1_fpr); |
|
|
|
ASSERT_OK; |
|
|
|
ASSERT_NE(retrieved_members, nullptr); |
|
|
|
|
|
|
|
for (member_list* curr_node = retrieved_members; curr_node && curr_node->member; curr_node = curr_node->next) { |
|
|
|
if (!curr_node->member->ident) |
|
|
|
break; |
|
|
|
pEp_identity* ident = curr_node->member->ident; |
|
|
|
if ((strcmp(ident->user_id, carol->user_id) == 0) && strcmp(ident->address, carol->address) == 0) |
|
|
|
carol_found = true; |
|
|
|
else if ((strcmp(ident->user_id, bob->user_id) == 0) && strcmp(ident->address, bob->address) == 0) |
|
|
|
bob_found = true; |
|
|
|
else if ((strcmp(ident->user_id, solas->user_id) == 0) && strcmp(ident->address, solas->address) == 0) |
|
|
|
solas_found = true; |
|
|
|
else |
|
|
|
ASSERT_STREQ("This message is just to make the test fail and give a message, we found an unexpected member node.", "FAIL"); |
|
|
|
ASSERT_FALSE(curr_node->member->joined); |
|
|
|
} |
|
|
|
|
|
|
|
ASSERT_TRUE(carol_found); |
|
|
|
ASSERT_TRUE(bob_found); |
|
|
|
ASSERT_TRUE(solas_found); |
|
|
|
identity_list* new_member_idents = NULL; // new_identity_list(member_1);
|
|
|
|
|
|
|
|
free_group(group); |
|
|
|
} |
|
|
|
pEp_identity* group_ident = new_identity(group_1_address, NULL, PEP_OWN_USERID, group_1_name); |
|
|
|
|
|
|
|
TEST_F(GroupEncryptionTest, check_null_membership_from_create_group) { |
|
|
|
pEp_identity* group_leader = new_identity("alistair@lost.pants", NULL, PEP_OWN_USERID, "Alistair Theirin"); |
|
|
|
PEP_STATUS status = myself(session, group_leader); |
|
|
|
pEp_group* group = NULL; |
|
|
|
status = group_create(session, group_ident, me, new_member_idents, &group); |
|
|
|
ASSERT_OK; |
|
|
|
ASSERT_NE(group, nullptr); |
|
|
|
ASSERT_NE(group->group_identity, nullptr); |
|
|
|
ASSERT_STREQ(group->group_identity->address, group_ident->address); |
|
|
|
ASSERT_STREQ(group->group_identity->user_id, group_ident->user_id); |
|
|
|
ASSERT_NE(group->group_identity->flags & PEP_idf_group_ident, 0); |
|
|
|
ASSERT_NE(group->manager, nullptr); |
|
|
|
ASSERT_STREQ(group->manager->address, me->address); |
|
|
|
ASSERT_STREQ(group->manager->user_id, me->user_id); |
|
|
|
ASSERT_EQ(group->manager->flags & PEP_idf_group_ident, 0); |
|
|
|
ASSERT_STRNE(group_ident->fpr, me->fpr); |
|
|
|
|
|
|
|
pEp_identity* group_ident = new_identity("groupies@group.group", NULL, PEP_OWN_USERID, "Bad group"); |
|
|
|
status = myself(session, group_ident); |
|
|
|
pEp_identity* member_4 = new_identity(member_4_address, NULL, "MEMBER4", member_4_name); |
|
|
|
read_file_and_import_key(session, kf_name(member_4_prefix, false).c_str()); |
|
|
|
status = update_identity(session, member_4); |
|
|
|
ASSERT_OK; |
|
|
|
|
|
|
|
pEp_group* group = NULL; |
|
|
|
status = group_create(session, group_ident, group_leader, NULL, &group); |
|
|
|
status = set_pEp_version(session, member_4, 2, 2); |
|
|
|
ASSERT_OK; |
|
|
|
status = set_as_pEp_user(session, member_4); |
|
|
|
ASSERT_OK; |
|
|
|
|
|
|
|
member_list* retrieved_members = NULL; |
|
|
|
status = retrieve_full_group_membership(session, group_ident, &retrieved_members); |
|
|
|
status = group_invite_member(session, group_ident, member_4); |
|
|
|
ASSERT_OK; |
|
|
|
ASSERT_EQ(retrieved_members, nullptr); |
|
|
|
|
|
|
|
free_group(group); |
|
|
|
} |
|
|
|
|
|
|
|
TEST_F(GroupEncryptionTest, check_null_manager_from_create_group) { |
|
|
|
|
|
|
|
pEp_identity* group_ident = new_identity("groupies@group.group", NULL, PEP_OWN_USERID, "Bad group"); |
|
|
|
PEP_STATUS status = myself(session, group_ident); |
|
|
|
group = NULL; |
|
|
|
status = retrieve_group_info(session, group_ident, &group); |
|
|
|
ASSERT_OK; |
|
|
|
ASSERT_NE(group, nullptr); |
|
|
|
|
|
|
|
pEp_group* group = NULL; |
|
|
|
status = group_create(session, group_ident, NULL, NULL, &group); |
|
|
|
ASSERT_EQ(status, PEP_ILLEGAL_VALUE); |
|
|
|
ASSERT_EQ(group, nullptr); |
|
|
|
member_list* output_idents = group->members; |
|
|
|
int member_count = 0; |
|
|
|
bool member_4_found = false; |
|
|
|
for ( ; output_idents && output_idents->member && output_idents->member->ident ; output_idents = output_idents->next) { |
|
|
|
pEp_identity* the_member = output_idents->member->ident; |
|
|
|
ASSERT_FALSE(output_idents->member->joined); |
|
|
|
member_count++; |
|
|
|
if (strcmp(the_member->address, member_4_address) == 0 && strcmp(the_member->address, member_4_address) == 0) { |
|
|
|
member_4_found = true; |
|
|
|
} |
|
|
|
} |
|
|
|
ASSERT_EQ(member_count, 1); |
|
|
|
ASSERT_TRUE(member_4_found); |
|
|
|
|
|
|
|
free(group); |
|
|
|
} |
|
|
|
|
|
|
|
TEST_F(GroupEncryptionTest, check_null_group_ident_from_create_group) { |
|
|
|
pEp_identity* group_leader = new_identity("alistair@lost.pants", NULL, PEP_OWN_USERID, "Alistair Theirin"); |
|
|
|
PEP_STATUS status = myself(session, group_leader); |
|
|
|
TEST_F(GroupEncryptionTest, check_add_invite_empty_members_empty_head) { |
|
|
|
pEp_identity* me = new_identity(manager_1_address, NULL, PEP_OWN_USERID, manager_1_name); |
|
|
|
read_file_and_import_key(session, kf_name(manager_1_prefix, false).c_str()); |
|
|
|
read_file_and_import_key(session, kf_name(manager_1_prefix, true).c_str()); |
|
|
|
PEP_STATUS status = set_own_key(session, me, manager_1_fpr); |
|
|
|
ASSERT_OK; |
|
|
|
|
|
|
|
identity_list* new_member_idents = new_identity_list(NULL); |
|
|
|
|
|
|
|
pEp_identity* group_ident = new_identity(group_1_address, NULL, PEP_OWN_USERID, group_1_name); |
|
|
|
|
|
|
|
pEp_group* group = NULL; |
|
|
|
status = group_create(session, NULL, group_leader, NULL, &group); |
|
|
|
ASSERT_EQ(status, PEP_ILLEGAL_VALUE); |
|
|
|
ASSERT_EQ(group, nullptr); |
|
|
|
} |
|
|
|
status = group_create(session, group_ident, me, new_member_idents, &group); |
|
|
|
ASSERT_OK; |
|
|
|
ASSERT_NE(group, nullptr); |
|
|
|
ASSERT_NE(group->group_identity, nullptr); |
|
|
|
ASSERT_STREQ(group->group_identity->address, group_ident->address); |
|
|
|
ASSERT_STREQ(group->group_identity->user_id, group_ident->user_id); |
|
|
|
ASSERT_NE(group->group_identity->flags & PEP_idf_group_ident, 0); |
|
|
|
ASSERT_NE(group->manager, nullptr); |
|
|
|
ASSERT_STREQ(group->manager->address, me->address); |
|
|
|
ASSERT_STREQ(group->manager->user_id, me->user_id); |
|
|
|
ASSERT_EQ(group->manager->flags & PEP_idf_group_ident, 0); |
|
|
|
ASSERT_STRNE(group_ident->fpr, me->fpr); |
|
|
|
|
|
|
|
TEST_F(GroupEncryptionTest, check_null_group_address_from_create_group) { |
|
|
|
pEp_identity* group_leader = new_identity("alistair@lost.pants", NULL, PEP_OWN_USERID, "Alistair Theirin"); |
|
|
|
PEP_STATUS status = myself(session, group_leader); |
|
|
|
pEp_identity* member_4 = new_identity(member_4_address, NULL, "MEMBER4", member_4_name); |
|
|
|
read_file_and_import_key(session, kf_name(member_4_prefix, false).c_str()); |
|
|
|
status = update_identity(session, member_4); |
|
|
|
ASSERT_OK; |
|
|
|
status = set_pEp_version(session, member_4, 2, 2); |
|
|
|
ASSERT_OK; |
|
|
|
status = set_as_pEp_user(session, member_4); |
|
|
|
ASSERT_OK; |
|
|
|
|
|
|
|
pEp_identity* group_ident = new_identity("groupies@group.group", NULL, PEP_OWN_USERID, "Bad group"); |
|
|
|
status = myself(session, group_ident); |
|
|
|
status = group_invite_member(session, group_ident, member_4); |
|
|
|
ASSERT_OK; |
|
|
|
free(group_ident->address); |
|
|
|
group_ident->address = NULL; |
|
|
|
|
|
|
|
pEp_group* group = NULL; |
|
|
|
status = group_create(session, group_ident, group_leader, NULL, &group); |
|
|
|
ASSERT_EQ(status, PEP_ILLEGAL_VALUE); |
|
|
|
ASSERT_EQ(group, nullptr); |
|
|
|
free_group(group); |
|
|
|
group = NULL; |
|
|
|
status = retrieve_group_info(session, group_ident, &group); |
|
|
|
ASSERT_OK; |
|
|
|
ASSERT_NE(group, nullptr); |
|
|
|
|
|
|
|
member_list* output_idents = group->members; |
|
|
|
int member_count = 0; |
|
|
|
bool member_4_found = false; |
|
|
|
for ( ; output_idents && output_idents->member && output_idents->member->ident ; output_idents = output_idents->next) { |
|
|
|
pEp_identity* the_member = output_idents->member->ident; |
|
|
|
ASSERT_FALSE(output_idents->member->joined); |
|
|
|
member_count++; |
|
|
|
if (strcmp(the_member->address, member_4_address) == 0 && strcmp(the_member->address, member_4_address) == 0) { |
|
|
|
member_4_found = true; |
|
|
|
} |
|
|
|
} |
|
|
|
ASSERT_EQ(member_count, 1); |
|
|
|
ASSERT_TRUE(member_4_found); |
|
|
|
|
|
|
|
free(group); |
|
|
|
} |
|
|
|
|
|
|
|
TEST_F(GroupEncryptionTest, check_null_manager_address_from_create_group) { |
|
|
|
pEp_identity* group_leader = new_identity("alistair@lost.pants", NULL, PEP_OWN_USERID, "Alistair Theirin"); |
|
|
|
PEP_STATUS status = myself(session, group_leader); |
|
|
|
TEST_F(GroupEncryptionTest, check_add_invite_members_no_member) { |
|
|
|
pEp_identity* me = new_identity(manager_1_address, NULL, PEP_OWN_USERID, manager_1_name); |
|
|
|
read_file_and_import_key(session, kf_name(manager_1_prefix, false).c_str()); |
|
|
|
read_file_and_import_key(session, kf_name(manager_1_prefix, true).c_str()); |
|
|
|
PEP_STATUS status = set_own_key(session, me, manager_1_fpr); |
|
|
|
ASSERT_OK; |
|
|
|
free(group_leader->address); |
|
|
|
group_leader->address = NULL; |
|
|
|
|
|
|
|
pEp_identity* group_ident = new_identity("groupies@group.group", NULL, PEP_OWN_USERID, "Bad group"); |
|
|
|
status = myself(session, group_ident); |
|
|
|
ASSERT_OK; |
|
|
|
identity_list* new_member_idents = new_identity_list(NULL); |
|
|
|
|
|
|
|
pEp_identity* group_ident = new_identity(group_1_address, NULL, PEP_OWN_USERID, group_1_name); |
|
|
|
|
|
|
|
pEp_group* group = NULL; |
|
|
|
status = group_create(session, group_ident, group_leader, NULL, &group); |
|
|
|
status = group_create(session, group_ident, me, new_member_idents, &group); |
|
|
|
ASSERT_OK; |
|
|
|
ASSERT_NE(group, nullptr); |
|
|
|
ASSERT_NE(group->group_identity, nullptr); |
|
|
|
ASSERT_STREQ(group->group_identity->address, group_ident->address); |
|
|
|
ASSERT_STREQ(group->group_identity->user_id, group_ident->user_id); |
|
|
|
ASSERT_NE(group->group_identity->flags & PEP_idf_group_ident, 0); |
|
|
|
ASSERT_NE(group->manager, nullptr); |
|
|
|
ASSERT_STREQ(group->manager->address, me->address); |
|
|
|
ASSERT_STREQ(group->manager->user_id, me->user_id); |
|
|
|
ASSERT_EQ(group->manager->flags & PEP_idf_group_ident, 0); |
|
|
|
ASSERT_STRNE(group_ident->fpr, me->fpr); |
|
|
|
|
|
|
|
status = group_invite_member(session, group_ident, NULL); |
|
|
|
ASSERT_EQ(status, PEP_ILLEGAL_VALUE); |
|
|
|
ASSERT_EQ(group, nullptr); |
|
|
|
} |
|
|
|
|
|
|
|
TEST_F(GroupEncryptionTest, check_add_invite) { |
|
|
|
pEp_identity* own_ident = new_identity("alistair@lost.pants", NULL, PEP_OWN_USERID, "Alistair Theirin"); |
|
|
|
PEP_STATUS status = myself(session, own_ident); |
|
|
|
free_group(group); |
|
|
|
group = NULL; |
|
|
|
status = retrieve_group_info(session, group_ident, &group); |
|
|
|
ASSERT_OK; |
|
|
|
ASSERT_NE(group, nullptr); |
|
|
|
ASSERT_EQ(group->members, nullptr); |
|
|
|
free(group); |
|
|
|
} |
|
|
|
|
|
|
|
pEp_identity* group_ident = new_identity("groupies@group.group", NULL, PEP_OWN_USERID, "Bad group"); |
|
|
|
status = myself(session, group_ident); |
|
|
|
ASSERT_OK; |
|
|
|
status = set_identity_flags(session, group_ident, group_ident->flags | PEP_idf_group_ident); |
|
|
|
TEST_F(GroupEncryptionTest, check_add_invite_member_no_key) { |
|
|
|
pEp_identity* me = new_identity(manager_1_address, NULL, PEP_OWN_USERID, manager_1_name); |
|
|
|
read_file_and_import_key(session, kf_name(manager_1_prefix, false).c_str()); |
|
|
|
read_file_and_import_key(session, kf_name(manager_1_prefix, true).c_str()); |
|
|
|
PEP_STATUS status = set_own_key(session, me, manager_1_fpr); |
|
|
|
ASSERT_OK; |
|
|
|
|
|
|
|
pEp_identity* manager = new_identity("bad_manager@bad.bad", NULL, "BAD_MANAGER", "bad_manager"); |
|
|
|
status = update_identity(session, manager); |
|
|
|
ASSERT_OK; |
|
|
|
identity_list* new_member_idents = NULL; // new_identity_list(member_1);
|
|
|
|
|
|
|
|
pEp_group* group = NULL; |
|
|
|
pEp_identity* group_ident = new_identity(group_1_address, NULL, PEP_OWN_USERID, group_1_name); |
|
|
|
|
|
|
|
status = group_create(session, group_ident, manager, NULL, &group); |
|
|
|
pEp_group* group = NULL; |
|
|
|
status = group_create(session, group_ident, me, new_member_idents, &group); |
|
|
|
ASSERT_OK; |
|
|
|
ASSERT_NE(group, nullptr); |
|
|
|
ASSERT_NE(group->group_identity, nullptr); |
|
|
|
ASSERT_STREQ(group->group_identity->address, group_ident->address); |
|
|
|
ASSERT_STREQ(group->group_identity->user_id, group_ident->user_id); |
|
|
|
ASSERT_NE(group->group_identity->flags & PEP_idf_group_ident, 0); |
|
|
|
ASSERT_NE(group->manager, nullptr); |
|
|
|
ASSERT_STREQ(group->manager->address, me->address); |
|
|
|
ASSERT_STREQ(group->manager->user_id, me->user_id); |
|
|
|
ASSERT_EQ(group->manager->flags & PEP_idf_group_ident, 0); |
|
|
|
ASSERT_STRNE(group_ident->fpr, me->fpr); |
|
|
|
|
|
|
|
status = group_enable(session, group_ident); |
|
|
|
pEp_identity* member_4 = new_identity(member_4_address, NULL, "MEMBER4", member_4_name); |
|
|
|
status = update_identity(session, member_4); |
|
|
|
ASSERT_OK; |
|
|
|
|
|
|
|
status = add_own_membership_entry(session, group_ident, manager, own_ident); |
|
|
|
status = set_pEp_version(session, member_4, 2, 2); |
|
|
|
ASSERT_OK; |
|
|
|
status = set_as_pEp_user(session, member_4); |
|
|
|
ASSERT_OK; |
|
|
|
|
|
|
|
status = retrieve_own_membership_info_for_group_and_identity(session, group, own_ident); |
|
|
|
status = group_invite_member(session, group_ident, member_4); |
|
|
|
ASSERT_EQ(status, PEP_CANNOT_ADD_GROUP_MEMBER); |
|
|
|
|
|
|
|
free_group(group); |
|
|
|
group = NULL; |
|
|
|
status = retrieve_group_info(session, group_ident, &group); |
|
|
|
ASSERT_OK; |
|
|
|
ASSERT_NE(group, nullptr); |
|
|
|
ASSERT_EQ(group->members, nullptr); |
|
|
|
|
|
|
|
ASSERT_STREQ(group->manager->user_id, manager->user_id); |
|
|
|
ASSERT_STREQ(group->manager->address, manager->address); |
|
|
|
ASSERT_TRUE(group->active); |
|
|
|
ASSERT_FALSE(group->members->member->joined); |
|
|
|
ASSERT_EQ(group->members->next, nullptr); |
|
|
|
free(group); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
TEST_F(GroupEncryptionTest, check_group_join) { |
|
|
|
pEp_identity* own_ident = new_identity("alistair@lost.pants", NULL, PEP_OWN_USERID, "Alistair Theirin"); |
|
|
|
PEP_STATUS status = myself(session, own_ident); |
|
|
|