mirror of
https://github.com/hasura/graphql-engine.git
synced 2024-12-15 01:12:56 +03:00
56 lines
2.1 KiB
Python
56 lines
2.1 KiB
Python
import pytest
|
|
import time
|
|
from context import HGECtx, HGECtxError
|
|
|
|
|
|
def pytest_addoption(parser):
|
|
parser.addoption(
|
|
"--hge-url", metavar="HGE_URL", help="url for graphql-engine", required=True
|
|
)
|
|
parser.addoption(
|
|
"--pg-url", metavar="PG_URL", help="url for connecting to Postgres directly", required=True
|
|
)
|
|
parser.addoption(
|
|
"--hge-key", metavar="HGE_KEY", help="access key for graphql-engine", required=False
|
|
)
|
|
parser.addoption(
|
|
"--hge-webhook", metavar="HGE_WEBHOOK", help="url for graphql-engine's access control webhook", required=False
|
|
)
|
|
parser.addoption(
|
|
"--test-webhook-insecure", action="store_true",
|
|
help="Run Test cases for insecure https webhook"
|
|
)
|
|
parser.addoption(
|
|
"--hge-jwt-key-file", metavar="HGE_JWT_KEY_FILE", help="File containting the private key used to encode jwt tokens using RS512 algorithm", required=False
|
|
)
|
|
|
|
|
|
@pytest.fixture(scope='session')
|
|
def hge_ctx(request):
|
|
print("create hge_ctx")
|
|
hge_url = request.config.getoption('--hge-url')
|
|
pg_url = request.config.getoption('--pg-url')
|
|
hge_key = request.config.getoption('--hge-key')
|
|
hge_webhook = request.config.getoption('--hge-webhook')
|
|
webhook_insecure = request.config.getoption('--test-webhook-insecure')
|
|
hge_jwt_key_file = request.config.getoption('--hge-jwt-key-file')
|
|
try:
|
|
hge_ctx = HGECtx(hge_url=hge_url, pg_url=pg_url, hge_key=hge_key, hge_webhook=hge_webhook, hge_jwt_key_file=hge_jwt_key_file, webhook_insecure = webhook_insecure )
|
|
except HGECtxError as e:
|
|
pytest.exit(str(e))
|
|
yield hge_ctx # provide the fixture value
|
|
print("teardown hge_ctx")
|
|
hge_ctx.teardown()
|
|
time.sleep(2)
|
|
|
|
@pytest.fixture(scope='class')
|
|
def setup_ctrl(request, hge_ctx):
|
|
"""
|
|
This fixure is used to store the state of test setup in some test classes.
|
|
Used primarily when teardown is skipped in some test cases in the class where the test is not expected to change the database state.
|
|
"""
|
|
setup_ctrl = { "setupDone" : False }
|
|
yield setup_ctrl
|
|
hge_ctx.may_skip_test_teardown = False
|
|
request.cls().do_teardown(setup_ctrl, hge_ctx)
|