diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-09-29 00:10:29 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-09-29 00:10:29 +0300 |
commit | e994d22d1d0b24e6920a6cf7202601c8318ec0a2 (patch) | |
tree | e907993c8f9cf5585fad09dcf2e1e5049f2ecb3a /spec | |
parent | dce57587960022ca3582bedfc5bcf356893fe603 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec')
5 files changed, 98 insertions, 14 deletions
diff --git a/spec/frontend/lib/utils/url_utility_spec.js b/spec/frontend/lib/utils/url_utility_spec.js index 869ae274a3f..e92a9a69b5b 100644 --- a/spec/frontend/lib/utils/url_utility_spec.js +++ b/spec/frontend/lib/utils/url_utility_spec.js @@ -664,6 +664,19 @@ describe('URL utility', () => { }); }); + describe('cleanLeadingSeparator', () => { + it.each` + path | expected + ${'/foo/bar'} | ${'foo/bar'} + ${'foo/bar'} | ${'foo/bar'} + ${'//foo/bar'} | ${'foo/bar'} + ${'/./foo/bar'} | ${'./foo/bar'} + ${''} | ${''} + `('$path becomes $expected', ({ path, expected }) => { + expect(urlUtils.cleanLeadingSeparator(path)).toBe(expected); + }); + }); + describe('joinPaths', () => { it.each` paths | expected @@ -787,4 +800,18 @@ describe('URL utility', () => { expect(urlUtils.getHTTPProtocol(url)).toBe(expectation); }); }); + + describe('stripPathTail', () => { + it.each` + path | expected + ${''} | ${''} + ${'index.html'} | ${''} + ${'/'} | ${'/'} + ${'/foo/bar'} | ${'/foo/'} + ${'/foo/bar/'} | ${'/foo/bar/'} + ${'/foo/bar/index.html'} | ${'/foo/bar/'} + `('strips the filename from $path => $expected', ({ path, expected }) => { + expect(urlUtils.stripPathTail(path)).toBe(expected); + }); + }); }); diff --git a/spec/serializers/merge_request_poll_cached_widget_entity_spec.rb b/spec/serializers/merge_request_poll_cached_widget_entity_spec.rb index 929e41516f1..031dc729a79 100644 --- a/spec/serializers/merge_request_poll_cached_widget_entity_spec.rb +++ b/spec/serializers/merge_request_poll_cached_widget_entity_spec.rb @@ -213,4 +213,55 @@ RSpec.describe MergeRequestPollCachedWidgetEntity do end end end + + describe 'pipeline' do + let_it_be(:pipeline) { create(:ci_empty_pipeline, project: project, ref: resource.source_branch, sha: resource.source_branch_sha, head_pipeline_of: resource) } + + before do + allow_any_instance_of(MergeRequestPresenter).to receive(:can?).and_call_original + allow_any_instance_of(MergeRequestPresenter).to receive(:can?).with(user, :read_pipeline, anything).and_return(can_access) + end + + context 'when user has access to pipelines' do + let(:can_access) { true } + + context 'when is up to date' do + let(:req) { double('request', current_user: user, project: project) } + + it 'returns pipeline' do + pipeline_payload = + MergeRequests::PipelineEntity + .represent(pipeline, request: req) + .as_json + + expect(subject[:pipeline]).to eq(pipeline_payload) + end + + context 'when merge_request_cached_pipeline_serializer is disabled' do + it 'does not return pipeline' do + stub_feature_flags(merge_request_cached_pipeline_serializer: false) + + expect(subject[:pipeline]).to be_nil + end + end + end + + context 'when user does not have access to pipelines' do + let(:can_access) { false } + let(:req) { double('request', current_user: user, project: project) } + + it 'does not have pipeline' do + expect(subject[:pipeline]).to eq(nil) + end + end + + context 'when is not up to date' do + it 'returns nil' do + pipeline.update!(sha: "not up to date") + + expect(subject[:pipeline]).to eq(nil) + end + end + end + end end diff --git a/spec/serializers/merge_request_poll_widget_entity_spec.rb b/spec/serializers/merge_request_poll_widget_entity_spec.rb index e0ea35623f6..1e5a8915da0 100644 --- a/spec/serializers/merge_request_poll_widget_entity_spec.rb +++ b/spec/serializers/merge_request_poll_widget_entity_spec.rb @@ -222,13 +222,21 @@ RSpec.describe MergeRequestPollWidgetEntity do context 'when is up to date' do let(:req) { double('request', current_user: user, project: project) } - it 'returns pipeline' do - pipeline_payload = - MergeRequests::PipelineEntity - .represent(pipeline, request: req) - .as_json + it 'does not return pipeline' do + expect(subject[:pipeline]).to be_nil + end + + context 'when merge_request_cached_pipeline_serializer is disabled' do + it 'returns detailed info about pipeline' do + stub_feature_flags(merge_request_cached_pipeline_serializer: false) + + pipeline_payload = + MergeRequests::PipelineEntity + .represent(pipeline, request: req) + .as_json - expect(subject[:pipeline]).to eq(pipeline_payload) + expect(subject[:pipeline]).to eq(pipeline_payload) + end end it 'returns ci_status' do @@ -249,10 +257,6 @@ RSpec.describe MergeRequestPollWidgetEntity do let(:result) { false } let(:req) { double('request', current_user: user, project: project) } - it 'does not have pipeline' do - expect(subject[:pipeline]).to eq(nil) - end - it 'does not return ci_status' do expect(subject[:ci_status]).to eq(nil) end diff --git a/spec/services/ci/expire_pipeline_cache_service_spec.rb b/spec/services/ci/expire_pipeline_cache_service_spec.rb index b5d664947de..8df5d0bc159 100644 --- a/spec/services/ci/expire_pipeline_cache_service_spec.rb +++ b/spec/services/ci/expire_pipeline_cache_service_spec.rb @@ -26,9 +26,11 @@ RSpec.describe Ci::ExpirePipelineCacheService do project = merge_request.target_project merge_request_pipelines_path = "/#{project.full_path}/-/merge_requests/#{merge_request.iid}/pipelines.json" + merge_request_widget_path = "/#{project.full_path}/-/merge_requests/#{merge_request.iid}/cached_widget.json" allow_any_instance_of(Gitlab::EtagCaching::Store).to receive(:touch) expect_any_instance_of(Gitlab::EtagCaching::Store).to receive(:touch).with(merge_request_pipelines_path) + expect_any_instance_of(Gitlab::EtagCaching::Store).to receive(:touch).with(merge_request_widget_path) subject.execute(merge_request.all_pipelines.last) end diff --git a/spec/support/helpers/git_http_helpers.rb b/spec/support/helpers/git_http_helpers.rb index de8bb9ac8e3..e8816e2fab5 100644 --- a/spec/support/helpers/git_http_helpers.rb +++ b/spec/support/helpers/git_http_helpers.rb @@ -5,19 +5,19 @@ require_relative 'workhorse_helpers' module GitHttpHelpers include WorkhorseHelpers - def clone_get(project, options = {}) + def clone_get(project, **options) get "/#{project}/info/refs", params: { service: 'git-upload-pack' }, headers: auth_env(*options.values_at(:user, :password, :spnego_request_token)) end - def clone_post(project, options = {}) + def clone_post(project, **options) post "/#{project}/git-upload-pack", headers: auth_env(*options.values_at(:user, :password, :spnego_request_token)) end - def push_get(project, options = {}) + def push_get(project, **options) get "/#{project}/info/refs", params: { service: 'git-receive-pack' }, headers: auth_env(*options.values_at(:user, :password, :spnego_request_token)) end - def push_post(project, options = {}) + def push_post(project, **options) post "/#{project}/git-receive-pack", headers: auth_env(*options.values_at(:user, :password, :spnego_request_token)) end |