graphql-engine/server/tests-py/queries/endpoints/endpoint_subscription.yaml
Lyndon Maydwell 08da0c63b6 REST Endpoints - Prohibit Invalid slashes, duplicate variables, non-singular query definitions, subscriptions
Resolves Issues:

* https://github.com/hasura/graphql-engine-mono/issues/658 - Invalid Slashes
* https://github.com/hasura/graphql-engine-mono/issues/628 - Subscriptions

Implementation:

* Moved some logic from Endpoint.hs to allow reuse of splitting url into PathSegments.
* Additional validation steps alongside checking for overlapping routes
* Logging potential misuse of GET for mutations

Future Work:

* [ ] GET is allowed for mutations (Ignore/Log warning for Now)
* [ ] Add to scInconsistentObjs rather than throwing error
  * Add information to scInconsistentObjs instead of raising errors directly.

TODO:

* [x] Duplicate variable segments with the same name in the location should not be allowed
* [x] We should throw an error on trailing and leading slashes and URLs which contain empty segments
* [x] Endpoints can be created using subscriptions. But the error only shows at the time of the query
* [x] Tests

---

### Kodiak commit message

Prohibit Invalid slashes, duplicate variables, subscriptions for REST endpoints.

GitOrigin-RevId: 86c0d4af97984c8afd02699e6071e9c1658710b8
2021-02-24 04:31:05 +00:00

32 lines
746 B
YAML

description: Try to add an endpoint with duplicate params
url: /v1/query
status: 400
response:
internal:
- definition:
definition:
query:
collection_name: test_collection
query_name: simple_subscription
url: foo/bar/subscribe
methods:
- GET
name: foo
comment:
reason: 'in endpoint foo: query with name simple_subscription is a subscription'
type: endpoint
path: $.args
error: cannot continue due to new inconsistent metadata
code: unexpected
query:
type: create_rest_endpoint
args:
url: "foo/bar/subscribe"
name: foo
methods:
- GET
definition:
query:
collection_name: test_collection
query_name: simple_subscription