haveapi 0.31.1 → 0.32.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +2 -0
- data/benchmarks/documentation.rb +29 -6
- data/benchmarks/endpoints.rb +153 -24
- data/benchmarks/spec/client_examples_spec.rb +109 -37
- data/doc/client-examples.md +218 -45
- data/doc/documentation-oauth.md +157 -0
- data/doc/documentation-ui.md +192 -0
- data/doc/index.md +3 -6
- data/doc/performance.md +39 -12
- data/haveapi.gemspec +1 -1
- data/lib/haveapi/authentication/chain.rb +19 -0
- data/lib/haveapi/authentication/oauth2/provider.rb +7 -1
- data/lib/haveapi/client_example.rb +143 -15
- data/lib/haveapi/client_examples/curl.rb +30 -20
- data/lib/haveapi/client_examples/dynamic_helpers.rb +1 -1
- data/lib/haveapi/client_examples/go_client.rb +9 -2
- data/lib/haveapi/client_examples/http.rb +9 -4
- data/lib/haveapi/client_examples/js_async_client.rb +7 -0
- data/lib/haveapi/client_examples/js_client.rb +47 -36
- data/lib/haveapi/client_examples/php_client.rb +161 -75
- data/lib/haveapi/client_examples/python_async_client.rb +3 -0
- data/lib/haveapi/client_examples/python_client.rb +61 -47
- data/lib/haveapi/client_examples/ruby_cli.rb +27 -18
- data/lib/haveapi/client_examples/ruby_client.rb +80 -31
- data/lib/haveapi/client_examples/rust_client.rb +20 -9
- data/lib/haveapi/client_examples/ts_async_client.rb +7 -0
- data/lib/haveapi/client_examples/ts_client.rb +3 -0
- data/lib/haveapi/client_examples/ts_generated_client.rb +10 -2
- data/lib/haveapi/documentation_context.rb +7 -2
- data/lib/haveapi/documentation_helpers.rb +223 -0
- data/lib/haveapi/documentation_oauth.rb +399 -0
- data/lib/haveapi/documentation_search.rb +225 -0
- data/lib/haveapi/documentation_search_index.rb +79 -0
- data/lib/haveapi/documentation_validators.rb +179 -0
- data/lib/haveapi/public/css/documentation.css +343 -0
- data/lib/haveapi/public/js/documentation.js +992 -0
- data/lib/haveapi/server.rb +144 -86
- data/lib/haveapi/shared_documentation_helpers.rb +54 -0
- data/lib/haveapi/version.rb +1 -1
- data/lib/haveapi/views/doc_layout.erb +16 -0
- data/lib/haveapi/views/doc_sidebars/create-client.erb +3 -3
- data/lib/haveapi/views/doc_sidebars/json-schema.erb +1 -1
- data/lib/haveapi/views/doc_sidebars/protocol.erb +5 -5
- data/lib/haveapi/views/documentation/search_form.erb +10 -0
- data/lib/haveapi/views/documentation/search_index.erb +1 -0
- data/lib/haveapi/views/documentation/search_results.erb +20 -0
- data/lib/haveapi/views/index.erb +2 -4
- data/lib/haveapi/views/main_layout.erb +12 -6
- data/lib/haveapi/views/shared_documentation.erb +12 -0
- data/lib/haveapi/views/shared_sidebar.erb +25 -0
- data/lib/haveapi/views/version_page/auth_body.erb +12 -33
- data/lib/haveapi/views/version_page/client_overview.erb +40 -0
- data/lib/haveapi/views/version_page/example_panels.erb +18 -0
- data/lib/haveapi/views/version_page/resource_body.erb +91 -132
- data/lib/haveapi/views/version_page/resource_directory.erb +14 -0
- data/lib/haveapi/views/version_page/usage.erb +7 -0
- data/lib/haveapi/views/version_page.erb +36 -117
- data/lib/haveapi/views/version_sidebar/auth_nav.erb +12 -16
- data/lib/haveapi/views/version_sidebar/auth_resource_nav.erb +19 -0
- data/lib/haveapi/views/version_sidebar/authentication_control.erb +26 -0
- data/lib/haveapi/views/version_sidebar/authentication_status.erb +3 -0
- data/lib/haveapi/views/version_sidebar/brand.erb +31 -0
- data/lib/haveapi/views/version_sidebar/resource_nav.erb +11 -20
- data/lib/haveapi/views/version_sidebar.erb +59 -48
- data/spec/authentication/basic_spec.rb +10 -10
- data/spec/authentication/oauth2_chain_spec.rb +72 -0
- data/spec/authentication/oauth2_token_validation_spec.rb +38 -0
- data/spec/client_examples/assets/documentation_test.cjs +817 -0
- data/spec/client_examples/context_performance_spec.rb +5 -4
- data/spec/client_examples/context_spec.rb +23 -2
- data/spec/client_examples/detail_spec.rb +175 -0
- data/spec/client_examples/dynamic_acceptance.md +59 -26
- data/spec/client_examples/dynamic_acceptance.rb +164 -44
- data/spec/client_examples/dynamic_acceptance_spec.rb +140 -23
- data/spec/client_examples/dynamic_fixture.rb +4 -3
- data/spec/client_examples/dynamic_js_spec.rb +20 -11
- data/spec/client_examples/dynamic_metadata_spec.rb +69 -0
- data/spec/client_examples/dynamic_mounted_paths_spec.rb +9 -7
- data/spec/client_examples/dynamic_python_spec.rb +62 -11
- data/spec/client_examples/go_spec.rb +14 -1
- data/spec/client_examples/presentation_spec.rb +247 -0
- data/spec/client_examples/profile_mount_spec.rb +40 -13
- data/spec/client_examples/rust_client_spec.rb +35 -1
- data/spec/client_examples/shell_spec.rb +268 -0
- data/spec/client_examples/syntax_spec.rb +192 -0
- data/spec/client_examples/ts_generated_client_spec.rb +15 -2
- data/spec/client_examples/typescript_profiles_spec.rb +1 -1
- data/spec/documentation/auth_filtering_spec.rb +9 -4
- data/spec/documentation/canonical_routes_spec.rb +89 -0
- data/spec/documentation/client_examples_spec.rb +39 -5
- data/spec/documentation/client_overview_spec.rb +145 -0
- data/spec/documentation/current_user_html_escaping_spec.rb +7 -2
- data/spec/documentation/example_variants_spec.rb +93 -0
- data/spec/documentation/fixtures/search_index.json +476 -0
- data/spec/documentation/identity_and_guides_spec.rb +130 -0
- data/spec/documentation/identity_context_spec.rb +180 -0
- data/spec/documentation/navigation_spec.rb +296 -0
- data/spec/documentation/oauth_fixture_spec.rb +39 -0
- data/spec/documentation/oauth_spec.rb +912 -0
- data/spec/documentation/oauth_transport_spec.rb +45 -0
- data/spec/documentation/performance_spec.rb +47 -6
- data/spec/documentation/reference_headings_spec.rb +190 -0
- data/spec/documentation/search_index_routes_spec.rb +202 -0
- data/spec/documentation/search_index_spec.rb +85 -0
- data/spec/documentation/search_routes_spec.rb +199 -0
- data/spec/documentation/search_spec.rb +134 -0
- data/spec/documentation/shared_pages_spec.rb +240 -0
- data/spec/documentation/validators_spec.rb +123 -0
- data/spec/documentation_spec.rb +3 -3
- data/spec/packaging_spec.rb +21 -2
- data/spec/performance/documentation_identity_fixture_spec.rb +47 -0
- data/spec/performance/documentation_shapes_spec.rb +97 -0
- data/spec/performance/json_activation_spec.rb +78 -1
- data/spec/performance/release_lineage_spec.rb +4 -3
- data/spec/performance/runner_spec.rb +1 -0
- data/test_support/all_client_performance_fixture.rb +6 -10
- data/test_support/documentation_oauth_fixture.rb +54 -0
- data/test_support/documentation_performance_fixture.rb +19 -1
- data/test_support/dynamic_documentation_api.rb +35 -10
- data/test_support/dynamic_python_login_spec.rb +3 -11
- metadata +52 -3
|
@@ -7,6 +7,17 @@ module DynamicDocumentationAPI
|
|
|
7
7
|
def self.receipts
|
|
8
8
|
@receipts ||= []
|
|
9
9
|
end
|
|
10
|
+
|
|
11
|
+
def self.events
|
|
12
|
+
@events ||= []
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def self.record_authentication(request, provider, user)
|
|
16
|
+
request.env['dynamic_documentation.provider'] = provider if user
|
|
17
|
+
events << { type: 'authentication', provider:, authenticated: !user.nil? }
|
|
18
|
+
user
|
|
19
|
+
end
|
|
20
|
+
|
|
10
21
|
User = Struct.new(:login)
|
|
11
22
|
|
|
12
23
|
class RequestTrace
|
|
@@ -17,7 +28,12 @@ module DynamicDocumentationAPI
|
|
|
17
28
|
|
|
18
29
|
def call(env)
|
|
19
30
|
status, headers, body = @app.call(env)
|
|
20
|
-
|
|
31
|
+
trace = { method: env['REQUEST_METHOD'], path: env['PATH_INFO'], status: }
|
|
32
|
+
if env['PATH_INFO'].start_with?('/mount/')
|
|
33
|
+
provider = env['dynamic_documentation.provider']
|
|
34
|
+
DynamicDocumentationAPI.events << trace.merge(type: 'request', provider:, authenticated: !provider.nil?)
|
|
35
|
+
end
|
|
36
|
+
@output.puts("DYNAMIC_DOCUMENTATION_REQUEST #{JSON.generate(trace)}")
|
|
21
37
|
[status, headers, body]
|
|
22
38
|
end
|
|
23
39
|
end
|
|
@@ -25,21 +41,24 @@ module DynamicDocumentationAPI
|
|
|
25
41
|
class BasicProvider < HaveAPI::Authentication::Basic::Provider
|
|
26
42
|
protected
|
|
27
43
|
|
|
28
|
-
def find_user(
|
|
29
|
-
User.new(username) if username == '
|
|
44
|
+
def find_user(request, username, password)
|
|
45
|
+
user = User.new(username) if username == 'user' && password == 'secret'
|
|
46
|
+
DynamicDocumentationAPI.record_authentication(request, 'basic', user)
|
|
30
47
|
end
|
|
31
48
|
end
|
|
32
49
|
|
|
33
50
|
class TokenConfig < HaveAPI::Authentication::Token::Config
|
|
34
51
|
request do
|
|
35
52
|
handle do |request, result|
|
|
36
|
-
if request.input[:user] == '
|
|
53
|
+
if request.input[:user] == 'user' && request.input[:password] == 'secret'
|
|
37
54
|
result.token = 'fixture-challenge'
|
|
38
55
|
result.next_action = 'verify'
|
|
39
56
|
result.complete = false
|
|
40
57
|
result.valid_to = Time.now + 3600
|
|
58
|
+
DynamicDocumentationAPI.events << { type: 'token_request', provider: 'token', authenticated: false }
|
|
41
59
|
result.ok
|
|
42
60
|
else
|
|
61
|
+
DynamicDocumentationAPI.events << { type: 'token_request_rejected', provider: 'token', authenticated: false }
|
|
43
62
|
result.error = 'Invalid fixture credentials'
|
|
44
63
|
result
|
|
45
64
|
end
|
|
@@ -49,12 +68,14 @@ module DynamicDocumentationAPI
|
|
|
49
68
|
action :verify do
|
|
50
69
|
input { string :code, required: true }
|
|
51
70
|
handle do |request, result|
|
|
52
|
-
if request.token == 'fixture-challenge' && request.input[:code] == '
|
|
53
|
-
result.token = '
|
|
71
|
+
if request.token == 'fixture-challenge' && request.input[:code] == 'code'
|
|
72
|
+
result.token = 'example-token'
|
|
54
73
|
result.complete = true
|
|
55
74
|
result.valid_to = Time.now + 3600
|
|
75
|
+
DynamicDocumentationAPI.events << { type: 'token_verification', provider: 'token', authenticated: true }
|
|
56
76
|
result.ok
|
|
57
77
|
else
|
|
78
|
+
DynamicDocumentationAPI.events << { type: 'token_verification_rejected', provider: 'token', authenticated: false }
|
|
58
79
|
result.error = 'Invalid fixture challenge'
|
|
59
80
|
result
|
|
60
81
|
end
|
|
@@ -64,8 +85,9 @@ module DynamicDocumentationAPI
|
|
|
64
85
|
renew { handle { |_request, result| result.ok } }
|
|
65
86
|
revoke { handle { |_request, result| result.ok } }
|
|
66
87
|
|
|
67
|
-
def find_user_by_token(
|
|
68
|
-
User.new('
|
|
88
|
+
def find_user_by_token(request, token)
|
|
89
|
+
user = User.new('user') if token == 'example-token'
|
|
90
|
+
DynamicDocumentationAPI.record_authentication(request, 'token', user)
|
|
69
91
|
end
|
|
70
92
|
end
|
|
71
93
|
|
|
@@ -80,7 +102,8 @@ module DynamicDocumentationAPI
|
|
|
80
102
|
|
|
81
103
|
def authenticate(request)
|
|
82
104
|
value = request.env['HTTP_X_FIXTURE_OAUTH2'] || request.env['HTTP_AUTHORIZATION']&.delete_prefix('Bearer ')
|
|
83
|
-
User.new('
|
|
105
|
+
user = User.new('user') if value == 'example-access-token'
|
|
106
|
+
value ? DynamicDocumentationAPI.record_authentication(request, 'oauth2', user) : nil
|
|
84
107
|
end
|
|
85
108
|
end
|
|
86
109
|
|
|
@@ -137,6 +160,8 @@ module DynamicDocumentationAPI
|
|
|
137
160
|
end
|
|
138
161
|
|
|
139
162
|
def self.build
|
|
163
|
+
receipts.clear
|
|
164
|
+
events.clear
|
|
140
165
|
HaveAPI.implicit_version = '2'
|
|
141
166
|
api = HaveAPI::Server.new(Resources)
|
|
142
167
|
api.use_version('2')
|
|
@@ -147,7 +172,7 @@ module DynamicDocumentationAPI
|
|
|
147
172
|
api.connect_hook(:pre_mount) do |ret, _server, sinatra|
|
|
148
173
|
sinatra.get '/__acceptance_receipts' do
|
|
149
174
|
content_type 'application/json'
|
|
150
|
-
JSON.generate(DynamicDocumentationAPI.receipts)
|
|
175
|
+
JSON.generate(actions: DynamicDocumentationAPI.receipts, events: DynamicDocumentationAPI.events)
|
|
151
176
|
end
|
|
152
177
|
ret
|
|
153
178
|
end
|
|
@@ -13,6 +13,7 @@ RSpec.describe HaveAPI::ClientExamples::PythonClient do
|
|
|
13
13
|
response = request.options('http://example.test/mount/v2/')
|
|
14
14
|
expect(response.status).to eq(200), response.body
|
|
15
15
|
envelope = JSON.parse(response.body)
|
|
16
|
+
expect(envelope.fetch('status')).to be(true), envelope.inspect
|
|
16
17
|
description = envelope.fetch('response')
|
|
17
18
|
context = dynamic_context(description:)
|
|
18
19
|
rendered = renderer.render(:auth, context:, auth_method: :token, auth_description: description.fetch('authentication').fetch('token'))
|
|
@@ -21,7 +22,6 @@ RSpec.describe HaveAPI::ClientExamples::PythonClient do
|
|
|
21
22
|
import ast
|
|
22
23
|
import json
|
|
23
24
|
import sys
|
|
24
|
-
from types import SimpleNamespace
|
|
25
25
|
from haveapi_client._protocol import CallContext, build_request, parse_description, parse_resources
|
|
26
26
|
from haveapi_client.exceptions import ValidationError
|
|
27
27
|
|
|
@@ -30,15 +30,7 @@ RSpec.describe HaveAPI::ClientExamples::PythonClient do
|
|
|
30
30
|
calls = [node for node in ast.walk(tree) if isinstance(node, ast.Call)
|
|
31
31
|
and isinstance(node.func, ast.Attribute) and node.func.attr == "begin_token_login"]
|
|
32
32
|
assert len(calls) == 1
|
|
33
|
-
|
|
34
|
-
"HAVEAPI_AUTH_user": json.dumps("fixture-user"),
|
|
35
|
-
"HAVEAPI_AUTH_password": json.dumps("fixture-password"),
|
|
36
|
-
"HAVEAPI_AUTH_scope": json.dumps("all"),
|
|
37
|
-
"HAVEAPI_AUTH_lifetime": json.dumps("fixed"),
|
|
38
|
-
}
|
|
39
|
-
expression = ast.Expression(body=calls[0].args[0])
|
|
40
|
-
params = eval(compile(expression, "<rendered-login-input>", "eval"),
|
|
41
|
-
{"json": json, "os": SimpleNamespace(environ=environment)})
|
|
33
|
+
params = ast.literal_eval(calls[0].args[0])
|
|
42
34
|
description = parse_description(fixture["envelope"])
|
|
43
35
|
action = parse_resources(description.authentication["token"]["resources"])["token"].actions["request"]
|
|
44
36
|
assert action.input.parameters["lifetime"].required
|
|
@@ -65,7 +57,7 @@ RSpec.describe HaveAPI::ClientExamples::PythonClient do
|
|
|
65
57
|
)
|
|
66
58
|
expect(status).to be_success, output
|
|
67
59
|
actual = JSON.parse(output)
|
|
68
|
-
expected = { 'user' => '
|
|
60
|
+
expected = { 'user' => 'user', 'password' => 'secret', 'scope' => 'scope', 'lifetime' => 'fixed' }
|
|
69
61
|
expect(actual.fetch('params')).to eq(expected)
|
|
70
62
|
expect(actual.fetch('body')).to eq('token' => expected)
|
|
71
63
|
expect(actual.fetch('url')).to eq('https://api.example.test/mount/_auth/token/tokens')
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: haveapi
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.32.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Jakub Skokan
|
|
@@ -29,14 +29,14 @@ dependencies:
|
|
|
29
29
|
requirements:
|
|
30
30
|
- - "~>"
|
|
31
31
|
- !ruby/object:Gem::Version
|
|
32
|
-
version: 0.
|
|
32
|
+
version: 0.32.0
|
|
33
33
|
type: :runtime
|
|
34
34
|
prerelease: false
|
|
35
35
|
version_requirements: !ruby/object:Gem::Requirement
|
|
36
36
|
requirements:
|
|
37
37
|
- - "~>"
|
|
38
38
|
- !ruby/object:Gem::Version
|
|
39
|
-
version: 0.
|
|
39
|
+
version: 0.32.0
|
|
40
40
|
- !ruby/object:Gem::Dependency
|
|
41
41
|
name: i18n
|
|
42
42
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -220,6 +220,8 @@ files:
|
|
|
220
220
|
- benchmarks/spec/client_examples_spec.rb
|
|
221
221
|
- doc/client-examples.md
|
|
222
222
|
- doc/create-client.md
|
|
223
|
+
- doc/documentation-oauth.md
|
|
224
|
+
- doc/documentation-ui.md
|
|
223
225
|
- doc/hooks.erb
|
|
224
226
|
- doc/index.md
|
|
225
227
|
- doc/json-schema.html
|
|
@@ -268,7 +270,12 @@ files:
|
|
|
268
270
|
- lib/haveapi/context.rb
|
|
269
271
|
- lib/haveapi/documentation_clients.rb
|
|
270
272
|
- lib/haveapi/documentation_context.rb
|
|
273
|
+
- lib/haveapi/documentation_helpers.rb
|
|
274
|
+
- lib/haveapi/documentation_oauth.rb
|
|
271
275
|
- lib/haveapi/documentation_schema.rb
|
|
276
|
+
- lib/haveapi/documentation_search.rb
|
|
277
|
+
- lib/haveapi/documentation_search_index.rb
|
|
278
|
+
- lib/haveapi/documentation_validators.rb
|
|
272
279
|
- lib/haveapi/example.rb
|
|
273
280
|
- lib/haveapi/example_list.rb
|
|
274
281
|
- lib/haveapi/exceptions.rb
|
|
@@ -292,9 +299,11 @@ files:
|
|
|
292
299
|
- lib/haveapi/params.rb
|
|
293
300
|
- lib/haveapi/public/css/bootstrap-theme.min.css
|
|
294
301
|
- lib/haveapi/public/css/bootstrap.min.css
|
|
302
|
+
- lib/haveapi/public/css/documentation.css
|
|
295
303
|
- lib/haveapi/public/css/highlight.css
|
|
296
304
|
- lib/haveapi/public/doc/protocol.png
|
|
297
305
|
- lib/haveapi/public/js/bootstrap.min.js
|
|
306
|
+
- lib/haveapi/public/js/documentation.js
|
|
298
307
|
- lib/haveapi/public/js/highlight-LICENSE
|
|
299
308
|
- lib/haveapi/public/js/highlight.pack.js
|
|
300
309
|
- lib/haveapi/public/js/highlighter.js
|
|
@@ -305,6 +314,7 @@ files:
|
|
|
305
314
|
- lib/haveapi/resources/action_state.rb
|
|
306
315
|
- lib/haveapi/route.rb
|
|
307
316
|
- lib/haveapi/server.rb
|
|
317
|
+
- lib/haveapi/shared_documentation_helpers.rb
|
|
308
318
|
- lib/haveapi/spec/api_builder.rb
|
|
309
319
|
- lib/haveapi/spec/api_response.rb
|
|
310
320
|
- lib/haveapi/spec/helpers.rb
|
|
@@ -330,17 +340,30 @@ files:
|
|
|
330
340
|
- lib/haveapi/views/doc_sidebars/create-client.erb
|
|
331
341
|
- lib/haveapi/views/doc_sidebars/json-schema.erb
|
|
332
342
|
- lib/haveapi/views/doc_sidebars/protocol.erb
|
|
343
|
+
- lib/haveapi/views/documentation/search_form.erb
|
|
344
|
+
- lib/haveapi/views/documentation/search_index.erb
|
|
345
|
+
- lib/haveapi/views/documentation/search_results.erb
|
|
333
346
|
- lib/haveapi/views/index.erb
|
|
334
347
|
- lib/haveapi/views/main_layout.erb
|
|
348
|
+
- lib/haveapi/views/shared_documentation.erb
|
|
349
|
+
- lib/haveapi/views/shared_sidebar.erb
|
|
335
350
|
- lib/haveapi/views/version_page.erb
|
|
336
351
|
- lib/haveapi/views/version_page/auth_body.erb
|
|
337
352
|
- lib/haveapi/views/version_page/client_auth.erb
|
|
338
353
|
- lib/haveapi/views/version_page/client_example.erb
|
|
339
354
|
- lib/haveapi/views/version_page/client_init.erb
|
|
355
|
+
- lib/haveapi/views/version_page/client_overview.erb
|
|
340
356
|
- lib/haveapi/views/version_page/client_result.erb
|
|
357
|
+
- lib/haveapi/views/version_page/example_panels.erb
|
|
341
358
|
- lib/haveapi/views/version_page/resource_body.erb
|
|
359
|
+
- lib/haveapi/views/version_page/resource_directory.erb
|
|
360
|
+
- lib/haveapi/views/version_page/usage.erb
|
|
342
361
|
- lib/haveapi/views/version_sidebar.erb
|
|
343
362
|
- lib/haveapi/views/version_sidebar/auth_nav.erb
|
|
363
|
+
- lib/haveapi/views/version_sidebar/auth_resource_nav.erb
|
|
364
|
+
- lib/haveapi/views/version_sidebar/authentication_control.erb
|
|
365
|
+
- lib/haveapi/views/version_sidebar/authentication_status.erb
|
|
366
|
+
- lib/haveapi/views/version_sidebar/brand.erb
|
|
344
367
|
- lib/haveapi/views/version_sidebar/resource_nav.erb
|
|
345
368
|
- spec/.rubocop.yml
|
|
346
369
|
- spec/action/authorize_spec.rb
|
|
@@ -349,14 +372,18 @@ files:
|
|
|
349
372
|
- spec/action/validation_http_status_spec.rb
|
|
350
373
|
- spec/action_state_spec.rb
|
|
351
374
|
- spec/authentication/basic_spec.rb
|
|
375
|
+
- spec/authentication/oauth2_chain_spec.rb
|
|
352
376
|
- spec/authentication/oauth2_spec.rb
|
|
377
|
+
- spec/authentication/oauth2_token_validation_spec.rb
|
|
353
378
|
- spec/authentication/token_spec.rb
|
|
354
379
|
- spec/authentication/token_version_routes_spec.rb
|
|
355
380
|
- spec/authorization_spec.rb
|
|
381
|
+
- spec/client_examples/assets/documentation_test.cjs
|
|
356
382
|
- spec/client_examples/assets/highlighter_test.cjs
|
|
357
383
|
- spec/client_examples/assets/tabs_test.cjs
|
|
358
384
|
- spec/client_examples/context_performance_spec.rb
|
|
359
385
|
- spec/client_examples/context_spec.rb
|
|
386
|
+
- spec/client_examples/detail_spec.rb
|
|
360
387
|
- spec/client_examples/dynamic_acceptance.md
|
|
361
388
|
- spec/client_examples/dynamic_acceptance.rb
|
|
362
389
|
- spec/client_examples/dynamic_acceptance_spec.rb
|
|
@@ -366,20 +393,39 @@ files:
|
|
|
366
393
|
- spec/client_examples/dynamic_mounted_paths_spec.rb
|
|
367
394
|
- spec/client_examples/dynamic_python_spec.rb
|
|
368
395
|
- spec/client_examples/go_spec.rb
|
|
396
|
+
- spec/client_examples/presentation_spec.rb
|
|
369
397
|
- spec/client_examples/profile_mount_spec.rb
|
|
370
398
|
- spec/client_examples/profiles_spec.rb
|
|
371
399
|
- spec/client_examples/rust_client_spec.rb
|
|
400
|
+
- spec/client_examples/shell_spec.rb
|
|
372
401
|
- spec/client_examples/structural_schema_spec.rb
|
|
373
402
|
- spec/client_examples/syntax_spec.rb
|
|
374
403
|
- spec/client_examples/ts_generated_client_spec.rb
|
|
375
404
|
- spec/client_examples/typescript_profiles_spec.rb
|
|
376
405
|
- spec/common_spec.rb
|
|
377
406
|
- spec/documentation/auth_filtering_spec.rb
|
|
407
|
+
- spec/documentation/canonical_routes_spec.rb
|
|
378
408
|
- spec/documentation/client_examples_spec.rb
|
|
409
|
+
- spec/documentation/client_overview_spec.rb
|
|
379
410
|
- spec/documentation/current_user_html_escaping_spec.rb
|
|
411
|
+
- spec/documentation/example_variants_spec.rb
|
|
380
412
|
- spec/documentation/examples_spec.rb
|
|
413
|
+
- spec/documentation/fixtures/search_index.json
|
|
381
414
|
- spec/documentation/host_html_escaping_spec.rb
|
|
415
|
+
- spec/documentation/identity_and_guides_spec.rb
|
|
416
|
+
- spec/documentation/identity_context_spec.rb
|
|
417
|
+
- spec/documentation/navigation_spec.rb
|
|
418
|
+
- spec/documentation/oauth_fixture_spec.rb
|
|
419
|
+
- spec/documentation/oauth_spec.rb
|
|
420
|
+
- spec/documentation/oauth_transport_spec.rb
|
|
382
421
|
- spec/documentation/performance_spec.rb
|
|
422
|
+
- spec/documentation/reference_headings_spec.rb
|
|
423
|
+
- spec/documentation/search_index_routes_spec.rb
|
|
424
|
+
- spec/documentation/search_index_spec.rb
|
|
425
|
+
- spec/documentation/search_routes_spec.rb
|
|
426
|
+
- spec/documentation/search_spec.rb
|
|
427
|
+
- spec/documentation/shared_pages_spec.rb
|
|
428
|
+
- spec/documentation/validators_spec.rb
|
|
383
429
|
- spec/documentation_spec.rb
|
|
384
430
|
- spec/envelope_spec.rb
|
|
385
431
|
- spec/extensions/action_exceptions_spec.rb
|
|
@@ -391,6 +437,8 @@ files:
|
|
|
391
437
|
- spec/parameters/typed_spec.rb
|
|
392
438
|
- spec/params_spec.rb
|
|
393
439
|
- spec/performance/comparator_spec.rb
|
|
440
|
+
- spec/performance/documentation_identity_fixture_spec.rb
|
|
441
|
+
- spec/performance/documentation_shapes_spec.rb
|
|
394
442
|
- spec/performance/endpoint_contract_spec.rb
|
|
395
443
|
- spec/performance/endpoint_scaling_spec.rb
|
|
396
444
|
- spec/performance/event_baseline_spec.rb
|
|
@@ -417,6 +465,7 @@ files:
|
|
|
417
465
|
- test_support/all_client_performance_fixture.rb
|
|
418
466
|
- test_support/client_test_api.rb
|
|
419
467
|
- test_support/client_test_server.rb
|
|
468
|
+
- test_support/documentation_oauth_fixture.rb
|
|
420
469
|
- test_support/documentation_performance_fixture.rb
|
|
421
470
|
- test_support/dynamic_documentation_api.rb
|
|
422
471
|
- test_support/dynamic_protocol_spec.rb
|