57 lines
1.6 KiB
Ruby
57 lines
1.6 KiB
Ruby
# 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
|