Commit 86bd11cbd8796adc31849aa02317604abb1576e2
1 parent
655418be
Exists in
master
and in
4 other branches
System Hooks: rspec
Showing
4 changed files
with
133 additions
and
3 deletions
Show diff stats
app/controllers/admin/hooks_controller.rb
@@ -28,9 +28,15 @@ class Admin::HooksController < ApplicationController | @@ -28,9 +28,15 @@ class Admin::HooksController < ApplicationController | ||
28 | 28 | ||
29 | 29 | ||
30 | def test | 30 | def test |
31 | - @hook = @project.hooks.find(params[:id]) | ||
32 | - commits = @project.commits(@project.default_branch, nil, 3) | ||
33 | - data = @project.post_receive_data(commits.last.id, commits.first.id, "refs/heads/#{@project.default_branch}", current_user) | 31 | + @hook = SystemHook.find(params[:hook_id]) |
32 | + data = { | ||
33 | + event_name: "project_create", | ||
34 | + name: "Ruby", | ||
35 | + path: "ruby", | ||
36 | + project_id: 1, | ||
37 | + owner_name: "Someone", | ||
38 | + owner_email: "example@gitlabhq.com" | ||
39 | + } | ||
34 | @hook.execute(data) | 40 | @hook.execute(data) |
35 | 41 | ||
36 | redirect_to :back | 42 | redirect_to :back |
spec/factories.rb
@@ -7,6 +7,12 @@ Factory.add(:project, Project) do |obj| | @@ -7,6 +7,12 @@ Factory.add(:project, Project) do |obj| | ||
7 | obj.code = 'LGT' | 7 | obj.code = 'LGT' |
8 | end | 8 | end |
9 | 9 | ||
10 | +Factory.add(:project_without_owner, Project) do |obj| | ||
11 | + obj.name = Faker::Internet.user_name | ||
12 | + obj.path = 'gitlabhq' | ||
13 | + obj.code = 'LGT' | ||
14 | +end | ||
15 | + | ||
10 | Factory.add(:public_project, Project) do |obj| | 16 | Factory.add(:public_project, Project) do |obj| |
11 | obj.name = Faker::Internet.user_name | 17 | obj.name = Faker::Internet.user_name |
12 | obj.path = 'gitlabhq' | 18 | obj.path = 'gitlabhq' |
@@ -64,6 +70,10 @@ Factory.add(:project_hook, ProjectHook) do |obj| | @@ -64,6 +70,10 @@ Factory.add(:project_hook, ProjectHook) do |obj| | ||
64 | obj.url = Faker::Internet.uri("http") | 70 | obj.url = Faker::Internet.uri("http") |
65 | end | 71 | end |
66 | 72 | ||
73 | +Factory.add(:system_hook, SystemHook) do |obj| | ||
74 | + obj.url = Faker::Internet.uri("http") | ||
75 | +end | ||
76 | + | ||
67 | Factory.add(:wiki, Wiki) do |obj| | 77 | Factory.add(:wiki, Wiki) do |obj| |
68 | obj.title = Faker::Lorem.sentence | 78 | obj.title = Faker::Lorem.sentence |
69 | obj.content = Faker::Lorem.sentence | 79 | obj.content = Faker::Lorem.sentence |
@@ -0,0 +1,61 @@ | @@ -0,0 +1,61 @@ | ||
1 | +require "spec_helper" | ||
2 | + | ||
3 | +describe SystemHook do | ||
4 | + describe "execute" do | ||
5 | + before(:each) do | ||
6 | + @system_hook = Factory :system_hook | ||
7 | + WebMock.stub_request(:post, @system_hook.url) | ||
8 | + end | ||
9 | + | ||
10 | + it "project_create hook" do | ||
11 | + user = Factory :user | ||
12 | + with_resque do | ||
13 | + project = Factory :project_without_owner, :owner => user | ||
14 | + end | ||
15 | + WebMock.should have_requested(:post, @system_hook.url).with(body: /project_create/).once | ||
16 | + end | ||
17 | + | ||
18 | + it "project_destroy hook" do | ||
19 | + project = Factory :project | ||
20 | + with_resque do | ||
21 | + project.destroy | ||
22 | + end | ||
23 | + WebMock.should have_requested(:post, @system_hook.url).with(body: /project_destroy/).once | ||
24 | + end | ||
25 | + | ||
26 | + it "user_create hook" do | ||
27 | + with_resque do | ||
28 | + Factory :user | ||
29 | + end | ||
30 | + WebMock.should have_requested(:post, @system_hook.url).with(body: /user_create/).once | ||
31 | + end | ||
32 | + | ||
33 | + it "user_destroy hook" do | ||
34 | + user = Factory :user | ||
35 | + with_resque do | ||
36 | + user.destroy | ||
37 | + end | ||
38 | + WebMock.should have_requested(:post, @system_hook.url).with(body: /user_destroy/).once | ||
39 | + end | ||
40 | + | ||
41 | + it "project_create hook" do | ||
42 | + user = Factory :user | ||
43 | + project = Factory :project | ||
44 | + with_resque do | ||
45 | + project.users << user | ||
46 | + end | ||
47 | + WebMock.should have_requested(:post, @system_hook.url).with(body: /user_add_to_team/).once | ||
48 | + end | ||
49 | + | ||
50 | + it "project_destroy hook" do | ||
51 | + user = Factory :user | ||
52 | + project = Factory :project | ||
53 | + project.users << user | ||
54 | + with_resque do | ||
55 | + project.users_projects.clear | ||
56 | + end | ||
57 | + WebMock.should have_requested(:post, @system_hook.url).with(body: /user_remove_from_team/).once | ||
58 | + end | ||
59 | + end | ||
60 | + | ||
61 | +end |
@@ -0,0 +1,53 @@ | @@ -0,0 +1,53 @@ | ||
1 | +require 'spec_helper' | ||
2 | + | ||
3 | +describe "Admin::Hooks" do | ||
4 | + before do | ||
5 | + @project = Factory :project, | ||
6 | + :name => "LeGiT", | ||
7 | + :code => "LGT" | ||
8 | + login_as :admin | ||
9 | + | ||
10 | + @system_hook = Factory :system_hook | ||
11 | + | ||
12 | + end | ||
13 | + | ||
14 | + describe "GET /admin/hooks" do | ||
15 | + it "should be ok" do | ||
16 | + visit admin_root_path | ||
17 | + within ".main_menu" do | ||
18 | + click_on "Hooks" | ||
19 | + end | ||
20 | + current_path.should == admin_hooks_path | ||
21 | + end | ||
22 | + | ||
23 | + it "should have hooks list" do | ||
24 | + visit admin_hooks_path | ||
25 | + page.should have_content(@system_hook.url) | ||
26 | + end | ||
27 | + end | ||
28 | + | ||
29 | + describe "New Hook" do | ||
30 | + before do | ||
31 | + @url = Faker::Internet.uri("http") | ||
32 | + visit admin_hooks_path | ||
33 | + fill_in "hook_url", :with => @url | ||
34 | + expect { click_button "Add System Hook" }.to change(SystemHook, :count).by(1) | ||
35 | + end | ||
36 | + | ||
37 | + it "should open new hook popup" do | ||
38 | + page.current_path.should == admin_hooks_path | ||
39 | + page.should have_content(@url) | ||
40 | + end | ||
41 | + end | ||
42 | + | ||
43 | + describe "Test" do | ||
44 | + before do | ||
45 | + WebMock.stub_request(:post, @system_hook.url) | ||
46 | + visit admin_hooks_path | ||
47 | + click_link "Test Hook" | ||
48 | + end | ||
49 | + | ||
50 | + it { page.current_path.should == admin_hooks_path } | ||
51 | + end | ||
52 | + | ||
53 | +end |