82 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			82 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Ruby
		
	
	
	
# frozen_string_literal: true
 | 
						|
 | 
						|
require 'spec_helper'
 | 
						|
 | 
						|
RSpec.describe API::ProjectHooks, 'ProjectHooks', feature_category: :webhooks do
 | 
						|
  let_it_be(:user) { create(:user) }
 | 
						|
  let_it_be(:user3) { create(:user) }
 | 
						|
  let_it_be_with_reload(:project) do
 | 
						|
    create(:project, :repository, creator_id: user.id, namespace: user.namespace, maintainers: user, developers: user3)
 | 
						|
  end
 | 
						|
 | 
						|
  let_it_be_with_refind(:hook) do
 | 
						|
    create(
 | 
						|
      :project_hook,
 | 
						|
      :all_events_enabled,
 | 
						|
      project: project,
 | 
						|
      url: 'http://example.com',
 | 
						|
      enable_ssl_verification: true,
 | 
						|
      push_events_branch_filter: 'master'
 | 
						|
    )
 | 
						|
  end
 | 
						|
 | 
						|
  it_behaves_like 'web-hook API endpoints', '/projects/:id' do
 | 
						|
    let(:unauthorized_user) { user3 }
 | 
						|
 | 
						|
    def scope
 | 
						|
      project.hooks
 | 
						|
    end
 | 
						|
 | 
						|
    def collection_uri
 | 
						|
      "/projects/#{project.id}/hooks"
 | 
						|
    end
 | 
						|
 | 
						|
    def match_collection_schema
 | 
						|
      match_response_schema('public_api/v4/project_hooks')
 | 
						|
    end
 | 
						|
 | 
						|
    def hook_uri(hook_id = hook.id)
 | 
						|
      "/projects/#{project.id}/hooks/#{hook_id}"
 | 
						|
    end
 | 
						|
 | 
						|
    def match_hook_schema
 | 
						|
      match_response_schema('public_api/v4/project_hook')
 | 
						|
    end
 | 
						|
 | 
						|
    def event_names
 | 
						|
      %i[
 | 
						|
        push_events
 | 
						|
        tag_push_events
 | 
						|
        merge_requests_events
 | 
						|
        issues_events
 | 
						|
        confidential_issues_events
 | 
						|
        note_events
 | 
						|
        confidential_note_events
 | 
						|
        pipeline_events
 | 
						|
        wiki_page_events
 | 
						|
        job_events
 | 
						|
        deployment_events
 | 
						|
        feature_flag_events
 | 
						|
        releases_events
 | 
						|
        emoji_events
 | 
						|
        resource_access_token_events
 | 
						|
      ]
 | 
						|
    end
 | 
						|
 | 
						|
    let(:default_values) do
 | 
						|
      { push_events: true, confidential_note_events: nil }
 | 
						|
    end
 | 
						|
 | 
						|
    it_behaves_like 'test web-hook endpoint'
 | 
						|
    it_behaves_like 'POST webhook API endpoints with a branch filter', '/projects/:id'
 | 
						|
    it_behaves_like 'PUT webhook API endpoints with a branch filter', '/projects/:id'
 | 
						|
    it_behaves_like 'resend web-hook event endpoint' do
 | 
						|
      let(:unauthorized_user) { user3 }
 | 
						|
    end
 | 
						|
 | 
						|
    it_behaves_like 'get web-hook event endpoint' do
 | 
						|
      let(:unauthorized_user) { user3 }
 | 
						|
    end
 | 
						|
  end
 | 
						|
end
 |