diff --git a/pom.xml b/pom.xml
index cc8afa6..96cab33 100644
--- a/pom.xml
+++ b/pom.xml
@@ -18,6 +18,7 @@
1.1.1
1.18.34
2.3.1
+ 2.11.0
20240303
2.17.2
2.12.4
@@ -57,6 +58,11 @@
datafaker
${datafaker-version}
+
+ com.google.code.gson
+ gson
+ ${gson-version}
+
com.fasterxml.jackson.core
jackson-databind
diff --git a/public/results/results.json b/public/results/results.json
new file mode 100644
index 0000000..654d45f
--- /dev/null
+++ b/public/results/results.json
@@ -0,0 +1,114 @@
+{
+ "testsuite": {
+ "ignored": 0,
+ "hostname": "Faisals-MacBook-Pro.local",
+ "failures": 10,
+ "tests": 10,
+ "name": "Testing Each API of ECommerce App separately",
+ "time": 3.256,
+ "errors": 0,
+ "timestamp": "2024-09-19T09:37:09 AST",
+ "testcase": [
+ {
+ "classname": "io.github.mfaisalkhatri.api.restfulecommerce.HappyPathTests",
+ "name": "testShouldCreateNewOrders",
+ "time": 0.315,
+ "failure": {
+ "type": "com.microsoft.playwright.PlaywrightException",
+ "message": "Error {\n message='connect ECONNREFUSED ::1:3004\n name='Error\n stack='Error: connect ECONNREFUSED ::1:3004\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1607:16)\n}\nCall log:\n- → POST http://localhost:3004/addOrder\n- user-agent: Playwright/1.47.0-beta-1726138322000 (arm64; macOS 15.0) java/17\n- accept: */*\n- accept-encoding: gzip,deflate,br\n- Content-Type: application/json\n- content-length: 541\n",
+ "details": "\n com.microsoft.playwright.PlaywrightException: Error {\n message='connect ECONNREFUSED ::1:3004\n name='Error\n stack='Error: connect ECONNREFUSED ::1:3004\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1607:16)\n}\nCall log:\n- → POST http://localhost:3004/addOrder\n- user-agent: Playwright/1.47.0-beta-1726138322000 (arm64; macOS 15.0) java/17\n- accept: */*\n- accept-encoding: gzip,deflate,br\n- Content-Type: application/json\n- content-length: 541\n\nat com.microsoft.playwright.impl.WaitableResult.get(WaitableResult.java:56)\nat com.microsoft.playwright.impl.ChannelOwner.runUntil(ChannelOwner.java:120)\nat com.microsoft.playwright.impl.Connection.sendMessage(Connection.java:130)\nat com.microsoft.playwright.impl.ChannelOwner.sendMessage(ChannelOwner.java:106)\nat com.microsoft.playwright.impl.APIRequestContextImpl.fetchImpl(APIRequestContextImpl.java:156)\nat com.microsoft.playwright.impl.APIRequestContextImpl.lambda$fetch$1(APIRequestContextImpl.java:68)\nat com.microsoft.playwright.impl.LoggingSupport.withLogging(LoggingSupport.java:47)\nat com.microsoft.playwright.impl.ChannelOwner.withLogging(ChannelOwner.java:89)\nat com.microsoft.playwright.impl.APIRequestContextImpl.fetch(APIRequestContextImpl.java:68)\nat com.microsoft.playwright.impl.APIRequestContextImpl.post(APIRequestContextImpl.java:212)\nat io.github.mfaisalkhatri.api.restfulecommerce.HappyPathTests.testShouldCreateNewOrders(HappyPathTests.java:39)\nat java.base/java.util.ArrayList.forEach(ArrayList.java:1511)\nat com.intellij.rt.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:65)\nat com.intellij.rt.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:105)\nCaused by: com.microsoft.playwright.impl.DriverException: Error {\n message='connect ECONNREFUSED ::1:3004\n name='Error\n stack='Error: connect ECONNREFUSED ::1:3004\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1607:16)\n}\nCall log:\n- → POST http://localhost:3004/addOrder\n- user-agent: Playwright/1.47.0-beta-1726138322000 (arm64; macOS 15.0) java/17\n- accept: */*\n- accept-encoding: gzip,deflate,br\n- Content-Type: application/json\n- content-length: 541\n\nat com.microsoft.playwright.impl.Connection.dispatch(Connection.java:259)\nat com.microsoft.playwright.impl.Connection.processOneMessage(Connection.java:211)\nat com.microsoft.playwright.impl.ChannelOwner.runUntil(ChannelOwner.java:118)\n... 37 more\n... Removed 25 stack frames\n "
+ }
+ },
+ {
+ "classname": "io.github.mfaisalkhatri.api.restfulecommerce.HappyPathTests",
+ "name": "testShouldGetAllOrders",
+ "time": 0.307,
+ "failure": {
+ "type": "com.microsoft.playwright.PlaywrightException",
+ "message": "Error {\n message='connect ECONNREFUSED ::1:3004\n name='Error\n stack='Error: connect ECONNREFUSED ::1:3004\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1607:16)\n}\nCall log:\n- → GET http://localhost:3004/getAllOrders\n- user-agent: Playwright/1.47.0-beta-1726138322000 (arm64; macOS 15.0) java/17\n- accept: */*\n- accept-encoding: gzip,deflate,br\n- Content-Type: application/json\n",
+ "details": "\n com.microsoft.playwright.PlaywrightException: Error {\n message='connect ECONNREFUSED ::1:3004\n name='Error\n stack='Error: connect ECONNREFUSED ::1:3004\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1607:16)\n}\nCall log:\n- → GET http://localhost:3004/getAllOrders\n- user-agent: Playwright/1.47.0-beta-1726138322000 (arm64; macOS 15.0) java/17\n- accept: */*\n- accept-encoding: gzip,deflate,br\n- Content-Type: application/json\n\nat com.microsoft.playwright.impl.WaitableResult.get(WaitableResult.java:56)\nat com.microsoft.playwright.impl.ChannelOwner.runUntil(ChannelOwner.java:120)\nat com.microsoft.playwright.impl.Connection.sendMessage(Connection.java:130)\nat com.microsoft.playwright.impl.ChannelOwner.sendMessage(ChannelOwner.java:106)\nat com.microsoft.playwright.impl.APIRequestContextImpl.fetchImpl(APIRequestContextImpl.java:156)\nat com.microsoft.playwright.impl.APIRequestContextImpl.lambda$fetch$1(APIRequestContextImpl.java:68)\nat com.microsoft.playwright.impl.LoggingSupport.withLogging(LoggingSupport.java:47)\nat com.microsoft.playwright.impl.ChannelOwner.withLogging(ChannelOwner.java:89)\nat com.microsoft.playwright.impl.APIRequestContextImpl.fetch(APIRequestContextImpl.java:68)\nat com.microsoft.playwright.impl.APIRequestContextImpl.get(APIRequestContextImpl.java:197)\nat com.microsoft.playwright.APIRequestContext.get(APIRequestContext.java:285)\nat io.github.mfaisalkhatri.api.restfulecommerce.HappyPathTests.testShouldGetAllOrders(HappyPathTests.java:58)\nat java.base/java.util.ArrayList.forEach(ArrayList.java:1511)\nat com.intellij.rt.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:65)\nat com.intellij.rt.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:105)\nCaused by: com.microsoft.playwright.impl.DriverException: Error {\n message='connect ECONNREFUSED ::1:3004\n name='Error\n stack='Error: connect ECONNREFUSED ::1:3004\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1607:16)\n}\nCall log:\n- → GET http://localhost:3004/getAllOrders\n- user-agent: Playwright/1.47.0-beta-1726138322000 (arm64; macOS 15.0) java/17\n- accept: */*\n- accept-encoding: gzip,deflate,br\n- Content-Type: application/json\n\nat com.microsoft.playwright.impl.Connection.dispatch(Connection.java:259)\nat com.microsoft.playwright.impl.Connection.processOneMessage(Connection.java:211)\nat com.microsoft.playwright.impl.ChannelOwner.runUntil(ChannelOwner.java:118)\n... 38 more\n... Removed 25 stack frames\n "
+ }
+ },
+ {
+ "classname": "io.github.mfaisalkhatri.api.restfulecommerce.HappyPathTests",
+ "name": "testShouldGetOrderUsingOrderId",
+ "time": 0.307,
+ "failure": {
+ "type": "com.microsoft.playwright.PlaywrightException",
+ "message": "Error {\n message='connect ECONNREFUSED ::1:3004\n name='Error\n stack='Error: connect ECONNREFUSED ::1:3004\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1607:16)\n}\nCall log:\n- → GET http://localhost:3004/getOrder?id=1\n- user-agent: Playwright/1.47.0-beta-1726138322000 (arm64; macOS 15.0) java/17\n- accept: */*\n- accept-encoding: gzip,deflate,br\n- Content-Type: application/json\n",
+ "details": "\n com.microsoft.playwright.PlaywrightException: Error {\n message='connect ECONNREFUSED ::1:3004\n name='Error\n stack='Error: connect ECONNREFUSED ::1:3004\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1607:16)\n}\nCall log:\n- → GET http://localhost:3004/getOrder?id=1\n- user-agent: Playwright/1.47.0-beta-1726138322000 (arm64; macOS 15.0) java/17\n- accept: */*\n- accept-encoding: gzip,deflate,br\n- Content-Type: application/json\n\nat com.microsoft.playwright.impl.WaitableResult.get(WaitableResult.java:56)\nat com.microsoft.playwright.impl.ChannelOwner.runUntil(ChannelOwner.java:120)\nat com.microsoft.playwright.impl.Connection.sendMessage(Connection.java:130)\nat com.microsoft.playwright.impl.ChannelOwner.sendMessage(ChannelOwner.java:106)\nat com.microsoft.playwright.impl.APIRequestContextImpl.fetchImpl(APIRequestContextImpl.java:156)\nat com.microsoft.playwright.impl.APIRequestContextImpl.lambda$fetch$1(APIRequestContextImpl.java:68)\nat com.microsoft.playwright.impl.LoggingSupport.withLogging(LoggingSupport.java:47)\nat com.microsoft.playwright.impl.ChannelOwner.withLogging(ChannelOwner.java:89)\nat com.microsoft.playwright.impl.APIRequestContextImpl.fetch(APIRequestContextImpl.java:68)\nat com.microsoft.playwright.impl.APIRequestContextImpl.get(APIRequestContextImpl.java:197)\nat io.github.mfaisalkhatri.api.restfulecommerce.HappyPathTests.testShouldGetOrderUsingOrderId(HappyPathTests.java:76)\nat java.base/java.util.ArrayList.forEach(ArrayList.java:1511)\nat com.intellij.rt.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:65)\nat com.intellij.rt.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:105)\nCaused by: com.microsoft.playwright.impl.DriverException: Error {\n message='connect ECONNREFUSED ::1:3004\n name='Error\n stack='Error: connect ECONNREFUSED ::1:3004\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1607:16)\n}\nCall log:\n- → GET http://localhost:3004/getOrder?id=1\n- user-agent: Playwright/1.47.0-beta-1726138322000 (arm64; macOS 15.0) java/17\n- accept: */*\n- accept-encoding: gzip,deflate,br\n- Content-Type: application/json\n\nat com.microsoft.playwright.impl.Connection.dispatch(Connection.java:259)\nat com.microsoft.playwright.impl.Connection.processOneMessage(Connection.java:211)\nat com.microsoft.playwright.impl.ChannelOwner.runUntil(ChannelOwner.java:118)\n... 37 more\n... Removed 25 stack frames\n "
+ }
+ },
+ {
+ "classname": "io.github.mfaisalkhatri.api.restfulecommerce.HappyPathTests",
+ "name": "testShouldGetOrdersUsingUserId",
+ "time": 0.305,
+ "failure": {
+ "type": "com.microsoft.playwright.PlaywrightException",
+ "message": "Error {\n message='connect ECONNREFUSED ::1:3004\n name='Error\n stack='Error: connect ECONNREFUSED ::1:3004\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1607:16)\n}\nCall log:\n- → GET http://localhost:3004/getOrder?user_id=2\n- user-agent: Playwright/1.47.0-beta-1726138322000 (arm64; macOS 15.0) java/17\n- accept: */*\n- accept-encoding: gzip,deflate,br\n- Content-Type: application/json\n",
+ "details": "\n com.microsoft.playwright.PlaywrightException: Error {\n message='connect ECONNREFUSED ::1:3004\n name='Error\n stack='Error: connect ECONNREFUSED ::1:3004\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1607:16)\n}\nCall log:\n- → GET http://localhost:3004/getOrder?user_id=2\n- user-agent: Playwright/1.47.0-beta-1726138322000 (arm64; macOS 15.0) java/17\n- accept: */*\n- accept-encoding: gzip,deflate,br\n- Content-Type: application/json\n\nat com.microsoft.playwright.impl.WaitableResult.get(WaitableResult.java:56)\nat com.microsoft.playwright.impl.ChannelOwner.runUntil(ChannelOwner.java:120)\nat com.microsoft.playwright.impl.Connection.sendMessage(Connection.java:130)\nat com.microsoft.playwright.impl.ChannelOwner.sendMessage(ChannelOwner.java:106)\nat com.microsoft.playwright.impl.APIRequestContextImpl.fetchImpl(APIRequestContextImpl.java:156)\nat com.microsoft.playwright.impl.APIRequestContextImpl.lambda$fetch$1(APIRequestContextImpl.java:68)\nat com.microsoft.playwright.impl.LoggingSupport.withLogging(LoggingSupport.java:47)\nat com.microsoft.playwright.impl.ChannelOwner.withLogging(ChannelOwner.java:89)\nat com.microsoft.playwright.impl.APIRequestContextImpl.fetch(APIRequestContextImpl.java:68)\nat com.microsoft.playwright.impl.APIRequestContextImpl.get(APIRequestContextImpl.java:197)\nat io.github.mfaisalkhatri.api.restfulecommerce.HappyPathTests.testShouldGetOrdersUsingUserId(HappyPathTests.java:94)\nat java.base/java.util.ArrayList.forEach(ArrayList.java:1511)\nat com.intellij.rt.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:65)\nat com.intellij.rt.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:105)\nCaused by: com.microsoft.playwright.impl.DriverException: Error {\n message='connect ECONNREFUSED ::1:3004\n name='Error\n stack='Error: connect ECONNREFUSED ::1:3004\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1607:16)\n}\nCall log:\n- → GET http://localhost:3004/getOrder?user_id=2\n- user-agent: Playwright/1.47.0-beta-1726138322000 (arm64; macOS 15.0) java/17\n- accept: */*\n- accept-encoding: gzip,deflate,br\n- Content-Type: application/json\n\nat com.microsoft.playwright.impl.Connection.dispatch(Connection.java:259)\nat com.microsoft.playwright.impl.Connection.processOneMessage(Connection.java:211)\nat com.microsoft.playwright.impl.ChannelOwner.runUntil(ChannelOwner.java:118)\n... 37 more\n... Removed 25 stack frames\n "
+ }
+ },
+ {
+ "classname": "io.github.mfaisalkhatri.api.restfulecommerce.HappyPathTests",
+ "name": "testShouldGetOrdersUsingProductId",
+ "time": 0.305,
+ "failure": {
+ "type": "com.microsoft.playwright.PlaywrightException",
+ "message": "Error {\n message='connect ECONNREFUSED 127.0.0.1:3004\n name='Error\n stack='Error: connect ECONNREFUSED 127.0.0.1:3004\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1607:16)\n}\nCall log:\n- → GET http://localhost:3004/getOrder?product_id=332\n- user-agent: Playwright/1.47.0-beta-1726138322000 (arm64; macOS 15.0) java/17\n- accept: */*\n- accept-encoding: gzip,deflate,br\n- Content-Type: application/json\n",
+ "details": "\n com.microsoft.playwright.PlaywrightException: Error {\n message='connect ECONNREFUSED 127.0.0.1:3004\n name='Error\n stack='Error: connect ECONNREFUSED 127.0.0.1:3004\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1607:16)\n}\nCall log:\n- → GET http://localhost:3004/getOrder?product_id=332\n- user-agent: Playwright/1.47.0-beta-1726138322000 (arm64; macOS 15.0) java/17\n- accept: */*\n- accept-encoding: gzip,deflate,br\n- Content-Type: application/json\n\nat com.microsoft.playwright.impl.WaitableResult.get(WaitableResult.java:56)\nat com.microsoft.playwright.impl.ChannelOwner.runUntil(ChannelOwner.java:120)\nat com.microsoft.playwright.impl.Connection.sendMessage(Connection.java:130)\nat com.microsoft.playwright.impl.ChannelOwner.sendMessage(ChannelOwner.java:106)\nat com.microsoft.playwright.impl.APIRequestContextImpl.fetchImpl(APIRequestContextImpl.java:156)\nat com.microsoft.playwright.impl.APIRequestContextImpl.lambda$fetch$1(APIRequestContextImpl.java:68)\nat com.microsoft.playwright.impl.LoggingSupport.withLogging(LoggingSupport.java:47)\nat com.microsoft.playwright.impl.ChannelOwner.withLogging(ChannelOwner.java:89)\nat com.microsoft.playwright.impl.APIRequestContextImpl.fetch(APIRequestContextImpl.java:68)\nat com.microsoft.playwright.impl.APIRequestContextImpl.get(APIRequestContextImpl.java:197)\nat io.github.mfaisalkhatri.api.restfulecommerce.HappyPathTests.testShouldGetOrdersUsingProductId(HappyPathTests.java:113)\nat java.base/java.util.ArrayList.forEach(ArrayList.java:1511)\nat com.intellij.rt.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:65)\nat com.intellij.rt.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:105)\nCaused by: com.microsoft.playwright.impl.DriverException: Error {\n message='connect ECONNREFUSED 127.0.0.1:3004\n name='Error\n stack='Error: connect ECONNREFUSED 127.0.0.1:3004\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1607:16)\n}\nCall log:\n- → GET http://localhost:3004/getOrder?product_id=332\n- user-agent: Playwright/1.47.0-beta-1726138322000 (arm64; macOS 15.0) java/17\n- accept: */*\n- accept-encoding: gzip,deflate,br\n- Content-Type: application/json\n\nat com.microsoft.playwright.impl.Connection.dispatch(Connection.java:259)\nat com.microsoft.playwright.impl.Connection.processOneMessage(Connection.java:211)\nat com.microsoft.playwright.impl.ChannelOwner.runUntil(ChannelOwner.java:118)\n... 37 more\n... Removed 25 stack frames\n "
+ }
+ },
+ {
+ "classname": "io.github.mfaisalkhatri.api.restfulecommerce.HappyPathTests",
+ "name": "testTokenGeneration",
+ "time": 0.306,
+ "failure": {
+ "type": "com.microsoft.playwright.PlaywrightException",
+ "message": "Error {\n message='connect ECONNREFUSED 127.0.0.1:3004\n name='Error\n stack='Error: connect ECONNREFUSED 127.0.0.1:3004\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1607:16)\n}\nCall log:\n- → POST http://localhost:3004/auth\n- user-agent: Playwright/1.47.0-beta-1726138322000 (arm64; macOS 15.0) java/17\n- accept: */*\n- accept-encoding: gzip,deflate,br\n- Content-Type: application/json\n- content-length: 47\n",
+ "details": "\n com.microsoft.playwright.PlaywrightException: Error {\n message='connect ECONNREFUSED 127.0.0.1:3004\n name='Error\n stack='Error: connect ECONNREFUSED 127.0.0.1:3004\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1607:16)\n}\nCall log:\n- → POST http://localhost:3004/auth\n- user-agent: Playwright/1.47.0-beta-1726138322000 (arm64; macOS 15.0) java/17\n- accept: */*\n- accept-encoding: gzip,deflate,br\n- Content-Type: application/json\n- content-length: 47\n\nat com.microsoft.playwright.impl.WaitableResult.get(WaitableResult.java:56)\nat com.microsoft.playwright.impl.ChannelOwner.runUntil(ChannelOwner.java:120)\nat com.microsoft.playwright.impl.Connection.sendMessage(Connection.java:130)\nat com.microsoft.playwright.impl.ChannelOwner.sendMessage(ChannelOwner.java:106)\nat com.microsoft.playwright.impl.APIRequestContextImpl.fetchImpl(APIRequestContextImpl.java:156)\nat com.microsoft.playwright.impl.APIRequestContextImpl.lambda$fetch$1(APIRequestContextImpl.java:68)\nat com.microsoft.playwright.impl.LoggingSupport.withLogging(LoggingSupport.java:47)\nat com.microsoft.playwright.impl.ChannelOwner.withLogging(ChannelOwner.java:89)\nat com.microsoft.playwright.impl.APIRequestContextImpl.fetch(APIRequestContextImpl.java:68)\nat com.microsoft.playwright.impl.APIRequestContextImpl.post(APIRequestContextImpl.java:212)\nat io.github.mfaisalkhatri.api.restfulecommerce.HappyPathTests.testTokenGeneration(HappyPathTests.java:129)\nat java.base/java.util.ArrayList.forEach(ArrayList.java:1511)\nat com.intellij.rt.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:65)\nat com.intellij.rt.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:105)\nCaused by: com.microsoft.playwright.impl.DriverException: Error {\n message='connect ECONNREFUSED 127.0.0.1:3004\n name='Error\n stack='Error: connect ECONNREFUSED 127.0.0.1:3004\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1607:16)\n}\nCall log:\n- → POST http://localhost:3004/auth\n- user-agent: Playwright/1.47.0-beta-1726138322000 (arm64; macOS 15.0) java/17\n- accept: */*\n- accept-encoding: gzip,deflate,br\n- Content-Type: application/json\n- content-length: 47\n\nat com.microsoft.playwright.impl.Connection.dispatch(Connection.java:259)\nat com.microsoft.playwright.impl.Connection.processOneMessage(Connection.java:211)\nat com.microsoft.playwright.impl.ChannelOwner.runUntil(ChannelOwner.java:118)\n... 37 more\n... Removed 25 stack frames\n "
+ }
+ },
+ {
+ "classname": "io.github.mfaisalkhatri.api.restfulecommerce.HappyPathTests",
+ "name": "testShouldUpdateTheOrderUsingPut",
+ "time": 0.306,
+ "failure": {
+ "type": "com.microsoft.playwright.PlaywrightException",
+ "message": "Error {\n message='connect ECONNREFUSED 127.0.0.1:3004\n name='Error\n stack='Error: connect ECONNREFUSED 127.0.0.1:3004\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1607:16)\n}\nCall log:\n- → POST http://localhost:3004/auth\n- user-agent: Playwright/1.47.0-beta-1726138322000 (arm64; macOS 15.0) java/17\n- accept: */*\n- accept-encoding: gzip,deflate,br\n- Content-Type: application/json\n- content-length: 47\n",
+ "details": "\n com.microsoft.playwright.PlaywrightException: Error {\n message='connect ECONNREFUSED 127.0.0.1:3004\n name='Error\n stack='Error: connect ECONNREFUSED 127.0.0.1:3004\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1607:16)\n}\nCall log:\n- → POST http://localhost:3004/auth\n- user-agent: Playwright/1.47.0-beta-1726138322000 (arm64; macOS 15.0) java/17\n- accept: */*\n- accept-encoding: gzip,deflate,br\n- Content-Type: application/json\n- content-length: 47\n\nat com.microsoft.playwright.impl.WaitableResult.get(WaitableResult.java:56)\nat com.microsoft.playwright.impl.ChannelOwner.runUntil(ChannelOwner.java:120)\nat com.microsoft.playwright.impl.Connection.sendMessage(Connection.java:130)\nat com.microsoft.playwright.impl.ChannelOwner.sendMessage(ChannelOwner.java:106)\nat com.microsoft.playwright.impl.APIRequestContextImpl.fetchImpl(APIRequestContextImpl.java:156)\nat com.microsoft.playwright.impl.APIRequestContextImpl.lambda$fetch$1(APIRequestContextImpl.java:68)\nat com.microsoft.playwright.impl.LoggingSupport.withLogging(LoggingSupport.java:47)\nat com.microsoft.playwright.impl.ChannelOwner.withLogging(ChannelOwner.java:89)\nat com.microsoft.playwright.impl.APIRequestContextImpl.fetch(APIRequestContextImpl.java:68)\nat com.microsoft.playwright.impl.APIRequestContextImpl.post(APIRequestContextImpl.java:212)\nat io.github.mfaisalkhatri.api.restfulecommerce.HappyPathTests.testShouldUpdateTheOrderUsingPut(HappyPathTests.java:144)\nat java.base/java.util.ArrayList.forEach(ArrayList.java:1511)\nat com.intellij.rt.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:65)\nat com.intellij.rt.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:105)\nCaused by: com.microsoft.playwright.impl.DriverException: Error {\n message='connect ECONNREFUSED 127.0.0.1:3004\n name='Error\n stack='Error: connect ECONNREFUSED 127.0.0.1:3004\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1607:16)\n}\nCall log:\n- → POST http://localhost:3004/auth\n- user-agent: Playwright/1.47.0-beta-1726138322000 (arm64; macOS 15.0) java/17\n- accept: */*\n- accept-encoding: gzip,deflate,br\n- Content-Type: application/json\n- content-length: 47\n\nat com.microsoft.playwright.impl.Connection.dispatch(Connection.java:259)\nat com.microsoft.playwright.impl.Connection.processOneMessage(Connection.java:211)\nat com.microsoft.playwright.impl.ChannelOwner.runUntil(ChannelOwner.java:118)\n... 37 more\n... Removed 25 stack frames\n "
+ }
+ },
+ {
+ "classname": "io.github.mfaisalkhatri.api.restfulecommerce.HappyPathTests",
+ "name": "testShouldUpdateTheOrderUsingPatch",
+ "time": 0.308,
+ "failure": {
+ "type": "com.microsoft.playwright.PlaywrightException",
+ "message": "Error {\n message='connect ECONNREFUSED 127.0.0.1:3004\n name='Error\n stack='Error: connect ECONNREFUSED 127.0.0.1:3004\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1607:16)\n}\nCall log:\n- → POST http://localhost:3004/auth\n- user-agent: Playwright/1.47.0-beta-1726138322000 (arm64; macOS 15.0) java/17\n- accept: */*\n- accept-encoding: gzip,deflate,br\n- Content-Type: application/json\n- content-length: 47\n",
+ "details": "\n com.microsoft.playwright.PlaywrightException: Error {\n message='connect ECONNREFUSED 127.0.0.1:3004\n name='Error\n stack='Error: connect ECONNREFUSED 127.0.0.1:3004\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1607:16)\n}\nCall log:\n- → POST http://localhost:3004/auth\n- user-agent: Playwright/1.47.0-beta-1726138322000 (arm64; macOS 15.0) java/17\n- accept: */*\n- accept-encoding: gzip,deflate,br\n- Content-Type: application/json\n- content-length: 47\n\nat com.microsoft.playwright.impl.WaitableResult.get(WaitableResult.java:56)\nat com.microsoft.playwright.impl.ChannelOwner.runUntil(ChannelOwner.java:120)\nat com.microsoft.playwright.impl.Connection.sendMessage(Connection.java:130)\nat com.microsoft.playwright.impl.ChannelOwner.sendMessage(ChannelOwner.java:106)\nat com.microsoft.playwright.impl.APIRequestContextImpl.fetchImpl(APIRequestContextImpl.java:156)\nat com.microsoft.playwright.impl.APIRequestContextImpl.lambda$fetch$1(APIRequestContextImpl.java:68)\nat com.microsoft.playwright.impl.LoggingSupport.withLogging(LoggingSupport.java:47)\nat com.microsoft.playwright.impl.ChannelOwner.withLogging(ChannelOwner.java:89)\nat com.microsoft.playwright.impl.APIRequestContextImpl.fetch(APIRequestContextImpl.java:68)\nat com.microsoft.playwright.impl.APIRequestContextImpl.post(APIRequestContextImpl.java:212)\nat io.github.mfaisalkhatri.api.restfulecommerce.HappyPathTests.testShouldUpdateTheOrderUsingPatch(HappyPathTests.java:175)\nat java.base/java.util.ArrayList.forEach(ArrayList.java:1511)\nat com.intellij.rt.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:65)\nat com.intellij.rt.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:105)\nCaused by: com.microsoft.playwright.impl.DriverException: Error {\n message='connect ECONNREFUSED 127.0.0.1:3004\n name='Error\n stack='Error: connect ECONNREFUSED 127.0.0.1:3004\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1607:16)\n}\nCall log:\n- → POST http://localhost:3004/auth\n- user-agent: Playwright/1.47.0-beta-1726138322000 (arm64; macOS 15.0) java/17\n- accept: */*\n- accept-encoding: gzip,deflate,br\n- Content-Type: application/json\n- content-length: 47\n\nat com.microsoft.playwright.impl.Connection.dispatch(Connection.java:259)\nat com.microsoft.playwright.impl.Connection.processOneMessage(Connection.java:211)\nat com.microsoft.playwright.impl.ChannelOwner.runUntil(ChannelOwner.java:118)\n... 37 more\n... Removed 25 stack frames\n "
+ }
+ },
+ {
+ "classname": "io.github.mfaisalkhatri.api.restfulecommerce.HappyPathTests",
+ "name": "testShouldDeleteTheOrder",
+ "time": 0.305,
+ "failure": {
+ "type": "com.microsoft.playwright.PlaywrightException",
+ "message": "Error {\n message='connect ECONNREFUSED 127.0.0.1:3004\n name='Error\n stack='Error: connect ECONNREFUSED 127.0.0.1:3004\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1607:16)\n}\nCall log:\n- → POST http://localhost:3004/auth\n- user-agent: Playwright/1.47.0-beta-1726138322000 (arm64; macOS 15.0) java/17\n- accept: */*\n- accept-encoding: gzip,deflate,br\n- Content-Type: application/json\n- content-length: 47\n",
+ "details": "\n com.microsoft.playwright.PlaywrightException: Error {\n message='connect ECONNREFUSED 127.0.0.1:3004\n name='Error\n stack='Error: connect ECONNREFUSED 127.0.0.1:3004\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1607:16)\n}\nCall log:\n- → POST http://localhost:3004/auth\n- user-agent: Playwright/1.47.0-beta-1726138322000 (arm64; macOS 15.0) java/17\n- accept: */*\n- accept-encoding: gzip,deflate,br\n- Content-Type: application/json\n- content-length: 47\n\nat com.microsoft.playwright.impl.WaitableResult.get(WaitableResult.java:56)\nat com.microsoft.playwright.impl.ChannelOwner.runUntil(ChannelOwner.java:120)\nat com.microsoft.playwright.impl.Connection.sendMessage(Connection.java:130)\nat com.microsoft.playwright.impl.ChannelOwner.sendMessage(ChannelOwner.java:106)\nat com.microsoft.playwright.impl.APIRequestContextImpl.fetchImpl(APIRequestContextImpl.java:156)\nat com.microsoft.playwright.impl.APIRequestContextImpl.lambda$fetch$1(APIRequestContextImpl.java:68)\nat com.microsoft.playwright.impl.LoggingSupport.withLogging(LoggingSupport.java:47)\nat com.microsoft.playwright.impl.ChannelOwner.withLogging(ChannelOwner.java:89)\nat com.microsoft.playwright.impl.APIRequestContextImpl.fetch(APIRequestContextImpl.java:68)\nat com.microsoft.playwright.impl.APIRequestContextImpl.post(APIRequestContextImpl.java:212)\nat io.github.mfaisalkhatri.api.restfulecommerce.HappyPathTests.testShouldDeleteTheOrder(HappyPathTests.java:203)\nat java.base/java.util.ArrayList.forEach(ArrayList.java:1511)\nat com.intellij.rt.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:65)\nat com.intellij.rt.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:105)\nCaused by: com.microsoft.playwright.impl.DriverException: Error {\n message='connect ECONNREFUSED 127.0.0.1:3004\n name='Error\n stack='Error: connect ECONNREFUSED 127.0.0.1:3004\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1607:16)\n}\nCall log:\n- → POST http://localhost:3004/auth\n- user-agent: Playwright/1.47.0-beta-1726138322000 (arm64; macOS 15.0) java/17\n- accept: */*\n- accept-encoding: gzip,deflate,br\n- Content-Type: application/json\n- content-length: 47\n\nat com.microsoft.playwright.impl.Connection.dispatch(Connection.java:259)\nat com.microsoft.playwright.impl.Connection.processOneMessage(Connection.java:211)\nat com.microsoft.playwright.impl.ChannelOwner.runUntil(ChannelOwner.java:118)\n... 37 more\n... Removed 25 stack frames\n "
+ }
+ },
+ {
+ "classname": "io.github.mfaisalkhatri.api.restfulecommerce.HappyPathTests",
+ "name": "testShouldNotRetrieveDeletedOrder",
+ "time": 0.307,
+ "failure": {
+ "type": "com.microsoft.playwright.PlaywrightException",
+ "message": "Error {\n message='connect ECONNREFUSED 127.0.0.1:3004\n name='Error\n stack='Error: connect ECONNREFUSED 127.0.0.1:3004\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1607:16)\n}\nCall log:\n- → GET http://localhost:3004/getOrder?id=1\n- user-agent: Playwright/1.47.0-beta-1726138322000 (arm64; macOS 15.0) java/17\n- accept: */*\n- accept-encoding: gzip,deflate,br\n- Content-Type: application/json\n",
+ "details": "\n com.microsoft.playwright.PlaywrightException: Error {\n message='connect ECONNREFUSED 127.0.0.1:3004\n name='Error\n stack='Error: connect ECONNREFUSED 127.0.0.1:3004\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1607:16)\n}\nCall log:\n- → GET http://localhost:3004/getOrder?id=1\n- user-agent: Playwright/1.47.0-beta-1726138322000 (arm64; macOS 15.0) java/17\n- accept: */*\n- accept-encoding: gzip,deflate,br\n- Content-Type: application/json\n\nat com.microsoft.playwright.impl.WaitableResult.get(WaitableResult.java:56)\nat com.microsoft.playwright.impl.ChannelOwner.runUntil(ChannelOwner.java:120)\nat com.microsoft.playwright.impl.Connection.sendMessage(Connection.java:130)\nat com.microsoft.playwright.impl.ChannelOwner.sendMessage(ChannelOwner.java:106)\nat com.microsoft.playwright.impl.APIRequestContextImpl.fetchImpl(APIRequestContextImpl.java:156)\nat com.microsoft.playwright.impl.APIRequestContextImpl.lambda$fetch$1(APIRequestContextImpl.java:68)\nat com.microsoft.playwright.impl.LoggingSupport.withLogging(LoggingSupport.java:47)\nat com.microsoft.playwright.impl.ChannelOwner.withLogging(ChannelOwner.java:89)\nat com.microsoft.playwright.impl.APIRequestContextImpl.fetch(APIRequestContextImpl.java:68)\nat com.microsoft.playwright.impl.APIRequestContextImpl.get(APIRequestContextImpl.java:197)\nat io.github.mfaisalkhatri.api.restfulecommerce.HappyPathTests.testShouldNotRetrieveDeletedOrder(HappyPathTests.java:222)\nat java.base/java.util.ArrayList.forEach(ArrayList.java:1511)\nat com.intellij.rt.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:65)\nat com.intellij.rt.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:105)\nCaused by: com.microsoft.playwright.impl.DriverException: Error {\n message='connect ECONNREFUSED 127.0.0.1:3004\n name='Error\n stack='Error: connect ECONNREFUSED 127.0.0.1:3004\n at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1607:16)\n}\nCall log:\n- → GET http://localhost:3004/getOrder?id=1\n- user-agent: Playwright/1.47.0-beta-1726138322000 (arm64; macOS 15.0) java/17\n- accept: */*\n- accept-encoding: gzip,deflate,br\n- Content-Type: application/json\n\nat com.microsoft.playwright.impl.Connection.dispatch(Connection.java:259)\nat com.microsoft.playwright.impl.Connection.processOneMessage(Connection.java:211)\nat com.microsoft.playwright.impl.ChannelOwner.runUntil(ChannelOwner.java:118)\n... 37 more\n... Removed 25 stack frames\n "
+ }
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/io/github/mfaisalkhatri/api/restfulecommerce/HappyPathTests.java b/src/test/java/io/github/mfaisalkhatri/api/restfulecommerce/HappyPathTests.java
index 1a35ae4..a3b0189 100644
--- a/src/test/java/io/github/mfaisalkhatri/api/restfulecommerce/HappyPathTests.java
+++ b/src/test/java/io/github/mfaisalkhatri/api/restfulecommerce/HappyPathTests.java
@@ -1,7 +1,6 @@
package io.github.mfaisalkhatri.api.restfulecommerce;
-import com.fasterxml.jackson.core.JsonProcessingException;
import com.microsoft.playwright.APIResponse;
import com.microsoft.playwright.options.RequestOptions;
import io.github.mfaisalkhatri.api.restfulecommerce.testdata.OrderData;
@@ -28,7 +27,20 @@ public void testSetup() {
}
@Test
- public void testShouldCreateNewOrders() throws JsonProcessingException {
+ public void testShouldPerformHealthCheckOfServer() {
+ final APIResponse response = this.request.get("/getAllOrders");
+
+ final Logger logger = new Logger(response);
+ logger.logResponseDetails();
+
+ final JSONObject responseObject = new JSONObject(response.text());
+
+ assertEquals(response.status(), 200);
+ assertEquals(responseObject.get("status"), "UP and Running");
+ }
+
+ @Test
+ public void testShouldCreateNewOrders() {
final int totalOrders = 4;
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 8a45d3d..ac9de72 100644
--- a/src/test/java/io/github/mfaisalkhatri/api/restfulecommerce/Logger.java
+++ b/src/test/java/io/github/mfaisalkhatri/api/restfulecommerce/Logger.java
@@ -20,7 +20,7 @@ public void logResponseDetails() {
log.info("Response Headers: \n{}",response.headers());
log.info("Status Code: {}", response.status());
- if(response.text()!=null && !response.text().isEmpty() && response.text().isBlank()) {
+ if(response.text()!=null && !response.text().isEmpty() && !response.text().isBlank()) {
log.info("Response Body: \n{}", prettyPrintJson(response.text()));
}
diff --git a/src/test/java/io/github/mfaisalkhatri/api/restfulecommerce/SadPathTests.java b/src/test/java/io/github/mfaisalkhatri/api/restfulecommerce/SadPathTests.java
new file mode 100644
index 0000000..9c0f495
--- /dev/null
+++ b/src/test/java/io/github/mfaisalkhatri/api/restfulecommerce/SadPathTests.java
@@ -0,0 +1,112 @@
+package io.github.mfaisalkhatri.api.restfulecommerce;
+
+import com.microsoft.playwright.APIResponse;
+import com.microsoft.playwright.options.RequestOptions;
+import io.github.mfaisalkhatri.api.restfulecommerce.testdata.OrderData;
+import org.json.JSONObject;
+import org.testng.annotations.Test;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import static io.github.mfaisalkhatri.api.restfulecommerce.testdata.OrderDataBuilder.getNewOrder;
+import static io.github.mfaisalkhatri.api.restfulecommerce.testdata.OrderDataBuilder.getOrderDataWithMissingProductId;
+import static org.testng.Assert.assertEquals;
+
+public class SadPathTests extends BaseTest {
+
+
+ @Test
+ public void testShouldNotCreateOrder_WhenProductIdFieldIsMissing() {
+
+ List orderList = new ArrayList<>();
+ orderList.add(getOrderDataWithMissingProductId());
+
+ final APIResponse response = this.request.post("/addOrder",
+ RequestOptions.create().setData(orderList));
+
+ final JSONObject responseObject = new JSONObject(response.text());
+ assertEquals(response.status(), 400);
+ assertEquals(responseObject.get("message"), "Each order must have user_id, product_id, product_name, product_amount, qty, tax_amt, and total_amt!");
+
+
+ }
+
+ @Test
+ public void testShouldNotCreateOrder_WhenOrderListIsNotArray() {
+
+ final APIResponse response = this.request.post("/addOrder",
+ RequestOptions.create().setData(getNewOrder()));
+
+ final JSONObject responseObject = new JSONObject(response.text());
+ assertEquals(response.status(), 400);
+ assertEquals(responseObject.get("message"), "Request Payload must be an array of orders!");
+ }
+
+ @Test
+ public void testShouldNotFetchOrderWhenNoOrderExists() {
+
+ final APIResponse response = this.request.get("/getAllOrders");
+
+ final Logger logger = new Logger(response);
+ logger.logResponseDetails();
+
+
+ final JSONObject responseObject = new JSONObject(response.text());
+ assertEquals(response.status(), 404);
+ assertEquals(responseObject.get("message"), "No order found!!");
+ }
+
+ @Test
+ public void testShouldNotFetchOrderWhenNoOrderExistsForOrderId() {
+
+ final int orderId = 90;
+ final APIResponse response = this.request.get("/getOrder", RequestOptions.create().setQueryParam("id", orderId));
+
+ final Logger logger = new Logger(response);
+ logger.logResponseDetails();
+
+ final JSONObject responseObject = new JSONObject(response.text());
+
+ assertEquals(response.status(), 404);
+ assertEquals(responseObject.get("message"), "No order found with the given parameters!");
+ }
+
+ @Test
+ public void testShouldNotFetchOrderWhenNoOrderExistsForUserId() {
+ final String userId = "20";
+
+ final APIResponse response = this.request.get("/getOrder", RequestOptions.create().setQueryParam("user_id", userId));
+
+ final Logger logger = new Logger(response);
+ logger.logResponseDetails();
+
+ final JSONObject responseObject = new JSONObject(response.text());
+
+ assertEquals(response.status(), 404);
+ assertEquals(responseObject.get("message"), "No order found with the given parameters!");
+
+ }
+
+ @Test
+ public void testShouldNotFetchOrderWhenNoOrderExistsForProductId() {
+ final String productId = "987";
+
+ final APIResponse response = this.request.get("/getOrder", RequestOptions.create().setQueryParam("product_id", productId));
+
+ final Logger logger = new Logger(response);
+ logger.logResponseDetails();
+
+ final JSONObject responseObject = new JSONObject(response.text());
+
+ assertEquals(response.status(), 404);
+ assertEquals(responseObject.get("message"), "No order found with the given parameters!");
+ }
+
+ @Test
+ public void testShouldNotGenerateTokenForInvalidCredentials() {
+
+
+ }
+
+}
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 ec12308..5bc6795 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
@@ -26,6 +26,26 @@ public static OrderData getNewOrder() {
.build();
}
+ public static OrderData getOrderDataWithMissingProductId() {
+ int userId = FAKER.number().numberBetween(2, 4);
+ int productAmount = FAKER.number().numberBetween(400, 903);
+ int quantity = FAKER.number().numberBetween(1, 5);
+ int taxAmount = FAKER.number().numberBetween(10,50);
+ int totalAmount = (productAmount*quantity)+taxAmount;
+
+
+ return OrderData.builder()
+ .userId(String.valueOf(userId))
+ .productName(FAKER.commerce().productName())
+ .productAmount(productAmount)
+ .qty(quantity)
+ .taxAmt(taxAmount)
+ .totalAmt(totalAmount)
+ .build();
+
+
+ }
+
public static OrderData getUpdatedOrder() {
int userId = FAKER.number().numberBetween(4, 5);
int productId = FAKER.number().numberBetween(335,337);