diff options
Diffstat (limited to 'spec/lib/gitlab/rack_attack/request_spec.rb')
-rw-r--r-- | spec/lib/gitlab/rack_attack/request_spec.rb | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/spec/lib/gitlab/rack_attack/request_spec.rb b/spec/lib/gitlab/rack_attack/request_spec.rb index 3be7ec17e45..ecdcc23e588 100644 --- a/spec/lib/gitlab/rack_attack/request_spec.rb +++ b/spec/lib/gitlab/rack_attack/request_spec.rb @@ -3,6 +3,8 @@ require 'spec_helper' RSpec.describe Gitlab::RackAttack::Request do + using RSpec::Parameterized::TableSyntax + describe 'FILES_PATH_REGEX' do subject { described_class::FILES_PATH_REGEX } @@ -13,4 +15,33 @@ RSpec.describe Gitlab::RackAttack::Request do it { is_expected.to match('/api/v4/projects/some%2Fnested%2Frepo/repository/files/README') } it { is_expected.not_to match('/api/v4/projects/some/nested/repo/repository/files/README') } end + + describe '#deprecated_api_request?' do + let(:env) { { 'REQUEST_METHOD' => 'GET', 'rack.input' => StringIO.new, 'PATH_INFO' => path, 'QUERY_STRING' => query } } + let(:request) { ::Rack::Attack::Request.new(env) } + + subject { !!request.__send__(:deprecated_api_request?) } + + where(:path, :query, :expected) do + '/' | '' | false + + '/api/v4/groups/1/' | '' | true + '/api/v4/groups/1' | '' | true + '/api/v4/groups/foo/' | '' | true + '/api/v4/groups/foo' | '' | true + + '/api/v4/groups/1' | 'with_projects=' | true + '/api/v4/groups/1' | 'with_projects=1' | true + '/api/v4/groups/1' | 'with_projects=0' | false + + '/foo/api/v4/groups/1' | '' | false + '/api/v4/groups/1/foo' | '' | false + + '/api/v4/groups/nested%2Fgroup' | '' | true + end + + with_them do + it { is_expected.to eq(expected) } + end + end end |