summaryrefslogtreecommitdiff
path: root/spec/lib/constraints/namespace_url_constrainer_spec.rb
blob: 7814711fe278640e2e2bafa31ccb3b13d638c9f7 (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
require 'spec_helper'

describe NamespaceUrlConstrainer, lib: true do
  let!(:group) { create(:group, path: 'gitlab') }

  describe '#matches?' do
    context 'existing namespace' do
      it { expect(subject.matches?(request '/gitlab')).to be_truthy }
      it { expect(subject.matches?(request '/gitlab.atom')).to be_truthy }
      it { expect(subject.matches?(request '/gitlab/')).to be_truthy }
      it { expect(subject.matches?(request '//gitlab/')).to be_truthy }
    end

    context 'non-existing namespace' do
      it { expect(subject.matches?(request '/gitlab-ce')).to be_falsey }
      it { expect(subject.matches?(request '/gitlab.ce')).to be_falsey }
      it { expect(subject.matches?(request '/g/gitlab')).to be_falsey }
      it { expect(subject.matches?(request '/.gitlab')).to be_falsey }
    end

    context 'relative url' do
      before do
        allow(Gitlab::Application.config).to receive(:relative_url_root) { '/gitlab' }
      end

      it { expect(subject.matches?(request '/gitlab/gitlab')).to be_truthy }
      it { expect(subject.matches?(request '/gitlab/gitlab-ce')).to be_falsey }
      it { expect(subject.matches?(request '/gitlab/')).to be_falsey }
    end
  end

  def request(path)
    OpenStruct.new(path: path)
  end
end