summaryrefslogtreecommitdiff
path: root/spec/lib/api/helpers/related_resources_helpers_spec.rb
blob: 66af7f81535db423f7197a0fb7886b97f7d4cb05 (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
43
44
45
46
47
48
49
50
51
52
53
require 'spec_helper'

describe API::Helpers::RelatedResourcesHelpers do
  subject(:helpers) do
    Class.new.include(described_class).new
  end

  describe '#expose_url' do
    let(:path) { '/api/v4/awesome_endpoint' }
    subject(:url) { helpers.expose_url(path) }

    def stub_default_url_options(protocol: 'http', host: 'example.com', port: nil, script_name: '')
      expect(Gitlab::Application.routes).to receive(:default_url_options)
        .and_return(protocol: protocol, host: host, port: port, script_name: script_name)
    end

    it 'respects the protocol if it is HTTP' do
      stub_default_url_options(protocol: 'http')

      is_expected.to start_with('http://')
    end

    it 'respects the protocol if it is HTTPS' do
      stub_default_url_options(protocol: 'https')

      is_expected.to start_with('https://')
    end

    it 'accepts port to be nil' do
      stub_default_url_options(port: nil)

      is_expected.to start_with('http://example.com/')
    end

    it 'includes port if provided' do
      stub_default_url_options(port: 8080)

      is_expected.to start_with('http://example.com:8080/')
    end

    it 'includes the relative_url before the path if it is set' do
      stub_default_url_options(script_name: '/gitlab')

      is_expected.to start_with('http://example.com/gitlab/api/v4')
    end

    it 'includes the path after the host' do
      stub_default_url_options

      is_expected.to start_with('http://example.com/api/v4')
    end
  end
end