Skip to content
Snippets Groups Projects
Verified Commit 4e20d398 authored by Hinam Mehra's avatar Hinam Mehra :red_circle:
Browse files

Add specs for when multiple groups are invited with custom roles

parent 1a53b7a4
No related branches found
No related tags found
1 merge request!173502Add specs for when multiple groups are invited with custom roles
......@@ -827,7 +827,7 @@ def webhook_data(group_member, event)
describe '.with_group_group_sharing_access' do
let_it_be(:shared_group) { create(:group) }
include_context 'with member roles assigned to group links' do
include_context 'with multiple users in a group with custom roles' do
let(:group) { shared_group }
end
......
......@@ -112,7 +112,14 @@
context 'when group has a group link assigned to a custom role' do
let_it_be(:source) { sub_group_1 }
include_context 'with member roles assigned to group links'
include_context 'with multiple users in a group with custom roles'
it_behaves_like 'returns expected member role abilities'
end
context 'when multiple groups are invited with custom roles' do
let_it_be(:source) { sub_group_1 }
include_context 'with a user in multiple groups with custom role'
it_behaves_like 'returns expected member role abilities for the user'
end
end
......@@ -166,10 +166,17 @@
it_behaves_like 'custom roles', ability
end
context 'when project namespace has a group link assigned to a custom role' do
context "when project's parent group invites a group with a custom role" do
let(:source) { project }
include_context 'with member roles assigned to group links'
include_context 'with multiple users in a group with custom roles'
it_behaves_like 'returns expected member role abilities'
end
context "when project's parent group invites multiple groups with a custom role" do
let(:source) { project }
include_context 'with a user in multiple groups with custom role'
it_behaves_like 'returns expected member role abilities for the user'
end
end
# frozen_string_literal: true
RSpec.shared_context 'with member roles assigned to group links' do
RSpec.shared_context 'with multiple users in a group with custom roles' do
let_it_be(:invited_group) { create(:group) }
let_it_be(:guest_read_runners) do
......@@ -122,3 +122,87 @@
end
end
end
RSpec.shared_context 'with a user in multiple groups with custom role' do
let_it_be(:group_a) { create(:group) }
let_it_be(:group_b) { create(:group) }
let_it_be(:user) { create(:user) }
let_it_be(:reporter_member_role) { create(:member_role, :reporter, :instance, admin_cicd_variables: true) }
let_it_be(:member_a) { create(:group_member, :reporter, source: group_a, user: user) }
let_it_be(:member_b) do
create(:group_member, :reporter, source: group_b, user: user, member_role: reporter_member_role)
end
end
RSpec.shared_examples 'returns expected member role abilities for the user' do
using RSpec::Parameterized::TableSyntax
where(:group_a_access, :group_a_member_role, :group_b_access, :group_b_member_role, :expected_result) do
Gitlab::Access::REPORTER | nil | Gitlab::Access::DEVELOPER | nil | [:admin_cicd_variables]
Gitlab::Access::REPORTER | nil | Gitlab::Access::REPORTER | nil | []
Gitlab::Access::REPORTER | nil | Gitlab::Access::REPORTER | ref(:reporter_member_role) | [:admin_cicd_variables]
end
with_them do
before do
create(
:group_group_link,
group_access: group_a_access,
member_role: group_a_member_role,
shared_group: group,
shared_with_group: group_a
)
create(
:group_group_link,
group_access: group_b_access,
member_role: group_b_member_role,
shared_group: group,
shared_with_group: group_b
)
end
context 'when on SaaS', :saas do
context 'when feature-flag `assign_custom_roles_to_group_links_saas` for group is enabled' do
before do
stub_feature_flags(assign_custom_roles_to_group_links_saas: [group])
end
it 'returns expected result' do
expect(result[source.id]).to match_array(expected_result)
end
end
context 'when feature-flag `assign_custom_roles_to_group_links_saas` is disabled' do
before do
stub_feature_flags(assign_custom_roles_to_group_links_saas: false)
end
it 'returns empty array' do
expect(result[source.id]).to match_array([])
end
end
end
context 'when on self-managed' do
context 'when feature-flag `assign_custom_roles_to_group_links_sm` is enabled' do
it 'returns expected result' do
expect(result[source.id]).to match_array(expected_result)
end
end
context 'when feature-flag `assign_custom_roles_to_group_links_sm` is disabled' do
before do
stub_feature_flags(assign_custom_roles_to_group_links_sm: false)
end
it 'returns empty array' do
expect(result[source.id]).to match_array([])
end
end
end
end
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment