Skip to content

Commit f3f9827

Browse files
committed
created a new method in BaseTest to log the response details and updated all the tests calling the log method, added config in log4jxml for showing trace logs
1 parent 97bc900 commit f3f9827

File tree

9 files changed

+177
-114
lines changed

9 files changed

+177
-114
lines changed

src/main/resources/log4j2.xml

+8
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,12 @@
1313
<AppenderRef ref="LogToConsole"/>
1414
</Root>
1515
</Loggers>
16+
<Loggers>
17+
<Logger name="io.github.mfaisalkhatri" level="trace" additivity="false">
18+
<AppenderRef ref="LogToConsole"/>
19+
</Logger>
20+
<Root level="error">
21+
<AppenderRef ref="LogToConsole"/>
22+
</Root>
23+
</Loggers>
1624
</Configuration>
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
package io.github.mfaisalkhatri.api.restfulecommerce;
22

3+
import java.util.HashMap;
4+
import java.util.Map;
5+
36
import com.microsoft.playwright.APIRequest;
47
import com.microsoft.playwright.APIRequestContext;
8+
import com.microsoft.playwright.APIResponse;
59
import com.microsoft.playwright.Playwright;
610
import org.testng.annotations.AfterClass;
711
import org.testng.annotations.BeforeClass;
812

9-
import java.util.HashMap;
10-
import java.util.Map;
11-
1213
public class BaseTest {
1314

1415
protected Playwright playwright;
@@ -29,32 +30,36 @@ public void tearDown() {
2930
}
3031

3132
private void createPlaywright() {
32-
playwright = Playwright.create();
33+
this.playwright = Playwright.create ();
3334
}
3435

3536
private void createAPIRequestContext() {
36-
Map<String, String> headers = new HashMap<>();
37+
final Map<String, String> headers = new HashMap<> ();
3738
headers.put("Content-Type", "application/json");
3839

39-
request = playwright.request().newContext(new APIRequest.NewContextOptions()
40+
this.request = this.playwright.request ()
41+
.newContext (new APIRequest.NewContextOptions ()
4042
.setBaseURL(BASE_URL)
4143
.setExtraHTTPHeaders(headers));
4244
}
4345

4446

4547
private void closePlaywright() {
46-
if (playwright != null) {
47-
playwright.close();
48-
playwright = null;
48+
if (this.playwright != null) {
49+
this.playwright.close ();
50+
this.playwright = null;
4951
}
5052
}
5153

5254
private void disposeAPIRequestContext() {
53-
if (request != null) {
54-
request.dispose();
55-
request = null;
55+
if (this.request != null) {
56+
this.request.dispose ();
57+
this.request = null;
5658
}
5759
}
5860

59-
61+
protected void logResponse (final APIResponse response) {
62+
final Logger logger = new Logger (response);
63+
logger.logResponseDetails ();
64+
}
6065
}

src/test/java/io/github/mfaisalkhatri/api/restfulecommerce/HappyPathTests.java

+48-39
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,25 @@
11
package io.github.mfaisalkhatri.api.restfulecommerce;
22

3+
import static io.github.mfaisalkhatri.api.restfulecommerce.testdata.OrderDataBuilder.getNewOrder;
4+
import static io.github.mfaisalkhatri.api.restfulecommerce.testdata.OrderDataBuilder.getPartialUpdatedOrder;
5+
import static io.github.mfaisalkhatri.api.restfulecommerce.testdata.OrderDataBuilder.getUpdatedOrder;
6+
import static io.github.mfaisalkhatri.api.restfulecommerce.testdata.TokenBuilder.getCredentials;
7+
import static org.testng.Assert.assertEquals;
8+
import static org.testng.Assert.assertNotNull;
9+
10+
import java.util.ArrayList;
11+
import java.util.List;
312

413
import com.microsoft.playwright.APIResponse;
514
import com.microsoft.playwright.options.RequestOptions;
615
import io.github.mfaisalkhatri.api.restfulecommerce.testdata.OrderData;
16+
import lombok.extern.slf4j.Slf4j;
717
import org.json.JSONArray;
818
import org.json.JSONObject;
919
import org.testng.annotations.BeforeClass;
1020
import org.testng.annotations.Test;
1121

12-
import java.util.ArrayList;
13-
import java.util.List;
14-
15-
import static io.github.mfaisalkhatri.api.restfulecommerce.testdata.OrderDataBuilder.*;
16-
import static io.github.mfaisalkhatri.api.restfulecommerce.testdata.TokenBuilder.getCredentials;
17-
import static org.testng.Assert.assertEquals;
18-
import static org.testng.Assert.assertNotNull;
19-
22+
@Slf4j
2023
public class HappyPathTests extends BaseTest{
2124

2225
private List<OrderData> orderList;
@@ -33,9 +36,7 @@ public void testSetup() {
3336
public void testShouldPerformHealthCheckOfServer() {
3437
final APIResponse response = this.request.get("/health");
3538

36-
final Logger logger = new Logger(response);
37-
logger.logResponseDetails();
38-
39+
logResponse (response);
3940
final JSONObject responseObject = new JSONObject(response.text());
4041

4142
assertEquals(response.status(), 200);
@@ -54,6 +55,8 @@ public void testShouldCreateNewOrders() {
5455
final APIResponse response = this.request.post("/addOrder", RequestOptions.create()
5556
.setData(this.orderList));
5657

58+
logResponse (response);
59+
5760
final JSONObject responseObject = new JSONObject(response.text());
5861
final JSONArray ordersArray = responseObject.getJSONArray("orders");
5962

@@ -68,16 +71,14 @@ public void testShouldCreateNewOrders() {
6871
this.userId =ordersArray.getJSONObject(0).getString("user_id");
6972
this.productId =ordersArray.getJSONObject(0).getString("product_id");
7073

71-
7274
}
7375

7476
@Test
7577
public void testShouldGetAllOrders() {
7678

7779
final APIResponse response = this.request.get("/getAllOrders");
7880

79-
final Logger logger = new Logger(response);
80-
logger.logResponseDetails();
81+
logResponse (response);
8182

8283
final JSONObject responseObject = new JSONObject(response.text());
8384
final JSONArray ordersArray = responseObject.getJSONArray("orders");
@@ -92,10 +93,10 @@ public void testShouldGetAllOrders() {
9293
@Test
9394
public void testShouldGetOrderUsingOrderId() {
9495
final int orderId = 1;
95-
final APIResponse response = this.request.get("/getOrder", RequestOptions.create().setQueryParam("id", orderId));
96+
final APIResponse response = this.request.get ("/getOrder", RequestOptions.create ()
97+
.setQueryParam ("id", orderId));
9698

97-
final Logger logger = new Logger(response);
98-
logger.logResponseDetails();
99+
logResponse (response);
99100

100101
final JSONObject responseObject = new JSONObject(response.text());
101102
final JSONArray ordersArray = responseObject.getJSONArray("orders");
@@ -109,10 +110,10 @@ public void testShouldGetOrderUsingOrderId() {
109110
@Test
110111
public void testShouldGetOrdersUsingUserId() {
111112

112-
final APIResponse response = this.request.get("/getOrder", RequestOptions.create().setQueryParam("user_id", this.userId));
113+
final APIResponse response = this.request.get ("/getOrder", RequestOptions.create ()
114+
.setQueryParam ("user_id", this.userId));
113115

114-
final Logger logger = new Logger(response);
115-
logger.logResponseDetails();
116+
logResponse (response);
116117

117118
final JSONObject responseObject = new JSONObject(response.text());
118119
final JSONArray ordersArray = responseObject.getJSONArray("orders");
@@ -126,10 +127,10 @@ public void testShouldGetOrdersUsingUserId() {
126127
@Test
127128
public void testShouldGetOrdersUsingProductId() {
128129

129-
final APIResponse response = this.request.get("/getOrder", RequestOptions.create().setQueryParam("product_id", this.productId));
130+
final APIResponse response = this.request.get ("/getOrder", RequestOptions.create ()
131+
.setQueryParam ("product_id", this.productId));
130132

131-
final Logger logger = new Logger(response);
132-
logger.logResponseDetails();
133+
logResponse (response);
133134

134135
final JSONObject responseObject = new JSONObject(response.text());
135136
final JSONArray ordersArray = responseObject.getJSONArray("orders");
@@ -148,12 +149,10 @@ public void testShouldGetOrdersUsingOrderIdProductIdAndUserId() {
148149
.setQueryParam("product_id", this.productId)
149150
.setQueryParam("user_id", this.userId));
150151

151-
final Logger logger = new Logger(response);
152-
logger.logResponseDetails();
152+
logResponse (response);
153153

154154
assertEquals(response.status(), 200);
155155

156-
157156
final JSONObject responseObject = new JSONObject(response.text());
158157
final JSONArray ordersArray = responseObject.getJSONArray("orders");
159158

@@ -167,10 +166,10 @@ public void testShouldGetOrdersUsingOrderIdProductIdAndUserId() {
167166

168167
@Test
169168
public void testTokenGeneration() {
170-
final APIResponse response = this.request.post("/auth", RequestOptions.create().setData(getCredentials()));
169+
final APIResponse response = this.request.post ("/auth", RequestOptions.create ()
170+
.setData (getCredentials ()));
171171

172-
final Logger logger = new Logger(response);
173-
logger.logResponseDetails();
172+
logResponse (response);
174173

175174
final JSONObject responseObject = new JSONObject(response.text());
176175

@@ -182,7 +181,10 @@ public void testTokenGeneration() {
182181
@Test
183182
public void testShouldUpdateTheOrderUsingPut() {
184183

185-
final APIResponse authResponse = this.request.post("/auth", RequestOptions.create().setData(getCredentials()));
184+
final APIResponse authResponse = this.request.post ("/auth", RequestOptions.create ()
185+
.setData (getCredentials ()));
186+
187+
logResponse (authResponse);
186188

187189
final JSONObject authResponseObject = new JSONObject(authResponse.text());
188190
final String token = authResponseObject.get("token").toString();
@@ -194,6 +196,8 @@ public void testShouldUpdateTheOrderUsingPut() {
194196
.setHeader("Authorization", token)
195197
.setData(updatedOrder));
196198

199+
logResponse (response);
200+
197201
final JSONObject updateOrderResponseObject = new JSONObject(response.text());
198202
final JSONObject orderObject = updateOrderResponseObject.getJSONObject("order");
199203

@@ -212,6 +216,8 @@ public void testShouldPartialUpdateTheOrderUsingPatch() {
212216

213217
final APIResponse authResponse = this.request.post("/auth", RequestOptions.create().setData(getCredentials()));
214218

219+
logResponse (authResponse);
220+
215221
final JSONObject authResponseObject = new JSONObject(authResponse.text());
216222
final String token = authResponseObject.get("token").toString();
217223

@@ -221,9 +227,11 @@ public void testShouldPartialUpdateTheOrderUsingPatch() {
221227
final APIResponse response = this.request.patch("/partialUpdateOrder/" + orderId, RequestOptions.create()
222228
.setHeader("Authorization", token)
223229
.setData(partialUpdatedOrder));
224-
230+
231+
logResponse (response);
232+
225233
final JSONObject updateOrderResponseObject = new JSONObject(response.text());
226-
final JSONObject orderObject = updateOrderResponseObject.getJSONObject("order");
234+
final JSONObject orderObject = updateOrderResponseObject.getJSONObject ("order");
227235

228236
assertEquals(response.status(), 200);
229237
assertEquals(updateOrderResponseObject.get("message"), "Order updated successfully!");
@@ -235,7 +243,10 @@ public void testShouldPartialUpdateTheOrderUsingPatch() {
235243
@Test
236244
public void testShouldDeleteTheOrder() {
237245

238-
final APIResponse authResponse = this.request.post("/auth", RequestOptions.create().setData(getCredentials()));
246+
final APIResponse authResponse = this.request.post ("/auth", RequestOptions.create ()
247+
.setData (getCredentials ()));
248+
249+
logResponse (authResponse);
239250

240251
final JSONObject authResponseObject = new JSONObject(authResponse.text());
241252
final String token = authResponseObject.get("token").toString();
@@ -245,19 +256,17 @@ public void testShouldDeleteTheOrder() {
245256
final APIResponse response = this.request.delete("/deleteOrder/" + orderId, RequestOptions.create()
246257
.setHeader("Authorization", token));
247258

248-
final Logger logger = new Logger(response);
249-
logger.logResponseDetails();
250-
259+
logResponse (response);
251260
assertEquals(response.status(), 204);
252261
}
253262

254263
@Test
255264
public void testShouldNotRetrieveDeletedOrder() {
256265
final int orderId = 1;
257-
final APIResponse response = this.request.get("/getOrder", RequestOptions.create().setQueryParam("id", orderId));
266+
final APIResponse response = this.request.get ("/getOrder", RequestOptions.create ()
267+
.setQueryParam ("id", orderId));
258268

259-
final Logger logger = new Logger(response);
260-
logger.logResponseDetails();
269+
logResponse (response);
261270

262271
assertEquals(response.status(), 404);
263272

src/test/java/io/github/mfaisalkhatri/api/restfulecommerce/Logger.java

+19-17
Original file line numberDiff line numberDiff line change
@@ -8,39 +8,41 @@
88

99
public class Logger {
1010

11-
private APIResponse response;
12-
private org.apache.logging.log4j.Logger log;
11+
private final APIResponse response;
12+
private final org.apache.logging.log4j.Logger log;
1313

14-
public Logger(APIResponse response) {
14+
public Logger (final APIResponse response) {
1515
this.response = response;
16-
log = LogManager.getLogger(getClass());
16+
this.log = LogManager.getLogger (getClass ());
1717
}
1818

1919
public void logResponseDetails() {
20-
21-
log.info("Response Headers: \n{}",response.headers());
22-
log.info("Status Code: {}", response.status());
23-
if(response.text()!=null && !response.text().isEmpty() && !response.text().isBlank()) {
24-
log.info("Response Body: \n{}", prettyPrintJson(response.text()));
20+
this.log.trace ("Logging Response Details.....");
21+
22+
this.log.info ("Response Headers: \n{}", this.response.headers ());
23+
this.log.info ("Status Code: {}", this.response.status ());
24+
if (this.response.text () != null && !this.response.text ()
25+
.isEmpty () && !this.response.text ()
26+
.isBlank ()) {
27+
this.log.info ("Response Body: \n{}", prettyPrintJson (this.response.text ()));
2528
}
26-
29+
this.log.trace ("End of Logs!");
2730
}
2831

29-
private String prettyPrintJson(String text) {
32+
private String prettyPrintJson (final String text) {
3033
String prettyPrintJson = "";
3134
if (text != null && !text.isBlank() && !text.isEmpty()) {
3235
try {
3336

34-
ObjectMapper objectMapper = new ObjectMapper();
35-
Object jsonObject = objectMapper.readValue(text, Object.class);
37+
final ObjectMapper objectMapper = new ObjectMapper ();
38+
final Object jsonObject = objectMapper.readValue (text, Object.class);
3639
prettyPrintJson = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(jsonObject);
3740
return prettyPrintJson;
38-
} catch (JsonProcessingException e) {
39-
log.error("Error Printing Pretty Json : {}", e.getMessage());
41+
} catch (final JsonProcessingException e) {
42+
this.log.error ("Error Printing Pretty Json : {}", e.getMessage ());
4043
}
4144
}
42-
43-
log.info("No response body generated!");
45+
this.log.info ("No response body generated!");
4446
return null;
4547

4648
}

0 commit comments

Comments
 (0)