From 4003b6df1249506cb17d289061a38ec8eea92145 Mon Sep 17 00:00:00 2001 From: "mohammadfaisalkhatri@gmail.com" Date: Wed, 18 Sep 2024 14:49:23 +0300 Subject: [PATCH] added token generation and update order tests, modified the assertions for get order tests --- .../api/restfulecommerce/APITests.java | 73 ++++++++++++++++++- .../testdata/OrderDataBuilder.java | 22 ++++++ .../testdata/TokenBuilder.java | 10 +++ .../restfulecommerce/testdata/TokenData.java | 13 ++++ test-suite/testng-restfulecommerce.xml | 19 +++++ 5 files changed, 134 insertions(+), 3 deletions(-) create mode 100644 src/test/java/io/github/mfaisalkhatri/api/restfulecommerce/testdata/TokenBuilder.java create mode 100644 src/test/java/io/github/mfaisalkhatri/api/restfulecommerce/testdata/TokenData.java create mode 100644 test-suite/testng-restfulecommerce.xml diff --git a/src/test/java/io/github/mfaisalkhatri/api/restfulecommerce/APITests.java b/src/test/java/io/github/mfaisalkhatri/api/restfulecommerce/APITests.java index e08ea54..a072da6 100644 --- a/src/test/java/io/github/mfaisalkhatri/api/restfulecommerce/APITests.java +++ b/src/test/java/io/github/mfaisalkhatri/api/restfulecommerce/APITests.java @@ -14,6 +14,8 @@ import java.util.List; import static io.github.mfaisalkhatri.api.restfulecommerce.testdata.OrderDataBuilder.getNewOrder; +import static io.github.mfaisalkhatri.api.restfulecommerce.testdata.OrderDataBuilder.getUpdatedOrder; +import static io.github.mfaisalkhatri.api.restfulecommerce.testdata.TokenBuilder.getCredentials; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertNotNull; @@ -70,7 +72,7 @@ public void testShouldGetAllOrders() { } @Test - public void testShouldGetOrderUsingId() { + public void testShouldGetOrderUsingOrderId() { int orderId = 1; APIResponse response = request.get("/getOrder", RequestOptions.create().setQueryParam("id", orderId)); @@ -88,7 +90,7 @@ public void testShouldGetOrderUsingId() { @Test public void testShouldGetOrdersUsingUserId() { - int userId = 2; + String userId = "2"; APIResponse response = request.get("/getOrder", RequestOptions.create().setQueryParam("user_id", userId)); @@ -100,8 +102,73 @@ public void testShouldGetOrdersUsingUserId() { assertEquals(response.status(), 200); assertEquals(responseObject.get("message"), "Order found!!"); - assertEquals(orderList.get(0).getUserId(), ordersArray.getJSONObject(0).get("user_id")); + assertEquals(ordersArray.getJSONObject(0).get("user_id"), userId); + + } + + @Test + public void testShouldGetOrdersUsingProductId() { + String productId = "332"; + + + APIResponse response = request.get("/getOrder", RequestOptions.create().setQueryParam("product_id", productId)); + + Helper helper = new Helper(response); + helper.logResponseDetails(); + + final JSONObject responseObject = new JSONObject(response.text()); + final JSONArray ordersArray = responseObject.getJSONArray("orders"); + + assertEquals(response.status(), 200); + assertEquals(responseObject.get("message"), "Order found!!"); + assertEquals(ordersArray.getJSONObject(0).get("product_id"), productId); + + } + + @Test + public void testTokenGeneration() { + APIResponse response = request.post("/auth", RequestOptions.create().setData(getCredentials())); + Helper helper = new Helper(response); + helper.logResponseDetails(); + + final JSONObject responseObject = new JSONObject(response.text()); + + assertEquals(response.status(), 201); + assertNotNull(responseObject.get("token")); + assertEquals(responseObject.get("message"), "Authentication Successful!"); + } + + @Test + public void testShouldUpdateTheOrderUsingPut() { + + APIResponse authResponse = request.post("/auth", RequestOptions.create().setData(getCredentials())); + + final JSONObject authResponseObject = new JSONObject(authResponse.text()); + String token = authResponseObject.get("token").toString(); + + OrderData updatedOrder = getUpdatedOrder(); + + int orderId = 2; + APIResponse response = request.put("/updateOrder/" + orderId, RequestOptions.create() + .setHeader("Authorization", token) + .setData(updatedOrder)); + + Helper helper = new Helper(response); + helper.logResponseDetails(); + + final JSONObject updateOrderResponseObject = new JSONObject(response.text()); + final JSONObject orderObject = updateOrderResponseObject.getJSONObject("order"); + + assertEquals(response.status(), 200); + assertEquals(updateOrderResponseObject.get("message"), "Order updated successfully!"); + assertEquals(orderId, orderObject.get("id")); + assertEquals(updatedOrder.getUserId(), orderObject.get("user_id")); + assertEquals(updatedOrder.getProductId(), orderObject.get("product_id")); + assertEquals(updatedOrder.getProductName(), orderObject.get("product_name")); + assertEquals(updatedOrder.getProductAmount(), orderObject.get("product_amount")); + assertEquals(updatedOrder.getTotalAmt(), orderObject.get("total_amt")); } + } diff --git a/src/test/java/io/github/mfaisalkhatri/api/restfulecommerce/testdata/OrderDataBuilder.java b/src/test/java/io/github/mfaisalkhatri/api/restfulecommerce/testdata/OrderDataBuilder.java index eef8b3f..abd3eba 100644 --- a/src/test/java/io/github/mfaisalkhatri/api/restfulecommerce/testdata/OrderDataBuilder.java +++ b/src/test/java/io/github/mfaisalkhatri/api/restfulecommerce/testdata/OrderDataBuilder.java @@ -25,4 +25,26 @@ public static OrderData getNewOrder() { .totalAmt(totalAmount) .build(); } + + public static OrderData getUpdatedOrder() { + int userId = FAKER.number().numberBetween(4, 5); + int productId = FAKER.number().numberBetween(335,337); + int productAmount = FAKER.number().numberBetween(510, 515); + int quantity = FAKER.number().numberBetween(1, 2); + int taxAmount = FAKER.number().numberBetween(35,45); + int totalAmount = (productAmount*quantity)+taxAmount; + + + return OrderData.builder() + .userId(String.valueOf(userId)) + .productId(String.valueOf(productId)) + .productName(FAKER.commerce().productName()) + .productAmount(productAmount) + .qty(quantity) + .taxAmt(taxAmount) + .totalAmt(totalAmount) + .build(); + + + } } diff --git a/src/test/java/io/github/mfaisalkhatri/api/restfulecommerce/testdata/TokenBuilder.java b/src/test/java/io/github/mfaisalkhatri/api/restfulecommerce/testdata/TokenBuilder.java new file mode 100644 index 0000000..a947453 --- /dev/null +++ b/src/test/java/io/github/mfaisalkhatri/api/restfulecommerce/testdata/TokenBuilder.java @@ -0,0 +1,10 @@ +package io.github.mfaisalkhatri.api.restfulecommerce.testdata; + +public class TokenBuilder { + + public static TokenData getCredentials() { + return TokenData.builder().username("admin") + .password("secretPass123") + .build(); + } +} diff --git a/src/test/java/io/github/mfaisalkhatri/api/restfulecommerce/testdata/TokenData.java b/src/test/java/io/github/mfaisalkhatri/api/restfulecommerce/testdata/TokenData.java new file mode 100644 index 0000000..a570d5a --- /dev/null +++ b/src/test/java/io/github/mfaisalkhatri/api/restfulecommerce/testdata/TokenData.java @@ -0,0 +1,13 @@ +package io.github.mfaisalkhatri.api.restfulecommerce.testdata; + +import lombok.Builder; +import lombok.Getter; + +@Getter +@Builder +public class TokenData { + + private String username; + private String password; + +} diff --git a/test-suite/testng-restfulecommerce.xml b/test-suite/testng-restfulecommerce.xml new file mode 100644 index 0000000..f7d2687 --- /dev/null +++ b/test-suite/testng-restfulecommerce.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file