summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Speicher <robert@gitlab.com>2016-10-04 08:51:24 +0000
committerRémy Coutable <remy@rymai.me>2016-10-05 16:47:56 +0200
commit351025ec948eb1d4153e4766a600926c8c53f497 (patch)
treef7f54b3d31ae90034c2ddfb96a1dc33a735ff0a5
parent1803bc267d8cd0dd38d79597664b6eb7ee2a948b (diff)
downloadgitlab-ce-351025ec948eb1d4153e4766a600926c8c53f497.tar.gz
Merge branch 'fix/import-service-issues' into 'master'
Fix issues importing services via Import/Export Prevents errors when initialising services that do not have any properties set yet - case that could happen when importing projects. Fixes https://gitlab.com/gitlab-org/gitlab-ce/issues/22891 See merge request !6667 Signed-off-by: Rémy Coutable <remy@rymai.me>
-rw-r--r--CHANGELOG1
-rw-r--r--app/models/service.rb1
-rw-r--r--spec/models/service_spec.rb17
3 files changed, 19 insertions, 0 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 680de0ad439..ac2322b432f 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -8,6 +8,7 @@ v 8.12.4 (unreleased)
- Fix type mismatch bug when closing Jira issue. !6619
- Fix lint-doc error. !6623
- Skip wiki creation when GitHub project has wiki enabled. !6665
+ - Fix issues importing services via Import/Export. !6667
- Restrict failed login attempts for users with 2FA enabled. !6668
- Fix failed project deletion when feature visibility set to private. !6688
- Prevent claiming associated model IDs via import.
diff --git a/app/models/service.rb b/app/models/service.rb
index 80de7175565..66c804f2b06 100644
--- a/app/models/service.rb
+++ b/app/models/service.rb
@@ -136,6 +136,7 @@ class Service < ActiveRecord::Base
end
def #{arg}=(value)
+ self.properties ||= {}
updated_properties['#{arg}'] = #{arg} unless #{arg}_changed?
self.properties['#{arg}'] = value
end
diff --git a/spec/models/service_spec.rb b/spec/models/service_spec.rb
index 05056a4bb47..ed1bc9271ae 100644
--- a/spec/models/service_spec.rb
+++ b/spec/models/service_spec.rb
@@ -203,6 +203,23 @@ describe Service, models: true do
end
end
+ describe 'initialize service with no properties' do
+ let(:service) do
+ GitlabIssueTrackerService.create(
+ project: create(:project),
+ title: 'random title'
+ )
+ end
+
+ it 'does not raise error' do
+ expect { service }.not_to raise_error
+ end
+
+ it 'creates the properties' do
+ expect(service.properties).to eq({ "title" => "random title" })
+ end
+ end
+
describe "callbacks" do
let(:project) { create(:project) }
let!(:service) do