graphql-engine/server/tests-py
hasura-bot da3c9f2c53 minor typo fixes (#165)
Co-authored-by: Colby Thomas <coloradocolby@gmail.com>
GITHUB_PR_NUMBER: 6311
GITHUB_PR_URL: https://github.com/hasura/graphql-engine/pull/6311

Co-authored-by: Colby Thomas <coloradocolby@gmail.com>
Co-authored-by: Vamshi Surabhi <0x777@users.noreply.github.com>
GitOrigin-RevId: 946665878fb9199d067ad1bd981de9525e86a0ae
2021-03-04 06:36:15 +00:00
..
pgdump [server] coalesce multiple run_sql calls in tests (#270) 2021-01-06 16:07:22 +00:00
queries minor typo fixes (#165) 2021-03-04 06:36:15 +00:00
remote_schemas/nodejs Merge pull request #113 from hasura/karthikeyan/remote-schema-permissions 2020-12-21 09:12:35 +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 Caching, Rate Limiting, Metrics & Session Variable Improvements (#376) 2021-02-13 00:06:18 +00:00
context.py server: new function permissions layer 2021-01-29 05:49:09 +00:00
graphql_server.py server: add https remote schema tests 2021-03-02 16:52:47 +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 remove brotli from packaging and CI images (#3673) 2020-01-10 15:15:47 -06:00
requirements.txt Caching, Rate Limiting, Metrics & Session Variable Improvements (#376) 2021-02-13 00:06:18 +00:00
super_classes.py fix validation of null values, closes #1981 (#2057) 2019-04-24 13:19:39 +05:30
test_actions.py Fix action relationship type and input arguments (closes #6402) (#284) 2021-01-18 06:57:24 +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 accept a new argument claims_namespace_path in JWT config (#4365) 2020-04-16 12:15:21 +05:30
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 Endpoints - Prohibit Invalid slashes, duplicate variables, non-singular query definitions, subscriptions 2021-02-24 04:31:05 +00:00
test_events.py server: template the schema and table names in the event trigger PG functions 2021-01-06 20:22:34 +00:00
test_graphql_introspection.py server: customize tracking tables with a custom name (#5719) 2020-10-29 12:48:45 +00:00
test_graphql_mutations.py better handling for one-to-one relationships 2021-03-03 13:02:59 +00:00
test_graphql_queries.py server: support ltree operators (close #625) 2021-02-25 11:06:49 +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: move to storing metadata as a json blob (#115) 2020-12-08 14:23:28 +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 remove usage of deprecated 'pytest.config' (#3434) 2019-11-29 10:44:26 +05:30
test_metadata.py Tests for metadata resource version 2021-03-03 04:41:02 +00:00
test_pg_dump.py server: hasura on PG v13 (#125) 2020-12-01 12:22:42 +00:00
test_query_cache.py Caching, Rate Limiting, Metrics & Session Variable Improvements (#376) 2021-02-13 00:06:18 +00:00
test_remote_relationships.py server: support separate metadata database and server code setup for multi sources (#197) 2020-12-28 12:56:55 +00:00
test_remote_schema_permissions.py Server: Remote relationships permissions 2021-01-19 20:57:58 +00:00
test_scheduled_triggers.py server: move to storing metadata as a json blob (#115) 2020-12-08 14:23:28 +00:00
test_schema_duplication.py add tests 2020-09-01 17:13:42 +05:30
test_schema_stitching.py server: support separate metadata database and server code setup for multi sources (#197) 2020-12-28 12:56:55 +00:00
test_subscriptions.py use only required session variables in multiplexed queries for subscriptions (#4329) 2020-11-03 13:45:22 +05:30
test_tests.py server: hasura on PG v13 (#125) 2020-12-01 12:22:42 +00:00
test_v1_queries.py server: support ltree operators (close #625) 2021-02-25 11:06:49 +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 Rewrite GraphQL schema generation and query parsing (close #2801) (#4111) 2020-08-21 12:27:01 -05:00
test_version.py Add local development swiss army knife script scripts/dev.sh 2019-07-26 01:17:35 -04: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 pass gql requests into auth webhook POST body (#149) 2021-02-03 07:11:39 +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
validate.py Caching, Rate Limiting, Metrics & Session Variable Improvements (#376) 2021-02-13 00:06:18 +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.