Skip to content
Snippets Groups Projects
Commit d2110116 authored by Nick Thomas's avatar Nick Thomas
Browse files

Make access request specs explicitly enable or disable access requests as required

parent 64d2eff9
No related branches found
No related tags found
No related merge requests found
Showing
with 69 additions and 47 deletions
---
title: Disable "Request Access" functionality by default for new projects and groups
merge_request: 7425
author:
Loading
Loading
@@ -2,7 +2,7 @@ require 'spec_helper'
 
describe Groups::GroupMembersController do
let(:user) { create(:user) }
let(:group) { create(:group, :public) }
let(:group) { create(:group, :public, :access_requestable) }
 
describe 'GET index' do
it 'renders index with 200 status code' do
Loading
Loading
Loading
Loading
@@ -2,7 +2,7 @@ require('spec_helper')
 
describe Projects::ProjectMembersController do
let(:user) { create(:user) }
let(:project) { create(:project, :public) }
let(:project) { create(:empty_project, :public, :access_requestable) }
 
describe 'GET index' do
it 'renders index with 200 status code' do
Loading
Loading
Loading
Loading
@@ -15,5 +15,9 @@ FactoryGirl.define do
trait :private do
visibility_level Gitlab::VisibilityLevel::PRIVATE
end
trait :access_requestable do
request_access_enabled true
end
end
end
Loading
Loading
@@ -24,6 +24,10 @@ FactoryGirl.define do
visibility_level Gitlab::VisibilityLevel::PRIVATE
end
 
trait :access_requestable do
request_access_enabled true
end
trait :empty_repo do
after(:create) do |project|
project.create_repository
Loading
Loading
Loading
Loading
@@ -3,7 +3,7 @@ require 'spec_helper'
feature 'Groups > Members > Owner manages access requests', feature: true do
let(:user) { create(:user) }
let(:owner) { create(:user) }
let(:group) { create(:group, :public) }
let(:group) { create(:group, :public, :access_requestable) }
 
background do
group.request_access(user)
Loading
Loading
Loading
Loading
@@ -3,7 +3,7 @@ require 'spec_helper'
feature 'Groups > Members > User requests access', feature: true do
let(:user) { create(:user) }
let(:owner) { create(:user) }
let(:group) { create(:group, :public) }
let(:group) { create(:group, :public, :access_requestable) }
let!(:project) { create(:project, :private, namespace: group) }
 
background do
Loading
Loading
Loading
Loading
@@ -3,8 +3,8 @@ require 'spec_helper'
feature 'Projects > Members > Group requester cannot request access to project', feature: true do
let(:user) { create(:user) }
let(:owner) { create(:user) }
let(:group) { create(:group, :public) }
let(:project) { create(:project, :public, namespace: group) }
let(:group) { create(:group, :public, :access_requestable) }
let(:project) { create(:project, :public, :access_requestable, namespace: group) }
 
background do
group.add_owner(owner)
Loading
Loading
Loading
Loading
@@ -3,7 +3,7 @@ require 'spec_helper'
feature 'Projects > Members > Master manages access requests', feature: true do
let(:user) { create(:user) }
let(:master) { create(:user) }
let(:project) { create(:project, :public) }
let(:project) { create(:empty_project, :public, :access_requestable) }
 
background do
project.request_access(user)
Loading
Loading
Loading
Loading
@@ -3,7 +3,7 @@ require 'spec_helper'
feature 'Projects > Members > User requests access', feature: true do
let(:user) { create(:user) }
let(:master) { create(:user) }
let(:project) { create(:project, :public) }
let(:project) { create(:project, :public, :access_requestable) }
 
background do
project.team << [master, :master]
Loading
Loading
Loading
Loading
@@ -3,12 +3,17 @@ require 'spec_helper'
describe AccessRequestsFinder, services: true do
let(:user) { create(:user) }
let(:access_requester) { create(:user) }
let(:project) { create(:project, :public) }
let(:group) { create(:group, :public) }
 
before do
project.request_access(access_requester)
group.request_access(access_requester)
let(:project) do
create(:empty_project, :public, :access_requestable) do |project|
project.request_access(access_requester)
end
end
let(:group) do
create(:group, :public, :access_requestable) do |group|
group.request_access(access_requester)
end
end
 
shared_examples 'a finder returning access requesters' do |method_name|
Loading
Loading
Loading
Loading
@@ -11,11 +11,11 @@ describe MembersHelper do
 
describe '#remove_member_message' do
let(:requester) { build(:user) }
let(:project) { create(:empty_project, :public) }
let(:project) { create(:empty_project, :public, :access_requestable) }
let(:project_member) { build(:project_member, project: project) }
let(:project_member_invite) { build(:project_member, project: project).tap { |m| m.generate_invite_token! } }
let(:project_member_request) { project.request_access(requester) }
let(:group) { create(:group) }
let(:group) { create(:group, :access_requestable) }
let(:group_member) { build(:group_member, group: group) }
let(:group_member_invite) { build(:group_member, group: group).tap { |m| m.generate_invite_token! } }
let(:group_member_request) { group.request_access(requester) }
Loading
Loading
@@ -32,10 +32,10 @@ describe MembersHelper do
 
describe '#remove_member_title' do
let(:requester) { build(:user) }
let(:project) { create(:empty_project, :public) }
let(:project) { create(:empty_project, :public, :access_requestable) }
let(:project_member) { build(:project_member, project: project) }
let(:project_member_request) { project.request_access(requester) }
let(:group) { create(:group) }
let(:group) { create(:group, :access_requestable) }
let(:group_member) { build(:group_member, group: group) }
let(:group_member_request) { group.request_access(requester) }
 
Loading
Loading
Loading
Loading
@@ -401,7 +401,12 @@ describe Notify do
 
describe 'project access requested' do
context 'for a project in a user namespace' do
let(:project) { create(:project, :public).tap { |p| p.team << [p.owner, :master, p.owner] } }
let(:project) do
create(:empty_project, :public, :access_requestable) do |project|
project.team << [project.owner, :master, project.owner]
end
end
let(:user) { create(:user) }
let(:project_member) do
project.request_access(user)
Loading
Loading
@@ -428,7 +433,7 @@ describe Notify do
context 'for a project in a group' do
let(:group_owner) { create(:user) }
let(:group) { create(:group).tap { |g| g.add_owner(group_owner) } }
let(:project) { create(:project, :public, namespace: group) }
let(:project) { create(:empty_project, :public, :access_requestable, namespace: group) }
let(:user) { create(:user) }
let(:project_member) do
project.request_access(user)
Loading
Loading
@@ -454,7 +459,7 @@ describe Notify do
end
 
describe 'project access denied' do
let(:project) { create(:project) }
let(:project) { create(:empty_project, :public, :access_requestable) }
let(:user) { create(:user) }
let(:project_member) do
project.request_access(user)
Loading
Loading
@@ -474,7 +479,7 @@ describe Notify do
end
 
describe 'project access changed' do
let(:project) { create(:project) }
let(:project) { create(:empty_project, :public, :access_requestable) }
let(:user) { create(:user) }
let(:project_member) { create(:project_member, project: project, user: user) }
subject { Notify.member_access_granted_email('project', project_member.id) }
Loading
Loading
@@ -685,7 +690,7 @@ describe Notify do
 
context 'for a group' do
describe 'group access requested' do
let(:group) { create(:group) }
let(:group) { create(:group, :public, :access_requestable) }
let(:user) { create(:user) }
let(:group_member) do
group.request_access(user)
Loading
Loading
Loading
Loading
@@ -3,7 +3,7 @@ require 'spec_helper'
describe AccessRequestable do
describe 'Group' do
describe '#request_access' do
let(:group) { create(:group, :public) }
let(:group) { create(:group, :public, :access_requestable) }
let(:user) { create(:user) }
 
it { expect(group.request_access(user)).to be_a(GroupMember) }
Loading
Loading
@@ -11,7 +11,7 @@ describe AccessRequestable do
end
 
describe '#access_requested?' do
let(:group) { create(:group, :public) }
let(:group) { create(:group, :public, :access_requestable) }
let(:user) { create(:user) }
 
before { group.request_access(user) }
Loading
Loading
@@ -22,14 +22,14 @@ describe AccessRequestable do
 
describe 'Project' do
describe '#request_access' do
let(:project) { create(:empty_project, :public) }
let(:project) { create(:empty_project, :public, :access_requestable) }
let(:user) { create(:user) }
 
it { expect(project.request_access(user)).to be_a(ProjectMember) }
end
 
describe '#access_requested?' do
let(:project) { create(:empty_project, :public) }
let(:project) { create(:empty_project, :public, :access_requestable) }
let(:user) { create(:user) }
 
before { project.request_access(user) }
Loading
Loading
require 'spec_helper'
 
describe Group, models: true do
let!(:group) { create(:group) }
let!(:group) { create(:group, :access_requestable) }
 
describe 'associations' do
it { is_expected.to have_many :projects }
Loading
Loading
Loading
Loading
@@ -57,7 +57,7 @@ describe Member, models: true do
 
describe 'Scopes & finders' do
before do
project = create(:empty_project, :public)
project = create(:empty_project, :public, :access_requestable)
group = create(:group)
@owner_user = create(:user).tap { |u| group.add_owner(u) }
@owner = group.members.find_by(user_id: @owner_user.id)
Loading
Loading
@@ -174,7 +174,7 @@ describe Member, models: true do
describe '.add_user' do
%w[project group].each do |source_type|
context "when source is a #{source_type}" do
let!(:source) { create(source_type, :public) }
let!(:source) { create(source_type, :public, :access_requestable) }
let!(:user) { create(:user) }
let!(:admin) { create(:admin) }
 
Loading
Loading
Loading
Loading
@@ -76,7 +76,7 @@ describe Project, models: true do
end
 
describe '#members & #requesters' do
let(:project) { create(:project, :public) }
let(:project) { create(:empty_project, :public, :access_requestable) }
let(:requester) { create(:user) }
let(:developer) { create(:user) }
before do
Loading
Loading
Loading
Loading
@@ -137,7 +137,7 @@ describe ProjectTeam, models: true do
 
describe '#find_member' do
context 'personal project' do
let(:project) { create(:empty_project, :public) }
let(:project) { create(:empty_project, :public, :access_requestable) }
let(:requester) { create(:user) }
 
before do
Loading
Loading
@@ -155,7 +155,7 @@ describe ProjectTeam, models: true do
end
 
context 'group project' do
let(:group) { create(:group) }
let(:group) { create(:group, :access_requestable) }
let(:project) { create(:empty_project, group: group) }
let(:requester) { create(:user) }
 
Loading
Loading
@@ -200,7 +200,7 @@ describe ProjectTeam, models: true do
let(:requester) { create(:user) }
 
context 'personal project' do
let(:project) { create(:empty_project, :public) }
let(:project) { create(:empty_project, :public, :access_requestable) }
 
context 'when project is not shared with group' do
before do
Loading
Loading
@@ -243,7 +243,7 @@ describe ProjectTeam, models: true do
end
 
context 'group project' do
let(:group) { create(:group) }
let(:group) { create(:group, :access_requestable) }
let(:project) { create(:empty_project, group: group) }
 
before do
Loading
Loading
Loading
Loading
@@ -37,7 +37,7 @@ describe User, models: true do
describe '#group_members' do
it 'does not include group memberships for which user is a requester' do
user = create(:user)
group = create(:group, :public)
group = create(:group, :public, :access_requestable)
group.request_access(user)
 
expect(user.group_members).to be_empty
Loading
Loading
@@ -47,7 +47,7 @@ describe User, models: true do
describe '#project_members' do
it 'does not include project memberships for which user is a requester' do
user = create(:user)
project = create(:project, :public)
project = create(:project, :public, :access_requestable)
project.request_access(user)
 
expect(user.project_members).to be_empty
Loading
Loading
Loading
Loading
@@ -9,19 +9,19 @@ describe API::AccessRequests, api: true do
let(:stranger) { create(:user) }
 
let(:project) do
project = create(:project, :public, creator_id: master.id, namespace: master.namespace)
project.team << [developer, :developer]
project.team << [master, :master]
project.request_access(access_requester)
project
create(:project, :public, :access_requestable, creator_id: master.id, namespace: master.namespace) do |project|
project.team << [developer, :developer]
project.team << [master, :master]
project.request_access(access_requester)
end
end
 
let(:group) do
group = create(:group, :public)
group.add_developer(developer)
group.add_owner(master)
group.request_access(access_requester)
group
create(:group, :public, :access_requestable) do |group|
group.add_developer(developer)
group.add_owner(master)
group.request_access(access_requester)
end
end
 
shared_examples 'GET /:sources/:id/access_requests' do |source_type|
Loading
Loading
@@ -89,7 +89,7 @@ describe API::AccessRequests, api: true do
context 'when authenticated as a stranger' do
context "when access request is disabled for the #{source_type}" do
before do
source.update(request_access_enabled: false)
source.update_attributes(request_access_enabled: false)
end
 
it 'returns 403' do
Loading
Loading
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