mirror of
https://github.com/hasura/graphql-engine.git
synced 2024-12-14 17:02:49 +03:00
3cb9bab9f1
When we run the HGE server inside the test harness, it needs to run with an admin secret for some tests to make sense. This tags each test that requires an admin secret with `pytest.mark.admin_secret`, which then generates a UUID and injects that into both the server and the test case (if required). It also simplifies the way the test harness picks up an existing admin secret, allowing it to use the environment variable instead of requiring it via a parameter. PR-URL: https://github.com/hasura/graphql-engine-mono/pull/6120 GitOrigin-RevId: 55c5b9e8c99bdad9c8304098444ddb9516749a2c
62 lines
2.3 KiB
Python
62 lines
2.3 KiB
Python
import requests
|
|
import pytest
|
|
|
|
"""
|
|
|
|
NOTE:
|
|
These endpoints are admin-only
|
|
|
|
"dev/ekg"
|
|
"dev/plan_cache"
|
|
"dev/subscriptions"
|
|
"dev/subscriptions/extended"
|
|
|
|
This needs RTS to be enabled and mainly used for benchmarking:
|
|
(hence not adding any tests for this)
|
|
"dev/rts_stats" - has no "admin" role requirements
|
|
|
|
"""
|
|
|
|
def get_headers(hge_ctx, role='admin'):
|
|
headers = {}
|
|
if hge_ctx.hge_key != None:
|
|
headers['x-hasura-admin-secret'] = hge_ctx.hge_key
|
|
headers['x-hasura-role'] = role
|
|
return headers
|
|
|
|
@pytest.mark.admin_secret
|
|
@pytest.mark.hge_env('HASURA_GRAPHQL_ENABLED_APIS', 'metadata,graphql,developer,config,pgdump')
|
|
class TestDevEndpoints:
|
|
|
|
def test_ekg_endpoint_admin_role(self, hge_ctx):
|
|
resp = requests.get(hge_ctx.hge_url + '/dev/ekg', headers=get_headers(hge_ctx))
|
|
assert resp.status_code == 200
|
|
|
|
def test_ekg_endpoint_user_role(self, hge_ctx):
|
|
resp = requests.get(hge_ctx.hge_url + '/dev/ekg', headers=get_headers(hge_ctx, 'user'))
|
|
assert resp.status_code == 400
|
|
|
|
def test_plan_cache_endpoint_admin_role(self, hge_ctx):
|
|
resp = requests.get(hge_ctx.hge_url + '/dev/plan_cache', headers=get_headers(hge_ctx))
|
|
assert resp.status_code == 200
|
|
|
|
def test_plan_cache_endpoint_user_role(self, hge_ctx):
|
|
resp = requests.get(hge_ctx.hge_url + '/dev/plan_cache', headers=get_headers(hge_ctx, 'user'))
|
|
assert resp.status_code == 400
|
|
|
|
def test_subscriptions_endpoint_admin_role(self, hge_ctx):
|
|
resp = requests.get(hge_ctx.hge_url + '/dev/subscriptions', headers=get_headers(hge_ctx))
|
|
assert resp.status_code == 200
|
|
|
|
def test_subscriptions_endpoint_user_role(self, hge_ctx):
|
|
resp = requests.get(hge_ctx.hge_url + '/dev/subscriptions', headers=get_headers(hge_ctx, 'user'))
|
|
assert resp.status_code == 400
|
|
|
|
def test_subscriptions_extended_endpoint_admin_role(self, hge_ctx):
|
|
resp = requests.get(hge_ctx.hge_url + '/dev/subscriptions/extended', headers=get_headers(hge_ctx))
|
|
assert resp.status_code == 200
|
|
|
|
def test_subscriptions_extended_endpoint_user_role(self, hge_ctx):
|
|
resp = requests.get(hge_ctx.hge_url + '/dev/subscriptions/extended', headers=get_headers(hge_ctx, 'user'))
|
|
assert resp.status_code == 400
|