diff options
author | Yorick Peterse <yorickpeterse@gmail.com> | 2018-03-02 23:41:00 +0300 |
---|---|---|
committer | Ian Baum <ibaum@gitlab.com> | 2018-03-07 01:24:17 +0300 |
commit | 5cdc15b9121b42d6b28c9083e340a3e1f74870c3 (patch) | |
tree | a6394cc4beddee9a406c2d3298bc6bd5c87a77dc /spec | |
parent | 6b94f83df2fd467a1141e1be841998ed01f1c2ad (diff) |
Merge branch '42877-fix-visibility-change-performance' into 'master'
Revert Project.public_or_visible_to_user changes but apply change to SnippetsFinder
Closes #42877
See merge request gitlab-org/gitlab-ce!17476
Diffstat (limited to 'spec')
-rw-r--r-- | spec/models/user_spec.rb | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index dd1bfba1421..970a5ed056e 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -1604,6 +1604,32 @@ describe User do it { is_expected.to eq([private_group]) } end + describe '#authorizations_for_projects' do + let!(:user) { create(:user) } + subject { Project.where("EXISTS (?)", user.authorizations_for_projects) } + + it 'includes projects that belong to a user, but no other projects' do + owned = create(:project, :private, namespace: user.namespace) + member = create(:project, :private).tap { |p| p.add_master(user) } + other = create(:project) + + expect(subject).to include(owned) + expect(subject).to include(member) + expect(subject).not_to include(other) + end + + it 'includes projects a user has access to, but no other projects' do + other_user = create(:user) + accessible = create(:project, :private, namespace: other_user.namespace) do |project| + project.add_developer(user) + end + other = create(:project) + + expect(subject).to include(accessible) + expect(subject).not_to include(other) + end + end + describe '#authorized_projects', :delete do context 'with a minimum access level' do it 'includes projects for which the user is an owner' do |