Newman Run Dashboard

Saturday, 17 October 2026 17:02:27
Total Iterations

1

Total Assertions

582

Total Failed Tests

35

Total Skipped Tests

0


File Information
Collection: Toolshop API
Environment: Local - Docker
Collection Description
API test suite for Toolshop (Practice Software Testing, sprint5). Folders follow the run order in PLAN-DE-RULARE.md; each request is named after its test case (T-XXX).
Timings and Data
Total run duration: 2m 40.1s
Total data received: 345.82KB
Average response time: 251ms
Summary Item Total Failed
Requests 355 0
Prerequest Scripts 400 0
Test Scripts 349 0
Assertions 582 35
Skipped Tests 0 -



Showing 35 Failures

Failed Test: Status 422

Assertion Error Message
expected response to have status code 422 but got 201
Failed Test: Status 422

Assertion Error Message
expected response to have status code 422 but got 200
Failed Test: Does not confirm payment

Assertion Error Message
expected '{"message":"Payment was successful"}' to not include 'Payment was successful'
Failed Test: Status 422

Assertion Error Message
expected response to have status code 422 but got 200
Failed Test: Does not confirm payment

Assertion Error Message
expected '{"message":"Payment was successful"}' to not include 'Payment was successful'
Failed Test: Status in [404, 422]

Assertion Error Message
expected 201 to be one of [ 404, 422 ]
Failed Test: Status 200

Assertion Error Message
expected response to have status code 200 but got 404
Failed Test: Content-Type PDF

Assertion Error Message
expected 'application/json' to include 'application/pdf'
Failed Test: Status 403

Assertion Error Message
expected response to have status code 403 but got 200
Failed Test: Status 403

Assertion Error Message
expected response to have status code 403 but got 404
Failed Test: Status is not COMPLETED

Assertion Error Message
expected 'COMPLETED' to not deeply equal 'COMPLETED'
Failed Test: Status in [401, 403, 404]

Assertion Error Message
expected 200 to be one of [ 401, 403, 404 ]
Failed Test: Status in [403, 404]

Assertion Error Message
expected 200 to be one of [ 403, 404 ]
Failed Test: Status stayed RESOLVED

Assertion Error Message
expected 'NEW' to deeply equal 'RESOLVED'
Failed Test: Status in [401, 403, 404]

Assertion Error Message
expected 200 to be one of [ 401, 403, 404 ]
Failed Test: Status in [403, 404]

Assertion Error Message
expected 201 to be one of [ 403, 404 ]
Failed Test: Status in [403, 404]

Assertion Error Message
expected 200 to be one of [ 403, 404 ]
Failed Test: Status in [401, 403, 404]

Assertion Error Message
expected 200 to be one of [ 401, 403, 404 ]
Failed Test: Status in [401, 403, 404]

Assertion Error Message
expected 200 to be one of [ 401, 403, 404 ]
Failed Test: Status in [401, 403, 404]

Assertion Error Message
expected 204 to be one of [ 401, 403, 404 ]
Failed Test: Status 401

Assertion Error Message
expected response to have status code 401 but got 201
Failed Test: Status 403

Assertion Error Message
expected response to have status code 403 but got 201
Failed Test: Status in [401, 403]

Assertion Error Message
expected 201 to be one of [ 401, 403 ]
Failed Test: Status 401

Assertion Error Message
expected response to have status code 401 but got 201
Failed Test: Status 403

Assertion Error Message
expected response to have status code 403 but got 201
Failed Test: Status 401

Assertion Error Message
expected response to have status code 401 but got 200
Failed Test: Status 403

Assertion Error Message
expected response to have status code 403 but got 200
Failed Test: Original price

Assertion Error Message
expected 0.01 to deeply equal 14.15
Failed Test: Same status as for the existing email

Assertion Error Message
expected 422 to deeply equal 200
Failed Test: Same message as for the existing email

Assertion Error Message
expected '{"message":"The selected email is inv…' to deeply equal '{"success":true}'
Failed Test: No server error (5xx)

Assertion Error Message
expected 500 to be below 500
Failed Test: No server error (5xx)

Assertion Error Message
expected 500 to be below 500
Failed Test: Status 401

Assertion Error Message
expected response to have status code 401 but got 200
Failed Test: Token had actually expired at request time

Assertion Error Message
expected 1792245733889 to be above 1792245923124
Failed Test: Status 429

Assertion Error Message
expected response to have status code 429 but got 200


There are no skipped tests



1 Iteration available to view
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/register
Response Information
Response Code: 201 - Created
Mean time per request: 8.1s
Mean size per request: 326B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token e838d123-6a4d-470b-b4ec-625f779f58fe
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 340
Request Body
{
          "first_name": "QA",
          "last_name": "UserA",
          "address": {
            "street": "Teststraat 1",
            "city": "Amsterdam",
            "state": "Noord-Holland",
            "country": "NL",
            "postal_code": "1011 AB"
          },
          "phone": "0612345678",
          "dob": "1990-01-01",
          "email": "qa+a-1792245587396@test.local",
          "password": "[password masked]"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 13:59:55 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"first_name":"QA","last_name":"UserA","phone":"0612345678","dob":"1990-01-01","email":"qa+a-1792245587396@test.local","id":"01m552jz1by17vr3sx9zcb1275","created_at":"2026-10-17 13:59:55","address":{"street":"Teststraat 1","house_number":null,"city":"Amsterdam","state":"Noord-Holland","country":"NL","postal_code":"1011 AB"}}
Test Information
NamePassedFailedSkipped
Register A: 201 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/login
Response Information
Response Code: 200 - OK
Mean time per request: 496ms
Mean size per request: 429B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token be8d8f70-a0cd-46ec-92d0-c2b06e10e3aa
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 91
Request Body
{
          "email": "qa+a-1792245587396@test.local",
          "password": "[password masked]"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 13:59:56 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"access_token":"eyJ…[masked]","token_type":"bearer","expires_in":300}
Test Information
NamePassedFailedSkipped
Login A: 200 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/register
Response Information
Response Code: 201 - Created
Mean time per request: 386ms
Mean size per request: 326B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 0e9e5f84-427f-4032-a8fb-85219fe96313
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 340
Request Body
{
          "first_name": "QA",
          "last_name": "UserB",
          "address": {
            "street": "Teststraat 1",
            "city": "Amsterdam",
            "state": "Noord-Holland",
            "country": "NL",
            "postal_code": "1011 AB"
          },
          "phone": "0612345678",
          "dob": "1990-01-01",
          "email": "qa+b-1792245587396@test.local",
          "password": "[password masked]"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 13:59:56 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"first_name":"QA","last_name":"UserB","phone":"0612345678","dob":"1990-01-01","email":"qa+b-1792245587396@test.local","id":"01m552k0pjeydtzqfwz44279eb","created_at":"2026-10-17 13:59:56","address":{"street":"Teststraat 1","house_number":null,"city":"Amsterdam","state":"Noord-Holland","country":"NL","postal_code":"1011 AB"}}
Test Information
NamePassedFailedSkipped
Register B: 201 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/login
Response Information
Response Code: 200 - OK
Mean time per request: 154ms
Mean size per request: 429B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 00b4a456-8ffd-4bbb-8a35-6d33967c8878
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 91
Request Body
{
          "email": "qa+b-1792245587396@test.local",
          "password": "[password masked]"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 13:59:57 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"access_token":"eyJ…[masked]","token_type":"bearer","expires_in":300}
Test Information
NamePassedFailedSkipped
Login B: 200 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/login
Response Information
Response Code: 200 - OK
Mean time per request: 157ms
Mean size per request: 430B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 9cea558b-29b8-472a-8c3f-1bf3fa3e3b8f
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 77
Request Body
{
          "email": "admin@practicesoftwaretesting.com",
          "password": "welcome01"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 13:59:57 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"access_token":"eyJ…[masked]","token_type":"bearer","expires_in":300}
Test Information
NamePassedFailedSkipped
Login admin: 200 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/products
Response Information
Response Code: 200 - OK
Mean time per request: 432ms
Mean size per request: 12.46KB

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 9f2657e9-dea1-4e23-8766-91c28f2ec2ab
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control max-age=120, public
Date Sat, 17 Oct 2026 13:59:58 GMT
ETag "279a8802f640ba9051528ca11db63517"
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"current_page":1,"data":[{"id":"01M552JH28NG35XD8J04PGAJXN","name":"Combination Pliers","description":"Versatile combination pliers designed for gripping, bending, and cutting wire with ease. Featuring chrome vanadium steel construction with induction-hardened cutting edges, these pliers deliver excellent grip and leverage for a wide range of tasks. The precision-machined jaws combine flat gripping surfaces with a pipe-grip section and integrated wire cutter for true multi-purpose functionality. Ergonomic bi-component handles reduce hand fatigue during extended use and provide a secure hold even with oily or gloved hands. The joint is precisely fitted to eliminate play and ensure smooth operation over thousands of cycles. Ideal for electricians, mechanics, and DIY enthusiasts tackling everyday projects around the workshop or job site.","price":14.15,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7J","by_name":"Helinton Fantin","by_url":"https:\/\/unsplash.com\/@fantin","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/W8BNwvOvW4M","file_name":"pliers01.avif","title":"Combination pliers"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWD","name":"Pliers","slug":"pliers"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH2AG9122BMKVRF3XH0Z","name":"Pliers","description":"Reliable general-purpose pliers crafted from drop-forged carbon steel for long-lasting durability in demanding working conditions. The serrated jaws provide a firm grip on a variety of materials including wire, nails, small fasteners, and irregularly shaped objects. Comfortable rubber-coated handles absorb vibration and reduce hand fatigue during extended use, while the non-slip surface ensures confident handling. The precision pivot joint maintains alignment under load, delivering smooth, controlled jaw action with every squeeze. Heat-treated steel construction resists wear and deformation even under heavy use. A must-have foundational tool for any workshop, equally suited for professional tradespeople and home repair projects.","price":12.01,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7K","by_name":"Everyday basics","by_url":"https:\/\/unsplash.com\/@zanardi","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/I8eTuMmxIfo","file_name":"pliers02.avif","title":"Pliers"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWD","name":"Pliers","slug":"pliers"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH2BGG1K6K9GEJTT8GEQ","name":"Bolt Cutters","description":"Heavy-duty bolt cutters engineered to slice through hardened bolts, chains, padlocks, and wire fencing with minimal effort. The compound leverage mechanism multiplies your cutting force by a factor of 30, enabling clean cuts through materials up to 10mm in diameter. Hardened alloy steel blades are precisely ground and heat-treated to maintain a sharp edge through years of repeated use on tough materials. Ergonomic rubber grips and the generous 750mm handle length provide excellent control, leverage, and reach during overhead or awkward-angle cuts. An adjustable blade tension screw lets you fine-tune the jaw alignment for optimal cutting performance. Built for demolition crews, locksmiths, fencing contractors, and maintenance professionals who need reliable cutting power day after day.","price":48.41,"is_location_offer":true,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7M","by_name":"Michael Dziedzic","by_url":"https:\/\/unsplash.com\/@lazycreekimages","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/pM9pkc9J918","file_name":"pliers03.avif","title":"Bolt cutters"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWD","name":"Pliers","slug":"pliers"},"brand":{"id":"01M552JGRS3QMESHAQ8PRPA5QJ","name":"MightyCraft Hardware"}},{"id":"01M552JH2DQD17DR3ERTSE1Z2M","name":"Long Nose Pliers","description":"Precision long nose pliers with narrow tapered jaws designed for reaching into tight, confined spaces and bending fine wire with accuracy. Made from chrome vanadium steel with induction-hardened cutting edges that cleanly sever copper, brass, and steel wire without crushing or fraying. The slim jaw profile tapers to a fine point, making these pliers indispensable for electrical terminal work, jewelry making, and intricate mechanical repairs. Bi-component comfort grips minimize hand strain during detailed tasks requiring a steady hand and controlled pressure. The leaf-spring joint returns the handles to the open position automatically, speeding up repetitive tasks. A must-have precision tool trusted by electricians, electronics technicians, and hobbyists worldwide.","price":14.24,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":false,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7N","by_name":"Brett Jordan","by_url":"https:\/\/unsplash.com\/@brett_jordan","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/GamuDTVm02g","file_name":"pliers04.avif","title":"Long nose pliers"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWD","name":"Pliers","slug":"pliers"},"brand":{"id":"01M552JGRS3QMESHAQ8PRPA5QJ","name":"MightyCraft Hardware"}},{"id":"01M552JH2EXDQ749444RB4RAMH","name":"Slip Joint Pliers","description":"Adjustable slip joint pliers that feature a two-position pivot mechanism for switching between regular and wide jaw openings to accommodate different fastener sizes. The PVC-coated handles offer a comfortable, non-slip grip while the precisely machined jaws securely grasp round, flat, and hexagonal objects without slipping. Constructed from durable drop-forged carbon steel that has been heat-treated to withstand heavy daily use in professional environments. The curved jaw section grips pipes and cylindrical objects, while the flat front surface handles nuts, bolts, and sheet materials. A wire cutter integrated near the pivot handles light cutting tasks without reaching for a separate tool. Perfect for plumbing, automotive, HVAC, and general maintenance work where a single versatile gripping tool saves time.","price":9.17,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7P","by_name":"Yasin Hasan","by_url":"https:\/\/unsplash.com\/@yasin","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/dwlxTSpfKXg","file_name":"pliers05.avif","title":"Slip joint pliers"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWD","name":"Pliers","slug":"pliers"},"brand":{"id":"01M552JGRS3QMESHAQ8PRPA5QJ","name":"MightyCraft Hardware"}},{"id":"01M552JH2F4ZF8Y8F7T1EBMA3H","name":"Claw Hammer with Shock Reduction Grip","description":"Ergonomic claw hammer featuring an advanced shock reduction grip system that absorbs up to 70% of impact vibrations, protecting your wrist, elbow, and shoulder during prolonged nailing sessions. The 450g carbon steel head is precision-balanced and heat-treated for maximum hardness, ensuring accurate nail driving with minimal effort on every swing. The curved claw design effortlessly removes nails without damaging surrounding wood surfaces, making it equally useful for construction and renovation work. A fiberglass-reinforced handle combines lightweight strength with exceptional durability that far outlasts traditional wooden handles. The overmolded soft-grip zone conforms to your hand shape for a custom-feeling, fatigue-free hold throughout long working days. Recommended for professional framing, carpentry, and renovation projects where operator comfort matters as much as striking performance.","price":13.41,"is_location_offer":true,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7Q","by_name":"iMattSmart","by_url":"https:\/\/unsplash.com\/@imattsmart","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/jaLaLQdkBOE","file_name":"hammer01.avif","title":"Claw Hammer"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGW9","name":"Hammer","slug":"hammer"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH2GD6Q6AVJJSHVS7GKD","name":"Hammer","description":"A dependable standard claw hammer suitable for driving and removing nails in everyday construction, carpentry, and home improvement projects. The 350g carbon steel head is drop-forged and heat-treated for maximum hardness, then fitted to a traditional wooden handle that provides natural shock absorption with each strike. Well-balanced weight distribution between the head and handle ensures accurate strikes with minimal wrist effort, reducing fatigue during repetitive nailing tasks. The polished face resists rust and provides a smooth surface that drives nails cleanly without leaving marks on finish materials. A gently curved claw provides reliable nail extraction leverage without excessive force. This versatile hammer belongs in every toolbox, from professional carpentry workshops to home garages and apartment maintenance kits.","price":12.58,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7R","by_name":"Jozsef Hocza","by_url":"https:\/\/unsplash.com\/@hocza","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/D3nouOYbALc","file_name":"hammer02.avif","title":"Hammer"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGW9","name":"Hammer","slug":"hammer"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH2JAZV07V79R70NNDNX","name":"Claw Hammer","description":"Traditional claw hammer with a polished carbon steel head engineered for driving and removing nails with precision and confidence. The rubber-wrapped handle provides a secure, comfortable grip even in wet, dusty, or cold conditions where bare metal or wood handles would slip. At 500g, it offers the ideal balance between striking power and maneuverability for general carpentry, framing, and construction tasks. The curved claw design allows for smooth nail extraction without gouging or marring wood surfaces, protecting your finished work. The head-to-handle connection uses an epoxy-bonded wedge system that prevents loosening over time. A reliable, no-nonsense tool that professional carpenters and weekend builders alike reach for every day.","price":11.48,"is_location_offer":true,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7S","by_name":"Andrew George","by_url":"https:\/\/unsplash.com\/@andrewjoegeorge","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/YU2mCvXR0wA","file_name":"hammer03.avif","title":"Claw Hammer"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGW9","name":"Hammer","slug":"hammer"},"brand":{"id":"01M552JGRS3QMESHAQ8PRPA5QJ","name":"MightyCraft Hardware"}},{"id":"01M552JH2K9QV3KQSQ6ZBBD61D","name":"Thor Hammer","description":"The legendary Thor Hammer combines premium craftsmanship with raw striking power in a tool that is truly built to last generations. Forged from Uru metal with a hand-wrapped leather grip, this extraordinary 5kg masterpiece delivers unmatched impact force for the most demanding demolition, forging, and heavy construction tasks. The perfectly balanced oversized head ensures every swing transfers maximum energy to the target, while the enlarged striking face covers more surface area than any conventional hammer. Despite its impressive mass, the ergonomic handle design and precise weight distribution allow for surprisingly controlled, accurate swings. This is not merely a tool but a statement piece for those who accept nothing less than the absolute best in their workshop. Comes with a lifetime warranty because true legends never fade. Please note: only one Thor Hammer is permitted per customer.","price":11.14,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7T","by_name":"ANIRUDH","by_url":"https:\/\/unsplash.com\/@lanirudhreddy","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/3esjG-nlgyk","file_name":"hammer04.avif","title":"Hammer"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGW9","name":"Hammer","slug":"hammer"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}}],"from":1,"last_page":6,"per_page":9,"to":9,"total":50}
Test Information
NamePassedFailedSkipped
Products: 200 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/carts
Response Information
Response Code: 201 - Created
Mean time per request: 116ms
Mean size per request: 35B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 9f6d8cf1-2ce7-4145-8742-15b9cd3bf2f2
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 2
Request Body
{}
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 13:59:58 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"id":"01m552k2aw0jynek4z20tphp4w"}
Test Information
NamePassedFailedSkipped
Cart created: 201 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/carts/01m552k2aw0jynek4z20tphp4w
Response Information
Response Code: 200 - OK
Mean time per request: 154ms
Mean size per request: 34B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token e7c99bc8-a209-4b2a-9538-d93865028e3b
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 65
Request Body
{
          "product_id": "01M552JH28NG35XD8J04PGAJXN",
          "quantity": 1
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 13:59:58 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"result":"item added or updated"}
Test Information
NamePassedFailedSkipped
Product added: 200 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/postcode-lookup?country=NL&postcode=1011%20AB
Response Information
Response Code: 200 - OK
Mean time per request: 504ms
Mean size per request: 119B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 726eab99-d32f-432d-a1ba-542e8df1b82f
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 13:59:59 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"street":"Bozkurtweg","house_number":"218","city":"Wezuperbrug","state":"Drenthe","country":"NL","postcode":"1011 AB"}
Test Information
NamePassedFailedSkipped
Lookup: 200 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/invoices
Response Information
Response Code: 201 - Created
Mean time per request: 641ms
Mean size per request: 490B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token a53d736a-020a-4650-8971-50d6a12a44a6
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 272
Request Body
{
          "billing_street": "Teststraat 1",
          "billing_city": "Wezuperbrug",
          "billing_state": "Drenthe",
          "billing_country": "NL",
          "billing_postal_code": "1011 AB",
          "payment_method": "cash-on-delivery",
          "payment_details": {},
          "cart_id": "01m552k2aw0jynek4z20tphp4w"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:00 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"billing_street":"Teststraat 1","billing_city":"Wezuperbrug","billing_state":"Drenthe","billing_country":"NL","billing_postal_code":"1011 AB","user_id":"01m552jz1by17vr3sx9zcb1275","invoice_date":"2026-10-17T14:00:00.203080Z","invoice_number":"INV-2026000004","id":"01m552k3yvjyfr0ae67a69ct0f","created_at":"2026-10-17T14:00:00.000000Z","subtotal":14.15,"total":14.15,"additional_discount_percentage":null,"additional_discount_amount":0,"eco_discount_percentage":0,"eco_discount_amount":0}
Test Information
NamePassedFailedSkipped
Order: 201 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/carts
Response Information
Response Code: 201 - Created
Mean time per request: 109ms
Mean size per request: 35B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token c3a93e16-4091-4589-9a18-38d5ae2e9508
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 2
Request Body
{}
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:00 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"id":"01m552k4gf7hn8erq3g0c4gdgy"}
Test Information
NamePassedFailedSkipped
Cart B created: 201 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/carts/01m552k4gf7hn8erq3g0c4gdgy
Response Information
Response Code: 200 - OK
Mean time per request: 148ms
Mean size per request: 34B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token e59190ab-2b88-4141-98ab-20ee6c2dfae6
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 65
Request Body
{
          "product_id": "01M552JH2AG9122BMKVRF3XH0Z",
          "quantity": 1
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:01 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"result":"item added or updated"}
Test Information
NamePassedFailedSkipped
Product added: 200 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/invoices
Response Information
Response Code: 201 - Created
Mean time per request: 283ms
Mean size per request: 490B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 8a0b2b20-b8f3-46a9-a436-85d79df38d83
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 272
Request Body
{
          "billing_street": "Teststraat 1",
          "billing_city": "Wezuperbrug",
          "billing_state": "Drenthe",
          "billing_country": "NL",
          "billing_postal_code": "1011 AB",
          "payment_method": "cash-on-delivery",
          "payment_details": {},
          "cart_id": "01m552k4gf7hn8erq3g0c4gdgy"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:01 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"billing_street":"Teststraat 1","billing_city":"Wezuperbrug","billing_state":"Drenthe","billing_country":"NL","billing_postal_code":"1011 AB","user_id":"01m552k0pjeydtzqfwz44279eb","invoice_date":"2026-10-17T14:00:01.616497Z","invoice_number":"INV-2026000005","id":"01m552k5aksy1sdgxzfxese023","created_at":"2026-10-17T14:00:01.000000Z","subtotal":12.01,"total":12.01,"additional_discount_percentage":null,"additional_discount_amount":0,"eco_discount_percentage":0,"eco_discount_amount":0}
Test Information
NamePassedFailedSkipped
Order B: 201 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/status
Response Information
Response Code: 200 - OK
Mean time per request: 105ms
Mean size per request: 61B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token b0f780c7-37b2-48f0-a21f-1bd8b2adb972
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json;charset=UTF-8
Transfer-Encoding chunked
Connection keep-alive
Charset utf-8
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:01 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"version":"5.0","environment":"local","app_name":"Toolshop"}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Has version, environment, app_name 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/products
Response Information
Response Code: 200 - OK
Mean time per request: 127ms
Mean size per request: 12.46KB

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 7bbd9e3a-1188-484a-8ff1-3a721bae9829
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control max-age=120, public
Date Sat, 17 Oct 2026 14:00:02 GMT
ETag "279a8802f640ba9051528ca11db63517"
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"current_page":1,"data":[{"id":"01M552JH28NG35XD8J04PGAJXN","name":"Combination Pliers","description":"Versatile combination pliers designed for gripping, bending, and cutting wire with ease. Featuring chrome vanadium steel construction with induction-hardened cutting edges, these pliers deliver excellent grip and leverage for a wide range of tasks. The precision-machined jaws combine flat gripping surfaces with a pipe-grip section and integrated wire cutter for true multi-purpose functionality. Ergonomic bi-component handles reduce hand fatigue during extended use and provide a secure hold even with oily or gloved hands. The joint is precisely fitted to eliminate play and ensure smooth operation over thousands of cycles. Ideal for electricians, mechanics, and DIY enthusiasts tackling everyday projects around the workshop or job site.","price":14.15,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7J","by_name":"Helinton Fantin","by_url":"https:\/\/unsplash.com\/@fantin","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/W8BNwvOvW4M","file_name":"pliers01.avif","title":"Combination pliers"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWD","name":"Pliers","slug":"pliers"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH2AG9122BMKVRF3XH0Z","name":"Pliers","description":"Reliable general-purpose pliers crafted from drop-forged carbon steel for long-lasting durability in demanding working conditions. The serrated jaws provide a firm grip on a variety of materials including wire, nails, small fasteners, and irregularly shaped objects. Comfortable rubber-coated handles absorb vibration and reduce hand fatigue during extended use, while the non-slip surface ensures confident handling. The precision pivot joint maintains alignment under load, delivering smooth, controlled jaw action with every squeeze. Heat-treated steel construction resists wear and deformation even under heavy use. A must-have foundational tool for any workshop, equally suited for professional tradespeople and home repair projects.","price":12.01,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7K","by_name":"Everyday basics","by_url":"https:\/\/unsplash.com\/@zanardi","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/I8eTuMmxIfo","file_name":"pliers02.avif","title":"Pliers"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWD","name":"Pliers","slug":"pliers"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH2BGG1K6K9GEJTT8GEQ","name":"Bolt Cutters","description":"Heavy-duty bolt cutters engineered to slice through hardened bolts, chains, padlocks, and wire fencing with minimal effort. The compound leverage mechanism multiplies your cutting force by a factor of 30, enabling clean cuts through materials up to 10mm in diameter. Hardened alloy steel blades are precisely ground and heat-treated to maintain a sharp edge through years of repeated use on tough materials. Ergonomic rubber grips and the generous 750mm handle length provide excellent control, leverage, and reach during overhead or awkward-angle cuts. An adjustable blade tension screw lets you fine-tune the jaw alignment for optimal cutting performance. Built for demolition crews, locksmiths, fencing contractors, and maintenance professionals who need reliable cutting power day after day.","price":48.41,"is_location_offer":true,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7M","by_name":"Michael Dziedzic","by_url":"https:\/\/unsplash.com\/@lazycreekimages","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/pM9pkc9J918","file_name":"pliers03.avif","title":"Bolt cutters"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWD","name":"Pliers","slug":"pliers"},"brand":{"id":"01M552JGRS3QMESHAQ8PRPA5QJ","name":"MightyCraft Hardware"}},{"id":"01M552JH2DQD17DR3ERTSE1Z2M","name":"Long Nose Pliers","description":"Precision long nose pliers with narrow tapered jaws designed for reaching into tight, confined spaces and bending fine wire with accuracy. Made from chrome vanadium steel with induction-hardened cutting edges that cleanly sever copper, brass, and steel wire without crushing or fraying. The slim jaw profile tapers to a fine point, making these pliers indispensable for electrical terminal work, jewelry making, and intricate mechanical repairs. Bi-component comfort grips minimize hand strain during detailed tasks requiring a steady hand and controlled pressure. The leaf-spring joint returns the handles to the open position automatically, speeding up repetitive tasks. A must-have precision tool trusted by electricians, electronics technicians, and hobbyists worldwide.","price":14.24,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":false,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7N","by_name":"Brett Jordan","by_url":"https:\/\/unsplash.com\/@brett_jordan","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/GamuDTVm02g","file_name":"pliers04.avif","title":"Long nose pliers"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWD","name":"Pliers","slug":"pliers"},"brand":{"id":"01M552JGRS3QMESHAQ8PRPA5QJ","name":"MightyCraft Hardware"}},{"id":"01M552JH2EXDQ749444RB4RAMH","name":"Slip Joint Pliers","description":"Adjustable slip joint pliers that feature a two-position pivot mechanism for switching between regular and wide jaw openings to accommodate different fastener sizes. The PVC-coated handles offer a comfortable, non-slip grip while the precisely machined jaws securely grasp round, flat, and hexagonal objects without slipping. Constructed from durable drop-forged carbon steel that has been heat-treated to withstand heavy daily use in professional environments. The curved jaw section grips pipes and cylindrical objects, while the flat front surface handles nuts, bolts, and sheet materials. A wire cutter integrated near the pivot handles light cutting tasks without reaching for a separate tool. Perfect for plumbing, automotive, HVAC, and general maintenance work where a single versatile gripping tool saves time.","price":9.17,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7P","by_name":"Yasin Hasan","by_url":"https:\/\/unsplash.com\/@yasin","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/dwlxTSpfKXg","file_name":"pliers05.avif","title":"Slip joint pliers"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWD","name":"Pliers","slug":"pliers"},"brand":{"id":"01M552JGRS3QMESHAQ8PRPA5QJ","name":"MightyCraft Hardware"}},{"id":"01M552JH2F4ZF8Y8F7T1EBMA3H","name":"Claw Hammer with Shock Reduction Grip","description":"Ergonomic claw hammer featuring an advanced shock reduction grip system that absorbs up to 70% of impact vibrations, protecting your wrist, elbow, and shoulder during prolonged nailing sessions. The 450g carbon steel head is precision-balanced and heat-treated for maximum hardness, ensuring accurate nail driving with minimal effort on every swing. The curved claw design effortlessly removes nails without damaging surrounding wood surfaces, making it equally useful for construction and renovation work. A fiberglass-reinforced handle combines lightweight strength with exceptional durability that far outlasts traditional wooden handles. The overmolded soft-grip zone conforms to your hand shape for a custom-feeling, fatigue-free hold throughout long working days. Recommended for professional framing, carpentry, and renovation projects where operator comfort matters as much as striking performance.","price":13.41,"is_location_offer":true,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7Q","by_name":"iMattSmart","by_url":"https:\/\/unsplash.com\/@imattsmart","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/jaLaLQdkBOE","file_name":"hammer01.avif","title":"Claw Hammer"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGW9","name":"Hammer","slug":"hammer"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH2GD6Q6AVJJSHVS7GKD","name":"Hammer","description":"A dependable standard claw hammer suitable for driving and removing nails in everyday construction, carpentry, and home improvement projects. The 350g carbon steel head is drop-forged and heat-treated for maximum hardness, then fitted to a traditional wooden handle that provides natural shock absorption with each strike. Well-balanced weight distribution between the head and handle ensures accurate strikes with minimal wrist effort, reducing fatigue during repetitive nailing tasks. The polished face resists rust and provides a smooth surface that drives nails cleanly without leaving marks on finish materials. A gently curved claw provides reliable nail extraction leverage without excessive force. This versatile hammer belongs in every toolbox, from professional carpentry workshops to home garages and apartment maintenance kits.","price":12.58,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7R","by_name":"Jozsef Hocza","by_url":"https:\/\/unsplash.com\/@hocza","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/D3nouOYbALc","file_name":"hammer02.avif","title":"Hammer"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGW9","name":"Hammer","slug":"hammer"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH2JAZV07V79R70NNDNX","name":"Claw Hammer","description":"Traditional claw hammer with a polished carbon steel head engineered for driving and removing nails with precision and confidence. The rubber-wrapped handle provides a secure, comfortable grip even in wet, dusty, or cold conditions where bare metal or wood handles would slip. At 500g, it offers the ideal balance between striking power and maneuverability for general carpentry, framing, and construction tasks. The curved claw design allows for smooth nail extraction without gouging or marring wood surfaces, protecting your finished work. The head-to-handle connection uses an epoxy-bonded wedge system that prevents loosening over time. A reliable, no-nonsense tool that professional carpenters and weekend builders alike reach for every day.","price":11.48,"is_location_offer":true,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7S","by_name":"Andrew George","by_url":"https:\/\/unsplash.com\/@andrewjoegeorge","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/YU2mCvXR0wA","file_name":"hammer03.avif","title":"Claw Hammer"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGW9","name":"Hammer","slug":"hammer"},"brand":{"id":"01M552JGRS3QMESHAQ8PRPA5QJ","name":"MightyCraft Hardware"}},{"id":"01M552JH2K9QV3KQSQ6ZBBD61D","name":"Thor Hammer","description":"The legendary Thor Hammer combines premium craftsmanship with raw striking power in a tool that is truly built to last generations. Forged from Uru metal with a hand-wrapped leather grip, this extraordinary 5kg masterpiece delivers unmatched impact force for the most demanding demolition, forging, and heavy construction tasks. The perfectly balanced oversized head ensures every swing transfers maximum energy to the target, while the enlarged striking face covers more surface area than any conventional hammer. Despite its impressive mass, the ergonomic handle design and precise weight distribution allow for surprisingly controlled, accurate swings. This is not merely a tool but a statement piece for those who accept nothing less than the absolute best in their workshop. Comes with a lifetime warranty because true legends never fade. Please note: only one Thor Hammer is permitted per customer.","price":11.14,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7T","by_name":"ANIRUDH","by_url":"https:\/\/unsplash.com\/@lanirudhreddy","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/3esjG-nlgyk","file_name":"hammer04.avif","title":"Hammer"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGW9","name":"Hammer","slug":"hammer"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}}],"from":1,"last_page":6,"per_page":9,"to":9,"total":50}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
data not empty 1 0 0
Pagination fields 1 0 0
Each product has id, name, price 1 0 0
Total 4 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/products/01M552JH28NG35XD8J04PGAJXN
Response Information
Response Code: 200 - OK
Mean time per request: 144ms
Mean size per request: 2.07KB

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 685a5d0f-24c7-41a1-b6b3-0cd7a37a6df1
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control max-age=120, public
Date Sat, 17 Oct 2026 14:00:02 GMT
ETag "7c621aee46bfd58b8d9cbcca45d560bb"
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"id":"01M552JH28NG35XD8J04PGAJXN","name":"Combination Pliers","description":"Versatile combination pliers designed for gripping, bending, and cutting wire with ease. Featuring chrome vanadium steel construction with induction-hardened cutting edges, these pliers deliver excellent grip and leverage for a wide range of tasks. The precision-machined jaws combine flat gripping surfaces with a pipe-grip section and integrated wire cutter for true multi-purpose functionality. Ergonomic bi-component handles reduce hand fatigue during extended use and provide a secure hold even with oily or gloved hands. The joint is precisely fitted to eliminate play and ensure smooth operation over thousands of cycles. Ideal for electricians, mechanics, and DIY enthusiasts tackling everyday projects around the workshop or job site.","price":14.15,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7J","by_name":"Helinton Fantin","by_url":"https:\/\/unsplash.com\/@fantin","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/W8BNwvOvW4M","file_name":"pliers01.avif","title":"Combination pliers"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWD","name":"Pliers","slug":"pliers","parent_id":"01M552JH0THC23EZ570GKVAFFH"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"},"specs":[{"id":"01M552JH6P79413ZXA0S6SD6KS","product_id":"01M552JH28NG35XD8J04PGAJXN","spec_name":"Handle Material","spec_value":"Bi-component","spec_unit":null},{"id":"01M552JH6P79413ZXA0S6SD6KQ","product_id":"01M552JH28NG35XD8J04PGAJXN","spec_name":"Length","spec_value":"200","spec_unit":"mm"},{"id":"01M552JH6P79413ZXA0S6SD6KR","product_id":"01M552JH28NG35XD8J04PGAJXN","spec_name":"Material","spec_value":"Chrome Vanadium Steel","spec_unit":null},{"id":"01M552JH6P79413ZXA0S6SD6KT","product_id":"01M552JH28NG35XD8J04PGAJXN","spec_name":"Warranty","spec_value":"2","spec_unit":"years"},{"id":"01M552JH6P79413ZXA0S6SD6KP","product_id":"01M552JH28NG35XD8J04PGAJXN","spec_name":"Weight","spec_value":"340","spec_unit":"g"}]}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Correct id 1 0 0
Has name, price, category, brand 1 0 0
Total 3 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/products/01AAAAAAAAAAAAAAAAAAAAAAAA
Response Information
Response Code: 404 - Not Found
Mean time per request: 115ms
Mean size per request: 38B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token baf5e8ea-023e-4171-b607-9a5d0fb18ff1
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:02 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Requested item not found"}
Test Information
NamePassedFailedSkipped
Status 404 1 0 0
No internal details in response 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/products/abc
Response Information
Response Code: 404 - Not Found
Mean time per request: 96ms
Mean size per request: 38B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 45ee635b-4d9d-4c8a-8ae5-36df2d078231
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:03 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Requested item not found"}
Test Information
NamePassedFailedSkipped
Status in [404, 422] 1 0 0
No internal details in response 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/products/-1
Response Information
Response Code: 404 - Not Found
Mean time per request: 103ms
Mean size per request: 38B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 952e43d1-acb7-4ebb-9081-673dc3fe4d46
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:03 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Requested item not found"}
Test Information
NamePassedFailedSkipped
Status in [404, 422] 1 0 0
No internal details in response 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/products/%27%20OR%201%3D1%20--
Response Information
Response Code: 404 - Not Found
Mean time per request: 106ms
Mean size per request: 38B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 477f31ab-2472-490f-b331-c794a544b412
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:03 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Requested item not found"}
Test Information
NamePassedFailedSkipped
Status in [404, 422] 1 0 0
No internal details in response 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 0bf11a96-a072-498a-ae38-bd63daad1b2f
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:04 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Requested item not found"}
Test Information
NamePassedFailedSkipped
Status in [404, 422] 1 0 0
No internal details in response 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/products/search?q=hammer
Response Information
Response Code: 200 - OK
Mean time per request: 160ms
Mean size per request: 8.47KB

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 5c67d588-dd85-4289-881e-510dc72277fa
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control max-age=120, public
Date Sat, 17 Oct 2026 14:00:04 GMT
ETag "bc4c4cad09ccfe07432c4d71b42e3014"
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"current_page":1,"data":[{"id":"01M552JH2F4ZF8Y8F7T1EBMA3H","name":"Claw Hammer with Shock Reduction Grip","description":"Ergonomic claw hammer featuring an advanced shock reduction grip system that absorbs up to 70% of impact vibrations, protecting your wrist, elbow, and shoulder during prolonged nailing sessions. The 450g carbon steel head is precision-balanced and heat-treated for maximum hardness, ensuring accurate nail driving with minimal effort on every swing. The curved claw design effortlessly removes nails without damaging surrounding wood surfaces, making it equally useful for construction and renovation work. A fiberglass-reinforced handle combines lightweight strength with exceptional durability that far outlasts traditional wooden handles. The overmolded soft-grip zone conforms to your hand shape for a custom-feeling, fatigue-free hold throughout long working days. Recommended for professional framing, carpentry, and renovation projects where operator comfort matters as much as striking performance.","price":13.41,"is_location_offer":true,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7Q","by_name":"iMattSmart","by_url":"https:\/\/unsplash.com\/@imattsmart","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/jaLaLQdkBOE","file_name":"hammer01.avif","title":"Claw Hammer"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGW9","name":"Hammer"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH2GD6Q6AVJJSHVS7GKD","name":"Hammer","description":"A dependable standard claw hammer suitable for driving and removing nails in everyday construction, carpentry, and home improvement projects. The 350g carbon steel head is drop-forged and heat-treated for maximum hardness, then fitted to a traditional wooden handle that provides natural shock absorption with each strike. Well-balanced weight distribution between the head and handle ensures accurate strikes with minimal wrist effort, reducing fatigue during repetitive nailing tasks. The polished face resists rust and provides a smooth surface that drives nails cleanly without leaving marks on finish materials. A gently curved claw provides reliable nail extraction leverage without excessive force. This versatile hammer belongs in every toolbox, from professional carpentry workshops to home garages and apartment maintenance kits.","price":12.58,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7R","by_name":"Jozsef Hocza","by_url":"https:\/\/unsplash.com\/@hocza","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/D3nouOYbALc","file_name":"hammer02.avif","title":"Hammer"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGW9","name":"Hammer"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH2JAZV07V79R70NNDNX","name":"Claw Hammer","description":"Traditional claw hammer with a polished carbon steel head engineered for driving and removing nails with precision and confidence. The rubber-wrapped handle provides a secure, comfortable grip even in wet, dusty, or cold conditions where bare metal or wood handles would slip. At 500g, it offers the ideal balance between striking power and maneuverability for general carpentry, framing, and construction tasks. The curved claw design allows for smooth nail extraction without gouging or marring wood surfaces, protecting your finished work. The head-to-handle connection uses an epoxy-bonded wedge system that prevents loosening over time. A reliable, no-nonsense tool that professional carpenters and weekend builders alike reach for every day.","price":11.48,"is_location_offer":true,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7S","by_name":"Andrew George","by_url":"https:\/\/unsplash.com\/@andrewjoegeorge","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/YU2mCvXR0wA","file_name":"hammer03.avif","title":"Claw Hammer"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGW9","name":"Hammer"},"brand":{"id":"01M552JGRS3QMESHAQ8PRPA5QJ","name":"MightyCraft Hardware"}},{"id":"01M552JH2K9QV3KQSQ6ZBBD61D","name":"Thor Hammer","description":"The legendary Thor Hammer combines premium craftsmanship with raw striking power in a tool that is truly built to last generations. Forged from Uru metal with a hand-wrapped leather grip, this extraordinary 5kg masterpiece delivers unmatched impact force for the most demanding demolition, forging, and heavy construction tasks. The perfectly balanced oversized head ensures every swing transfers maximum energy to the target, while the enlarged striking face covers more surface area than any conventional hammer. Despite its impressive mass, the ergonomic handle design and precise weight distribution allow for surprisingly controlled, accurate swings. This is not merely a tool but a statement piece for those who accept nothing less than the absolute best in their workshop. Comes with a lifetime warranty because true legends never fade. Please note: only one Thor Hammer is permitted per customer.","price":11.14,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7T","by_name":"ANIRUDH","by_url":"https:\/\/unsplash.com\/@lanirudhreddy","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/3esjG-nlgyk","file_name":"hammer04.avif","title":"Hammer"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGW9","name":"Hammer"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH2PMYE5DXP9X6JJ29E0","name":"Claw Hammer with Fiberglass Handle","description":"Modern claw hammer featuring a durable fiberglass handle that outlasts wood, absorbs vibration more effectively, and shrugs off moisture without swelling, cracking, or loosening over time. The 400g carbon steel head is drop-forged and heat-treated to optimal hardness for reliable nail driving in softwood, hardwood, and engineered lumber. The fiberglass core is permanently bonded to the head and encased in a comfortable overmold grip that prevents slipping even when wet or oily. A magnetic nail starter near the head allows one-handed nail placement, freeing your other hand to hold materials in position. The curved claw provides smooth, controlled nail extraction with excellent leverage. Ideal for contractors and DIY builders who want a weather-resistant, maintenance-free hammer that performs reliably on every job site and in any season.","price":20.14,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7W","by_name":"Jonny Gios","by_url":"https:\/\/unsplash.com\/@supergios","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/ARaYGFeuwpU","file_name":"hammer06.avif","title":"Claw Hammer"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGW9","name":"Hammer"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH2QEYQXSH3VVTVKM55B","name":"Court Hammer","description":"Compact precision court hammer with a 300g carbon steel head designed for light-duty nailing, tapping dowels, and delicate assembly tasks where a full-size hammer would be too heavy and unwieldy. The short 280mm wooden handle provides excellent close-quarters control for detailed work in confined spaces such as cabinets, closets, and furniture interiors. The polished flat face drives small nails and brads without bending them, while the cross-peen on the opposite side is useful for starting small fasteners between your fingers. Perfectly weighted to provide enough force for trim carpentry and light framing without damaging delicate surfaces. The lacquered wooden handle resists moisture absorption and provides a warm, comfortable grip. A handy addition to any toolkit when precision and finesse matter more than raw striking power.","price":18.63,"is_location_offer":true,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7X","by_name":"Wesley Tingey","by_url":"https:\/\/unsplash.com\/@wesleyphotography","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/9z9fxr_7Z-k","file_name":"hammer07.avif","title":"Hammer"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGW9","name":"Hammer"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}}],"from":1,"last_page":1,"per_page":9,"to":6,"total":6}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Results found 1 0 0
Each name contains the term 1 0 0
Total 3 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/products/search?q=zzzxxyyqqq
Response Information
Response Code: 200 - OK
Mean time per request: 137ms
Mean size per request: 87B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 182ab638-97c7-4eed-9c5b-252bc7757b4b
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control max-age=120, public
Date Sat, 17 Oct 2026 14:00:04 GMT
ETag "5b9bc7235ce5ec229115859c1e170b7f"
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"current_page":1,"data":[],"from":null,"last_page":1,"per_page":9,"to":null,"total":0}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Empty list 1 0 0
total = 0 1 0 0
Total 3 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/products/search?q=ham
Response Information
Response Code: 200 - OK
Mean time per request: 144ms
Mean size per request: 9.88KB

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token e6af2735-635d-4b22-b5eb-44225ee7d7a6
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control max-age=120, public
Date Sat, 17 Oct 2026 14:00:05 GMT
ETag "2b620d9948f089707e0000006ccbfb7e"
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"current_page":1,"data":[{"id":"01M552JH2F4ZF8Y8F7T1EBMA3H","name":"Claw Hammer with Shock Reduction Grip","description":"Ergonomic claw hammer featuring an advanced shock reduction grip system that absorbs up to 70% of impact vibrations, protecting your wrist, elbow, and shoulder during prolonged nailing sessions. The 450g carbon steel head is precision-balanced and heat-treated for maximum hardness, ensuring accurate nail driving with minimal effort on every swing. The curved claw design effortlessly removes nails without damaging surrounding wood surfaces, making it equally useful for construction and renovation work. A fiberglass-reinforced handle combines lightweight strength with exceptional durability that far outlasts traditional wooden handles. The overmolded soft-grip zone conforms to your hand shape for a custom-feeling, fatigue-free hold throughout long working days. Recommended for professional framing, carpentry, and renovation projects where operator comfort matters as much as striking performance.","price":13.41,"is_location_offer":true,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7Q","by_name":"iMattSmart","by_url":"https:\/\/unsplash.com\/@imattsmart","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/jaLaLQdkBOE","file_name":"hammer01.avif","title":"Claw Hammer"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGW9","name":"Hammer"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH2GD6Q6AVJJSHVS7GKD","name":"Hammer","description":"A dependable standard claw hammer suitable for driving and removing nails in everyday construction, carpentry, and home improvement projects. The 350g carbon steel head is drop-forged and heat-treated for maximum hardness, then fitted to a traditional wooden handle that provides natural shock absorption with each strike. Well-balanced weight distribution between the head and handle ensures accurate strikes with minimal wrist effort, reducing fatigue during repetitive nailing tasks. The polished face resists rust and provides a smooth surface that drives nails cleanly without leaving marks on finish materials. A gently curved claw provides reliable nail extraction leverage without excessive force. This versatile hammer belongs in every toolbox, from professional carpentry workshops to home garages and apartment maintenance kits.","price":12.58,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7R","by_name":"Jozsef Hocza","by_url":"https:\/\/unsplash.com\/@hocza","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/D3nouOYbALc","file_name":"hammer02.avif","title":"Hammer"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGW9","name":"Hammer"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH2JAZV07V79R70NNDNX","name":"Claw Hammer","description":"Traditional claw hammer with a polished carbon steel head engineered for driving and removing nails with precision and confidence. The rubber-wrapped handle provides a secure, comfortable grip even in wet, dusty, or cold conditions where bare metal or wood handles would slip. At 500g, it offers the ideal balance between striking power and maneuverability for general carpentry, framing, and construction tasks. The curved claw design allows for smooth nail extraction without gouging or marring wood surfaces, protecting your finished work. The head-to-handle connection uses an epoxy-bonded wedge system that prevents loosening over time. A reliable, no-nonsense tool that professional carpenters and weekend builders alike reach for every day.","price":11.48,"is_location_offer":true,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7S","by_name":"Andrew George","by_url":"https:\/\/unsplash.com\/@andrewjoegeorge","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/YU2mCvXR0wA","file_name":"hammer03.avif","title":"Claw Hammer"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGW9","name":"Hammer"},"brand":{"id":"01M552JGRS3QMESHAQ8PRPA5QJ","name":"MightyCraft Hardware"}},{"id":"01M552JH2K9QV3KQSQ6ZBBD61D","name":"Thor Hammer","description":"The legendary Thor Hammer combines premium craftsmanship with raw striking power in a tool that is truly built to last generations. Forged from Uru metal with a hand-wrapped leather grip, this extraordinary 5kg masterpiece delivers unmatched impact force for the most demanding demolition, forging, and heavy construction tasks. The perfectly balanced oversized head ensures every swing transfers maximum energy to the target, while the enlarged striking face covers more surface area than any conventional hammer. Despite its impressive mass, the ergonomic handle design and precise weight distribution allow for surprisingly controlled, accurate swings. This is not merely a tool but a statement piece for those who accept nothing less than the absolute best in their workshop. Comes with a lifetime warranty because true legends never fade. Please note: only one Thor Hammer is permitted per customer.","price":11.14,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7T","by_name":"ANIRUDH","by_url":"https:\/\/unsplash.com\/@lanirudhreddy","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/3esjG-nlgyk","file_name":"hammer04.avif","title":"Hammer"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGW9","name":"Hammer"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH2MMVA7GAB33HSXMKWQ","name":"Sledgehammer","description":"Powerful sledgehammer designed for heavy demolition, driving stakes, breaking concrete, and splitting masonry with devastating efficiency. The 3.6kg forged steel head delivers tremendous impact force concentrated through a hardened striking face that resists chipping and mushrooming. A 900mm fiberglass handle provides excellent shock absorption, superior reach, and the flexibility needed to generate maximum swing velocity. Anti-vibration technology embedded in the handle dampens recoil forces, significantly reducing operator fatigue during extended demolition sessions. The overmolded grip zone prevents the handle from twisting or slipping out of sweaty or gloved hands during overhead swings. Built for construction workers, landscapers, and demolition crews who demand professional-grade striking tools that perform reliably under the most punishing conditions.","price":17.75,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7V","by_name":"Fausto Marqués","by_url":"https:\/\/unsplash.com\/@faustomarques","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/A9dq-L3zzHA","file_name":"hammer05.avif","title":"Hammer"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGW9","name":"Hammer"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH2PMYE5DXP9X6JJ29E0","name":"Claw Hammer with Fiberglass Handle","description":"Modern claw hammer featuring a durable fiberglass handle that outlasts wood, absorbs vibration more effectively, and shrugs off moisture without swelling, cracking, or loosening over time. The 400g carbon steel head is drop-forged and heat-treated to optimal hardness for reliable nail driving in softwood, hardwood, and engineered lumber. The fiberglass core is permanently bonded to the head and encased in a comfortable overmold grip that prevents slipping even when wet or oily. A magnetic nail starter near the head allows one-handed nail placement, freeing your other hand to hold materials in position. The curved claw provides smooth, controlled nail extraction with excellent leverage. Ideal for contractors and DIY builders who want a weather-resistant, maintenance-free hammer that performs reliably on every job site and in any season.","price":20.14,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7W","by_name":"Jonny Gios","by_url":"https:\/\/unsplash.com\/@supergios","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/ARaYGFeuwpU","file_name":"hammer06.avif","title":"Claw Hammer"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGW9","name":"Hammer"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH2QEYQXSH3VVTVKM55B","name":"Court Hammer","description":"Compact precision court hammer with a 300g carbon steel head designed for light-duty nailing, tapping dowels, and delicate assembly tasks where a full-size hammer would be too heavy and unwieldy. The short 280mm wooden handle provides excellent close-quarters control for detailed work in confined spaces such as cabinets, closets, and furniture interiors. The polished flat face drives small nails and brads without bending them, while the cross-peen on the opposite side is useful for starting small fasteners between your fingers. Perfectly weighted to provide enough force for trim carpentry and light framing without damaging delicate surfaces. The lacquered wooden handle resists moisture absorption and provides a warm, comfortable grip. A handy addition to any toolkit when precision and finesse matter more than raw striking power.","price":18.63,"is_location_offer":true,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7X","by_name":"Wesley Tingey","by_url":"https:\/\/unsplash.com\/@wesleyphotography","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/9z9fxr_7Z-k","file_name":"hammer07.avif","title":"Hammer"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGW9","name":"Hammer"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}}],"from":1,"last_page":1,"per_page":9,"to":7,"total":7}
Test Information
NamePassedFailedSkipped
No server error (5xx) 1 0 0
Does not return the whole catalog 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/products/search?q=HAMMER
Response Information
Response Code: 200 - OK
Mean time per request: 146ms
Mean size per request: 8.47KB

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token bfefd612-9b1e-43cd-afaa-d65078bf2dd9
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control max-age=120, public
Date Sat, 17 Oct 2026 14:00:05 GMT
ETag "bc4c4cad09ccfe07432c4d71b42e3014"
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"current_page":1,"data":[{"id":"01M552JH2F4ZF8Y8F7T1EBMA3H","name":"Claw Hammer with Shock Reduction Grip","description":"Ergonomic claw hammer featuring an advanced shock reduction grip system that absorbs up to 70% of impact vibrations, protecting your wrist, elbow, and shoulder during prolonged nailing sessions. The 450g carbon steel head is precision-balanced and heat-treated for maximum hardness, ensuring accurate nail driving with minimal effort on every swing. The curved claw design effortlessly removes nails without damaging surrounding wood surfaces, making it equally useful for construction and renovation work. A fiberglass-reinforced handle combines lightweight strength with exceptional durability that far outlasts traditional wooden handles. The overmolded soft-grip zone conforms to your hand shape for a custom-feeling, fatigue-free hold throughout long working days. Recommended for professional framing, carpentry, and renovation projects where operator comfort matters as much as striking performance.","price":13.41,"is_location_offer":true,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7Q","by_name":"iMattSmart","by_url":"https:\/\/unsplash.com\/@imattsmart","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/jaLaLQdkBOE","file_name":"hammer01.avif","title":"Claw Hammer"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGW9","name":"Hammer"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH2GD6Q6AVJJSHVS7GKD","name":"Hammer","description":"A dependable standard claw hammer suitable for driving and removing nails in everyday construction, carpentry, and home improvement projects. The 350g carbon steel head is drop-forged and heat-treated for maximum hardness, then fitted to a traditional wooden handle that provides natural shock absorption with each strike. Well-balanced weight distribution between the head and handle ensures accurate strikes with minimal wrist effort, reducing fatigue during repetitive nailing tasks. The polished face resists rust and provides a smooth surface that drives nails cleanly without leaving marks on finish materials. A gently curved claw provides reliable nail extraction leverage without excessive force. This versatile hammer belongs in every toolbox, from professional carpentry workshops to home garages and apartment maintenance kits.","price":12.58,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7R","by_name":"Jozsef Hocza","by_url":"https:\/\/unsplash.com\/@hocza","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/D3nouOYbALc","file_name":"hammer02.avif","title":"Hammer"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGW9","name":"Hammer"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH2JAZV07V79R70NNDNX","name":"Claw Hammer","description":"Traditional claw hammer with a polished carbon steel head engineered for driving and removing nails with precision and confidence. The rubber-wrapped handle provides a secure, comfortable grip even in wet, dusty, or cold conditions where bare metal or wood handles would slip. At 500g, it offers the ideal balance between striking power and maneuverability for general carpentry, framing, and construction tasks. The curved claw design allows for smooth nail extraction without gouging or marring wood surfaces, protecting your finished work. The head-to-handle connection uses an epoxy-bonded wedge system that prevents loosening over time. A reliable, no-nonsense tool that professional carpenters and weekend builders alike reach for every day.","price":11.48,"is_location_offer":true,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7S","by_name":"Andrew George","by_url":"https:\/\/unsplash.com\/@andrewjoegeorge","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/YU2mCvXR0wA","file_name":"hammer03.avif","title":"Claw Hammer"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGW9","name":"Hammer"},"brand":{"id":"01M552JGRS3QMESHAQ8PRPA5QJ","name":"MightyCraft Hardware"}},{"id":"01M552JH2K9QV3KQSQ6ZBBD61D","name":"Thor Hammer","description":"The legendary Thor Hammer combines premium craftsmanship with raw striking power in a tool that is truly built to last generations. Forged from Uru metal with a hand-wrapped leather grip, this extraordinary 5kg masterpiece delivers unmatched impact force for the most demanding demolition, forging, and heavy construction tasks. The perfectly balanced oversized head ensures every swing transfers maximum energy to the target, while the enlarged striking face covers more surface area than any conventional hammer. Despite its impressive mass, the ergonomic handle design and precise weight distribution allow for surprisingly controlled, accurate swings. This is not merely a tool but a statement piece for those who accept nothing less than the absolute best in their workshop. Comes with a lifetime warranty because true legends never fade. Please note: only one Thor Hammer is permitted per customer.","price":11.14,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7T","by_name":"ANIRUDH","by_url":"https:\/\/unsplash.com\/@lanirudhreddy","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/3esjG-nlgyk","file_name":"hammer04.avif","title":"Hammer"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGW9","name":"Hammer"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH2PMYE5DXP9X6JJ29E0","name":"Claw Hammer with Fiberglass Handle","description":"Modern claw hammer featuring a durable fiberglass handle that outlasts wood, absorbs vibration more effectively, and shrugs off moisture without swelling, cracking, or loosening over time. The 400g carbon steel head is drop-forged and heat-treated to optimal hardness for reliable nail driving in softwood, hardwood, and engineered lumber. The fiberglass core is permanently bonded to the head and encased in a comfortable overmold grip that prevents slipping even when wet or oily. A magnetic nail starter near the head allows one-handed nail placement, freeing your other hand to hold materials in position. The curved claw provides smooth, controlled nail extraction with excellent leverage. Ideal for contractors and DIY builders who want a weather-resistant, maintenance-free hammer that performs reliably on every job site and in any season.","price":20.14,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7W","by_name":"Jonny Gios","by_url":"https:\/\/unsplash.com\/@supergios","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/ARaYGFeuwpU","file_name":"hammer06.avif","title":"Claw Hammer"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGW9","name":"Hammer"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH2QEYQXSH3VVTVKM55B","name":"Court Hammer","description":"Compact precision court hammer with a 300g carbon steel head designed for light-duty nailing, tapping dowels, and delicate assembly tasks where a full-size hammer would be too heavy and unwieldy. The short 280mm wooden handle provides excellent close-quarters control for detailed work in confined spaces such as cabinets, closets, and furniture interiors. The polished flat face drives small nails and brads without bending them, while the cross-peen on the opposite side is useful for starting small fasteners between your fingers. Perfectly weighted to provide enough force for trim carpentry and light framing without damaging delicate surfaces. The lacquered wooden handle resists moisture absorption and provides a warm, comfortable grip. A handy addition to any toolkit when precision and finesse matter more than raw striking power.","price":18.63,"is_location_offer":true,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7X","by_name":"Wesley Tingey","by_url":"https:\/\/unsplash.com\/@wesleyphotography","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/9z9fxr_7Z-k","file_name":"hammer07.avif","title":"Hammer"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGW9","name":"Hammer"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}}],"from":1,"last_page":1,"per_page":9,"to":6,"total":6}
Test Information
NamePassedFailedSkipped
No server error (5xx) 1 0 0
Does not return the whole catalog 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/products/search?q=h%C3%A1mmer
Response Information
Response Code: 200 - OK
Mean time per request: 147ms
Mean size per request: 8.47KB

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token b5a2cec9-28c9-4135-a8c8-ac52d99aa55e
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control max-age=120, public
Date Sat, 17 Oct 2026 14:00:05 GMT
ETag "bc4c4cad09ccfe07432c4d71b42e3014"
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"current_page":1,"data":[{"id":"01M552JH2F4ZF8Y8F7T1EBMA3H","name":"Claw Hammer with Shock Reduction Grip","description":"Ergonomic claw hammer featuring an advanced shock reduction grip system that absorbs up to 70% of impact vibrations, protecting your wrist, elbow, and shoulder during prolonged nailing sessions. The 450g carbon steel head is precision-balanced and heat-treated for maximum hardness, ensuring accurate nail driving with minimal effort on every swing. The curved claw design effortlessly removes nails without damaging surrounding wood surfaces, making it equally useful for construction and renovation work. A fiberglass-reinforced handle combines lightweight strength with exceptional durability that far outlasts traditional wooden handles. The overmolded soft-grip zone conforms to your hand shape for a custom-feeling, fatigue-free hold throughout long working days. Recommended for professional framing, carpentry, and renovation projects where operator comfort matters as much as striking performance.","price":13.41,"is_location_offer":true,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7Q","by_name":"iMattSmart","by_url":"https:\/\/unsplash.com\/@imattsmart","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/jaLaLQdkBOE","file_name":"hammer01.avif","title":"Claw Hammer"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGW9","name":"Hammer"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH2GD6Q6AVJJSHVS7GKD","name":"Hammer","description":"A dependable standard claw hammer suitable for driving and removing nails in everyday construction, carpentry, and home improvement projects. The 350g carbon steel head is drop-forged and heat-treated for maximum hardness, then fitted to a traditional wooden handle that provides natural shock absorption with each strike. Well-balanced weight distribution between the head and handle ensures accurate strikes with minimal wrist effort, reducing fatigue during repetitive nailing tasks. The polished face resists rust and provides a smooth surface that drives nails cleanly without leaving marks on finish materials. A gently curved claw provides reliable nail extraction leverage without excessive force. This versatile hammer belongs in every toolbox, from professional carpentry workshops to home garages and apartment maintenance kits.","price":12.58,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7R","by_name":"Jozsef Hocza","by_url":"https:\/\/unsplash.com\/@hocza","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/D3nouOYbALc","file_name":"hammer02.avif","title":"Hammer"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGW9","name":"Hammer"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH2JAZV07V79R70NNDNX","name":"Claw Hammer","description":"Traditional claw hammer with a polished carbon steel head engineered for driving and removing nails with precision and confidence. The rubber-wrapped handle provides a secure, comfortable grip even in wet, dusty, or cold conditions where bare metal or wood handles would slip. At 500g, it offers the ideal balance between striking power and maneuverability for general carpentry, framing, and construction tasks. The curved claw design allows for smooth nail extraction without gouging or marring wood surfaces, protecting your finished work. The head-to-handle connection uses an epoxy-bonded wedge system that prevents loosening over time. A reliable, no-nonsense tool that professional carpenters and weekend builders alike reach for every day.","price":11.48,"is_location_offer":true,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7S","by_name":"Andrew George","by_url":"https:\/\/unsplash.com\/@andrewjoegeorge","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/YU2mCvXR0wA","file_name":"hammer03.avif","title":"Claw Hammer"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGW9","name":"Hammer"},"brand":{"id":"01M552JGRS3QMESHAQ8PRPA5QJ","name":"MightyCraft Hardware"}},{"id":"01M552JH2K9QV3KQSQ6ZBBD61D","name":"Thor Hammer","description":"The legendary Thor Hammer combines premium craftsmanship with raw striking power in a tool that is truly built to last generations. Forged from Uru metal with a hand-wrapped leather grip, this extraordinary 5kg masterpiece delivers unmatched impact force for the most demanding demolition, forging, and heavy construction tasks. The perfectly balanced oversized head ensures every swing transfers maximum energy to the target, while the enlarged striking face covers more surface area than any conventional hammer. Despite its impressive mass, the ergonomic handle design and precise weight distribution allow for surprisingly controlled, accurate swings. This is not merely a tool but a statement piece for those who accept nothing less than the absolute best in their workshop. Comes with a lifetime warranty because true legends never fade. Please note: only one Thor Hammer is permitted per customer.","price":11.14,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7T","by_name":"ANIRUDH","by_url":"https:\/\/unsplash.com\/@lanirudhreddy","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/3esjG-nlgyk","file_name":"hammer04.avif","title":"Hammer"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGW9","name":"Hammer"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH2PMYE5DXP9X6JJ29E0","name":"Claw Hammer with Fiberglass Handle","description":"Modern claw hammer featuring a durable fiberglass handle that outlasts wood, absorbs vibration more effectively, and shrugs off moisture without swelling, cracking, or loosening over time. The 400g carbon steel head is drop-forged and heat-treated to optimal hardness for reliable nail driving in softwood, hardwood, and engineered lumber. The fiberglass core is permanently bonded to the head and encased in a comfortable overmold grip that prevents slipping even when wet or oily. A magnetic nail starter near the head allows one-handed nail placement, freeing your other hand to hold materials in position. The curved claw provides smooth, controlled nail extraction with excellent leverage. Ideal for contractors and DIY builders who want a weather-resistant, maintenance-free hammer that performs reliably on every job site and in any season.","price":20.14,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7W","by_name":"Jonny Gios","by_url":"https:\/\/unsplash.com\/@supergios","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/ARaYGFeuwpU","file_name":"hammer06.avif","title":"Claw Hammer"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGW9","name":"Hammer"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH2QEYQXSH3VVTVKM55B","name":"Court Hammer","description":"Compact precision court hammer with a 300g carbon steel head designed for light-duty nailing, tapping dowels, and delicate assembly tasks where a full-size hammer would be too heavy and unwieldy. The short 280mm wooden handle provides excellent close-quarters control for detailed work in confined spaces such as cabinets, closets, and furniture interiors. The polished flat face drives small nails and brads without bending them, while the cross-peen on the opposite side is useful for starting small fasteners between your fingers. Perfectly weighted to provide enough force for trim carpentry and light framing without damaging delicate surfaces. The lacquered wooden handle resists moisture absorption and provides a warm, comfortable grip. A handy addition to any toolkit when precision and finesse matter more than raw striking power.","price":18.63,"is_location_offer":true,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7X","by_name":"Wesley Tingey","by_url":"https:\/\/unsplash.com\/@wesleyphotography","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/9z9fxr_7Z-k","file_name":"hammer07.avif","title":"Hammer"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGW9","name":"Hammer"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}}],"from":1,"last_page":1,"per_page":9,"to":6,"total":6}
Test Information
NamePassedFailedSkipped
No server error (5xx) 1 0 0
Does not return the whole catalog 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/products/search?q=%25
Response Information
Response Code: 200 - OK
Mean time per request: 144ms
Mean size per request: 87B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token e921ae99-0fc1-422a-9d73-c9bf74dcff0a
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control max-age=120, public
Date Sat, 17 Oct 2026 14:00:06 GMT
ETag "5b9bc7235ce5ec229115859c1e170b7f"
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"current_page":1,"data":[],"from":null,"last_page":1,"per_page":9,"to":null,"total":0}
Test Information
NamePassedFailedSkipped
No server error (5xx) 1 0 0
Does not return the whole catalog 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/products/search?q=_
Response Information
Response Code: 200 - OK
Mean time per request: 113ms
Mean size per request: 87B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 22355a8e-ea70-460d-849c-f28f6c59cfdc
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control max-age=120, public
Date Sat, 17 Oct 2026 14:00:06 GMT
ETag "5b9bc7235ce5ec229115859c1e170b7f"
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"current_page":1,"data":[],"from":null,"last_page":1,"per_page":9,"to":null,"total":0}
Test Information
NamePassedFailedSkipped
No server error (5xx) 1 0 0
Does not return the whole catalog 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/products/search?q=%3Cscript%3E
Response Information
Response Code: 200 - OK
Mean time per request: 123ms
Mean size per request: 87B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 2c4e253b-ad17-46ef-a26e-a548110d2f30
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control max-age=120, public
Date Sat, 17 Oct 2026 14:00:06 GMT
ETag "5b9bc7235ce5ec229115859c1e170b7f"
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"current_page":1,"data":[],"from":null,"last_page":1,"per_page":9,"to":null,"total":0}
Test Information
NamePassedFailedSkipped
No server error (5xx) 1 0 0
Does not return the whole catalog 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/products/search?q=
Response Information
Response Code: 200 - OK
Mean time per request: 113ms
Mean size per request: 87B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token a0fd02f5-58e6-43fa-9734-0d6327962812
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control max-age=120, public
Date Sat, 17 Oct 2026 14:00:07 GMT
ETag "5b9bc7235ce5ec229115859c1e170b7f"
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"current_page":1,"data":[],"from":null,"last_page":1,"per_page":9,"to":null,"total":0}
Test Information
NamePassedFailedSkipped
No server error (5xx) 1 0 0
Does not return the whole catalog 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/products?sort=price,asc
Response Information
Response Code: 200 - OK
Mean time per request: 163ms
Mean size per request: 13.73KB

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token ee955dd8-fa31-40b1-a44f-0d5f1f1044c4
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control max-age=120, public
Date Sat, 17 Oct 2026 14:00:07 GMT
ETag "8380abb84bae0fefe1332cf741b5a8b0"
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"current_page":1,"data":[{"id":"01M552JH3N299RA449M1GN9TP9","name":"Washers","description":"Assorted pack of 150 zinc-plated steel flat washers in popular metric sizes ranging from M4 to M10, covering the most commonly needed sizes for workshop, garage, and job site fastener work. These washers distribute the clamping force of bolts and nuts over a larger surface area, preventing damage to soft materials like wood, plastic, and painted or powder-coated metal surfaces. The smooth, burr-free finish on both faces ensures a flat, stable seating surface that maximizes friction and prevents fastener loosening under vibration. Each washer is stamped from precision-rolled steel strip to consistent thickness tolerances, ensuring predictable bolt stretch and joint behavior across multiple fastening points. The zinc plating provides reliable corrosion protection for indoor use and sheltered outdoor applications. An indispensable consumable for any workshop, garage, or maintenance department handling regular fastener assembly and repair work.","price":3.55,"is_location_offer":false,"is_rental":false,"co2_rating":"C","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG90","by_name":"Robert Ruggiero","by_url":"https:\/\/unsplash.com\/@robert2301","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/a-pile-of-different-colored-washers-sitting-on-top-of-a-table-oY6774he6GQ","file_name":"fasteners06.avif","title":"Washers"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWR","name":"Fasteners","slug":"fasteners"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH3JEY7M0EX8ARR7W163","name":"Flat-Head Wood Screws","description":"Pack of 75 countersink flat-head wood screws in 4x40mm size, crafted from yellow zinc-plated steel for enhanced moisture resistance in both interior and sheltered exterior woodworking applications. The 82-degree countersink flat head sits perfectly flush with the timber surface for a clean, professional finish that can be painted, stained, or filled invisibly. Deep single-lead threads are designed to bite aggressively into both hardwood and softwood fibers for superior holding power that resists pull-out under load and vibration. The sharp gimlet point self-starts without pre-drilling in most softwoods, while a pilot hole is recommended for hardwoods to prevent splitting near edges. The yellow zinc coating provides a warm color that blends naturally with light-colored timbers. Perfect for furniture assembly, deck building, cabinet construction, and general woodworking joinery where appearance matters.","price":3.95,"is_location_offer":false,"is_rental":false,"co2_rating":"C","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG8Y","by_name":"Ben Lodge","by_url":"https:\/\/unsplash.com\/@benlodge123","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/stainless-steel-11-screw-e3Y7qB67aow","file_name":"fasteners04.avif","title":"Flat-Head Wood Screws"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWR","name":"Fasteners","slug":"fasteners"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH3M975R6GFDETHAGPMH","name":"M4 Nuts","description":"Box of 100 M4 hexagonal nuts manufactured from A2-grade austenitic stainless steel for excellent resistance to rust, tarnishing, and corrosion in demanding indoor and outdoor environments. The precisely machined internal threads ensure smooth, easy engagement with M4 bolts, machine screws, and threaded rod without cross-threading or binding. The standard DIN 934 hex profile is compatible with 7mm sockets, open-end spanners, and adjustable wrenches for convenient tightening with any common hand or power tool. Chamfered edges on both faces allow the nut to start on the bolt thread from either direction, saving time during repetitive assembly operations. Consistent dimensional accuracy across all 100 pieces means reliable torque values and clamping forces in every joint. Essential workshop consumables for assembly, prototyping, equipment repair, and maintenance projects across mechanical, electrical, and general engineering trades.","price":4.65,"is_location_offer":false,"is_rental":false,"co2_rating":"C","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG8Z","by_name":"Mika Baumeister","by_url":"https:\/\/unsplash.com\/@kommumikation","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/silver-and-black-round-coins-c71yQepDEjo","file_name":"fasteners05.avif","title":"M4 Nuts"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWR","name":"Fasteners","slug":"fasteners"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH2X1B4SZQRX6712VYYF","name":"Phillips Screwdriver","description":"Professional-quality Phillips screwdriver with a PH2 tip precision-machined from chrome vanadium steel and vapor-blasted for maximum grip inside cross-head screw recesses. The bi-component handle features a soft-grip comfort zone that absorbs torque reaction and vibration, combined with a hard polypropylene core that transmits maximum turning force to the blade. A hex bolster machined into the shaft just above the handle allows a wrench to be applied for additional turning leverage on stubborn or over-tightened screws. The round blade shaft is chrome-plated for corrosion resistance and easy cleaning after use in greasy or painted environments. A hanging hole in the handle allows convenient pegboard or hook storage for quick identification and access. Suitable for electricians, cabinet makers, assembly technicians, and anyone who needs a reliable, comfortable everyday screwdriver.","price":4.92,"is_location_offer":true,"is_rental":false,"co2_rating":"C","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG82","by_name":"Tekton","by_url":"https:\/\/unsplash.com\/@tekton_tools","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/jlY6nV_STIw","file_name":"screwdriver01.avif","title":"Phillips Screwdriver"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWC","name":"Screwdriver","slug":"screwdriver"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH3GSWXWW1S5BXERHWR7","name":"Nuts and bolts","description":"Comprehensive assorted set of 200 stainless steel nuts and bolts in popular metric sizes ranging from M3 to M10, providing a one-stop selection for repair, assembly, prototyping, and maintenance tasks across all trades. The 18-8 austenitic stainless steel composition delivers excellent corrosion resistance for both indoor and outdoor applications, including marine, food-processing, and chemical environments where carbon steel would quickly deteriorate. Hex bolt heads and matching hex nuts are manufactured to DIN standard tolerances for a precise, wobble-free thread engagement that inspires confidence in critical fastened joints. The set includes matching flat washers and spring washers for each size to ensure proper load distribution and vibration resistance. Supplied in a compartmentalized clear plastic case with labeled dividers for instant size identification and organized storage. An invaluable workshop consumable that eliminates trips to the hardware store for common fastener sizes.","price":5.55,"is_location_offer":false,"is_rental":false,"co2_rating":"C","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG8W","by_name":"Edge2Edge Media","by_url":"https:\/\/unsplash.com\/@edge2edgemedia","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/silver-and-black-metal-tools-qHhJkxare7A","file_name":"fasteners02.avif","title":"Nuts and bolts"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWR","name":"Fasteners","slug":"fasteners"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH3FF6W79ERQ60WRKT1W","name":"Screws","description":"Box of 100 general-purpose pan head machine screws in M5x30mm size, manufactured from zinc-plated mild steel for reliable corrosion resistance in indoor and sheltered outdoor applications. The Phillips drive recess is precisely formed to provide a secure, positive engagement with the screwdriver tip, significantly reducing the cam-out that damages both screws and tools. The pan head profile sits above the surface of the material, providing a clean, finished appearance and a bearing surface that distributes clamping force over a wider area than flat-head alternatives. Machine-threaded shanks ensure consistent, repeatable clamping force across all fastened joints and allow for easy removal and reinstallation during maintenance. Compatible with M5 hex nuts, nylon lock nuts, and threaded inserts. Suitable for joining sheet metal, machine assembly, wood-to-metal connections, and general workshop fabrication tasks.","price":6.25,"is_location_offer":false,"is_rental":false,"co2_rating":"C","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG8V","by_name":"Eliza Diamond","by_url":"https:\/\/unsplash.com\/@eliza28diamonds","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/gray-screw-bolt-lot-pvm5QvjFrJ8","file_name":"fasteners01.avif","title":"Screws"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWR","name":"Fasteners","slug":"fasteners"},"brand":{"id":"01M552JGRS3QMESHAQ8PRPA5QJ","name":"MightyCraft Hardware"}},{"id":"01M552JH33P80E9W13627MRRWQ","name":"Tape Measure 7.5m","description":"Professional-grade 7.5-meter retractable tape measure built for daily use on construction sites, in workshops, and on renovation projects. The 25mm wide nylon-coated steel blade resists bending, kinking, and snapping at full extension, while the coating protects against abrasion and moisture that would corrode an unprotected blade. An impressive standout of over 3 meters allows solo measurements across door openings, window frames, and room widths without the blade folding. The heavy-duty rubber-armored housing absorbs drops from ladder height onto concrete floors, while the integrated belt clip and wrist lanyard keep the tape always within reach. A smooth, controllable retraction mechanism and positive blade lock hold your measurement securely in place. Dual metric and imperial markings printed in high-contrast colors ensure compatibility with any project specification and easy reading in all lighting conditions.","price":7.23,"is_location_offer":false,"is_rental":false,"co2_rating":"C","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG8J","by_name":"Brett Jordan","by_url":"https:\/\/unsplash.com\/@brett_jordan","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/blue-and-yellow-measuring-tape-faOPbPmznfQ","file_name":"measure01.avif","title":"Tape Measure 7.5m"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWF","name":"Measures","slug":"measures"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH3HXX14K5SQ8CDQEXNG","name":"Cross-head screws","description":"Pack of 50 Phillips cross-head screws in M4x25mm size, manufactured from zinc-plated steel for dependable corrosion protection in indoor and semi-exposed environments. The cross-head drive pattern ensures efficient power transfer from both manual and powered screwdrivers, while the precisely formed recess depth minimizes cam-out and reduces the risk of damaging the screw head or work surface. A sharp, self-starting thread point eliminates the need for pre-drilling in softwood, MDF, and chipboard applications, speeding up assembly time considerably. The 25mm thread length provides strong pull-out resistance in materials 15mm thick and above. Ideal for fastening light-gauge metal brackets, cabinet hinges, electrical outlet boxes, and general hardware. Each screw is individually inspected to ensure consistent head formation and thread quality across the entire pack.","price":7.99,"is_location_offer":false,"is_rental":false,"co2_rating":"C","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG8X","by_name":"Milad Fallah","by_url":"https:\/\/unsplash.com\/@miladfallah90","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/silver-screw-lot-on-brown-wooden-table-wwZYL4BYFto","file_name":"fasteners03.avif","title":"Cross-head screws"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWR","name":"Fasteners","slug":"fasteners"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH2EXDQ749444RB4RAMH","name":"Slip Joint Pliers","description":"Adjustable slip joint pliers that feature a two-position pivot mechanism for switching between regular and wide jaw openings to accommodate different fastener sizes. The PVC-coated handles offer a comfortable, non-slip grip while the precisely machined jaws securely grasp round, flat, and hexagonal objects without slipping. Constructed from durable drop-forged carbon steel that has been heat-treated to withstand heavy daily use in professional environments. The curved jaw section grips pipes and cylindrical objects, while the flat front surface handles nuts, bolts, and sheet materials. A wire cutter integrated near the pivot handles light cutting tasks without reaching for a separate tool. Perfect for plumbing, automotive, HVAC, and general maintenance work where a single versatile gripping tool saves time.","price":9.17,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7P","by_name":"Yasin Hasan","by_url":"https:\/\/unsplash.com\/@yasin","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/dwlxTSpfKXg","file_name":"pliers05.avif","title":"Slip joint pliers"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWD","name":"Pliers","slug":"pliers"},"brand":{"id":"01M552JGRS3QMESHAQ8PRPA5QJ","name":"MightyCraft Hardware"}}],"from":1,"last_page":6,"per_page":9,"to":9,"total":50}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Prices sorted ascending 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/products?sort=price,desc
Response Information
Response Code: 200 - OK
Mean time per request: 148ms
Mean size per request: 14.2KB

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 469c5503-be7e-4b2b-ab31-2e9d6cd438bd
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control max-age=120, public
Date Sat, 17 Oct 2026 14:00:07 GMT
ETag "ff5ac465a74903195e84cfda35734701"
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"current_page":1,"data":[{"id":"01M552JH3SNJ90YFW1GJ2NK17B","name":"Workbench with Drawers","description":"Heavy-duty workbench combining a solid hardwood laminate top with an integrated steel frame that supports working loads up to 500kg for the toughest assembly, fabrication, and repair tasks. Four full-extension lockable drawers on ball-bearing slides provide convenient storage for hand tools, fasteners, measuring instruments, and project components within easy arms reach. The 1500x600mm work surface offers generous space for clamping, assembly, soldering, and detailed work, while the hardwood top resists dents, scratches, and chemical spills better than particleboard alternatives. A lower shelf provides additional storage for power tools, parts bins, and heavy equipment. Adjustable leveling feet compensate for uneven workshop floors, ensuring a perfectly stable, wobble-free work platform. The ideal centerpiece for professional workshops, maker spaces, and serious home garages where a reliable work surface is essential.","price":178.2,"is_location_offer":false,"is_rental":false,"co2_rating":"B","in_stock":true,"is_eco_friendly":true,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG94","by_name":"Matteo Minoglio","by_url":"https:\/\/unsplash.com\/@ilmino","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/opened-brown-wooden-drawers-m8-NX7WxbpM","file_name":"workbench02.avif","title":"Workbench with Drawers"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWP","name":"Workbench","slug":"workbench"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH3TAS0CFVAMWSM8SK75","name":"Wooden Workbench","description":"Traditional solid European beech wood workbench built with time-tested mortise-and-tenon joinery and hardwood dowel pins for exceptional rigidity and a working lifetime measured in decades rather than years. The 1400x500mm work surface is planed smooth, sanded to a fine finish, and treated with penetrating linseed oil to resist moisture, glue, and common workshop stains without building up a slippery film. A built-in tool well running the full length of the back edge keeps chisels, pencils, marking gauges, and small parts from rolling off the work surface during use. The substantial underframe includes a full-width lower shelf for storing planes, saws, and workshop accessories within easy reach. Rated for a 300kg distributed load capacity, this bench handles heavy timber, metalwork clamping, and power tool operations without flexing. The timeless design and natural beauty of solid beech make this workbench both a serious working tool and the proud centerpiece of any craft workshop.","price":172.52,"is_location_offer":false,"is_rental":false,"co2_rating":"B","in_stock":true,"is_eco_friendly":true,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG95","by_name":"Brett Garwood","by_url":"https:\/\/unsplash.com\/@brettgarwood","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/brown-wooden-stick-on-brown-wooden-table-asZVvgMGshc","file_name":"workbench01.avif","title":"Wooden Workbench"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWP","name":"Workbench","slug":"workbench"},"brand":{"id":"01M552JGRS3QMESHAQ8PRPA5QJ","name":"MightyCraft Hardware"}},{"id":"01M552JH41812YMMA8CPZ0NTTQ","name":"Cordless Drill 20V","description":"Versatile 20V cordless drill and driver featuring a high-capacity 4.0Ah lithium-ion battery that delivers sustained power for a full day of demanding drilling and fastening tasks on a single charge. The heavy-duty 13mm single-sleeve keyless chuck accepts a comprehensive range of drill bits, spade bits, hole saws, and driver accessories without the need for a chuck key. A two-speed all-metal gearbox provides 450 RPM in low gear for maximum torque fastening and 1,800 RPM in high gear for rapid drilling in wood, metal, and masonry materials. Twenty-plus-one torque settings on the adjustable clutch collar allow precise control over fastening depth to prevent cam-out and screw damage in different materials. An integrated LED work light automatically illuminates the drilling area when the trigger is touched, providing visibility in dark cabinets, ceiling cavities, and crawl spaces. Ideal for contractors, remodelers, and serious DIY enthusiasts who need portable, professional-grade power without being tethered to an extension cord.","price":125.23,"is_location_offer":true,"is_rental":false,"co2_rating":"E","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG88","by_name":"Syed Hussaini","by_url":"https:\/\/unsplash.com\/@syhussaini","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/MXeDE_yCdHQ","file_name":"drill01.avif","title":"Cordless Drill"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWK","name":"Drill","slug":"drill"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH43X1MPPTGGGTF4RAZY","name":"Cordless Drill 18V","description":"Compact and lightweight 18V cordless drill offering 50Nm of torque in a well-balanced package that reduces operator fatigue during extended overhead, horizontal, and downward drilling and driving tasks. The 3.0Ah lithium-ion battery provides ample capacity for a busy day of residential drilling and driving, while the fast charger replenishes a depleted battery in under 60 minutes. A 10mm keyless chuck handles the most commonly used drill bits, spade bits, and quarter-inch hex driver inserts for everyday workshop and job site tasks. The ergonomic soft-grip handle and compact head length provide comfortable, controlled operation in tight spaces where larger drills cannot reach. An integrated LED work light illuminates the work surface for improved accuracy when driving screws in dimly lit areas. A great all-around cordless drill for home improvement, furniture assembly, deck building, and light-duty trade work where portability and comfort are priorities.","price":119.24,"is_location_offer":false,"is_rental":false,"co2_rating":"E","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG8A","by_name":"Jonathan Cooper","by_url":"https:\/\/unsplash.com\/@theshuttervision","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/7sZwThSntdw","file_name":"drill03.avif","title":"Cordless Drill 18V"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWK","name":"Drill","slug":"drill"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH40T4BFVEECH008EFH6","name":"Random Orbit Sander","description":"Electric random orbit sander combining 14,000 RPM pad rotation with an eccentric 2.5mm orbital action pattern that produces a completely swirl-free finish on wood, lacquer, paint, and primer surfaces. The 125mm hook-and-loop pad accepts standard multi-hole sanding discs from 60 to 400 grit for quick, tool-free abrasive changes between roughing and finishing passes. A responsive 300W motor delivers consistent sanding power at every speed setting, from aggressive stock removal at full speed to delicate final finishing at reduced RPM using the variable speed dial. The random orbital motion means no two particles of abrasive ever follow the same path twice, eliminating the visible scratch patterns that plague standard orbital and belt sanders. The integrated micro-filter dust collection system captures over 90% of airborne particles at the source. Low vibration levels and an ergonomic palm-grip body make this the preferred finishing tool for furniture makers, cabinet shops, and automotive paint preparation.","price":100.79,"is_location_offer":false,"is_rental":false,"co2_rating":"E","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG87","by_name":"Adi Goldstein","by_url":"https:\/\/unsplash.com\/@adigold1","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/aO4c6o4H2MI","file_name":"sander03.avif","title":"Random orbit sander"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWH","name":"Sander","slug":"sander"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH3Q1QDFVFWKQJM4CY5G","name":"Drawer Tool Cabinet","description":"Professional rolling tool cabinet featuring five full-extension ball-bearing drawer slides rated for smooth, quiet, jam-free operation even when loaded to their 25kg per-drawer capacity. Constructed entirely from cold-rolled 18-gauge steel with a durable powder-coated finish that resists scratches, workshop chemicals, solvent splashes, and surface rust. Each drawer includes textured anti-slip liners to keep tools organized and prevent them from sliding around during transport between work areas. A central keyed cylinder lock simultaneously secures all five drawers, protecting your valuable tool investment from unauthorized access on shared job sites. The 680x460x1000mm cabinet rolls on four swivel casters with brakes, allowing easy repositioning around any workshop or garage floor. With a combined 200kg load capacity and a solid steel worktop surface, this cabinet serves as both mobile storage and an auxiliary work surface.","price":89.55,"is_location_offer":false,"is_rental":false,"co2_rating":"B","in_stock":true,"is_eco_friendly":true,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG92","by_name":"Tekton","by_url":"https:\/\/unsplash.com\/@tekton_tools","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/black-and-gray-metal-tool-LtphNTXHQAc","file_name":"toolcabinet02.avif","title":"Drawer Tool Cabinet"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWN","name":"Storage Solutions","slug":"storage solutions"},"brand":{"id":"01M552JGRS3QMESHAQ8PRPA5QJ","name":"MightyCraft Hardware"}},{"id":"01M552JH3RAV9MF0FXZZZDANHX","name":"Tool Cabinet","description":"Versatile wall-mounted or freestanding tool cabinet built from heavy-gauge welded steel with three spacious drawers and an upper compartment for organized, secure tool storage. The textured powder-coated exterior resists workshop chemicals, oil stains, and everyday bumps and scrapes, maintaining a professional appearance through years of hard use. A keyed cylinder lock secures the entire cabinet, keeping expensive hand tools and precision instruments safe from unauthorized access in shared workshops. Adjustable drawer dividers allow you to customize compartment sizes for different tool collections, from small precision instruments to bulky power tool accessories. Pre-drilled mounting holes on the back panel allow quick, secure wall attachment using standard lag screws or wall anchors. A compact 600x400x800mm footprint makes this cabinet ideal for smaller workshops, garage walls, service vans, and mobile repair stations.","price":86.71,"is_location_offer":false,"is_rental":false,"co2_rating":"B","in_stock":true,"is_eco_friendly":true,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG93","by_name":"Georg Eiermann","by_url":"https:\/\/unsplash.com\/@georgeiermann","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/a-group-of-wooden-objects-uXWbowHdJqk","file_name":"toolcabinet01.avif","title":"Tool Cabinet"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWN","name":"Storage Solutions","slug":"storage solutions"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH3Z0XQV44BXQ2BCVVWT","name":"Circular Saw","description":"Portable circular saw powered by a robust 1400W motor that drives a 190mm carbide-tipped blade at 5,500 RPM for clean, fast, straight cuts through solid timber, plywood, MDF, and sheet materials up to 67mm thick. The precision-machined aluminum base plate provides a flat, stable reference surface and adjusts smoothly for bevel cuts from 0 to 45 degrees with a positive detent at the most commonly used angles. An integrated dust blower directs a stream of air ahead of the blade to keep the pencil line visible under the constant shower of sawdust generated during cutting. The spindle lock allows quick, safe blade changes with a single wrench, while the electric brake stops the blade within seconds of releasing the trigger for added safety between cuts. An ergonomic soft-grip main handle and auxiliary front handle provide confident two-handed control for both plunge cuts and guided rip cuts. Essential for framing carpenters, renovation contractors, and DIY builders who need a portable, powerful saw for on-site timber work.","price":80.19,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG86","by_name":"Luther.M.E. Bottrill","by_url":"https:\/\/unsplash.com\/@luthermeb","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/EgIT3YHBo9E","file_name":"saw02.avif","title":"Saw"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWJ","name":"Saw","slug":"saw"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH3YXWA3JYYWPX119FAY","name":"Belt Sander","description":"Powerful 800W belt sander engineered for aggressive material removal on large flat surfaces including tabletops, doors, hardwood flooring, and timber decking. The 76x533mm sanding belt travels at an impressive 380 meters per minute, enabling rapid stock removal, paint stripping, and surface leveling in a fraction of the time required by orbital sanders. A precision front roller nose allows flush sanding against walls, inside corners, and perpendicular surfaces for complete coverage without leaving unsanded edges. The quick-release belt change mechanism allows swapping abrasive grits in seconds without tools, keeping workflow interruptions to a minimum. A secondary handle on the front provides two-handed control and even pressure distribution across the full width of the belt. The dust extraction bag and auxiliary vacuum port work together to capture the large volume of fine particles generated during aggressive sanding operations.","price":73.59,"is_location_offer":false,"is_rental":false,"co2_rating":"E","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG85","by_name":"Luther.M.E. Bottrill","by_url":"https:\/\/unsplash.com\/@luthermeb","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/7kHN1-9dD_4","file_name":"sander02.avif","title":"Belt sander"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWH","name":"Sander","slug":"sander"},"brand":{"id":"01M552JGRS3QMESHAQ8PRPA5QJ","name":"MightyCraft Hardware"}}],"from":1,"last_page":6,"per_page":9,"to":9,"total":50}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Prices sorted descending 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/products?page=5
Response Information
Response Code: 200 - OK
Mean time per request: 368ms
Mean size per request: 14.24KB

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
User-Agent PostmanRuntime/7.39.1
Accept */*
Cache-Control no-cache
Postman-Token dea14a31-52c9-4f61-ac2a-f965857f4709
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control max-age=120, public
Date Sat, 17 Oct 2026 14:00:08 GMT
ETag "5dcd3a22f0fc42f0a020ea3026141140"
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"current_page":5,"data":[{"id":"01M552JH3N299RA449M1GN9TP9","name":"Washers","description":"Assorted pack of 150 zinc-plated steel flat washers in popular metric sizes ranging from M4 to M10, covering the most commonly needed sizes for workshop, garage, and job site fastener work. These washers distribute the clamping force of bolts and nuts over a larger surface area, preventing damage to soft materials like wood, plastic, and painted or powder-coated metal surfaces. The smooth, burr-free finish on both faces ensures a flat, stable seating surface that maximizes friction and prevents fastener loosening under vibration. Each washer is stamped from precision-rolled steel strip to consistent thickness tolerances, ensuring predictable bolt stretch and joint behavior across multiple fastening points. The zinc plating provides reliable corrosion protection for indoor use and sheltered outdoor applications. An indispensable consumable for any workshop, garage, or maintenance department handling regular fastener assembly and repair work.","price":3.55,"is_location_offer":false,"is_rental":false,"co2_rating":"C","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG90","by_name":"Robert Ruggiero","by_url":"https:\/\/unsplash.com\/@robert2301","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/a-pile-of-different-colored-washers-sitting-on-top-of-a-table-oY6774he6GQ","file_name":"fasteners06.avif","title":"Washers"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWR","name":"Fasteners","slug":"fasteners"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH3Q1QDFVFWKQJM4CY5G","name":"Drawer Tool Cabinet","description":"Professional rolling tool cabinet featuring five full-extension ball-bearing drawer slides rated for smooth, quiet, jam-free operation even when loaded to their 25kg per-drawer capacity. Constructed entirely from cold-rolled 18-gauge steel with a durable powder-coated finish that resists scratches, workshop chemicals, solvent splashes, and surface rust. Each drawer includes textured anti-slip liners to keep tools organized and prevent them from sliding around during transport between work areas. A central keyed cylinder lock simultaneously secures all five drawers, protecting your valuable tool investment from unauthorized access on shared job sites. The 680x460x1000mm cabinet rolls on four swivel casters with brakes, allowing easy repositioning around any workshop or garage floor. With a combined 200kg load capacity and a solid steel worktop surface, this cabinet serves as both mobile storage and an auxiliary work surface.","price":89.55,"is_location_offer":false,"is_rental":false,"co2_rating":"B","in_stock":true,"is_eco_friendly":true,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG92","by_name":"Tekton","by_url":"https:\/\/unsplash.com\/@tekton_tools","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/black-and-gray-metal-tool-LtphNTXHQAc","file_name":"toolcabinet02.avif","title":"Drawer Tool Cabinet"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWN","name":"Storage Solutions","slug":"storage solutions"},"brand":{"id":"01M552JGRS3QMESHAQ8PRPA5QJ","name":"MightyCraft Hardware"}},{"id":"01M552JH3RAV9MF0FXZZZDANHX","name":"Tool Cabinet","description":"Versatile wall-mounted or freestanding tool cabinet built from heavy-gauge welded steel with three spacious drawers and an upper compartment for organized, secure tool storage. The textured powder-coated exterior resists workshop chemicals, oil stains, and everyday bumps and scrapes, maintaining a professional appearance through years of hard use. A keyed cylinder lock secures the entire cabinet, keeping expensive hand tools and precision instruments safe from unauthorized access in shared workshops. Adjustable drawer dividers allow you to customize compartment sizes for different tool collections, from small precision instruments to bulky power tool accessories. Pre-drilled mounting holes on the back panel allow quick, secure wall attachment using standard lag screws or wall anchors. A compact 600x400x800mm footprint makes this cabinet ideal for smaller workshops, garage walls, service vans, and mobile repair stations.","price":86.71,"is_location_offer":false,"is_rental":false,"co2_rating":"B","in_stock":true,"is_eco_friendly":true,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG93","by_name":"Georg Eiermann","by_url":"https:\/\/unsplash.com\/@georgeiermann","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/a-group-of-wooden-objects-uXWbowHdJqk","file_name":"toolcabinet01.avif","title":"Tool Cabinet"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWN","name":"Storage Solutions","slug":"storage solutions"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH3SNJ90YFW1GJ2NK17B","name":"Workbench with Drawers","description":"Heavy-duty workbench combining a solid hardwood laminate top with an integrated steel frame that supports working loads up to 500kg for the toughest assembly, fabrication, and repair tasks. Four full-extension lockable drawers on ball-bearing slides provide convenient storage for hand tools, fasteners, measuring instruments, and project components within easy arms reach. The 1500x600mm work surface offers generous space for clamping, assembly, soldering, and detailed work, while the hardwood top resists dents, scratches, and chemical spills better than particleboard alternatives. A lower shelf provides additional storage for power tools, parts bins, and heavy equipment. Adjustable leveling feet compensate for uneven workshop floors, ensuring a perfectly stable, wobble-free work platform. The ideal centerpiece for professional workshops, maker spaces, and serious home garages where a reliable work surface is essential.","price":178.2,"is_location_offer":false,"is_rental":false,"co2_rating":"B","in_stock":true,"is_eco_friendly":true,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG94","by_name":"Matteo Minoglio","by_url":"https:\/\/unsplash.com\/@ilmino","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/opened-brown-wooden-drawers-m8-NX7WxbpM","file_name":"workbench02.avif","title":"Workbench with Drawers"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWP","name":"Workbench","slug":"workbench"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH3TAS0CFVAMWSM8SK75","name":"Wooden Workbench","description":"Traditional solid European beech wood workbench built with time-tested mortise-and-tenon joinery and hardwood dowel pins for exceptional rigidity and a working lifetime measured in decades rather than years. The 1400x500mm work surface is planed smooth, sanded to a fine finish, and treated with penetrating linseed oil to resist moisture, glue, and common workshop stains without building up a slippery film. A built-in tool well running the full length of the back edge keeps chisels, pencils, marking gauges, and small parts from rolling off the work surface during use. The substantial underframe includes a full-width lower shelf for storing planes, saws, and workshop accessories within easy reach. Rated for a 300kg distributed load capacity, this bench handles heavy timber, metalwork clamping, and power tool operations without flexing. The timeless design and natural beauty of solid beech make this workbench both a serious working tool and the proud centerpiece of any craft workshop.","price":172.52,"is_location_offer":false,"is_rental":false,"co2_rating":"B","in_stock":true,"is_eco_friendly":true,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG95","by_name":"Brett Garwood","by_url":"https:\/\/unsplash.com\/@brettgarwood","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/brown-wooden-stick-on-brown-wooden-table-asZVvgMGshc","file_name":"workbench01.avif","title":"Wooden Workbench"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWP","name":"Workbench","slug":"workbench"},"brand":{"id":"01M552JGRS3QMESHAQ8PRPA5QJ","name":"MightyCraft Hardware"}},{"id":"01M552JH3VA99KVYYN3P03FJSZ","name":"Leather toolbelt","description":"Professional-grade tool belt handcrafted from full-grain saddle leather that develops a rich, distinctive patina with use while actually growing stronger and more supple over time. Eleven pockets, loops, and holders are specifically sized and positioned for quick access to hammers, tape measures, pliers, screwdrivers, nail sets, pencils, and assorted fasteners without looking down. The adjustable waist strap fits waist sizes from 32 to 44 inches comfortably over heavy work clothing and distributes weight evenly across the hips to minimize lower back strain during long working days. Double-stitched seams with heavy waxed nylon thread and copper-riveted stress points ensure this belt endures years of daily professional use on construction sites, rooftops, and renovation projects. The leather is vegetable-tanned without harsh chemicals, making it both environmentally responsible and pleasantly aromatic. An heirloom-quality working tool that many tradespeople pass down through generations of continued daily service.","price":61.16,"is_location_offer":false,"is_rental":false,"co2_rating":"B","in_stock":true,"is_eco_friendly":true,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG96","by_name":"jesse orrico","by_url":"https:\/\/unsplash.com\/@jessedo81","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/brown-handled-hammer-and-with-tool-belt-L94dWXNKwrY","file_name":"toolbelt01.avif","title":"Leather toolbelt"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWM","name":"Tool Belts","slug":"tool-belts"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH3W8Q11ZV6Q6AS3PSN6","name":"Sheet Sander","description":"Electric sheet sander delivering 12,000 orbits per minute for fast, controlled surface finishing on wood, painted surfaces, metal, and composite materials. The 240W motor provides consistent sanding power from rough 60-grit material removal through to ultra-fine 240-grit finishing, all using standard 112x102mm sanding sheets that are widely available and economical. An integrated dust collection port connects directly to a shop vacuum for a virtually dust-free work environment, or the included cloth dust bag captures fine particles when vacuum extraction is not available. The paper clamping system accepts both pre-punched and plain sanding sheets, giving you maximum flexibility in abrasive selection. At just 1.8kg, this sander is light enough for extended one-handed use on vertical surfaces, overhead work, and detailed finishing tasks. Low vibration levels and an ergonomic palm-grip design reduce hand fatigue, making this tool a pleasure to use for beginners and professionals alike.","price":58.48,"is_location_offer":false,"is_rental":false,"co2_rating":"E","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG84","by_name":"subvertivo _lab","by_url":"https:\/\/unsplash.com\/@subvertivo_lab","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/G6yracEEm8A","file_name":"sander01.avif","title":"Sheet sander"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWH","name":"Sander","slug":"sander"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH3YXWA3JYYWPX119FAY","name":"Belt Sander","description":"Powerful 800W belt sander engineered for aggressive material removal on large flat surfaces including tabletops, doors, hardwood flooring, and timber decking. The 76x533mm sanding belt travels at an impressive 380 meters per minute, enabling rapid stock removal, paint stripping, and surface leveling in a fraction of the time required by orbital sanders. A precision front roller nose allows flush sanding against walls, inside corners, and perpendicular surfaces for complete coverage without leaving unsanded edges. The quick-release belt change mechanism allows swapping abrasive grits in seconds without tools, keeping workflow interruptions to a minimum. A secondary handle on the front provides two-handed control and even pressure distribution across the full width of the belt. The dust extraction bag and auxiliary vacuum port work together to capture the large volume of fine particles generated during aggressive sanding operations.","price":73.59,"is_location_offer":false,"is_rental":false,"co2_rating":"E","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG85","by_name":"Luther.M.E. Bottrill","by_url":"https:\/\/unsplash.com\/@luthermeb","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/7kHN1-9dD_4","file_name":"sander02.avif","title":"Belt sander"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWH","name":"Sander","slug":"sander"},"brand":{"id":"01M552JGRS3QMESHAQ8PRPA5QJ","name":"MightyCraft Hardware"}},{"id":"01M552JH3Z0XQV44BXQ2BCVVWT","name":"Circular Saw","description":"Portable circular saw powered by a robust 1400W motor that drives a 190mm carbide-tipped blade at 5,500 RPM for clean, fast, straight cuts through solid timber, plywood, MDF, and sheet materials up to 67mm thick. The precision-machined aluminum base plate provides a flat, stable reference surface and adjusts smoothly for bevel cuts from 0 to 45 degrees with a positive detent at the most commonly used angles. An integrated dust blower directs a stream of air ahead of the blade to keep the pencil line visible under the constant shower of sawdust generated during cutting. The spindle lock allows quick, safe blade changes with a single wrench, while the electric brake stops the blade within seconds of releasing the trigger for added safety between cuts. An ergonomic soft-grip main handle and auxiliary front handle provide confident two-handed control for both plunge cuts and guided rip cuts. Essential for framing carpenters, renovation contractors, and DIY builders who need a portable, powerful saw for on-site timber work.","price":80.19,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG86","by_name":"Luther.M.E. Bottrill","by_url":"https:\/\/unsplash.com\/@luthermeb","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/EgIT3YHBo9E","file_name":"saw02.avif","title":"Saw"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWJ","name":"Saw","slug":"saw"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}}],"from":37,"last_page":6,"per_page":9,"to":45,"total":50}
Test Information
NamePassedFailedSkipped
Status 200 6 0 0
Number of ids = total 6 0 0
No duplicates 6 0 0
Total 18 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/products?by_category=01M552JH0YW2D66AXDEDJGQGWD
Response Information
Response Code: 200 - OK
Mean time per request: 160ms
Mean size per request: 6.81KB

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 4e78e036-2883-457f-a596-8ea9975bce80
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control max-age=120, public
Date Sat, 17 Oct 2026 14:00:09 GMT
ETag "7f85c66bfb9ba7a903b9efb83477f3f7"
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"current_page":1,"data":[{"id":"01M552JH28NG35XD8J04PGAJXN","name":"Combination Pliers","description":"Versatile combination pliers designed for gripping, bending, and cutting wire with ease. Featuring chrome vanadium steel construction with induction-hardened cutting edges, these pliers deliver excellent grip and leverage for a wide range of tasks. The precision-machined jaws combine flat gripping surfaces with a pipe-grip section and integrated wire cutter for true multi-purpose functionality. Ergonomic bi-component handles reduce hand fatigue during extended use and provide a secure hold even with oily or gloved hands. The joint is precisely fitted to eliminate play and ensure smooth operation over thousands of cycles. Ideal for electricians, mechanics, and DIY enthusiasts tackling everyday projects around the workshop or job site.","price":14.15,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7J","by_name":"Helinton Fantin","by_url":"https:\/\/unsplash.com\/@fantin","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/W8BNwvOvW4M","file_name":"pliers01.avif","title":"Combination pliers"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWD","name":"Pliers","slug":"pliers"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH2AG9122BMKVRF3XH0Z","name":"Pliers","description":"Reliable general-purpose pliers crafted from drop-forged carbon steel for long-lasting durability in demanding working conditions. The serrated jaws provide a firm grip on a variety of materials including wire, nails, small fasteners, and irregularly shaped objects. Comfortable rubber-coated handles absorb vibration and reduce hand fatigue during extended use, while the non-slip surface ensures confident handling. The precision pivot joint maintains alignment under load, delivering smooth, controlled jaw action with every squeeze. Heat-treated steel construction resists wear and deformation even under heavy use. A must-have foundational tool for any workshop, equally suited for professional tradespeople and home repair projects.","price":12.01,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7K","by_name":"Everyday basics","by_url":"https:\/\/unsplash.com\/@zanardi","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/I8eTuMmxIfo","file_name":"pliers02.avif","title":"Pliers"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWD","name":"Pliers","slug":"pliers"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH2BGG1K6K9GEJTT8GEQ","name":"Bolt Cutters","description":"Heavy-duty bolt cutters engineered to slice through hardened bolts, chains, padlocks, and wire fencing with minimal effort. The compound leverage mechanism multiplies your cutting force by a factor of 30, enabling clean cuts through materials up to 10mm in diameter. Hardened alloy steel blades are precisely ground and heat-treated to maintain a sharp edge through years of repeated use on tough materials. Ergonomic rubber grips and the generous 750mm handle length provide excellent control, leverage, and reach during overhead or awkward-angle cuts. An adjustable blade tension screw lets you fine-tune the jaw alignment for optimal cutting performance. Built for demolition crews, locksmiths, fencing contractors, and maintenance professionals who need reliable cutting power day after day.","price":48.41,"is_location_offer":true,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7M","by_name":"Michael Dziedzic","by_url":"https:\/\/unsplash.com\/@lazycreekimages","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/pM9pkc9J918","file_name":"pliers03.avif","title":"Bolt cutters"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWD","name":"Pliers","slug":"pliers"},"brand":{"id":"01M552JGRS3QMESHAQ8PRPA5QJ","name":"MightyCraft Hardware"}},{"id":"01M552JH2DQD17DR3ERTSE1Z2M","name":"Long Nose Pliers","description":"Precision long nose pliers with narrow tapered jaws designed for reaching into tight, confined spaces and bending fine wire with accuracy. Made from chrome vanadium steel with induction-hardened cutting edges that cleanly sever copper, brass, and steel wire without crushing or fraying. The slim jaw profile tapers to a fine point, making these pliers indispensable for electrical terminal work, jewelry making, and intricate mechanical repairs. Bi-component comfort grips minimize hand strain during detailed tasks requiring a steady hand and controlled pressure. The leaf-spring joint returns the handles to the open position automatically, speeding up repetitive tasks. A must-have precision tool trusted by electricians, electronics technicians, and hobbyists worldwide.","price":14.24,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":false,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7N","by_name":"Brett Jordan","by_url":"https:\/\/unsplash.com\/@brett_jordan","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/GamuDTVm02g","file_name":"pliers04.avif","title":"Long nose pliers"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWD","name":"Pliers","slug":"pliers"},"brand":{"id":"01M552JGRS3QMESHAQ8PRPA5QJ","name":"MightyCraft Hardware"}},{"id":"01M552JH2EXDQ749444RB4RAMH","name":"Slip Joint Pliers","description":"Adjustable slip joint pliers that feature a two-position pivot mechanism for switching between regular and wide jaw openings to accommodate different fastener sizes. The PVC-coated handles offer a comfortable, non-slip grip while the precisely machined jaws securely grasp round, flat, and hexagonal objects without slipping. Constructed from durable drop-forged carbon steel that has been heat-treated to withstand heavy daily use in professional environments. The curved jaw section grips pipes and cylindrical objects, while the flat front surface handles nuts, bolts, and sheet materials. A wire cutter integrated near the pivot handles light cutting tasks without reaching for a separate tool. Perfect for plumbing, automotive, HVAC, and general maintenance work where a single versatile gripping tool saves time.","price":9.17,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7P","by_name":"Yasin Hasan","by_url":"https:\/\/unsplash.com\/@yasin","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/dwlxTSpfKXg","file_name":"pliers05.avif","title":"Slip joint pliers"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWD","name":"Pliers","slug":"pliers"},"brand":{"id":"01M552JGRS3QMESHAQ8PRPA5QJ","name":"MightyCraft Hardware"}}],"from":1,"last_page":1,"per_page":9,"to":5,"total":5}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
All from the requested category 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/products?by_brand=01M552JGRRJK0308ZCZCH32JAH
Response Information
Response Code: 200 - OK
Mean time per request: 158ms
Mean size per request: 12.7KB

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token e7980234-b072-4400-b232-b71ff82ae00e
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control max-age=120, public
Date Sat, 17 Oct 2026 14:00:09 GMT
ETag "bb3449f79426cbae6a4f225627998461"
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"current_page":1,"data":[{"id":"01M552JH28NG35XD8J04PGAJXN","name":"Combination Pliers","description":"Versatile combination pliers designed for gripping, bending, and cutting wire with ease. Featuring chrome vanadium steel construction with induction-hardened cutting edges, these pliers deliver excellent grip and leverage for a wide range of tasks. The precision-machined jaws combine flat gripping surfaces with a pipe-grip section and integrated wire cutter for true multi-purpose functionality. Ergonomic bi-component handles reduce hand fatigue during extended use and provide a secure hold even with oily or gloved hands. The joint is precisely fitted to eliminate play and ensure smooth operation over thousands of cycles. Ideal for electricians, mechanics, and DIY enthusiasts tackling everyday projects around the workshop or job site.","price":14.15,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7J","by_name":"Helinton Fantin","by_url":"https:\/\/unsplash.com\/@fantin","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/W8BNwvOvW4M","file_name":"pliers01.avif","title":"Combination pliers"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWD","name":"Pliers","slug":"pliers"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH2AG9122BMKVRF3XH0Z","name":"Pliers","description":"Reliable general-purpose pliers crafted from drop-forged carbon steel for long-lasting durability in demanding working conditions. The serrated jaws provide a firm grip on a variety of materials including wire, nails, small fasteners, and irregularly shaped objects. Comfortable rubber-coated handles absorb vibration and reduce hand fatigue during extended use, while the non-slip surface ensures confident handling. The precision pivot joint maintains alignment under load, delivering smooth, controlled jaw action with every squeeze. Heat-treated steel construction resists wear and deformation even under heavy use. A must-have foundational tool for any workshop, equally suited for professional tradespeople and home repair projects.","price":12.01,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7K","by_name":"Everyday basics","by_url":"https:\/\/unsplash.com\/@zanardi","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/I8eTuMmxIfo","file_name":"pliers02.avif","title":"Pliers"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWD","name":"Pliers","slug":"pliers"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH2F4ZF8Y8F7T1EBMA3H","name":"Claw Hammer with Shock Reduction Grip","description":"Ergonomic claw hammer featuring an advanced shock reduction grip system that absorbs up to 70% of impact vibrations, protecting your wrist, elbow, and shoulder during prolonged nailing sessions. The 450g carbon steel head is precision-balanced and heat-treated for maximum hardness, ensuring accurate nail driving with minimal effort on every swing. The curved claw design effortlessly removes nails without damaging surrounding wood surfaces, making it equally useful for construction and renovation work. A fiberglass-reinforced handle combines lightweight strength with exceptional durability that far outlasts traditional wooden handles. The overmolded soft-grip zone conforms to your hand shape for a custom-feeling, fatigue-free hold throughout long working days. Recommended for professional framing, carpentry, and renovation projects where operator comfort matters as much as striking performance.","price":13.41,"is_location_offer":true,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7Q","by_name":"iMattSmart","by_url":"https:\/\/unsplash.com\/@imattsmart","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/jaLaLQdkBOE","file_name":"hammer01.avif","title":"Claw Hammer"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGW9","name":"Hammer","slug":"hammer"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH2GD6Q6AVJJSHVS7GKD","name":"Hammer","description":"A dependable standard claw hammer suitable for driving and removing nails in everyday construction, carpentry, and home improvement projects. The 350g carbon steel head is drop-forged and heat-treated for maximum hardness, then fitted to a traditional wooden handle that provides natural shock absorption with each strike. Well-balanced weight distribution between the head and handle ensures accurate strikes with minimal wrist effort, reducing fatigue during repetitive nailing tasks. The polished face resists rust and provides a smooth surface that drives nails cleanly without leaving marks on finish materials. A gently curved claw provides reliable nail extraction leverage without excessive force. This versatile hammer belongs in every toolbox, from professional carpentry workshops to home garages and apartment maintenance kits.","price":12.58,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7R","by_name":"Jozsef Hocza","by_url":"https:\/\/unsplash.com\/@hocza","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/D3nouOYbALc","file_name":"hammer02.avif","title":"Hammer"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGW9","name":"Hammer","slug":"hammer"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH2K9QV3KQSQ6ZBBD61D","name":"Thor Hammer","description":"The legendary Thor Hammer combines premium craftsmanship with raw striking power in a tool that is truly built to last generations. Forged from Uru metal with a hand-wrapped leather grip, this extraordinary 5kg masterpiece delivers unmatched impact force for the most demanding demolition, forging, and heavy construction tasks. The perfectly balanced oversized head ensures every swing transfers maximum energy to the target, while the enlarged striking face covers more surface area than any conventional hammer. Despite its impressive mass, the ergonomic handle design and precise weight distribution allow for surprisingly controlled, accurate swings. This is not merely a tool but a statement piece for those who accept nothing less than the absolute best in their workshop. Comes with a lifetime warranty because true legends never fade. Please note: only one Thor Hammer is permitted per customer.","price":11.14,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7T","by_name":"ANIRUDH","by_url":"https:\/\/unsplash.com\/@lanirudhreddy","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/3esjG-nlgyk","file_name":"hammer04.avif","title":"Hammer"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGW9","name":"Hammer","slug":"hammer"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH2MMVA7GAB33HSXMKWQ","name":"Sledgehammer","description":"Powerful sledgehammer designed for heavy demolition, driving stakes, breaking concrete, and splitting masonry with devastating efficiency. The 3.6kg forged steel head delivers tremendous impact force concentrated through a hardened striking face that resists chipping and mushrooming. A 900mm fiberglass handle provides excellent shock absorption, superior reach, and the flexibility needed to generate maximum swing velocity. Anti-vibration technology embedded in the handle dampens recoil forces, significantly reducing operator fatigue during extended demolition sessions. The overmolded grip zone prevents the handle from twisting or slipping out of sweaty or gloved hands during overhead swings. Built for construction workers, landscapers, and demolition crews who demand professional-grade striking tools that perform reliably under the most punishing conditions.","price":17.75,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7V","by_name":"Fausto Marqués","by_url":"https:\/\/unsplash.com\/@faustomarques","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/A9dq-L3zzHA","file_name":"hammer05.avif","title":"Hammer"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGW9","name":"Hammer","slug":"hammer"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH2PMYE5DXP9X6JJ29E0","name":"Claw Hammer with Fiberglass Handle","description":"Modern claw hammer featuring a durable fiberglass handle that outlasts wood, absorbs vibration more effectively, and shrugs off moisture without swelling, cracking, or loosening over time. The 400g carbon steel head is drop-forged and heat-treated to optimal hardness for reliable nail driving in softwood, hardwood, and engineered lumber. The fiberglass core is permanently bonded to the head and encased in a comfortable overmold grip that prevents slipping even when wet or oily. A magnetic nail starter near the head allows one-handed nail placement, freeing your other hand to hold materials in position. The curved claw provides smooth, controlled nail extraction with excellent leverage. Ideal for contractors and DIY builders who want a weather-resistant, maintenance-free hammer that performs reliably on every job site and in any season.","price":20.14,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7W","by_name":"Jonny Gios","by_url":"https:\/\/unsplash.com\/@supergios","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/ARaYGFeuwpU","file_name":"hammer06.avif","title":"Claw Hammer"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGW9","name":"Hammer","slug":"hammer"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH2QEYQXSH3VVTVKM55B","name":"Court Hammer","description":"Compact precision court hammer with a 300g carbon steel head designed for light-duty nailing, tapping dowels, and delicate assembly tasks where a full-size hammer would be too heavy and unwieldy. The short 280mm wooden handle provides excellent close-quarters control for detailed work in confined spaces such as cabinets, closets, and furniture interiors. The polished flat face drives small nails and brads without bending them, while the cross-peen on the opposite side is useful for starting small fasteners between your fingers. Perfectly weighted to provide enough force for trim carpentry and light framing without damaging delicate surfaces. The lacquered wooden handle resists moisture absorption and provides a warm, comfortable grip. A handy addition to any toolkit when precision and finesse matter more than raw striking power.","price":18.63,"is_location_offer":true,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7X","by_name":"Wesley Tingey","by_url":"https:\/\/unsplash.com\/@wesleyphotography","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/9z9fxr_7Z-k","file_name":"hammer07.avif","title":"Hammer"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGW9","name":"Hammer","slug":"hammer"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH2RM0ZQBYHPETRGG6TY","name":"Wood Saw","description":"Traditional hand saw crafted with a high carbon steel blade featuring 7 teeth per inch for efficient crosscutting and ripping of timber, plywood, and composite boards. The 500mm blade length handles standard dimensional lumber, sheet goods, and tree branches with smooth, clean cuts that require minimal sanding afterward. Each tooth is precision-set and hardened to stay sharp through hundreds of cuts in both softwood and hardwood species. A comfortable contoured wooden handle provides a secure three-finger grip and natural wrist alignment that reduces fatigue during extended cutting sessions. The taper-ground blade is thinner at the back than at the teeth, reducing friction and binding during deep cuts. Essential for carpenters, woodworkers, and gardeners who appreciate the precision, quiet operation, and portability of a quality hand saw.","price":12.18,"is_location_offer":false,"is_rental":false,"co2_rating":"B","in_stock":true,"is_eco_friendly":true,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7Y","by_name":"Jonathan Cooper","by_url":"https:\/\/unsplash.com\/@theshuttervision","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/fTpzd-PjyDQ","file_name":"saw01.avif","title":"Wood Saw"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWA","name":"Hand Saw","slug":"hand-saw"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}}],"from":1,"last_page":5,"per_page":9,"to":9,"total":40}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
All from the requested brand 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/products?between=price,10,30
Response Information
Response Code: 200 - OK
Mean time per request: 191ms
Mean size per request: 12.98KB

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 03e21596-2796-45fd-842f-2370686d0778
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control max-age=120, public
Date Sat, 17 Oct 2026 14:00:09 GMT
ETag "5ce95e4fad8a78ec52ced56d7e2f6632"
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"current_page":1,"data":[{"id":"01M552JH3486D3XWBPVZ4CN9P2","name":"Measuring Tape","description":"Standard 5-meter measuring tape with a durable 19mm steel blade and reliable automatic retraction mechanism for quick, hassle-free measurements in the workshop, on the job site, or around the home. The precision-riveted end hook features controlled play that automatically compensates for accurate inside and outside measurements, eliminating a common source of measuring error. A thumb-operated blade lock clicks firmly into place to hold your measurement while you mark, transfer dimensions, or record numbers. Clear metric graduations are printed in fade-resistant ink that remains legible even after years of heavy use and repeated blade extension cycles. The compact, lightweight ABS housing fits comfortably in a trouser pocket, tool belt pouch, or apron for all-day portability without adding noticeable weight. An affordable, dependable measuring tool that every tradesperson, crafter, and homeowner should have within arms reach.","price":10.07,"is_location_offer":false,"is_rental":false,"co2_rating":"C","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG8K","by_name":"Diana Polekhina","by_url":"https:\/\/unsplash.com\/@diana_pole","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/silver-and-black-necklace-on-yellow-textile-iUfusOthmgQ","file_name":"measure02.avif","title":"Measuring Tape"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWF","name":"Measures","slug":"measures"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH2K9QV3KQSQ6ZBBD61D","name":"Thor Hammer","description":"The legendary Thor Hammer combines premium craftsmanship with raw striking power in a tool that is truly built to last generations. Forged from Uru metal with a hand-wrapped leather grip, this extraordinary 5kg masterpiece delivers unmatched impact force for the most demanding demolition, forging, and heavy construction tasks. The perfectly balanced oversized head ensures every swing transfers maximum energy to the target, while the enlarged striking face covers more surface area than any conventional hammer. Despite its impressive mass, the ergonomic handle design and precise weight distribution allow for surprisingly controlled, accurate swings. This is not merely a tool but a statement piece for those who accept nothing less than the absolute best in their workshop. Comes with a lifetime warranty because true legends never fade. Please note: only one Thor Hammer is permitted per customer.","price":11.14,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7T","by_name":"ANIRUDH","by_url":"https:\/\/unsplash.com\/@lanirudhreddy","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/3esjG-nlgyk","file_name":"hammer04.avif","title":"Hammer"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGW9","name":"Hammer","slug":"hammer"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH2JAZV07V79R70NNDNX","name":"Claw Hammer","description":"Traditional claw hammer with a polished carbon steel head engineered for driving and removing nails with precision and confidence. The rubber-wrapped handle provides a secure, comfortable grip even in wet, dusty, or cold conditions where bare metal or wood handles would slip. At 500g, it offers the ideal balance between striking power and maneuverability for general carpentry, framing, and construction tasks. The curved claw design allows for smooth nail extraction without gouging or marring wood surfaces, protecting your finished work. The head-to-handle connection uses an epoxy-bonded wedge system that prevents loosening over time. A reliable, no-nonsense tool that professional carpenters and weekend builders alike reach for every day.","price":11.48,"is_location_offer":true,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7S","by_name":"Andrew George","by_url":"https:\/\/unsplash.com\/@andrewjoegeorge","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/YU2mCvXR0wA","file_name":"hammer03.avif","title":"Claw Hammer"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGW9","name":"Hammer","slug":"hammer"},"brand":{"id":"01M552JGRS3QMESHAQ8PRPA5QJ","name":"MightyCraft Hardware"}},{"id":"01M552JH2AG9122BMKVRF3XH0Z","name":"Pliers","description":"Reliable general-purpose pliers crafted from drop-forged carbon steel for long-lasting durability in demanding working conditions. The serrated jaws provide a firm grip on a variety of materials including wire, nails, small fasteners, and irregularly shaped objects. Comfortable rubber-coated handles absorb vibration and reduce hand fatigue during extended use, while the non-slip surface ensures confident handling. The precision pivot joint maintains alignment under load, delivering smooth, controlled jaw action with every squeeze. Heat-treated steel construction resists wear and deformation even under heavy use. A must-have foundational tool for any workshop, equally suited for professional tradespeople and home repair projects.","price":12.01,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7K","by_name":"Everyday basics","by_url":"https:\/\/unsplash.com\/@zanardi","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/I8eTuMmxIfo","file_name":"pliers02.avif","title":"Pliers"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWD","name":"Pliers","slug":"pliers"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH2RM0ZQBYHPETRGG6TY","name":"Wood Saw","description":"Traditional hand saw crafted with a high carbon steel blade featuring 7 teeth per inch for efficient crosscutting and ripping of timber, plywood, and composite boards. The 500mm blade length handles standard dimensional lumber, sheet goods, and tree branches with smooth, clean cuts that require minimal sanding afterward. Each tooth is precision-set and hardened to stay sharp through hundreds of cuts in both softwood and hardwood species. A comfortable contoured wooden handle provides a secure three-finger grip and natural wrist alignment that reduces fatigue during extended cutting sessions. The taper-ground blade is thinner at the back than at the teeth, reducing friction and binding during deep cuts. Essential for carpenters, woodworkers, and gardeners who appreciate the precision, quiet operation, and portability of a quality hand saw.","price":12.18,"is_location_offer":false,"is_rental":false,"co2_rating":"B","in_stock":true,"is_eco_friendly":true,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7Y","by_name":"Jonathan Cooper","by_url":"https:\/\/unsplash.com\/@theshuttervision","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/fTpzd-PjyDQ","file_name":"saw01.avif","title":"Wood Saw"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWA","name":"Hand Saw","slug":"hand-saw"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH2GD6Q6AVJJSHVS7GKD","name":"Hammer","description":"A dependable standard claw hammer suitable for driving and removing nails in everyday construction, carpentry, and home improvement projects. The 350g carbon steel head is drop-forged and heat-treated for maximum hardness, then fitted to a traditional wooden handle that provides natural shock absorption with each strike. Well-balanced weight distribution between the head and handle ensures accurate strikes with minimal wrist effort, reducing fatigue during repetitive nailing tasks. The polished face resists rust and provides a smooth surface that drives nails cleanly without leaving marks on finish materials. A gently curved claw provides reliable nail extraction leverage without excessive force. This versatile hammer belongs in every toolbox, from professional carpentry workshops to home garages and apartment maintenance kits.","price":12.58,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7R","by_name":"Jozsef Hocza","by_url":"https:\/\/unsplash.com\/@hocza","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/D3nouOYbALc","file_name":"hammer02.avif","title":"Hammer"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGW9","name":"Hammer","slug":"hammer"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH35ZAWX5SGV4RRS85TZ","name":"Tape Measure 5m","description":"Compact 5-meter tape measure designed for everyday measuring tasks around the home, workshop, and light commercial projects. The 19mm steel blade features clear metric graduations engraved and printed for readability that endures even after extensive use and repeated blade cycling. A smooth retraction spring mechanism and reliable thumb-operated blade lock ensure consistent, hassle-free operation day after day without jamming or premature blade wear. The slim, lightweight ABS housing slips easily into a pocket or clips to a belt loop, making this tape measure truly portable for all-day carry. The end hook is triple-riveted for durability and features controlled play for accurate inside and outside measurements. A great everyday carry measuring tool for interior designers, real estate professionals, DIY enthusiasts, and anyone who regularly needs quick, accurate measurements.","price":12.91,"is_location_offer":false,"is_rental":false,"co2_rating":"C","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG8M","by_name":"Immo Wegmann","by_url":"https:\/\/unsplash.com\/@macroman","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/yellow-and-black-measuring-tape-1abCQ_3g_UY","file_name":"measure03.avif","title":"Tape Measure 5m"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWF","name":"Measures","slug":"measures"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH2Z4X11XZTBJ4YR037G","name":"Chisels Set","description":"Set of five professional wood chisels with chrome vanadium steel blades ground to a razor-sharp 25-degree bevel for clean, precise cuts in both hardwood and softwood species. Traditional European-style wooden handles are turned from dense beech and designed to withstand repeated mallet strikes without splitting or mushrooming at the striking end. Blade widths of 6mm, 10mm, 13mm, 19mm, and 25mm cover the full range of common woodworking tasks including mortising, paring, hinge recessing, and joint fitting. Each blade is individually honed at the factory and protected by a clear lacquer coating that should be removed before first use. Supplied in a fitted wooden storage box with individual blade slots to prevent edge contact and maintain sharpness between uses. A solid foundation set for apprentice and experienced woodworkers who value edge retention, balance, and traditional craftsmanship.","price":12.96,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG8F","by_name":"Collab Media","by_url":"https:\/\/unsplash.com\/@collab_media","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/a-couple-of-tools-that-are-on-a-table-JQZyN8WJPh0","file_name":"chisels01.avif","title":"Chisel"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWE","name":"Chisels","slug":"chisels"},"brand":{"id":"01M552JGRS3QMESHAQ8PRPA5QJ","name":"MightyCraft Hardware"}},{"id":"01M552JH2F4ZF8Y8F7T1EBMA3H","name":"Claw Hammer with Shock Reduction Grip","description":"Ergonomic claw hammer featuring an advanced shock reduction grip system that absorbs up to 70% of impact vibrations, protecting your wrist, elbow, and shoulder during prolonged nailing sessions. The 450g carbon steel head is precision-balanced and heat-treated for maximum hardness, ensuring accurate nail driving with minimal effort on every swing. The curved claw design effortlessly removes nails without damaging surrounding wood surfaces, making it equally useful for construction and renovation work. A fiberglass-reinforced handle combines lightweight strength with exceptional durability that far outlasts traditional wooden handles. The overmolded soft-grip zone conforms to your hand shape for a custom-feeling, fatigue-free hold throughout long working days. Recommended for professional framing, carpentry, and renovation projects where operator comfort matters as much as striking performance.","price":13.41,"is_location_offer":true,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7Q","by_name":"iMattSmart","by_url":"https:\/\/unsplash.com\/@imattsmart","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/jaLaLQdkBOE","file_name":"hammer01.avif","title":"Claw Hammer"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGW9","name":"Hammer","slug":"hammer"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}}],"from":1,"last_page":3,"per_page":9,"to":9,"total":22}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Prices between 10 and 30 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/categories/tree
Response Information
Response Code: 200 - OK
Mean time per request: 148ms
Mean size per request: 2.4KB

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 8f88ac62-5579-4601-a04c-8bfd5679cdc1
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control max-age=120, public
Date Sat, 17 Oct 2026 14:00:10 GMT
ETag "b249a8037b28d664b157cd4593e9d24e"
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
[{"id":"01M552JH0THC23EZ570GKVAFFH","name":"Hand Tools","slug":"hand-tools","parent_id":null,"sub_categories":[{"id":"01M552JH0YW2D66AXDEDJGQGW9","name":"Hammer","slug":"hammer","parent_id":"01M552JH0THC23EZ570GKVAFFH","sub_categories":[]},{"id":"01M552JH0YW2D66AXDEDJGQGWA","name":"Hand Saw","slug":"hand-saw","parent_id":"01M552JH0THC23EZ570GKVAFFH","sub_categories":[]},{"id":"01M552JH0YW2D66AXDEDJGQGWB","name":"Wrench","slug":"wrench","parent_id":"01M552JH0THC23EZ570GKVAFFH","sub_categories":[]},{"id":"01M552JH0YW2D66AXDEDJGQGWC","name":"Screwdriver","slug":"screwdriver","parent_id":"01M552JH0THC23EZ570GKVAFFH","sub_categories":[]},{"id":"01M552JH0YW2D66AXDEDJGQGWD","name":"Pliers","slug":"pliers","parent_id":"01M552JH0THC23EZ570GKVAFFH","sub_categories":[]},{"id":"01M552JH0YW2D66AXDEDJGQGWE","name":"Chisels","slug":"chisels","parent_id":"01M552JH0THC23EZ570GKVAFFH","sub_categories":[]},{"id":"01M552JH0YW2D66AXDEDJGQGWF","name":"Measures","slug":"measures","parent_id":"01M552JH0THC23EZ570GKVAFFH","sub_categories":[]}]},{"id":"01M552JH0THC23EZ570GKVAFFJ","name":"Power Tools","slug":"power-tools","parent_id":null,"sub_categories":[{"id":"01M552JH0YW2D66AXDEDJGQGWG","name":"Grinder","slug":"grinder","parent_id":"01M552JH0THC23EZ570GKVAFFJ","sub_categories":[]},{"id":"01M552JH0YW2D66AXDEDJGQGWH","name":"Sander","slug":"sander","parent_id":"01M552JH0THC23EZ570GKVAFFJ","sub_categories":[]},{"id":"01M552JH0YW2D66AXDEDJGQGWJ","name":"Saw","slug":"saw","parent_id":"01M552JH0THC23EZ570GKVAFFJ","sub_categories":[]},{"id":"01M552JH0YW2D66AXDEDJGQGWK","name":"Drill","slug":"drill","parent_id":"01M552JH0THC23EZ570GKVAFFJ","sub_categories":[]}]},{"id":"01M552JH0THC23EZ570GKVAFFK","name":"Other","slug":"other","parent_id":null,"sub_categories":[{"id":"01M552JH0YW2D66AXDEDJGQGWM","name":"Tool Belts","slug":"tool-belts","parent_id":"01M552JH0THC23EZ570GKVAFFK","sub_categories":[]},{"id":"01M552JH0YW2D66AXDEDJGQGWN","name":"Storage Solutions","slug":"storage solutions","parent_id":"01M552JH0THC23EZ570GKVAFFK","sub_categories":[]},{"id":"01M552JH0YW2D66AXDEDJGQGWP","name":"Workbench","slug":"workbench","parent_id":"01M552JH0THC23EZ570GKVAFFK","sub_categories":[]},{"id":"01M552JH0YW2D66AXDEDJGQGWQ","name":"Safety Gear","slug":"safety-gear","parent_id":"01M552JH0THC23EZ570GKVAFFK","sub_categories":[]},{"id":"01M552JH0YW2D66AXDEDJGQGWR","name":"Fasteners","slug":"fasteners","parent_id":"01M552JH0THC23EZ570GKVAFFK","sub_categories":[]}]}]
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
parent_id correct across the tree 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/categories/tree/01M552JH0THC23EZ570GKVAFFH
Response Information
Response Code: 200 - OK
Mean time per request: 142ms
Mean size per request: 1.01KB

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 57f88798-33e8-4bbb-90d7-ce40bd86f9b7
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control max-age=120, public
Date Sat, 17 Oct 2026 14:00:10 GMT
ETag "412b0d74773b7b2663c2f46cfd91f88b"
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"id":"01M552JH0THC23EZ570GKVAFFH","name":"Hand Tools","slug":"hand-tools","parent_id":null,"sub_categories":[{"id":"01M552JH0YW2D66AXDEDJGQGW9","name":"Hammer","slug":"hammer","parent_id":"01M552JH0THC23EZ570GKVAFFH","sub_categories":[]},{"id":"01M552JH0YW2D66AXDEDJGQGWA","name":"Hand Saw","slug":"hand-saw","parent_id":"01M552JH0THC23EZ570GKVAFFH","sub_categories":[]},{"id":"01M552JH0YW2D66AXDEDJGQGWB","name":"Wrench","slug":"wrench","parent_id":"01M552JH0THC23EZ570GKVAFFH","sub_categories":[]},{"id":"01M552JH0YW2D66AXDEDJGQGWC","name":"Screwdriver","slug":"screwdriver","parent_id":"01M552JH0THC23EZ570GKVAFFH","sub_categories":[]},{"id":"01M552JH0YW2D66AXDEDJGQGWD","name":"Pliers","slug":"pliers","parent_id":"01M552JH0THC23EZ570GKVAFFH","sub_categories":[]},{"id":"01M552JH0YW2D66AXDEDJGQGWE","name":"Chisels","slug":"chisels","parent_id":"01M552JH0THC23EZ570GKVAFFH","sub_categories":[]},{"id":"01M552JH0YW2D66AXDEDJGQGWF","name":"Measures","slug":"measures","parent_id":"01M552JH0THC23EZ570GKVAFFH","sub_categories":[]}]}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Root has the requested id 1 0 0
Children match the full tree 1 0 0
Total 3 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/brands
Response Information
Response Code: 200 - OK
Mean time per request: 151ms
Mean size per request: 183B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 265a99a7-291c-4c6d-959c-acc32e9680ec
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control max-age=120, public
Date Sat, 17 Oct 2026 14:00:10 GMT
ETag "dd1d8a74077c3d0a98768d2b8f2d156a"
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
[{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools","slug":"forgeflex-tools"},{"id":"01M552JGRS3QMESHAQ8PRPA5QJ","name":"MightyCraft Hardware","slug":"mightycraft-hardware"}]
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Non-empty list 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/brands/search?q=For
Response Information
Response Code: 200 - OK
Mean time per request: 122ms
Mean size per request: 87B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 11e2a658-baef-4ff4-a414-aeca370e5d57
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control max-age=120, public
Date Sat, 17 Oct 2026 14:00:11 GMT
ETag "8fb89c0abeb8de4b993bb6c7dd4cc75f"
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
[{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools","slug":"forgeflex-tools"}]
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Each brand contains the term 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/products/01M552JH28NG35XD8J04PGAJXN/related
Response Information
Response Code: 200 - OK
Mean time per request: 118ms
Mean size per request: 5.28KB

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token ce99dc0a-2776-4ac2-be02-c6ae702257a6
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control max-age=120, public
Date Sat, 17 Oct 2026 14:00:11 GMT
ETag "7ecd47579e0554a0f87724d00012bb7f"
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
[{"id":"01M552JH2AG9122BMKVRF3XH0Z","name":"Pliers","description":"Reliable general-purpose pliers crafted from drop-forged carbon steel for long-lasting durability in demanding working conditions. The serrated jaws provide a firm grip on a variety of materials including wire, nails, small fasteners, and irregularly shaped objects. Comfortable rubber-coated handles absorb vibration and reduce hand fatigue during extended use, while the non-slip surface ensures confident handling. The precision pivot joint maintains alignment under load, delivering smooth, controlled jaw action with every squeeze. Heat-treated steel construction resists wear and deformation even under heavy use. A must-have foundational tool for any workshop, equally suited for professional tradespeople and home repair projects.","price":12.01,"is_location_offer":false,"is_rental":false,"in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7K","by_name":"Everyday basics","by_url":"https:\/\/unsplash.com\/@zanardi","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/I8eTuMmxIfo","file_name":"pliers02.avif","title":"Pliers"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWD","name":"Pliers"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH2BGG1K6K9GEJTT8GEQ","name":"Bolt Cutters","description":"Heavy-duty bolt cutters engineered to slice through hardened bolts, chains, padlocks, and wire fencing with minimal effort. The compound leverage mechanism multiplies your cutting force by a factor of 30, enabling clean cuts through materials up to 10mm in diameter. Hardened alloy steel blades are precisely ground and heat-treated to maintain a sharp edge through years of repeated use on tough materials. Ergonomic rubber grips and the generous 750mm handle length provide excellent control, leverage, and reach during overhead or awkward-angle cuts. An adjustable blade tension screw lets you fine-tune the jaw alignment for optimal cutting performance. Built for demolition crews, locksmiths, fencing contractors, and maintenance professionals who need reliable cutting power day after day.","price":48.41,"is_location_offer":true,"is_rental":false,"in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7M","by_name":"Michael Dziedzic","by_url":"https:\/\/unsplash.com\/@lazycreekimages","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/pM9pkc9J918","file_name":"pliers03.avif","title":"Bolt cutters"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWD","name":"Pliers"},"brand":{"id":"01M552JGRS3QMESHAQ8PRPA5QJ","name":"MightyCraft Hardware"}},{"id":"01M552JH2DQD17DR3ERTSE1Z2M","name":"Long Nose Pliers","description":"Precision long nose pliers with narrow tapered jaws designed for reaching into tight, confined spaces and bending fine wire with accuracy. Made from chrome vanadium steel with induction-hardened cutting edges that cleanly sever copper, brass, and steel wire without crushing or fraying. The slim jaw profile tapers to a fine point, making these pliers indispensable for electrical terminal work, jewelry making, and intricate mechanical repairs. Bi-component comfort grips minimize hand strain during detailed tasks requiring a steady hand and controlled pressure. The leaf-spring joint returns the handles to the open position automatically, speeding up repetitive tasks. A must-have precision tool trusted by electricians, electronics technicians, and hobbyists worldwide.","price":14.24,"is_location_offer":false,"is_rental":false,"in_stock":false,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7N","by_name":"Brett Jordan","by_url":"https:\/\/unsplash.com\/@brett_jordan","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/GamuDTVm02g","file_name":"pliers04.avif","title":"Long nose pliers"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWD","name":"Pliers"},"brand":{"id":"01M552JGRS3QMESHAQ8PRPA5QJ","name":"MightyCraft Hardware"}},{"id":"01M552JH2EXDQ749444RB4RAMH","name":"Slip Joint Pliers","description":"Adjustable slip joint pliers that feature a two-position pivot mechanism for switching between regular and wide jaw openings to accommodate different fastener sizes. The PVC-coated handles offer a comfortable, non-slip grip while the precisely machined jaws securely grasp round, flat, and hexagonal objects without slipping. Constructed from durable drop-forged carbon steel that has been heat-treated to withstand heavy daily use in professional environments. The curved jaw section grips pipes and cylindrical objects, while the flat front surface handles nuts, bolts, and sheet materials. A wire cutter integrated near the pivot handles light cutting tasks without reaching for a separate tool. Perfect for plumbing, automotive, HVAC, and general maintenance work where a single versatile gripping tool saves time.","price":9.17,"is_location_offer":false,"is_rental":false,"in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7P","by_name":"Yasin Hasan","by_url":"https:\/\/unsplash.com\/@yasin","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/dwlxTSpfKXg","file_name":"pliers05.avif","title":"Slip joint pliers"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWD","name":"Pliers"},"brand":{"id":"01M552JGRS3QMESHAQ8PRPA5QJ","name":"MightyCraft Hardware"}}]
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Current product not listed 1 0 0
Same category 1 0 0
Total 3 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/products/01M552JH28NG35XD8J04PGAJXN/specs
Response Information
Response Code: 200 - OK
Mean time per request: 97ms
Mean size per request: 716B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 4d16931d-29ae-41f2-9d66-76f060a28fda
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control max-age=120, public
Date Sat, 17 Oct 2026 14:00:11 GMT
ETag "d8260ef53088c2a90622c454ffb088fb"
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
[{"id":"01M552JH6P79413ZXA0S6SD6KS","product_id":"01M552JH28NG35XD8J04PGAJXN","spec_name":"Handle Material","spec_value":"Bi-component","spec_unit":null},{"id":"01M552JH6P79413ZXA0S6SD6KQ","product_id":"01M552JH28NG35XD8J04PGAJXN","spec_name":"Length","spec_value":"200","spec_unit":"mm"},{"id":"01M552JH6P79413ZXA0S6SD6KR","product_id":"01M552JH28NG35XD8J04PGAJXN","spec_name":"Material","spec_value":"Chrome Vanadium Steel","spec_unit":null},{"id":"01M552JH6P79413ZXA0S6SD6KT","product_id":"01M552JH28NG35XD8J04PGAJXN","spec_name":"Warranty","spec_value":"2","spec_unit":"years"},{"id":"01M552JH6P79413ZXA0S6SD6KP","product_id":"01M552JH28NG35XD8J04PGAJXN","spec_name":"Weight","spec_value":"340","spec_unit":"g"}]
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Each has spec_name and spec_value 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/product-specs/names
Response Information
Response Code: 200 - OK
Mean time per request: 143ms
Mean size per request: 3.15KB

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 5e6b1f42-d1dd-4c49-878e-bdac7b81b198
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control max-age=120, public
Date Sat, 17 Oct 2026 14:00:12 GMT
ETag "e6822263b34dfad5fefd77d9619c7ac8"
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
[{"name":"Adjustable","values":["Yes"],"unit":null},{"name":"Anti-fog","values":["Yes"],"unit":null},{"name":"Battery","values":["2.0","3.0","4.0","5.0"],"unit":"Ah"},{"name":"Belt Size","values":["76x533"],"unit":"mm"},{"name":"Belt Speed","values":["380"],"unit":"m\/min"},{"name":"Blade Diameter","values":["190"],"unit":"mm"},{"name":"Blade Length","values":["500"],"unit":"mm"},{"name":"Blade Width","values":["19","25"],"unit":"mm"},{"name":"Chuck Size","values":["10","13"],"unit":"mm"},{"name":"Cut Resistance","values":["Level 3"],"unit":null},{"name":"Dimensions","values":["1400x500x850","1500x600x850","600x400x800","680x460x1000"],"unit":"mm"},{"name":"Drawers","values":["3","4","5"],"unit":"pcs"},{"name":"Handle Material","values":["Ash Wood","Bi-component","Fiberglass","Hornbeam","Leather Wrapped","Plastic","PVC","Rubber","Wood"],"unit":null},{"name":"Head Type","values":["Flat Head","Pan Head","Phillips"],"unit":null},{"name":"Head Weight","values":["300","350","3600","400","450","4500"],"unit":"g"},{"name":"Length","values":["150","170","180","200","240","250","280","300","320","330","340","450","5","7.5","750","900"],"unit":"mm"},{"name":"Load Capacity","values":["150","200","300","500"],"unit":"kg"},{"name":"Material","values":["ABS Plastic","Beech Wood","Carbon Steel","Chrome Vanadium Steel","Cold Rolled Steel","Forged Steel","Full Grain Leather","Hardened Steel","Hardwood \/ Steel","HDPE","High Carbon Steel","Leather","Nitrile","Nylon Coated Steel","Polycarbonate","Stainless Steel","Steel","Swiss Steel","Uru Metal","Yellow Zinc Steel","Zinc Plated Steel"],"unit":null},{"name":"Max Cut Depth","values":["67"],"unit":"mm"},{"name":"Max Cutting Capacity","values":["10"],"unit":"mm"},{"name":"Max Jaw Opening","values":["30"],"unit":"mm"},{"name":"Max Torque","values":["30","50","60","80"],"unit":"Nm"},{"name":"No Load Speed","values":["5500"],"unit":"rpm"},{"name":"Noise Reduction","values":["28"],"unit":"dB"},{"name":"Pad Diameter","values":["125"],"unit":"mm"},{"name":"Pad Size","values":["112x102"],"unit":"mm"},{"name":"Pieces","values":["100","12","150","200","4","5","50","6","75"],"unit":"pcs"},{"name":"Pockets","values":["11"],"unit":"pcs"},{"name":"Power","values":["1400","240","300","800"],"unit":"W"},{"name":"Shield Material","values":["Polycarbonate"],"unit":null},{"name":"Size","values":["4x40","L","M","M4","M4x25","M5x30"],"unit":null},{"name":"Size Range","values":["6-32","M3-M10","M4-M10"],"unit":"mm"},{"name":"Speed","values":["1200","1500","1800","2000"],"unit":"rpm"},{"name":"Teeth Per Inch","values":["7"],"unit":"TPI"},{"name":"Tip Size","values":["PH0","PH2"],"unit":null},{"name":"UV Protection","values":["UV400"],"unit":null},{"name":"Ventilation","values":["Yes"],"unit":null},{"name":"Vibration Rate","values":["12000","14000"],"unit":"rpm"},{"name":"Voltage","values":["12","18","20","220","24"],"unit":"V"},{"name":"Warranty","values":["1","2","3","5","Lifetime"],"unit":"years"},{"name":"Weight","values":["120","1200","1500","1600","180","1800","18000","200","2100","220","250","25000","280","300","320","3200","340","350","35000","380","400","4200","45","450","4500","45000","500","5000","520","550","567","60","650","800","85"],"unit":"g"}]
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/register
Response Information
Response Code: 201 - Created
Mean time per request: 293ms
Mean size per request: 329B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 1753e337-84dc-4aae-816e-fc48f0b08dd1
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 345
Request Body
{
          "first_name": "QA",
          "last_name": "Tester",
          "address": {
            "street": "Teststraat 1",
            "city": "Amsterdam",
            "state": "Noord-Holland",
            "country": "NL",
            "postal_code": "1011 AB"
          },
          "phone": "0612345678",
          "dob": "1990-01-01",
          "email": "qa+new-1792245612408@test.local",
          "password": "[password masked]"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:12 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"first_name":"QA","last_name":"Tester","phone":"0612345678","dob":"1990-01-01","email":"qa+new-1792245612408@test.local","id":"01m552kg5a890kvbmsptpr00b0","created_at":"2026-10-17 14:00:12","address":{"street":"Teststraat 1","house_number":null,"city":"Amsterdam","state":"Noord-Holland","country":"NL","postal_code":"1011 AB"}}
Test Information
NamePassedFailedSkipped
Status 201 1 0 0
Has id 1 0 0
Email = the one sent 1 0 0
Total 3 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/login
Response Information
Response Code: 200 - OK
Mean time per request: 153ms
Mean size per request: 429B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token e691cd8b-767d-45b5-8cf1-66887c1637ee
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 95
Request Body
{
          "email": "qa+new-1792245612408@test.local",
          "password": "[password masked]"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:13 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"access_token":"eyJ…[masked]","token_type":"bearer","expires_in":300}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/register
Response Information
Response Code: 409 - Conflict
Mean time per request: 230ms
Mean size per request: 64B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token d072e85d-9e37-484f-88ee-73a5325c860d
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 340
Request Body
{
          "first_name": "QA",
          "last_name": "Tester",
          "address": {
            "street": "Teststraat 1",
            "city": "Amsterdam",
            "state": "Noord-Holland",
            "country": "NL",
            "postal_code": "1011 AB"
          },
          "phone": "0612345678",
          "dob": "1990-01-01",
          "email": "qa+a-1792245587396@test.local",
          "password": "Qa-Test!2026#1792245613261"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:13 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"email":["A customer with this email address already exists."]}
Test Information
NamePassedFailedSkipped
Status 409 1 0 0
Validation error on email 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/register
Response Information
Response Code: 422 - Unprocessable Content
Mean time per request: 112ms
Mean size per request: 66B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token a87d2b93-bd24-4584-b0d5-74ad99e130a4
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 316
Request Body
{
          "first_name": "QA",
          "last_name": "Tester",
          "address": {
            "street": "Teststraat 1",
            "city": "Amsterdam",
            "state": "Noord-Holland",
            "country": "NL",
            "postal_code": "1011 AB"
          },
          "phone": "0612345678",
          "dob": "1990-01-01",
          "email": "qa+1792245613698@test.local",
          "password": "Ab1!"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:13 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"password":["The password field must be at least 8 characters."]}
Test Information
NamePassedFailedSkipped
Status 422 1 0 0
Validation error on password 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/register
Response Information
Response Code: 422 - Unprocessable Content
Mean time per request: 116ms
Mean size per request: 97B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 25a7a128-3d94-41ea-b95f-35f1a4af7394
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 326
Request Body
{
          "first_name": "QA",
          "last_name": "Tester",
          "address": {
            "street": "Teststraat 1",
            "city": "Amsterdam",
            "state": "Noord-Holland",
            "country": "NL",
            "postal_code": "1011 AB"
          },
          "phone": "0612345678",
          "dob": "1990-01-01",
          "email": "qa+1792245614024@test.local",
          "password": "parolasimpla1!"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:14 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"password":["The password field must contain at least one uppercase and one lowercase letter."]}
Test Information
NamePassedFailedSkipped
Status 422 1 0 0
Validation error on password 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/register
Response Information
Response Code: 422 - Unprocessable Content
Mean time per request: 113ms
Mean size per request: 69B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 91ab0541-5b35-48eb-b95d-5da10dd91e8c
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 325
Request Body
{
          "first_name": "QA",
          "last_name": "Tester",
          "address": {
            "street": "Teststraat 1",
            "city": "Amsterdam",
            "state": "Noord-Holland",
            "country": "NL",
            "postal_code": "1011 AB"
          },
          "phone": "0612345678",
          "dob": "1990-01-01",
          "email": "qa+1792245614336@test.local",
          "password": "ParolaSimpla!"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:14 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"password":["The password field must contain at least one number."]}
Test Information
NamePassedFailedSkipped
Status 422 1 0 0
Validation error on password 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/register
Response Information
Response Code: 422 - Unprocessable Content
Mean time per request: 92ms
Mean size per request: 69B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token d9761c70-2b30-401c-9611-eab713a648a8
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 325
Request Body
{
          "first_name": "QA",
          "last_name": "Tester",
          "address": {
            "street": "Teststraat 1",
            "city": "Amsterdam",
            "state": "Noord-Holland",
            "country": "NL",
            "postal_code": "1011 AB"
          },
          "phone": "0612345678",
          "dob": "1990-01-01",
          "email": "qa+1792245614661@test.local",
          "password": "ParolaSimpla1"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:14 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"password":["The password field must contain at least one symbol."]}
Test Information
NamePassedFailedSkipped
Status 422 1 0 0
Validation error on password 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/register
Response Information
Response Code: 201 - Created
Mean time per request: 234ms
Mean size per request: 325B

Test Pass Percentage
50 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 65cad199-3f1e-494b-94cb-b15df2c2eaa6
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 338
Request Body
{
          "first_name": "QA",
          "last_name": "Tester",
          "address": {
            "street": "Teststraat 1",
            "city": "Amsterdam",
            "state": "Noord-Holland",
            "country": "NL",
            "postal_code": "1011 AB"
          },
          "phone": "0612345678",
          "dob": "1990-01-01",
          "email": "qa-fara-arond-1792245587396",
          "password": "Qa-Test!2026#1792245614972"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:15 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"first_name":"QA","last_name":"Tester","phone":"0612345678","dob":"1990-01-01","email":"qa-fara-arond-1792245587396","id":"01m552kjkvc18nkd0f3z14bxqh","created_at":"2026-10-17 14:00:15","address":{"street":"Teststraat 1","house_number":null,"city":"Amsterdam","state":"Noord-Holland","country":"NL","postal_code":"1011 AB"}}
Test Information
NamePassedFailedSkipped
Status 422 0 1 0
Validation error on email 1 0 0
Total 1 1 0
Test Failure
Test NameAssertion Error
Status 422
expected response to have status code 422 but got 201
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/register
Response Information
Response Code: 422 - Unprocessable Content
Mean time per request: 108ms
Mean size per request: 189B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token c9777cfa-dedb-4630-a5b3-4c1a0913c270
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 2
Request Body
{}
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:15 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"first_name":["The first name field is required."],"last_name":["The last name field is required."],"email":["The email field is required."],"password":["The password field is required."]}
Test Information
NamePassedFailedSkipped
Status 422 1 0 0
At least one validation error 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/register
Response Information
Response Code: 422 - Unprocessable Content
Mean time per request: 211ms
Mean size per request: 52B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 4a2ebadb-efc1-436b-ab0e-63f7083f1e23
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 316
Request Body
{
          "last_name": "Tester",
          "address": {
            "street": "Teststraat 1",
            "city": "Amsterdam",
            "state": "Noord-Holland",
            "country": "NL",
            "postal_code": "1011 AB"
          },
          "phone": "0612345678",
          "dob": "1990-01-01",
          "email": "qa+1792245615745@test.local",
          "password": "Qa-Test!2026#1792245615745"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:15 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"first_name":["The first name field is required."]}
Test Information
NamePassedFailedSkipped
Status 422 1 0 0
At least one validation error 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/register
Response Information
Response Code: 422 - Unprocessable Content
Mean time per request: 107ms
Mean size per request: 48B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 1e8577be-8b84-47aa-88c8-aac468fda3e8
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 294
Request Body
{
          "first_name": "QA",
          "last_name": "Tester",
          "address": {
            "street": "Teststraat 1",
            "city": "Amsterdam",
            "state": "Noord-Holland",
            "country": "NL",
            "postal_code": "1011 AB"
          },
          "phone": "0612345678",
          "dob": "1990-01-01",
          "email": "qa+1792245616164@test.local"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:16 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"password":["The password field is required."]}
Test Information
NamePassedFailedSkipped
Status 422 1 0 0
At least one validation error 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/register
Response Information
Response Code: 201 - Created
Mean time per request: 237ms
Mean size per request: 325B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 70094105-b9e2-48d4-941b-1ae1005c759e
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 338
Request Body
{
          "first_name": "QA",
          "last_name": "Tester",
          "address": {
            "street": "Teststraat 1",
            "city": "Amsterdam",
            "state": "Noord-Holland",
            "country": "NL",
            "postal_code": "1011 AB"
          },
          "phone": "0612345678",
          "dob": "1990-01-01",
          "email": "qa+1792245616475@test.local",
          "password": "Qa-Test!2026#1792245616475"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:16 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"first_name":"QA","last_name":"Tester","phone":"0612345678","dob":"1990-01-01","email":"qa+1792245616475@test.local","id":"01m552km2yakbc35a1akzkggtk","created_at":"2026-10-17 14:00:16","address":{"street":"Teststraat 1","house_number":null,"city":"Amsterdam","state":"Noord-Holland","country":"NL","postal_code":"1011 AB"}}
Test Information
NamePassedFailedSkipped
Status 201 1 0 0
No sensitive fields 1 0 0
No bcrypt hash value 1 0 0
Total 3 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/register
Response Information
Response Code: 201 - Created
Mean time per request: 254ms
Mean size per request: 328B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 2befa61f-204a-4b9c-9940-bf937c7f5f80
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 362
Request Body
{
          "first_name": "QA",
          "last_name": "Tester",
          "address": {
            "street": "Teststraat 1",
            "city": "Amsterdam",
            "state": "Noord-Holland",
            "country": "NL",
            "postal_code": "1011 AB"
          },
          "phone": "0612345678",
          "dob": "1990-01-01",
          "email": "qa+ra-1792245616926@test.local",
          "password": "[password masked]",
          "role": "admin"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:17 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"first_name":"QA","last_name":"Tester","phone":"0612345678","dob":"1990-01-01","email":"qa+ra-1792245616926@test.local","id":"01m552kmhja8v5v80jbv0grpnd","created_at":"2026-10-17 14:00:17","address":{"street":"Teststraat 1","house_number":null,"city":"Amsterdam","state":"Noord-Holland","country":"NL","postal_code":"1011 AB"}}
Test Information
NamePassedFailedSkipped
Status in [201, 422] 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/login
Response Information
Response Code: 200 - OK
Mean time per request: 156ms
Mean size per request: 429B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 483d6036-9add-4172-a7ba-ab9018c26df6
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 93
Request Body
{
          "email": "qa+ra-1792245616926@test.local",
          "password": "[password masked]"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:17 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"access_token":"eyJ…[masked]","token_type":"bearer","expires_in":300}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/users
Response Information
Response Code: 403 - Forbidden
Mean time per request: 152ms
Mean size per request: 23B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 007a2061-833f-4994-b0f8-8d877a426682
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:17 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Forbidden"}
Test Information
NamePassedFailedSkipped
Status in [401, 403] 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/reports/total-sales-of-years
Response Information
Response Code: 403 - Forbidden
Mean time per request: 282ms
Mean size per request: 23B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 1a8f30ed-a5b6-4868-9c0a-9bb151974354
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:18 GMT
X-RateLimit-Limit 60
X-RateLimit-Remaining 59
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Forbidden"}
Test Information
NamePassedFailedSkipped
Status in [401, 403] 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/register
Response Information
Response Code: 422 - Unprocessable Content
Mean time per request: 225ms
Mean size per request: 42B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token da8d7e88-8879-43bc-b55a-e5634fcc3728
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 338
Request Body
{
          "first_name": "QA",
          "last_name": "Tester",
          "address": {
            "street": "Teststraat 1",
            "city": "Amsterdam",
            "state": "Noord-Holland",
            "country": "NL",
            "postal_code": "1011 AB"
          },
          "phone": "0612345678",
          "dob": "2016-10-17",
          "email": "qa+1792245618589@test.local",
          "password": "Qa-Test!2026#1792245618589"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:18 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"dob":["Customer must be 18 years old."]}
Test Information
NamePassedFailedSkipped
Status 422 1 0 0
Validation error on dob 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/register
Response Information
Response Code: 422 - Unprocessable Content
Mean time per request: 227ms
Mean size per request: 54B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 52533ef9-ef47-44a0-8ab2-5b17118794f7
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 338
Request Body
{
          "first_name": "QA",
          "last_name": "Tester",
          "address": {
            "street": "Teststraat 1",
            "city": "Amsterdam",
            "state": "Noord-Holland",
            "country": "NL",
            "postal_code": "1011 AB"
          },
          "phone": "0612345678",
          "dob": "01-01-1990",
          "email": "qa+1792245619022@test.local",
          "password": "Qa-Test!2026#1792245619022"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:19 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"dob":["The dob field must match the format Y-m-d."]}
Test Information
NamePassedFailedSkipped
Status 422 1 0 0
Validation error on dob 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/register
Response Information
Response Code: 422 - Unprocessable Content
Mean time per request: 221ms
Mean size per request: 89B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 9b5e2ec6-866a-493d-b626-72776983f91c
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 336
Request Body
{
          "first_name": "QA",
          "last_name": "Tester",
          "address": {
            "street": "Teststraat 1",
            "city": "Amsterdam",
            "state": "Noord-Holland",
            "country": "NL",
            "postal_code": "12345"
          },
          "phone": "0612345678",
          "dob": "1990-01-01",
          "email": "qa+1792245619457@test.local",
          "password": "Qa-Test!2026#1792245619457"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:19 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"address.postal_code":["The postal code format is not valid for the selected country."]}
Test Information
NamePassedFailedSkipped
Status 422 1 0 0
Validation error on address.postal_code 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/register
Response Information
Response Code: 422 - Unprocessable Content
Mean time per request: 233ms
Mean size per request: 89B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 628de3cf-dc92-4fdb-aa52-5b1dc7e6dd67
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 338
Request Body
{
          "first_name": "QA",
          "last_name": "Tester",
          "address": {
            "street": "Teststraat 1",
            "city": "Amsterdam",
            "state": "Noord-Holland",
            "country": "US",
            "postal_code": "1011 AB"
          },
          "phone": "0612345678",
          "dob": "1990-01-01",
          "email": "qa+1792245619877@test.local",
          "password": "Qa-Test!2026#1792245619877"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:20 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"address.postal_code":["The postal code format is not valid for the selected country."]}
Test Information
NamePassedFailedSkipped
Status 422 1 0 0
Validation error on address.postal_code 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/register
Response Information
Response Code: 201 - Created
Mean time per request: 247ms
Mean size per request: 363B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 0269b4d3-5df4-48d4-8504-7710a385c8d2
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 376
Request Body
{
          "first_name": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
          "last_name": "Tester",
          "address": {
            "street": "Teststraat 1",
            "city": "Amsterdam",
            "state": "Noord-Holland",
            "country": "NL",
            "postal_code": "1011 AB"
          },
          "phone": "0612345678",
          "dob": "1990-01-01",
          "email": "qa+1792245620311@test.local",
          "password": "Qa-Test!2026#1792245620311"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:20 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"first_name":"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA","last_name":"Tester","phone":"0612345678","dob":"1990-01-01","email":"qa+1792245620311@test.local","id":"01m552kqv4mnywed6hfdfmar1f","created_at":"2026-10-17 14:00:20","address":{"street":"Teststraat 1","house_number":null,"city":"Amsterdam","state":"Noord-Holland","country":"NL","postal_code":"1011 AB"}}
Test Information
NamePassedFailedSkipped
Status 201 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/register
Response Information
Response Code: 201 - Created
Mean time per request: 250ms
Mean size per request: 339B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 7b38e1fb-a6eb-4dae-a047-eb8cb7f2f1a2
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 352
Request Body
{
          "first_name": "QA",
          "last_name": "AAAAAAAAAAAAAAAAAAAA",
          "address": {
            "street": "Teststraat 1",
            "city": "Amsterdam",
            "state": "Noord-Holland",
            "country": "NL",
            "postal_code": "1011 AB"
          },
          "phone": "0612345678",
          "dob": "1990-01-01",
          "email": "qa+1792245620779@test.local",
          "password": "Qa-Test!2026#1792245620779"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:21 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"first_name":"QA","last_name":"AAAAAAAAAAAAAAAAAAAA","phone":"0612345678","dob":"1990-01-01","email":"qa+1792245620779@test.local","id":"01m552kr9sjx6n2z2pyr1xpj4r","created_at":"2026-10-17 14:00:21","address":{"street":"Teststraat 1","house_number":null,"city":"Amsterdam","state":"Noord-Holland","country":"NL","postal_code":"1011 AB"}}
Test Information
NamePassedFailedSkipped
Status 201 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/register
Response Information
Response Code: 201 - Created
Mean time per request: 260ms
Mean size per request: 339B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 206c4e77-8104-4379-8be8-24cb2c3b6e5e
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 352
Request Body
{
          "first_name": "QA",
          "last_name": "Tester",
          "address": {
            "street": "Teststraat 1",
            "city": "Amsterdam",
            "state": "Noord-Holland",
            "country": "NL",
            "postal_code": "1011 AB"
          },
          "phone": "111111111111111111111111",
          "dob": "1990-01-01",
          "email": "qa+1792245621226@test.local",
          "password": "Qa-Test!2026#1792245621226"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:21 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"first_name":"QA","last_name":"Tester","phone":"111111111111111111111111","dob":"1990-01-01","email":"qa+1792245621226@test.local","id":"01m552krr7t2y73n2fwhdam06t","created_at":"2026-10-17 14:00:21","address":{"street":"Teststraat 1","house_number":null,"city":"Amsterdam","state":"Noord-Holland","country":"NL","postal_code":"1011 AB"}}
Test Information
NamePassedFailedSkipped
Status 201 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/register
Response Information
Response Code: 422 - Unprocessable Content
Mean time per request: 205ms
Mean size per request: 79B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 6975fe21-aa0e-434a-8c0d-5436182c03ae
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 377
Request Body
{
          "first_name": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
          "last_name": "Tester",
          "address": {
            "street": "Teststraat 1",
            "city": "Amsterdam",
            "state": "Noord-Holland",
            "country": "NL",
            "postal_code": "1011 AB"
          },
          "phone": "0612345678",
          "dob": "1990-01-01",
          "email": "qa+1792245621693@test.local",
          "password": "Qa-Test!2026#1792245621693"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:21 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"first_name":["The first name field must not be greater than 40 characters."]}
Test Information
NamePassedFailedSkipped
Status 422 1 0 0
No server error (5xx) 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/register
Response Information
Response Code: 422 - Unprocessable Content
Mean time per request: 195ms
Mean size per request: 77B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 1ff8ff7a-4941-4d94-bb97-bdcd298b66a0
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 353
Request Body
{
          "first_name": "QA",
          "last_name": "AAAAAAAAAAAAAAAAAAAAA",
          "address": {
            "street": "Teststraat 1",
            "city": "Amsterdam",
            "state": "Noord-Holland",
            "country": "NL",
            "postal_code": "1011 AB"
          },
          "phone": "0612345678",
          "dob": "1990-01-01",
          "email": "qa+1792245622113@test.local",
          "password": "Qa-Test!2026#1792245622113"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:22 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"last_name":["The last name field must not be greater than 20 characters."]}
Test Information
NamePassedFailedSkipped
Status 422 1 0 0
No server error (5xx) 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/register
Response Information
Response Code: 422 - Unprocessable Content
Mean time per request: 221ms
Mean size per request: 69B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 7e6485dd-97a8-48ed-8cb3-1d2dadaa315a
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 353
Request Body
{
          "first_name": "QA",
          "last_name": "Tester",
          "address": {
            "street": "Teststraat 1",
            "city": "Amsterdam",
            "state": "Noord-Holland",
            "country": "NL",
            "postal_code": "1011 AB"
          },
          "phone": "1111111111111111111111111",
          "dob": "1990-01-01",
          "email": "qa+1792245622486@test.local",
          "password": "Qa-Test!2026#1792245622486"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:22 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"phone":["The phone field must not be greater than 24 characters."]}
Test Information
NamePassedFailedSkipped
Status 422 1 0 0
No server error (5xx) 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/login
Response Information
Response Code: 200 - OK
Mean time per request: 155ms
Mean size per request: 429B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 8ab1a230-282e-4c03-87f5-f0cc60f5e8ee
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 91
Request Body
{
          "email": "qa+a-1792245587396@test.local",
          "password": "[password masked]"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:23 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"access_token":"eyJ…[masked]","token_type":"bearer","expires_in":300}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
access_token not empty 1 0 0
token_type = bearer 1 0 0
expires_in positive 1 0 0
No sensitive fields 1 0 0
Total 5 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/users/me
Response Information
Response Code: 200 - OK
Mean time per request: 145ms
Mean size per request: 363B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 74c7e567-a9d6-49f7-9912-a44301a56548
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:23 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"id":"01m552jz1by17vr3sx9zcb1275","provider":null,"first_name":"QA","last_name":"UserA","phone":"0612345678","dob":"1990-01-01","email":"qa+a-1792245587396@test.local","totp_enabled":false,"created_at":"2026-10-17 13:59:55","address":{"street":"Teststraat 1","house_number":null,"city":"Amsterdam","state":"Noord-Holland","country":"NL","postal_code":"1011 AB"}}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Email = emailA 1 0 0
Id = userIdA 1 0 0
No sensitive fields 1 0 0
Total 4 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/users/me
Response Information
Response Code: 401 - Unauthorized
Mean time per request: 94ms
Mean size per request: 26B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 832f65d4-79dc-44e4-9249-9dacd02d618f
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:23 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Unauthorized"}
Test Information
NamePassedFailedSkipped
Status 401 1 0 0
No user data 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/users/me
Response Information
Response Code: 401 - Unauthorized
Mean time per request: 132ms
Mean size per request: 26B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 2d4f3f99-c34a-4553-ba7a-422f478d9a19
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:24 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Unauthorized"}
Test Information
NamePassedFailedSkipped
Status 401 1 0 0
No internal details in response 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/users/me
Response Information
Response Code: 401 - Unauthorized
Mean time per request: 110ms
Mean size per request: 26B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 64c24439-77c9-4a6c-a06a-77cd512f2fb3
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:24 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Unauthorized"}
Test Information
NamePassedFailedSkipped
Status 401 1 0 0
No internal details in response 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/login
Response Information
Response Code: 401 - Unauthorized
Mean time per request: 155ms
Mean size per request: 24B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 79640a5f-949f-4677-b95d-0085031eef93
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 75
Request Body
{
          "email": "qa+a-1792245587396@test.local",
          "password": "Gresita!123"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:24 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"error":"Unauthorized"}
Test Information
NamePassedFailedSkipped
Status 401 1 0 0
No access_token in response 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/login
Response Information
Response Code: 401 - Unauthorized
Mean time per request: 92ms
Mean size per request: 24B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 365f7507-6c7a-4e4a-927a-4f6d60687aee
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 80
Request Body
{
          "email": "nu-exista-1792245587396@test.local",
          "password": "Gresita!123"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:25 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"error":"Unauthorized"}
Test Information
NamePassedFailedSkipped
Status 401 1 0 0
No access_token in response 1 0 0
Same message as for the wrong password 1 0 0
Total 3 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/login
Response Information
Response Code: 200 - OK
Mean time per request: 144ms
Mean size per request: 429B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token c1000741-e50f-4431-b5a8-a41376b56b18
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 91
Request Body
{
          "email": "qa+a-1792245587396@test.local",
          "password": "[password masked]"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:25 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"access_token":"eyJ…[masked]","token_type":"bearer","expires_in":300}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/login
Response Information
Response Code: 401 - Unauthorized
Mean time per request: 95ms
Mean size per request: 24B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 07dc3f29-ef55-47ea-b4dc-312c481fcb9e
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 59
Request Body
{ "email": "customer-fara-arond", "password": "welcome01" }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:25 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"error":"Unauthorized"}
Test Information
NamePassedFailedSkipped
Status in [401, 422] 1 0 0
No access_token in response 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/login
Response Information
Response Code: 401 - Unauthorized
Mean time per request: 97ms
Mean size per request: 33B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token be2ee8a9-9359-46d7-b339-2defb9ae8581
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 29
Request Body
{
          "password": "welcome01"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:26 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"error":"Invalid login request"}
Test Information
NamePassedFailedSkipped
Status in [401, 422] 1 0 0
No access_token in response 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/login
Response Information
Response Code: 401 - Unauthorized
Mean time per request: 97ms
Mean size per request: 33B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 8382fe17-1fed-4f2f-8878-fb13657b8352
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 53
Request Body
{
          "email": "customer@practicesoftwaretesting.com"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:26 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"error":"Invalid login request"}
Test Information
NamePassedFailedSkipped
Status in [401, 422] 1 0 0
No access_token in response 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/login
Response Information
Response Code: 401 - Unauthorized
Mean time per request: 93ms
Mean size per request: 33B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 30108d01-7cc7-48cf-b72d-ce95181d65a7
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 2
Request Body
{}
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:26 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"error":"Invalid login request"}
Test Information
NamePassedFailedSkipped
Status in [401, 422] 1 0 0
No access_token in response 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/login
Response Information
Response Code: 200 - OK
Mean time per request: 143ms
Mean size per request: 429B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 680edb17-2758-4092-88df-021e89a54c82
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 91
Request Body
{
          "email": "qa+a-1792245587396@test.local",
          "password": "[password masked]"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:27 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"access_token":"eyJ…[masked]","token_type":"bearer","expires_in":300}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/users/refresh
Response Information
Response Code: 200 - OK
Mean time per request: 120ms
Mean size per request: 431B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token d1d0af99-7db1-40bc-bb0b-6bfa853e4502
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:27 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"access_token":"eyJ…[masked]","token_type":"bearer","expires_in":300}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
New token, different from the old one 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/users/me
Response Information
Response Code: 200 - OK
Mean time per request: 131ms
Mean size per request: 363B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 0b85adfc-baf6-474b-b8dd-3eabfec2f1fe
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:27 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"id":"01m552jz1by17vr3sx9zcb1275","provider":null,"first_name":"QA","last_name":"UserA","phone":"0612345678","dob":"1990-01-01","email":"qa+a-1792245587396@test.local","totp_enabled":false,"created_at":"2026-10-17 13:59:55","address":{"street":"Teststraat 1","house_number":null,"city":"Amsterdam","state":"Noord-Holland","country":"NL","postal_code":"1011 AB"}}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/users/me
Response Information
Response Code: 401 - Unauthorized
Mean time per request: 113ms
Mean size per request: 26B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 442b3580-6b9e-4580-88d5-1035d01dae77
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:28 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Unauthorized"}
Test Information
NamePassedFailedSkipped
Status in [200, 401] 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/login
Response Information
Response Code: 200 - OK
Mean time per request: 156ms
Mean size per request: 429B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 32f3937e-a82b-4762-a265-82c171b309ae
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 91
Request Body
{
          "email": "qa+a-1792245587396@test.local",
          "password": "[password masked]"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:28 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"access_token":"eyJ…[masked]","token_type":"bearer","expires_in":300}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/users/me
Response Information
Response Code: 200 - OK
Mean time per request: 125ms
Mean size per request: 363B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 260e82d4-38bc-4876-9227-6830b7c2f8a2
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:28 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"id":"01m552jz1by17vr3sx9zcb1275","provider":null,"first_name":"QA","last_name":"UserA","phone":"0612345678","dob":"1990-01-01","email":"qa+a-1792245587396@test.local","totp_enabled":false,"created_at":"2026-10-17 13:59:55","address":{"street":"Teststraat 1","house_number":null,"city":"Amsterdam","state":"Noord-Holland","country":"NL","postal_code":"1011 AB"}}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/users/logout
Response Information
Response Code: 200 - OK
Mean time per request: 157ms
Mean size per request: 37B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token fac65243-38ee-4fa6-9b8e-b7dd15f940d6
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:29 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Successfully logged out"}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/users/me
Response Information
Response Code: 401 - Unauthorized
Mean time per request: 121ms
Mean size per request: 26B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token b2ac2f4b-b544-4e08-8d0d-0771b3df75b3
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:29 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Unauthorized"}
Test Information
NamePassedFailedSkipped
Status 401 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/change-password
Response Information
Response Code: 400 - Bad Request
Mean time per request: 178ms
Mean size per request: 87B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 6209591a-263c-44ea-95fc-f1276d8f35dd
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 118
Request Body
{ "current_password": "Gresita!123", "new_password": "Nou-Pass!2026x", "new_password_confirmation": "Nou-Pass!2026x" }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:29 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"success":false,"message":"Your current password does not matches with the password."}
Test Information
NamePassedFailedSkipped
Status 400 1 0 0
success = false 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/login
Response Information
Response Code: 200 - OK
Mean time per request: 157ms
Mean size per request: 429B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token bf814a66-188f-4d2d-95e5-9dd386bf166d
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 91
Request Body
{
          "email": "qa+a-1792245587396@test.local",
          "password": "[password masked]"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:30 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"access_token":"eyJ…[masked]","token_type":"bearer","expires_in":300}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/change-password
Response Information
Response Code: 400 - Bad Request
Mean time per request: 154ms
Mean size per request: 83B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token ea1cd3ea-009c-4b8b-82fe-f778f9ea2064
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 160
Request Body
{ "current_password": "[password masked]", "new_password": "[password masked]", "new_password_confirmation": "[password masked]" }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:30 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"success":false,"message":"New Password cannot be same as your current password."}
Test Information
NamePassedFailedSkipped
Status 400 1 0 0
success = false 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/change-password
Response Information
Response Code: 422 - Unprocessable Content
Mean time per request: 184ms
Mean size per request: 376B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token cee45da6-691f-4738-9bfc-9b250bad27a5
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 118
Request Body
{
          "current_password": "[password masked]",
          "new_password": "abc",
          "new_password_confirmation": "abc"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:30 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"The new password field must be at least 8 characters. (and 3 more errors)","errors":{"new_password":["The new password field must be at least 8 characters.","The new password field must contain at least one uppercase and one lowercase letter.","The new password field must contain at least one symbol.","The new password field must contain at least one number."]}}
Test Information
NamePassedFailedSkipped
Status 422 1 0 0
Validation error on new_password 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/change-password
Response Information
Response Code: 422 - Unprocessable Content
Mean time per request: 176ms
Mean size per request: 351B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token fb0f1850-cc03-4b36-b1bd-b96f5d951c87
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 136
Request Body
{
          "current_password": "[password masked]",
          "new_password": "parolasimpla",
          "new_password_confirmation": "parolasimpla"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:31 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"The new password field must contain at least one uppercase and one lowercase letter. (and 2 more errors)","errors":{"new_password":["The new password field must contain at least one uppercase and one lowercase letter.","The new password field must contain at least one symbol.","The new password field must contain at least one number."]}}
Test Information
NamePassedFailedSkipped
Status 422 1 0 0
Validation error on new_password 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/change-password
Response Information
Response Code: 422 - Unprocessable Content
Mean time per request: 247ms
Mean size per request: 147B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 20bcaafc-d0fd-454a-9070-82738aaef8b3
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 141
Request Body
{
          "current_password": "[password masked]",
          "new_password": "Nou-Pass!2026x",
          "new_password_confirmation": "Alta-Pass!2026y"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:31 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"The new password field confirmation does not match.","errors":{"new_password":["The new password field confirmation does not match."]}}
Test Information
NamePassedFailedSkipped
Status 422 1 0 0
Validation error on new_password 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/login
Response Information
Response Code: 200 - OK
Mean time per request: 153ms
Mean size per request: 429B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 653f4ba9-03cd-421d-aa13-bce3abb9c10e
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 91
Request Body
{
          "email": "qa+a-1792245587396@test.local",
          "password": "[password masked]"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:32 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"access_token":"eyJ…[masked]","token_type":"bearer","expires_in":300}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: PUT
Request URL: http://localhost:8091/users/01m552jz1by17vr3sx9zcb1275
Response Information
Response Code: 200 - OK
Mean time per request: 173ms
Mean size per request: 16B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 1252e868-8bee-4bbb-841f-b9b63b052ad4
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 253
Request Body
{
          "first_name": "QA-Modificat",
          "last_name": "Tester",
          "email": "qa+a-1792245587396@test.local",
          "phone": "0612345678",
          "address": {
            "street": "Teststraat 2",
            "city": "Amsterdam",
            "country": "NL",
            "postal_code": "1011 AB"
          }
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:32 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"success":true}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
success = true 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/users/me
Response Information
Response Code: 200 - OK
Mean time per request: 127ms
Mean size per request: 363B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 9cd7830c-d705-4370-939b-0659d1ac69f3
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:32 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"id":"01m552jz1by17vr3sx9zcb1275","provider":null,"first_name":"QA-Modificat","last_name":"Tester","phone":"0612345678","dob":"1990-01-01","email":"qa+a-1792245587396@test.local","totp_enabled":false,"created_at":"2026-10-17 13:59:55","address":{"street":"Teststraat 2","house_number":null,"city":"Amsterdam","state":null,"country":"NL","postal_code":"1011 AB"}}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
first_name updated 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: PUT
Request URL: http://localhost:8091/users/01m552jz1by17vr3sx9zcb1275
Response Information
Response Code: 403 - Forbidden
Mean time per request: 124ms
Mean size per request: 44B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token f51e1aa8-46b2-4557-a2c9-484817039802
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 272
Request Body
{
          "first_name": "QA-Modificat",
          "last_name": "Tester",
          "email": "qa+a-1792245587396@test.local",
          "phone": "0612345678",
          "address": {
            "street": "Teststraat 2",
            "city": "Amsterdam",
            "country": "NL",
            "postal_code": "1011 AB"
          },
          "role": "admin"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:33 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"error":"Only admins can update the role."}
Test Information
NamePassedFailedSkipped
No server error (5xx) 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: PATCH
Request URL: http://localhost:8091/users/01m552jz1by17vr3sx9zcb1275
Response Information
Response Code: 200 - OK
Mean time per request: 235ms
Mean size per request: 16B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 96bc775d-7b7f-458f-979c-34575d527a72
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 21
Request Body
{
          "role": "admin"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:33 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"success":true}
Test Information
NamePassedFailedSkipped
No server error (5xx) 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/login
Response Information
Response Code: 200 - OK
Mean time per request: 156ms
Mean size per request: 429B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 9512699d-cc8d-46cf-9d3b-ce1ddb66d434
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 91
Request Body
{
          "email": "qa+a-1792245587396@test.local",
          "password": "[password masked]"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:33 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"access_token":"eyJ…[masked]","token_type":"bearer","expires_in":300}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/users
Response Information
Response Code: 403 - Forbidden
Mean time per request: 131ms
Mean size per request: 23B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token dae951bd-97f2-4445-9cd9-3612e3f7c7cb
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:34 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Forbidden"}
Test Information
NamePassedFailedSkipped
Status in [401, 403] 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/carts
Response Information
Response Code: 201 - Created
Mean time per request: 191ms
Mean size per request: 35B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 52e4cce7-9dd6-4c26-9367-34be62412d1a
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 2
Request Body
{}
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:34 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"id":"01m552m5kn0cy18sy8da5rw1p8"}
Test Information
NamePassedFailedSkipped
Status 201 1 0 0
Has id 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/carts/01m552m5kn0cy18sy8da5rw1p8
Response Information
Response Code: 200 - OK
Mean time per request: 113ms
Mean size per request: 34B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 18c1b0db-6f3a-4554-a09e-4b4cba64646b
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 65
Request Body
{
          "product_id": "01M552JH28NG35XD8J04PGAJXN",
          "quantity": 1
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:34 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"result":"item added or updated"}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/carts/01m552m5kn0cy18sy8da5rw1p8
Response Information
Response Code: 200 - OK
Mean time per request: 108ms
Mean size per request: 1.19KB

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 77e6e473-0d29-4302-b654-f678f64b703a
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:35 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"id":"01m552m5kn0cy18sy8da5rw1p8","additional_discount_percentage":null,"lat":null,"lng":null,"cart_items":[{"id":"01m552m5x9fwkqnt0r4zf9ej51","quantity":1,"discount_percentage":null,"cart_id":"01m552m5kn0cy18sy8da5rw1p8","product_id":"01M552JH28NG35XD8J04PGAJXN","product":{"id":"01M552JH28NG35XD8J04PGAJXN","name":"Combination Pliers","description":"Versatile combination pliers designed for gripping, bending, and cutting wire with ease. Featuring chrome vanadium steel construction with induction-hardened cutting edges, these pliers deliver excellent grip and leverage for a wide range of tasks. The precision-machined jaws combine flat gripping surfaces with a pipe-grip section and integrated wire cutter for true multi-purpose functionality. Ergonomic bi-component handles reduce hand fatigue during extended use and provide a secure hold even with oily or gloved hands. The joint is precisely fitted to eliminate play and ensure smooth operation over thousands of cycles. Ideal for electricians, mechanics, and DIY enthusiasts tackling everyday projects around the workshop or job site.","price":14.15,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false}}]}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Single line for the product 1 0 0
Quantity 1 1 0 0
Total 3 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/carts/01m552m5kn0cy18sy8da5rw1p8
Response Information
Response Code: 200 - OK
Mean time per request: 111ms
Mean size per request: 34B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token d127e3bb-0a11-498a-b32c-b6aef699a81b
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 65
Request Body
{
          "product_id": "01M552JH28NG35XD8J04PGAJXN",
          "quantity": 1
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:35 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"result":"item added or updated"}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/carts/01m552m5kn0cy18sy8da5rw1p8
Response Information
Response Code: 200 - OK
Mean time per request: 107ms
Mean size per request: 1.19KB

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 10405586-a95f-4b68-88c3-ff93e4299911
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:35 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"id":"01m552m5kn0cy18sy8da5rw1p8","additional_discount_percentage":null,"lat":null,"lng":null,"cart_items":[{"id":"01m552m5x9fwkqnt0r4zf9ej51","quantity":2,"discount_percentage":null,"cart_id":"01m552m5kn0cy18sy8da5rw1p8","product_id":"01M552JH28NG35XD8J04PGAJXN","product":{"id":"01M552JH28NG35XD8J04PGAJXN","name":"Combination Pliers","description":"Versatile combination pliers designed for gripping, bending, and cutting wire with ease. Featuring chrome vanadium steel construction with induction-hardened cutting edges, these pliers deliver excellent grip and leverage for a wide range of tasks. The precision-machined jaws combine flat gripping surfaces with a pipe-grip section and integrated wire cutter for true multi-purpose functionality. Ergonomic bi-component handles reduce hand fatigue during extended use and provide a secure hold even with oily or gloved hands. The joint is precisely fitted to eliminate play and ensure smooth operation over thousands of cycles. Ideal for electricians, mechanics, and DIY enthusiasts tackling everyday projects around the workshop or job site.","price":14.15,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false}}]}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
No duplicate line 1 0 0
Quantity 2 1 0 0
Total 3 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: PUT
Request URL: http://localhost:8091/carts/01m552m5kn0cy18sy8da5rw1p8/product/quantity
Response Information
Response Code: 200 - OK
Mean time per request: 109ms
Mean size per request: 34B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 2e7ab1b9-ee9a-4b72-a9cd-7f68838d7468
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 65
Request Body
{
          "product_id": "01M552JH28NG35XD8J04PGAJXN",
          "quantity": 5
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:36 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"result":"item added or updated"}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/carts/01m552m5kn0cy18sy8da5rw1p8
Response Information
Response Code: 200 - OK
Mean time per request: 107ms
Mean size per request: 1.19KB

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 22f2679f-3ea2-4d7b-9d2a-6ef87e71222d
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:36 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"id":"01m552m5kn0cy18sy8da5rw1p8","additional_discount_percentage":null,"lat":null,"lng":null,"cart_items":[{"id":"01m552m5x9fwkqnt0r4zf9ej51","quantity":5,"discount_percentage":null,"cart_id":"01m552m5kn0cy18sy8da5rw1p8","product_id":"01M552JH28NG35XD8J04PGAJXN","product":{"id":"01M552JH28NG35XD8J04PGAJXN","name":"Combination Pliers","description":"Versatile combination pliers designed for gripping, bending, and cutting wire with ease. Featuring chrome vanadium steel construction with induction-hardened cutting edges, these pliers deliver excellent grip and leverage for a wide range of tasks. The precision-machined jaws combine flat gripping surfaces with a pipe-grip section and integrated wire cutter for true multi-purpose functionality. Ergonomic bi-component handles reduce hand fatigue during extended use and provide a secure hold even with oily or gloved hands. The joint is precisely fitted to eliminate play and ensure smooth operation over thousands of cycles. Ideal for electricians, mechanics, and DIY enthusiasts tackling everyday projects around the workshop or job site.","price":14.15,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false}}]}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Quantity 5 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/carts/01m552m5kn0cy18sy8da5rw1p8
Response Information
Response Code: 422 - Unprocessable Content
Mean time per request: 117ms
Mean size per request: 117B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 3301bd0a-c918-4bdd-bf0c-7f04468bee69
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 61
Request Body
{ "product_id": "01M552JH28NG35XD8J04PGAJXN", "quantity": 0 }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:36 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"The quantity field must be at least 1.","errors":{"quantity":["The quantity field must be at least 1."]}}
Test Information
NamePassedFailedSkipped
Status 422 1 0 0
Validation error on quantity 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: PUT
Request URL: http://localhost:8091/carts/01m552m5kn0cy18sy8da5rw1p8/product/quantity
Response Information
Response Code: 422 - Unprocessable Content
Mean time per request: 118ms
Mean size per request: 117B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 46fd6304-8d6e-4560-8301-c6c77a9347a5
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 61
Request Body
{ "product_id": "01M552JH28NG35XD8J04PGAJXN", "quantity": 0 }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:37 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"The quantity field must be at least 1.","errors":{"quantity":["The quantity field must be at least 1."]}}
Test Information
NamePassedFailedSkipped
Status 422 1 0 0
Validation error on quantity 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/carts/01m552m5kn0cy18sy8da5rw1p8
Response Information
Response Code: 422 - Unprocessable Content
Mean time per request: 117ms
Mean size per request: 117B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 833c02fe-39ee-41bb-be31-75f2e708596a
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 62
Request Body
{ "product_id": "01M552JH28NG35XD8J04PGAJXN", "quantity": -1 }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:37 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"The quantity field must be at least 1.","errors":{"quantity":["The quantity field must be at least 1."]}}
Test Information
NamePassedFailedSkipped
Status 422 1 0 0
Validation error on quantity 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: PUT
Request URL: http://localhost:8091/carts/01m552m5kn0cy18sy8da5rw1p8/product/quantity
Response Information
Response Code: 422 - Unprocessable Content
Mean time per request: 119ms
Mean size per request: 117B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 613fa121-d7ea-4127-9231-2ffa8782013e
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 62
Request Body
{ "product_id": "01M552JH28NG35XD8J04PGAJXN", "quantity": -1 }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:37 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"The quantity field must be at least 1.","errors":{"quantity":["The quantity field must be at least 1."]}}
Test Information
NamePassedFailedSkipped
Status 422 1 0 0
Validation error on quantity 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/carts/01m552m5kn0cy18sy8da5rw1p8
Response Information
Response Code: 422 - Unprocessable Content
Mean time per request: 115ms
Mean size per request: 135B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 8fa42ad0-b90f-432c-804a-bbb0708bf49c
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 63
Request Body
{ "product_id": "01M552JH28NG35XD8J04PGAJXN", "quantity": 100 }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:38 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"The quantity field must not be greater than 99.","errors":{"quantity":["The quantity field must not be greater than 99."]}}
Test Information
NamePassedFailedSkipped
Status 422 1 0 0
Validation error on quantity 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: PUT
Request URL: http://localhost:8091/carts/01m552m5kn0cy18sy8da5rw1p8/product/quantity
Response Information
Response Code: 422 - Unprocessable Content
Mean time per request: 110ms
Mean size per request: 135B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token aaf0148c-8bf7-4df4-9e76-4245dbfa069d
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 63
Request Body
{ "product_id": "01M552JH28NG35XD8J04PGAJXN", "quantity": 100 }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:38 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"The quantity field must not be greater than 99.","errors":{"quantity":["The quantity field must not be greater than 99."]}}
Test Information
NamePassedFailedSkipped
Status 422 1 0 0
Validation error on quantity 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/carts/01m552m5kn0cy18sy8da5rw1p8
Response Information
Response Code: 422 - Unprocessable Content
Mean time per request: 116ms
Mean size per request: 117B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token dd70f3cb-0432-44f6-ae17-9549e4942a5b
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 65
Request Body
{ "product_id": "01M552JH28NG35XD8J04PGAJXN", "quantity": "abc" }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:38 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"The quantity field must be an integer.","errors":{"quantity":["The quantity field must be an integer."]}}
Test Information
NamePassedFailedSkipped
Status 422 1 0 0
Validation error on quantity 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: PUT
Request URL: http://localhost:8091/carts/01m552m5kn0cy18sy8da5rw1p8/product/quantity
Response Information
Response Code: 422 - Unprocessable Content
Mean time per request: 119ms
Mean size per request: 117B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token d1daef8e-faa4-432e-ad94-14e05dcc7610
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 65
Request Body
{ "product_id": "01M552JH28NG35XD8J04PGAJXN", "quantity": "abc" }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:39 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"The quantity field must be an integer.","errors":{"quantity":["The quantity field must be an integer."]}}
Test Information
NamePassedFailedSkipped
Status 422 1 0 0
Validation error on quantity 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/carts/01m552m5kn0cy18sy8da5rw1p8
Response Information
Response Code: 422 - Unprocessable Content
Mean time per request: 130ms
Mean size per request: 117B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token d19d3e21-ea5f-45cf-b3a2-90fff4054ac9
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 63
Request Body
{ "product_id": "01M552JH28NG35XD8J04PGAJXN", "quantity": 1.5 }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:39 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"The quantity field must be an integer.","errors":{"quantity":["The quantity field must be an integer."]}}
Test Information
NamePassedFailedSkipped
Status 422 1 0 0
Validation error on quantity 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: PUT
Request URL: http://localhost:8091/carts/01m552m5kn0cy18sy8da5rw1p8/product/quantity
Response Information
Response Code: 422 - Unprocessable Content
Mean time per request: 116ms
Mean size per request: 117B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 869cf019-633b-4a1d-b795-0cf1d5f2d145
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 63
Request Body
{ "product_id": "01M552JH28NG35XD8J04PGAJXN", "quantity": 1.5 }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:39 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"The quantity field must be an integer.","errors":{"quantity":["The quantity field must be an integer."]}}
Test Information
NamePassedFailedSkipped
Status 422 1 0 0
Validation error on quantity 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: PUT
Request URL: http://localhost:8091/carts/01m552m5kn0cy18sy8da5rw1p8/product/quantity
Response Information
Response Code: 200 - OK
Mean time per request: 112ms
Mean size per request: 34B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 0fb6c639-219f-49ad-8b6a-a058adf685f2
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 61
Request Body
{ "product_id": "01M552JH28NG35XD8J04PGAJXN", "quantity": 1 }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:40 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"result":"item added or updated"}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: PUT
Request URL: http://localhost:8091/carts/01m552m5kn0cy18sy8da5rw1p8/product/quantity
Response Information
Response Code: 200 - OK
Mean time per request: 110ms
Mean size per request: 34B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 1a806315-db02-4760-80ba-c1a88b3b78ac
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 62
Request Body
{ "product_id": "01M552JH28NG35XD8J04PGAJXN", "quantity": 99 }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:40 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"result":"item added or updated"}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/carts
Response Information
Response Code: 201 - Created
Mean time per request: 106ms
Mean size per request: 35B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 8c905eb1-6180-458e-a74f-7d8f1f2ffac0
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 2
Request Body
{}
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:40 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"id":"01m552mbhx1va8a1f2dwsvwap4"}
Test Information
NamePassedFailedSkipped
Status 201 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/carts/01m552mbhx1va8a1f2dwsvwap4
Response Information
Response Code: 200 - OK
Mean time per request: 109ms
Mean size per request: 34B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 15a05c45-9829-4156-9da3-983857daa807
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 65
Request Body
{
          "product_id": "01M552JH28NG35XD8J04PGAJXN",
          "quantity": 1
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:41 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"result":"item added or updated"}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/carts/01m552mbhx1va8a1f2dwsvwap4
Response Information
Response Code: 200 - OK
Mean time per request: 110ms
Mean size per request: 34B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token b3efd45e-fcfc-4c41-887f-140c514fdedd
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 65
Request Body
{
          "product_id": "01M552JH2AG9122BMKVRF3XH0Z",
          "quantity": 1
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:41 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"result":"item added or updated"}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Response Information
Response Code: 204 - No Content
Mean time per request: 106ms
Mean size per request: 0B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 1725d77a-9559-4bf7-8c4e-30b4749411c1
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:41 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
No Response Body for this request
Test Information
NamePassedFailedSkipped
Status 204 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/carts/01m552mbhx1va8a1f2dwsvwap4
Response Information
Response Code: 200 - OK
Mean time per request: 107ms
Mean size per request: 1.17KB

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 1afdee77-f848-4349-89fc-35a0667e498d
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:42 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"id":"01m552mbhx1va8a1f2dwsvwap4","additional_discount_percentage":null,"lat":null,"lng":null,"cart_items":[{"id":"01m552mc5dnsez6tm6djqcy71h","quantity":1,"discount_percentage":null,"cart_id":"01m552mbhx1va8a1f2dwsvwap4","product_id":"01M552JH2AG9122BMKVRF3XH0Z","product":{"id":"01M552JH2AG9122BMKVRF3XH0Z","name":"Pliers","description":"Reliable general-purpose pliers crafted from drop-forged carbon steel for long-lasting durability in demanding working conditions. The serrated jaws provide a firm grip on a variety of materials including wire, nails, small fasteners, and irregularly shaped objects. Comfortable rubber-coated handles absorb vibration and reduce hand fatigue during extended use, while the non-slip surface ensures confident handling. The precision pivot joint maintains alignment under load, delivering smooth, controlled jaw action with every squeeze. Heat-treated steel construction resists wear and deformation even under heavy use. A must-have foundational tool for any workshop, equally suited for professional tradespeople and home repair projects.","price":12.01,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false}}]}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Only the second product remains 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/carts/01m552m5kn0cy18sy8da5rw1p8
Response Information
Response Code: 200 - OK
Mean time per request: 106ms
Mean size per request: 1.19KB

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 89bf39d2-0dda-4d42-880b-01000f81d9e1
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:42 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"id":"01m552m5kn0cy18sy8da5rw1p8","additional_discount_percentage":null,"lat":null,"lng":null,"cart_items":[{"id":"01m552m5x9fwkqnt0r4zf9ej51","quantity":99,"discount_percentage":null,"cart_id":"01m552m5kn0cy18sy8da5rw1p8","product_id":"01M552JH28NG35XD8J04PGAJXN","product":{"id":"01M552JH28NG35XD8J04PGAJXN","name":"Combination Pliers","description":"Versatile combination pliers designed for gripping, bending, and cutting wire with ease. Featuring chrome vanadium steel construction with induction-hardened cutting edges, these pliers deliver excellent grip and leverage for a wide range of tasks. The precision-machined jaws combine flat gripping surfaces with a pipe-grip section and integrated wire cutter for true multi-purpose functionality. Ergonomic bi-component handles reduce hand fatigue during extended use and provide a secure hold even with oily or gloved hands. The joint is precisely fitted to eliminate play and ensure smooth operation over thousands of cycles. Ideal for electricians, mechanics, and DIY enthusiasts tackling everyday projects around the workshop or job site.","price":14.15,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false}}]}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
cart_items is a list 1 0 0
Each line has product, quantity and price 1 0 0
Total 3 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/carts
Response Information
Response Code: 201 - Created
Mean time per request: 104ms
Mean size per request: 35B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 21fbe162-fc67-4090-840d-d83d05210539
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 2
Request Body
{}
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:42 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"id":"01m552mdc3ejwy55fst2hv5wws"}
Test Information
NamePassedFailedSkipped
Status 201 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/carts/01m552mdc3ejwy55fst2hv5wws
Response Information
Response Code: 200 - OK
Mean time per request: 113ms
Mean size per request: 34B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token cc3e7e22-ce68-4b12-aaf9-5facbad6fdbd
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 65
Request Body
{
          "product_id": "01M552JH28NG35XD8J04PGAJXN",
          "quantity": 2
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:42 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"result":"item added or updated"}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/carts/01m552mdc3ejwy55fst2hv5wws
Response Information
Response Code: 200 - OK
Mean time per request: 114ms
Mean size per request: 34B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token c3a5cba8-1aa7-4b0b-a863-9be4d5ffab36
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 65
Request Body
{
          "product_id": "01M552JH2AG9122BMKVRF3XH0Z",
          "quantity": 3
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:43 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"result":"item added or updated"}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/carts/01m552mdc3ejwy55fst2hv5wws
Response Information
Response Code: 200 - OK
Mean time per request: 104ms
Mean size per request: 2.25KB

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 2f3d9961-5126-4f49-80fd-daace46eec38
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:43 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"id":"01m552mdc3ejwy55fst2hv5wws","additional_discount_percentage":null,"lat":null,"lng":null,"cart_items":[{"id":"01m552mdp035tne7y4n59w5q48","quantity":2,"discount_percentage":null,"cart_id":"01m552mdc3ejwy55fst2hv5wws","product_id":"01M552JH28NG35XD8J04PGAJXN","product":{"id":"01M552JH28NG35XD8J04PGAJXN","name":"Combination Pliers","description":"Versatile combination pliers designed for gripping, bending, and cutting wire with ease. Featuring chrome vanadium steel construction with induction-hardened cutting edges, these pliers deliver excellent grip and leverage for a wide range of tasks. The precision-machined jaws combine flat gripping surfaces with a pipe-grip section and integrated wire cutter for true multi-purpose functionality. Ergonomic bi-component handles reduce hand fatigue during extended use and provide a secure hold even with oily or gloved hands. The joint is precisely fitted to eliminate play and ensure smooth operation over thousands of cycles. Ideal for electricians, mechanics, and DIY enthusiasts tackling everyday projects around the workshop or job site.","price":14.15,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false}},{"id":"01m552me07yg0wgw3wnrq23kth","quantity":3,"discount_percentage":null,"cart_id":"01m552mdc3ejwy55fst2hv5wws","product_id":"01M552JH2AG9122BMKVRF3XH0Z","product":{"id":"01M552JH2AG9122BMKVRF3XH0Z","name":"Pliers","description":"Reliable general-purpose pliers crafted from drop-forged carbon steel for long-lasting durability in demanding working conditions. The serrated jaws provide a firm grip on a variety of materials including wire, nails, small fasteners, and irregularly shaped objects. Comfortable rubber-coated handles absorb vibration and reduce hand fatigue during extended use, while the non-slip surface ensures confident handling. The precision pivot joint maintains alignment under load, delivering smooth, controlled jaw action with every squeeze. Heat-treated steel construction resists wear and deformation even under heavy use. A must-have foundational tool for any workshop, equally suited for professional tradespeople and home repair projects.","price":12.01,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false}}]}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Cart prices = catalog prices 1 0 0
Cart total = calculated total 1 0 0
Total 3 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/carts/01m552m5kn0cy18sy8da5rw1p8
Response Information
Response Code: 422 - Unprocessable Content
Mean time per request: 117ms
Mean size per request: 113B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 70d2108f-1874-4aa4-b822-7371ad782f8e
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 65
Request Body
{
          "product_id": "01AAAAAAAAAAAAAAAAAAAAAAAA",
          "quantity": 1
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:43 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"The selected product id is invalid.","errors":{"product_id":["The selected product id is invalid."]}}
Test Information
NamePassedFailedSkipped
Status 422 1 0 0
Validation error on product_id 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/carts/01m552m5kn0cy18sy8da5rw1p8
Response Information
Response Code: 200 - OK
Mean time per request: 104ms
Mean size per request: 1.19KB

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 7e9587c9-1591-49de-baf5-7d438dcf18d8
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:44 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"id":"01m552m5kn0cy18sy8da5rw1p8","additional_discount_percentage":null,"lat":null,"lng":null,"cart_items":[{"id":"01m552m5x9fwkqnt0r4zf9ej51","quantity":99,"discount_percentage":null,"cart_id":"01m552m5kn0cy18sy8da5rw1p8","product_id":"01M552JH28NG35XD8J04PGAJXN","product":{"id":"01M552JH28NG35XD8J04PGAJXN","name":"Combination Pliers","description":"Versatile combination pliers designed for gripping, bending, and cutting wire with ease. Featuring chrome vanadium steel construction with induction-hardened cutting edges, these pliers deliver excellent grip and leverage for a wide range of tasks. The precision-machined jaws combine flat gripping surfaces with a pipe-grip section and integrated wire cutter for true multi-purpose functionality. Ergonomic bi-component handles reduce hand fatigue during extended use and provide a secure hold even with oily or gloved hands. The joint is precisely fitted to eliminate play and ensure smooth operation over thousands of cycles. Ideal for electricians, mechanics, and DIY enthusiasts tackling everyday projects around the workshop or job site.","price":14.15,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false}}]}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Line was not added 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/carts/01AAAAAAAAAAAAAAAAAAAAAAAA
Response Information
Response Code: 404 - Not Found
Mean time per request: 111ms
Mean size per request: 28B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token f1a51a53-998c-4e5b-8aa6-e27df150e22b
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 65
Request Body
{
          "product_id": "01M552JH28NG35XD8J04PGAJXN",
          "quantity": 1
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:44 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Cart not found"}
Test Information
NamePassedFailedSkipped
Status 404 1 0 0
No internal details in response 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/products/search?q=thor
Response Information
Response Code: 200 - OK
Mean time per request: 147ms
Mean size per request: 1.52KB

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 5f15a70e-2f1b-431e-b038-f66600e560a8
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control max-age=120, public
Date Sat, 17 Oct 2026 14:00:44 GMT
ETag "3e56e8a4a684a8d65ec8c18bf745f7bc"
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"current_page":1,"data":[{"id":"01M552JH2K9QV3KQSQ6ZBBD61D","name":"Thor Hammer","description":"The legendary Thor Hammer combines premium craftsmanship with raw striking power in a tool that is truly built to last generations. Forged from Uru metal with a hand-wrapped leather grip, this extraordinary 5kg masterpiece delivers unmatched impact force for the most demanding demolition, forging, and heavy construction tasks. The perfectly balanced oversized head ensures every swing transfers maximum energy to the target, while the enlarged striking face covers more surface area than any conventional hammer. Despite its impressive mass, the ergonomic handle design and precise weight distribution allow for surprisingly controlled, accurate swings. This is not merely a tool but a statement piece for those who accept nothing less than the absolute best in their workshop. Comes with a lifetime warranty because true legends never fade. Please note: only one Thor Hammer is permitted per customer.","price":11.14,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7T","by_name":"ANIRUDH","by_url":"https:\/\/unsplash.com\/@lanirudhreddy","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/3esjG-nlgyk","file_name":"hammer04.avif","title":"Hammer"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGW9","name":"Hammer"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}}],"from":1,"last_page":1,"per_page":9,"to":1,"total":1}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Thor Hammer found 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/carts
Response Information
Response Code: 201 - Created
Mean time per request: 105ms
Mean size per request: 35B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token f86f1b4d-c78d-4f49-8022-b46d9cb22f5c
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 2
Request Body
{}
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:45 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"id":"01m552mfwcvb2qhx75wnjks7ny"}
Test Information
NamePassedFailedSkipped
Status 201 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/carts/01m552mfwcvb2qhx75wnjks7ny
Response Information
Response Code: 400 - Bad Request
Mean time per request: 109ms
Mean size per request: 60B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 0b2d43f9-b15e-43ce-84d9-278508dc3511
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 65
Request Body
{
          "product_id": "01M552JH2K9QV3KQSQ6ZBBD61D",
          "quantity": 2
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:45 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"You can only have one Thor Hammer in the cart."}
Test Information
NamePassedFailedSkipped
Status 400 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/carts/01m552mfwcvb2qhx75wnjks7ny
Response Information
Response Code: 200 - OK
Mean time per request: 112ms
Mean size per request: 34B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 2d85cd01-1873-4e03-90ae-ba5a7eebe4b3
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 65
Request Body
{
          "product_id": "01M552JH2K9QV3KQSQ6ZBBD61D",
          "quantity": 1
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:45 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"result":"item added or updated"}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/carts/01m552mfwcvb2qhx75wnjks7ny
Response Information
Response Code: 400 - Bad Request
Mean time per request: 110ms
Mean size per request: 60B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token a21fd824-b102-4fa2-bc6f-267faabfbc03
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 65
Request Body
{
          "product_id": "01M552JH2K9QV3KQSQ6ZBBD61D",
          "quantity": 1
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:46 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"You can only have one Thor Hammer in the cart."}
Test Information
NamePassedFailedSkipped
Status 400 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: PUT
Request URL: http://localhost:8091/carts/01m552mfwcvb2qhx75wnjks7ny/product/quantity
Response Information
Response Code: 400 - Bad Request
Mean time per request: 113ms
Mean size per request: 60B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 9b9de2a1-e380-48aa-91fe-9a56a5ce631a
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 65
Request Body
{
          "product_id": "01M552JH2K9QV3KQSQ6ZBBD61D",
          "quantity": 2
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:46 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"You can only have one Thor Hammer in the cart."}
Test Information
NamePassedFailedSkipped
Status 400 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/carts/01m552mfwcvb2qhx75wnjks7ny
Response Information
Response Code: 200 - OK
Mean time per request: 108ms
Mean size per request: 1.34KB

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token fd361a94-1e2c-481a-b3d6-63ff36c4e0c2
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:46 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"id":"01m552mfwcvb2qhx75wnjks7ny","additional_discount_percentage":null,"lat":null,"lng":null,"cart_items":[{"id":"01m552mgg03dqems8hy9xkdfwq","quantity":1,"discount_percentage":null,"cart_id":"01m552mfwcvb2qhx75wnjks7ny","product_id":"01M552JH2K9QV3KQSQ6ZBBD61D","product":{"id":"01M552JH2K9QV3KQSQ6ZBBD61D","name":"Thor Hammer","description":"The legendary Thor Hammer combines premium craftsmanship with raw striking power in a tool that is truly built to last generations. Forged from Uru metal with a hand-wrapped leather grip, this extraordinary 5kg masterpiece delivers unmatched impact force for the most demanding demolition, forging, and heavy construction tasks. The perfectly balanced oversized head ensures every swing transfers maximum energy to the target, while the enlarged striking face covers more surface area than any conventional hammer. Despite its impressive mass, the ergonomic handle design and precise weight distribution allow for surprisingly controlled, accurate swings. This is not merely a tool but a statement piece for those who accept nothing less than the absolute best in their workshop. Comes with a lifetime warranty because true legends never fade. Please note: only one Thor Hammer is permitted per customer.","price":11.14,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false}}]}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
At most one item 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/carts
Response Information
Response Code: 201 - Created
Mean time per request: 107ms
Mean size per request: 35B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 92cdd333-e546-4fea-806b-eaec26f6b43e
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 2
Request Body
{}
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:47 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"id":"01m552mhpm4nmwdpyez1jye9wz"}
Test Information
NamePassedFailedSkipped
Status 201 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: DELETE
Request URL: http://localhost:8091/carts/01m552mhpm4nmwdpyez1jye9wz
Response Information
Response Code: 204 - No Content
Mean time per request: 107ms
Mean size per request: 0B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 4f83b6de-ca7c-43f7-88a7-a05b0b7c32ad
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:47 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
No Response Body for this request
Test Information
NamePassedFailedSkipped
Status 204 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/carts/01m552mhpm4nmwdpyez1jye9wz
Response Information
Response Code: 404 - Not Found
Mean time per request: 103ms
Mean size per request: 38B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 4495ec1b-40a9-44a6-80b1-e08ae827dc71
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:47 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Requested item not found"}
Test Information
NamePassedFailedSkipped
Status 404 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/payment/check
Response Information
Response Code: 200 - OK
Mean time per request: 113ms
Mean size per request: 36B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token f856b735-be93-481f-87a7-f8ca39c9dbe7
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 202
Request Body
{
          "payment_method": "credit-card",
          "payment_details": {
            "credit_card_number": "1111-2222-3333-4444",
            "expiration_date": "12/2030",
            "cvv": "123",
            "card_holder_name": "QA Tester"
          }
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:47 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Payment was successful"}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Payment was successful 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/payment/check
Response Information
Response Code: 422 - Unprocessable Content
Mean time per request: 2.3s
Mean size per request: 193B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token dc06144e-18cd-4449-ba99-f5a49bd48227
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 199
Request Body
{
          "payment_method": "credit-card",
          "payment_details": {
            "credit_card_number": "1111222233334444",
            "expiration_date": "12/2030",
            "cvv": "123",
            "card_holder_name": "QA Tester"
          }
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:50 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"The payment details.credit card number field format is invalid.","errors":{"payment_details.credit_card_number":["The payment details.credit card number field format is invalid."]}}
Test Information
NamePassedFailedSkipped
Status 422 1 0 0
Payment is not confirmed 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/payment/check
Response Information
Response Code: 422 - Unprocessable Content
Mean time per request: 114ms
Mean size per request: 202B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 6a1f6737-a6c0-4769-bb16-54eeb3985dc2
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 202
Request Body
{
          "payment_method": "credit-card",
          "payment_details": {
            "credit_card_number": "1111-2222-3333-4444",
            "expiration_date": "01/2020",
            "cvv": "123",
            "card_holder_name": "QA Tester"
          }
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:50 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"The payment details.expiration date field must be a date after today.","errors":{"payment_details.expiration_date":["The payment details.expiration date field must be a date after today."]}}
Test Information
NamePassedFailedSkipped
Status 422 1 0 0
Payment is not confirmed 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/payment/check
Response Information
Response Code: 422 - Unprocessable Content
Mean time per request: 118ms
Mean size per request: 148B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 728a736e-8650-4256-a7b0-decb1928fbba
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 201
Request Body
{
          "payment_method": "credit-card",
          "payment_details": {
            "credit_card_number": "1111-2222-3333-4444",
            "expiration_date": "12/2030",
            "cvv": "12",
            "card_holder_name": "QA Tester"
          }
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:51 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"The payment details.cvv field format is invalid.","errors":{"payment_details.cvv":["The payment details.cvv field format is invalid."]}}
Test Information
NamePassedFailedSkipped
Status 422 1 0 0
Payment is not confirmed 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/payment/check
Response Information
Response Code: 422 - Unprocessable Content
Mean time per request: 196ms
Mean size per request: 187B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 350a7211-bbfd-42ea-b48f-ad7bf6f12f33
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 198
Request Body
{
          "payment_method": "credit-card",
          "payment_details": {
            "credit_card_number": "1111-2222-3333-4444",
            "expiration_date": "12/2030",
            "cvv": "123",
            "card_holder_name": "QA123"
          }
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:51 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"The payment details.card holder name field format is invalid.","errors":{"payment_details.card_holder_name":["The payment details.card holder name field format is invalid."]}}
Test Information
NamePassedFailedSkipped
Status 422 1 0 0
Payment is not confirmed 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/payment/check
Response Information
Response Code: 200 - OK
Mean time per request: 101ms
Mean size per request: 36B

Test Pass Percentage
0 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token fe9b8da4-82bd-4289-9af6-5f709a2c274d
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 58
Request Body
{
          "payment_method": "bitcoin",
          "payment_details": {}
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:51 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Payment was successful"}
Test Information
NamePassedFailedSkipped
Status 422 0 1 0
Does not confirm payment 0 1 0
Total 0 2 0
Test Failures
Test NameAssertion Error
Status 422
expected response to have status code 422 but got 200
Does not confirm payment
expected '{"message":"Payment was successful"}' to not include 'Payment was successful'
Request Information
Request Method: POST
Request URL: http://localhost:8091/payment/check
Response Information
Response Code: 200 - OK
Mean time per request: 100ms
Mean size per request: 36B

Test Pass Percentage
0 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 614e63e9-7df3-4386-9758-fcf19b930abb
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 2
Request Body
{}
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:52 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Payment was successful"}
Test Information
NamePassedFailedSkipped
Status 422 0 1 0
Does not confirm payment 0 1 0
Total 0 2 0
Test Failures
Test NameAssertion Error
Status 422
expected response to have status code 422 but got 200
Does not confirm payment
expected '{"message":"Payment was successful"}' to not include 'Payment was successful'
Request Information
Request Method: POST
Request URL: http://localhost:8091/payment/check
Response Information
Response Code: 200 - OK
Mean time per request: 99ms
Mean size per request: 36B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 3820a9c7-0c94-4d9f-aaf3-92661f9994ed
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 164
Request Body
{
          "payment_method": "bank-transfer",
          "payment_details": {
            "bank_name": "Test Bank",
            "account_name": "QA Tester",
            "account_number": "123456789"
          }
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:52 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Payment was successful"}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/payment/check
Response Information
Response Code: 200 - OK
Mean time per request: 101ms
Mean size per request: 36B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 9d3c93d6-7b2c-45d6-b8d4-deb64ba32775
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 137
Request Body
{
          "payment_method": "gift-card",
          "payment_details": {
            "gift_card_number": "ABCD1234EFGH5678",
            "validation_code": "AB12"
          }
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:52 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Payment was successful"}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/payment/check
Response Information
Response Code: 200 - OK
Mean time per request: 99ms
Mean size per request: 36B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token e438fdf2-4b2c-4863-ae6e-0e5aec541aaf
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 101
Request Body
{
          "payment_method": "buy-now-pay-later",
          "payment_details": {
            "monthly_installments": 3
          }
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:53 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Payment was successful"}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/payment/check
Response Information
Response Code: 422 - Unprocessable Content
Mean time per request: 116ms
Mean size per request: 181B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 70cf1bd5-32a6-4de9-a4ea-a7b772f05f74
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 159
Request Body
{
          "payment_method": "bank-transfer",
          "payment_details": {
            "bank_name": "Test Bank",
            "account_name": "QA Tester",
            "account_number": "12AB"
          }
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:53 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"The payment details.account number field format is invalid.","errors":{"payment_details.account_number":["The payment details.account number field format is invalid."]}}
Test Information
NamePassedFailedSkipped
Status 422 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/payment/check
Response Information
Response Code: 422 - Unprocessable Content
Mean time per request: 116ms
Mean size per request: 187B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 8fa2222f-dffa-46cb-85ea-d5b544c50519
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 136
Request Body
{
          "payment_method": "gift-card",
          "payment_details": {
            "gift_card_number": "ABCD1234EFGH567",
            "validation_code": "AB12"
          }
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:53 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"The payment details.gift card number field format is invalid.","errors":{"payment_details.gift_card_number":["The payment details.gift card number field format is invalid."]}}
Test Information
NamePassedFailedSkipped
Status 422 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/payment/check
Response Information
Response Code: 422 - Unprocessable Content
Mean time per request: 117ms
Mean size per request: 187B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 609065de-1739-4420-9368-38d4851c393e
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 68
Request Body
{
          "payment_method": "buy-now-pay-later",
          "payment_details": {}
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:54 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"The payment details.monthly installments field is required.","errors":{"payment_details.monthly_installments":["The payment details.monthly installments field is required."]}}
Test Information
NamePassedFailedSkipped
Status 422 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/invoices
Response Information
Response Code: 201 - Created
Mean time per request: 1062ms
Mean size per request: 516B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 4bd48540-5aa2-45ba-9cb0-2aa253233b35
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 272
Request Body
{
          "billing_street": "Teststraat 1",
          "billing_city": "Wezuperbrug",
          "billing_state": "Drenthe",
          "billing_country": "NL",
          "billing_postal_code": "1011 AB",
          "payment_method": "cash-on-delivery",
          "payment_details": {},
          "cart_id": "01m552m5kn0cy18sy8da5rw1p8"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:55 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"billing_street":"Teststraat 1","billing_city":"Wezuperbrug","billing_state":"Drenthe","billing_country":"NL","billing_postal_code":"1011 AB","user_id":"01m552jz1by17vr3sx9zcb1275","invoice_date":"2026-10-17T14:00:55.186154Z","invoice_number":"INV-2026000006","id":"01m552msn8pxbeh77194dfb5kb","created_at":"2026-10-17T14:00:55.000000Z","subtotal":1400.8500000000001,"total":1400.8500000000001,"additional_discount_percentage":null,"additional_discount_amount":0,"eco_discount_percentage":0,"eco_discount_amount":0}
Test Information
NamePassedFailedSkipped
Status 201 2 0 0
Has id and invoice_number 2 0 0
Assigned to user A 2 0 0
Total 6 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/invoices/01m552msn8pxbeh77194dfb5kb
Response Information
Response Code: 200 - OK
Mean time per request: 243ms
Mean size per request: 1.96KB

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 1b47f314-1d51-4544-a595-d6546634f478
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:56 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"id":"01m552msn8pxbeh77194dfb5kb","invoice_date":"2026-10-17 14:00:55","additional_discount_percentage":null,"additional_discount_amount":0,"eco_discount_percentage":0,"eco_discount_amount":0,"invoice_number":"INV-2026000006","billing_street":"Teststraat 1","billing_city":"Wezuperbrug","billing_state":"Drenthe","billing_country":"NL","billing_postal_code":"1011 AB","subtotal":1400.85,"total":1400.85,"status":"AWAITING_FULFILLMENT","status_message":null,"created_at":"2026-10-17T14:00:55.000000Z","user_id":"01m552jz1by17vr3sx9zcb1275","invoicelines":[{"id":"01m552mt5prtepky39mtmwjhch","invoice_id":"01m552msn8pxbeh77194dfb5kb","product_id":"01M552JH28NG35XD8J04PGAJXN","unit_price":14.15,"quantity":99,"discount_percentage":null,"discounted_price":null,"product":{"id":"01M552JH28NG35XD8J04PGAJXN","name":"Combination Pliers","description":"Versatile combination pliers designed for gripping, bending, and cutting wire with ease. Featuring chrome vanadium steel construction with induction-hardened cutting edges, these pliers deliver excellent grip and leverage for a wide range of tasks. The precision-machined jaws combine flat gripping surfaces with a pipe-grip section and integrated wire cutter for true multi-purpose functionality. Ergonomic bi-component handles reduce hand fatigue during extended use and provide a secure hold even with oily or gloved hands. The joint is precisely fitted to eliminate play and ensure smooth operation over thousands of cycles. Ideal for electricians, mechanics, and DIY enthusiasts tackling everyday projects around the workshop or job site.","price":14.15,"co2_rating":"D","is_rental":false,"in_stock":false,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7J","by_name":"Helinton Fantin","by_url":"https:\/\/unsplash.com\/@fantin"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWD","name":"Pliers"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}}}],"payment":{"payment_method":"cash-on-delivery","payment_details":[]}}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Same number of lines as the cart 1 0 0
Same products, quantities and prices 1 0 0
Total 3 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/invoices/01m552msn8pxbeh77194dfb5kb
Response Information
Response Code: 200 - OK
Mean time per request: 331ms
Mean size per request: 1.96KB

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 60e3c6d2-88d9-42c8-a6ba-d9071dcfc2f8
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:56 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"id":"01m552msn8pxbeh77194dfb5kb","invoice_date":"2026-10-17 14:00:55","additional_discount_percentage":null,"additional_discount_amount":0,"eco_discount_percentage":0,"eco_discount_amount":0,"invoice_number":"INV-2026000006","billing_street":"Teststraat 1","billing_city":"Wezuperbrug","billing_state":"Drenthe","billing_country":"NL","billing_postal_code":"1011 AB","subtotal":1400.85,"total":1400.85,"status":"AWAITING_FULFILLMENT","status_message":null,"created_at":"2026-10-17T14:00:55.000000Z","user_id":"01m552jz1by17vr3sx9zcb1275","invoicelines":[{"id":"01m552mt5prtepky39mtmwjhch","invoice_id":"01m552msn8pxbeh77194dfb5kb","product_id":"01M552JH28NG35XD8J04PGAJXN","unit_price":14.15,"quantity":99,"discount_percentage":null,"discounted_price":null,"product":{"id":"01M552JH28NG35XD8J04PGAJXN","name":"Combination Pliers","description":"Versatile combination pliers designed for gripping, bending, and cutting wire with ease. Featuring chrome vanadium steel construction with induction-hardened cutting edges, these pliers deliver excellent grip and leverage for a wide range of tasks. The precision-machined jaws combine flat gripping surfaces with a pipe-grip section and integrated wire cutter for true multi-purpose functionality. Ergonomic bi-component handles reduce hand fatigue during extended use and provide a secure hold even with oily or gloved hands. The joint is precisely fitted to eliminate play and ensure smooth operation over thousands of cycles. Ideal for electricians, mechanics, and DIY enthusiasts tackling everyday projects around the workshop or job site.","price":14.15,"co2_rating":"D","is_rental":false,"in_stock":false,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7J","by_name":"Helinton Fantin","by_url":"https:\/\/unsplash.com\/@fantin"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWD","name":"Pliers"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}}}],"payment":{"payment_method":"cash-on-delivery","payment_details":[]}}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Total = sum of lines 1 0 0
Total = cart total 1 0 0
Total 3 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/invoices
Response Information
Response Code: 422 - Unprocessable Content
Mean time per request: 132ms
Mean size per request: 345B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 800dff9a-4e88-474d-9680-597820932226
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 2
Request Body
{}
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:57 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"payment_method":["The payment method field is required."],"payment_details":["The payment details field must be present."],"billing_street":["The billing street field is required."],"billing_city":["The billing city field is required."],"billing_country":["The billing country field is required."],"cart_id":["The cart id field is required."]}
Test Information
NamePassedFailedSkipped
Status 422 1 0 0
Validation error on billing_street 1 0 0
Validation error on cart_id 1 0 0
Total 3 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/invoices
Response Information
Response Code: 422 - Unprocessable Content
Mean time per request: 218ms
Mean size per request: 60B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token c083822f-12be-4cef-a2e8-8784aa1f3ca4
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 236
Request Body
{
          "billing_city": "Wezuperbrug",
          "billing_state": "Drenthe",
          "billing_country": "NL",
          "billing_postal_code": "1011 AB",
          "payment_method": "cash-on-delivery",
          "payment_details": {},
          "cart_id": "01m552m5kn0cy18sy8da5rw1p8"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:57 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"billing_street":["The billing street field is required."]}
Test Information
NamePassedFailedSkipped
Status 422 1 0 0
Validation error on billing_street 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/invoices
Response Information
Response Code: 422 - Unprocessable Content
Mean time per request: 219ms
Mean size per request: 56B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 57573864-f650-4658-bc29-8e0fa0d58a47
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 239
Request Body
{
          "billing_street": "Teststraat 1",
          "billing_state": "Drenthe",
          "billing_country": "NL",
          "billing_postal_code": "1011 AB",
          "payment_method": "cash-on-delivery",
          "payment_details": {},
          "cart_id": "01m552m5kn0cy18sy8da5rw1p8"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:57 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"billing_city":["The billing city field is required."]}
Test Information
NamePassedFailedSkipped
Status 422 1 0 0
Validation error on billing_city 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/invoices
Response Information
Response Code: 422 - Unprocessable Content
Mean time per request: 185ms
Mean size per request: 62B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 34dc1aec-4f42-4d8b-a81b-384ddbc5578a
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 245
Request Body
{
          "billing_street": "Teststraat 1",
          "billing_city": "Wezuperbrug",
          "billing_state": "Drenthe",
          "billing_postal_code": "1011 AB",
          "payment_method": "cash-on-delivery",
          "payment_details": {},
          "cart_id": "01m552m5kn0cy18sy8da5rw1p8"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:58 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"billing_country":["The billing country field is required."]}
Test Information
NamePassedFailedSkipped
Status 422 1 0 0
Validation error on billing_country 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/invoices
Response Information
Response Code: 422 - Unprocessable Content
Mean time per request: 218ms
Mean size per request: 46B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token e9bd6d9a-050c-4e18-ad09-f347bd8e6af3
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 229
Request Body
{
          "billing_street": "Teststraat 1",
          "billing_city": "Wezuperbrug",
          "billing_state": "Drenthe",
          "billing_country": "NL",
          "billing_postal_code": "1011 AB",
          "payment_method": "cash-on-delivery",
          "payment_details": {}
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:58 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"cart_id":["The cart id field is required."]}
Test Information
NamePassedFailedSkipped
Status 422 1 0 0
Validation error on cart_id 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/invoices
Response Information
Response Code: 422 - Unprocessable Content
Mean time per request: 218ms
Mean size per request: 66B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token ef430973-f5e8-405e-9298-ea0936a0f86b
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 247
Request Body
{
          "billing_street": "Teststraat 1",
          "billing_city": "Wezuperbrug",
          "billing_state": "Drenthe",
          "billing_country": "NL",
          "billing_postal_code": "1011 AB",
          "payment_method": "cash-on-delivery",
          "cart_id": "01m552m5kn0cy18sy8da5rw1p8"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:59 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"payment_details":["The payment details field must be present."]}
Test Information
NamePassedFailedSkipped
Status 422 1 0 0
Validation error on payment_details 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/postcode-lookup?country=NL&postcode=1011%20AB
Response Information
Response Code: 200 - OK
Mean time per request: 193ms
Mean size per request: 119B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token e87ca047-da66-4037-8a36-d9bb44076f25
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:59 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"street":"Bozkurtweg","house_number":"218","city":"Wezuperbrug","state":"Drenthe","country":"NL","postcode":"1011 AB"}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
City returned 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/invoices
Response Information
Response Code: 422 - Unprocessable Content
Mean time per request: 130ms
Mean size per request: 141B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 18d5e5cb-faa3-4da9-91a0-d6b28e2703bf
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 270
Request Body
{
          "billing_street": "Teststraat 1",
          "billing_city": "Wezuperbrug",
          "billing_state": "Drenthe",
          "billing_country": "NL",
          "billing_postal_code": "12345",
          "payment_method": "cash-on-delivery",
          "payment_details": {},
          "cart_id": "01m552m5kn0cy18sy8da5rw1p8"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:00:59 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"billing_country":["The billing_country does not match the entered address. The postal code format is not valid for the selected country."]}
Test Information
NamePassedFailedSkipped
Status 422 1 0 0
Validation error on billing_country 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/invoices
Response Information
Response Code: 422 - Unprocessable Content
Mean time per request: 552ms
Mean size per request: 129B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token d4212567-9d1c-4ac0-9602-25ecaaa80b99
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 266
Request Body
{
          "billing_street": "Teststraat 1",
          "billing_city": "Paris",
          "billing_state": "Drenthe",
          "billing_country": "NL",
          "billing_postal_code": "1011 AB",
          "payment_method": "cash-on-delivery",
          "payment_details": {},
          "cart_id": "01m552m5kn0cy18sy8da5rw1p8"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:00 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"billing_country":["The billing_country does not match the entered address. The city does not belong to the selected country."]}
Test Information
NamePassedFailedSkipped
Status 422 1 0 0
Validation error on billing_country 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/carts
Response Information
Response Code: 201 - Created
Mean time per request: 122ms
Mean size per request: 35B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 6dbcf3a6-eed1-4fd6-a4a5-69113860741b
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 2
Request Body
{}
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:01 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"id":"01m552mzb5hymbpkmvffe6nsdg"}
Test Information
NamePassedFailedSkipped
Status 201 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/carts/01m552mzb5hymbpkmvffe6nsdg
Response Information
Response Code: 200 - OK
Mean time per request: 209ms
Mean size per request: 34B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 777ff462-6f33-4a45-a949-f7397971e492
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 65
Request Body
{
          "product_id": "01M552JH28NG35XD8J04PGAJXN",
          "quantity": 1
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:01 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"result":"item added or updated"}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/invoices/guest
Response Information
Response Code: 201 - Created
Mean time per request: 436ms
Mean size per request: 466B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token a9e8dcc7-0121-455f-ab0b-1cc6be67ad1c
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 381
Request Body
{
          "billing_street": "Teststraat 1",
          "billing_city": "Wezuperbrug",
          "billing_state": "Drenthe",
          "billing_country": "NL",
          "billing_postal_code": "1011 AB",
          "payment_method": "cash-on-delivery",
          "payment_details": {},
          "cart_id": "01m552mzb5hymbpkmvffe6nsdg",
          "guest_email": "guest+1792245587396@test.local",
          "guest_first_name": "Guest",
          "guest_last_name": "QA"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:02 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"billing_street":"Teststraat 1","billing_city":"Wezuperbrug","billing_state":"Drenthe","billing_country":"NL","billing_postal_code":"1011 AB","user_id":null,"invoice_date":"2026-10-17T14:01:01.968478Z","invoice_number":"INV-2026000007","id":"01m552n08rzd9qm9ck073tnjxq","created_at":"2026-10-17T14:01:01.000000Z","subtotal":14.15,"total":14.15,"additional_discount_percentage":null,"additional_discount_amount":0,"eco_discount_percentage":0,"eco_discount_amount":0}
Test Information
NamePassedFailedSkipped
Status 201 1 0 0
No user_id 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/invoices/guest
Response Information
Response Code: 422 - Unprocessable Content
Mean time per request: 196ms
Mean size per request: 112B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 25582b39-0e28-4b4f-a3f6-db965b34c75c
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 330
Request Body
{
          "billing_street": "Teststraat 1",
          "billing_city": "Wezuperbrug",
          "billing_state": "Drenthe",
          "billing_country": "NL",
          "billing_postal_code": "1011 AB",
          "payment_method": "cash-on-delivery",
          "payment_details": {},
          "cart_id": "01m552mzb5hymbpkmvffe6nsdg",
          "guest_first_name": "Guest",
          "guest_last_name": "QA"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:02 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"The guest email field is required.","errors":{"guest_email":["The guest email field is required."]}}
Test Information
NamePassedFailedSkipped
Status 422 1 0 0
Validation error on guest_email 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/invoices
Response Information
Response Code: 404 - Not Found
Mean time per request: 235ms
Mean size per request: 38B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token d8264dd2-b0e6-439f-b5f7-03cd01eaaf66
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 272
Request Body
{
          "billing_street": "Teststraat 1",
          "billing_city": "Wezuperbrug",
          "billing_state": "Drenthe",
          "billing_country": "NL",
          "billing_postal_code": "1011 AB",
          "payment_method": "cash-on-delivery",
          "payment_details": {},
          "cart_id": "01AAAAAAAAAAAAAAAAAAAAAAAA"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:02 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Requested item not found"}
Test Information
NamePassedFailedSkipped
Status in [404, 422] 1 0 0
No internal details in response 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/carts
Response Information
Response Code: 201 - Created
Mean time per request: 106ms
Mean size per request: 35B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 1701f8e4-d98e-410f-94fd-2812ef6106fb
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 2
Request Body
{}
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:03 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"id":"01m552n1g4xw4mknqkgas61k4a"}
Test Information
NamePassedFailedSkipped
Status 201 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/invoices
Response Information
Response Code: 201 - Created
Mean time per request: 257ms
Mean size per request: 482B

Test Pass Percentage
50 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token c748180a-300b-4951-98f1-2decc4706f87
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 272
Request Body
{
          "billing_street": "Teststraat 1",
          "billing_city": "Wezuperbrug",
          "billing_state": "Drenthe",
          "billing_country": "NL",
          "billing_postal_code": "1011 AB",
          "payment_method": "cash-on-delivery",
          "payment_details": {},
          "cart_id": "01m552n1g4xw4mknqkgas61k4a"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:03 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"billing_street":"Teststraat 1","billing_city":"Wezuperbrug","billing_state":"Drenthe","billing_country":"NL","billing_postal_code":"1011 AB","user_id":"01m552jz1by17vr3sx9zcb1275","invoice_date":"2026-10-17T14:01:03.658890Z","invoice_number":"INV-2026000009","id":"01m552n1xetfjdmzm1xg896wts","created_at":"2026-10-17T14:01:03.000000Z","subtotal":0,"total":0,"additional_discount_percentage":null,"additional_discount_amount":0,"eco_discount_percentage":0,"eco_discount_amount":0}
Test Information
NamePassedFailedSkipped
Status in [404, 422] 0 1 0
No internal details in response 1 0 0
Total 1 1 0
Test Failure
Test NameAssertion Error
Status in [404, 422]
expected 201 to be one of [ 404, 422 ]
Request Information
Request Method: GET
Request URL: http://localhost:8091/invoices
Response Information
Response Code: 200 - OK
Mean time per request: 219ms
Mean size per request: 3.14KB

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 4fcae6ef-cbeb-4eab-87d8-6281b340ac55
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:04 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"current_page":1,"data":[{"id":"01m552n1xetfjdmzm1xg896wts","user_id":"01m552jz1by17vr3sx9zcb1275","invoice_number":"INV-2026000009","invoice_date":"2026-10-17 14:01:03","status":"AWAITING_FULFILLMENT","total":0,"subtotal":0,"billing_street":"Teststraat 1","billing_city":"Wezuperbrug","billing_state":"Drenthe","billing_country":"NL","billing_postal_code":"1011 AB","additional_discount_percentage":null,"additional_discount_amount":0,"invoicelines":[],"payment":{"payment_method":"cash-on-delivery"}},{"id":"01m552n164dcx8f6tdemm1sqj8","user_id":"01m552jz1by17vr3sx9zcb1275","invoice_number":"INV-2026000008","invoice_date":"2026-10-17 14:01:02","status":"AWAITING_FULFILLMENT","total":null,"subtotal":null,"billing_street":"Teststraat 1","billing_city":"Wezuperbrug","billing_state":"Drenthe","billing_country":"NL","billing_postal_code":"1011 AB","additional_discount_percentage":null,"additional_discount_amount":null,"invoicelines":[],"payment":null},{"id":"01m552msn8pxbeh77194dfb5kb","user_id":"01m552jz1by17vr3sx9zcb1275","invoice_number":"INV-2026000006","invoice_date":"2026-10-17 14:00:55","status":"AWAITING_FULFILLMENT","total":1400.85,"subtotal":1400.85,"billing_street":"Teststraat 1","billing_city":"Wezuperbrug","billing_state":"Drenthe","billing_country":"NL","billing_postal_code":"1011 AB","additional_discount_percentage":null,"additional_discount_amount":0,"invoicelines":[{"id":"01m552mt5prtepky39mtmwjhch","invoice_id":"01m552msn8pxbeh77194dfb5kb","product_id":"01M552JH28NG35XD8J04PGAJXN","unit_price":14.15,"quantity":99,"discount_percentage":null,"discounted_price":null,"product":{"id":"01M552JH28NG35XD8J04PGAJXN","name":"Combination Pliers","price":14.15,"co2_rating":"D","in_stock":false,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7J","by_name":"Helinton Fantin","by_url":"https:\/\/unsplash.com\/@fantin","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/W8BNwvOvW4M","file_name":"pliers01.avif","title":"Combination pliers"}}}],"payment":{"payment_method":"cash-on-delivery"}},{"id":"01m552k3yvjyfr0ae67a69ct0f","user_id":"01m552jz1by17vr3sx9zcb1275","invoice_number":"INV-2026000004","invoice_date":"2026-10-17 14:00:00","status":"AWAITING_FULFILLMENT","total":14.15,"subtotal":14.15,"billing_street":"Teststraat 1","billing_city":"Wezuperbrug","billing_state":"Drenthe","billing_country":"NL","billing_postal_code":"1011 AB","additional_discount_percentage":null,"additional_discount_amount":0,"invoicelines":[{"id":"01m552k41mmx39s834ppnkwyxf","invoice_id":"01m552k3yvjyfr0ae67a69ct0f","product_id":"01M552JH28NG35XD8J04PGAJXN","unit_price":14.15,"quantity":1,"discount_percentage":null,"discounted_price":null,"product":{"id":"01M552JH28NG35XD8J04PGAJXN","name":"Combination Pliers","price":14.15,"co2_rating":"D","in_stock":false,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7J","by_name":"Helinton Fantin","by_url":"https:\/\/unsplash.com\/@fantin","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/W8BNwvOvW4M","file_name":"pliers01.avif","title":"Combination pliers"}}}],"payment":{"payment_method":"cash-on-delivery"}}],"from":1,"last_page":1,"per_page":15,"to":4,"total":4}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
All invoices belong to A 1 0 0
B's invoice is missing 1 0 0
Total 3 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/invoices/INV-2026000006/download-pdf-status
Response Information
Response Code: 400 - Bad Request
Mean time per request: 141ms
Mean size per request: 26B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token b0b0beee-90e1-4c87-9233-c535c7a18d08
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:04 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"status":"NOT_INITIATED"}
Test Information
NamePassedFailedSkipped
Status in [200, 400] 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/invoices/INV-2026000006/download-pdf
Response Information
Response Code: 404 - Not Found
Mean time per request: 309ms
Mean size per request: 52B

Test Pass Percentage
33 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token bad98e7f-ff38-4410-822f-07889eadd26a
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:04 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Document not created. Try again later."}
Test Information
NamePassedFailedSkipped
Status 200 0 1 0
Content-Type PDF 0 1 0
File is not empty 1 0 0
Total 1 2 0
Test Failures
Test NameAssertion Error
Status 200
expected response to have status code 200 but got 404
Content-Type PDF
expected 'application/json' to include 'application/pdf'
Request Information
Request Method: GET
Request URL: http://localhost:8091/invoices/search?q=INV-2026000005
Response Information
Response Code: 200 - OK
Mean time per request: 162ms
Mean size per request: 88B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token cd0b7748-9f56-4ce1-9281-1815d5b3b9c2
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:05 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"current_page":1,"data":[],"from":null,"last_page":1,"per_page":15,"to":null,"total":0}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
No results 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: PUT
Request URL: http://localhost:8091/invoices/01m552msn8pxbeh77194dfb5kb/status
Response Information
Response Code: 200 - OK
Mean time per request: 159ms
Mean size per request: 16B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 9a55939f-668c-42d5-853f-bdbec60fa014
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 58
Request Body
{ "status": "SHIPPED", "status_message": "Order shipped" }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:05 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"success":true}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
success = true 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/invoices/01m552msn8pxbeh77194dfb5kb
Response Information
Response Code: 200 - OK
Mean time per request: 166ms
Mean size per request: 1.96KB

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 5dc20e8a-2024-46af-844b-22913fe1f02e
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:06 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"id":"01m552msn8pxbeh77194dfb5kb","invoice_date":"2026-10-17 14:00:55","additional_discount_percentage":null,"additional_discount_amount":0,"eco_discount_percentage":0,"eco_discount_amount":0,"invoice_number":"INV-2026000006","billing_street":"Teststraat 1","billing_city":"Wezuperbrug","billing_state":"Drenthe","billing_country":"NL","billing_postal_code":"1011 AB","subtotal":1400.85,"total":1400.85,"status":"SHIPPED","status_message":"Order shipped","created_at":"2026-10-17T14:00:55.000000Z","user_id":"01m552jz1by17vr3sx9zcb1275","invoicelines":[{"id":"01m552mt5prtepky39mtmwjhch","invoice_id":"01m552msn8pxbeh77194dfb5kb","product_id":"01M552JH28NG35XD8J04PGAJXN","unit_price":14.15,"quantity":99,"discount_percentage":null,"discounted_price":null,"product":{"id":"01M552JH28NG35XD8J04PGAJXN","name":"Combination Pliers","description":"Versatile combination pliers designed for gripping, bending, and cutting wire with ease. Featuring chrome vanadium steel construction with induction-hardened cutting edges, these pliers deliver excellent grip and leverage for a wide range of tasks. The precision-machined jaws combine flat gripping surfaces with a pipe-grip section and integrated wire cutter for true multi-purpose functionality. Ergonomic bi-component handles reduce hand fatigue during extended use and provide a secure hold even with oily or gloved hands. The joint is precisely fitted to eliminate play and ensure smooth operation over thousands of cycles. Ideal for electricians, mechanics, and DIY enthusiasts tackling everyday projects around the workshop or job site.","price":14.15,"co2_rating":"D","is_rental":false,"in_stock":false,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7J","by_name":"Helinton Fantin","by_url":"https:\/\/unsplash.com\/@fantin"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWD","name":"Pliers"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}}}],"payment":{"payment_method":"cash-on-delivery","payment_details":[]}}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Status SHIPPED 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: PUT
Request URL: http://localhost:8091/invoices/01m552msn8pxbeh77194dfb5kb/status
Response Information
Response Code: 422 - Unprocessable Content
Mean time per request: 136ms
Mean size per request: 101B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token a26c2b43-5fc2-46c0-a3ef-1c0323a08a44
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 22
Request Body
{
          "status": "LOST"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:06 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"The selected status is invalid.","errors":{"status":["The selected status is invalid."]}}
Test Information
NamePassedFailedSkipped
Status 422 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: PUT
Request URL: http://localhost:8091/invoices/01m552msn8pxbeh77194dfb5kb/status
Response Information
Response Code: 422 - Unprocessable Content
Mean time per request: 133ms
Mean size per request: 169B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token fd634cf1-6a5d-4797-a205-3a2bf406ddb7
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 52
Request Body
{
          "status": "SHIPPED",
          "status_message": "abc"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:06 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"The status message field must be between 5 and 50 characters.","errors":{"status_message":["The status message field must be between 5 and 50 characters."]}}
Test Information
NamePassedFailedSkipped
Status 422 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: PUT
Request URL: http://localhost:8091/invoices/01m552msn8pxbeh77194dfb5kb/status
Response Information
Response Code: 422 - Unprocessable Content
Mean time per request: 137ms
Mean size per request: 169B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 4a594081-b7f3-4d07-95e9-92c90b609558
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 100
Request Body
{
          "status": "SHIPPED",
          "status_message": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:07 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"The status message field must be between 5 and 50 characters.","errors":{"status_message":["The status message field must be between 5 and 50 characters."]}}
Test Information
NamePassedFailedSkipped
Status 422 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: PUT
Request URL: http://localhost:8091/invoices/01m552msn8pxbeh77194dfb5kb/status
Response Information
Response Code: 200 - OK
Mean time per request: 161ms
Mean size per request: 16B

Test Pass Percentage
0 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token c0ac990f-6841-426e-81cc-7ce09f6a3876
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 25
Request Body
{ "status": "COMPLETED" }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:07 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"success":true}
Test Information
NamePassedFailedSkipped
Status 403 0 1 0
Total 0 1 0
Test Failure
Test NameAssertion Error
Status 403
expected response to have status code 403 but got 200
Request Information
Request Method: PUT
Request URL: http://localhost:8091/invoices/01m552msn8pxbeh77194dfb5kb/status
Response Information
Response Code: 404 - Not Found
Mean time per request: 120ms
Mean size per request: 31B

Test Pass Percentage
0 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 95c3b632-2387-4414-9a3f-1b9747de349d
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 25
Request Body
{ "status": "COMPLETED" }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:07 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Invoice not found"}
Test Information
NamePassedFailedSkipped
Status 403 0 1 0
Total 0 1 0
Test Failure
Test NameAssertion Error
Status 403
expected response to have status code 403 but got 404
Request Information
Request Method: GET
Request URL: http://localhost:8091/invoices/01m552msn8pxbeh77194dfb5kb
Response Information
Response Code: 200 - OK
Mean time per request: 130ms
Mean size per request: 1.96KB

Test Pass Percentage
50 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token cd393370-3512-4fdc-b298-5620de859ace
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:08 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"id":"01m552msn8pxbeh77194dfb5kb","invoice_date":"2026-10-17 14:00:55","additional_discount_percentage":null,"additional_discount_amount":0,"eco_discount_percentage":0,"eco_discount_amount":0,"invoice_number":"INV-2026000006","billing_street":"Teststraat 1","billing_city":"Wezuperbrug","billing_state":"Drenthe","billing_country":"NL","billing_postal_code":"1011 AB","subtotal":1400.85,"total":1400.85,"status":"COMPLETED","status_message":"Order shipped","created_at":"2026-10-17T14:00:55.000000Z","user_id":"01m552jz1by17vr3sx9zcb1275","invoicelines":[{"id":"01m552mt5prtepky39mtmwjhch","invoice_id":"01m552msn8pxbeh77194dfb5kb","product_id":"01M552JH28NG35XD8J04PGAJXN","unit_price":14.15,"quantity":99,"discount_percentage":null,"discounted_price":null,"product":{"id":"01M552JH28NG35XD8J04PGAJXN","name":"Combination Pliers","description":"Versatile combination pliers designed for gripping, bending, and cutting wire with ease. Featuring chrome vanadium steel construction with induction-hardened cutting edges, these pliers deliver excellent grip and leverage for a wide range of tasks. The precision-machined jaws combine flat gripping surfaces with a pipe-grip section and integrated wire cutter for true multi-purpose functionality. Ergonomic bi-component handles reduce hand fatigue during extended use and provide a secure hold even with oily or gloved hands. The joint is precisely fitted to eliminate play and ensure smooth operation over thousands of cycles. Ideal for electricians, mechanics, and DIY enthusiasts tackling everyday projects around the workshop or job site.","price":14.15,"co2_rating":"D","is_rental":false,"in_stock":null,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7J","by_name":"Helinton Fantin","by_url":"https:\/\/unsplash.com\/@fantin"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWD","name":"Pliers"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}}}],"payment":{"payment_method":"cash-on-delivery","payment_details":[]}}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Status is not COMPLETED 0 1 0
Total 1 1 0
Test Failure
Test NameAssertion Error
Status is not COMPLETED
expected 'COMPLETED' to not deeply equal 'COMPLETED'
Request Information
Request Method: POST
Request URL: http://localhost:8091/favorites
Response Information
Response Code: 201 - Created
Mean time per request: 272ms
Mean size per request: 116B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 58680700-f263-4575-acba-9ab616cd5e69
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 46
Request Body
{ "product_id": "01M552JH28NG35XD8J04PGAJXN" }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:08 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"product_id":"01M552JH28NG35XD8J04PGAJXN","user_id":"01m552jz1by17vr3sx9zcb1275","id":"01m552n6pqq6shecbw6zfbprcf"}
Test Information
NamePassedFailedSkipped
Status 201 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/favorites
Response Information
Response Code: 200 - OK
Mean time per request: 149ms
Mean size per request: 1.3KB

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 98f54b1d-5518-41f7-85ac-6b6086fdcb4e
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:08 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
[{"id":"01m552n6pqq6shecbw6zfbprcf","user_id":"01m552jz1by17vr3sx9zcb1275","product_id":"01M552JH28NG35XD8J04PGAJXN","product":{"id":"01M552JH28NG35XD8J04PGAJXN","name":"Combination Pliers","description":"Versatile combination pliers designed for gripping, bending, and cutting wire with ease. Featuring chrome vanadium steel construction with induction-hardened cutting edges, these pliers deliver excellent grip and leverage for a wide range of tasks. The precision-machined jaws combine flat gripping surfaces with a pipe-grip section and integrated wire cutter for true multi-purpose functionality. Ergonomic bi-component handles reduce hand fatigue during extended use and provide a secure hold even with oily or gloved hands. The joint is precisely fitted to eliminate play and ensure smooth operation over thousands of cycles. Ideal for electricians, mechanics, and DIY enthusiasts tackling everyday projects around the workshop or job site.","price":14.15,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7J","by_name":"Helinton Fantin","by_url":"https:\/\/unsplash.com\/@fantin","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/W8BNwvOvW4M","file_name":"pliers01.avif","title":"Combination pliers"}}}]
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Contains the product 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/favorites
Response Information
Response Code: 201 - Created
Mean time per request: 151ms
Mean size per request: 116B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 48c6cd99-1590-4779-b50f-1a2ea857ee5a
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 48
Request Body
{
          "product_id": "01M552JH2AG9122BMKVRF3XH0Z"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:09 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"product_id":"01M552JH2AG9122BMKVRF3XH0Z","user_id":"01m552k0pjeydtzqfwz44279eb","id":"01m552n7d74hymwrkwdyh8qgxr"}
Test Information
NamePassedFailedSkipped
Status 201 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/favorites
Response Information
Response Code: 200 - OK
Mean time per request: 150ms
Mean size per request: 1.3KB

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 0b9ea29f-34c9-46eb-a24d-6a836d904a45
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:09 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
[{"id":"01m552n6pqq6shecbw6zfbprcf","user_id":"01m552jz1by17vr3sx9zcb1275","product_id":"01M552JH28NG35XD8J04PGAJXN","product":{"id":"01M552JH28NG35XD8J04PGAJXN","name":"Combination Pliers","description":"Versatile combination pliers designed for gripping, bending, and cutting wire with ease. Featuring chrome vanadium steel construction with induction-hardened cutting edges, these pliers deliver excellent grip and leverage for a wide range of tasks. The precision-machined jaws combine flat gripping surfaces with a pipe-grip section and integrated wire cutter for true multi-purpose functionality. Ergonomic bi-component handles reduce hand fatigue during extended use and provide a secure hold even with oily or gloved hands. The joint is precisely fitted to eliminate play and ensure smooth operation over thousands of cycles. Ideal for electricians, mechanics, and DIY enthusiasts tackling everyday projects around the workshop or job site.","price":14.15,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7J","by_name":"Helinton Fantin","by_url":"https:\/\/unsplash.com\/@fantin","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/W8BNwvOvW4M","file_name":"pliers01.avif","title":"Combination pliers"}}}]
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Only A's favorites 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/favorites
Response Information
Response Code: 200 - OK
Mean time per request: 149ms
Mean size per request: 1.27KB

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 79baa3d3-b591-45ed-b87e-a70b58e2a1f7
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:10 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
[{"id":"01m552n7d74hymwrkwdyh8qgxr","user_id":"01m552k0pjeydtzqfwz44279eb","product_id":"01M552JH2AG9122BMKVRF3XH0Z","product":{"id":"01M552JH2AG9122BMKVRF3XH0Z","name":"Pliers","description":"Reliable general-purpose pliers crafted from drop-forged carbon steel for long-lasting durability in demanding working conditions. The serrated jaws provide a firm grip on a variety of materials including wire, nails, small fasteners, and irregularly shaped objects. Comfortable rubber-coated handles absorb vibration and reduce hand fatigue during extended use, while the non-slip surface ensures confident handling. The precision pivot joint maintains alignment under load, delivering smooth, controlled jaw action with every squeeze. Heat-treated steel construction resists wear and deformation even under heavy use. A must-have foundational tool for any workshop, equally suited for professional tradespeople and home repair projects.","price":12.01,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7K","by_name":"Everyday basics","by_url":"https:\/\/unsplash.com\/@zanardi","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/I8eTuMmxIfo","file_name":"pliers02.avif","title":"Pliers"}}}]
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Only B's favorites 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/favorites
Response Information
Response Code: 409 - Conflict
Mean time per request: 213ms
Mean size per request: 29B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 8b6f936e-0983-4ead-9b85-a4c80c78e61d
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 48
Request Body
{
          "product_id": "01M552JH28NG35XD8J04PGAJXN"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:10 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Duplicate Entry"}
Test Information
NamePassedFailedSkipped
No server error (5xx) 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/favorites
Response Information
Response Code: 200 - OK
Mean time per request: 148ms
Mean size per request: 1.3KB

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token a274edda-bc72-4063-bc5d-63f5619f235f
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:10 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
[{"id":"01m552n6pqq6shecbw6zfbprcf","user_id":"01m552jz1by17vr3sx9zcb1275","product_id":"01M552JH28NG35XD8J04PGAJXN","product":{"id":"01M552JH28NG35XD8J04PGAJXN","name":"Combination Pliers","description":"Versatile combination pliers designed for gripping, bending, and cutting wire with ease. Featuring chrome vanadium steel construction with induction-hardened cutting edges, these pliers deliver excellent grip and leverage for a wide range of tasks. The precision-machined jaws combine flat gripping surfaces with a pipe-grip section and integrated wire cutter for true multi-purpose functionality. Ergonomic bi-component handles reduce hand fatigue during extended use and provide a secure hold even with oily or gloved hands. The joint is precisely fitted to eliminate play and ensure smooth operation over thousands of cycles. Ideal for electricians, mechanics, and DIY enthusiasts tackling everyday projects around the workshop or job site.","price":14.15,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7J","by_name":"Helinton Fantin","by_url":"https:\/\/unsplash.com\/@fantin","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/W8BNwvOvW4M","file_name":"pliers01.avif","title":"Combination pliers"}}}]
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Product appears once 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/favorites
Response Information
Response Code: 422 - Unprocessable Content
Mean time per request: 130ms
Mean size per request: 54B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 2506d7b3-68f2-4874-a01e-b8fb55c64029
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 46
Request Body
{ "product_id": "01AAAAAAAAAAAAAAAAAAAAAAAA" }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:11 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"product_id":["The selected product id is invalid."]}
Test Information
NamePassedFailedSkipped
Status 422 1 0 0
Validation error on product_id 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/favorites
Response Information
Response Code: 401 - Unauthorized
Mean time per request: 100ms
Mean size per request: 26B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 3c76fefd-081f-469b-9a84-b2c8244964c8
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:11 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Unauthorized"}
Test Information
NamePassedFailedSkipped
Status 401 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/favorites
Response Information
Response Code: 401 - Unauthorized
Mean time per request: 99ms
Mean size per request: 26B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 0efe0e5b-c05b-4aea-b4af-9d86323f387d
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 48
Request Body
{
          "product_id": "01M552JH28NG35XD8J04PGAJXN"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:11 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Unauthorized"}
Test Information
NamePassedFailedSkipped
Status 401 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/favorites
Response Information
Response Code: 201 - Created
Mean time per request: 148ms
Mean size per request: 116B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token e76aed97-1df8-45c3-8cbb-2468cf96c738
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 48
Request Body
{
          "product_id": "01M552JH2AG9122BMKVRF3XH0Z"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:12 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"product_id":"01M552JH2AG9122BMKVRF3XH0Z","user_id":"01m552jz1by17vr3sx9zcb1275","id":"01m552na42bbqnt3a9sb06ccf0"}
Test Information
NamePassedFailedSkipped
Status 201 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: DELETE
Request URL: http://localhost:8091/favorites/01m552na42bbqnt3a9sb06ccf0
Response Information
Response Code: 204 - No Content
Mean time per request: 155ms
Mean size per request: 0B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 4580a25b-155d-4cdf-ba06-54c6825a60a7
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:12 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
No Response Body for this request
Test Information
NamePassedFailedSkipped
Status 204 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/favorites
Response Information
Response Code: 200 - OK
Mean time per request: 147ms
Mean size per request: 1.3KB

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token d8ac7d5c-1f35-42b2-846c-ab4410977aa3
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:12 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
[{"id":"01m552n6pqq6shecbw6zfbprcf","user_id":"01m552jz1by17vr3sx9zcb1275","product_id":"01M552JH28NG35XD8J04PGAJXN","product":{"id":"01M552JH28NG35XD8J04PGAJXN","name":"Combination Pliers","description":"Versatile combination pliers designed for gripping, bending, and cutting wire with ease. Featuring chrome vanadium steel construction with induction-hardened cutting edges, these pliers deliver excellent grip and leverage for a wide range of tasks. The precision-machined jaws combine flat gripping surfaces with a pipe-grip section and integrated wire cutter for true multi-purpose functionality. Ergonomic bi-component handles reduce hand fatigue during extended use and provide a secure hold even with oily or gloved hands. The joint is precisely fitted to eliminate play and ensure smooth operation over thousands of cycles. Ideal for electricians, mechanics, and DIY enthusiasts tackling everyday projects around the workshop or job site.","price":14.15,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7J","by_name":"Helinton Fantin","by_url":"https:\/\/unsplash.com\/@fantin","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/W8BNwvOvW4M","file_name":"pliers01.avif","title":"Combination pliers"}}}]
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Favorite is gone 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/messages
Response Information
Response Code: 200 - OK
Mean time per request: 302ms
Mean size per request: 241B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token d58fc5f1-b092-4c9a-9064-aee97d8a625b
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 166
Request Body
{ "name": "QA Tester", "email": "qa+1792245587396@test.local", "subject": "customer-service", "message": "Test message sent from Postman to check the contact form." }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:13 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"name":"QA Tester","email":"qa+1792245587396@test.local","subject":"customer-service","message":"Test message sent from Postman to check the contact form.","status":"NEW","id":"01m552nb5pc34n93r0ktpkxkyw","created_at":"2026-10-17 14:01:13"}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/messages
Response Information
Response Code: 200 - OK
Mean time per request: 142ms
Mean size per request: 207B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token c60306cc-df2a-4a8c-b1a0-564a4c44f83e
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 93
Request Body
{
          "subject": "customer-service",
          "message": "Test message sent by user A from Postman."
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:13 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"subject":"customer-service","message":"Test message sent by user A from Postman.","user_id":"01m552jz1by17vr3sx9zcb1275","status":"NEW","id":"01m552nbn2vxb5meqh0gmw7ab2","created_at":"2026-10-17 14:01:13"}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Assigned to user A 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/messages
Response Information
Response Code: 422 - Unprocessable Content
Mean time per request: 114ms
Mean size per request: 46B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token d2c3807e-a07a-420a-abd9-dbb16f563470
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 83
Request Body
{
          "name": "QA Tester",
          "email": "qa@test.local",
          "message": "Test message."
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:13 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"subject":["The subject field is required."]}
Test Information
NamePassedFailedSkipped
Status 422 1 0 0
No server error (5xx) 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/messages
Response Information
Response Code: 422 - Unprocessable Content
Mean time per request: 144ms
Mean size per request: 46B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 4e777572-a3f7-417a-bfba-a012edaf5212
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 86
Request Body
{
          "name": "QA Tester",
          "email": "qa@test.local",
          "subject": "customer-service"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:14 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":["The message field is required."]}
Test Information
NamePassedFailedSkipped
Status 422 1 0 0
No server error (5xx) 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/messages
Response Information
Response Code: 422 - Unprocessable Content
Mean time per request: 115ms
Mean size per request: 74B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 5762fe1e-1d9d-4e7f-bc20-8aad71d0e637
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 354
Request Body
{
          "name": "QA Tester",
          "email": "qa@test.local",
          "subject": "customer-service",
          "message": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:14 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":["The message field must not be greater than 250 characters."]}
Test Information
NamePassedFailedSkipped
Status 422 1 0 0
No server error (5xx) 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/messages
Response Information
Response Code: 422 - Unprocessable Content
Mean time per request: 152ms
Mean size per request: 60B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 8e6d0bc8-7350-4f50-b5d5-083410a5fec0
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 113
Request Body
{
          "name": "QA Tester",
          "email": "nu-e-email",
          "subject": "customer-service",
          "message": "Test message."
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:14 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"email":["The email field must be a valid email address."]}
Test Information
NamePassedFailedSkipped
Status 422 1 0 0
No server error (5xx) 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/messages
Response Information
Response Code: 200 - OK
Mean time per request: 140ms
Mean size per request: 1009B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 13a9d479-bb9e-4971-b6aa-8202cfba98a5
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:15 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"current_page":1,"data":[{"id":"01m552nb5pc34n93r0ktpkxkyw","user_id":null,"name":"QA Tester","email":"qa+1792245587396@test.local","subject":"customer-service","message":"Test message sent from Postman to check the contact form.","status":"NEW","created_at":"2026-10-17 14:01:13","user":null},{"id":"01m552nbn2vxb5meqh0gmw7ab2","user_id":"01m552jz1by17vr3sx9zcb1275","name":null,"email":null,"subject":"customer-service","message":"Test message sent by user A from Postman.","status":"NEW","created_at":"2026-10-17 14:01:13","user":{"id":"01m552jz1by17vr3sx9zcb1275","provider":null,"first_name":"QA-Modificat","last_name":"Tester","phone":"0612345678","dob":"1990-01-01","email":"qa+a-1792245587396@test.local","totp_enabled":false,"created_at":"2026-10-17 13:59:55","address":{"street":"Teststraat 2","house_number":null,"city":"Amsterdam","state":null,"country":"NL","postal_code":"1011 AB"},"enabled":true,"role":"user","failed_login_attempts":0}}],"from":1,"last_page":1,"per_page":15,"to":2,"total":2}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Admin sees both messages 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/messages
Response Information
Response Code: 200 - OK
Mean time per request: 136ms
Mean size per request: 314B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 2b4f0cce-3ad6-40f8-af3b-3d7526c10818
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:15 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"current_page":1,"data":[{"id":"01m552nbn2vxb5meqh0gmw7ab2","user_id":"01m552jz1by17vr3sx9zcb1275","name":null,"email":null,"subject":"customer-service","message":"Test message sent by user A from Postman.","status":"NEW","created_at":"2026-10-17 14:01:13"}],"from":1,"last_page":1,"per_page":15,"to":1,"total":1}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
A sees only own messages 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/messages
Response Information
Response Code: 200 - OK
Mean time per request: 134ms
Mean size per request: 88B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 5a09edef-c00b-4a41-845f-b244173799b5
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:15 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"current_page":1,"data":[],"from":null,"last_page":1,"per_page":15,"to":null,"total":0}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
B does not see A's message 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/messages/01m552nbn2vxb5meqh0gmw7ab2
Response Information
Response Code: 200 - OK
Mean time per request: 122ms
Mean size per request: 2B

Test Pass Percentage
50 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 196a6089-ed85-43c3-ae7f-5f42acb090b1
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:16 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
[]
Test Information
NamePassedFailedSkipped
Status in [401, 403, 404] 0 1 0
No data in response 1 0 0
Total 1 1 0
Test Failure
Test NameAssertion Error
Status in [401, 403, 404]
expected 200 to be one of [ 401, 403, 404 ]
Request Information
Request Method: GET
Request URL: http://localhost:8091/messages/01m552nbn2vxb5meqh0gmw7ab2
Response Information
Response Code: 200 - OK
Mean time per request: 129ms
Mean size per request: 616B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 209f6420-6f95-4fde-9c6b-dbe8402df016
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:16 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"id":"01m552nbn2vxb5meqh0gmw7ab2","user_id":"01m552jz1by17vr3sx9zcb1275","name":null,"email":null,"subject":"customer-service","message":"Test message sent by user A from Postman.","status":"NEW","created_at":"2026-10-17 14:01:13","user":{"id":"01m552jz1by17vr3sx9zcb1275","provider":null,"first_name":"QA-Modificat","last_name":"Tester","phone":"0612345678","dob":"1990-01-01","email":"qa+a-1792245587396@test.local","totp_enabled":false,"created_at":"2026-10-17 13:59:55","address":{"street":"Teststraat 2","house_number":null,"city":"Amsterdam","state":null,"country":"NL","postal_code":"1011 AB"}},"replies":[]}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/messages/01m552nb5pc34n93r0ktpkxkyw/attach-file
Response Information
Response Code: 200 - OK
Mean time per request: 151ms
Mean size per request: 16B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token f7a24e1b-327d-41ae-b554-bb14233d46f0
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 205
Request Body
{"file":"gol.txt"}
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:16 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"success":true}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
success = true 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/messages/01m552nb5pc34n93r0ktpkxkyw/attach-file
Response Information
Response Code: 400 - Bad Request
Mean time per request: 101ms
Mean size per request: 51B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 19e9dfd4-a67d-4b77-be07-e33d55282fa7
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 227
Request Body
{"file":"continut.txt"}
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:17 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"errors":["Currently we only allow empty files."]}
Test Information
NamePassedFailedSkipped
Status 400 1 0 0
Explicit error message 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/messages/01m552nb5pc34n93r0ktpkxkyw/attach-file
Response Information
Response Code: 400 - Bad Request
Mean time per request: 103ms
Mean size per request: 73B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 50f8301c-8132-492d-987c-6939430b0af1
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 210
Request Body
{"file":"gol.pdf"}
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:17 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"errors":["The file extension is incorrect, we only accept txt files."]}
Test Information
NamePassedFailedSkipped
Status 400 1 0 0
Explicit error message 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/messages/01m552nb5pc34n93r0ktpkxkyw/attach-file
Response Information
Response Code: 400 - Bad Request
Mean time per request: 103ms
Mean size per request: 32B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 63472ac0-d75a-46be-9935-76009018c4a9
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 0
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:17 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"errors":["No file attached."]}
Test Information
NamePassedFailedSkipped
Status 400 1 0 0
Explicit error message 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/messages/01m552nbn2vxb5meqh0gmw7ab2/reply
Response Information
Response Code: 201 - Created
Mean time per request: 130ms
Mean size per request: 109B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 7f2bccb8-aa19-4556-95e5-2662986b9f39
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 45
Request Body
{
          "message": "Test reply from the admin."
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:18 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Test reply from the admin.","id":"01m552ng4nw25e7fm798yyvdtd","created_at":"2026-10-17 14:01:18"}
Test Information
NamePassedFailedSkipped
Status 201 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/messages/01m552nbn2vxb5meqh0gmw7ab2
Response Information
Response Code: 200 - OK
Mean time per request: 129ms
Mean size per request: 1.18KB

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 1bec9c57-1446-48a1-ab78-530aafac205e
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:18 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"id":"01m552nbn2vxb5meqh0gmw7ab2","user_id":"01m552jz1by17vr3sx9zcb1275","name":null,"email":null,"subject":"customer-service","message":"Test message sent by user A from Postman.","status":"IN_PROGRESS","created_at":"2026-10-17 14:01:13","user":{"id":"01m552jz1by17vr3sx9zcb1275","provider":null,"first_name":"QA-Modificat","last_name":"Tester","phone":"0612345678","dob":"1990-01-01","email":"qa+a-1792245587396@test.local","totp_enabled":false,"created_at":"2026-10-17 13:59:55","address":{"street":"Teststraat 2","house_number":null,"city":"Amsterdam","state":null,"country":"NL","postal_code":"1011 AB"},"enabled":true,"role":"user","failed_login_attempts":0},"replies":[{"id":"01m552ng4nw25e7fm798yyvdtd","message":"Test reply from the admin.","created_at":"2026-10-17 14:01:18","user":{"id":"01M552JGSDY6PGB1Z42PFGTHSE","provider":null,"first_name":"John","last_name":"Doe","phone":null,"dob":"1980-01-01","email":"admin@practicesoftwaretesting.com","totp_enabled":false,"created_at":"2026-10-17 13:59:40","address":{"street":"Test street 123","house_number":null,"city":"Utrecht","state":null,"country":"The Netherlands","postal_code":null},"enabled":true,"role":"admin","failed_login_attempts":0}}]}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
IN_PROGRESS 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: PUT
Request URL: http://localhost:8091/messages/01m552nbn2vxb5meqh0gmw7ab2/status
Response Information
Response Code: 200 - OK
Mean time per request: 124ms
Mean size per request: 16B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 52ace182-96a2-474c-aa9a-3f8543096120
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 26
Request Body
{
          "status": "RESOLVED"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:18 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"success":true}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/messages/01m552nbn2vxb5meqh0gmw7ab2
Response Information
Response Code: 200 - OK
Mean time per request: 124ms
Mean size per request: 1.18KB

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 6500078b-c6c5-4dd6-8927-ef25df847aa6
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:19 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"id":"01m552nbn2vxb5meqh0gmw7ab2","user_id":"01m552jz1by17vr3sx9zcb1275","name":null,"email":null,"subject":"customer-service","message":"Test message sent by user A from Postman.","status":"RESOLVED","created_at":"2026-10-17 14:01:13","user":{"id":"01m552jz1by17vr3sx9zcb1275","provider":null,"first_name":"QA-Modificat","last_name":"Tester","phone":"0612345678","dob":"1990-01-01","email":"qa+a-1792245587396@test.local","totp_enabled":false,"created_at":"2026-10-17 13:59:55","address":{"street":"Teststraat 2","house_number":null,"city":"Amsterdam","state":null,"country":"NL","postal_code":"1011 AB"},"enabled":true,"role":"user","failed_login_attempts":0},"replies":[{"id":"01m552ng4nw25e7fm798yyvdtd","message":"Test reply from the admin.","created_at":"2026-10-17 14:01:18","user":{"id":"01M552JGSDY6PGB1Z42PFGTHSE","provider":null,"first_name":"John","last_name":"Doe","phone":null,"dob":"1980-01-01","email":"admin@practicesoftwaretesting.com","totp_enabled":false,"created_at":"2026-10-17 13:59:40","address":{"street":"Test street 123","house_number":null,"city":"Utrecht","state":null,"country":"The Netherlands","postal_code":null},"enabled":true,"role":"admin","failed_login_attempts":0}}]}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
RESOLVED 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: PUT
Request URL: http://localhost:8091/messages/01m552nbn2vxb5meqh0gmw7ab2/status
Response Information
Response Code: 200 - OK
Mean time per request: 121ms
Mean size per request: 16B

Test Pass Percentage
0 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 4f832f26-b908-49a7-a676-f838e3992845
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 19
Request Body
{ "status": "NEW" }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:19 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"success":true}
Test Information
NamePassedFailedSkipped
Status in [403, 404] 0 1 0
Total 0 1 0
Test Failure
Test NameAssertion Error
Status in [403, 404]
expected 200 to be one of [ 403, 404 ]
Request Information
Request Method: GET
Request URL: http://localhost:8091/messages/01m552nbn2vxb5meqh0gmw7ab2
Response Information
Response Code: 200 - OK
Mean time per request: 126ms
Mean size per request: 1.17KB

Test Pass Percentage
50 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 996599b0-3338-41ab-99d5-87796fa4f54f
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:19 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"id":"01m552nbn2vxb5meqh0gmw7ab2","user_id":"01m552jz1by17vr3sx9zcb1275","name":null,"email":null,"subject":"customer-service","message":"Test message sent by user A from Postman.","status":"NEW","created_at":"2026-10-17 14:01:13","user":{"id":"01m552jz1by17vr3sx9zcb1275","provider":null,"first_name":"QA-Modificat","last_name":"Tester","phone":"0612345678","dob":"1990-01-01","email":"qa+a-1792245587396@test.local","totp_enabled":false,"created_at":"2026-10-17 13:59:55","address":{"street":"Teststraat 2","house_number":null,"city":"Amsterdam","state":null,"country":"NL","postal_code":"1011 AB"},"enabled":true,"role":"user","failed_login_attempts":0},"replies":[{"id":"01m552ng4nw25e7fm798yyvdtd","message":"Test reply from the admin.","created_at":"2026-10-17 14:01:18","user":{"id":"01M552JGSDY6PGB1Z42PFGTHSE","provider":null,"first_name":"John","last_name":"Doe","phone":null,"dob":"1980-01-01","email":"admin@practicesoftwaretesting.com","totp_enabled":false,"created_at":"2026-10-17 13:59:40","address":{"street":"Test street 123","house_number":null,"city":"Utrecht","state":null,"country":"The Netherlands","postal_code":null},"enabled":true,"role":"admin","failed_login_attempts":0}}]}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Status stayed RESOLVED 0 1 0
Total 1 1 0
Test Failure
Test NameAssertion Error
Status stayed RESOLVED
expected 'NEW' to deeply equal 'RESOLVED'
Request Information
Request Method: GET
Request URL: http://localhost:8091/users/me
Response Information
Response Code: 401 - Unauthorized
Mean time per request: 105ms
Mean size per request: 26B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token deed08ef-9932-4491-8691-1eb103667171
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:20 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Unauthorized"}
Test Information
NamePassedFailedSkipped
Status 401 1 0 0
No data 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/users
Response Information
Response Code: 401 - Unauthorized
Mean time per request: 109ms
Mean size per request: 26B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 94698bc6-da53-4ad6-8521-81d091ee43f9
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:20 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Unauthorized"}
Test Information
NamePassedFailedSkipped
Status 401 1 0 0
No data 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/invoices
Response Information
Response Code: 401 - Unauthorized
Mean time per request: 102ms
Mean size per request: 26B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 63c7af8a-795f-4710-976e-a79d73a5109c
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:20 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Unauthorized"}
Test Information
NamePassedFailedSkipped
Status 401 1 0 0
No data 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/favorites
Response Information
Response Code: 401 - Unauthorized
Mean time per request: 100ms
Mean size per request: 26B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 58141d92-7b56-4bde-be1c-9287989572b2
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:21 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Unauthorized"}
Test Information
NamePassedFailedSkipped
Status 401 1 0 0
No data 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/messages
Response Information
Response Code: 401 - Unauthorized
Mean time per request: 112ms
Mean size per request: 26B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 911d8abc-4488-4034-ae1f-1019e16add85
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:21 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Unauthorized"}
Test Information
NamePassedFailedSkipped
Status 401 1 0 0
No data 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/reports/total-sales-of-years
Response Information
Response Code: 401 - Unauthorized
Mean time per request: 237ms
Mean size per request: 26B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 2adfece4-7f3e-4ccd-922e-f1ea1f82fcd1
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:21 GMT
X-RateLimit-Limit 60
X-RateLimit-Remaining 59
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Unauthorized"}
Test Information
NamePassedFailedSkipped
Status 401 1 0 0
No data 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/totp/setup
Response Information
Response Code: 401 - Unauthorized
Mean time per request: 145ms
Mean size per request: 26B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 61b759f6-671a-4a3c-9ab8-af56987774ea
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 0
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:22 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Unauthorized"}
Test Information
NamePassedFailedSkipped
Status 401 1 0 0
No data 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/invoices/01m552msn8pxbeh77194dfb5kb
Response Information
Response Code: 404 - Not Found
Mean time per request: 157ms
Mean size per request: 38B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 9e5159eb-e394-4a82-bc1a-0648be9f931a
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:22 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Requested item not found"}
Test Information
NamePassedFailedSkipped
Status in [401, 403, 404] 1 0 0
No data in response 1 0 0
No billing address 1 0 0
Total 3 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/invoices/01m552msn8pxbeh77194dfb5kb
Response Information
Response Code: 200 - OK
Mean time per request: 151ms
Mean size per request: 1.96KB

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token e532b98f-7585-45ce-9b87-6a252c8b8707
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:22 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"id":"01m552msn8pxbeh77194dfb5kb","invoice_date":"2026-10-17 14:00:55","additional_discount_percentage":null,"additional_discount_amount":0,"eco_discount_percentage":0,"eco_discount_amount":0,"invoice_number":"INV-2026000006","billing_street":"Teststraat 1","billing_city":"Wezuperbrug","billing_state":"Drenthe","billing_country":"NL","billing_postal_code":"1011 AB","subtotal":1400.85,"total":1400.85,"status":"COMPLETED","status_message":"Order shipped","created_at":"2026-10-17T14:00:55.000000Z","user_id":"01m552jz1by17vr3sx9zcb1275","invoicelines":[{"id":"01m552mt5prtepky39mtmwjhch","invoice_id":"01m552msn8pxbeh77194dfb5kb","product_id":"01M552JH28NG35XD8J04PGAJXN","unit_price":14.15,"quantity":99,"discount_percentage":null,"discounted_price":null,"product":{"id":"01M552JH28NG35XD8J04PGAJXN","name":"Combination Pliers","description":"Versatile combination pliers designed for gripping, bending, and cutting wire with ease. Featuring chrome vanadium steel construction with induction-hardened cutting edges, these pliers deliver excellent grip and leverage for a wide range of tasks. The precision-machined jaws combine flat gripping surfaces with a pipe-grip section and integrated wire cutter for true multi-purpose functionality. Ergonomic bi-component handles reduce hand fatigue during extended use and provide a secure hold even with oily or gloved hands. The joint is precisely fitted to eliminate play and ensure smooth operation over thousands of cycles. Ideal for electricians, mechanics, and DIY enthusiasts tackling everyday projects around the workshop or job site.","price":14.15,"co2_rating":"D","is_rental":false,"in_stock":false,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7J","by_name":"Helinton Fantin","by_url":"https:\/\/unsplash.com\/@fantin"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWD","name":"Pliers"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}}}],"payment":{"payment_method":"cash-on-delivery","payment_details":[]}}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/invoices/INV-2026000006/download-pdf
Response Information
Response Code: 404 - Not Found
Mean time per request: 121ms
Mean size per request: 52B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token b7df9572-83de-4094-9911-63a6f381f4d0
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:23 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Document not created. Try again later."}
Test Information
NamePassedFailedSkipped
Status in [403, 404] 1 0 0
Does not receive a PDF 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/users/01m552jz1by17vr3sx9zcb1275
Response Information
Response Code: 404 - Not Found
Mean time per request: 118ms
Mean size per request: 53B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 5c345e0c-bb6c-4ed6-9cbc-a8ebdc7578ca
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:23 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"error":"You are not authorized to view this user."}
Test Information
NamePassedFailedSkipped
Status in [401, 403, 404] 1 0 0
No data in response 1 0 0
No email of A 1 0 0
Total 3 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/users/01m552jz1by17vr3sx9zcb1275
Response Information
Response Code: 200 - OK
Mean time per request: 120ms
Mean size per request: 418B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 43b37cbf-0421-46e2-a758-473a9a0e69da
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:23 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"id":"01m552jz1by17vr3sx9zcb1275","provider":null,"first_name":"QA-Modificat","last_name":"Tester","phone":"0612345678","dob":"1990-01-01","email":"qa+a-1792245587396@test.local","totp_enabled":false,"created_at":"2026-10-17 13:59:55","address":{"street":"Teststraat 2","house_number":null,"city":"Amsterdam","state":null,"country":"NL","postal_code":"1011 AB"},"enabled":true,"role":"user","failed_login_attempts":0}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: PUT
Request URL: http://localhost:8091/users/01m552jz1by17vr3sx9zcb1275
Response Information
Response Code: 403 - Forbidden
Mean time per request: 124ms
Mean size per request: 46B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token a9b1a3f8-6a3a-401e-85f9-5179be41ec44
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 251
Request Body
{
          "first_name": "Hacked",
          "last_name": "Tester",
          "email": "atacator+1792245587396@test.local",
          "phone": "0612345678",
          "address": {
            "street": "Teststraat 2",
            "city": "Amsterdam",
            "country": "NL",
            "postal_code": "1011 AB"
          }
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:24 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"error":"You can only update your own data."}
Test Information
NamePassedFailedSkipped
Status 403 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: PATCH
Request URL: http://localhost:8091/users/01m552jz1by17vr3sx9zcb1275
Response Information
Response Code: 403 - Forbidden
Mean time per request: 122ms
Mean size per request: 46B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 8660bc35-c74d-4958-8d2b-7cf14b18b83b
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 28
Request Body
{
          "first_name": "Hacked"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:24 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"error":"You can only update your own data."}
Test Information
NamePassedFailedSkipped
Status 403 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/users/me
Response Information
Response Code: 200 - OK
Mean time per request: 155ms
Mean size per request: 363B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 221c1022-a990-44f6-bd64-9516942520ab
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:24 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"id":"01m552jz1by17vr3sx9zcb1275","provider":null,"first_name":"QA-Modificat","last_name":"Tester","phone":"0612345678","dob":"1990-01-01","email":"qa+a-1792245587396@test.local","totp_enabled":false,"created_at":"2026-10-17 13:59:55","address":{"street":"Teststraat 2","house_number":null,"city":"Amsterdam","state":null,"country":"NL","postal_code":"1011 AB"}}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Email unchanged 1 0 0
Name unchanged 1 0 0
Total 3 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/favorites/01m552n6pqq6shecbw6zfbprcf
Response Information
Response Code: 200 - OK
Mean time per request: 121ms
Mean size per request: 116B

Test Pass Percentage
50 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 45d70fa6-e917-4689-beb8-a24cfe37f6e9
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:25 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"id":"01m552n6pqq6shecbw6zfbprcf","user_id":"01m552jz1by17vr3sx9zcb1275","product_id":"01M552JH28NG35XD8J04PGAJXN"}
Test Information
NamePassedFailedSkipped
Status in [401, 403, 404] 0 1 0
No data in response 1 0 0
Total 1 1 0
Test Failure
Test NameAssertion Error
Status in [401, 403, 404]
expected 200 to be one of [ 401, 403, 404 ]
Request Information
Request Method: POST
Request URL: http://localhost:8091/messages/01m552nbn2vxb5meqh0gmw7ab2/reply
Response Information
Response Code: 201 - Created
Mean time per request: 127ms
Mean size per request: 110B

Test Pass Percentage
0 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token ea1d0347-14f2-4839-abf8-bbbbd07e79e0
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 44
Request Body
{ "message": "Reply from another account." }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:25 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Reply from another account.","id":"01m552nqc63tw7zd92nkacj95s","created_at":"2026-10-17 14:01:25"}
Test Information
NamePassedFailedSkipped
Status in [403, 404] 0 1 0
Total 0 1 0
Test Failure
Test NameAssertion Error
Status in [403, 404]
expected 201 to be one of [ 403, 404 ]
Request Information
Request Method: POST
Request URL: http://localhost:8091/carts
Response Information
Response Code: 201 - Created
Mean time per request: 106ms
Mean size per request: 35B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 35795c96-366f-48c7-a18d-96bbcdec8314
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 2
Request Body
{}
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:25 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"id":"01m552nqnn2cgav3zka12fx3nd"}
Test Information
NamePassedFailedSkipped
Status 201 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/carts/01m552nqnn2cgav3zka12fx3nd
Response Information
Response Code: 200 - OK
Mean time per request: 132ms
Mean size per request: 34B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 86d656a6-a714-4da2-8865-e33a9cfca4c9
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 65
Request Body
{
          "product_id": "01M552JH28NG35XD8J04PGAJXN",
          "quantity": 1
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:26 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"result":"item added or updated"}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/carts/01m552nqnn2cgav3zka12fx3nd
Response Information
Response Code: 200 - OK
Mean time per request: 135ms
Mean size per request: 1.19KB

Test Pass Percentage
0 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token ad78a7cc-e5f6-4f53-99b9-0032a701e4bb
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:26 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"id":"01m552nqnn2cgav3zka12fx3nd","additional_discount_percentage":null,"lat":null,"lng":null,"cart_items":[{"id":"01m552nqzghs1zadqzaprayfmg","quantity":1,"discount_percentage":null,"cart_id":"01m552nqnn2cgav3zka12fx3nd","product_id":"01M552JH28NG35XD8J04PGAJXN","product":{"id":"01M552JH28NG35XD8J04PGAJXN","name":"Combination Pliers","description":"Versatile combination pliers designed for gripping, bending, and cutting wire with ease. Featuring chrome vanadium steel construction with induction-hardened cutting edges, these pliers deliver excellent grip and leverage for a wide range of tasks. The precision-machined jaws combine flat gripping surfaces with a pipe-grip section and integrated wire cutter for true multi-purpose functionality. Ergonomic bi-component handles reduce hand fatigue during extended use and provide a secure hold even with oily or gloved hands. The joint is precisely fitted to eliminate play and ensure smooth operation over thousands of cycles. Ideal for electricians, mechanics, and DIY enthusiasts tackling everyday projects around the workshop or job site.","price":14.15,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false}}]}
Test Information
NamePassedFailedSkipped
Status in [403, 404] 0 1 0
Total 0 1 0
Test Failure
Test NameAssertion Error
Status in [403, 404]
expected 200 to be one of [ 403, 404 ]
Request Information
Request Method: GET
Request URL: http://localhost:8091/carts/01m552nqnn2cgav3zka12fx3nd
Response Information
Response Code: 200 - OK
Mean time per request: 105ms
Mean size per request: 1.19KB

Test Pass Percentage
0 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 43520da5-f9f9-488e-8437-2931e223195f
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:26 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"id":"01m552nqnn2cgav3zka12fx3nd","additional_discount_percentage":null,"lat":null,"lng":null,"cart_items":[{"id":"01m552nqzghs1zadqzaprayfmg","quantity":1,"discount_percentage":null,"cart_id":"01m552nqnn2cgav3zka12fx3nd","product_id":"01M552JH28NG35XD8J04PGAJXN","product":{"id":"01M552JH28NG35XD8J04PGAJXN","name":"Combination Pliers","description":"Versatile combination pliers designed for gripping, bending, and cutting wire with ease. Featuring chrome vanadium steel construction with induction-hardened cutting edges, these pliers deliver excellent grip and leverage for a wide range of tasks. The precision-machined jaws combine flat gripping surfaces with a pipe-grip section and integrated wire cutter for true multi-purpose functionality. Ergonomic bi-component handles reduce hand fatigue during extended use and provide a secure hold even with oily or gloved hands. The joint is precisely fitted to eliminate play and ensure smooth operation over thousands of cycles. Ideal for electricians, mechanics, and DIY enthusiasts tackling everyday projects around the workshop or job site.","price":14.15,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false}}]}
Test Information
NamePassedFailedSkipped
Status in [401, 403, 404] 0 1 0
Total 0 1 0
Test Failure
Test NameAssertion Error
Status in [401, 403, 404]
expected 200 to be one of [ 401, 403, 404 ]
Request Information
Request Method: POST
Request URL: http://localhost:8091/carts/01m552nqnn2cgav3zka12fx3nd
Response Information
Response Code: 200 - OK
Mean time per request: 118ms
Mean size per request: 34B

Test Pass Percentage
0 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token b71db845-eff0-4965-915f-c2513d547eb0
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 65
Request Body
{
          "product_id": "01M552JH2AG9122BMKVRF3XH0Z",
          "quantity": 1
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:27 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"result":"item added or updated"}
Test Information
NamePassedFailedSkipped
Status in [401, 403, 404] 0 1 0
Total 0 1 0
Test Failure
Test NameAssertion Error
Status in [401, 403, 404]
expected 200 to be one of [ 401, 403, 404 ]
Request Information
Request Method: POST
Request URL: http://localhost:8091/carts
Response Information
Response Code: 201 - Created
Mean time per request: 105ms
Mean size per request: 35B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token c7b8f292-d87b-471d-8df2-946256d97e13
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 2
Request Body
{}
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:27 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"id":"01m552ns84664b7atw0ehavqcf"}
Test Information
NamePassedFailedSkipped
Status 201 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: DELETE
Request URL: http://localhost:8091/carts/01m552ns84664b7atw0ehavqcf
Response Information
Response Code: 204 - No Content
Mean time per request: 107ms
Mean size per request: 0B

Test Pass Percentage
0 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 20e017bb-78cd-4444-92f9-c378163b9144
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:27 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
No Response Body for this request
Test Information
NamePassedFailedSkipped
Status in [401, 403, 404] 0 1 0
Total 0 1 0
Test Failure
Test NameAssertion Error
Status in [401, 403, 404]
expected 204 to be one of [ 401, 403, 404 ]
Request Information
Request Method: POST
Request URL: http://localhost:8091/carts
Response Information
Response Code: 201 - Created
Mean time per request: 103ms
Mean size per request: 35B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 481f9c8a-7a63-40d1-9a59-c433a9bf80c7
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 2
Request Body
{}
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:28 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"id":"01m552nsvf3wk1dn7xb38143kb"}
Test Information
NamePassedFailedSkipped
Status 201 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/carts
Response Information
Response Code: 201 - Created
Mean time per request: 105ms
Mean size per request: 35B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 10a1bfda-9c6c-48f3-b050-8fd692aa6fbd
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 2
Request Body
{}
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:28 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"id":"01m552nt4sbezpvkv7bwgbedpb"}
Test Information
NamePassedFailedSkipped
Status 201 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/carts/01m552nt4sbezpvkv7bwgbedp0
Response Information
Response Code: 404 - Not Found
Mean time per request: 103ms
Mean size per request: 38B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 32259575-18cd-403f-8b68-c8ebace18fa3
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:28 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Requested item not found"}
Test Information
NamePassedFailedSkipped
Status 404 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/users
Response Information
Response Code: 200 - OK
Mean time per request: 134ms
Mean size per request: 5.03KB

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token b192d255-6a8f-430f-b0d0-a48f129c7290
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:29 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"current_page":1,"data":[{"id":"01M552JGW8Y9DHAAZAATACEXMR","provider":null,"first_name":"Jane","last_name":"Doe","phone":null,"dob":"1980-02-02","email":"customer@practicesoftwaretesting.com","totp_enabled":false,"created_at":"2026-10-17 13:59:40","address":{"street":"Test street 98","house_number":null,"city":"Vienna","state":null,"country":"Austria","postal_code":null},"enabled":true,"role":"user","failed_login_attempts":0},{"id":"01M552JGXJ5GQFPJBP8FQADST6","provider":null,"first_name":"Jack","last_name":"Howe","phone":null,"dob":"1980-03-03","email":"customer2@practicesoftwaretesting.com","totp_enabled":false,"created_at":"2026-10-17 13:59:40","address":{"street":"Test street 654","house_number":null,"city":"Frankfurt","state":null,"country":"Germany","postal_code":null},"enabled":true,"role":"user","failed_login_attempts":0},{"id":"01M552JGYVS1082V4K46EABP20","provider":null,"first_name":"Bob","last_name":"Smith","phone":null,"dob":"1985-05-05","email":"customer3@practicesoftwaretesting.com","totp_enabled":false,"created_at":"2026-10-17 13:59:40","address":{"street":"Test street 200","house_number":null,"city":"London","state":null,"country":"United Kingdom","postal_code":null},"enabled":true,"role":"user","failed_login_attempts":0},{"id":"01m552jz1by17vr3sx9zcb1275","provider":null,"first_name":"QA-Modificat","last_name":"Tester","phone":"0612345678","dob":"1990-01-01","email":"qa+a-1792245587396@test.local","totp_enabled":false,"created_at":"2026-10-17 13:59:55","address":{"street":"Teststraat 2","house_number":null,"city":"Amsterdam","state":null,"country":"NL","postal_code":"1011 AB"},"enabled":true,"role":"user","failed_login_attempts":0},{"id":"01m552k0pjeydtzqfwz44279eb","provider":null,"first_name":"QA","last_name":"UserB","phone":"0612345678","dob":"1990-01-01","email":"qa+b-1792245587396@test.local","totp_enabled":false,"created_at":"2026-10-17 13:59:56","address":{"street":"Teststraat 1","house_number":null,"city":"Amsterdam","state":"Noord-Holland","country":"NL","postal_code":"1011 AB"},"enabled":true,"role":"user","failed_login_attempts":0},{"id":"01m552kg5a890kvbmsptpr00b0","provider":null,"first_name":"QA","last_name":"Tester","phone":"0612345678","dob":"1990-01-01","email":"qa+new-1792245612408@test.local","totp_enabled":false,"created_at":"2026-10-17 14:00:12","address":{"street":"Teststraat 1","house_number":null,"city":"Amsterdam","state":"Noord-Holland","country":"NL","postal_code":"1011 AB"},"enabled":true,"role":"user","failed_login_attempts":0},{"id":"01m552kjkvc18nkd0f3z14bxqh","provider":null,"first_name":"QA","last_name":"Tester","phone":"0612345678","dob":"1990-01-01","email":"qa-fara-arond-1792245587396","totp_enabled":false,"created_at":"2026-10-17 14:00:15","address":{"street":"Teststraat 1","house_number":null,"city":"Amsterdam","state":"Noord-Holland","country":"NL","postal_code":"1011 AB"},"enabled":true,"role":"user","failed_login_attempts":0},{"id":"01m552km2yakbc35a1akzkggtk","provider":null,"first_name":"QA","last_name":"Tester","phone":"0612345678","dob":"1990-01-01","email":"qa+1792245616475@test.local","totp_enabled":false,"created_at":"2026-10-17 14:00:16","address":{"street":"Teststraat 1","house_number":null,"city":"Amsterdam","state":"Noord-Holland","country":"NL","postal_code":"1011 AB"},"enabled":true,"role":"user","failed_login_attempts":0},{"id":"01m552kmhja8v5v80jbv0grpnd","provider":null,"first_name":"QA","last_name":"Tester","phone":"0612345678","dob":"1990-01-01","email":"qa+ra-1792245616926@test.local","totp_enabled":false,"created_at":"2026-10-17 14:00:17","address":{"street":"Teststraat 1","house_number":null,"city":"Amsterdam","state":"Noord-Holland","country":"NL","postal_code":"1011 AB"},"enabled":true,"role":"user","failed_login_attempts":0},{"id":"01m552kqv4mnywed6hfdfmar1f","provider":null,"first_name":"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA","last_name":"Tester","phone":"0612345678","dob":"1990-01-01","email":"qa+1792245620311@test.local","totp_enabled":false,"created_at":"2026-10-17 14:00:20","address":{"street":"Teststraat 1","house_number":null,"city":"Amsterdam","state":"Noord-Holland","country":"NL","postal_code":"1011 AB"},"enabled":true,"role":"user","failed_login_attempts":0},{"id":"01m552kr9sjx6n2z2pyr1xpj4r","provider":null,"first_name":"QA","last_name":"AAAAAAAAAAAAAAAAAAAA","phone":"0612345678","dob":"1990-01-01","email":"qa+1792245620779@test.local","totp_enabled":false,"created_at":"2026-10-17 14:00:21","address":{"street":"Teststraat 1","house_number":null,"city":"Amsterdam","state":"Noord-Holland","country":"NL","postal_code":"1011 AB"},"enabled":true,"role":"user","failed_login_attempts":0},{"id":"01m552krr7t2y73n2fwhdam06t","provider":null,"first_name":"QA","last_name":"Tester","phone":"111111111111111111111111","dob":"1990-01-01","email":"qa+1792245621226@test.local","totp_enabled":false,"created_at":"2026-10-17 14:00:21","address":{"street":"Teststraat 1","house_number":null,"city":"Amsterdam","state":"Noord-Holland","country":"NL","postal_code":"1011 AB"},"enabled":true,"role":"user","failed_login_attempts":0}],"from":1,"last_page":1,"per_page":15,"to":12,"total":12}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Non-empty list 1 0 0
No sensitive fields 1 0 0
Total 3 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/users
Response Information
Response Code: 403 - Forbidden
Mean time per request: 116ms
Mean size per request: 23B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 91e384bc-0b52-4dfc-97ed-1559d1b0f6b2
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:29 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Forbidden"}
Test Information
NamePassedFailedSkipped
Status 403 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/users
Response Information
Response Code: 401 - Unauthorized
Mean time per request: 100ms
Mean size per request: 26B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token c3e58996-f50b-48d7-a437-12e925405291
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:29 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Unauthorized"}
Test Information
NamePassedFailedSkipped
Status 401 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/products
Response Information
Response Code: 201 - Created
Mean time per request: 733ms
Mean size per request: 686B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 810b8aa0-afa4-4284-a1ed-2a002e5f09e3
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 298
Request Body
{
          "name": "Test product 1792245587396",
          "description": "Created by the API test",
          "price": 9.99,
          "category_id": "01M552JH0YW2D66AXDEDJGQGWD",
          "brand_id": "01M552JGRRJK0308ZCZCH32JAH",
          "product_image_id": "01M552JH1JNQZMARG3VDF4TG7J",
          "is_location_offer": false,
          "is_rental": false
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:30 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"name":"Test product 1792245587396","description":"Created by the API test","price":9.99,"is_location_offer":false,"is_rental":false,"id":"01m552nvpty53cay14v4w9m6y0","in_stock":null,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7J","by_name":"Helinton Fantin","by_url":"https:\/\/unsplash.com\/@fantin","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/W8BNwvOvW4M","file_name":"pliers01.avif","title":"Combination pliers"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWD","name":"Pliers","slug":"pliers","parent_id":"01M552JH0THC23EZ570GKVAFFH"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools","slug":"forgeflex-tools"}}
Test Information
NamePassedFailedSkipped
Status 201 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: PUT
Request URL: http://localhost:8091/products/01m552nvpty53cay14v4w9m6y0
Response Information
Response Code: 200 - OK
Mean time per request: 151ms
Mean size per request: 16B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 84fe13c3-4aa1-49f7-92f5-338897f343f7
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 299
Request Body
{
          "name": "Test product 1792245587396",
          "description": "Created by the API test",
          "price": 19.99,
          "category_id": "01M552JH0YW2D66AXDEDJGQGWD",
          "brand_id": "01M552JGRRJK0308ZCZCH32JAH",
          "product_image_id": "01M552JH1JNQZMARG3VDF4TG7J",
          "is_location_offer": false,
          "is_rental": false
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:31 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"success":true}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/products/01m552nvpty53cay14v4w9m6y0
Response Information
Response Code: 200 - OK
Mean time per request: 166ms
Mean size per request: 692B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 4fb8ddd6-2458-4783-ac40-bd0b362ff71e
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control max-age=120, public
Date Sat, 17 Oct 2026 14:01:31 GMT
ETag "59c2166987908b4ece1781cd341633cf"
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"id":"01m552nvpty53cay14v4w9m6y0","name":"Test product 1792245587396","description":"Created by the API test","price":19.99,"is_location_offer":false,"is_rental":false,"co2_rating":null,"in_stock":false,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7J","by_name":"Helinton Fantin","by_url":"https:\/\/unsplash.com\/@fantin","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/W8BNwvOvW4M","file_name":"pliers01.avif","title":"Combination pliers"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWD","name":"Pliers","slug":"pliers","parent_id":"01M552JH0THC23EZ570GKVAFFH"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"},"specs":[]}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
New price persisted 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: DELETE
Request URL: http://localhost:8091/products/01m552nvpty53cay14v4w9m6y0
Response Information
Response Code: 204 - No Content
Mean time per request: 286ms
Mean size per request: 0B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token b955dfa0-7e37-4e85-82b4-c70584aa566e
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:31 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
No Response Body for this request
Test Information
NamePassedFailedSkipped
Status 204 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/products/01m552nvpty53cay14v4w9m6y0
Response Information
Response Code: 404 - Not Found
Mean time per request: 187ms
Mean size per request: 38B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token eb422c0a-e070-4a70-a90a-8c78035d2228
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:32 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Requested item not found"}
Test Information
NamePassedFailedSkipped
Status 404 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/products
Response Information
Response Code: 201 - Created
Mean time per request: 145ms
Mean size per request: 686B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 9271dd47-8fbf-427d-91e6-64c7cd9bf1d5
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 298
Request Body
{
          "name": "Test product 1792245587396",
          "description": "Created by the API test",
          "price": 9.99,
          "category_id": "01M552JH0YW2D66AXDEDJGQGWD",
          "brand_id": "01M552JGRRJK0308ZCZCH32JAH",
          "product_image_id": "01M552JH1JNQZMARG3VDF4TG7J",
          "is_location_offer": false,
          "is_rental": false
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:32 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"name":"Test product 1792245587396","description":"Created by the API test","price":9.99,"is_location_offer":false,"is_rental":false,"id":"01m552ny6cbkt75hn3220xj8km","in_stock":null,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7J","by_name":"Helinton Fantin","by_url":"https:\/\/unsplash.com\/@fantin","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/W8BNwvOvW4M","file_name":"pliers01.avif","title":"Combination pliers"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWD","name":"Pliers","slug":"pliers","parent_id":"01M552JH0THC23EZ570GKVAFFH"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools","slug":"forgeflex-tools"}}
Test Information
NamePassedFailedSkipped
Status 201 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: DELETE
Request URL: http://localhost:8091/products/01m552ny6cbkt75hn3220xj8km
Response Information
Response Code: 403 - Forbidden
Mean time per request: 223ms
Mean size per request: 23B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 69361cf6-8610-46f9-938d-4f7eed5be090
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:33 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Forbidden"}
Test Information
NamePassedFailedSkipped
Status 403 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/products/01m552ny6cbkt75hn3220xj8km
Response Information
Response Code: 200 - OK
Mean time per request: 140ms
Mean size per request: 691B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token b0dfcbdc-211d-4323-b1a2-6100ede7b862
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control max-age=120, public
Date Sat, 17 Oct 2026 14:01:33 GMT
ETag "8190b002ceaf022f1ebbcc898b77705d"
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"id":"01m552ny6cbkt75hn3220xj8km","name":"Test product 1792245587396","description":"Created by the API test","price":9.99,"is_location_offer":false,"is_rental":false,"co2_rating":null,"in_stock":false,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7J","by_name":"Helinton Fantin","by_url":"https:\/\/unsplash.com\/@fantin","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/W8BNwvOvW4M","file_name":"pliers01.avif","title":"Combination pliers"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWD","name":"Pliers","slug":"pliers","parent_id":"01M552JH0THC23EZ570GKVAFFH"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"},"specs":[]}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: DELETE
Request URL: http://localhost:8091/products/01m552ny6cbkt75hn3220xj8km
Response Information
Response Code: 204 - No Content
Mean time per request: 241ms
Mean size per request: 0B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 22b517ed-cb62-4c55-9aa9-439893d0bb51
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:33 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
No Response Body for this request
Test Information
NamePassedFailedSkipped
Status 204 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: DELETE
Request URL: http://localhost:8091/users/01m552k0pjeydtzqfwz44279eb
Response Information
Response Code: 403 - Forbidden
Mean time per request: 133ms
Mean size per request: 23B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 9f0d1a03-32ba-4d59-8da6-aaf24626fe8d
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:34 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Forbidden"}
Test Information
NamePassedFailedSkipped
Status 403 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/login
Response Information
Response Code: 200 - OK
Mean time per request: 234ms
Mean size per request: 429B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 6f18137b-ee31-46a5-af1e-036b88b327c2
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 91
Request Body
{
          "email": "qa+b-1792245587396@test.local",
          "password": "[password masked]"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:34 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"access_token":"eyJ…[masked]","token_type":"bearer","expires_in":300}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/brands
Response Information
Response Code: 201 - Created
Mean time per request: 204ms
Mean size per request: 99B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 62a3fd7c-befd-4224-a77b-c6f5652314e7
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 74
Request Body
{
          "name": "Brand QA 1792245587396",
          "slug": "brand-qa-1792245587396"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:35 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"name":"Brand QA 1792245587396","slug":"brand-qa-1792245587396","id":"01m552p0ktc7qp716ehvyfjtaw"}
Test Information
NamePassedFailedSkipped
Status 201 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/categories
Response Information
Response Code: 201 - Created
Mean time per request: 142ms
Mean size per request: 105B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token dd5a6804-135a-4570-82fd-cd16fa2a80a9
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 80
Request Body
{
          "name": "QA Category 1792245587396",
          "slug": "qa-category-1792245587396"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:35 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"name":"QA Category 1792245587396","slug":"qa-category-1792245587396","id":"01m552p0ytfgz4x5gzwqdbwbw3"}
Test Information
NamePassedFailedSkipped
Status 201 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/brands
Response Information
Response Code: 201 - Created
Mean time per request: 109ms
Mean size per request: 109B

Test Pass Percentage
0 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token a4b30219-7734-4607-8d1a-f3cd07fd2312
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 84
Request Body
{
          "name": "Brand QA anon-1792245587396",
          "slug": "brand-qa-anon-1792245587396"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:35 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"name":"Brand QA anon-1792245587396","slug":"brand-qa-anon-1792245587396","id":"01m552p17vfxne05ngjpf40rx3"}
Test Information
NamePassedFailedSkipped
Status 401 0 1 0
Total 0 1 0
Test Failure
Test NameAssertion Error
Status 401
expected response to have status code 401 but got 201
Request Information
Request Method: POST
Request URL: http://localhost:8091/brands
Response Information
Response Code: 201 - Created
Mean time per request: 109ms
Mean size per request: 109B

Test Pass Percentage
0 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 68006ae5-55e1-4d44-b2ba-8fe59cd3d45e
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 84
Request Body
{
          "name": "Brand QA user-1792245587396",
          "slug": "brand-qa-user-1792245587396"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:36 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"name":"Brand QA user-1792245587396","slug":"brand-qa-user-1792245587396","id":"01m552p1hvw8b0nnh8104sahax"}
Test Information
NamePassedFailedSkipped
Status 403 0 1 0
Total 0 1 0
Test Failure
Test NameAssertion Error
Status 403
expected response to have status code 403 but got 201
Request Information
Request Method: POST
Request URL: http://localhost:8091/brands
Response Information
Response Code: 409 - Conflict
Mean time per request: 115ms
Mean size per request: 51B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 45f3599d-fb65-4520-b371-e82a6c5b7d30
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 74
Request Body
{
          "name": "Brand QA 1792245587396",
          "slug": "brand-qa-1792245587396"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:36 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"slug":["A brand already exists with this slug."]}
Test Information
NamePassedFailedSkipped
Status 409 1 0 0
Validation error on slug 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: DELETE
Request URL: http://localhost:8091/brands/01m552p0ktc7qp716ehvyfjtaw
Response Information
Response Code: 403 - Forbidden
Mean time per request: 135ms
Mean size per request: 23B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 948f6a21-f60b-4cb7-bda0-6fcccd89772c
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:36 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Forbidden"}
Test Information
NamePassedFailedSkipped
Status 403 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: DELETE
Request URL: http://localhost:8091/brands/01m552p0ktc7qp716ehvyfjtaw
Response Information
Response Code: 204 - No Content
Mean time per request: 155ms
Mean size per request: 0B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 64ed11dc-b0b6-4afa-a9c8-42baa069a277
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:37 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
No Response Body for this request
Test Information
NamePassedFailedSkipped
Status 204 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: DELETE
Request URL: http://localhost:8091/categories/01m552p0ytfgz4x5gzwqdbwbw3
Response Information
Response Code: 204 - No Content
Mean time per request: 155ms
Mean size per request: 0B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 65a0fe30-136f-4e1c-91dc-711d5909bf50
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:37 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
No Response Body for this request
Test Information
NamePassedFailedSkipped
Status 204 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/products/01M552JH28NG35XD8J04PGAJXN/specs
Response Information
Response Code: 401 - Unauthorized
Mean time per request: 112ms
Mean size per request: 26B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token ef7f1b0f-6faa-4c48-913c-7e7362de5404
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 60
Request Body
{ "spec_name": "Test", "spec_value": "QA", "spec_unit": "" }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:37 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Unauthorized"}
Test Information
NamePassedFailedSkipped
Status 401 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/products/01M552JH28NG35XD8J04PGAJXN/specs
Response Information
Response Code: 201 - Created
Mean time per request: 126ms
Mean size per request: 131B

Test Pass Percentage
0 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token a4ecc8d8-0c1b-45db-bc07-308ce9120db7
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 60
Request Body
{ "spec_name": "Test", "spec_value": "QA", "spec_unit": "" }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:38 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"product_id":"01M552JH28NG35XD8J04PGAJXN","spec_name":"Test","spec_value":"QA","spec_unit":null,"id":"01m552p3hxb48dvzqrd7hdhh4p"}
Test Information
NamePassedFailedSkipped
Status in [401, 403] 0 1 0
Total 0 1 0
Test Failure
Test NameAssertion Error
Status in [401, 403]
expected 201 to be one of [ 401, 403 ]
Request Information
Request Method: POST
Request URL: http://localhost:8091/products
Response Information
Response Code: 201 - Created
Mean time per request: 145ms
Mean size per request: 687B

Test Pass Percentage
0 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 9288479a-e751-4d71-bf14-39643b751f48
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 298
Request Body
{
          "name": "Test product 1792245587396",
          "description": "Created by the API test",
          "price": 9.99,
          "category_id": "01M552JH0YW2D66AXDEDJGQGWD",
          "brand_id": "01M552JGRRJK0308ZCZCH32JAH",
          "product_image_id": "01M552JH1JNQZMARG3VDF4TG7J",
          "is_location_offer": false,
          "is_rental": false
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:38 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"name":"Test product 1792245587396","description":"Created by the API test","price":9.99,"is_location_offer":false,"is_rental":false,"id":"01m552p3w0tn576x3a1zxnge4s","in_stock":false,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7J","by_name":"Helinton Fantin","by_url":"https:\/\/unsplash.com\/@fantin","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/W8BNwvOvW4M","file_name":"pliers01.avif","title":"Combination pliers"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWD","name":"Pliers","slug":"pliers","parent_id":"01M552JH0THC23EZ570GKVAFFH"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools","slug":"forgeflex-tools"}}
Test Information
NamePassedFailedSkipped
Status 401 0 1 0
Total 0 1 0
Test Failure
Test NameAssertion Error
Status 401
expected response to have status code 401 but got 201
Request Information
Request Method: POST
Request URL: http://localhost:8091/products
Response Information
Response Code: 201 - Created
Mean time per request: 146ms
Mean size per request: 687B

Test Pass Percentage
0 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 26b2bd5d-e492-4301-b2ab-46bd0ec600e1
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 298
Request Body
{
          "name": "Test product 1792245587396",
          "description": "Created by the API test",
          "price": 9.99,
          "category_id": "01M552JH0YW2D66AXDEDJGQGWD",
          "brand_id": "01M552JGRRJK0308ZCZCH32JAH",
          "product_image_id": "01M552JH1JNQZMARG3VDF4TG7J",
          "is_location_offer": false,
          "is_rental": false
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:38 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"name":"Test product 1792245587396","description":"Created by the API test","price":9.99,"is_location_offer":false,"is_rental":false,"id":"01m552p475gj4f6gjyr7js8h78","in_stock":false,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7J","by_name":"Helinton Fantin","by_url":"https:\/\/unsplash.com\/@fantin","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/W8BNwvOvW4M","file_name":"pliers01.avif","title":"Combination pliers"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWD","name":"Pliers","slug":"pliers","parent_id":"01M552JH0THC23EZ570GKVAFFH"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools","slug":"forgeflex-tools"}}
Test Information
NamePassedFailedSkipped
Status 403 0 1 0
Total 0 1 0
Test Failure
Test NameAssertion Error
Status 403
expected response to have status code 403 but got 201
Request Information
Request Method: PATCH
Request URL: http://localhost:8091/products/01M552JH28NG35XD8J04PGAJXN
Response Information
Response Code: 200 - OK
Mean time per request: 138ms
Mean size per request: 16B

Test Pass Percentage
0 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token c3742620-0e8f-473c-96e1-4157c68b3233
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 19
Request Body
{
          "price": 0.01
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:39 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"success":true}
Test Information
NamePassedFailedSkipped
Status 401 0 1 0
Total 0 1 0
Test Failure
Test NameAssertion Error
Status 401
expected response to have status code 401 but got 200
Request Information
Request Method: PATCH
Request URL: http://localhost:8091/products/01M552JH28NG35XD8J04PGAJXN
Response Information
Response Code: 200 - OK
Mean time per request: 199ms
Mean size per request: 16B

Test Pass Percentage
0 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 471249ac-844e-4fb1-8703-d940fdb45084
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 19
Request Body
{
          "price": 0.01
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:39 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"success":true}
Test Information
NamePassedFailedSkipped
Status 403 0 1 0
Total 0 1 0
Test Failure
Test NameAssertion Error
Status 403
expected response to have status code 403 but got 200
Request Information
Request Method: GET
Request URL: http://localhost:8091/products/01M552JH28NG35XD8J04PGAJXN
Response Information
Response Code: 200 - OK
Mean time per request: 139ms
Mean size per request: 2.19KB

Test Pass Percentage
50 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 714b1c89-cccf-4bd9-a072-ecec26f4e3ee
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control max-age=120, public
Date Sat, 17 Oct 2026 14:01:39 GMT
ETag "a809d5f7db14cce4ee3274eeae6dc222"
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"id":"01M552JH28NG35XD8J04PGAJXN","name":"Combination Pliers","description":"Versatile combination pliers designed for gripping, bending, and cutting wire with ease. Featuring chrome vanadium steel construction with induction-hardened cutting edges, these pliers deliver excellent grip and leverage for a wide range of tasks. The precision-machined jaws combine flat gripping surfaces with a pipe-grip section and integrated wire cutter for true multi-purpose functionality. Ergonomic bi-component handles reduce hand fatigue during extended use and provide a secure hold even with oily or gloved hands. The joint is precisely fitted to eliminate play and ensure smooth operation over thousands of cycles. Ideal for electricians, mechanics, and DIY enthusiasts tackling everyday projects around the workshop or job site.","price":0.01,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7J","by_name":"Helinton Fantin","by_url":"https:\/\/unsplash.com\/@fantin","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/W8BNwvOvW4M","file_name":"pliers01.avif","title":"Combination pliers"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWD","name":"Pliers","slug":"pliers","parent_id":"01M552JH0THC23EZ570GKVAFFH"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"},"specs":[{"id":"01M552JH6P79413ZXA0S6SD6KS","product_id":"01M552JH28NG35XD8J04PGAJXN","spec_name":"Handle Material","spec_value":"Bi-component","spec_unit":null},{"id":"01M552JH6P79413ZXA0S6SD6KQ","product_id":"01M552JH28NG35XD8J04PGAJXN","spec_name":"Length","spec_value":"200","spec_unit":"mm"},{"id":"01M552JH6P79413ZXA0S6SD6KR","product_id":"01M552JH28NG35XD8J04PGAJXN","spec_name":"Material","spec_value":"Chrome Vanadium Steel","spec_unit":null},{"id":"01m552p3hxb48dvzqrd7hdhh4p","product_id":"01M552JH28NG35XD8J04PGAJXN","spec_name":"Test","spec_value":"QA","spec_unit":null},{"id":"01M552JH6P79413ZXA0S6SD6KT","product_id":"01M552JH28NG35XD8J04PGAJXN","spec_name":"Warranty","spec_value":"2","spec_unit":"years"},{"id":"01M552JH6P79413ZXA0S6SD6KP","product_id":"01M552JH28NG35XD8J04PGAJXN","spec_name":"Weight","spec_value":"340","spec_unit":"g"}]}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Original price 0 1 0
Total 1 1 0
Test Failure
Test NameAssertion Error
Original price
expected 0.01 to deeply equal 14.15
Request Information
Request Method: GET
Request URL: http://localhost:8091/reports/total-sales-of-years
Response Information
Response Code: 200 - OK
Mean time per request: 343ms
Mean size per request: 55B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token d2caaa3c-e12d-430c-a3e7-fd224fc108d8
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:40 GMT
X-RateLimit-Limit 60
X-RateLimit-Remaining 59
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
[{"year":2025,"total":0},{"year":2026,"total":1400.85}]
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Response has data 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/reports/total-sales-per-country
Response Information
Response Code: 200 - OK
Mean time per request: 244ms
Mean size per request: 50B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token b43af46d-7fab-4b34-bd77-2ef066d46286
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:40 GMT
X-RateLimit-Limit 60
X-RateLimit-Remaining 58
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
[{"total_sales":"1400.85","billing_country":"NL"}]
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Response is an array 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/reports/top10-purchased-products
Response Information
Response Code: 200 - OK
Mean time per request: 268ms
Mean size per request: 407B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 46094570-9411-4a20-9ca1-70277e0ae366
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:41 GMT
X-RateLimit-Limit 60
X-RateLimit-Remaining 57
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
[{"name":"Cordless Drill 24V","count":18},{"name":"Measuring Tape","count":18},{"name":"Mini Screwdriver","count":18},{"name":"Combination Pliers","count":18},{"name":"Protective Gloves","count":17},{"name":"Safety Goggles","count":17},{"name":"Claw Hammer with Shock Reduction Grip","count":17},{"name":"Cordless Drill 20V","count":17},{"name":"Circular Saw","count":17},{"name":"Tool Cabinet","count":16}]
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Response has data 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/reports/top10-best-selling-categories
Response Information
Response Code: 200 - OK
Mean time per request: 228ms
Mean size per request: 536B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 01caf5b3-61ae-4a9f-92b8-175fd08f20d0
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:41 GMT
X-RateLimit-Limit 60
X-RateLimit-Remaining 56
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
[{"category_name":"Drill","total_earned":"5143.79"},{"category_name":"Workbench","total_earned":"4036.12"},{"category_name":"Sander","total_earned":"2956.61"},{"category_name":"Safety Gear","total_earned":"2416.35"},{"category_name":"Storage Solutions","total_earned":"2372.41"},{"category_name":"Hammer","total_earned":"1494.79"},{"category_name":"Saw","total_earned":"1363.23"},{"category_name":"Pliers","total_earned":"1347.95"},{"category_name":"Chisels","total_earned":"1075.84"},{"category_name":"Wrench","total_earned":"936.62"}]
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Response has data 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/reports/customers-by-country
Response Information
Response Code: 200 - OK
Mean time per request: 224ms
Mean size per request: 135B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 6d962ae1-3c9b-4608-b10b-9c7077d70528
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:42 GMT
X-RateLimit-Limit 60
X-RateLimit-Remaining 55
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
[{"amount":1,"country":"Austria"},{"amount":1,"country":"Germany"},{"amount":9,"country":"NL"},{"amount":1,"country":"United Kingdom"}]
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Response has data 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/reports/average-sales-per-month
Response Information
Response Code: 200 - OK
Mean time per request: 226ms
Mean size per request: 430B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 795a2e21-4e6f-4498-b56a-d83a70757f0c
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:42 GMT
X-RateLimit-Limit 60
X-RateLimit-Remaining 54
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
[{"month":1,"average":0,"amount":0},{"month":2,"average":0,"amount":0},{"month":3,"average":0,"amount":0},{"month":4,"average":0,"amount":0},{"month":5,"average":0,"amount":0},{"month":6,"average":0,"amount":0},{"month":7,"average":0,"amount":0},{"month":8,"average":0,"amount":0},{"month":9,"average":0,"amount":0},{"month":10,"average":1400.85,"amount":1},{"month":11,"average":0,"amount":0},{"month":12,"average":0,"amount":0}]
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Response has data 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/reports/average-sales-per-week
Response Information
Response Code: 200 - OK
Mean time per request: 222ms
Mean size per request: 1.78KB

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 96afcbd3-84f1-45b6-a38d-7ff3e4b56ba8
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:43 GMT
X-RateLimit-Limit 60
X-RateLimit-Remaining 53
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
[{"week":1,"average":0,"amount":0},{"week":2,"average":0,"amount":0},{"week":3,"average":0,"amount":0},{"week":4,"average":0,"amount":0},{"week":5,"average":0,"amount":0},{"week":6,"average":0,"amount":0},{"week":7,"average":0,"amount":0},{"week":8,"average":0,"amount":0},{"week":9,"average":0,"amount":0},{"week":10,"average":0,"amount":0},{"week":11,"average":0,"amount":0},{"week":12,"average":0,"amount":0},{"week":13,"average":0,"amount":0},{"week":14,"average":0,"amount":0},{"week":15,"average":0,"amount":0},{"week":16,"average":0,"amount":0},{"week":17,"average":0,"amount":0},{"week":18,"average":0,"amount":0},{"week":19,"average":0,"amount":0},{"week":20,"average":0,"amount":0},{"week":21,"average":0,"amount":0},{"week":22,"average":0,"amount":0},{"week":23,"average":0,"amount":0},{"week":24,"average":0,"amount":0},{"week":25,"average":0,"amount":0},{"week":26,"average":0,"amount":0},{"week":27,"average":0,"amount":0},{"week":28,"average":0,"amount":0},{"week":29,"average":0,"amount":0},{"week":30,"average":0,"amount":0},{"week":31,"average":0,"amount":0},{"week":32,"average":0,"amount":0},{"week":33,"average":0,"amount":0},{"week":34,"average":0,"amount":0},{"week":35,"average":0,"amount":0},{"week":36,"average":0,"amount":0},{"week":37,"average":0,"amount":0},{"week":38,"average":0,"amount":0},{"week":39,"average":0,"amount":0},{"week":40,"average":0,"amount":0},{"week":41,"average":1400.85,"amount":1},{"week":42,"average":0,"amount":0},{"week":43,"average":0,"amount":0},{"week":44,"average":0,"amount":0},{"week":45,"average":0,"amount":0},{"week":46,"average":0,"amount":0},{"week":47,"average":0,"amount":0},{"week":48,"average":0,"amount":0},{"week":49,"average":0,"amount":0},{"week":50,"average":0,"amount":0},{"week":51,"average":0,"amount":0},{"week":52,"average":0,"amount":0}]
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Response has data 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/reports/top10-purchased-products
Response Information
Response Code: 200 - OK
Mean time per request: 209ms
Mean size per request: 407B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 19fd6496-7dd9-4115-b835-a3982e7f8bd7
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:43 GMT
X-RateLimit-Limit 60
X-RateLimit-Remaining 52
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
[{"name":"Cordless Drill 24V","count":18},{"name":"Measuring Tape","count":18},{"name":"Mini Screwdriver","count":18},{"name":"Combination Pliers","count":18},{"name":"Protective Gloves","count":17},{"name":"Safety Goggles","count":17},{"name":"Claw Hammer with Shock Reduction Grip","count":17},{"name":"Cordless Drill 20V","count":17},{"name":"Circular Saw","count":17},{"name":"Tool Cabinet","count":16}]
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
At most 10 items 1 0 0
Sorted descending by count 1 0 0
Total 3 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/reports/top10-best-selling-categories
Response Information
Response Code: 200 - OK
Mean time per request: 209ms
Mean size per request: 536B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 9d529dc5-74a0-481b-bd4f-4c2b686a1857
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:43 GMT
X-RateLimit-Limit 60
X-RateLimit-Remaining 51
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
[{"category_name":"Drill","total_earned":"5143.79"},{"category_name":"Workbench","total_earned":"4036.12"},{"category_name":"Sander","total_earned":"2956.61"},{"category_name":"Safety Gear","total_earned":"2416.35"},{"category_name":"Storage Solutions","total_earned":"2372.41"},{"category_name":"Hammer","total_earned":"1494.79"},{"category_name":"Saw","total_earned":"1363.23"},{"category_name":"Pliers","total_earned":"1347.95"},{"category_name":"Chisels","total_earned":"1075.84"},{"category_name":"Wrench","total_earned":"936.62"}]
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
At most 10 items 1 0 0
Sorted descending by total_earned 1 0 0
Total 3 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/reports/total-sales-of-years
Response Information
Response Code: 403 - Forbidden
Mean time per request: 231ms
Mean size per request: 23B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 06264417-ca6d-47a8-afba-9c05b80c43b5
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:44 GMT
X-RateLimit-Limit 60
X-RateLimit-Remaining 59
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Forbidden"}
Test Information
NamePassedFailedSkipped
Status 403 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/reports/total-sales-per-country
Response Information
Response Code: 403 - Forbidden
Mean time per request: 206ms
Mean size per request: 23B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 2b3c507e-1947-4891-8b18-2502ab76e6ad
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:44 GMT
X-RateLimit-Limit 60
X-RateLimit-Remaining 58
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Forbidden"}
Test Information
NamePassedFailedSkipped
Status 403 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/reports/top10-purchased-products
Response Information
Response Code: 403 - Forbidden
Mean time per request: 202ms
Mean size per request: 23B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 8954457e-3511-4a1e-a6c7-cde2a8208a96
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:45 GMT
X-RateLimit-Limit 60
X-RateLimit-Remaining 57
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Forbidden"}
Test Information
NamePassedFailedSkipped
Status 403 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/reports/top10-best-selling-categories
Response Information
Response Code: 403 - Forbidden
Mean time per request: 197ms
Mean size per request: 23B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token d3b48495-7fe4-4a7f-a3d6-edcc28a31ea5
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:45 GMT
X-RateLimit-Limit 60
X-RateLimit-Remaining 56
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Forbidden"}
Test Information
NamePassedFailedSkipped
Status 403 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/reports/customers-by-country
Response Information
Response Code: 403 - Forbidden
Mean time per request: 202ms
Mean size per request: 23B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 936197b5-6b29-4557-82c7-c4eff1c019cf
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:46 GMT
X-RateLimit-Limit 60
X-RateLimit-Remaining 55
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Forbidden"}
Test Information
NamePassedFailedSkipped
Status 403 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/reports/average-sales-per-month
Response Information
Response Code: 403 - Forbidden
Mean time per request: 197ms
Mean size per request: 23B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 8ca3af5a-7b0f-4362-b14d-ddac07cc6ea0
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:46 GMT
X-RateLimit-Limit 60
X-RateLimit-Remaining 54
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Forbidden"}
Test Information
NamePassedFailedSkipped
Status 403 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/reports/average-sales-per-week
Response Information
Response Code: 403 - Forbidden
Mean time per request: 197ms
Mean size per request: 23B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 5d6a3278-0f4f-4310-a844-2b3e01e297bc
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:46 GMT
X-RateLimit-Limit 60
X-RateLimit-Remaining 53
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Forbidden"}
Test Information
NamePassedFailedSkipped
Status 403 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/reports/total-sales-of-years
Response Information
Response Code: 401 - Unauthorized
Mean time per request: 182ms
Mean size per request: 26B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token ebf47734-09eb-4ada-9e2a-3eaf4e804c47
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:47 GMT
X-RateLimit-Limit 60
X-RateLimit-Remaining 59
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Unauthorized"}
Test Information
NamePassedFailedSkipped
Status 401 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/reports/total-sales-per-country
Response Information
Response Code: 401 - Unauthorized
Mean time per request: 180ms
Mean size per request: 26B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token b0c08a8c-9c48-4f8f-954a-988cd7044b13
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:47 GMT
X-RateLimit-Limit 60
X-RateLimit-Remaining 58
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Unauthorized"}
Test Information
NamePassedFailedSkipped
Status 401 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/reports/top10-purchased-products
Response Information
Response Code: 401 - Unauthorized
Mean time per request: 178ms
Mean size per request: 26B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 403039d1-eae2-4bfb-bc4e-d24ed57d5d82
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:47 GMT
X-RateLimit-Limit 60
X-RateLimit-Remaining 57
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Unauthorized"}
Test Information
NamePassedFailedSkipped
Status 401 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/reports/top10-best-selling-categories
Response Information
Response Code: 401 - Unauthorized
Mean time per request: 168ms
Mean size per request: 26B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 2a84274f-9f37-4ef0-ab7f-743efa018648
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:48 GMT
X-RateLimit-Limit 60
X-RateLimit-Remaining 56
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Unauthorized"}
Test Information
NamePassedFailedSkipped
Status 401 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/reports/customers-by-country
Response Information
Response Code: 401 - Unauthorized
Mean time per request: 165ms
Mean size per request: 26B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token cb13f8e7-9467-45e9-b8cc-5272b14c992b
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:48 GMT
X-RateLimit-Limit 60
X-RateLimit-Remaining 55
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Unauthorized"}
Test Information
NamePassedFailedSkipped
Status 401 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/reports/average-sales-per-month
Response Information
Response Code: 401 - Unauthorized
Mean time per request: 165ms
Mean size per request: 26B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token c1cece9c-79a6-4460-b056-663b0ee3abb7
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:49 GMT
X-RateLimit-Limit 60
X-RateLimit-Remaining 54
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Unauthorized"}
Test Information
NamePassedFailedSkipped
Status 401 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/reports/average-sales-per-week
Response Information
Response Code: 401 - Unauthorized
Mean time per request: 4.9s
Mean size per request: 26B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 0628f767-ffe1-40ea-b009-15b099fffaa6
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:54 GMT
X-RateLimit-Limit 60
X-RateLimit-Remaining 53
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Unauthorized"}
Test Information
NamePassedFailedSkipped
Status 401 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/reports/total-sales-of-years
Response Information
Response Code: 200 - OK
Mean time per request: 227ms
Mean size per request: 55B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 4996ccf5-15af-4ce3-9b6d-d0b1bc5a5826
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:54 GMT
X-RateLimit-Limit 60
X-RateLimit-Remaining 50
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
[{"year":2025,"total":0},{"year":2026,"total":1400.85}]
Test Information
NamePassedFailedSkipped
Status in [200, 429] 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/register
Response Information
Response Code: 201 - Created
Mean time per request: 1237ms
Mean size per request: 328B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 8755a855-13ff-4631-aa7a-9974e2def4ed
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 343
Request Body
{
          "first_name": "QA",
          "last_name": "Tester",
          "address": {
            "street": "Teststraat 1",
            "city": "Amsterdam",
            "state": "Noord-Holland",
            "country": "NL",
            "postal_code": "1011 AB"
          },
          "phone": "0612345678",
          "dob": "1990-01-01",
          "email": "qa+pw-1792245714846@test.local",
          "password": "[password masked]"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:56 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"first_name":"QA","last_name":"Tester","phone":"0612345678","dob":"1990-01-01","email":"qa+pw-1792245714846@test.local","id":"01m552pn3s4wn6s3hacfb9709n","created_at":"2026-10-17 14:01:56","address":{"street":"Teststraat 1","house_number":null,"city":"Amsterdam","state":"Noord-Holland","country":"NL","postal_code":"1011 AB"}}
Test Information
NamePassedFailedSkipped
Status 201 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/login
Response Information
Response Code: 200 - OK
Mean time per request: 928ms
Mean size per request: 429B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 703679ec-8759-4627-8645-b206f6e15c8e
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 93
Request Body
{
          "email": "qa+pw-1792245714846@test.local",
          "password": "[password masked]"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:57 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"access_token":"eyJ…[masked]","token_type":"bearer","expires_in":300}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/change-password
Response Information
Response Code: 200 - OK
Mean time per request: 567ms
Mean size per request: 16B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 7c54cc02-ca23-46ea-bbc0-9dd51f94a9dd
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 141
Request Body
{
          "current_password": "[password masked]",
          "new_password": "Nou-Pass!2026x",
          "new_password_confirmation": "Nou-Pass!2026x"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:57 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"success":true}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
success = true 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/login
Response Information
Response Code: 200 - OK
Mean time per request: 151ms
Mean size per request: 429B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 21330004-bb60-41fc-9bb4-7c61b47ab4e4
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 79
Request Body
{
          "email": "qa+pw-1792245714846@test.local",
          "password": "Nou-Pass!2026x"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:58 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"access_token":"eyJ…[masked]","token_type":"bearer","expires_in":300}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/login
Response Information
Response Code: 401 - Unauthorized
Mean time per request: 155ms
Mean size per request: 24B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 78ad1474-40f2-4e19-a531-710c4177d01e
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 93
Request Body
{
          "email": "qa+pw-1792245714846@test.local",
          "password": "[password masked]"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:58 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"error":"Unauthorized"}
Test Information
NamePassedFailedSkipped
Status 401 1 0 0
No access_token in response 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/register
Response Information
Response Code: 201 - Created
Mean time per request: 878ms
Mean size per request: 328B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 0533bf25-7171-4927-92f0-0591a69e890e
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 343
Request Body
{
          "first_name": "QA",
          "last_name": "Tester",
          "address": {
            "street": "Teststraat 1",
            "city": "Amsterdam",
            "state": "Noord-Holland",
            "country": "NL",
            "postal_code": "1011 AB"
          },
          "phone": "0612345678",
          "dob": "1990-01-01",
          "email": "qa+fp-1792245718882@test.local",
          "password": "[password masked]"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:01:59 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"first_name":"QA","last_name":"Tester","phone":"0612345678","dob":"1990-01-01","email":"qa+fp-1792245718882@test.local","id":"01m552prprkdpwghtrwzznrqyn","created_at":"2026-10-17 14:01:59","address":{"street":"Teststraat 1","house_number":null,"city":"Amsterdam","state":"Noord-Holland","country":"NL","postal_code":"1011 AB"}}
Test Information
NamePassedFailedSkipped
Status 201 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/forgot-password
Response Information
Response Code: 200 - OK
Mean time per request: 161ms
Mean size per request: 16B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 54030080-88e0-4280-8a8b-8b45eb068726
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 47
Request Body
{
          "email": "qa+fp-1792245718882@test.local"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:02:00 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"success":true}
Test Information
NamePassedFailedSkipped
No server error (5xx) 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/forgot-password
Response Information
Response Code: 422 - Unprocessable Content
Mean time per request: 128ms
Mean size per request: 98B

Test Pass Percentage
33 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 1385210a-b6cc-4401-bfaf-1f5b80a64d06
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 51
Request Body
{
          "email": "nu-exista-1792245587396@test.local"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:02:00 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"The selected email is invalid.","errors":{"email":["The selected email is invalid."]}}
Test Information
NamePassedFailedSkipped
No server error (5xx) 1 0 0
Same status as for the existing email 0 1 0
Same message as for the existing email 0 1 0
Total 1 2 0
Test Failures
Test NameAssertion Error
Same status as for the existing email
expected 422 to deeply equal 200
Same message as for the existing email
expected '{"message":"The selected email is inv…' to deeply equal '{"success":true}'
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/register
Response Information
Response Code: 201 - Created
Mean time per request: 267ms
Mean size per request: 328B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 8577c948-bdbd-49b1-9b3f-30682cc9790a
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 343
Request Body
{
          "first_name": "QA",
          "last_name": "Tester",
          "address": {
            "street": "Teststraat 1",
            "city": "Amsterdam",
            "state": "Noord-Holland",
            "country": "NL",
            "postal_code": "1011 AB"
          },
          "phone": "0612345678",
          "dob": "1990-01-01",
          "email": "qa+lk-1792245720638@test.local",
          "password": "[password masked]"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:02:00 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"first_name":"QA","last_name":"Tester","phone":"0612345678","dob":"1990-01-01","email":"qa+lk-1792245720638@test.local","id":"01m552pstvrzafyq8akdaawdzv","created_at":"2026-10-17 14:02:00","address":{"street":"Teststraat 1","house_number":null,"city":"Amsterdam","state":"Noord-Holland","country":"NL","postal_code":"1011 AB"}}
Test Information
NamePassedFailedSkipped
Status 201 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/login
Response Information
Response Code: 401 - Unauthorized
Mean time per request: 152ms
Mean size per request: 24B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 19885cbf-a270-4a03-a3c2-ea2c72f48b37
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 76
Request Body
{
          "email": "qa+lk-1792245720638@test.local",
          "password": "Gresita!123"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:02:01 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"error":"Unauthorized"}
Test Information
NamePassedFailedSkipped
Status 401 1 0 0
No access_token in response 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/login
Response Information
Response Code: 401 - Unauthorized
Mean time per request: 155ms
Mean size per request: 24B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 742dfeed-676a-4c4b-88bc-0ed2911c9e61
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 76
Request Body
{
          "email": "qa+lk-1792245720638@test.local",
          "password": "Gresita!123"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:02:01 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"error":"Unauthorized"}
Test Information
NamePassedFailedSkipped
Status 401 1 0 0
No access_token in response 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/login
Response Information
Response Code: 401 - Unauthorized
Mean time per request: 153ms
Mean size per request: 24B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 9474d3f5-6ac9-4483-9546-6a672ed3fd31
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 76
Request Body
{
          "email": "qa+lk-1792245720638@test.local",
          "password": "Gresita!123"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:02:02 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"error":"Unauthorized"}
Test Information
NamePassedFailedSkipped
Status 401 1 0 0
No access_token in response 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/login
Response Information
Response Code: 423 - Locked
Mean time per request: 106ms
Mean size per request: 87B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 53e592b2-661c-484b-80a4-739080e018f6
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 76
Request Body
{
          "email": "qa+lk-1792245720638@test.local",
          "password": "Gresita!123"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:02:02 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"error":"Account locked, too many failed attempts. Please contact the administrator."}
Test Information
NamePassedFailedSkipped
Status 423 1 0 0
No access_token in response 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/login
Response Information
Response Code: 423 - Locked
Mean time per request: 105ms
Mean size per request: 87B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token f5ba0813-1e31-4803-80e6-0f8f8e535520
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 93
Request Body
{
          "email": "qa+lk-1792245720638@test.local",
          "password": "[password masked]"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:02:02 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"error":"Account locked, too many failed attempts. Please contact the administrator."}
Test Information
NamePassedFailedSkipped
Status 423 1 0 0
No access_token in response 1 0 0
Account locked message 1 0 0
Total 3 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/register
Response Information
Response Code: 201 - Created
Mean time per request: 262ms
Mean size per request: 328B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 890c0775-7f96-4127-8921-2fa678b5d3e3
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 343
Request Body
{
          "first_name": "QA",
          "last_name": "Tester",
          "address": {
            "street": "Teststraat 1",
            "city": "Amsterdam",
            "state": "Noord-Holland",
            "country": "NL",
            "postal_code": "1011 AB"
          },
          "phone": "0612345678",
          "dob": "1990-01-01",
          "email": "qa+tp-1792245722807@test.local",
          "password": "[password masked]"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:02:03 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"first_name":"QA","last_name":"Tester","phone":"0612345678","dob":"1990-01-01","email":"qa+tp-1792245722807@test.local","id":"01m552pvyh5q16x7869hc009fc","created_at":"2026-10-17 14:02:03","address":{"street":"Teststraat 1","house_number":null,"city":"Amsterdam","state":"Noord-Holland","country":"NL","postal_code":"1011 AB"}}
Test Information
NamePassedFailedSkipped
Status 201 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/login
Response Information
Response Code: 200 - OK
Mean time per request: 149ms
Mean size per request: 429B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 13b1a359-6395-489b-a1e1-464455395223
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 93
Request Body
{
          "email": "qa+tp-1792245722807@test.local",
          "password": "[password masked]"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:02:03 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"access_token":"eyJ…[masked]","token_type":"bearer","expires_in":300}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/totp/setup
Response Information
Response Code: 200 - OK
Mean time per request: 242ms
Mean size per request: 221B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token a627f364-45f6-48f2-9fab-6c76c192e562
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 0
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:02:03 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"secret":"Q4W4PAL4OK2ILBZE","qrCodeUrl":"otpauth:\/\/totp\/Practice%20Software%20Testing:qa%2Btp-1792245722807%40test.local?secret=Q4W4PAL4OK2ILBZE&issuer=Practice%20Software%20Testing&algorithm=SHA1&digits=6&period=30"}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Secret received 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/totp/verify
Response Information
Response Code: 200 - OK
Mean time per request: 159ms
Mean size per request: 39B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token a87af86f-751d-4421-a833-79bb1de8f69b
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 22
Request Body
{
          "totp": "251063"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:02:04 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"TOTP enabled successfully"}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/login
Response Information
Response Code: 200 - OK
Mean time per request: 230ms
Mean size per request: 461B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 3ee15b7f-e928-490d-b0cc-2b4ad51ee2b3
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 93
Request Body
{
          "email": "qa+tp-1792245722807@test.local",
          "password": "[password masked]"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:02:04 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"TOTP required","requires_totp":true,"access_token":"eyJ…[masked]"}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
requires_totp = true 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/users/me
Response Information
Response Code: 401 - Unauthorized
Mean time per request: 184ms
Mean size per request: 38B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 6b06462c-fd4e-4061-9af5-e711900c62b3
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:02:05 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Unauthorized token usage"}
Test Information
NamePassedFailedSkipped
Status in [401, 403] 1 0 0
Total 1 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/login
Response Information
Response Code: 200 - OK
Mean time per request: 219ms
Mean size per request: 454B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 992197e2-b303-4320-899e-1be9bd5cd106
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 439
Request Body
{
          "access_token": "eyJ…[masked]",
          "totp": "251063"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:02:05 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"access_token":"eyJ…[masked]","token_type":"bearer","expires_in":300}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
Full token received 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/login
Response Information
Response Code: 401 - Unauthorized
Mean time per request: 150ms
Mean size per request: 24B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token cd620687-52e8-4f98-90b4-25a7ccc33397
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 439
Request Body
{
          "access_token": "eyJ…[masked]",
          "totp": "000000"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:02:05 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"error":"Invalid TOTP"}
Test Information
NamePassedFailedSkipped
Status in [400, 401] 1 0 0
No access_token in response 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/totp/login/totp
Response Information
Response Code: 500 - Internal Server Error
Mean time per request: 130ms
Mean size per request: 8.08KB

Test Pass Percentage
0 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token a47c22e2-1d94-4cfe-bc8a-1aa99e2b0975
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 439
Request Body
{
          "access_token": "eyJ…[masked]",
          "totp": "251063"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:02:06 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{
            "message": "Method App\\Http\\Controllers\\TOTPController::loginWithTOTP does not exist.",
            "exception": "BadMethodCallException",
            "file": "/var/www/vendor/laravel/framework/src/Illuminate/Routing/Controller.php",
            "line": 68,
            "trace": [
                {
                    "file": "/var/www/vendor/laravel/framework/src/Illuminate/Routing/Controller.php",
                    "line": 54,
                    "function": "__call",
                    "class": "Illuminate\\Routing\\Controller",
                    "type": "->"
                },
                {
                    "file": "/var/www/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php",
                    "line": 43,
                    "function": "callAction",
                    "class": "Illuminate\\Routing\\Controller",
                    "type": "->"
                },
                {
                    "file": "/var/www/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
                    "line": 276,
                    "function": "dispatch",
                    "class": "Illuminate\\Routing\\ControllerDispatcher",
                    "type": "->"
                },
                {
                    "file": "/var/www/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
                    "line": 216,
                    "function": "runController",
                    "class": "Illuminate\\Routing\\Route",
                    "type": "->"
                },
                {
                    "file": "/var/www/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
                    "line": 822,
                    "function": "run",
                    "class": "Illuminate\\Routing\\Route",
                    "type": "->"
                },
                {
                    "file": "/var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
                    "line": 180,
                    "function": "Illuminate\\Routing\\{closure}",
                    "class": "Illuminate\\Routing\\Router",
                    "type": "->"
                },
                {
                    "file": "/var/www/app/Http/Middleware/AssignGuard.php",
                    "line": 24,
                    "function": "Illuminate\\Pipeline\\{closure}",
                    "class": "Illuminate\\Pipeline\\Pipeline",
                    "type": "->"
                },
                {
                    "file": "/var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
                    "line": 219,
                    "function": "handle",
                    "class": "App\\Http\\Middleware\\AssignGuard",
                    "type": "->"
                },
                {
                    "file": "/var/www/app/Http/Middleware/Authenticate.php",
                    "line": 99,
                    "function": "Illuminate\\Pipeline\\{closure}",
                    "class": "Illuminate\\Pipeline\\Pipeline",
                    "type": "->"
                },
                {
                    "file": "/var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
                    "line": 219,
                    "function": "handle",
                    "class": "App\\Http\\Middleware\\Authenticate",
                    "type": "->"
                },
                {
                    "file": "/var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
                    "line": 137,
                    "function": "Illuminate\\Pipeline\\{closure}",
                    "class": "Illuminate\\Pipeline\\Pipeline",
                    "type": "->"
                },
                {
                    "file": "/var/www/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
                    "line": 821,
                    "function": "then",
                    "class": "Illuminate\\Pipeline\\Pipeline",
                    "type": "->"
                },
                {
                    "file": "/var/www/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
                    "line": 800,
                    "function": "runRouteWithinStack",
                    "class": "Illuminate\\Routing\\Router",
                    "type": "->"
                },
                {
                    "file": "/var/www/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
                    "line": 764,
                    "function": "runRoute",
                    "class": "Illuminate\\Routing\\Router",
                    "type": "->"
                },
                {
                    "file": "/var/www/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
                    "line": 753,
                    "function": "dispatchToRoute",
                    "class": "Illuminate\\Routing\\Router",
                    "type": "->"
                },
                {
                    "file": "/var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
                    "line": 200,
                    "function": "dispatch",
                    "class": "Illuminate\\Routing\\Router",
                    "type": "->"
                },
                {
                    "file": "/var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
                    "line": 180,
                    "function": "Illuminate\\Foundation\\Http\\{closure}",
                    "class": "Illuminate\\Foundation\\Http\\Kernel",
                    "type": "->"
                },
                {
                    "file": "/var/www/app/Http/Middleware/PaginateMiddleware.php",
                    "line": 22,
                    "function": "Illuminate\\Pipeline\\{closure}",
                    "class": "Illuminate\\Pipeline\\Pipeline",
                    "type": "->"
                },
                {
                    "file": "/var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
                    "line": 219,
                    "function": "handle",
                    "class": "App\\Http\\Middleware\\PaginateMiddleware",
                    "type": "->"
                },
                {
                    "file": "/var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
                    "line": 21,
                    "function": "Illuminate\\Pipeline\\{closure}",
                    "class": "Illuminate\\Pipeline\\Pipeline",
                    "type": "->"
                },
                {
                    "file": "/var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php",
                    "line": 31,
                    "function": "handle",
                    "class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
                    "type": "->"
                },
                {
                    "file": "/var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
                    "line": 219,
                    "function": "handle",
                    "class": "Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull",
                    "type": "->"
                },
                {
                    "file": "/var/www/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php",
                    "line": 27,
                    "function": "Illuminate\\Pipeline\\{closure}",
                    "class": "Illuminate\\Pipeline\\Pipeline",
                    "type": "->"
                },
                {
                    "file": "/var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
                    "line": 219,
                    "function": "handle",
                    "class": "Illuminate\\Http\\Middleware\\ValidatePostSize",
                    "type": "->"
                },
                {
                    "file": "/var/www/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php",
                    "line": 74,
                    "function": "Illuminate\\Pipeline\\{closure}",
                    "class": "Illuminate\\Pipeline\\Pipeline",
                    "type": "->"
                },
                {
                    "file": "/var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
                    "line": 219,
                    "function": "handle",
                    "class": "Illuminate\\Http\\Middleware\\HandleCors",
                    "type": "->"
                },
                {
                    "file": "/var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
                    "line": 137,
                    "function": "Illuminate\\Pipeline\\{closure}",
                    "class": "Illuminate\\Pipeline\\Pipeline",
                    "type": "->"
                },
                {
                    "file": "/var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
                    "line": 175,
                    "function": "then",
                    "class": "Illuminate\\Pipeline\\Pipeline",
                    "type": "->"
                },
                {
                    "file": "/var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
                    "line": 144,
                    "function": "sendRequestThroughRouter",
                    "class": "Illuminate\\Foundation\\Http\\Kernel",
                    "type": "->"
                },
                {
                    "file": "/var/www/public/index.php",
                    "line": 53,
                    "function": "handle",
                    "class": "Illuminate\\Foundation\\Http\\Kernel",
                    "type": "->"
                }
            ]
        }
Test Information
NamePassedFailedSkipped
No server error (5xx) 0 1 0
Total 0 1 0
Test Failure
Test NameAssertion Error
No server error (5xx)
expected 500 to be below 500
Request Information
Request Method: POST
Request URL: http://localhost:8091/carts/01m552m5kn0cy18sy8da5rw1p8
Response Information
Response Code: 422 - Unprocessable Content
Mean time per request: 144ms
Mean size per request: 117B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 8c1e3c4c-fc4e-4451-96fb-2ba0c49607f8
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 69
Request Body
{
          "product_id": "01M552JH28NG35XD8J04PGAJXN",
          "quantity": "doi"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:02:06 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"The quantity field must be an integer.","errors":{"quantity":["The quantity field must be an integer."]}}
Test Information
NamePassedFailedSkipped
Status 422 1 0 0
No server error (5xx) 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/products
Response Information
Response Code: 422 - Unprocessable Content
Mean time per request: 115ms
Mean size per request: 47B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token de25302f-1f06-4f0a-a1b9-7a184ec9b432
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 302
Request Body
{
          "name": "Test product 1792245587396",
          "description": "Created by the API test",
          "price": "ieftin",
          "category_id": "01M552JH0YW2D66AXDEDJGQGWD",
          "brand_id": "01M552JGRRJK0308ZCZCH32JAH",
          "product_image_id": "01M552JH1JNQZMARG3VDF4TG7J",
          "is_location_offer": false,
          "is_rental": false
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:02:06 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"price":["The price field must be a number."]}
Test Information
NamePassedFailedSkipped
Status 422 1 0 0
No server error (5xx) 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/products
Response Information
Response Code: 422 - Unprocessable Content
Mean time per request: 112ms
Mean size per request: 60B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 7130558d-3d86-45d9-9e98-74a7c970df4e
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 300
Request Body
{
          "name": "Test product 1792245587396",
          "description": "Created by the API test",
          "price": 9.99,
          "category_id": "01M552JH0YW2D66AXDEDJGQGWD",
          "brand_id": "01M552JGRRJK0308ZCZCH32JAH",
          "product_image_id": "01M552JH1JNQZMARG3VDF4TG7J",
          "is_location_offer": false,
          "is_rental": "poate"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:02:07 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"is_rental":["The is rental field must be true or false."]}
Test Information
NamePassedFailedSkipped
Status 422 1 0 0
No server error (5xx) 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/register
Response Information
Response Code: 422 - Unprocessable Content
Mean time per request: 215ms
Mean size per request: 57B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token fc2f500b-3755-4011-bfde-1cd729691996
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 337
Request Body
{
          "first_name": 123,
          "last_name": "Tester",
          "address": {
            "street": "Teststraat 1",
            "city": "Amsterdam",
            "state": "Noord-Holland",
            "country": "NL",
            "postal_code": "1011 AB"
          },
          "phone": "0612345678",
          "dob": "1990-01-01",
          "email": "qa+1792245727324@test.local",
          "password": "Qa-Test!2026#1792245727324"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:02:07 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"first_name":["The first name field must be a string."]}
Test Information
NamePassedFailedSkipped
Status 422 1 0 0
No server error (5xx) 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/register
Response Information
Response Code: 422 - Unprocessable Content
Mean time per request: 242ms
Mean size per request: 51B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token df840690-6a70-43f2-9f2d-83a1edc3265d
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 204
Request Body
{
          "first_name": "QA",
          "last_name": "Tester",
          "address": "text",
          "phone": "0612345678",
          "dob": "1990-01-01",
          "email": "qa+1792245727743@test.local",
          "password": "Qa-Test!2026#1792245727743"
        }
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:02:08 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"address":["The address field must be an array."]}
Test Information
NamePassedFailedSkipped
Status 422 1 0 0
No server error (5xx) 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/login
Response Information
Response Code: 401 - Unauthorized
Mean time per request: 101ms
Mean size per request: 33B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 3f7043bd-4bd5-4029-a534-3513875ac947
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 10
Request Body
{"email": 
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:02:08 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"error":"Invalid login request"}
Test Information
NamePassedFailedSkipped
Status in [400, 401, 422] 1 0 0
No internal details in response 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/register
Response Information
Response Code: 422 - Unprocessable Content
Mean time per request: 113ms
Mean size per request: 189B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token dc67da6d-3d83-4dc7-a605-38edd6b89b6d
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 9
Request Body
nu e json
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:02:08 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"first_name":["The first name field is required."],"last_name":["The last name field is required."],"email":["The email field is required."],"password":["The password field is required."]}
Test Information
NamePassedFailedSkipped
Status in [400, 401, 422] 1 0 0
No internal details in response 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/invoices
Response Information
Response Code: 422 - Unprocessable Content
Mean time per request: 192ms
Mean size per request: 345B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token ec6c2d85-607a-4529-9025-f8a60396535f
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 12
Request Body
{"cart_id": 
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:02:09 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"payment_method":["The payment method field is required."],"payment_details":["The payment details field must be present."],"billing_street":["The billing street field is required."],"billing_city":["The billing city field is required."],"billing_country":["The billing country field is required."],"cart_id":["The cart id field is required."]}
Test Information
NamePassedFailedSkipped
Status in [400, 401, 422] 1 0 0
No internal details in response 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/products?page=abc
Response Information
Response Code: 200 - OK
Mean time per request: 346ms
Mean size per request: 12.46KB

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 9b31108b-82bf-45f4-bec1-195cbf06f340
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control max-age=120, public
Date Sat, 17 Oct 2026 14:02:09 GMT
ETag "10d3661b9d56e0941ffcccc7da778944"
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"current_page":1,"data":[{"id":"01M552JH28NG35XD8J04PGAJXN","name":"Combination Pliers","description":"Versatile combination pliers designed for gripping, bending, and cutting wire with ease. Featuring chrome vanadium steel construction with induction-hardened cutting edges, these pliers deliver excellent grip and leverage for a wide range of tasks. The precision-machined jaws combine flat gripping surfaces with a pipe-grip section and integrated wire cutter for true multi-purpose functionality. Ergonomic bi-component handles reduce hand fatigue during extended use and provide a secure hold even with oily or gloved hands. The joint is precisely fitted to eliminate play and ensure smooth operation over thousands of cycles. Ideal for electricians, mechanics, and DIY enthusiasts tackling everyday projects around the workshop or job site.","price":0.01,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7J","by_name":"Helinton Fantin","by_url":"https:\/\/unsplash.com\/@fantin","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/W8BNwvOvW4M","file_name":"pliers01.avif","title":"Combination pliers"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWD","name":"Pliers","slug":"pliers"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH2AG9122BMKVRF3XH0Z","name":"Pliers","description":"Reliable general-purpose pliers crafted from drop-forged carbon steel for long-lasting durability in demanding working conditions. The serrated jaws provide a firm grip on a variety of materials including wire, nails, small fasteners, and irregularly shaped objects. Comfortable rubber-coated handles absorb vibration and reduce hand fatigue during extended use, while the non-slip surface ensures confident handling. The precision pivot joint maintains alignment under load, delivering smooth, controlled jaw action with every squeeze. Heat-treated steel construction resists wear and deformation even under heavy use. A must-have foundational tool for any workshop, equally suited for professional tradespeople and home repair projects.","price":12.01,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7K","by_name":"Everyday basics","by_url":"https:\/\/unsplash.com\/@zanardi","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/I8eTuMmxIfo","file_name":"pliers02.avif","title":"Pliers"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWD","name":"Pliers","slug":"pliers"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH2BGG1K6K9GEJTT8GEQ","name":"Bolt Cutters","description":"Heavy-duty bolt cutters engineered to slice through hardened bolts, chains, padlocks, and wire fencing with minimal effort. The compound leverage mechanism multiplies your cutting force by a factor of 30, enabling clean cuts through materials up to 10mm in diameter. Hardened alloy steel blades are precisely ground and heat-treated to maintain a sharp edge through years of repeated use on tough materials. Ergonomic rubber grips and the generous 750mm handle length provide excellent control, leverage, and reach during overhead or awkward-angle cuts. An adjustable blade tension screw lets you fine-tune the jaw alignment for optimal cutting performance. Built for demolition crews, locksmiths, fencing contractors, and maintenance professionals who need reliable cutting power day after day.","price":48.41,"is_location_offer":true,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7M","by_name":"Michael Dziedzic","by_url":"https:\/\/unsplash.com\/@lazycreekimages","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/pM9pkc9J918","file_name":"pliers03.avif","title":"Bolt cutters"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWD","name":"Pliers","slug":"pliers"},"brand":{"id":"01M552JGRS3QMESHAQ8PRPA5QJ","name":"MightyCraft Hardware"}},{"id":"01M552JH2DQD17DR3ERTSE1Z2M","name":"Long Nose Pliers","description":"Precision long nose pliers with narrow tapered jaws designed for reaching into tight, confined spaces and bending fine wire with accuracy. Made from chrome vanadium steel with induction-hardened cutting edges that cleanly sever copper, brass, and steel wire without crushing or fraying. The slim jaw profile tapers to a fine point, making these pliers indispensable for electrical terminal work, jewelry making, and intricate mechanical repairs. Bi-component comfort grips minimize hand strain during detailed tasks requiring a steady hand and controlled pressure. The leaf-spring joint returns the handles to the open position automatically, speeding up repetitive tasks. A must-have precision tool trusted by electricians, electronics technicians, and hobbyists worldwide.","price":14.24,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":false,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7N","by_name":"Brett Jordan","by_url":"https:\/\/unsplash.com\/@brett_jordan","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/GamuDTVm02g","file_name":"pliers04.avif","title":"Long nose pliers"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWD","name":"Pliers","slug":"pliers"},"brand":{"id":"01M552JGRS3QMESHAQ8PRPA5QJ","name":"MightyCraft Hardware"}},{"id":"01M552JH2EXDQ749444RB4RAMH","name":"Slip Joint Pliers","description":"Adjustable slip joint pliers that feature a two-position pivot mechanism for switching between regular and wide jaw openings to accommodate different fastener sizes. The PVC-coated handles offer a comfortable, non-slip grip while the precisely machined jaws securely grasp round, flat, and hexagonal objects without slipping. Constructed from durable drop-forged carbon steel that has been heat-treated to withstand heavy daily use in professional environments. The curved jaw section grips pipes and cylindrical objects, while the flat front surface handles nuts, bolts, and sheet materials. A wire cutter integrated near the pivot handles light cutting tasks without reaching for a separate tool. Perfect for plumbing, automotive, HVAC, and general maintenance work where a single versatile gripping tool saves time.","price":9.17,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7P","by_name":"Yasin Hasan","by_url":"https:\/\/unsplash.com\/@yasin","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/dwlxTSpfKXg","file_name":"pliers05.avif","title":"Slip joint pliers"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWD","name":"Pliers","slug":"pliers"},"brand":{"id":"01M552JGRS3QMESHAQ8PRPA5QJ","name":"MightyCraft Hardware"}},{"id":"01M552JH2F4ZF8Y8F7T1EBMA3H","name":"Claw Hammer with Shock Reduction Grip","description":"Ergonomic claw hammer featuring an advanced shock reduction grip system that absorbs up to 70% of impact vibrations, protecting your wrist, elbow, and shoulder during prolonged nailing sessions. The 450g carbon steel head is precision-balanced and heat-treated for maximum hardness, ensuring accurate nail driving with minimal effort on every swing. The curved claw design effortlessly removes nails without damaging surrounding wood surfaces, making it equally useful for construction and renovation work. A fiberglass-reinforced handle combines lightweight strength with exceptional durability that far outlasts traditional wooden handles. The overmolded soft-grip zone conforms to your hand shape for a custom-feeling, fatigue-free hold throughout long working days. Recommended for professional framing, carpentry, and renovation projects where operator comfort matters as much as striking performance.","price":13.41,"is_location_offer":true,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7Q","by_name":"iMattSmart","by_url":"https:\/\/unsplash.com\/@imattsmart","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/jaLaLQdkBOE","file_name":"hammer01.avif","title":"Claw Hammer"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGW9","name":"Hammer","slug":"hammer"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH2GD6Q6AVJJSHVS7GKD","name":"Hammer","description":"A dependable standard claw hammer suitable for driving and removing nails in everyday construction, carpentry, and home improvement projects. The 350g carbon steel head is drop-forged and heat-treated for maximum hardness, then fitted to a traditional wooden handle that provides natural shock absorption with each strike. Well-balanced weight distribution between the head and handle ensures accurate strikes with minimal wrist effort, reducing fatigue during repetitive nailing tasks. The polished face resists rust and provides a smooth surface that drives nails cleanly without leaving marks on finish materials. A gently curved claw provides reliable nail extraction leverage without excessive force. This versatile hammer belongs in every toolbox, from professional carpentry workshops to home garages and apartment maintenance kits.","price":12.58,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7R","by_name":"Jozsef Hocza","by_url":"https:\/\/unsplash.com\/@hocza","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/D3nouOYbALc","file_name":"hammer02.avif","title":"Hammer"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGW9","name":"Hammer","slug":"hammer"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH2JAZV07V79R70NNDNX","name":"Claw Hammer","description":"Traditional claw hammer with a polished carbon steel head engineered for driving and removing nails with precision and confidence. The rubber-wrapped handle provides a secure, comfortable grip even in wet, dusty, or cold conditions where bare metal or wood handles would slip. At 500g, it offers the ideal balance between striking power and maneuverability for general carpentry, framing, and construction tasks. The curved claw design allows for smooth nail extraction without gouging or marring wood surfaces, protecting your finished work. The head-to-handle connection uses an epoxy-bonded wedge system that prevents loosening over time. A reliable, no-nonsense tool that professional carpenters and weekend builders alike reach for every day.","price":11.48,"is_location_offer":true,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7S","by_name":"Andrew George","by_url":"https:\/\/unsplash.com\/@andrewjoegeorge","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/YU2mCvXR0wA","file_name":"hammer03.avif","title":"Claw Hammer"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGW9","name":"Hammer","slug":"hammer"},"brand":{"id":"01M552JGRS3QMESHAQ8PRPA5QJ","name":"MightyCraft Hardware"}},{"id":"01M552JH2K9QV3KQSQ6ZBBD61D","name":"Thor Hammer","description":"The legendary Thor Hammer combines premium craftsmanship with raw striking power in a tool that is truly built to last generations. Forged from Uru metal with a hand-wrapped leather grip, this extraordinary 5kg masterpiece delivers unmatched impact force for the most demanding demolition, forging, and heavy construction tasks. The perfectly balanced oversized head ensures every swing transfers maximum energy to the target, while the enlarged striking face covers more surface area than any conventional hammer. Despite its impressive mass, the ergonomic handle design and precise weight distribution allow for surprisingly controlled, accurate swings. This is not merely a tool but a statement piece for those who accept nothing less than the absolute best in their workshop. Comes with a lifetime warranty because true legends never fade. Please note: only one Thor Hammer is permitted per customer.","price":11.14,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7T","by_name":"ANIRUDH","by_url":"https:\/\/unsplash.com\/@lanirudhreddy","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/3esjG-nlgyk","file_name":"hammer04.avif","title":"Hammer"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGW9","name":"Hammer","slug":"hammer"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}}],"from":1,"last_page":6,"per_page":9,"to":9,"total":52}
Test Information
NamePassedFailedSkipped
No server error (5xx) 1 0 0
No internal details in response 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/products?page=-1
Response Information
Response Code: 200 - OK
Mean time per request: 155ms
Mean size per request: 12.46KB

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 88a69ee1-8df5-49c7-b6da-e5398e4aebb7
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control max-age=120, public
Date Sat, 17 Oct 2026 14:02:09 GMT
ETag "10d3661b9d56e0941ffcccc7da778944"
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"current_page":1,"data":[{"id":"01M552JH28NG35XD8J04PGAJXN","name":"Combination Pliers","description":"Versatile combination pliers designed for gripping, bending, and cutting wire with ease. Featuring chrome vanadium steel construction with induction-hardened cutting edges, these pliers deliver excellent grip and leverage for a wide range of tasks. The precision-machined jaws combine flat gripping surfaces with a pipe-grip section and integrated wire cutter for true multi-purpose functionality. Ergonomic bi-component handles reduce hand fatigue during extended use and provide a secure hold even with oily or gloved hands. The joint is precisely fitted to eliminate play and ensure smooth operation over thousands of cycles. Ideal for electricians, mechanics, and DIY enthusiasts tackling everyday projects around the workshop or job site.","price":0.01,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7J","by_name":"Helinton Fantin","by_url":"https:\/\/unsplash.com\/@fantin","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/W8BNwvOvW4M","file_name":"pliers01.avif","title":"Combination pliers"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWD","name":"Pliers","slug":"pliers"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH2AG9122BMKVRF3XH0Z","name":"Pliers","description":"Reliable general-purpose pliers crafted from drop-forged carbon steel for long-lasting durability in demanding working conditions. The serrated jaws provide a firm grip on a variety of materials including wire, nails, small fasteners, and irregularly shaped objects. Comfortable rubber-coated handles absorb vibration and reduce hand fatigue during extended use, while the non-slip surface ensures confident handling. The precision pivot joint maintains alignment under load, delivering smooth, controlled jaw action with every squeeze. Heat-treated steel construction resists wear and deformation even under heavy use. A must-have foundational tool for any workshop, equally suited for professional tradespeople and home repair projects.","price":12.01,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7K","by_name":"Everyday basics","by_url":"https:\/\/unsplash.com\/@zanardi","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/I8eTuMmxIfo","file_name":"pliers02.avif","title":"Pliers"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWD","name":"Pliers","slug":"pliers"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH2BGG1K6K9GEJTT8GEQ","name":"Bolt Cutters","description":"Heavy-duty bolt cutters engineered to slice through hardened bolts, chains, padlocks, and wire fencing with minimal effort. The compound leverage mechanism multiplies your cutting force by a factor of 30, enabling clean cuts through materials up to 10mm in diameter. Hardened alloy steel blades are precisely ground and heat-treated to maintain a sharp edge through years of repeated use on tough materials. Ergonomic rubber grips and the generous 750mm handle length provide excellent control, leverage, and reach during overhead or awkward-angle cuts. An adjustable blade tension screw lets you fine-tune the jaw alignment for optimal cutting performance. Built for demolition crews, locksmiths, fencing contractors, and maintenance professionals who need reliable cutting power day after day.","price":48.41,"is_location_offer":true,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7M","by_name":"Michael Dziedzic","by_url":"https:\/\/unsplash.com\/@lazycreekimages","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/pM9pkc9J918","file_name":"pliers03.avif","title":"Bolt cutters"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWD","name":"Pliers","slug":"pliers"},"brand":{"id":"01M552JGRS3QMESHAQ8PRPA5QJ","name":"MightyCraft Hardware"}},{"id":"01M552JH2DQD17DR3ERTSE1Z2M","name":"Long Nose Pliers","description":"Precision long nose pliers with narrow tapered jaws designed for reaching into tight, confined spaces and bending fine wire with accuracy. Made from chrome vanadium steel with induction-hardened cutting edges that cleanly sever copper, brass, and steel wire without crushing or fraying. The slim jaw profile tapers to a fine point, making these pliers indispensable for electrical terminal work, jewelry making, and intricate mechanical repairs. Bi-component comfort grips minimize hand strain during detailed tasks requiring a steady hand and controlled pressure. The leaf-spring joint returns the handles to the open position automatically, speeding up repetitive tasks. A must-have precision tool trusted by electricians, electronics technicians, and hobbyists worldwide.","price":14.24,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":false,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7N","by_name":"Brett Jordan","by_url":"https:\/\/unsplash.com\/@brett_jordan","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/GamuDTVm02g","file_name":"pliers04.avif","title":"Long nose pliers"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWD","name":"Pliers","slug":"pliers"},"brand":{"id":"01M552JGRS3QMESHAQ8PRPA5QJ","name":"MightyCraft Hardware"}},{"id":"01M552JH2EXDQ749444RB4RAMH","name":"Slip Joint Pliers","description":"Adjustable slip joint pliers that feature a two-position pivot mechanism for switching between regular and wide jaw openings to accommodate different fastener sizes. The PVC-coated handles offer a comfortable, non-slip grip while the precisely machined jaws securely grasp round, flat, and hexagonal objects without slipping. Constructed from durable drop-forged carbon steel that has been heat-treated to withstand heavy daily use in professional environments. The curved jaw section grips pipes and cylindrical objects, while the flat front surface handles nuts, bolts, and sheet materials. A wire cutter integrated near the pivot handles light cutting tasks without reaching for a separate tool. Perfect for plumbing, automotive, HVAC, and general maintenance work where a single versatile gripping tool saves time.","price":9.17,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7P","by_name":"Yasin Hasan","by_url":"https:\/\/unsplash.com\/@yasin","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/dwlxTSpfKXg","file_name":"pliers05.avif","title":"Slip joint pliers"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWD","name":"Pliers","slug":"pliers"},"brand":{"id":"01M552JGRS3QMESHAQ8PRPA5QJ","name":"MightyCraft Hardware"}},{"id":"01M552JH2F4ZF8Y8F7T1EBMA3H","name":"Claw Hammer with Shock Reduction Grip","description":"Ergonomic claw hammer featuring an advanced shock reduction grip system that absorbs up to 70% of impact vibrations, protecting your wrist, elbow, and shoulder during prolonged nailing sessions. The 450g carbon steel head is precision-balanced and heat-treated for maximum hardness, ensuring accurate nail driving with minimal effort on every swing. The curved claw design effortlessly removes nails without damaging surrounding wood surfaces, making it equally useful for construction and renovation work. A fiberglass-reinforced handle combines lightweight strength with exceptional durability that far outlasts traditional wooden handles. The overmolded soft-grip zone conforms to your hand shape for a custom-feeling, fatigue-free hold throughout long working days. Recommended for professional framing, carpentry, and renovation projects where operator comfort matters as much as striking performance.","price":13.41,"is_location_offer":true,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7Q","by_name":"iMattSmart","by_url":"https:\/\/unsplash.com\/@imattsmart","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/jaLaLQdkBOE","file_name":"hammer01.avif","title":"Claw Hammer"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGW9","name":"Hammer","slug":"hammer"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH2GD6Q6AVJJSHVS7GKD","name":"Hammer","description":"A dependable standard claw hammer suitable for driving and removing nails in everyday construction, carpentry, and home improvement projects. The 350g carbon steel head is drop-forged and heat-treated for maximum hardness, then fitted to a traditional wooden handle that provides natural shock absorption with each strike. Well-balanced weight distribution between the head and handle ensures accurate strikes with minimal wrist effort, reducing fatigue during repetitive nailing tasks. The polished face resists rust and provides a smooth surface that drives nails cleanly without leaving marks on finish materials. A gently curved claw provides reliable nail extraction leverage without excessive force. This versatile hammer belongs in every toolbox, from professional carpentry workshops to home garages and apartment maintenance kits.","price":12.58,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7R","by_name":"Jozsef Hocza","by_url":"https:\/\/unsplash.com\/@hocza","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/D3nouOYbALc","file_name":"hammer02.avif","title":"Hammer"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGW9","name":"Hammer","slug":"hammer"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH2JAZV07V79R70NNDNX","name":"Claw Hammer","description":"Traditional claw hammer with a polished carbon steel head engineered for driving and removing nails with precision and confidence. The rubber-wrapped handle provides a secure, comfortable grip even in wet, dusty, or cold conditions where bare metal or wood handles would slip. At 500g, it offers the ideal balance between striking power and maneuverability for general carpentry, framing, and construction tasks. The curved claw design allows for smooth nail extraction without gouging or marring wood surfaces, protecting your finished work. The head-to-handle connection uses an epoxy-bonded wedge system that prevents loosening over time. A reliable, no-nonsense tool that professional carpenters and weekend builders alike reach for every day.","price":11.48,"is_location_offer":true,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7S","by_name":"Andrew George","by_url":"https:\/\/unsplash.com\/@andrewjoegeorge","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/YU2mCvXR0wA","file_name":"hammer03.avif","title":"Claw Hammer"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGW9","name":"Hammer","slug":"hammer"},"brand":{"id":"01M552JGRS3QMESHAQ8PRPA5QJ","name":"MightyCraft Hardware"}},{"id":"01M552JH2K9QV3KQSQ6ZBBD61D","name":"Thor Hammer","description":"The legendary Thor Hammer combines premium craftsmanship with raw striking power in a tool that is truly built to last generations. Forged from Uru metal with a hand-wrapped leather grip, this extraordinary 5kg masterpiece delivers unmatched impact force for the most demanding demolition, forging, and heavy construction tasks. The perfectly balanced oversized head ensures every swing transfers maximum energy to the target, while the enlarged striking face covers more surface area than any conventional hammer. Despite its impressive mass, the ergonomic handle design and precise weight distribution allow for surprisingly controlled, accurate swings. This is not merely a tool but a statement piece for those who accept nothing less than the absolute best in their workshop. Comes with a lifetime warranty because true legends never fade. Please note: only one Thor Hammer is permitted per customer.","price":11.14,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7T","by_name":"ANIRUDH","by_url":"https:\/\/unsplash.com\/@lanirudhreddy","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/3esjG-nlgyk","file_name":"hammer04.avif","title":"Hammer"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGW9","name":"Hammer","slug":"hammer"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}}],"from":1,"last_page":6,"per_page":9,"to":9,"total":52}
Test Information
NamePassedFailedSkipped
No server error (5xx) 1 0 0
No internal details in response 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/products?page=99999
Response Information
Response Code: 200 - OK
Mean time per request: 144ms
Mean size per request: 92B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 4e38c89d-73e0-4462-9248-945022c899c3
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control max-age=120, public
Date Sat, 17 Oct 2026 14:02:10 GMT
ETag "8aa41256104b6c16e763760d309bafd4"
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"current_page":99999,"data":[],"from":null,"last_page":6,"per_page":9,"to":null,"total":52}
Test Information
NamePassedFailedSkipped
No server error (5xx) 1 0 0
No internal details in response 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/products?sort=nu_exista,asc
Response Information
Response Code: 500 - Internal Server Error
Mean time per request: 124ms
Mean size per request: 34B

Test Pass Percentage
50 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 90faa6ac-077d-43c7-b9af-20972c386ec5
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:02:10 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Something went wrong"}
Test Information
NamePassedFailedSkipped
No server error (5xx) 0 1 0
No internal details in response 1 0 0
Total 1 1 0
Test Failure
Test NameAssertion Error
No server error (5xx)
expected 500 to be below 500
Request Information
Request Method: GET
Request URL: http://localhost:8091/products?between=price,abc,10
Response Information
Response Code: 200 - OK
Mean time per request: 196ms
Mean size per request: 13.66KB

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 08f0c1cb-3340-41c6-bf9c-ffb8de9435ac
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control max-age=120, public
Date Sat, 17 Oct 2026 14:02:10 GMT
ETag "0d6c44639dfde443a31737846b8072d8"
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"current_page":1,"data":[{"id":"01M552JH28NG35XD8J04PGAJXN","name":"Combination Pliers","description":"Versatile combination pliers designed for gripping, bending, and cutting wire with ease. Featuring chrome vanadium steel construction with induction-hardened cutting edges, these pliers deliver excellent grip and leverage for a wide range of tasks. The precision-machined jaws combine flat gripping surfaces with a pipe-grip section and integrated wire cutter for true multi-purpose functionality. Ergonomic bi-component handles reduce hand fatigue during extended use and provide a secure hold even with oily or gloved hands. The joint is precisely fitted to eliminate play and ensure smooth operation over thousands of cycles. Ideal for electricians, mechanics, and DIY enthusiasts tackling everyday projects around the workshop or job site.","price":0.01,"is_location_offer":false,"is_rental":false,"co2_rating":"D","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG7J","by_name":"Helinton Fantin","by_url":"https:\/\/unsplash.com\/@fantin","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/W8BNwvOvW4M","file_name":"pliers01.avif","title":"Combination pliers"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWD","name":"Pliers","slug":"pliers"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH3N299RA449M1GN9TP9","name":"Washers","description":"Assorted pack of 150 zinc-plated steel flat washers in popular metric sizes ranging from M4 to M10, covering the most commonly needed sizes for workshop, garage, and job site fastener work. These washers distribute the clamping force of bolts and nuts over a larger surface area, preventing damage to soft materials like wood, plastic, and painted or powder-coated metal surfaces. The smooth, burr-free finish on both faces ensures a flat, stable seating surface that maximizes friction and prevents fastener loosening under vibration. Each washer is stamped from precision-rolled steel strip to consistent thickness tolerances, ensuring predictable bolt stretch and joint behavior across multiple fastening points. The zinc plating provides reliable corrosion protection for indoor use and sheltered outdoor applications. An indispensable consumable for any workshop, garage, or maintenance department handling regular fastener assembly and repair work.","price":3.55,"is_location_offer":false,"is_rental":false,"co2_rating":"C","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG90","by_name":"Robert Ruggiero","by_url":"https:\/\/unsplash.com\/@robert2301","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/a-pile-of-different-colored-washers-sitting-on-top-of-a-table-oY6774he6GQ","file_name":"fasteners06.avif","title":"Washers"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWR","name":"Fasteners","slug":"fasteners"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH3JEY7M0EX8ARR7W163","name":"Flat-Head Wood Screws","description":"Pack of 75 countersink flat-head wood screws in 4x40mm size, crafted from yellow zinc-plated steel for enhanced moisture resistance in both interior and sheltered exterior woodworking applications. The 82-degree countersink flat head sits perfectly flush with the timber surface for a clean, professional finish that can be painted, stained, or filled invisibly. Deep single-lead threads are designed to bite aggressively into both hardwood and softwood fibers for superior holding power that resists pull-out under load and vibration. The sharp gimlet point self-starts without pre-drilling in most softwoods, while a pilot hole is recommended for hardwoods to prevent splitting near edges. The yellow zinc coating provides a warm color that blends naturally with light-colored timbers. Perfect for furniture assembly, deck building, cabinet construction, and general woodworking joinery where appearance matters.","price":3.95,"is_location_offer":false,"is_rental":false,"co2_rating":"C","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG8Y","by_name":"Ben Lodge","by_url":"https:\/\/unsplash.com\/@benlodge123","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/stainless-steel-11-screw-e3Y7qB67aow","file_name":"fasteners04.avif","title":"Flat-Head Wood Screws"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWR","name":"Fasteners","slug":"fasteners"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH3M975R6GFDETHAGPMH","name":"M4 Nuts","description":"Box of 100 M4 hexagonal nuts manufactured from A2-grade austenitic stainless steel for excellent resistance to rust, tarnishing, and corrosion in demanding indoor and outdoor environments. The precisely machined internal threads ensure smooth, easy engagement with M4 bolts, machine screws, and threaded rod without cross-threading or binding. The standard DIN 934 hex profile is compatible with 7mm sockets, open-end spanners, and adjustable wrenches for convenient tightening with any common hand or power tool. Chamfered edges on both faces allow the nut to start on the bolt thread from either direction, saving time during repetitive assembly operations. Consistent dimensional accuracy across all 100 pieces means reliable torque values and clamping forces in every joint. Essential workshop consumables for assembly, prototyping, equipment repair, and maintenance projects across mechanical, electrical, and general engineering trades.","price":4.65,"is_location_offer":false,"is_rental":false,"co2_rating":"C","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG8Z","by_name":"Mika Baumeister","by_url":"https:\/\/unsplash.com\/@kommumikation","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/silver-and-black-round-coins-c71yQepDEjo","file_name":"fasteners05.avif","title":"M4 Nuts"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWR","name":"Fasteners","slug":"fasteners"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH2X1B4SZQRX6712VYYF","name":"Phillips Screwdriver","description":"Professional-quality Phillips screwdriver with a PH2 tip precision-machined from chrome vanadium steel and vapor-blasted for maximum grip inside cross-head screw recesses. The bi-component handle features a soft-grip comfort zone that absorbs torque reaction and vibration, combined with a hard polypropylene core that transmits maximum turning force to the blade. A hex bolster machined into the shaft just above the handle allows a wrench to be applied for additional turning leverage on stubborn or over-tightened screws. The round blade shaft is chrome-plated for corrosion resistance and easy cleaning after use in greasy or painted environments. A hanging hole in the handle allows convenient pegboard or hook storage for quick identification and access. Suitable for electricians, cabinet makers, assembly technicians, and anyone who needs a reliable, comfortable everyday screwdriver.","price":4.92,"is_location_offer":true,"is_rental":false,"co2_rating":"C","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG82","by_name":"Tekton","by_url":"https:\/\/unsplash.com\/@tekton_tools","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/jlY6nV_STIw","file_name":"screwdriver01.avif","title":"Phillips Screwdriver"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWC","name":"Screwdriver","slug":"screwdriver"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH3GSWXWW1S5BXERHWR7","name":"Nuts and bolts","description":"Comprehensive assorted set of 200 stainless steel nuts and bolts in popular metric sizes ranging from M3 to M10, providing a one-stop selection for repair, assembly, prototyping, and maintenance tasks across all trades. The 18-8 austenitic stainless steel composition delivers excellent corrosion resistance for both indoor and outdoor applications, including marine, food-processing, and chemical environments where carbon steel would quickly deteriorate. Hex bolt heads and matching hex nuts are manufactured to DIN standard tolerances for a precise, wobble-free thread engagement that inspires confidence in critical fastened joints. The set includes matching flat washers and spring washers for each size to ensure proper load distribution and vibration resistance. Supplied in a compartmentalized clear plastic case with labeled dividers for instant size identification and organized storage. An invaluable workshop consumable that eliminates trips to the hardware store for common fastener sizes.","price":5.55,"is_location_offer":false,"is_rental":false,"co2_rating":"C","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG8W","by_name":"Edge2Edge Media","by_url":"https:\/\/unsplash.com\/@edge2edgemedia","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/silver-and-black-metal-tools-qHhJkxare7A","file_name":"fasteners02.avif","title":"Nuts and bolts"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWR","name":"Fasteners","slug":"fasteners"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH3FF6W79ERQ60WRKT1W","name":"Screws","description":"Box of 100 general-purpose pan head machine screws in M5x30mm size, manufactured from zinc-plated mild steel for reliable corrosion resistance in indoor and sheltered outdoor applications. The Phillips drive recess is precisely formed to provide a secure, positive engagement with the screwdriver tip, significantly reducing the cam-out that damages both screws and tools. The pan head profile sits above the surface of the material, providing a clean, finished appearance and a bearing surface that distributes clamping force over a wider area than flat-head alternatives. Machine-threaded shanks ensure consistent, repeatable clamping force across all fastened joints and allow for easy removal and reinstallation during maintenance. Compatible with M5 hex nuts, nylon lock nuts, and threaded inserts. Suitable for joining sheet metal, machine assembly, wood-to-metal connections, and general workshop fabrication tasks.","price":6.25,"is_location_offer":false,"is_rental":false,"co2_rating":"C","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG8V","by_name":"Eliza Diamond","by_url":"https:\/\/unsplash.com\/@eliza28diamonds","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/gray-screw-bolt-lot-pvm5QvjFrJ8","file_name":"fasteners01.avif","title":"Screws"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWR","name":"Fasteners","slug":"fasteners"},"brand":{"id":"01M552JGRS3QMESHAQ8PRPA5QJ","name":"MightyCraft Hardware"}},{"id":"01M552JH33P80E9W13627MRRWQ","name":"Tape Measure 7.5m","description":"Professional-grade 7.5-meter retractable tape measure built for daily use on construction sites, in workshops, and on renovation projects. The 25mm wide nylon-coated steel blade resists bending, kinking, and snapping at full extension, while the coating protects against abrasion and moisture that would corrode an unprotected blade. An impressive standout of over 3 meters allows solo measurements across door openings, window frames, and room widths without the blade folding. The heavy-duty rubber-armored housing absorbs drops from ladder height onto concrete floors, while the integrated belt clip and wrist lanyard keep the tape always within reach. A smooth, controllable retraction mechanism and positive blade lock hold your measurement securely in place. Dual metric and imperial markings printed in high-contrast colors ensure compatibility with any project specification and easy reading in all lighting conditions.","price":7.23,"is_location_offer":false,"is_rental":false,"co2_rating":"C","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG8J","by_name":"Brett Jordan","by_url":"https:\/\/unsplash.com\/@brett_jordan","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/blue-and-yellow-measuring-tape-faOPbPmznfQ","file_name":"measure01.avif","title":"Tape Measure 7.5m"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWF","name":"Measures","slug":"measures"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}},{"id":"01M552JH3HXX14K5SQ8CDQEXNG","name":"Cross-head screws","description":"Pack of 50 Phillips cross-head screws in M4x25mm size, manufactured from zinc-plated steel for dependable corrosion protection in indoor and semi-exposed environments. The cross-head drive pattern ensures efficient power transfer from both manual and powered screwdrivers, while the precisely formed recess depth minimizes cam-out and reduces the risk of damaging the screw head or work surface. A sharp, self-starting thread point eliminates the need for pre-drilling in softwood, MDF, and chipboard applications, speeding up assembly time considerably. The 25mm thread length provides strong pull-out resistance in materials 15mm thick and above. Ideal for fastening light-gauge metal brackets, cabinet hinges, electrical outlet boxes, and general hardware. Each screw is individually inspected to ensure consistent head formation and thread quality across the entire pack.","price":7.99,"is_location_offer":false,"is_rental":false,"co2_rating":"C","in_stock":true,"is_eco_friendly":false,"product_image":{"id":"01M552JH1JNQZMARG3VDF4TG8X","by_name":"Milad Fallah","by_url":"https:\/\/unsplash.com\/@miladfallah90","source_name":"Unsplash","source_url":"https:\/\/unsplash.com\/photos\/silver-screw-lot-on-brown-wooden-table-wwZYL4BYFto","file_name":"fasteners03.avif","title":"Cross-head screws"},"category":{"id":"01M552JH0YW2D66AXDEDJGQGWR","name":"Fasteners","slug":"fasteners"},"brand":{"id":"01M552JGRRJK0308ZCZCH32JAH","name":"ForgeFlex Tools"}}],"from":1,"last_page":2,"per_page":9,"to":9,"total":12}
Test Information
NamePassedFailedSkipped
No server error (5xx) 1 0 0
No internal details in response 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: DELETE
Request URL: http://localhost:8091/status
Response Information
Response Code: 405 - Method Not Allowed
Mean time per request: 125ms
Mean size per request: 59B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 9a6daf97-fa87-433d-a623-33e2867455c2
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:02:11 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Method is not allowed for the requested route"}
Test Information
NamePassedFailedSkipped
Status in [404, 405] 1 0 0
No internal details in response 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: PUT
Request URL: http://localhost:8091/users/login
Response Information
Response Code: 401 - Unauthorized
Mean time per request: 102ms
Mean size per request: 26B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 1691448d-e772-4af0-a267-093b1873fd4a
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 0
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:02:11 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Unauthorized"}
Test Information
NamePassedFailedSkipped
Status in [401, 403, 404, 405] 1 0 0
No internal details in response 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: PATCH
Request URL: http://localhost:8091/carts
Response Information
Response Code: 405 - Method Not Allowed
Mean time per request: 102ms
Mean size per request: 59B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 78539aa0-8cd2-4308-aa71-571906bb32c2
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 0
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:02:11 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Method is not allowed for the requested route"}
Test Information
NamePassedFailedSkipped
Status in [404, 405] 1 0 0
No internal details in response 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: OPTIONS
Request URL: http://localhost:8091/products
Response Information
Response Code: 204 - No Content
Mean time per request: 127ms
Mean size per request: 0B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 2162470b-8509-4181-a16b-e04b732ace20
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:02:12 GMT
Allow GET, POST, QUERY
Vary Access-Control-Request-Method
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
No Response Body for this request
Test Information
NamePassedFailedSkipped
Status 204 1 0 0
Allow contains GET, POST, QUERY 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: OPTIONS
Request URL: http://localhost:8091/carts/01m552m5kn0cy18sy8da5rw1p8
Response Information
Response Code: 204 - No Content
Mean time per request: 100ms
Mean size per request: 0B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 5648f930-8f01-4964-9232-ca544dcd52c8
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:02:12 GMT
Allow DELETE, GET, POST
Vary Access-Control-Request-Method
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
No Response Body for this request
Test Information
NamePassedFailedSkipped
Status 204 1 0 0
Allow contains DELETE, GET, POST 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/products/'
Response Information
Response Code: 404 - Not Found
Mean time per request: 107ms
Mean size per request: 38B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 5cb7cd05-7637-4ebf-9885-d0f3045a7851
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:02:12 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Requested item not found"}
Test Information
NamePassedFailedSkipped
No internal details in response 1 0 0
No trace or exception in JSON 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/nu-exista
Response Information
Response Code: 404 - Not Found
Mean time per request: 108ms
Mean size per request: 32B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 2a4a0340-c4ef-42f3-8c78-4dd55484634c
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:02:13 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"message":"Resource not found"}
Test Information
NamePassedFailedSkipped
No internal details in response 1 0 0
No trace or exception in JSON 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/users/login
Response Information
Response Code: 401 - Unauthorized
Mean time per request: 102ms
Mean size per request: 33B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
Content-Type application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token d26d7513-c347-418b-bdeb-0b48e2421f56
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 10
Request Body
{"email": 
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:02:13 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"error":"Invalid login request"}
Test Information
NamePassedFailedSkipped
No internal details in response 1 0 0
No trace or exception in JSON 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: GET
Request URL: http://localhost:8091/users/me
Response Information
Response Code: 200 - OK
Mean time per request: 123ms
Mean size per request: 363B

Test Pass Percentage
0 %
Request Headers
Header NameHeader Value
Accept application/json
Authorization Bearer …[masked]
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 6a92f2e8-2385-46eb-bea9-9fb63181598e
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:02:13 GMT
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"id":"01m552jz1by17vr3sx9zcb1275","provider":null,"first_name":"QA-Modificat","last_name":"Tester","phone":"0612345678","dob":"1990-01-01","email":"qa+a-1792245587396@test.local","totp_enabled":false,"created_at":"2026-10-17 13:59:55","address":{"street":"Teststraat 2","house_number":null,"city":"Amsterdam","state":null,"country":"NL","postal_code":"1011 AB"}}
Test Information
NamePassedFailedSkipped
Status 401 0 1 0
Token had actually expired at request time 0 1 0
Total 0 2 0
Test Failures
Test NameAssertion Error
Status 401
expected response to have status code 401 but got 200
Token had actually expired at request time
expected 1792245733889 to be above 1792245923124
Request Information
Request Method: POST
Request URL: http://localhost:8091/refresh
Response Information
Response Code: 200 - OK
Mean time per request: 8.3s
Mean size per request: 25B

Test Pass Percentage
100 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 70c88135-54b5-4d07-ae71-1de4cc7e3a48
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 0
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:02:22 GMT
X-RateLimit-Limit 1
X-RateLimit-Remaining 1
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"result":"refresh done"}
Test Information
NamePassedFailedSkipped
Status 200 1 0 0
refresh done 1 0 0
Total 2 0 0
Test Failure
Test NameAssertion Error
Request Information
Request Method: POST
Request URL: http://localhost:8091/refresh
Response Information
Response Code: 200 - OK
Mean time per request: 4.6s
Mean size per request: 25B

Test Pass Percentage
0 %
Request Headers
Header NameHeader Value
Accept application/json
User-Agent PostmanRuntime/7.39.1
Cache-Control no-cache
Postman-Token 39566fd9-e389-4c02-8c20-87e9ab681674
Host localhost:8091
Accept-Encoding gzip, deflate, br
Connection keep-alive
Content-Length 0
Response Headers
Header NameHeader Value
Server nginx
Content-Type application/json
Transfer-Encoding chunked
Connection keep-alive
Cache-Control no-cache, private
Date Sat, 17 Oct 2026 14:02:27 GMT
X-RateLimit-Limit 1
X-RateLimit-Remaining 1
Access-Control-Allow-Origin *
Access-Control-Expose-Headers Content-Disposition
Response Body
{"result":"refresh done"}
Test Information
NamePassedFailedSkipped
Status 429 0 1 0
Total 0 1 0
Test Failure
Test NameAssertion Error
Status 429
expected response to have status code 429 but got 200