summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSemyon Pupkov <mail@semyonpupkov.com>2016-11-16 00:16:45 +0500
committerSemyon Pupkov <mail@semyonpupkov.com>2016-11-16 00:59:09 +0500
commit34a86120ed52b5e77ef2cd51a60bed1208671639 (patch)
treeb569a92807fb203ec3f1f8b3d1ad0564e3fd8c74
parentd5cd0d67f1504d773500fd1605a05ed6c1320cb3 (diff)
downloadgitlab-ce-34a86120ed52b5e77ef2cd51a60bed1208671639.tar.gz
Use setter for key instead AR callback
ref: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/6763
-rw-r--r--app/models/key.rb7
-rw-r--r--changelogs/unreleased/setter-for-key.yml4
-rw-r--r--spec/models/key_spec.rb10
3 files changed, 18 insertions, 3 deletions
diff --git a/app/models/key.rb b/app/models/key.rb
index 568a60b8af3..ff8dda2dc89 100644
--- a/app/models/key.rb
+++ b/app/models/key.rb
@@ -6,7 +6,7 @@ class Key < ActiveRecord::Base
belongs_to :user
- before_validation :strip_white_space, :generate_fingerprint
+ before_validation :generate_fingerprint
validates :title, presence: true, length: { within: 0..255 }
validates :key, presence: true, length: { within: 0..5000 }, format: { with: /\A(ssh|ecdsa)-.*\Z/ }
@@ -21,8 +21,9 @@ class Key < ActiveRecord::Base
after_destroy :remove_from_shell
after_destroy :post_destroy_hook
- def strip_white_space
- self.key = key.strip unless key.blank?
+ def key=(value)
+ value.strip! unless value.blank?
+ write_attribute(:key, value)
end
def publishable_key
diff --git a/changelogs/unreleased/setter-for-key.yml b/changelogs/unreleased/setter-for-key.yml
new file mode 100644
index 00000000000..15167904ed5
--- /dev/null
+++ b/changelogs/unreleased/setter-for-key.yml
@@ -0,0 +1,4 @@
+---
+title: Use setter for key instead AR callback
+merge_request: 7488
+author: Semyon Pupkov
diff --git a/spec/models/key_spec.rb b/spec/models/key_spec.rb
index 7fc6ed1dd54..ba9cdf7dddb 100644
--- a/spec/models/key_spec.rb
+++ b/spec/models/key_spec.rb
@@ -82,4 +82,14 @@ describe Key, models: true do
@key.destroy
end
end
+
+ describe '#key=' do
+ let(:valid_key) do
+ "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAiPWx6WM4lhHNedGfBpPJNPpZ7yKu+dnn1SJejgt4596k6YjzGGphH2TUxwKzxcKDKKezwkpfnxPkSMkuEspGRt/aZZ9wa++Oi7Qkr8prgHc4soW6NUlfDzpvZK2H5E7eQaSeP3SAwGmQKUFHCddNaP0L+hM7zhFNzjFvpaMgJw0= dummy@gitlab.com"
+ end
+
+ it 'strips white spaces' do
+ expect(described_class.new(key: " #{valid_key} ").key).to eq(valid_key)
+ end
+ end
end