From 31d0feeae2dc857ece9bea687e9dfb393d3e3b55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20D=C3=A1vila?= Date: Sat, 30 Apr 2016 18:48:18 -0500 Subject: Delete ProjectImportData record only if Project is not a mirror. This fix ensure we always use the full import URL when syncing the mirror. --- app/models/project.rb | 2 +- spec/models/project_spec.rb | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/app/models/project.rb b/app/models/project.rb index af62e8ecd90..db6ade8ffdb 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -405,7 +405,7 @@ class Project < ActiveRecord::Base ProjectCacheWorker.perform_async(self.id) - self.import_data.destroy if self.import_data + self.import_data.destroy if !mirror? && import_data end def import_url=(value) diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb index 5b1cf71337e..4b06e0028a9 100644 --- a/spec/models/project_spec.rb +++ b/spec/models/project_spec.rb @@ -812,4 +812,27 @@ describe Project, models: true do expect(project.protected_branch?('foo')).to eq(false) end end + + describe 'handling import URL' do + context 'when project is a mirror' do + it 'returns the full URL' do + project = create(:project, :mirror, import_url: 'http://user:pass@test.com') + + project.import_finish + + expect(project.reload.import_url).to eq('http://user:pass@test.com') + end + end + + context 'when project is not a mirror' do + it 'returns the sanitized URL' do + project = create(:project, import_status: 'started', import_url: 'http://user:pass@test.com') + + project.import_finish + + expect(project.reload.import_url).to eq('http://test.com') + end + end + end + end -- cgit v1.2.1