From 6dec6de2668d77c69e1d34104f0c3205208c8867 Mon Sep 17 00:00:00 2001 From: "mohammadfaisalkhatri@gmail.com" Date: Thu, 26 Dec 2024 21:53:26 +0300 Subject: [PATCH 1/4] updated dependency versions and refactored logger class --- pom.xml | 21 +++++--- .../api/restfulecommerce/Logger.java | 51 +++++++++++-------- 2 files changed, 43 insertions(+), 29 deletions(-) diff --git a/pom.xml b/pom.xml index d84dda0..ae62b28 100644 --- a/pom.xml +++ b/pom.xml @@ -12,25 +12,25 @@ UTF-8 - 1.47.0 + 1.49.0 7.10.2 1.3 1.1.1 - 1.18.34 - 2.4.0 + 1.18.36 + 2.4.2 2.11.0 20240303 - 2.18.0 + 2.18.2 2.24.1 2.24.1 + 3.17.0 3.13.0 3.3.1 17 - 3.5.0 + 3.5.2 test-suite/testng.xml - com.microsoft.playwright playwright @@ -46,7 +46,6 @@ json ${org-json-verion} - org.projectlombok lombok @@ -78,6 +77,12 @@ log4j-core ${log4j-core-version} + + org.apache.commons + commons-lang3 + ${commons-lang3-version} + + @@ -133,4 +138,4 @@ - + \ No newline at end of file diff --git a/src/test/java/io/github/mfaisalkhatri/api/restfulecommerce/Logger.java b/src/test/java/io/github/mfaisalkhatri/api/restfulecommerce/Logger.java index ab787fe..d3e8a7f 100644 --- a/src/test/java/io/github/mfaisalkhatri/api/restfulecommerce/Logger.java +++ b/src/test/java/io/github/mfaisalkhatri/api/restfulecommerce/Logger.java @@ -3,6 +3,7 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.microsoft.playwright.APIResponse; +import org.apache.commons.lang3.StringUtils; import org.apache.logging.log4j.LogManager; @@ -17,32 +18,40 @@ public Logger (final APIResponse response) { } public void logResponseDetails() { - this.log.info ("Logging Response Details....."); - - this.log.info ("Response Headers: \n{}", this.response.headers ()); - this.log.info ("Status Code: {}", this.response.status ()); - if (this.response.text () != null && !this.response.text () - .isEmpty () && !this.response.text () - .isBlank ()) { - this.log.info ("Response Body: \n{}", prettyPrintJson (this.response.text ())); + String responseBody = this.response.text (); + if (StringUtils.isNotBlank (responseBody)) { + this.log.info ("Logging Response Details....\n responseHeaders: {}, \nstatusCode: {}, \nresponseBody: {}", + this.response.headers (), this.response.status (), prettyPrintJson (this.response.text ())); } this.log.info ("End of Logs!"); } private String prettyPrintJson (final String text) { - String prettyPrintJson = ""; - if (text != null && !text.isBlank() && !text.isEmpty()) { - try { - - final ObjectMapper objectMapper = new ObjectMapper (); - final Object jsonObject = objectMapper.readValue (text, Object.class); - prettyPrintJson = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(jsonObject); - return prettyPrintJson; - } catch (final JsonProcessingException e) { - this.log.error ("Error Printing Pretty Json : {}", e.getMessage ()); - } + try { + final ObjectMapper objectMapper = new ObjectMapper (); + final Object jsonObject = objectMapper.readValue (text, Object.class); + return objectMapper.writerWithDefaultPrettyPrinter () + .writeValueAsString (jsonObject); + } catch (final JsonProcessingException e) { + this.log.error ("Failed to pretty print JSON: {}", e.getMessage (), e); + return text; } - this.log.info ("No response body generated!"); - return null; } + + // private String prettyPrintJson (final String text) { + // String prettyPrintJson = ""; + // if (text != null && !text.isBlank() && !text.isEmpty()) { + // try { + // + // final ObjectMapper objectMapper = new ObjectMapper (); + // final Object jsonObject = objectMapper.readValue (text, Object.class); + // prettyPrintJson = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(jsonObject); + // return prettyPrintJson; + // } catch (final JsonProcessingException e) { + // this.log.error ("Error Printing Pretty Json : {}", e.getMessage ()); + // } + // } + // this.log.info ("No response body generated!"); + // return null; + // } } From 1c514cdc3f42a698cc038148f0b4c3467a9c71b5 Mon Sep 17 00:00:00 2001 From: "mohammadfaisalkhatri@gmail.com" Date: Thu, 26 Dec 2024 22:00:12 +0300 Subject: [PATCH 2/4] added logger in restful booker end to end tests --- .../mfaisalkhatri/api/restfulbooker/tests/BaseTest.java | 7 +++++++ .../restfulbooker/tests/RestfulBookerEndToEndTests.java | 7 +++++++ test-suite/testng.xml | 2 +- 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/test/java/io/github/mfaisalkhatri/api/restfulbooker/tests/BaseTest.java b/src/test/java/io/github/mfaisalkhatri/api/restfulbooker/tests/BaseTest.java index 1ab1fd0..3378810 100644 --- a/src/test/java/io/github/mfaisalkhatri/api/restfulbooker/tests/BaseTest.java +++ b/src/test/java/io/github/mfaisalkhatri/api/restfulbooker/tests/BaseTest.java @@ -3,7 +3,9 @@ import java.util.HashMap; import java.util.Map; +import com.microsoft.playwright.APIResponse; import io.github.mfaisalkhatri.api.manager.RequestManager; +import io.github.mfaisalkhatri.api.restfulecommerce.Logger; import org.testng.annotations.AfterTest; import org.testng.annotations.BeforeTest; @@ -31,4 +33,9 @@ public void tearDown() { this.manager.disposeAPIRequestContext(); this.manager.closePlaywright(); } + + protected void logResponse (final APIResponse response) { + final Logger logger = new Logger (response); + logger.logResponseDetails (); + } } diff --git a/src/test/java/io/github/mfaisalkhatri/api/restfulbooker/tests/RestfulBookerEndToEndTests.java b/src/test/java/io/github/mfaisalkhatri/api/restfulbooker/tests/RestfulBookerEndToEndTests.java index 90accb1..1d6210b 100644 --- a/src/test/java/io/github/mfaisalkhatri/api/restfulbooker/tests/RestfulBookerEndToEndTests.java +++ b/src/test/java/io/github/mfaisalkhatri/api/restfulbooker/tests/RestfulBookerEndToEndTests.java @@ -35,6 +35,7 @@ public void createBookingTest() { final APIResponse response = this.manager.postRequest("/booking", RequestOptions.create() .setData(this.bookingData)); + logResponse (response); assertEquals(response.status(), 200); final JSONObject responseObject = new JSONObject(response.text()); @@ -51,6 +52,7 @@ public void createBookingTest() { @Test public void getBookingTest() { final APIResponse response = this.manager.getRequest("/booking/" + this.bookingId); + logResponse (response); assertEquals(response.status(), 200); final JSONObject responseObject = new JSONObject(response.text()); @@ -67,6 +69,7 @@ public void updateBookingTest() { final APIResponse response = this.manager.putRequest("/booking/" + this.bookingId, RequestOptions.create() .setData(updateBookingData) .setHeader("Cookie", "token=" + this.token)); + logResponse (response); assertEquals(response.status(), 200); final JSONObject responseObject = new JSONObject(response.text()); @@ -82,6 +85,7 @@ public void generateTokenTest() { final Tokencreds tokenData = getToken(); final APIResponse response = this.manager.postRequest("/auth", RequestOptions.create() .setData(tokenData)); + logResponse (response); assertEquals(response.status(), 200); final JSONObject responseObject = new JSONObject(response.text()); @@ -99,6 +103,7 @@ public void updatePartialBookingTest() { .setData(partialBookingData) .setHeader("Cookie", "token=" + this.token)); + logResponse (response); assertEquals(response.status(), 200); final JSONObject responseObject = new JSONObject(response.text()); @@ -111,12 +116,14 @@ public void deleteBookingTest() { final APIResponse response = this.manager.deleteRequest("/booking/" + this.bookingId, RequestOptions.create() .setHeader("Cookie", "token=" + this.token)); + logResponse (response); assertEquals(response.status(), 201); } @Test public void testBookingDeleted() { final APIResponse response = this.manager.getRequest("/booking/" + this.bookingId); + logResponse (response); assertEquals(response.status(), 404); } } diff --git a/test-suite/testng.xml b/test-suite/testng.xml index 7358876..355920f 100644 --- a/test-suite/testng.xml +++ b/test-suite/testng.xml @@ -1,6 +1,6 @@ - + From 47218ad9a228ac9793cb9faa74e297838166c7d3 Mon Sep 17 00:00:00 2001 From: "mohammadfaisalkhatri@gmail.com" Date: Thu, 26 Dec 2024 22:11:46 +0300 Subject: [PATCH 3/4] handled no response body generation case in logger --- .../api/restfulecommerce/Logger.java | 48 ++++++++++--------- 1 file changed, 26 insertions(+), 22 deletions(-) diff --git a/src/test/java/io/github/mfaisalkhatri/api/restfulecommerce/Logger.java b/src/test/java/io/github/mfaisalkhatri/api/restfulecommerce/Logger.java index d3e8a7f..3ab5681 100644 --- a/src/test/java/io/github/mfaisalkhatri/api/restfulecommerce/Logger.java +++ b/src/test/java/io/github/mfaisalkhatri/api/restfulecommerce/Logger.java @@ -17,7 +17,7 @@ public Logger (final APIResponse response) { this.log = LogManager.getLogger (getClass ()); } - public void logResponseDetails() { + public void logResponseDetails () { String responseBody = this.response.text (); if (StringUtils.isNotBlank (responseBody)) { this.log.info ("Logging Response Details....\n responseHeaders: {}, \nstatusCode: {}, \nresponseBody: {}", @@ -27,31 +27,35 @@ public void logResponseDetails() { } private String prettyPrintJson (final String text) { - try { - final ObjectMapper objectMapper = new ObjectMapper (); - final Object jsonObject = objectMapper.readValue (text, Object.class); - return objectMapper.writerWithDefaultPrettyPrinter () - .writeValueAsString (jsonObject); - } catch (final JsonProcessingException e) { - this.log.error ("Failed to pretty print JSON: {}", e.getMessage (), e); - return text; + if (StringUtils.isNotBlank (text)) { + try { + final ObjectMapper objectMapper = new ObjectMapper (); + final Object jsonObject = objectMapper.readValue (text, Object.class); + return objectMapper.writerWithDefaultPrettyPrinter () + .writeValueAsString (jsonObject); + } catch (final JsonProcessingException e) { + this.log.error ("Failed to pretty print JSON: {}", e.getMessage (), e); + return text; + } } + return "No response body generated!"; } - // private String prettyPrintJson (final String text) { - // String prettyPrintJson = ""; - // if (text != null && !text.isBlank() && !text.isEmpty()) { - // try { + // private String prettyPrintJson (final String text) { + // String prettyPrintJson = ""; + // if (text != null && !text.isBlank() && !text.isEmpty()) { + // try { // - // final ObjectMapper objectMapper = new ObjectMapper (); - // final Object jsonObject = objectMapper.readValue (text, Object.class); - // prettyPrintJson = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(jsonObject); - // return prettyPrintJson; - // } catch (final JsonProcessingException e) { - // this.log.error ("Error Printing Pretty Json : {}", e.getMessage ()); + // final ObjectMapper objectMapper = new ObjectMapper (); + // final Object jsonObject = objectMapper.readValue (text, Object.class); + // prettyPrintJson = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(jsonObject); + // return prettyPrintJson; + // } catch (final JsonProcessingException e) { + // this.log.error ("Error Printing Pretty Json : {}", e.getMessage ()); + // } // } + // this.log.info ("No response body generated!"); + // return null; // } - // this.log.info ("No response body generated!"); - // return null; - // } } + From 9f26b9ea8205a1584de904b187fdcf8c61ef005c Mon Sep 17 00:00:00 2001 From: "mohammadfaisalkhatri@gmail.com" Date: Thu, 26 Dec 2024 22:36:46 +0300 Subject: [PATCH 4/4] updated logger and handled blank and empty responses --- .../mfaisalkhatri/api/logger/Logger.java | 43 +++++++++++++ .../api/restfulbooker/tests/BaseTest.java | 2 +- .../api/restfulecommerce/BaseTest.java | 1 + .../api/restfulecommerce/Logger.java | 61 ------------------- 4 files changed, 45 insertions(+), 62 deletions(-) create mode 100644 src/test/java/io/github/mfaisalkhatri/api/logger/Logger.java delete mode 100644 src/test/java/io/github/mfaisalkhatri/api/restfulecommerce/Logger.java diff --git a/src/test/java/io/github/mfaisalkhatri/api/logger/Logger.java b/src/test/java/io/github/mfaisalkhatri/api/logger/Logger.java new file mode 100644 index 0000000..6b35053 --- /dev/null +++ b/src/test/java/io/github/mfaisalkhatri/api/logger/Logger.java @@ -0,0 +1,43 @@ +package io.github.mfaisalkhatri.api.logger; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.microsoft.playwright.APIResponse; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.LogManager; + + +public class Logger { + + private final APIResponse response; + private final org.apache.logging.log4j.Logger log; + + public Logger (final APIResponse response) { + this.response = response; + this.log = LogManager.getLogger (getClass ()); + } + + public void logResponseDetails () { + String responseBody = this.response.text (); + this.log.info ("Logging Response Details....\n responseHeaders: {}, \nstatusCode: {},", + this.response.headers (), this.response.status ()); + this.log.info ("\n Response body: {}", prettyPrintJson (responseBody)); + this.log.info ("End of Logs!"); + } + + private String prettyPrintJson (final String text) { + if (StringUtils.isNotBlank (text) && StringUtils.isNotEmpty (text)) { + try { + final ObjectMapper objectMapper = new ObjectMapper (); + final Object jsonObject = objectMapper.readValue (text, Object.class); + return objectMapper.writerWithDefaultPrettyPrinter () + .writeValueAsString (jsonObject); + } catch (final JsonProcessingException e) { + this.log.error ("Failed to pretty print JSON: {}", e.getMessage (), e); + } + } + return "No response body found!"; + + } +} + diff --git a/src/test/java/io/github/mfaisalkhatri/api/restfulbooker/tests/BaseTest.java b/src/test/java/io/github/mfaisalkhatri/api/restfulbooker/tests/BaseTest.java index 3378810..eb3fb01 100644 --- a/src/test/java/io/github/mfaisalkhatri/api/restfulbooker/tests/BaseTest.java +++ b/src/test/java/io/github/mfaisalkhatri/api/restfulbooker/tests/BaseTest.java @@ -5,7 +5,7 @@ import com.microsoft.playwright.APIResponse; import io.github.mfaisalkhatri.api.manager.RequestManager; -import io.github.mfaisalkhatri.api.restfulecommerce.Logger; +import io.github.mfaisalkhatri.api.logger.Logger; import org.testng.annotations.AfterTest; import org.testng.annotations.BeforeTest; diff --git a/src/test/java/io/github/mfaisalkhatri/api/restfulecommerce/BaseTest.java b/src/test/java/io/github/mfaisalkhatri/api/restfulecommerce/BaseTest.java index 8cdb887..94a8dca 100644 --- a/src/test/java/io/github/mfaisalkhatri/api/restfulecommerce/BaseTest.java +++ b/src/test/java/io/github/mfaisalkhatri/api/restfulecommerce/BaseTest.java @@ -7,6 +7,7 @@ import com.microsoft.playwright.APIRequestContext; import com.microsoft.playwright.APIResponse; import com.microsoft.playwright.Playwright; +import io.github.mfaisalkhatri.api.logger.Logger; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; diff --git a/src/test/java/io/github/mfaisalkhatri/api/restfulecommerce/Logger.java b/src/test/java/io/github/mfaisalkhatri/api/restfulecommerce/Logger.java deleted file mode 100644 index 3ab5681..0000000 --- a/src/test/java/io/github/mfaisalkhatri/api/restfulecommerce/Logger.java +++ /dev/null @@ -1,61 +0,0 @@ -package io.github.mfaisalkhatri.api.restfulecommerce; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.microsoft.playwright.APIResponse; -import org.apache.commons.lang3.StringUtils; -import org.apache.logging.log4j.LogManager; - - -public class Logger { - - private final APIResponse response; - private final org.apache.logging.log4j.Logger log; - - public Logger (final APIResponse response) { - this.response = response; - this.log = LogManager.getLogger (getClass ()); - } - - public void logResponseDetails () { - String responseBody = this.response.text (); - if (StringUtils.isNotBlank (responseBody)) { - this.log.info ("Logging Response Details....\n responseHeaders: {}, \nstatusCode: {}, \nresponseBody: {}", - this.response.headers (), this.response.status (), prettyPrintJson (this.response.text ())); - } - this.log.info ("End of Logs!"); - } - - private String prettyPrintJson (final String text) { - if (StringUtils.isNotBlank (text)) { - try { - final ObjectMapper objectMapper = new ObjectMapper (); - final Object jsonObject = objectMapper.readValue (text, Object.class); - return objectMapper.writerWithDefaultPrettyPrinter () - .writeValueAsString (jsonObject); - } catch (final JsonProcessingException e) { - this.log.error ("Failed to pretty print JSON: {}", e.getMessage (), e); - return text; - } - } - return "No response body generated!"; - } - - // private String prettyPrintJson (final String text) { - // String prettyPrintJson = ""; - // if (text != null && !text.isBlank() && !text.isEmpty()) { - // try { - // - // final ObjectMapper objectMapper = new ObjectMapper (); - // final Object jsonObject = objectMapper.readValue (text, Object.class); - // prettyPrintJson = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(jsonObject); - // return prettyPrintJson; - // } catch (final JsonProcessingException e) { - // this.log.error ("Error Printing Pretty Json : {}", e.getMessage ()); - // } - // } - // this.log.info ("No response body generated!"); - // return null; - // } -} -