Postman + Newman tests for the DummyJSON e-commerce API: auth (JWT login, current user, refresh) and products. Built from `context/test-case-matrix.md`; each request's description names its Case ID and rule. Run with `scripts/run-newman.sh main|data|defects`. Credentials are passed at run time and never stored here.
| Summary Item | Total | Failed |
|---|---|---|
| Requests | 15 | 0 |
| Prerequest Scripts | 16 | 0 |
| Test Scripts | 28 | 0 |
| Assertions | 50 | 13 |
| Skipped Tests | 0 | - |
sensitive fields returned: expected [ 'password', 'ssn', 'ein', …(2) ] to deeply equal []
expected response to have status code 401 but got 200
expected response to have status code 403 but got 200
expected response to have status code 403 but got 200
expected response to have status code 401 but got 200
expected response to have status code 401 but got 500
expected response to have status code 401 but got 500
expected response to have status code 401 but got 500
expected response to have status code 400 but got 500
expected response to have status code 400 but got 500
expected response to have status code 400 but got 201
expected response to have status code 400 but got 201
expected data to satisfy schema but found following errors:
data should have required property 'tags', data should have required property 'sku', data should have required property 'weight', data should have required property 'dimensions', data should have required property 'warrantyInformation', data should have required property 'shippingInformation', data should have required property 'availabilityStatus', data should have required property 'reviews', data should have required property 'returnPolicy', data should have required property 'minimumOrderQuantity', data should have required property 'meta'
**TC-setup-defects-login** · RULE-auth-login-returns-token-pair
| Name | Passed | Failed | Skipped |
|---|---|---|---|
| [shared] responds within 3000 ms | 1 | 0 | 0 |
| [shared] body is JSON | 1 | 0 | 0 |
| status is 200 | 1 | 0 | 0 |
| login body matches the schema | 1 | 0 | 0 |
| Total | 4 | 0 | 0 |
| Test Name | Assertion Error |
|---|
**TC-get-auth-me-contract-schema-no-sensitive-fields** · RULE-auth-me-hides-sensitive-fields (inferred)
Asserts the correct behaviour; expected to fail until DummyJSON fixes it. Not part of the gating run.
| Name | Passed | Failed | Skipped |
|---|---|---|---|
| [shared] responds within 3000 ms | 1 | 0 | 0 |
| [shared] body is JSON | 1 | 0 | 0 |
| status is 200 | 1 | 0 | 0 |
| no password, SSN, EIN, bank or crypto data in the response | 0 | 1 | 0 |
| Total | 3 | 1 | 0 |
| Test Name | Assertion Error |
|---|---|
| no password, SSN, EIN, bank or crypto data in the response | |
**TC-get-auth-me-auth-authz-refresh-token-as-access** · RULE-auth-token-types-not-interchangeable (inferred)
Asserts the correct behaviour; expected to fail until DummyJSON fixes it. Not part of the gating run.
| Name | Passed | Failed | Skipped |
|---|---|---|---|
| [shared] responds within 3000 ms | 1 | 0 | 0 |
| [shared] body is JSON | 1 | 0 | 0 |
| status is 401 | 0 | 1 | 0 |
| Total | 2 | 1 | 0 |
| Test Name | Assertion Error |
|---|---|
| status is 401 | |
**TC-post-auth-refresh-auth-authz-access-token-as-refresh** · RULE-auth-token-types-not-interchangeable (inferred)
Asserts the correct behaviour; expected to fail until DummyJSON fixes it. Not part of the gating run.
| Name | Passed | Failed | Skipped |
|---|---|---|---|
| [shared] responds within 3000 ms | 1 | 0 | 0 |
| [shared] body is JSON | 1 | 0 | 0 |
| status is 403 | 0 | 1 | 0 |
| Total | 2 | 1 | 0 |
| Test Name | Assertion Error |
|---|---|
| status is 403 | |
**TC-post-auth-refresh-auth-authz-used-token-reused** · RULE-auth-refresh-token-single-use (inferred)
Asserts the correct behaviour; expected to fail until DummyJSON fixes it. Not part of the gating run.
| Name | Passed | Failed | Skipped |
|---|---|---|---|
| [shared] responds within 3000 ms | 2 | 0 | 0 |
| [shared] body is JSON | 2 | 0 | 0 |
| status is 403 | 0 | 2 | 0 |
| Total | 4 | 2 | 0 |
| Test Name | Assertion Error |
|---|---|
| status is 403 | |
**TC-get-auth-me-auth-authz-missing-bearer-prefix** · RULE-auth-invalid-token-rejected (inferred)
Asserts the correct behaviour; expected to fail until DummyJSON fixes it. Not part of the gating run.
| Name | Passed | Failed | Skipped |
|---|---|---|---|
| [shared] responds within 3000 ms | 1 | 0 | 0 |
| [shared] body is JSON | 1 | 0 | 0 |
| status is 401 | 0 | 1 | 0 |
| Total | 2 | 1 | 0 |
| Test Name | Assertion Error |
|---|---|
| status is 401 | |
**TC-get-auth-me-auth-authz-malformed-token** · RULE-auth-invalid-token-rejected (inferred)
Asserts the correct behaviour; expected to fail until DummyJSON fixes it. Not part of the gating run.
| Name | Passed | Failed | Skipped |
|---|---|---|---|
| [shared] responds within 3000 ms | 1 | 0 | 0 |
| [shared] body is JSON | 1 | 0 | 0 |
| [shared] error body is exactly {"message": string} | 1 | 0 | 0 |
| status is 401 | 0 | 1 | 0 |
| Total | 3 | 1 | 0 |
| Test Name | Assertion Error |
|---|---|
| status is 401 | |
**TC-get-auth-me-auth-authz-forged-signature** · RULE-auth-invalid-token-rejected (inferred)
Asserts the correct behaviour; expected to fail until DummyJSON fixes it. Not part of the gating run.
| Name | Passed | Failed | Skipped |
|---|---|---|---|
| [shared] responds within 3000 ms | 1 | 0 | 0 |
| [shared] body is JSON | 1 | 0 | 0 |
| [shared] error body is exactly {"message": string} | 1 | 0 | 0 |
| status is 401 | 0 | 1 | 0 |
| Total | 3 | 1 | 0 |
| Test Name | Assertion Error |
|---|---|
| status is 401 | |
**TC-get-auth-me-auth-authz-wrong-scheme** · RULE-auth-invalid-token-rejected (inferred)
Asserts the correct behaviour; expected to fail until DummyJSON fixes it. Not part of the gating run.
| Name | Passed | Failed | Skipped |
|---|---|---|---|
| [shared] responds within 3000 ms | 1 | 0 | 0 |
| [shared] body is JSON | 1 | 0 | 0 |
| [shared] error body is exactly {"message": string} | 1 | 0 | 0 |
| status is 401 | 0 | 1 | 0 |
| Total | 3 | 1 | 0 |
| Test Name | Assertion Error |
|---|---|
| status is 401 | |
**TC-post-auth-login-boundary-expires-above-max** · RULE-auth-expiry-configurable
Asserts the correct behaviour; expected to fail until DummyJSON fixes it. Not part of the gating run.
| Name | Passed | Failed | Skipped |
|---|---|---|---|
| [shared] responds within 3000 ms | 1 | 0 | 0 |
| [shared] body is JSON | 1 | 0 | 0 |
| [shared] error body is exactly {"message": string} | 1 | 0 | 0 |
| status is 400 | 0 | 1 | 0 |
| Total | 3 | 1 | 0 |
| Test Name | Assertion Error |
|---|---|
| status is 400 | |
**TC-post-auth-login-boundary-expires-negative** · RULE-auth-expiry-configurable
Asserts the correct behaviour; expected to fail until DummyJSON fixes it. Not part of the gating run.
| Name | Passed | Failed | Skipped |
|---|---|---|---|
| [shared] responds within 3000 ms | 1 | 0 | 0 |
| [shared] body is JSON | 1 | 0 | 0 |
| [shared] error body is exactly {"message": string} | 1 | 0 | 0 |
| status is 400 | 0 | 1 | 0 |
| Total | 3 | 1 | 0 |
| Test Name | Assertion Error |
|---|---|
| status is 400 | |
**TC-post-products-add-negative-empty-body** · RULE-products-add-validates-body (inferred)
Asserts the correct behaviour; expected to fail until DummyJSON fixes it. Not part of the gating run.
| Name | Passed | Failed | Skipped |
|---|---|---|---|
| [shared] responds within 3000 ms | 1 | 0 | 0 |
| [shared] body is JSON | 1 | 0 | 0 |
| status is 400 | 0 | 1 | 0 |
| Total | 2 | 1 | 0 |
| Test Name | Assertion Error |
|---|---|
| status is 400 | |
**TC-post-products-add-negative-wrong-price-type** · RULE-products-add-validates-body (inferred)
Asserts the correct behaviour; expected to fail until DummyJSON fixes it. Not part of the gating run.
| Name | Passed | Failed | Skipped |
|---|---|---|---|
| [shared] responds within 3000 ms | 1 | 0 | 0 |
| [shared] body is JSON | 1 | 0 | 0 |
| status is 400 | 0 | 1 | 0 |
| Total | 2 | 1 | 0 |
| Test Name | Assertion Error |
|---|---|
| status is 400 | |
**TC-put-products-id-contract-schema-update-shape** · RULE-products-update-response-shape (inferred)
Asserts the correct behaviour; expected to fail until DummyJSON fixes it. Not part of the gating run.
| Name | Passed | Failed | Skipped |
|---|---|---|---|
| [shared] responds within 3000 ms | 1 | 0 | 0 |
| [shared] body is JSON | 1 | 0 | 0 |
| status is 200 | 1 | 0 | 0 |
| the response has the full Product shape, like GET | 0 | 1 | 0 |
| Total | 3 | 1 | 0 |
| Test Name | Assertion Error |
|---|---|
| the response has the full Product shape, like GET | |