summaryrefslogtreecommitdiff
path: root/qa/spec/runtime/api_request_spec.rb
blob: 9a1ed8a7a46850e8b87a33f38fcff90a54d481c0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
describe QA::Runtime::API::Request do
  include Support::StubENV

  before do
    stub_env('PERSONAL_ACCESS_TOKEN', 'a_token')
  end

  let(:client)  { QA::Runtime::API::Client.new('http://example.com') }
  let(:request) { described_class.new(client, '/users') }

  describe '#url' do
    it 'returns the full api request url' do
      expect(request.url).to eq 'http://example.com/api/v4/users?private_token=a_token'
    end
  end

  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', personal_access_token: 'token'))
        .to eq '/api/v4/users?private_token=token'
    end

    it 'adds the oauth access token' do
      expect(request.request_path('/users', oauth_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?page=1', personal_access_token: 'token'))
        .to eq '/api/v4/users?page=1&private_token=token'
    end

    it 'uses a different api version' do
      expect(request.request_path('/users', version: 'v3')).to eq '/api/v3/users'
    end
  end
end