graphql-engine/server/tests-py
Sibi Prabakaran 385d27449e mysql: Metadata awareness
https://github.com/hasura/graphql-engine-mono/pull/1599

Co-authored-by: Chris Done <11019+chrisdone@users.noreply.github.com>
Co-authored-by: Aniket Deshpande <922486+aniketd@users.noreply.github.com>
Co-authored-by: Abby Sassel <3883855+sassela@users.noreply.github.com>
GitOrigin-RevId: 4df4a8ff00fa8ef311a85199d66abe4cc10adc8c
2021-07-15 12:45:51 +00:00
..
pgdump server: add "SET check_function_bodies=false" in pg_dump clean output 2021-03-31 14:49:38 +00:00
queries mysql: Metadata awareness 2021-07-15 12:45:51 +00:00
remote_schemas/nodejs server/postgres: Support scalar computed fields in remote joins 2021-07-12 16:04:37 +00:00
test_tests Test result ordering, add --accept test mode to automatically accept changed test cases 2019-11-05 15:15:25 -06:00
webhook/insecure [server] coalesce multiple run_sql calls in tests (#270) 2021-01-06 16:07:22 +00:00
.gitignore Remote Joins: Create relationships across database and remote schemas (#2392) 2020-05-27 20:32:58 +05:30
conftest.py server tests: refactor the per_class_tests_db_state fixture 2021-07-01 09:21:45 +00:00
context.py server: improve backend-specific test setup 2021-05-25 13:55:11 +00:00
graphql_server.py Revert "remote schema typename customisation" 2021-06-10 09:57:16 +00:00
jwk_server.py fix parsing JWK expiry time from headers on startup (fix #3655) (#3779) 2020-02-05 12:37:30 +05:30
pytest.ini run default tests in test_server_upgrade (#3718) 2020-02-13 14:44:02 +05:30
README.md Link to pytest docs in the server test suite READMEs (#4425) 2020-04-21 11:29:16 +02:00
remote_server.py actions: fix behaviour when using remote relationship in mutation action's relationship (#4982) 2020-06-05 17:33:18 +05:30
requirements-top-level.txt Add a new /dev/rts_stats endpoint, enabled when '+RTS -T' 2021-04-13 17:33:38 +00:00
requirements.txt Add a new /dev/rts_stats endpoint, enabled when '+RTS -T' 2021-04-13 17:33:38 +00:00
super_classes.py fix validation of null values, closes #1981 (#2057) 2019-04-24 13:19:39 +05:30
test_actions.py server: fix action output fields return type (fix hasura/graphql-engine#6631) 2021-05-18 09:32:43 +00:00
test_allowlist_queries.py run default tests in test_server_upgrade (#3718) 2020-02-13 14:44:02 +05:30
test_apis_disabled.py disable explain end-points when metadata API is disabled, fix #3717 (#3751) 2020-01-22 16:20:49 +05:30
test_compat.py remove usage of deprecated 'pytest.config' (#3434) 2019-11-29 10:44:26 +05:30
test_compression.py run default tests in test_server_upgrade (#3718) 2020-02-13 14:44:02 +05:30
test_config_api.py server: add logs for version and healthz endpoints 2021-06-08 14:28:52 +00:00
test_cookie_webhook.py read cookie while initialising websocket connection (fix #1660) (#1668) 2019-03-04 13:16:53 +05:30
test_cors.py remove usage of deprecated 'pytest.config' (#3434) 2019-11-29 10:44:26 +05:30
test_endpoints.py REST endpoint uuid param bugfix 2021-05-06 06:44:17 +00:00
test_events.py server/postgres: fix resetting the metadata catalog version to 43 while initializing postgres source with 1.0 catalog (#1645) 2021-06-23 18:01:09 +00:00
test_graphql_introspection.py server tests: refactor the per_class_tests_db_state fixture 2021-07-01 09:21:45 +00:00
test_graphql_mutations.py server tests: refactor the per_class_tests_db_state fixture 2021-07-01 09:21:45 +00:00
test_graphql_queries.py mysql: Metadata awareness 2021-07-15 12:45:51 +00:00
test_heterogeneous.py server: heterogeneous execution of GraphQL queries (#5869) 2020-10-07 10:23:17 +00:00
test_horizontal_scale.py remove usage of deprecated 'pytest.config' (#3434) 2019-11-29 10:44:26 +05:30
test_inconsistent_meta.py server/citus: feature branch 2021-05-21 02:47:51 +00:00
test_jwk.py read cache control header to refresh JWK (fix #3301) (#3446) 2019-12-03 14:56:59 -06:00
test_jwt_claims_map.py support customizing JWT claims (close #3485) (#3575) 2020-08-31 22:10:01 +05:30
test_jwt.py server: support reading JWT from Cookie header 2021-02-25 09:03:46 +00:00
test_logging.py server: add query field to http-log and websocket-log 2021-07-02 13:05:57 +00:00
test_metadata.py Generalize set_table_customization to other backends (close #1501) 2021-06-17 13:22:54 +00:00
test_pg_dump.py server: hasura on PG v13 (#125) 2020-12-01 12:22:42 +00:00
test_query_cache.py server: disable caching for actions with forward client headers enabled 2021-04-13 07:01:34 +00:00
test_remote_relationships.py server/postgres: Support scalar computed fields in remote joins 2021-07-12 16:04:37 +00:00
test_remote_schema_permissions.py Adds integration test for caching remote schema queries 2021-06-22 21:11:02 +00:00
test_scheduled_triggers.py server: fix cron trigger bug of new events not getting generated when cron trigger is imported via metadata 2021-05-26 16:20:19 +00:00
test_schema_duplication.py add tests 2020-09-01 17:13:42 +05:30
test_schema_stitching.py server, console, docs: add update_remote_schema API 2021-06-21 17:42:40 +00:00
test_subscriptions.py server/mssql: subscription test cleanup post-fix 2021-05-26 09:06:57 +00:00
test_tests.py server: hasura on PG v13 (#125) 2020-12-01 12:22:42 +00:00
test_v1_queries.py server: mssql: apply schema changes by mssql_run_sql DDL on metadata (fix #779) 2021-05-27 15:07:10 +00:00
test_v1alpha1_endpoint.py run default tests in test_server_upgrade (#3718) 2020-02-13 14:44:02 +05:30
test_validation.py server: fix validation of query variables (fixes hasura/graphql-engine#6867) 2021-05-04 17:58:43 +00:00
test_version.py server: add logs for version and healthz endpoints 2021-06-08 14:28:52 +00:00
test_webhook_insecure.py run default tests in test_server_upgrade (#3718) 2020-02-13 14:44:02 +05:30
test_webhook_request_context.py Integration test improvements (for speed/clarity), also increase polling interval for scheduled events 2021-04-27 05:35:26 +00:00
test_webhook.py server: add support for webhook connection expiration (#4196) 2020-04-02 19:00:13 -05:00
test_websocket_init_cookie.py remove usage of deprecated 'pytest.config' (#3434) 2019-11-29 10:44:26 +05:30
utils.py server: restore proper batching behavior in event trigger processing (#1237) 2021-04-29 04:02:05 +00:00
validate.py Pytest: Pretty-print JSON payloads in failing assertions 2021-07-08 19:29:40 +00:00
webhook.py pass gql requests into auth webhook POST body (#149) 2021-02-03 07:11:39 +00:00
webserver.py run graphql tests on both http and websocket; add parallelism (close #1868) (#1921) 2019-04-08 12:52:38 +05:30

Running tests

The easiest way to run the test suite is to do:

$ scripts/dev.sh test

This should install python dependencies if required, and run in isolation. The output format is described in the pytest documentation. Errors and failures are indicated by Fs and Es.

Tests Structure

  • Tests are grouped as test classes in test modules (names starting with test_)

  • The configuration files (if needed) for the tests in a class are usually kept in one folder.

    • The folder name is usually either the dir variable or the dir() function
  • Some tests (like in test_graphql_queries.py) requires a setup and teardown per class.

    • Here we are extending the DefaultTestSelectQueries class.
    • This class defines a fixture which will run the configurations in setup.yaml and teardown.yaml once per class
    • Extending test class should define a function name dir(), which returns the configuration folder
  • For mutation tests (like in test_graphql_mutations.py)

    • We need a schema_setup and schema_teardown per class
    • And values_setup and values_teardown per test
    • Doing schema setup and teardown per test is expensive.
    • We are extending the DefaultTestMutations class for this.
    • This class defines a fixture which will run the configuration in setup.yaml and teardown.yaml once per class.
    • Another fixture defined in this class runs the configuration in values_setup.yaml and values_teardown.yaml once per class.