server: fix condition to classify requests to Apollo persisted queries

PR-URL: https://github.com/hasura/graphql-engine-mono/pull/10514
GitOrigin-RevId: c7ada21af3984761e8521f0fc8092e27367cdc02
This commit is contained in:
pranshi06 2023-12-06 16:25:06 +05:30 committed by hasura-bot
parent 51bab1d6ba
commit 94f01cfbb0
3 changed files with 55 additions and 2 deletions

View File

@ -328,8 +328,8 @@ instance ToJSON ExtQueryReqs where
instance FromJSON ExtQueryReqs where
parseJSON arr@Array {} = EqrGQLReq <$> (GH.GQLBatchedReqs <$> parseJSON arr)
parseJSON json
-- The APQ requests, have a special key called as Extensions
| isJust (json Lens.^? key "extensions") = EqrAPQReq <$> parseJSON json
-- The APQ requests, have a special object in the key `Extentions` called as `persistedQuery`
| isJust (json Lens.^? key "extensions" . key "persistedQuery") = EqrAPQReq <$> parseJSON json
| otherwise = EqrGQLReq <$> (GH.GQLSingleRequest <$> parseJSON json)
class (Monad m) => MonadGetPolicies m where

View File

@ -0,0 +1,49 @@
- description: Simple GraphQL object query on author, where the request includes extensions (normal request).
url: /v1/graphql
headers:
X-Hasura-Role: admin
status: 200
response:
data:
author:
- id: 1
name: Author 1
- id: 2
name: Author 2
query:
# https://graphql.org/learn/serving-over-http/#post-request
operationName: chooseThisOne
extensions: null
query: |
query chooseThisOne {
author {
id
name
}
}
- description: Simple GraphQL object query on author, where the request includes persisted query extension.
url: /v1/graphql
headers:
X-Hasura-Role: admin
status: 200
response:
errors:
- extensions:
path: $
code: not-supported
message: Automatic Persisted Queries is not enabled
query:
# https://graphql.org/learn/serving-over-http/#post-request
operationName: chooseThisOne
extensions:
persistedQuery:
version: 1
sha256Hash: randomhash
query: |
query chooseThisOne {
author {
id
name
}
}

View File

@ -181,6 +181,10 @@ class TestGraphQLQueryBasicPostgres:
resp = hge_ctx.v1q_f(self.dir() + '/setup_invalid_fkey_relationship.yaml', expected_status_code = 400)
assert resp['error'] == "Expecting object { table, columns }."
def test_select_query_with_extensions(self, hge_ctx, transport):
transport = 'http'
check_query_f(hge_ctx, self.dir() + "/select_query_with_extensions.yaml", transport)
@classmethod
def dir(cls):
return 'queries/graphql_query/basic'