diff options
author | Douwe Maan <douwe@gitlab.com> | 2018-01-18 11:37:16 +0000 |
---|---|---|
committer | Douwe Maan <douwe@gitlab.com> | 2018-01-18 11:37:16 +0000 |
commit | 8e9c073a146f655cea2fd13f259bd68dc2c37259 (patch) | |
tree | 01bd2ec14fd6406b1deb1947935b36463a7e4529 /spec/features | |
parent | d617c24f59f9cc1c068301ec755caa2de6cd6b73 (diff) | |
parent | 6ef1b94ccf9eb60d5cff43d7e1302129d1b43cc3 (diff) | |
download | gitlab-ce-8e9c073a146f655cea2fd13f259bd68dc2c37259.tar.gz |
Merge branch 'feature/merge-request-system-hook' into 'master'
System hooks for Merge Requests
See merge request gitlab-org/gitlab-ce!14387
Diffstat (limited to 'spec/features')
-rw-r--r-- | spec/features/admin/admin_hooks_spec.rb | 65 |
1 files changed, 56 insertions, 9 deletions
diff --git a/spec/features/admin/admin_hooks_spec.rb b/spec/features/admin/admin_hooks_spec.rb index eec44549a03..f266f2ecc54 100644 --- a/spec/features/admin/admin_hooks_spec.rb +++ b/spec/features/admin/admin_hooks_spec.rb @@ -1,11 +1,10 @@ require 'spec_helper' -describe 'Admin::Hooks', :js do - before do - @project = create(:project) - sign_in(create(:admin)) +describe 'Admin::Hooks' do + let(:user) { create(:admin) } - @system_hook = create(:system_hook) + before do + sign_in(user) end describe 'GET /admin/hooks' do @@ -13,15 +12,17 @@ describe 'Admin::Hooks', :js do visit admin_root_path page.within '.nav-sidebar' do - click_on 'Hooks' + click_on 'System Hooks', match: :first end expect(current_path).to eq(admin_hooks_path) end it 'has hooks list' do + system_hook = create(:system_hook) + visit admin_hooks_path - expect(page).to have_content(@system_hook.url) + expect(page).to have_content(system_hook.url) end end @@ -43,6 +44,10 @@ describe 'Admin::Hooks', :js do describe 'Update existing hook' do let(:new_url) { generate(:url) } + before do + create(:system_hook) + end + it 'updates existing hook' do visit admin_hooks_path @@ -57,7 +62,11 @@ describe 'Admin::Hooks', :js do end end - describe 'Remove existing hook' do + describe 'Remove existing hook', :js do + before do + create(:system_hook) + end + context 'removes existing hook' do it 'from hooks list page' do visit admin_hooks_path @@ -76,7 +85,8 @@ describe 'Admin::Hooks', :js do describe 'Test', :js do before do - WebMock.stub_request(:post, @system_hook.url) + system_hook = create(:system_hook) + WebMock.stub_request(:post, system_hook.url) visit admin_hooks_path find('.hook-test-button.dropdown').click @@ -85,4 +95,41 @@ describe 'Admin::Hooks', :js do it { expect(current_path).to eq(admin_hooks_path) } end + + context 'Merge request hook' do + describe 'New Hook' do + let(:url) { generate(:url) } + + it 'adds new hook' do + visit admin_hooks_path + + fill_in 'hook_url', with: url + uncheck 'Repository update events' + check 'Merge request events' + + expect { click_button 'Add system hook' }.to change(SystemHook, :count).by(1) + expect(current_path).to eq(admin_hooks_path) + expect(page).to have_content(url) + end + end + + describe 'Test', :js do + before do + system_hook = create(:system_hook) + WebMock.stub_request(:post, system_hook.url) + end + + it 'succeeds if the user has a repository with a merge request' do + project = create(:project, :repository) + create(:project_member, user: user, project: project) + create(:merge_request, source_project: project) + + visit admin_hooks_path + find('.hook-test-button.dropdown').click + click_link 'Merge requests events' + + expect(page).to have_content 'Hook executed successfully' + end + end + end end |