From 489fa5d72631505873b8c33f3a2bbd5919330a92 Mon Sep 17 00:00:00 2001 From: Izaak Alpert Date: Mon, 3 Jun 2013 16:20:50 -0400 Subject: MR on Fork multiple fixes -Disable observers post test run -Allow db:seed_fu RAILS_ENV=test to be run more than once without error -fix diffs_in_between, was passing in the default_options for grit, but grit in this case doesn't take options, fixed the test to actually fail if the incorrect diffs are returned -make notes/commits render against proper project -MR discussion file links should reference note's project -Added tests for commit links on edit merge request -fixes edit issues (canceling an edited mr, updating an edited mr) -updates tests with checks for source code updates -still forked_merge_requests.feature (project_forked_merge_requests) test not passing (commented out -- "stable" not being set) MR API: error on bad target_project -If the target project id is specified and it is not the same as the project the request is being made on (the source), and the it isn't a fork of that project, error out, otherwise use it as the target -Fixes some busted (but hidden) test cases Conflicts: app/views/merge_requests/show/_diffs.html.haml spec/features/notes_on_merge_requests_spec.rb Change-Id: I20e595c156d0e8a63048baaead7be6330c738a05 --- lib/api/merge_requests.rb | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'lib/api') diff --git a/lib/api/merge_requests.rb b/lib/api/merge_requests.rb index 72fdb774fc1..f9fb9cb8c13 100644 --- a/lib/api/merge_requests.rb +++ b/lib/api/merge_requests.rb @@ -68,10 +68,13 @@ module API merge_request = user_project.merge_requests.new(attrs) merge_request.author = current_user merge_request.source_project = user_project - if !attrs[:target_project_id].nil? && user_project.forked? && user_project.forked_from_project.id.to_s == attrs[:target_project_id] + target_project_id = attrs[:target_project_id] + if !target_project_id.nil? && user_project.forked? && user_project.forked_from_project.id.to_s == target_project_id merge_request.target_project = Project.find_by_id(attrs[:target_project_id]) - elsif attrs[:target_project].nil? + elsif target_project_id.nil? || target_project_id == user_project.id.to_s merge_request.target_project = user_project + elsif !target_project_id.nil? + render_api_error!('(Bad Request) Specified target project that is not the source project, or the source fork of the project.', 400) end if merge_request.save merge_request.reload_code -- cgit v1.2.1