summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/controllers/projects/hooks_controller.rb9
-rw-r--r--app/services/test_hook_service.rb3
-rw-r--r--features/project/hooks.feature6
-rw-r--r--features/steps/project/hooks.rb12
4 files changed, 28 insertions, 2 deletions
diff --git a/app/controllers/projects/hooks_controller.rb b/app/controllers/projects/hooks_controller.rb
index c8269ed99ce..cab8fd76e6c 100644
--- a/app/controllers/projects/hooks_controller.rb
+++ b/app/controllers/projects/hooks_controller.rb
@@ -25,8 +25,13 @@ class Projects::HooksController < Projects::ApplicationController
def test
if !@project.empty_repo?
- TestHookService.new.execute(hook, current_user)
- flash[:notice] = 'Hook successfully executed.'
+ status = TestHookService.new.execute(hook, current_user)
+ if status
+ flash[:notice] = 'Hook successfully executed.'
+ else
+ flash[:alert] = 'Hook execution failed. '\
+ 'Ensure hook URL is correct and service is up.'
+ end
else
flash[:alert] = 'Hook execution failed. Ensure the project has commits.'
end
diff --git a/app/services/test_hook_service.rb b/app/services/test_hook_service.rb
index 17d86a7a274..b6b1ef29b51 100644
--- a/app/services/test_hook_service.rb
+++ b/app/services/test_hook_service.rb
@@ -2,5 +2,8 @@ class TestHookService
def execute(hook, current_user)
data = GitPushService.new.sample_data(hook.project, current_user)
hook.execute(data)
+ true
+ rescue SocketError
+ false
end
end
diff --git a/features/project/hooks.feature b/features/project/hooks.feature
index 52e02a890dd..1a60846a23e 100644
--- a/features/project/hooks.feature
+++ b/features/project/hooks.feature
@@ -24,3 +24,9 @@ Feature: Project Hooks
And I visit project hooks page
When I click test hook button
Then I should see hook error message
+
+ Scenario: I test a hook on down URL
+ Given project has hook
+ And I visit project hooks page
+ When I click test hook button with invalid URL
+ Then I should see hook service down error message
diff --git a/features/steps/project/hooks.rb b/features/steps/project/hooks.rb
index 30da589260d..2bd383676e7 100644
--- a/features/steps/project/hooks.rb
+++ b/features/steps/project/hooks.rb
@@ -38,6 +38,11 @@ class ProjectHooks < Spinach::FeatureSteps
click_link 'Test Hook'
end
+ step 'I click test hook button with invalid URL' do
+ stub_request(:post, @hook.url).to_raise(SocketError)
+ click_link 'Test Hook'
+ end
+
step 'hook should be triggered' do
page.current_path.should == project_hooks_path(current_project)
page.should have_selector '.flash-notice',
@@ -49,4 +54,11 @@ class ProjectHooks < Spinach::FeatureSteps
text: 'Hook execution failed. '\
'Ensure the project has commits.'
end
+
+ step 'I should see hook service down error message' do
+ page.should have_selector '.flash-alert',
+ text: 'Hook execution failed. '\
+ 'Ensure hook URL is correct and '\
+ 'service is up.'
+ end
end