debian-mirror-gitlab/qa/spec/runtime/api/request_spec.rb

59 lines
2 KiB
Ruby
Raw Normal View History

2019-07-31 22:56:46 +05:30
# frozen_string_literal: true
2021-01-03 14:25:43 +05:30
RSpec.describe QA::Runtime::API::Request do
2018-12-13 13:39:08 +05:30
let(:client) { QA::Runtime::API::Client.new('http://example.com') }
let(:request) { described_class.new(client, '/users') }
2018-11-08 19:23:39 +05:30
before do
2018-12-13 13:39:08 +05:30
allow(client).to receive(:personal_access_token).and_return('a_token')
2018-11-08 19:23:39 +05:30
end
describe '#url' do
2018-12-13 13:39:08 +05:30
it 'returns the full API request url' do
2018-11-08 19:23:39 +05:30
expect(request.url).to eq 'http://example.com/api/v4/users?private_token=a_token'
end
2018-12-13 13:39:08 +05:30
context 'when oauth_access_token is passed in the query string' do
2021-10-27 15:23:28 +05:30
let(:request) { described_class.new(client, '/users', oauth_access_token: 'foo') }
2018-12-13 13:39:08 +05:30
it 'does not adds a private_token query string' do
expect(request.url).to eq 'http://example.com/api/v4/users?oauth_access_token=foo'
end
end
2018-11-08 19:23:39 +05:30
end
2020-07-28 23:09:34 +05:30
describe '#mask_url' do
it 'returns the full API request url with the token masked' do
expect(request.mask_url).to eq 'http://example.com/api/v4/users?private_token=[****]'
end
end
2018-11-08 19:23:39 +05:30
describe '#request_path' do
it 'prepends the api path' do
expect(request.request_path('/users')).to eq '/api/v4/users'
end
it 'adds the personal access token' do
expect(request.request_path('/users', private_token: 'token'))
.to eq '/api/v4/users?private_token=token'
end
it 'adds the oauth access token' do
expect(request.request_path('/users', access_token: 'otoken'))
.to eq '/api/v4/users?access_token=otoken'
end
it 'respects query parameters' do
expect(request.request_path('/users?page=1')).to eq '/api/v4/users?page=1'
expect(request.request_path('/users', private_token: 'token', foo: 'bar/baz'))
.to eq '/api/v4/users?private_token=token&foo=bar%2Fbaz'
expect(request.request_path('/users?page=1', private_token: 'token', foo: 'bar/baz'))
.to eq '/api/v4/users?page=1&private_token=token&foo=bar%2Fbaz'
end
it 'uses a different api version' do
expect(request.request_path('/users', version: 'other_version')).to eq '/api/other_version/users'
end
end
end