diff options
author | Nikolay Novikov <nikkes@mail.ru> | 2018-08-02 17:33:26 +0000 |
---|---|---|
committer | Fabio Pitino <fpitino@gitlab.com> | 2019-06-21 15:17:47 +0100 |
commit | 5f1038c8886ceb0e3879f29a074af7d4c6cb6171 (patch) | |
tree | 00e2b484a69f0e20127c095f3cf82dcea15ff14a /spec/models | |
parent | 671d7cdc445b3a4fdbd2295996d149e833d6b6c2 (diff) | |
download | gitlab-ce-5f1038c8886ceb0e3879f29a074af7d4c6cb6171.tar.gz |
Skip TeamCity on branch delete and add MR trigger
This is a take over from a community contribution:
https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/20990
Skip TeamCity push event when related to branch delete
Support merge request events for TeamCity service.
Add checkbox for merge request triggers in the TeamCity
configuration page.
Diffstat (limited to 'spec/models')
-rw-r--r-- | spec/models/project_services/teamcity_service_spec.rb | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/spec/models/project_services/teamcity_service_spec.rb b/spec/models/project_services/teamcity_service_spec.rb index 1c434b25205..1edb17932e5 100644 --- a/spec/models/project_services/teamcity_service_spec.rb +++ b/spec/models/project_services/teamcity_service_spec.rb @@ -207,6 +207,91 @@ describe TeamcityService, :use_clean_rails_memory_store_caching do end end + describe '#execute' do + context 'when push' do + let(:data) do + { + object_kind: 'push', + ref: 'refs/heads/dev-123_branch', + after: '0220c11b9a3e6c69dc8fd35321254ca9a7b98f7e', + total_commits_count: 1 + } + end + + it 'handles push request correctly' do + stub_post_to_build_queue(branch: 'dev-123_branch') + + expect(service.execute(data)).to include('Ok') + end + + it 'returns nil when ref is blank' do + data[:after] = "0000000000000000000000000000000000000000" + + expect(service.execute(data)).to be_nil + end + + it 'returns nil when there is no content' do + data[:total_commits_count] = 0 + + expect(service.execute(data)).to be_nil + end + end + + context 'when merge_request' do + let(:data) do + { + object_kind: 'merge_request', + ref: 'refs/heads/dev-123_branch', + after: '0220c11b9a3e6c69dc8fd35321254ca9a7b98f7e', + total_commits_count: 1, + object_attributes: { + state: 'opened', + source_branch: 'dev-123_branch', + merge_status: 'unchecked' + } + } + end + + it 'handles merge request correctly' do + stub_post_to_build_queue(branch: 'dev-123_branch') + + expect(service.execute(data)).to include('Ok') + end + + it 'returns nil when merge request is not opened' do + data[:object_attributes][:state] = 'closed' + + expect(service.execute(data)).to be_nil + end + + it 'returns nil when merge request is not unchecked or cannot_be_merged_recheck' do + data[:object_attributes][:merge_status] = 'checked' + + expect(service.execute(data)).to be_nil + end + end + + it 'returns nil when event is not supported' do + data = { object_kind: 'foo' } + + expect(service.execute(data)).to be_nil + end + end + + def stub_post_to_build_queue(branch:) + teamcity_full_url = 'http://gitlab.com/teamcity/httpAuth/app/rest/buildQueue' + body ||= %Q(<build branchName=\"#{branch}\"><buildType id=\"foo\"/></build>) + auth = %w(mic password) + + stub_full_request(teamcity_full_url, method: :post).with( + basic_auth: auth, + body: body, + headers: { + 'Content-Type' => 'application/xml' + } + ).to_return(status: 200, body: 'Ok', headers: {}) + end + def stub_request(status: 200, body: nil, build_status: 'success') teamcity_full_url = 'http://gitlab.com/teamcity/httpAuth/app/rest/builds/branch:unspecified:any,revision:123' auth = %w(mic password) |