diff options
author | Valery Sizov <vsv2711@gmail.com> | 2015-10-14 20:38:54 +0300 |
---|---|---|
committer | Valery Sizov <vsv2711@gmail.com> | 2015-10-14 20:38:54 +0300 |
commit | dc9100d1b21e8c76aaa3899411e4978c319b743d (patch) | |
tree | 87962d35b5767f0691eaf422b46063c5d29c8dc7 /app/models | |
parent | b83a18a55cd03cfa6d0d631b8d4567ae29b5fe26 (diff) |
Invalidate stored service password if the endpoint URL is changed. STEP 2
Diffstat (limited to 'app/models')
-rw-r--r-- | app/models/project_services/bamboo_service.rb | 2 | ||||
-rw-r--r-- | app/models/project_services/teamcity_service.rb | 2 | ||||
-rw-r--r-- | app/models/service.rb | 11 |
3 files changed, 9 insertions, 6 deletions
diff --git a/app/models/project_services/bamboo_service.rb b/app/models/project_services/bamboo_service.rb index 5f5255ab487..644f2702889 100644 --- a/app/models/project_services/bamboo_service.rb +++ b/app/models/project_services/bamboo_service.rb @@ -48,7 +48,7 @@ class BambooService < CiService end def reset_password - if prop_updated?(:bamboo_url) + if prop_updated?(:bamboo_url) && !prop_updated?(:password) self.password = nil end end diff --git a/app/models/project_services/teamcity_service.rb b/app/models/project_services/teamcity_service.rb index fb11cad352e..3ff02ee75e2 100644 --- a/app/models/project_services/teamcity_service.rb +++ b/app/models/project_services/teamcity_service.rb @@ -45,7 +45,7 @@ class TeamcityService < CiService end def reset_password - if prop_updated?(:teamcity_url) + if prop_updated?(:teamcity_url) && !prop_updated?(:password) self.password = nil end end diff --git a/app/models/service.rb b/app/models/service.rb index 7e845d565b1..af5ce1635a6 100644 --- a/app/models/service.rb +++ b/app/models/service.rb @@ -110,7 +110,12 @@ class Service < ActiveRecord::Base properties['#{arg}'] end + def #{arg}_was + @#{arg}_was + end + def #{arg}=(value) + @#{arg}_was = self.properties['#{arg}'] self.properties['#{arg}'] = value end } @@ -120,10 +125,8 @@ class Service < ActiveRecord::Base # ActiveRecord does not provide a mechanism to track changes in serialized keys. # This is why we need to perform extra query to do it mannually. def prop_updated?(prop_name) - relation_name = self.type.underscore - previous_value = project.send(relation_name).send(prop_name) - return false if previous_value.nil? - previous_value != send(prop_name) + return false if send("#{prop_name}_was").nil? + send("#{prop_name}_was") != send(prop_name) end def async_execute(data) |