|
48 | 48 | end |
49 | 49 |
|
50 | 50 | it { is_expected.not_to be_success } |
| 51 | + it { expect(service_response.payload[:error_code]).to eq(:cannot_delete_last_admin_role) } |
51 | 52 | it { expect { service_response }.not_to change { NamespaceRole.count } } |
52 | 53 |
|
53 | 54 | it do |
54 | 55 | expect { service_response }.not_to create_audit_event |
55 | 56 | end |
56 | 57 | end |
57 | 58 |
|
58 | | - context 'when user is a member' do |
| 59 | + context 'when another role has the namespace_administrator ability but no members' do |
59 | 60 | let(:current_user) { create(:user) } |
60 | 61 |
|
61 | 62 | before do |
62 | 63 | create(:namespace_member, namespace: namespace_role.namespace, user: current_user) |
| 64 | + create(:namespace_role_ability, namespace_role: namespace_role, ability: :namespace_administrator) |
| 65 | + create(:namespace_member_role, member: create(:namespace_member, namespace: namespace_role.namespace), |
| 66 | + role: namespace_role) |
| 67 | + stub_allowed_ability(NamespacePolicy, :delete_namespace_role, user: current_user, |
| 68 | + subject: namespace_role.namespace) |
| 69 | + end |
| 70 | + |
| 71 | + it { is_expected.not_to be_success } |
| 72 | + it { expect(service_response.payload[:error_code]).to eq(:cannot_delete_last_admin_role) } |
| 73 | + it { expect { service_response }.not_to change { NamespaceRole.count } } |
| 74 | + |
| 75 | + it do |
| 76 | + expect { service_response }.not_to create_audit_event |
| 77 | + end |
| 78 | + end |
| 79 | + |
| 80 | + context 'when user is a member' do |
| 81 | + let(:current_user) { create(:user) } |
| 82 | + |
| 83 | + before do |
| 84 | + member = create(:namespace_member, namespace: namespace_role.namespace, user: current_user) |
| 85 | + create(:namespace_member_role, member: member, role: admin_role) |
63 | 86 | stub_allowed_ability(NamespacePolicy, :delete_namespace_role, user: current_user, |
64 | 87 | subject: namespace_role.namespace) |
65 | 88 | end |
|
0 commit comments