@Test public void testArrayResponse() { Swagger swagger = new Swagger(); ArrayProperty schema = new ArrayProperty(); schema.setItems(new ObjectProperty().property("name", new StringProperty())); swagger.path( "/foo/baz", new Path() .get( new Operation() .response( 200, new Response() .vendorExtension("x-foo", "bar") .description("it works!") .schema(schema)))); new InlineModelResolver().flatten(swagger); Response response = swagger.getPaths().get("/foo/baz").getGet().getResponses().get("200"); assertTrue(response.getSchema() instanceof ArrayProperty); ArrayProperty am = (ArrayProperty) response.getSchema(); Property items = am.getItems(); assertTrue(items instanceof ObjectProperty); ObjectProperty op = (ObjectProperty) items; Property name = op.getProperties().get("name"); assertTrue(name instanceof StringProperty); }
@Test public void resolveInlineArrayBodyParameter() throws Exception { Swagger swagger = new Swagger(); swagger.path( "/hello", new Path() .get( new Operation() .parameter( new BodyParameter() .name("body") .schema( new ArrayModel() .items( new ObjectProperty() .property( "address", new ObjectProperty() .property("street", new StringProperty()))))))); new InlineModelResolver().flatten(swagger); Parameter param = swagger.getPaths().get("/hello").getGet().getParameters().get(0); assertTrue(param instanceof BodyParameter); BodyParameter bp = (BodyParameter) param; Model schema = bp.getSchema(); assertTrue(schema instanceof ArrayModel); ArrayModel am = (ArrayModel) schema; Property inner = am.getItems(); ObjectProperty op = (ObjectProperty) inner; Property name = op.getProperties().get("address"); assertTrue(name instanceof RefProperty); Model model = swagger.getDefinitions().get("hello_address"); assertNotNull(model); }
@Test public void resolveInlineArrayResponse() throws Exception { Swagger swagger = new Swagger(); swagger.path( "/foo/baz", new Path() .get( new Operation() .response( 200, new Response() .vendorExtension("x-foo", "bar") .description("it works!") .schema( new ArrayProperty() .items( new ObjectProperty() .property("name", new StringProperty())))))); new InlineModelResolver().flatten(swagger); Response response = swagger.getPaths().get("/foo/baz").getGet().getResponses().get("200"); assertNotNull(response); assertNotNull(response.getSchema()); Property responseProperty = response.getSchema(); // no need to flatten more assertTrue(responseProperty instanceof ArrayProperty); ArrayProperty ap = (ArrayProperty) responseProperty; Property p = ap.getItems(); assertNotNull(p); ObjectProperty innerModel = (ObjectProperty) p; assertTrue(innerModel.getProperties().size() == 1); assertNotNull(innerModel.getProperties().get("name")); }
@Test public void testInlineMapResponseWithObjectProperty() throws Exception { Swagger swagger = new Swagger(); MapProperty schema = new MapProperty(); schema.setAdditionalProperties(new ObjectProperty().property("name", new StringProperty())); swagger.path( "/foo/baz", new Path() .get( new Operation() .response( 200, new Response() .vendorExtension("x-foo", "bar") .description("it works!") .schema(schema)))); new InlineModelResolver().flatten(swagger); Response response = swagger.getPaths().get("/foo/baz").getGet().getResponses().get("200"); Property property = response.getSchema(); assertTrue(property instanceof RefProperty); Model inline = swagger.getDefinitions().get("inline_response_200"); assertTrue(inline instanceof ModelImpl); ModelImpl impl = (ModelImpl) inline; Property innerProperty = impl.getAdditionalProperties(); assertTrue(innerProperty instanceof ObjectProperty); ObjectProperty obj = (ObjectProperty) innerProperty; Property name = obj.getProperties().get("name"); assertTrue(name instanceof StringProperty); }
// UNUSED void appendServiceActionPromptTo(final ObjectProperty serviceMembers, final ObjectAction action) { String actionId = action.getId(); serviceMembers.property( actionId, new ObjectProperty() .property("id", stringPropertyEnum(actionId)) .property("memberType", stringPropertyEnum("action")) .property( "links", new ObjectProperty() .property( "rel", stringPropertyEnum( String.format( "urn:org.restfulobjects:rels/details;action=%s", actionId))) .property("href", stringPropertyEnum(String.format("actions/%s", actionId)))) .property("method", stringPropertyEnum("GET")) .property( "type", stringPropertyEnum( "application/json;profile=urn:org.restfulobjects:repr-types/object-action"))); }