diff --git a/README.md b/README.md
index e0d05d1f..5a6a00dd 100644
--- a/README.md
+++ b/README.md
@@ -733,9 +733,9 @@ If you want a feature-full server with bleeding edge technologies, you're recomm
| ------------------------------------------------------------------ | ------------------------------------------------------------------ |
| [graphql-yoga](https://www.the-guild.dev/graphql/yoga-server) | [✅ Fully compliant](/implementations/graphql-yoga/README.md) |
| [hotchocolate](https://chillicream.com/docs/hotchocolate) | [✅ Fully compliant](/implementations/hotchocolate/README.md) |
+| [apollo-server](https://www.apollographql.com/docs/apollo-server/) | [✅ Partially compliant](/implementations/apollo-server/README.md) |
| [mercurius](https://mercurius.dev) | [✅ Partially compliant](/implementations/mercurius/README.md) |
-| [graphql-helix](https://www.graphql-helix.com/) | [✅ Partially compliant](/implementations/graphql-helix/README.md) |
-| [apollo-server](https://www.apollographql.com/docs/apollo-server/) | [⚠️ Not compliant](/implementations/apollo-server/README.md) |
+| [graphql-helix](https://www.graphql-helix.com/) | [⚠️ Not compliant](/implementations/graphql-helix/README.md) |
## [Documentation](docs/)
diff --git a/implementations/apollo-server/README.md b/implementations/apollo-server/README.md
index 3214c561..03a3c97c 100644
--- a/implementations/apollo-server/README.md
+++ b/implementations/apollo-server/README.md
@@ -3,61 +3,63 @@ _* This report was auto-generated by graphql-http_
# GraphQL over HTTP audit report
- **73** audits in total
-- ✅ **32** pass
-- ⚠️ **37** warnings (optional)
-- ❌ **4** errors (required)
+- ✅ **35** pass
+- ⚠️ **38** warnings (optional)
## Passing
-1. MUST accept utf-8 encoding
-2. MUST assume utf-8 if encoding is unspecified
-3. MUST accept POST requests
-4. SHOULD respond with 4xx status code if content-type is not supplied on POST requests
-5. MUST accept application/json POST requests
-6. MUST require a request body on POST
-7. SHOULD use 400 status code on missing {query} parameter when accepting application/graphql-response+json
-8. SHOULD use 400 status code on object {query} parameter when accepting application/graphql-response+json
-9. SHOULD use 400 status code on number {query} parameter when accepting application/graphql-response+json
-10. SHOULD use 400 status code on boolean {query} parameter when accepting application/graphql-response+json
-11. SHOULD use 400 status code on array {query} parameter when accepting application/graphql-response+json
-12. SHOULD allow string {query} parameter when accepting application/graphql-response+json
-13. MUST allow string {query} parameter when accepting application/json
-14. SHOULD allow string {operationName} parameter when accepting application/graphql-response+json
-15. MUST allow string {operationName} parameter when accepting application/json
-16. SHOULD use 400 status code on string {variables} parameter when accepting application/graphql-response+json
-17. SHOULD allow map {variables} parameter when accepting application/graphql-response+json
-18. MUST allow map {variables} parameter when accepting application/json
-19. SHOULD use 400 status code on string {extensions} parameter when accepting application/graphql-response+json
-20. SHOULD allow map {extensions} parameter when accepting application/graphql-response+json
-21. MUST allow map {extensions} parameter when accepting application/json
-22. SHOULD use 4xx or 5xx status codes on JSON parsing failure when accepting application/graphql-response+json
-23. SHOULD use 400 status code on JSON parsing failure when accepting application/graphql-response+json
-24. SHOULD use 4xx or 5xx status codes if parameters are invalid when accepting application/graphql-response+json
-25. SHOULD use 400 status code if parameters are invalid when accepting application/graphql-response+json
-26. SHOULD not contain the data entry if parameters are invalid when accepting application/graphql-response+json
-27. SHOULD use 4xx or 5xx status codes on document parsing failure when accepting application/graphql-response+json
-28. SHOULD use 400 status code on document parsing failure when accepting application/graphql-response+json
-29. SHOULD not contain the data entry on document parsing failure when accepting application/graphql-response+json
-30. SHOULD use 4xx or 5xx status codes on document validation failure when accepting application/graphql-response+json
-31. SHOULD use 400 status code on document validation failure when accepting application/graphql-response+json
-32. SHOULD not contain the data entry on document validation failure when accepting application/graphql-response+json
+1. SHOULD accept application/graphql-response+json and match the content-type
+2. MUST accept application/json and match the content-type
+3. MUST use utf-8 encoding when responding
+4. MUST accept utf-8 encoding
+5. MUST assume utf-8 if encoding is unspecified
+6. MUST accept POST requests
+7. SHOULD respond with 4xx status code if content-type is not supplied on POST requests
+8. MUST accept application/json POST requests
+9. MUST require a request body on POST
+10. SHOULD use 400 status code on missing {query} parameter when accepting application/graphql-response+json
+11. SHOULD use 400 status code on object {query} parameter when accepting application/graphql-response+json
+12. SHOULD use 400 status code on number {query} parameter when accepting application/graphql-response+json
+13. SHOULD use 400 status code on boolean {query} parameter when accepting application/graphql-response+json
+14. SHOULD use 400 status code on array {query} parameter when accepting application/graphql-response+json
+15. SHOULD allow string {query} parameter when accepting application/graphql-response+json
+16. MUST allow string {query} parameter when accepting application/json
+17. SHOULD allow string {operationName} parameter when accepting application/graphql-response+json
+18. MUST allow string {operationName} parameter when accepting application/json
+19. SHOULD use 400 status code on string {variables} parameter when accepting application/graphql-response+json
+20. SHOULD allow map {variables} parameter when accepting application/graphql-response+json
+21. MUST allow map {variables} parameter when accepting application/json
+22. SHOULD use 400 status code on string {extensions} parameter when accepting application/graphql-response+json
+23. SHOULD allow map {extensions} parameter when accepting application/graphql-response+json
+24. MUST allow map {extensions} parameter when accepting application/json
+25. SHOULD use 4xx or 5xx status codes on JSON parsing failure when accepting application/graphql-response+json
+26. SHOULD use 400 status code on JSON parsing failure when accepting application/graphql-response+json
+27. SHOULD use 4xx or 5xx status codes if parameters are invalid when accepting application/graphql-response+json
+28. SHOULD use 400 status code if parameters are invalid when accepting application/graphql-response+json
+29. SHOULD not contain the data entry if parameters are invalid when accepting application/graphql-response+json
+30. SHOULD use 4xx or 5xx status codes on document parsing failure when accepting application/graphql-response+json
+31. SHOULD use 400 status code on document parsing failure when accepting application/graphql-response+json
+32. SHOULD not contain the data entry on document parsing failure when accepting application/graphql-response+json
+33. SHOULD use 4xx or 5xx status codes on document validation failure when accepting application/graphql-response+json
+34. SHOULD use 400 status code on document validation failure when accepting application/graphql-response+json
+35. SHOULD not contain the data entry on document validation failure when accepting application/graphql-response+json
## Warnings
The server _SHOULD_ support these, but is not required.
-1. SHOULD accept application/graphql-response+json and match the content-type
+1. SHOULD accept \*/\* and use application/graphql-response+json for the content-type
```
-Status code 400 is not 200
+Content-Type header "application/json; charset=utf-8" does not contain "application/graphql-response+json"
```
-2. SHOULD accept \*/\* and use application/graphql-response+json for the content-type
+2. SHOULD assume application/graphql-response+json content-type when accept is missing
```
-Status code 400 is not 200
+Content-Type header "application/json; charset=utf-8" does not contain "application/graphql-response+json"
```
-3. SHOULD assume application/graphql-response+json content-type when accept is missing
+3. MAY accept application/x-www-form-urlencoded formatted GET requests
```
Status code 400 is not 200
```
-4. MAY accept application/x-www-form-urlencoded formatted GET requests
+4. MAY NOT allow executing mutations on GET requests
```
-Status code 400 is not 200
+Status code 400 is not 405
```
5. SHOULD use 200 status code with errors field on missing {query} parameter when accepting application/json
```
@@ -139,74 +141,60 @@ Execution result {"data":{"__typename":"Query"}} does not have a property 'error
```
Execution result {"data":{"__typename":"Query"}} does not have a property 'errors'
```
-25. SHOULD allow URL-encoded JSON string {variables} parameter in GETs when accepting application/graphql-response+json
+25. MAY allow URL-encoded JSON string {variables} parameter in GETs when accepting application/graphql-response+json
+```
+Status code 400 is not 200
+```
+26. MAY allow URL-encoded JSON string {variables} parameter in GETs when accepting application/json
```
Status code 400 is not 200
```
-26. SHOULD use 400 status code on number {extensions} parameter when accepting application/graphql-response+json
+27. SHOULD use 400 status code on number {extensions} parameter when accepting application/graphql-response+json
```
Status code 200 is not 400
```
-27. SHOULD use 400 status code on boolean {extensions} parameter when accepting application/graphql-response+json
+28. SHOULD use 400 status code on boolean {extensions} parameter when accepting application/graphql-response+json
```
Status code 200 is not 400
```
-28. SHOULD use 400 status code on array {extensions} parameter when accepting application/graphql-response+json
+29. SHOULD use 400 status code on array {extensions} parameter when accepting application/graphql-response+json
```
Status code 200 is not 400
```
-29. SHOULD use 200 status code with errors field on string {extensions} parameter when accepting application/json
+30. SHOULD use 200 status code with errors field on string {extensions} parameter when accepting application/json
```
Status code 400 is not 200
```
-30. SHOULD use 200 status code with errors field on number {extensions} parameter when accepting application/json
+31. SHOULD use 200 status code with errors field on number {extensions} parameter when accepting application/json
```
Execution result {"data":{"__typename":"Query"}} does not have a property 'errors'
```
-31. SHOULD use 200 status code with errors field on boolean {extensions} parameter when accepting application/json
+32. SHOULD use 200 status code with errors field on boolean {extensions} parameter when accepting application/json
```
Execution result {"data":{"__typename":"Query"}} does not have a property 'errors'
```
-32. SHOULD use 200 status code with errors field on array {extensions} parameter when accepting application/json
+33. SHOULD use 200 status code with errors field on array {extensions} parameter when accepting application/json
```
Execution result {"data":{"__typename":"Query"}} does not have a property 'errors'
```
-33. SHOULD use 200 status code on JSON parsing failure when accepting application/json
+34. SHOULD use 200 status code on JSON parsing failure when accepting application/json
```
Status code 400 is not 200
```
-34. SHOULD use 200 status code if parameters are invalid when accepting application/json
+35. SHOULD use 200 status code if parameters are invalid when accepting application/json
```
Status code 400 is not 200
```
-35. SHOULD use 200 status code on document parsing failure when accepting application/json
+36. SHOULD use 200 status code on document parsing failure when accepting application/json
```
Status code 400 is not 200
```
-36. SHOULD use 200 status code on document validation failure when accepting application/json
+37. SHOULD use 200 status code on document validation failure when accepting application/json
```
Status code 400 is not 200
```
-37. SHOULD not contain the data entry on JSON parsing failure when accepting application/graphql-response+json
+38. SHOULD not contain the data entry on JSON parsing failure when accepting application/graphql-response+json
```
Response body is not valid JSON. Got "\n\n
SyntaxError: Unexpected end of JSON input
at JSON.parse (<anonymous>)
at parse (/home/runner/work/graphql-http/graphql-http/node_modules/body-parser/lib/types/json.js:89:19)
at /home/runner/work/graphql-http/graphql-http/node_modules/body-parser/lib/read.js:128:18
at AsyncResource.runInAsyncScope (node:async_hooks:203:9)
at invokeCallback (/home/runner/work/graphql-http/graphql-http/node_modules/raw-body/index.js:231:16)
at done (/home/runner/work/graphql-http/graphql-http/node_modules/raw-body/index.js:220:7)
at IncomingMessage.onEnd (/home/runner/work/graphql-http/graphql-http/node_modules/raw-body/index.js:280:7)
at IncomingMessage.emit (node:events:513:28)
at endReadableNT (node:internal/streams/rea... ``` -## Errors -The server _MUST_ support these. -1. MUST accept application/json and match the content-type
-``` -Status code 400 is not 200 -``` -2. MUST use utf-8 encoding when responding
-``` -Status code 400 is not 200 -``` -3. MUST NOT allow executing mutations on GET requests
-``` -Status code 400 is not 405 -``` -4. MUST allow URL-encoded JSON string {variables} parameter in GETs when accepting application/json
-``` -Status code 400 is not 200 -``` diff --git a/implementations/express-graphql/README.md b/implementations/express-graphql/README.md index 19bc0bcb..ecd5d58c 100644 --- a/implementations/express-graphql/README.md +++ b/implementations/express-graphql/README.md @@ -3,47 +3,48 @@ _* This report was auto-generated by graphql-http_ # GraphQL over HTTP audit report - **73** audits in total -- ✅ **36** pass +- ✅ **38** pass - ⚠️ **35** warnings (optional) -- ❌ **2** errors (required) ## Passing 1. MUST accept application/json and match the content-type 2. MUST use utf-8 encoding when responding -3. MUST accept POST requests -4. MAY accept application/x-www-form-urlencoded formatted GET requests -5. MUST NOT allow executing mutations on GET requests -6. SHOULD respond with 4xx status code if content-type is not supplied on POST requests -7. MUST accept application/json POST requests -8. MUST require a request body on POST -9. SHOULD use 400 status code on missing {query} parameter when accepting application/graphql-response+json -10. SHOULD use 400 status code on object {query} parameter when accepting application/graphql-response+json -11. SHOULD use 400 status code on number {query} parameter when accepting application/graphql-response+json -12. SHOULD use 400 status code on boolean {query} parameter when accepting application/graphql-response+json -13. SHOULD use 400 status code on array {query} parameter when accepting application/graphql-response+json -14. SHOULD allow string {query} parameter when accepting application/graphql-response+json -15. MUST allow string {query} parameter when accepting application/json -16. SHOULD allow string {operationName} parameter when accepting application/graphql-response+json -17. MUST allow string {operationName} parameter when accepting application/json -18. SHOULD use 400 status code on string {variables} parameter when accepting application/graphql-response+json -19. SHOULD allow map {variables} parameter when accepting application/graphql-response+json -20. MUST allow map {variables} parameter when accepting application/json -21. SHOULD allow URL-encoded JSON string {variables} parameter in GETs when accepting application/graphql-response+json -22. MUST allow URL-encoded JSON string {variables} parameter in GETs when accepting application/json -23. SHOULD allow map {extensions} parameter when accepting application/graphql-response+json -24. MUST allow map {extensions} parameter when accepting application/json -25. SHOULD use 4xx or 5xx status codes on JSON parsing failure when accepting application/graphql-response+json -26. SHOULD use 400 status code on JSON parsing failure when accepting application/graphql-response+json -27. SHOULD not contain the data entry on JSON parsing failure when accepting application/graphql-response+json -28. SHOULD use 4xx or 5xx status codes if parameters are invalid when accepting application/graphql-response+json -29. SHOULD use 400 status code if parameters are invalid when accepting application/graphql-response+json -30. SHOULD not contain the data entry if parameters are invalid when accepting application/graphql-response+json -31. SHOULD use 4xx or 5xx status codes on document parsing failure when accepting application/graphql-response+json -32. SHOULD use 400 status code on document parsing failure when accepting application/graphql-response+json -33. SHOULD not contain the data entry on document parsing failure when accepting application/graphql-response+json -34. SHOULD use 4xx or 5xx status codes on document validation failure when accepting application/graphql-response+json -35. SHOULD use 400 status code on document validation failure when accepting application/graphql-response+json -36. SHOULD not contain the data entry on document validation failure when accepting application/graphql-response+json +3. MUST accept utf-8 encoding +4. MUST assume utf-8 if encoding is unspecified +5. MUST accept POST requests +6. MAY accept application/x-www-form-urlencoded formatted GET requests +7. MAY NOT allow executing mutations on GET requests +8. SHOULD respond with 4xx status code if content-type is not supplied on POST requests +9. MUST accept application/json POST requests +10. MUST require a request body on POST +11. SHOULD use 400 status code on missing {query} parameter when accepting application/graphql-response+json +12. SHOULD use 400 status code on object {query} parameter when accepting application/graphql-response+json +13. SHOULD use 400 status code on number {query} parameter when accepting application/graphql-response+json +14. SHOULD use 400 status code on boolean {query} parameter when accepting application/graphql-response+json +15. SHOULD use 400 status code on array {query} parameter when accepting application/graphql-response+json +16. SHOULD allow string {query} parameter when accepting application/graphql-response+json +17. MUST allow string {query} parameter when accepting application/json +18. SHOULD allow string {operationName} parameter when accepting application/graphql-response+json +19. MUST allow string {operationName} parameter when accepting application/json +20. SHOULD use 400 status code on string {variables} parameter when accepting application/graphql-response+json +21. SHOULD allow map {variables} parameter when accepting application/graphql-response+json +22. MUST allow map {variables} parameter when accepting application/json +23. MAY allow URL-encoded JSON string {variables} parameter in GETs when accepting application/graphql-response+json +24. MAY allow URL-encoded JSON string {variables} parameter in GETs when accepting application/json +25. SHOULD allow map {extensions} parameter when accepting application/graphql-response+json +26. MUST allow map {extensions} parameter when accepting application/json +27. SHOULD use 4xx or 5xx status codes on JSON parsing failure when accepting application/graphql-response+json +28. SHOULD use 400 status code on JSON parsing failure when accepting application/graphql-response+json +29. SHOULD not contain the data entry on JSON parsing failure when accepting application/graphql-response+json +30. SHOULD use 4xx or 5xx status codes if parameters are invalid when accepting application/graphql-response+json +31. SHOULD use 400 status code if parameters are invalid when accepting application/graphql-response+json +32. SHOULD not contain the data entry if parameters are invalid when accepting application/graphql-response+json +33. SHOULD use 4xx or 5xx status codes on document parsing failure when accepting application/graphql-response+json +34. SHOULD use 400 status code on document parsing failure when accepting application/graphql-response+json +35. SHOULD not contain the data entry on document parsing failure when accepting application/graphql-response+json +36. SHOULD use 4xx or 5xx status codes on document validation failure when accepting application/graphql-response+json +37. SHOULD use 400 status code on document validation failure when accepting application/graphql-response+json +38. SHOULD not contain the data entry on document validation failure when accepting application/graphql-response+json ## Warnings The server _SHOULD_ support these, but is not required. @@ -188,13 +189,3 @@ Status code 400 is not 200 Status code 400 is not 200 ``` -## Errors -The server _MUST_ support these. -1. MUST accept utf-8 encoding
-``` -Status code 400 is not 200 -``` -2. MUST assume utf-8 if encoding is unspecified
-``` -Status code 400 is not 200 -``` diff --git a/implementations/graph-client/README.md b/implementations/graph-client/README.md index e165d9ba..7bbb51e5 100644 --- a/implementations/graph-client/README.md +++ b/implementations/graph-client/README.md @@ -15,7 +15,7 @@ _* This report was auto-generated by graphql-http_ 7. MUST assume utf-8 if encoding is unspecified 8. MUST accept POST requests 9. MAY accept application/x-www-form-urlencoded formatted GET requests -10. MUST NOT allow executing mutations on GET requests +10. MAY NOT allow executing mutations on GET requests 11. SHOULD respond with 4xx status code if content-type is not supplied on POST requests 12. MUST accept application/json POST requests 13. MUST require a request body on POST @@ -51,8 +51,8 @@ _* This report was auto-generated by graphql-http_ 43. SHOULD use 200 status code with errors field on array {variables} parameter when accepting application/json 44. SHOULD allow map {variables} parameter when accepting application/graphql-response+json 45. MUST allow map {variables} parameter when accepting application/json -46. SHOULD allow URL-encoded JSON string {variables} parameter in GETs when accepting application/graphql-response+json -47. MUST allow URL-encoded JSON string {variables} parameter in GETs when accepting application/json +46. MAY allow URL-encoded JSON string {variables} parameter in GETs when accepting application/graphql-response+json +47. MAY allow URL-encoded JSON string {variables} parameter in GETs when accepting application/json 48. SHOULD use 400 status code on string {extensions} parameter when accepting application/graphql-response+json 49. SHOULD use 400 status code on number {extensions} parameter when accepting application/graphql-response+json 50. SHOULD use 400 status code on boolean {extensions} parameter when accepting application/graphql-response+json diff --git a/implementations/graphql-helix/README.md b/implementations/graphql-helix/README.md index d1bd501a..da1c67dd 100644 --- a/implementations/graphql-helix/README.md +++ b/implementations/graphql-helix/README.md @@ -12,7 +12,7 @@ _* This report was auto-generated by graphql-http_ 2. MUST use utf-8 encoding when responding 3. MUST accept POST requests 4. MAY accept application/x-www-form-urlencoded formatted GET requests -5. MUST NOT allow executing mutations on GET requests +5. MAY NOT allow executing mutations on GET requests 6. SHOULD respond with 4xx status code if content-type is not supplied on POST requests 7. MUST accept application/json POST requests 8. MUST require a request body on POST @@ -32,8 +32,8 @@ _* This report was auto-generated by graphql-http_ 22. SHOULD use 400 status code on string {variables} parameter when accepting application/graphql-response+json 23. SHOULD allow map {variables} parameter when accepting application/graphql-response+json 24. MUST allow map {variables} parameter when accepting application/json -25. SHOULD allow URL-encoded JSON string {variables} parameter in GETs when accepting application/graphql-response+json -26. MUST allow URL-encoded JSON string {variables} parameter in GETs when accepting application/json +25. MAY allow URL-encoded JSON string {variables} parameter in GETs when accepting application/graphql-response+json +26. MAY allow URL-encoded JSON string {variables} parameter in GETs when accepting application/json 27. SHOULD allow map {extensions} parameter when accepting application/graphql-response+json 28. MUST allow map {extensions} parameter when accepting application/json 29. SHOULD use 4xx or 5xx status codes on JSON parsing failure when accepting application/graphql-response+json diff --git a/implementations/graphql-yoga/README.md b/implementations/graphql-yoga/README.md index e165d9ba..7bbb51e5 100644 --- a/implementations/graphql-yoga/README.md +++ b/implementations/graphql-yoga/README.md @@ -15,7 +15,7 @@ _* This report was auto-generated by graphql-http_ 7. MUST assume utf-8 if encoding is unspecified 8. MUST accept POST requests 9. MAY accept application/x-www-form-urlencoded formatted GET requests -10. MUST NOT allow executing mutations on GET requests +10. MAY NOT allow executing mutations on GET requests 11. SHOULD respond with 4xx status code if content-type is not supplied on POST requests 12. MUST accept application/json POST requests 13. MUST require a request body on POST @@ -51,8 +51,8 @@ _* This report was auto-generated by graphql-http_ 43. SHOULD use 200 status code with errors field on array {variables} parameter when accepting application/json 44. SHOULD allow map {variables} parameter when accepting application/graphql-response+json 45. MUST allow map {variables} parameter when accepting application/json -46. SHOULD allow URL-encoded JSON string {variables} parameter in GETs when accepting application/graphql-response+json -47. MUST allow URL-encoded JSON string {variables} parameter in GETs when accepting application/json +46. MAY allow URL-encoded JSON string {variables} parameter in GETs when accepting application/graphql-response+json +47. MAY allow URL-encoded JSON string {variables} parameter in GETs when accepting application/json 48. SHOULD use 400 status code on string {extensions} parameter when accepting application/graphql-response+json 49. SHOULD use 400 status code on number {extensions} parameter when accepting application/graphql-response+json 50. SHOULD use 400 status code on boolean {extensions} parameter when accepting application/graphql-response+json diff --git a/implementations/hotchocolate/README.md b/implementations/hotchocolate/README.md index e165d9ba..7bbb51e5 100644 --- a/implementations/hotchocolate/README.md +++ b/implementations/hotchocolate/README.md @@ -15,7 +15,7 @@ _* This report was auto-generated by graphql-http_ 7. MUST assume utf-8 if encoding is unspecified 8. MUST accept POST requests 9. MAY accept application/x-www-form-urlencoded formatted GET requests -10. MUST NOT allow executing mutations on GET requests +10. MAY NOT allow executing mutations on GET requests 11. SHOULD respond with 4xx status code if content-type is not supplied on POST requests 12. MUST accept application/json POST requests 13. MUST require a request body on POST @@ -51,8 +51,8 @@ _* This report was auto-generated by graphql-http_ 43. SHOULD use 200 status code with errors field on array {variables} parameter when accepting application/json 44. SHOULD allow map {variables} parameter when accepting application/graphql-response+json 45. MUST allow map {variables} parameter when accepting application/json -46. SHOULD allow URL-encoded JSON string {variables} parameter in GETs when accepting application/graphql-response+json -47. MUST allow URL-encoded JSON string {variables} parameter in GETs when accepting application/json +46. MAY allow URL-encoded JSON string {variables} parameter in GETs when accepting application/graphql-response+json +47. MAY allow URL-encoded JSON string {variables} parameter in GETs when accepting application/json 48. SHOULD use 400 status code on string {extensions} parameter when accepting application/graphql-response+json 49. SHOULD use 400 status code on number {extensions} parameter when accepting application/graphql-response+json 50. SHOULD use 400 status code on boolean {extensions} parameter when accepting application/graphql-response+json diff --git a/implementations/mercurius/README.md b/implementations/mercurius/README.md index ca8eec35..02a73300 100644 --- a/implementations/mercurius/README.md +++ b/implementations/mercurius/README.md @@ -13,7 +13,7 @@ _* This report was auto-generated by graphql-http_ 4. MUST assume utf-8 if encoding is unspecified 5. MUST accept POST requests 6. MAY accept application/x-www-form-urlencoded formatted GET requests -7. MUST NOT allow executing mutations on GET requests +7. MAY NOT allow executing mutations on GET requests 8. SHOULD respond with 4xx status code if content-type is not supplied on POST requests 9. MUST accept application/json POST requests 10. MUST require a request body on POST @@ -34,8 +34,8 @@ _* This report was auto-generated by graphql-http_ 25. SHOULD use 400 status code on array {variables} parameter when accepting application/graphql-response+json 26. SHOULD allow map {variables} parameter when accepting application/graphql-response+json 27. MUST allow map {variables} parameter when accepting application/json -28. SHOULD allow URL-encoded JSON string {variables} parameter in GETs when accepting application/graphql-response+json -29. MUST allow URL-encoded JSON string {variables} parameter in GETs when accepting application/json +28. MAY allow URL-encoded JSON string {variables} parameter in GETs when accepting application/graphql-response+json +29. MAY allow URL-encoded JSON string {variables} parameter in GETs when accepting application/json 30. SHOULD use 400 status code on string {extensions} parameter when accepting application/graphql-response+json 31. SHOULD use 400 status code on number {extensions} parameter when accepting application/graphql-response+json 32. SHOULD use 400 status code on boolean {extensions} parameter when accepting application/graphql-response+json diff --git a/implementations/thegraph/README.md b/implementations/thegraph/README.md index 35eeaefc..f67ae83c 100644 --- a/implementations/thegraph/README.md +++ b/implementations/thegraph/README.md @@ -4,284 +4,284 @@ _* This report was auto-generated by graphql-http_ - **73** audits in total - ✅ **7** pass -- ⚠️ **53** warnings (optional) -- ❌ **13** errors (required) +- ⚠️ **55** warnings (optional) +- ❌ **11** errors (required) ## Passing 1. MAY accept application/x-www-form-urlencoded formatted GET requests 2. SHOULD respond with 4xx status code if content-type is not supplied on POST requests -3. SHOULD allow URL-encoded JSON string {variables} parameter in GETs when accepting application/graphql-response+json -4. SHOULD use 200 status code if parameters are invalid when accepting application/json -5. SHOULD use 200 status code on document parsing failure when accepting application/json -6. SHOULD use 200 status code on document validation failure when accepting application/json -7. SHOULD use 4xx or 5xx status codes on JSON parsing failure when accepting application/graphql-response+json +3. MAY allow URL-encoded JSON string {variables} parameter in GETs when accepting application/graphql-response+json +4. SHOULD use 4xx or 5xx status codes on JSON parsing failure when accepting application/graphql-response+json +5. SHOULD use 4xx or 5xx status codes if parameters are invalid when accepting application/graphql-response+json +6. SHOULD use 4xx or 5xx status codes on document parsing failure when accepting application/graphql-response+json +7. SHOULD use 4xx or 5xx status codes on document validation failure when accepting application/graphql-response+json ## Warnings The server _SHOULD_ support these, but is not required. 1. SHOULD accept application/graphql-response+json and match the content-type
``` -Content-Type header "text/html" does not contain "application/graphql-response+json" +Status code 404 is not 200 ``` 2. SHOULD accept \*/\* and use application/graphql-response+json for the content-type
``` -Content-Type header "text/html" does not contain "application/graphql-response+json" +Status code 404 is not 200 ``` 3. SHOULD assume application/graphql-response+json content-type when accept is missing
``` -Content-Type header "text/html" does not contain "application/graphql-response+json" +Status code 404 is not 200 ``` -4. SHOULD use 400 status code on missing {query} parameter when accepting application/graphql-response+json
+4. MAY NOT allow executing mutations on GET requests
+``` +Status code 200 is not 405 +``` +5. SHOULD use 400 status code on missing {query} parameter when accepting application/graphql-response+json
``` Status code 404 is not 400 ``` -5. SHOULD use 200 status code with errors field on missing {query} parameter when accepting application/json
+6. SHOULD use 200 status code with errors field on missing {query} parameter when accepting application/json
``` Status code 404 is not 200 ``` -6. SHOULD use 400 status code on object {query} parameter when accepting application/graphql-response+json
+7. SHOULD use 400 status code on object {query} parameter when accepting application/graphql-response+json
``` Status code 404 is not 400 ``` -7. SHOULD use 400 status code on number {query} parameter when accepting application/graphql-response+json
+8. SHOULD use 400 status code on number {query} parameter when accepting application/graphql-response+json
``` Status code 404 is not 400 ``` -8. SHOULD use 400 status code on boolean {query} parameter when accepting application/graphql-response+json
+9. SHOULD use 400 status code on boolean {query} parameter when accepting application/graphql-response+json
``` Status code 404 is not 400 ``` -9. SHOULD use 400 status code on array {query} parameter when accepting application/graphql-response+json
+10. SHOULD use 400 status code on array {query} parameter when accepting application/graphql-response+json
``` Status code 404 is not 400 ``` -10. SHOULD use 200 status code with errors field on object {query} parameter when accepting application/json
+11. SHOULD use 200 status code with errors field on object {query} parameter when accepting application/json
``` Status code 404 is not 200 ``` -11. SHOULD use 200 status code with errors field on number {query} parameter when accepting application/json
+12. SHOULD use 200 status code with errors field on number {query} parameter when accepting application/json
``` Status code 404 is not 200 ``` -12. SHOULD use 200 status code with errors field on boolean {query} parameter when accepting application/json
+13. SHOULD use 200 status code with errors field on boolean {query} parameter when accepting application/json
``` Status code 404 is not 200 ``` -13. SHOULD use 200 status code with errors field on array {query} parameter when accepting application/json
+14. SHOULD use 200 status code with errors field on array {query} parameter when accepting application/json
``` Status code 404 is not 200 ``` -14. SHOULD allow string {query} parameter when accepting application/graphql-response+json
+15. SHOULD allow string {query} parameter when accepting application/graphql-response+json
``` Status code 404 is not 200 ``` -15. SHOULD use 400 status code on object {operationName} parameter when accepting application/graphql-response+json
+16. SHOULD use 400 status code on object {operationName} parameter when accepting application/graphql-response+json
``` Status code 404 is not 400 ``` -16. SHOULD use 400 status code on number {operationName} parameter when accepting application/graphql-response+json
+17. SHOULD use 400 status code on number {operationName} parameter when accepting application/graphql-response+json
``` Status code 404 is not 400 ``` -17. SHOULD use 400 status code on boolean {operationName} parameter when accepting application/graphql-response+json
+18. SHOULD use 400 status code on boolean {operationName} parameter when accepting application/graphql-response+json
``` Status code 404 is not 400 ``` -18. SHOULD use 400 status code on array {operationName} parameter when accepting application/graphql-response+json
+19. SHOULD use 400 status code on array {operationName} parameter when accepting application/graphql-response+json
``` Status code 404 is not 400 ``` -19. SHOULD use 200 status code with errors field on object {operationName} parameter when accepting application/json
+20. SHOULD use 200 status code with errors field on object {operationName} parameter when accepting application/json
``` Status code 404 is not 200 ``` -20. SHOULD use 200 status code with errors field on number {operationName} parameter when accepting application/json
+21. SHOULD use 200 status code with errors field on number {operationName} parameter when accepting application/json
``` Status code 404 is not 200 ``` -21. SHOULD use 200 status code with errors field on boolean {operationName} parameter when accepting application/json
+22. SHOULD use 200 status code with errors field on boolean {operationName} parameter when accepting application/json
``` Status code 404 is not 200 ``` -22. SHOULD use 200 status code with errors field on array {operationName} parameter when accepting application/json
+23. SHOULD use 200 status code with errors field on array {operationName} parameter when accepting application/json
``` Status code 404 is not 200 ``` -23. SHOULD allow string {operationName} parameter when accepting application/graphql-response+json
+24. SHOULD allow string {operationName} parameter when accepting application/graphql-response+json
``` Status code 404 is not 200 ``` -24. SHOULD use 400 status code on string {variables} parameter when accepting application/graphql-response+json
+25. SHOULD use 400 status code on string {variables} parameter when accepting application/graphql-response+json
``` Status code 404 is not 400 ``` -25. SHOULD use 400 status code on number {variables} parameter when accepting application/graphql-response+json
+26. SHOULD use 400 status code on number {variables} parameter when accepting application/graphql-response+json
``` Status code 404 is not 400 ``` -26. SHOULD use 400 status code on boolean {variables} parameter when accepting application/graphql-response+json
+27. SHOULD use 400 status code on boolean {variables} parameter when accepting application/graphql-response+json
``` Status code 404 is not 400 ``` -27. SHOULD use 400 status code on array {variables} parameter when accepting application/graphql-response+json
+28. SHOULD use 400 status code on array {variables} parameter when accepting application/graphql-response+json
``` Status code 404 is not 400 ``` -28. SHOULD use 200 status code with errors field on string {variables} parameter when accepting application/json
+29. SHOULD use 200 status code with errors field on string {variables} parameter when accepting application/json
``` Status code 404 is not 200 ``` -29. SHOULD use 200 status code with errors field on number {variables} parameter when accepting application/json
+30. SHOULD use 200 status code with errors field on number {variables} parameter when accepting application/json
``` Status code 404 is not 200 ``` -30. SHOULD use 200 status code with errors field on boolean {variables} parameter when accepting application/json
+31. SHOULD use 200 status code with errors field on boolean {variables} parameter when accepting application/json
``` Status code 404 is not 200 ``` -31. SHOULD use 200 status code with errors field on array {variables} parameter when accepting application/json
+32. SHOULD use 200 status code with errors field on array {variables} parameter when accepting application/json
``` Status code 404 is not 200 ``` -32. SHOULD allow map {variables} parameter when accepting application/graphql-response+json
+33. SHOULD allow map {variables} parameter when accepting application/graphql-response+json
``` Status code 404 is not 200 ``` -33. SHOULD use 400 status code on string {extensions} parameter when accepting application/graphql-response+json
+34. MAY allow URL-encoded JSON string {variables} parameter in GETs when accepting application/json
+``` +Response body is not valid JSON. Got "\n\n\n\nThe GraphiQL \n