summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGrzegorz Bizon <grzesiek.bizon@gmail.com>2015-12-23 09:29:04 +0100
committerGrzegorz Bizon <grzesiek.bizon@gmail.com>2015-12-23 09:37:01 +0100
commit76f7e80455f1f5b5b052c7d8caf519713b016eea (patch)
tree2d2039982ce4727a8966c4a4984c84012b830e60
parent3b61dc47ec377b857b66f9b2a81a183276163f4e (diff)
downloadgitlab-ce-76f7e80455f1f5b5b052c7d8caf519713b016eea.tar.gz
Fix method that ensures authentication token
Until now, `ensure_#{token_filed_name}` method didn't persist new token in database. This closes #4235.
-rw-r--r--app/models/concerns/token_authenticatable.rb8
-rw-r--r--spec/models/concerns/token_authenticatable_spec.rb4
2 files changed, 6 insertions, 6 deletions
diff --git a/app/models/concerns/token_authenticatable.rb b/app/models/concerns/token_authenticatable.rb
index 488ff8c31b7..e84c5804cf4 100644
--- a/app/models/concerns/token_authenticatable.rb
+++ b/app/models/concerns/token_authenticatable.rb
@@ -17,12 +17,8 @@ module TokenAuthenticatable
end
define_method("ensure_#{token_field}") do
- current_token = read_attribute(token_field)
- if current_token.blank?
- write_attribute(token_field, generate_token_for(token_field))
- else
- current_token
- end
+ send("reset_#{token_field}!") if read_attribute(token_field).blank?
+ read_attribute(token_field)
end
define_method("reset_#{token_field}!") do
diff --git a/spec/models/concerns/token_authenticatable_spec.rb b/spec/models/concerns/token_authenticatable_spec.rb
index a9b0b64e5de..07ec3a80e60 100644
--- a/spec/models/concerns/token_authenticatable_spec.rb
+++ b/spec/models/concerns/token_authenticatable_spec.rb
@@ -35,6 +35,10 @@ describe ApplicationSetting, 'TokenAuthenticatable' do
it { is_expected.to be_a String }
it { is_expected.to_not be_blank }
+
+ it 'should persist new token' do
+ expect(subject).to eq described_class.current[token_field]
+ end
end
end