blob: 251f634aac1d4b3736ce1580bfc8b41a31d77be5 (
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
139
140
141
142
|
# frozen_string_literal: true
require 'spec_helper'
RSpec.describe Gitlab::EtagCaching::Router::Rails do
it 'matches issue notes endpoint' do
result = match_route('/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 = match_route('/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 = match_route('/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 = match_route('/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 = match_route('/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 = match_route('/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 = match_route('/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 = match_route('/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 = match_route('/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 = match_route('/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 = match_route('/my-group/my-project/-/blob/master/pipelines.json')
expect(result).to be_blank
end
it 'matches the cluster environments path' do
result = match_route('/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 = match_route('/my-group/my-project/-/environments.json')
expect(result).to be_present
expect(result.name).to eq 'environments'
end
it 'does not match the operations environments list path' do
result = match_route('/-/operations/environments.json')
expect(result).not_to be_present
end
it 'matches pipeline#show endpoint' do
result = match_route('/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 = Gitlab::FeatureCategories.default.categories
described_class.all_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
it 'has a caller_id for every route', :aggregate_failures do
described_class.all_routes.each do |route|
expect(route.caller_id).to include('#'), "#{route.name} has caller_id #{route.caller_id}, which is not valid"
end
end
it 'has an urgency for every route', :aggregate_failures do
described_class.all_routes.each do |route|
expect(route.urgency).to be_an_instance_of(Gitlab::EndpointAttributes::Config::RequestUrgency)
end
end
def match_route(path)
described_class.match(double(path_info: path))
end
describe '.cache_key' do
subject do
described_class.cache_key(double(path: '/my-group/my-project/builds/234.json'))
end
it 'uses request path as cache key' do
is_expected.to eq '/my-group/my-project/builds/234.json'
end
end
end
|