diff --git a/ee/app/workers/create_github_webhook_worker.rb b/ee/app/workers/create_github_webhook_worker.rb index 6a6e5e630c6d08dfae5ad941b251a7dad2b65a2e..8cf4f4162ac892e5b9f507177ba179de7a4bfd31 100644 --- a/ee/app/workers/create_github_webhook_worker.rb +++ b/ee/app/workers/create_github_webhook_worker.rb @@ -18,7 +18,7 @@ def perform(project_id) end def create_webhook - client.create_hook( + client.octokit.create_hook( project.import_source, 'web', { @@ -37,7 +37,11 @@ def create_webhook private def client - @client ||= Gitlab::LegacyGithubImport::Client.new(access_token) + @client ||= if Feature.enabled?(:remove_legacy_github_client) + Gitlab::GithubImport::Client.new(access_token) + else + Gitlab::LegacyGithubImport::Client.new(access_token) + end end def access_token diff --git a/ee/spec/workers/create_github_webhook_worker_spec.rb b/ee/spec/workers/create_github_webhook_worker_spec.rb index b4bfba60a822e7a91e945f62140f2228de7cd1d8..c26791bc9af3cbded63e53b85a47d758d5b9d2c0 100644 --- a/ee/spec/workers/create_github_webhook_worker_spec.rb +++ b/ee/spec/workers/create_github_webhook_worker_spec.rb @@ -22,26 +22,48 @@ project.save end - it 'creates the webhook' do - expect_next_instance_of(Gitlab::LegacyGithubImport::Client) do |instance| - expect(instance).to receive(:create_hook) - .with( - 'foo/bar', - 'web', - { - url: "http://localhost#{api_v4_projects_mirror_pull_path(id: project.id)}", - content_type: 'json', - secret: project.external_webhook_token, - insecure_ssl: 1 - }, - { - events: %w[push pull_request], - active: true - } - ) + shared_examples 'creates a webhook' do |client_klass| + it 'creates a webhook' do + expect_next_instance_of(client_klass) do |client| + expect(client).to receive(:octokit).and_call_original + end + + expect_next_instance_of(Octokit::Client) do |instance| + expect(instance).to receive(:create_hook) + .with( + 'foo/bar', + 'web', + { + url: "http://localhost#{api_v4_projects_mirror_pull_path(id: project.id)}", + content_type: 'json', + secret: project.external_webhook_token, + insecure_ssl: 1 + }, + { + events: %w[push pull_request], + active: true + } + ) + end + + subject.perform(project.id) + end + end + + context 'when remove_legacy_github_client feature flag is enabled' do + before do + stub_feature_flags(remove_legacy_github_client: true) + end + + include_examples 'creates a webhook', Gitlab::GithubImport::Client + end + + context 'when remove_legacy_github_client feature flag is disabled' do + before do + stub_feature_flags(remove_legacy_github_client: false) end - subject.perform(project.id) + include_examples 'creates a webhook', Gitlab::LegacyGithubImport::Client end end end