def test_json_schema_object_cached_ref_url_yaml(mocker): parser = JsonSchemaParser('') obj = JsonSchemaObject.parse_obj({ 'type': 'object', 'properties': { 'pet': { '$ref': 'https://example.org/schema.yaml#/definitions/Pet' }, 'user': { '$ref': 'https://example.org/schema.yaml#/definitions/User' }, }, }) mock_get = mocker.patch('httpx.get') mock_get.return_value.text = yaml.safe_dump( json.load((DATA_PATH / 'user.json').open())) parser.parse_ref(obj, []) assert (dump_templates(list(parser.results)) == '''class Pet(BaseModel): name: Optional[str] = Field(None, examples=['dog', 'cat']) class User(BaseModel): name: Optional[str] = Field(None, example='ken')''') mock_get.assert_called_once_with('https://example.org/schema.yaml', )
def test_json_schema_object_ref_url_json(mocker): parser = JsonSchemaParser('') obj = JsonSchemaObject.parse_obj( {'$ref': 'https://example.com/person.schema.json#/definitions/User'}) mock_get = mocker.patch('httpx.get') mock_get.return_value.text = json.dumps( { "$id": "https://example.com/person.schema.json", "$schema": "http://json-schema.org/draft-07/schema#", "definitions": { "User": { "type": "object", "properties": { "name": { "type": "string", } }, } }, }, ) parser.parse_ref(obj, ['Model']) assert (dump_templates(list(parser.results)) == '''class User(BaseModel): name: Optional[str] = None''') parser.parse_ref(obj, ['Model']) mock_get.assert_has_calls([ call('https://example.com/person.schema.json'), ])
def test_json_schema_parser_parse_ref(): parser = JsonSchemaParser(BaseModel, CustomRootType) parser.parse_raw_obj = Mock() external_parent_path = Path(DATA_PATH / 'external_parent.json') parser.base_path = external_parent_path.parent parser.excludes_ref_path = set() external_parent = external_parent_path.read_text() obj = JsonSchemaObject.parse_raw(external_parent) parser.parse_ref(obj) parser.parse_raw_obj.assert_has_calls([ call( 'Yaml', { 'properties': { 'firstName': { 'type': 'string' } }, 'type': 'object' }, ), call( 'Json', { 'properties': { 'firstName': { 'type': 'string' } }, 'type': 'object' }, ), ])
def test_json_schema_object_ref_url(): parser = JsonSchemaParser(BaseModel, CustomRootType, data_model_field_type=DataModelField) obj = JsonSchemaObject.parse_obj({'$ref': 'https://example.org'}) with pytest.raises(NotImplementedError): parser.parse_ref(obj)
def test_json_schema_parser_parse_ref(): parser = JsonSchemaParser(BaseModel, CustomRootType, data_model_field_type=DataModelField) parser.parse_raw_obj = Mock() external_parent_path = Path(DATA_PATH / 'external_parent.json') parser.base_path = external_parent_path.parent parser.excludes_ref_path = set() external_parent = external_parent_path.read_text() obj = JsonSchemaObject.parse_raw(external_parent) parser.parse_ref(obj, [])
def test_json_schema_object_ref_url_yaml(mocker): parser = JsonSchemaParser(BaseModel, CustomRootType, data_model_field_type=DataModelField) obj = JsonSchemaObject.parse_obj( {'$ref': 'https://example.org/schema.yaml#/definitions/User'}) mock_get = mocker.patch('httpx.get') mock_get.return_value.text = yaml.safe_dump( json.load((DATA_PATH / 'user.json').open())) parser.parse_ref(obj, ['User']) assert (dump_templates(list(parser.results)) == '''class User(BaseModel): name: Optional[str] = None''') parser.parse_ref(obj, []) mock_get.assert_called_once_with('https://example.org/schema.yaml', )