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);