Skip to content

Commit dd956e3

Browse files
author
Anton Benkevich
committed
Backup, adding more tests
1 parent 6205ec5 commit dd956e3

File tree

3 files changed

+93
-53
lines changed

3 files changed

+93
-53
lines changed

almdrlib/client.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -829,10 +829,10 @@ def add_xof(item):
829829
else:
830830
return item
831831

832-
allprops = reduce(lambda acc, s: acc + list(s.get(OpenAPIKeyWord.PROPERTIES).items()), compound_schema, [])
832+
allprops = reduce(lambda acc, s: acc + list(s.get(OpenAPIKeyWord.PROPERTIES, {}).items()), compound_schema, [])
833833
reduced = reduce(reduce_props, allprops, OrderedDict())
834834
compound_props = OrderedDict(map(add_xof, reduced.items()))
835-
properties = compound_props
835+
properties = compound_props
836836

837837
if not properties:
838838
properties = OrderedDict({

tests/apis/testapi/testapi.v1.yaml

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,35 @@ servers:
1616
description: integration
1717
x-alertlogic-session-endpoint: true
1818
paths:
19+
'/testapi/v1/postdata':
20+
post:
21+
operationId: post_data_compound
22+
requestBody:
23+
content:
24+
application/json:
25+
schema:
26+
oneOf:
27+
- type: object
28+
properties:
29+
prop:
30+
type: string
31+
additionalProperties: true
32+
- type: object
33+
properties:
34+
prop:
35+
type: integer
36+
- type: string
37+
responses:
38+
'200':
39+
description: 200 resp
40+
content:
41+
application/json:
42+
schema:
43+
type: object
44+
properties:
45+
prop:
46+
type: string
47+
1948
'/testapi/v1/{account_id}/test_get_data':
2049
get:
2150
summary: Test Get Data Operation

tests/test_open_api_support.py

Lines changed: 62 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
from almdrlib.client import Config
1212
from almdrlib.client import Operation
1313
from alsdkdefs import OpenAPIKeyWord
14-
14+
from collections import OrderedDict
1515

1616
class TestSdk_open_api_support(unittest.TestCase):
1717
"""Tests for `python_boilerplate` package."""
@@ -32,54 +32,65 @@ def setUp(self):
3232
def tearDown(self):
3333
"""Tear down test fixtures, if any."""
3434

35-
def test_000_getting_schemas(self):
36-
"""Test listing services."""
37-
self.assertTrue(len(Session.get_service_api("testapi")))
38-
print(f"SCHEMA: {json.dumps(Session.get_service_api('testapi'))}")
39-
40-
def test_001_test_client_initialization(self):
41-
"""Test OpenAPI Client initialization."""
35+
# def test_000_getting_schemas(self):
36+
# """Test listing services."""
37+
# self.assertTrue(len(Session.get_service_api("testapi")))
38+
# print(f"SCHEMA: {json.dumps(Session.get_service_api('testapi'))}")
39+
#
40+
# def test_001_test_client_initialization(self):
41+
# """Test OpenAPI Client initialization."""
42+
# client = Client(self._service_name)
43+
# self.assertIsInstance(client, Client)
44+
# self.assertIsNotNone(client.description)
45+
# self.assertNotEqual(client.name, "")
46+
# self.assertIsNotNone(client.server)
47+
# self.assertNotEqual(client.info, {})
48+
# self.assertIsNotNone(client.operations)
49+
# self.assertNotEqual(client.spec, {})
50+
# self.assertNotEqual(client.operations, {})
51+
#
52+
# def test_002_test_operations_schema(self):
53+
# """Test Operations Schema Validity."""
54+
# client = Client(self._service_name)
55+
#
56+
# for t_operation_name, t_operation_schema in \
57+
# self.test_data['operations'].items():
58+
# operation = client.operations.get(t_operation_name)
59+
# self.assertIsInstance(operation, Operation)
60+
# self.assertEqual(operation.operation_id, t_operation_name)
61+
# self.assertEqual(operation.description,
62+
# t_operation_schema[OpenAPIKeyWord.DESCRIPTION])
63+
#
64+
# schema = operation.get_schema()
65+
# self.assertIsNot(schema, {})
66+
#
67+
# t_operation_parameters = t_operation_schema[
68+
# OpenAPIKeyWord.PARAMETERS]
69+
#
70+
# operation_parameters = schema[OpenAPIKeyWord.PARAMETERS]
71+
# for name, value in t_operation_parameters.items():
72+
# self.assertEqual(value, operation_parameters[name])
73+
#
74+
# if OpenAPIKeyWord.CONTENT in t_operation_schema:
75+
# t_operation_content = t_operation_schema[
76+
# OpenAPIKeyWord.CONTENT]
77+
# operation_content = schema[OpenAPIKeyWord.CONTENT]
78+
# for name, value in t_operation_content.items():
79+
# self.assertEqual(value, operation_content[name])
80+
#
81+
# def test_003_default_objects_creation(self):
82+
# """Checks initialisation at least happens"""
83+
# self.assertIsInstance(Session(), Session)
84+
# self.assertIsInstance(Config(), Config)
85+
# self.assertIsInstance(Client(self._service_name), Client)
86+
87+
def test_004_test_operations_compound_schema(self):
88+
"""Test request body properties are properly normalized when schema is compound at the top level"""
4289
client = Client(self._service_name)
43-
self.assertIsInstance(client, Client)
44-
self.assertIsNotNone(client.description)
45-
self.assertNotEqual(client.name, "")
46-
self.assertIsNotNone(client.server)
47-
self.assertNotEqual(client.info, {})
48-
self.assertIsNotNone(client.operations)
49-
self.assertNotEqual(client.spec, {})
50-
self.assertNotEqual(client.operations, {})
51-
52-
def test_002_test_operations_schema(self):
53-
"""Test Operations Schema Validity."""
54-
client = Client(self._service_name)
55-
56-
for t_operation_name, t_operation_schema in \
57-
self.test_data['operations'].items():
58-
operation = client.operations.get(t_operation_name)
59-
self.assertIsInstance(operation, Operation)
60-
self.assertEqual(operation.operation_id, t_operation_name)
61-
self.assertEqual(operation.description,
62-
t_operation_schema[OpenAPIKeyWord.DESCRIPTION])
63-
64-
schema = operation.get_schema()
65-
self.assertIsNot(schema, {})
66-
67-
t_operation_parameters = t_operation_schema[
68-
OpenAPIKeyWord.PARAMETERS]
69-
70-
operation_parameters = schema[OpenAPIKeyWord.PARAMETERS]
71-
for name, value in t_operation_parameters.items():
72-
self.assertEqual(value, operation_parameters[name])
73-
74-
if OpenAPIKeyWord.CONTENT in t_operation_schema:
75-
t_operation_content = t_operation_schema[
76-
OpenAPIKeyWord.CONTENT]
77-
operation_content = schema[OpenAPIKeyWord.CONTENT]
78-
for name, value in t_operation_content.items():
79-
self.assertEqual(value, operation_content[name])
80-
81-
def test_003_default_objects_creation(self):
82-
"""Checks initialisation at least happens"""
83-
self.assertIsInstance(Session(), Session)
84-
self.assertIsInstance(Config(), Config)
85-
self.assertIsInstance(Client(self._service_name), Client)
90+
operation = client.operations.get('post_data_compound')
91+
self.assertEqual(OrderedDict([('prop',
92+
OrderedDict([('oneOf', [
93+
OrderedDict([('type', 'integer')]),
94+
OrderedDict([('type', 'string')])
95+
])]))]),
96+
operation.body._content['application/json']._properties)

0 commit comments

Comments
 (0)