diff --git a/pom.xml b/pom.xml
index 58eb9d9..0aa808e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -201,6 +201,18 @@
${junit.version}
test
+
+ org.mock-server
+ mockserver-netty
+ 5.15.0
+ test
+
+
+ org.mock-server
+ mockserver-client-java
+ 5.15.0
+ test
+
diff --git a/src/test/java/com/mascix/swaggerific/SwaggerGuiTest.java b/src/test/java/com/mascix/swaggerific/SwaggerGuiTest.java
index 67ecd4d..9a7f3cd 100644
--- a/src/test/java/com/mascix/swaggerific/SwaggerGuiTest.java
+++ b/src/test/java/com/mascix/swaggerific/SwaggerGuiTest.java
@@ -3,8 +3,11 @@
import javafx.application.Platform;
import javafx.scene.input.KeyCode;
import javafx.stage.Stage;
+import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockserver.client.MockServerClient;
+import org.mockserver.model.Header;
import org.testfx.api.FxAssert;
import org.testfx.api.FxRobot;
import org.testfx.framework.junit5.ApplicationExtension;
@@ -12,13 +15,19 @@
import org.testfx.matcher.control.TextInputControlMatchers;
import java.io.IOException;
+import java.util.Objects;
import static org.hamcrest.Matchers.containsString;
+import static org.mockserver.integration.ClientAndServer.startClientAndServer;
+import static org.mockserver.model.HttpRequest.request;
+import static org.mockserver.model.HttpResponse.response;
import static org.testfx.matcher.base.NodeMatchers.isEnabled;
@ExtendWith(ApplicationExtension.class)
class SwaggerGuiTest {
+ private static MockServerClient mockServer;
+
/**
* Will be called with {@code @Before} semantics, i. e. before each test method.
*
@@ -26,15 +35,41 @@ class SwaggerGuiTest {
*/
@Start
private void start(Stage stage) throws IOException {
+ String jsonBody = new String(Objects.requireNonNull(getClass().getResourceAsStream("/petstore-swagger.json")).readAllBytes());
+ String findByStatusResponse = new String(Objects.requireNonNull(getClass().getResourceAsStream("/findbystatus-response.json")).readAllBytes());
+ mockServer = startClientAndServer(1080);
+ mockServer.hasStarted();
+ mockServer.when(
+ request()
+ .withMethod("GET")
+ .withPath("/petstore-swagger.json")
+ )
+ .respond(
+ response()
+ .withStatusCode(200)
+ .withHeaders(
+ new Header("Content-Type", "application/json; charset=utf-8"),
+ new Header("Cache-Control", "public, max-age=86400"))
+ .withBody(jsonBody)
+ );
+
+ mockServer.when(request("/petstore-pet/findByStatus")).respond(response(findByStatusResponse));
+
Platform.isNestedLoopRunning();
SwaggerApplication swaggerApplication = new SwaggerApplication();
swaggerApplication.start(stage);
stage.show();
}
+ @AfterAll
+ public static void stopServer() {
+ mockServer.stop();
+ }
+
@Test
void click_treeview_call_get(FxRobot robot) {
robot.push(KeyCode.CONTROL, KeyCode.O);
+ robot.write("http://127.0.0.1:1080/petstore-swagger.json");
robot.push(KeyCode.ENTER);
robot.sleep(100);
System.out.println(robot.lookup("#treePaths").query());
diff --git a/src/test/resources/findbystatus-response.json b/src/test/resources/findbystatus-response.json
new file mode 100644
index 0000000..d1ebc40
--- /dev/null
+++ b/src/test/resources/findbystatus-response.json
@@ -0,0 +1,235 @@
+[
+ {
+ "id": 9,
+ "category": {
+ "id": 0,
+ "name": "cats"
+ },
+ "name": "King Kong",
+ "photoUrls": [
+ "string"
+ ],
+ "tags": [
+ {
+ "id": 0,
+ "name": "string"
+ }
+ ],
+ "status": "sold"
+ },
+ {
+ "id": 9223372036854775000,
+ "category": {
+ "id": -34705574,
+ "name": "consectetur ea fugiat"
+ },
+ "name": "doggie",
+ "photoUrls": [
+ "cillum qui pariatur incididunt",
+ "laboris re"
+ ],
+ "tags": [
+ {
+ "id": 8890229,
+ "name": "eu"
+ },
+ {
+ "id": 19670278,
+ "name": "ipsum Duis anim veniam"
+ }
+ ],
+ "status": "sold"
+ },
+ {
+ "id": 1111,
+ "category": {
+ "id": 1111,
+ "name": ""
+ },
+ "name": "doggie",
+ "photoUrls": [
+ "string"
+ ],
+ "tags": [
+ {
+ "id": 0,
+ "name": "ToToToTo"
+ }
+ ],
+ "status": "sold"
+ },
+ {
+ "id": 922337203685951900,
+ "name": "Chapa (mtkp-edition)",
+ "photoUrls": [
+ "./doggy.png"
+ ],
+ "tags": [],
+ "status": "sold"
+ },
+ {
+ "id": 7574746,
+ "category": {
+ "id": 1,
+ "name": "Dog"
+ },
+ "name": "Hardyyy",
+ "photoUrls": [
+ "https://i.pinimg.com/originals/5c/2c/44/5c2c44f16da1caf134c00bc4f9c72ea0.jpg"
+ ],
+ "tags": [
+ {
+ "id": 7805,
+ "name": "Mainecoon"
+ }
+ ],
+ "status": "sold"
+ },
+ {
+ "id": 12084391,
+ "category": {
+ "id": -48583,
+ "name": "cupidatat amet commodo"
+ },
+ "name": "doggie",
+ "photoUrls": [
+ "fugiat Ut eu",
+ "exercitation nostr"
+ ],
+ "tags": [
+ {
+ "id": -27183415,
+ "name": "e"
+ },
+ {
+ "id": 86979382,
+ "name": "in anim consectetur Lorem ut"
+ }
+ ],
+ "status": "sold"
+ },
+ {
+ "id": 822922,
+ "category": {
+ "id": -69794609,
+ "name": "irure laborum id proident incididunt"
+ },
+ "name": "doggie",
+ "photoUrls": [
+ "dolore ipsum qui",
+ "fugiat non eiusmod Duis nisi"
+ ],
+ "tags": [
+ {
+ "id": -24720491,
+ "name": "nisi"
+ },
+ {
+ "id": 87603503,
+ "name": "ut sint enim cillum nisi"
+ }
+ ],
+ "status": "sold"
+ },
+ {
+ "id": 561,
+ "name": "Bella",
+ "photoUrls": [
+ "string"
+ ],
+ "tags": [],
+ "status": "sold"
+ },
+ {
+ "id": 922337203685477600,
+ "category": {
+ "id": 5,
+ "name": "dog"
+ },
+ "name": "GOG",
+ "photoUrls": [],
+ "tags": [],
+ "status": "sold"
+ },
+ {
+ "id": 9223372036854762000,
+ "category": {
+ "id": 4,
+ "name": "Bird"
+ },
+ "name": "Jack",
+ "photoUrls": [
+ "url"
+ ],
+ "tags": [],
+ "status": "sold"
+ },
+ {
+ "id": 18,
+ "category": {
+ "id": 1,
+ "name": "Not selected"
+ },
+ "name": "Silviu",
+ "photoUrls": [
+ "data:image/jpeg;base64,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"
+ ],
+ "tags": [
+ {
+ "id": 1,
+ "name": "tag1"
+ }
+ ],
+ "status": "sold"
+ },
+ {
+ "id": 19,
+ "category": {
+ "id": 5,
+ "name": "Fish"
+ },
+ "name": "Silviu2",
+ "photoUrls": [
+ "data:image/jpeg;base64,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",
+ "data:image/jpeg;base64,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"
+ ],
+ "tags": [
+ {
+ "id": 1,
+ "name": "tag1"
+ }
+ ],
+ "status": "sold"
+ },
+ {
+ "id": 20,
+ "category": {
+ "id": 1,
+ "name": "Not selected"
+ },
+ "name": "SilviuEduard",
+ "photoUrls": [
+ "data:image/jpeg;base64,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",
+ "data:image/jpeg;base64,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",
+ "data:image/jpeg;base64,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"
+ ],
+ "tags": [
+ {
+ "id": 1,
+ "name": "taaaaaag"
+ }
+ ],
+ "status": "sold"
+ },
+ {
+ "id": 1,
+ "category": {
+ "id": 1,
+ "name": "cat"
+ },
+ "name": "dog",
+ "photoUrls": [],
+ "tags": [],
+ "status": "sold"
+ }
+]
\ No newline at end of file
diff --git a/src/test/resources/petstore-swagger.json b/src/test/resources/petstore-swagger.json
index a5d2631..4d3c061 100644
--- a/src/test/resources/petstore-swagger.json
+++ b/src/test/resources/petstore-swagger.json
@@ -42,145 +42,6 @@
"http"
],
"paths": {
- "/pet/{petId}": {
- "get": {
- "tags": [
- "pet"
- ],
- "summary": "Find pet by ID",
- "description": "Returns a single pet",
- "operationId": "getPetById",
- "produces": [
- "application/json",
- "application/xml"
- ],
- "parameters": [
- {
- "name": "petId",
- "in": "path",
- "description": "ID of pet to return",
- "required": true,
- "type": "integer",
- "format": "int64"
- }
- ],
- "responses": {
- "200": {
- "description": "successful operation",
- "schema": {
- "$ref": "#/definitions/Pet"
- }
- },
- "400": {
- "description": "Invalid ID supplied"
- },
- "404": {
- "description": "Pet not found"
- }
- },
- "security": [
- {
- "api_key": []
- }
- ]
- },
- "post": {
- "tags": [
- "pet"
- ],
- "summary": "Updates a pet in the store with form data",
- "description": "",
- "operationId": "updatePetWithForm",
- "consumes": [
- "application/x-www-form-urlencoded"
- ],
- "produces": [
- "application/json",
- "application/xml"
- ],
- "parameters": [
- {
- "name": "petId",
- "in": "path",
- "description": "ID of pet that needs to be updated",
- "required": true,
- "type": "integer",
- "format": "int64"
- },
- {
- "name": "name",
- "in": "formData",
- "description": "Updated name of the pet",
- "required": false,
- "type": "string"
- },
- {
- "name": "status",
- "in": "formData",
- "description": "Updated status of the pet",
- "required": false,
- "type": "string"
- }
- ],
- "responses": {
- "405": {
- "description": "Invalid input"
- }
- },
- "security": [
- {
- "petstore_auth": [
- "write:pets",
- "read:pets"
- ]
- }
- ]
- },
- "delete": {
- "tags": [
- "pet"
- ],
- "summary": "Deletes a pet",
- "description": "",
- "operationId": "deletePet",
- "produces": [
- "application/json",
- "application/xml"
- ],
- "parameters": [
- {
- "name": "api_key",
- "in": "header",
- "required": false,
- "type": "string"
- },
- {
- "name": "petId",
- "in": "path",
- "description": "Pet id to delete",
- "required": true,
- "type": "integer",
- "format": "int64"
- }
- ],
- "responses": {
- "400": {
- "description": "Invalid ID supplied"
- },
- "404": {
- "description": "Pet not found"
- }
- },
- "security": [
- {
- "petstore_auth": [
- "write:pets",
- "read:pets"
- ]
- }
- ]
- }
- },
"/pet/{petId}/uploadImage": {
"post": {
"tags": [
@@ -430,28 +291,40 @@
"deprecated": true
}
},
- "/store/inventory": {
+ "/pet/{petId}": {
"get": {
"tags": [
- "store"
+ "pet"
],
- "summary": "Returns pet inventories by status",
- "description": "Returns a map of status codes to quantities",
- "operationId": "getInventory",
+ "summary": "Find pet by ID",
+ "description": "Returns a single pet",
+ "operationId": "getPetById",
"produces": [
- "application/json"
+ "application/json",
+ "application/xml"
+ ],
+ "parameters": [
+ {
+ "name": "petId",
+ "in": "path",
+ "description": "ID of pet to return",
+ "required": true,
+ "type": "integer",
+ "format": "int64"
+ }
],
- "parameters": [],
"responses": {
"200": {
"description": "successful operation",
"schema": {
- "type": "object",
- "additionalProperties": {
- "type": "integer",
- "format": "int32"
- }
+ "$ref": "#/definitions/Pet"
}
+ },
+ "400": {
+ "description": "Invalid ID supplied"
+ },
+ "404": {
+ "description": "Pet not found"
}
},
"security": [
@@ -459,6 +332,141 @@
"api_key": []
}
]
+ },
+ "post": {
+ "tags": [
+ "pet"
+ ],
+ "summary": "Updates a pet in the store with form data",
+ "description": "",
+ "operationId": "updatePetWithForm",
+ "consumes": [
+ "application/x-www-form-urlencoded"
+ ],
+ "produces": [
+ "application/json",
+ "application/xml"
+ ],
+ "parameters": [
+ {
+ "name": "petId",
+ "in": "path",
+ "description": "ID of pet that needs to be updated",
+ "required": true,
+ "type": "integer",
+ "format": "int64"
+ },
+ {
+ "name": "name",
+ "in": "formData",
+ "description": "Updated name of the pet",
+ "required": false,
+ "type": "string"
+ },
+ {
+ "name": "status",
+ "in": "formData",
+ "description": "Updated status of the pet",
+ "required": false,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "405": {
+ "description": "Invalid input"
+ }
+ },
+ "security": [
+ {
+ "petstore_auth": [
+ "write:pets",
+ "read:pets"
+ ]
+ }
+ ]
+ },
+ "delete": {
+ "tags": [
+ "pet"
+ ],
+ "summary": "Deletes a pet",
+ "description": "",
+ "operationId": "deletePet",
+ "produces": [
+ "application/json",
+ "application/xml"
+ ],
+ "parameters": [
+ {
+ "name": "api_key",
+ "in": "header",
+ "required": false,
+ "type": "string"
+ },
+ {
+ "name": "petId",
+ "in": "path",
+ "description": "Pet id to delete",
+ "required": true,
+ "type": "integer",
+ "format": "int64"
+ }
+ ],
+ "responses": {
+ "400": {
+ "description": "Invalid ID supplied"
+ },
+ "404": {
+ "description": "Pet not found"
+ }
+ },
+ "security": [
+ {
+ "petstore_auth": [
+ "write:pets",
+ "read:pets"
+ ]
+ }
+ ]
+ }
+ },
+ "/store/order": {
+ "post": {
+ "tags": [
+ "store"
+ ],
+ "summary": "Place an order for a pet",
+ "description": "",
+ "operationId": "placeOrder",
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json",
+ "application/xml"
+ ],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "description": "order placed for purchasing the pet",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/Order"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "successful operation",
+ "schema": {
+ "$ref": "#/definitions/Order"
+ }
+ },
+ "400": {
+ "description": "Invalid Order"
+ }
+ }
}
},
"/store/order/{orderId}": {
@@ -532,14 +540,45 @@
}
}
},
- "/store/order": {
- "post": {
+ "/store/inventory": {
+ "get": {
"tags": [
"store"
],
- "summary": "Place an order for a pet",
+ "summary": "Returns pet inventories by status",
+ "description": "Returns a map of status codes to quantities",
+ "operationId": "getInventory",
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "successful operation",
+ "schema": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+ }
+ },
+ "security": [
+ {
+ "api_key": []
+ }
+ ]
+ }
+ },
+ "/user/createWithArray": {
+ "post": {
+ "tags": [
+ "user"
+ ],
+ "summary": "Creates list of users with given input array",
"description": "",
- "operationId": "placeOrder",
+ "operationId": "createUsersWithArrayInput",
"consumes": [
"application/json"
],
@@ -551,22 +590,55 @@
{
"in": "body",
"name": "body",
- "description": "order placed for purchasing the pet",
+ "description": "List of user object",
"required": true,
"schema": {
- "$ref": "#/definitions/Order"
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/User"
+ }
}
}
],
"responses": {
- "200": {
- "description": "successful operation",
+ "default": {
+ "description": "successful operation"
+ }
+ }
+ }
+ },
+ "/user/createWithList": {
+ "post": {
+ "tags": [
+ "user"
+ ],
+ "summary": "Creates list of users with given input array",
+ "description": "",
+ "operationId": "createUsersWithListInput",
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json",
+ "application/xml"
+ ],
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "description": "List of user object",
+ "required": true,
"schema": {
- "$ref": "#/definitions/Order"
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/User"
+ }
}
- },
- "400": {
- "description": "Invalid Order"
+ }
+ ],
+ "responses": {
+ "default": {
+ "description": "successful operation"
}
}
}
@@ -678,75 +750,6 @@
}
}
},
- "/user": {
- "post": {
- "tags": [
- "user"
- ],
- "summary": "Create user",
- "description": "This can only be done by the logged in user.",
- "operationId": "createUser",
- "consumes": [
- "application/json"
- ],
- "produces": [
- "application/json",
- "application/xml"
- ],
- "parameters": [
- {
- "in": "body",
- "name": "body",
- "description": "Created user object",
- "required": true,
- "schema": {
- "$ref": "#/definitions/User"
- }
- }
- ],
- "responses": {
- "default": {
- "description": "successful operation"
- }
- }
- }
- },
- "/user/createWithList": {
- "post": {
- "tags": [
- "user"
- ],
- "summary": "Creates list of users with given input array",
- "description": "",
- "operationId": "createUsersWithListInput",
- "consumes": [
- "application/json"
- ],
- "produces": [
- "application/json",
- "application/xml"
- ],
- "parameters": [
- {
- "in": "body",
- "name": "body",
- "description": "List of user object",
- "required": true,
- "schema": {
- "type": "array",
- "items": {
- "$ref": "#/definitions/User"
- }
- }
- }
- ],
- "responses": {
- "default": {
- "description": "successful operation"
- }
- }
- }
- },
"/user/login": {
"get": {
"tags": [
@@ -820,14 +823,14 @@
}
}
},
- "/user/createWithArray": {
+ "/user": {
"post": {
"tags": [
"user"
],
- "summary": "Creates list of users with given input array",
- "description": "",
- "operationId": "createUsersWithArrayInput",
+ "summary": "Create user",
+ "description": "This can only be done by the logged in user.",
+ "operationId": "createUser",
"consumes": [
"application/json"
],
@@ -839,13 +842,10 @@
{
"in": "body",
"name": "body",
- "description": "List of user object",
+ "description": "Created user object",
"required": true,
"schema": {
- "type": "array",
- "items": {
- "$ref": "#/definitions/User"
- }
+ "$ref": "#/definitions/User"
}
}
],
@@ -874,6 +874,21 @@
}
},
"definitions": {
+ "ApiResponse": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "integer",
+ "format": "int32"
+ },
+ "type": {
+ "type": "string"
+ },
+ "message": {
+ "type": "string"
+ }
+ }
+ },
"Category": {
"type": "object",
"properties": {
@@ -960,21 +975,6 @@
"name": "Tag"
}
},
- "ApiResponse": {
- "type": "object",
- "properties": {
- "code": {
- "type": "integer",
- "format": "int32"
- },
- "type": {
- "type": "string"
- },
- "message": {
- "type": "string"
- }
- }
- },
"Order": {
"type": "object",
"properties": {