From 25bde28d13cdffda8efa4ecae00985085e6aa565 Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Wed, 29 Feb 2012 23:04:09 +0200 Subject: [PATCH] Fixed tests. removed delegate to id --- app/models/key.rb | 2 +- app/models/project.rb | 2 +- app/models/users_project.rb | 2 +- app/workers/post_receive.rb | 3 +++ spec/models/project_hooks_spec.rb | 20 +++++++++++++------- spec/workers/post_receive_spec.rb | 11 ++++++++--- 6 files changed, 27 insertions(+), 13 deletions(-) diff --git a/app/models/key.rb b/app/models/key.rb index 6597d7e5..4114e526 100644 --- a/app/models/key.rb +++ b/app/models/key.rb @@ -14,7 +14,7 @@ class Key < ActiveRecord::Base before_save :set_identifier after_save :update_repository after_destroy :repository_delete_key - delegate :id, :name, :email, :to => :user, :prefix => true + delegate :name, :email, :to => :user, :prefix => true def set_identifier if is_deploy_key diff --git a/app/models/project.rb b/app/models/project.rb index c1662918..c9b6f73b 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -117,7 +117,7 @@ class Project < ActiveRecord::Base before: oldrev, after: newrev, ref: ref, - user_id: key.user_id, + user_id: key.user.id, user_name: key.user_name, repository: { name: name, diff --git a/app/models/users_project.rb b/app/models/users_project.rb index ebbbf866..726a85ae 100644 --- a/app/models/users_project.rb +++ b/app/models/users_project.rb @@ -16,7 +16,7 @@ class UsersProject < ActiveRecord::Base validates_presence_of :user_id validates_presence_of :project_id - delegate :id, :name, :email, :to => :user, :prefix => true + delegate :name, :email, :to => :user, :prefix => true def self.bulk_import(project, user_ids, project_access, repo_access) UsersProject.transaction do diff --git a/app/workers/post_receive.rb b/app/workers/post_receive.rb index 9da1cde1..d74f10a1 100644 --- a/app/workers/post_receive.rb +++ b/app/workers/post_receive.rb @@ -5,6 +5,9 @@ class PostReceive project = Project.find_by_path(reponame) return false if project.nil? + # Ignore push from non-gitlab users + return false unless Key.find_by_identifier(author_key_id) + project.observe_push(oldrev, newrev, ref, author_key_id) project.execute_web_hooks(oldrev, newrev, ref, author_key_id) end diff --git a/spec/models/project_hooks_spec.rb b/spec/models/project_hooks_spec.rb index 841c85ba..5a03b01f 100644 --- a/spec/models/project_hooks_spec.rb +++ b/spec/models/project_hooks_spec.rb @@ -2,17 +2,21 @@ require 'spec_helper' describe Project, "Hooks" do let(:project) { Factory :project } + before do + @key = Factory :key, :user => project.owner + @key_id = @key.identifier + end describe "Post Receive Event" do it "should create push event" do oldrev, newrev, ref = '00000000000000000000000000000000', 'newrev', 'refs/heads/master' - project.observe_push(oldrev, newrev, ref) + project.observe_push(oldrev, newrev, ref, @key_id) event = Event.last event.should_not be_nil event.project.should == project event.action.should == Event::Pushed - event.data == project.web_hook_data(oldrev, newrev, ref) + event.data == project.web_hook_data(oldrev, newrev, ref, @key_id) end end @@ -20,7 +24,7 @@ describe Project, "Hooks" do context "with no web hooks" do it "raises no errors" do lambda { - project.execute_web_hooks('oldrev', 'newrev', 'ref') + project.execute_web_hooks('oldrev', 'newrev', 'ref', @key_id) }.should_not raise_error end end @@ -36,7 +40,7 @@ describe Project, "Hooks" do @webhook.should_receive(:execute).once @webhook_2.should_receive(:execute).once - project.execute_web_hooks('oldrev', 'newrev', 'refs/heads/master') + project.execute_web_hooks('oldrev', 'newrev', 'refs/heads/master', @key_id) end end @@ -48,12 +52,12 @@ describe Project, "Hooks" do it "when pushing a branch for the first time" do @webhook.should_not_receive(:execute) - project.execute_web_hooks('00000000000000000000000000000000', 'newrev', 'refs/heads/master') + project.execute_web_hooks('00000000000000000000000000000000', 'newrev', 'refs/heads/master', @key_id) end it "when pushing tags" do @webhook.should_not_receive(:execute) - project.execute_web_hooks('oldrev', 'newrev', 'refs/tags/v1.0.0') + project.execute_web_hooks('oldrev', 'newrev', 'refs/tags/v1.0.0', @key_id) end end @@ -69,7 +73,7 @@ describe Project, "Hooks" do # Fill nil/empty attributes project.description = "This is a description" - @data = project.web_hook_data(@oldrev, @newrev, @ref) + @data = project.web_hook_data(@oldrev, @newrev, @ref, @key_id) end subject { @data } @@ -77,6 +81,8 @@ describe Project, "Hooks" do it { should include(before: @oldrev) } it { should include(after: @newrev) } it { should include(ref: @ref) } + it { should include(user_id: project.owner.id) } + it { should include(user_name: project.owner.name) } context "with repository data" do subject { @data[:repository] } diff --git a/spec/workers/post_receive_spec.rb b/spec/workers/post_receive_spec.rb index 500a6998..c28273d5 100644 --- a/spec/workers/post_receive_spec.rb +++ b/spec/workers/post_receive_spec.rb @@ -10,17 +10,22 @@ describe PostReceive do context "web hooks" do let(:project) { Factory :project } + before do + @key = Factory :key, :user => project.owner + @key_id = @key.identifier + end it "it retrieves the correct project" do Project.should_receive(:find_by_path).with(project.path) - PostReceive.perform(project.path, 'sha-old', 'sha-new', 'refs/heads/master') + Key.should_receive(:find_by_identifier).with(project.path) + PostReceive.perform(project.path, 'sha-old', 'sha-new', 'refs/heads/master', @key_id) end it "asks the project to execute web hooks" do Project.stub(find_by_path: project) - project.should_receive(:execute_web_hooks).with('sha-old', 'sha-new', 'refs/heads/master') + project.should_receive(:execute_web_hooks).with('sha-old', 'sha-new', 'refs/heads/master', @key_id) - PostReceive.perform(project.path, 'sha-old', 'sha-new', 'refs/heads/master') + PostReceive.perform(project.path, 'sha-old', 'sha-new', 'refs/heads/master', @key_id) end end end