From ad6ff2238045d6b7873144eb302aa953c9f1fc66 Mon Sep 17 00:00:00 2001 From: James Lopez Date: Tue, 12 Jul 2016 16:21:28 +0200 Subject: fixes a few issues to do with import_url not being saved correctly for imports. This should prevent the import_data to be created when it should not and output an error properly validating before creating it. --- app/models/project.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'app/models') diff --git a/app/models/project.rb b/app/models/project.rb index a66b750cd48..57ea948390b 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -162,7 +162,7 @@ class Project < ActiveRecord::Base validates :namespace, presence: true validates_uniqueness_of :name, scope: :namespace_id validates_uniqueness_of :path, scope: :namespace_id - validates :import_url, addressable_url: true, if: :external_import? + validates :import_url, addressable_url: true, if: :import_url validates :star_count, numericality: { greater_than_or_equal_to: 0 } validate :check_limit, on: :create validate :avatar_type, @@ -464,8 +464,8 @@ class Project < ActiveRecord::Base return super(value) unless Gitlab::UrlSanitizer.valid?(value) import_url = Gitlab::UrlSanitizer.new(value) - create_or_update_import_data(credentials: import_url.credentials) super(import_url.sanitized_url) + create_or_update_import_data(credentials: import_url.credentials) if valid? end def import_url -- cgit v1.2.1 From 9b234825e45884d24d78de81f5934ed765a27302 Mon Sep 17 00:00:00 2001 From: James Lopez Date: Wed, 13 Jul 2016 09:26:40 +0200 Subject: fix specs --- app/models/project.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app/models') diff --git a/app/models/project.rb b/app/models/project.rb index 57ea948390b..f85c6a65858 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -465,7 +465,7 @@ class Project < ActiveRecord::Base import_url = Gitlab::UrlSanitizer.new(value) super(import_url.sanitized_url) - create_or_update_import_data(credentials: import_url.credentials) if valid? + create_or_update_import_data(credentials: import_url.credentials) unless errors.messages[:import_url] end def import_url -- cgit v1.2.1 From c607b1c941fbfaca22dd78dae2fd67d873b56828 Mon Sep 17 00:00:00 2001 From: James Lopez Date: Wed, 13 Jul 2016 10:40:03 +0200 Subject: fix more specs --- app/models/project.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'app/models') diff --git a/app/models/project.rb b/app/models/project.rb index f85c6a65858..3306fb86282 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -465,7 +465,7 @@ class Project < ActiveRecord::Base import_url = Gitlab::UrlSanitizer.new(value) super(import_url.sanitized_url) - create_or_update_import_data(credentials: import_url.credentials) unless errors.messages[:import_url] + create_or_update_import_data(credentials: import_url.credentials) if valid_import_url? end def import_url @@ -477,6 +477,10 @@ class Project < ActiveRecord::Base end end + def valid_import_url? + valid? || errors.messages[:import_url].nil? + end + def create_or_update_import_data(data: nil, credentials: nil) project_import_data = import_data || build_import_data if data -- cgit v1.2.1 From dd63955032aeebfa76b774b008820879e7d37353 Mon Sep 17 00:00:00 2001 From: James Lopez Date: Wed, 13 Jul 2016 13:57:43 +0200 Subject: updated create_or_update_import_data to use guard clause --- app/models/project.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'app/models') diff --git a/app/models/project.rb b/app/models/project.rb index 72c4f591420..7dc9f396e9e 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -465,7 +465,7 @@ class Project < ActiveRecord::Base import_url = Gitlab::UrlSanitizer.new(value) super(import_url.sanitized_url) - create_or_update_import_data(credentials: import_url.credentials) if valid_import_url? + create_or_update_import_data(credentials: import_url.credentials) end def import_url @@ -482,6 +482,8 @@ class Project < ActiveRecord::Base end def create_or_update_import_data(data: nil, credentials: nil) + return unless valid_import_url? + project_import_data = import_data || build_import_data if data project_import_data.data ||= {} -- cgit v1.2.1