Skip to content

Commit ec73e44

Browse files
Account for edge case where apiVersion param has no default (#678)
1 parent f5d1092 commit ec73e44

File tree

3 files changed

+44
-1
lines changed

3 files changed

+44
-1
lines changed

linodecli/baked/operation.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -447,7 +447,13 @@ def _resolve_api_version(
447447
None,
448448
)
449449
if version_param is not None:
450-
return version_param.schema.default
450+
schema = version_param.schema
451+
452+
if schema.default:
453+
return schema.default
454+
455+
if schema.enum and len(schema.enum) > 0:
456+
return schema.enum[0]
451457

452458
return None
453459

tests/fixtures/api_url_components_test.yaml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,3 +46,21 @@ paths:
4646
description: foobar
4747
content:
4848
application/json: {}
49+
50+
/{apiVersion}/bar:
51+
parameters:
52+
- name: apiVersion
53+
in: path
54+
required: true
55+
schema:
56+
type: string
57+
enum:
58+
- v1000
59+
- v1000beta
60+
get:
61+
operationId: barGet
62+
responses:
63+
'200':
64+
description: foobar
65+
content:
66+
application/json: {}

tests/unit/test_operation.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -296,6 +296,25 @@ def test_resolve_api_components(self, get_openapi_for_api_components_tests):
296296
operation=root.paths["/{apiVersion}/bar/foo"].post, params=[]
297297
) == ("http://localhost", "/{apiVersion}/bar/foo", "v100beta")
298298

299+
def test_resolve_api_version(self, get_openapi_for_api_components_tests):
300+
root = get_openapi_for_api_components_tests
301+
302+
assert (
303+
OpenAPIOperation._resolve_api_version(
304+
params=root.paths["/{apiVersion}/bar/foo"].parameters,
305+
server_url="http://localhost",
306+
)
307+
== "v9canary"
308+
)
309+
310+
assert (
311+
OpenAPIOperation._resolve_api_version(
312+
params=root.paths["/{apiVersion}/bar"].parameters,
313+
server_url="http://localhost",
314+
)
315+
== "v1000"
316+
)
317+
299318
def test_resolve_docs_url_legacy(self, get_openapi_for_docs_url_tests):
300319
root = get_openapi_for_docs_url_tests
301320

0 commit comments

Comments
 (0)