summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOswaldo Ferreira <oswaldo@gitlab.com>2017-05-10 20:29:00 -0300
committerFatih Acet <acetfatih@gmail.com>2017-05-16 15:11:55 +0300
commit3f6121f2f57fab49326a2082a14dae249a91ac9d (patch)
treeaf64f4bf66f9e25509a3f76f5a840e72116e5f08
parentca3d868c3731018e18c4b5931d5a37466a16fa6a (diff)
downloadgitlab-ce-3f6121f2f57fab49326a2082a14dae249a91ac9d.tar.gz
Returns new_blob_path only when user can push_code to project
-rw-r--r--app/serializers/merge_request_entity.rb8
-rw-r--r--spec/serializers/merge_request_entity_spec.rb17
2 files changed, 22 insertions, 3 deletions
diff --git a/app/serializers/merge_request_entity.rb b/app/serializers/merge_request_entity.rb
index d31057c030c..a49f4d834cd 100644
--- a/app/serializers/merge_request_entity.rb
+++ b/app/serializers/merge_request_entity.rb
@@ -98,9 +98,11 @@ class MergeRequestEntity < IssuableEntity
end
expose :new_blob_path do |merge_request|
- namespace_project_new_blob_path(merge_request.project.namespace,
- merge_request.project,
- merge_request.source_branch)
+ if can?(current_user, :push_code, merge_request.project)
+ namespace_project_new_blob_path(merge_request.project.namespace,
+ merge_request.project,
+ merge_request.source_branch)
+ end
end
expose :conflict_resolution_path do |merge_request|
diff --git a/spec/serializers/merge_request_entity_spec.rb b/spec/serializers/merge_request_entity_spec.rb
index bb6e83ae4bd..b75c73e78c2 100644
--- a/spec/serializers/merge_request_entity_spec.rb
+++ b/spec/serializers/merge_request_entity_spec.rb
@@ -65,6 +65,23 @@ describe MergeRequestEntity do
.to eq(resource.merge_commit_message(include_description: true))
end
+ describe 'new_blob_path' do
+ context 'when user can push to project' do
+ it 'returns path' do
+ project.add_developer(user)
+
+ expect(subject[:new_blob_path])
+ .to eq("/#{resource.project.full_path}/new/#{resource.source_branch}")
+ end
+ end
+
+ context 'when user cannot push to project' do
+ it 'returns nil' do
+ expect(subject[:new_blob_path]).to be_nil
+ end
+ end
+ end
+
describe 'diff_head_sha' do
before do
allow(resource).to receive(:diff_head_sha) { 'sha' }