Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/models/key.rb24
-rw-r--r--app/observers/key_observer.rb19
-rw-r--r--config/application.rb1
-rw-r--r--spec/models/key_spec.rb14
-rw-r--r--spec/observers/key_observer_spec.rb23
5 files changed, 38 insertions, 43 deletions
diff --git a/app/models/key.rb b/app/models/key.rb
index 29a76f53f3d..4202d79a956 100644
--- a/app/models/key.rb
+++ b/app/models/key.rb
@@ -29,6 +29,10 @@ class Key < ActiveRecord::Base
delegate :name, :email, to: :user, prefix: true
+ after_create :add_to_shell
+ after_create :notify_user
+ after_destroy :remove_from_shell
+
def strip_white_space
self.key = key.strip unless key.blank?
end
@@ -42,6 +46,26 @@ class Key < ActiveRecord::Base
"key-#{id}"
end
+ def add_to_shell
+ GitlabShellWorker.perform_async(
+ :add_key,
+ shell_id,
+ key
+ )
+ end
+
+ def notify_user
+ NotificationService.new.new_key(self)
+ end
+
+ def remove_from_shell
+ GitlabShellWorker.perform_async(
+ :remove_key,
+ shell_id,
+ key,
+ )
+ end
+
private
def generate_fingerpint
diff --git a/app/observers/key_observer.rb b/app/observers/key_observer.rb
deleted file mode 100644
index c013594e787..00000000000
--- a/app/observers/key_observer.rb
+++ /dev/null
@@ -1,19 +0,0 @@
-class KeyObserver < BaseObserver
- def after_create(key)
- GitlabShellWorker.perform_async(
- :add_key,
- key.shell_id,
- key.key
- )
-
- notification.new_key(key)
- end
-
- def after_destroy(key)
- GitlabShellWorker.perform_async(
- :remove_key,
- key.shell_id,
- key.key,
- )
- end
-end
diff --git a/config/application.rb b/config/application.rb
index 3933c046af0..439f98ff052 100644
--- a/config/application.rb
+++ b/config/application.rb
@@ -21,7 +21,6 @@ module Gitlab
# Activate observers that should always be running.
config.active_record.observers = :milestone_observer,
:project_activity_cache_observer,
- :key_observer,
:merge_request_observer,
:note_observer,
:project_observer,
diff --git a/spec/models/key_spec.rb b/spec/models/key_spec.rb
index 9c872c02a53..c1c6c2f31b7 100644
--- a/spec/models/key_spec.rb
+++ b/spec/models/key_spec.rb
@@ -68,4 +68,18 @@ describe Key do
build(:invalid_key).should_not be_valid
end
end
+
+ context 'callbacks' do
+ it 'should add new key to authorized_file' do
+ @key = build(:personal_key, id: 7)
+ GitlabShellWorker.should_receive(:perform_async).with(:add_key, @key.shell_id, @key.key)
+ @key.save
+ end
+
+ it 'should remove key from authorized_file' do
+ @key = create(:personal_key)
+ GitlabShellWorker.should_receive(:perform_async).with(:remove_key, @key.shell_id, @key.key)
+ @key.destroy
+ end
+ end
end
diff --git a/spec/observers/key_observer_spec.rb b/spec/observers/key_observer_spec.rb
deleted file mode 100644
index b304bf1fcb7..00000000000
--- a/spec/observers/key_observer_spec.rb
+++ /dev/null
@@ -1,23 +0,0 @@
-require 'spec_helper'
-
-describe KeyObserver do
- before do
- @key = create(:personal_key)
-
- @observer = KeyObserver.instance
- end
-
- context :after_create do
- it do
- GitlabShellWorker.should_receive(:perform_async).with(:add_key, @key.shell_id, @key.key)
- @observer.after_create(@key)
- end
- end
-
- context :after_destroy do
- it do
- GitlabShellWorker.should_receive(:perform_async).with(:remove_key, @key.shell_id, @key.key)
- @observer.after_destroy(@key)
- end
- end
-end