summaryrefslogtreecommitdiff
path: root/spec/routing/git_http_routing_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/routing/git_http_routing_spec.rb')
-rw-r--r--spec/routing/git_http_routing_spec.rb58
1 files changed, 48 insertions, 10 deletions
diff --git a/spec/routing/git_http_routing_spec.rb b/spec/routing/git_http_routing_spec.rb
index e5216d99eb9..e3cc1440a9e 100644
--- a/spec/routing/git_http_routing_spec.rb
+++ b/spec/routing/git_http_routing_spec.rb
@@ -3,22 +3,60 @@
require 'spec_helper'
RSpec.describe 'git_http routing' do
- include RSpec::Rails::RequestExampleGroup
+ describe 'code repositories' do
+ it_behaves_like 'git repository routes' do
+ let(:path) { '/gitlab-org/gitlab-test.git' }
+ end
+ end
+
+ describe 'wiki repositories' do
+ context 'in project' do
+ let(:path) { '/gitlab-org/gitlab-test.wiki.git' }
+
+ it_behaves_like 'git repository routes'
+
+ describe 'redirects', type: :request do
+ let(:web_path) { '/gitlab-org/gitlab-test/-/wikis' }
+
+ it 'redirects namespace/project.wiki.git to the project wiki' do
+ expect(get(path)).to redirect_to(web_path)
+ end
- describe 'wiki.git routing', 'routing' do
- let(:wiki_path) { '/gitlab/gitlabhq/wikis' }
+ it 'preserves query parameters' do
+ expect(get("#{path}?foo=bar&baz=qux")).to redirect_to("#{web_path}?foo=bar&baz=qux")
+ end
- it 'redirects namespace/project.wiki.git to the project wiki' do
- expect(get('/gitlab/gitlabhq.wiki.git')).to redirect_to(wiki_path)
+ it 'only redirects when the format is .git' do
+ expect(get(path.delete_suffix('.git'))).not_to redirect_to(web_path)
+ expect(get(path.delete_suffix('.git') + '.json')).not_to redirect_to(web_path)
+ end
+ end
end
- it 'preserves query parameters' do
- expect(get('/gitlab/gitlabhq.wiki.git?foo=bar&baz=qux')).to redirect_to("#{wiki_path}?foo=bar&baz=qux")
+ context 'in toplevel group' do
+ it_behaves_like 'git repository routes' do
+ let(:path) { '/gitlab-org.wiki.git' }
+ end
+ end
+
+ context 'in child group' do
+ it_behaves_like 'git repository routes' do
+ let(:path) { '/gitlab-org/child.wiki.git' }
+ end
+ end
+ end
+
+ describe 'snippet repositories' do
+ context 'personal snippet' do
+ it_behaves_like 'git repository routes' do
+ let(:path) { '/snippets/123.git' }
+ end
end
- it 'only redirects when the format is .git' do
- expect(get('/gitlab/gitlabhq.wiki')).not_to redirect_to(wiki_path)
- expect(get('/gitlab/gitlabhq.wiki.json')).not_to redirect_to(wiki_path)
+ context 'project snippet' do
+ it_behaves_like 'git repository routes' do
+ let(:path) { '/gitlab-org/gitlab-test/snippets/123.git' }
+ end
end
end
end