summaryrefslogtreecommitdiff
path: root/spec/features/merge_request/user_tries_to_access_private_project_info_through_new_mr_spec.rb
blob: 1ebe9e2e409153cd2d44af3bbb1c6e9f2e4de1fc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# frozen_string_literal: true

require 'spec_helper'

describe 'Merge Request > User tries to access private project information through the new mr page' do
  let(:current_user) { create(:user) }
  let(:private_project) do
    create(:project, :public, :repository,
           path: 'nothing-to-see-here',
           name: 'nothing to see here',
           repository_access_level: ProjectFeature::PRIVATE)
  end
  let(:owned_project) do
    create(:project, :public, :repository,
           namespace: current_user.namespace,
           creator: current_user)
  end

  context 'when the user enters the querystring info for the other project' do
    let(:mr_path) do
      project_new_merge_request_diffs_path(
        owned_project,
        merge_request: {
          source_project_id: private_project.id,
          source_branch: 'feature'
        }
      )
    end

    before do
      sign_in current_user
      visit mr_path
    end

    it "does not mention the project the user can't see the repo of" do
      expect(page).not_to have_content('nothing-to-see-here')
    end

    context 'when the user enters label information from the private project in the querystring' do
      let(:inaccessible_label) { create(:label, project: private_project) }
      let(:mr_path) do
        project_new_merge_request_path(
          owned_project,
          merge_request: {
            label_ids: [inaccessible_label.id],
            source_branch: 'feature'
          }
        )
      end

      it 'does not expose the label name' do
        expect(page).not_to have_content(inaccessible_label.name)
      end
    end
  end
end