diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-05-14 11:12:27 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-05-14 11:12:27 +0300 |
commit | 3772445de3063dda5e5fb2f21b6debf14032cc92 (patch) | |
tree | 8db2e49b644638f160392062221e6a0a56fcfd62 /spec/support/shared_examples | |
parent | 28a9333b4b418ce3f96fcd0a530d76ac86e6c4ed (diff) |
Add latest changes from gitlab-org/gitlab@13-11-stable-ee
Diffstat (limited to 'spec/support/shared_examples')
-rw-r--r-- | spec/support/shared_examples/lib/gitlab/middleware/read_only_gitlab_instance_shared_examples.rb | 52 |
1 files changed, 51 insertions, 1 deletions
diff --git a/spec/support/shared_examples/lib/gitlab/middleware/read_only_gitlab_instance_shared_examples.rb b/spec/support/shared_examples/lib/gitlab/middleware/read_only_gitlab_instance_shared_examples.rb index 5b3d30df739..0a07a56d417 100644 --- a/spec/support/shared_examples/lib/gitlab/middleware/read_only_gitlab_instance_shared_examples.rb +++ b/spec/support/shared_examples/lib/gitlab/middleware/read_only_gitlab_instance_shared_examples.rb @@ -70,6 +70,14 @@ RSpec.shared_examples 'write access for a read-only GitLab instance' do expect(subject).not_to disallow_request end + it 'expects a POST internal request with trailing slash to be allowed' do + expect(Rails.application.routes).not_to receive(:recognize_path) + response = request.post("/api/#{API::API.version}/internal/") + + expect(response).not_to be_redirect + expect(subject).not_to disallow_request + end + it 'expects a graphql request to be allowed' do response = request.post("/api/graphql") @@ -77,6 +85,13 @@ RSpec.shared_examples 'write access for a read-only GitLab instance' do expect(subject).not_to disallow_request end + it 'expects a graphql request with trailing slash to be allowed' do + response = request.post("/api/graphql/") + + expect(response).not_to be_redirect + expect(subject).not_to disallow_request + end + context 'relative URL is configured' do before do stub_config_setting(relative_url_root: '/gitlab') @@ -88,6 +103,13 @@ RSpec.shared_examples 'write access for a read-only GitLab instance' do expect(response).not_to be_redirect expect(subject).not_to disallow_request end + + it 'expects a graphql request with trailing slash to be allowed' do + response = request.post("/gitlab/api/graphql/") + + expect(response).not_to be_redirect + expect(subject).not_to disallow_request + end end context 'sidekiq admin requests' do @@ -119,6 +141,19 @@ RSpec.shared_examples 'write access for a read-only GitLab instance' do expect(response).not_to be_redirect expect(subject).not_to disallow_request end + + it 'allows requests with trailing slash' do + path = File.join(mounted_at, 'admin/sidekiq') + response = request.post("#{path}/") + + expect(response).not_to be_redirect + expect(subject).not_to disallow_request + + response = request.get("#{path}/") + + expect(response).not_to be_redirect + expect(subject).not_to disallow_request + end end end @@ -138,6 +173,14 @@ RSpec.shared_examples 'write access for a read-only GitLab instance' do expect(response).not_to be_redirect expect(subject).not_to disallow_request end + + it "expects a POST #{description} URL with trailing slash to be allowed" do + expect(Rails.application.routes).to receive(:recognize_path).and_call_original + response = request.post("#{path}/") + + expect(response).not_to be_redirect + expect(subject).not_to disallow_request + end end where(:description, :path) do @@ -153,11 +196,18 @@ RSpec.shared_examples 'write access for a read-only GitLab instance' do expect(response).to be_redirect expect(subject).to disallow_request end + + it "expects a POST #{description} URL with trailing slash not to be allowed" do + response = request.post("#{path}/") + + expect(response).to be_redirect + expect(subject).to disallow_request + end end end end - context 'json requests to a read-only GitLab instance' do + context 'JSON requests to a read-only GitLab instance' do let(:fake_app) { lambda { |env| [200, { 'Content-Type' => 'application/json' }, ['OK']] } } let(:content_json) { { 'CONTENT_TYPE' => 'application/json' } } |