blob: dbd9cc230f1a4a6e72740fcc45f302b6595891a2 (
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
|
# frozen_string_literal: true
require 'spec_helper'
RSpec.describe Gitlab::EtagCaching::Router do
it 'matches issue notes endpoint' do
result = described_class.match(
'/my-group/and-subgroup/here-comes-the-project/noteable/issue/1/notes'
)
expect(result).to be_present
expect(result.name).to eq 'issue_notes'
end
it 'matches MR notes endpoint' do
result = described_class.match(
'/my-group/and-subgroup/here-comes-the-project/noteable/merge_request/1/notes'
)
expect(result).to be_present
expect(result.name).to eq 'merge_request_notes'
end
it 'matches issue title endpoint' do
result = described_class.match(
'/my-group/my-project/-/issues/123/realtime_changes'
)
expect(result).to be_present
expect(result.name).to eq 'issue_title'
end
it 'matches with a project name that includes a suffix of create' do
result = described_class.match(
'/group/test-create/-/issues/123/realtime_changes'
)
expect(result).to be_present
expect(result.name).to eq 'issue_title'
end
it 'matches with a project name that includes a prefix of create' do
result = described_class.match(
'/group/create-test/-/issues/123/realtime_changes'
)
expect(result).to be_present
expect(result.name).to eq 'issue_title'
end
it 'matches project pipelines endpoint' do
result = described_class.match(
'/my-group/my-project/-/pipelines.json'
)
expect(result).to be_present
expect(result.name).to eq 'project_pipelines'
end
it 'matches commit pipelines endpoint' do
result = described_class.match(
'/my-group/my-project/-/commit/aa8260d253a53f73f6c26c734c72fdd600f6e6d4/pipelines.json'
)
expect(result).to be_present
expect(result.name).to eq 'commit_pipelines'
end
it 'matches new merge request pipelines endpoint' do
result = described_class.match(
'/my-group/my-project/-/merge_requests/new.json'
)
expect(result).to be_present
expect(result.name).to eq 'new_merge_request_pipelines'
end
it 'matches merge request pipelines endpoint' do
result = described_class.match(
'/my-group/my-project/-/merge_requests/234/pipelines.json'
)
expect(result).to be_present
expect(result.name).to eq 'merge_request_pipelines'
end
it 'matches build endpoint' do
result = described_class.match(
'/my-group/my-project/builds/234.json'
)
expect(result).to be_present
expect(result.name).to eq 'project_build'
end
it 'does not match blob with confusing name' do
result = described_class.match(
'/my-group/my-project/-/blob/master/pipelines.json'
)
expect(result).to be_blank
end
it 'matches the cluster environments path' do
result = described_class.match(
'/my-group/my-project/-/clusters/47/environments'
)
expect(result).to be_present
expect(result.name).to eq 'cluster_environments'
end
it 'matches the environments path' do
result = described_class.match(
'/my-group/my-project/environments.json'
)
expect(result).to be_present
expect(result.name).to eq 'environments'
end
it 'matches pipeline#show endpoint' do
result = described_class.match(
'/my-group/my-project/-/pipelines/2.json'
)
expect(result).to be_present
expect(result.name).to eq 'project_pipeline'
end
it 'has a valid feature category for every route', :aggregate_failures do
feature_categories = YAML.load_file(Rails.root.join('config', 'feature_categories.yml')).to_set
described_class::ROUTES.each do |route|
expect(feature_categories).to include(route.feature_category), "#{route.name} has a category of #{route.feature_category}, which is not valid"
end
end
end
|