From 72ec2ab1e320fdd32e43c41ee2dfba2551aeeae3 Mon Sep 17 00:00:00 2001 From: Vamshi Surabhi Date: Wed, 19 Dec 2018 11:19:41 +0530 Subject: [PATCH] clear event_triggers when clear_metadata is called --- server/src-lib/Hasura/RQL/DDL/Metadata.hs | 1 + .../create-delete/create_and_delete.yaml | 34 +++++++++++++++++++ .../create-delete/create_and_reset.yaml | 26 ++++++++++++++ .../event_triggers/create-delete/setup.yaml | 9 +++++ .../create-delete/teardown.yaml | 6 ++++ server/tests-py/test_events.py | 15 ++++++-- 6 files changed, 89 insertions(+), 2 deletions(-) create mode 100644 server/tests-py/queries/event_triggers/create-delete/create_and_delete.yaml create mode 100644 server/tests-py/queries/event_triggers/create-delete/create_and_reset.yaml create mode 100644 server/tests-py/queries/event_triggers/create-delete/setup.yaml create mode 100644 server/tests-py/queries/event_triggers/create-delete/teardown.yaml diff --git a/server/src-lib/Hasura/RQL/DDL/Metadata.hs b/server/src-lib/Hasura/RQL/DDL/Metadata.hs index a6c2cc58c31bc..3679b2c0e402c 100644 --- a/server/src-lib/Hasura/RQL/DDL/Metadata.hs +++ b/server/src-lib/Hasura/RQL/DDL/Metadata.hs @@ -116,6 +116,7 @@ clearMetadata = Q.catchE defaultTxErrorHandler $ do Q.unitQ "DELETE FROM hdb_catalog.hdb_permission WHERE is_system_defined <> 'true'" () False Q.unitQ "DELETE FROM hdb_catalog.hdb_relationship WHERE is_system_defined <> 'true'" () False Q.unitQ "DELETE FROM hdb_catalog.hdb_table WHERE is_system_defined <> 'true'" () False + Q.unitQ "DELETE FROM hdb_catalog.event_triggers" () False Q.unitQ "DELETE FROM hdb_catalog.remote_schemas" () False clearHdbViews diff --git a/server/tests-py/queries/event_triggers/create-delete/create_and_delete.yaml b/server/tests-py/queries/event_triggers/create-delete/create_and_delete.yaml new file mode 100644 index 0000000000000..0358dc5804052 --- /dev/null +++ b/server/tests-py/queries/event_triggers/create-delete/create_and_delete.yaml @@ -0,0 +1,34 @@ +description: create and then drop an event trigger +url: /v1/query +status: 200 +query: + type: bulk + args: + - type: track_table + args: + schema: hge_tests + name: test_t1 + + - type: create_event_trigger + args: &def_args + name: t1_1 + table: + schema: hge_tests + name: test_t1 + insert: + columns: "*" + update: + columns: "*" + delete: + columns: "*" + webhook: http://127.0.0.1:5592 + + - type: delete_event_trigger + args: + name: t1_1 + + - type: untrack_table + args: + table: + schema: hge_tests + name: test_t1 diff --git a/server/tests-py/queries/event_triggers/create-delete/create_and_reset.yaml b/server/tests-py/queries/event_triggers/create-delete/create_and_reset.yaml new file mode 100644 index 0000000000000..981737f15386a --- /dev/null +++ b/server/tests-py/queries/event_triggers/create-delete/create_and_reset.yaml @@ -0,0 +1,26 @@ +description: create an event trigger and then reset metadata +url: /v1/query +status: 200 +query: + type: bulk + args: + - type: track_table + args: + schema: hge_tests + name: test_t1 + - type: create_event_trigger + args: &def_args + name: t1_1 + table: + schema: hge_tests + name: test_t1 + insert: + columns: "*" + update: + columns: "*" + delete: + columns: "*" + webhook: http://127.0.0.1:5592 + + - type: clear_metadata + args: {} diff --git a/server/tests-py/queries/event_triggers/create-delete/setup.yaml b/server/tests-py/queries/event_triggers/create-delete/setup.yaml new file mode 100644 index 0000000000000..320688690fd6f --- /dev/null +++ b/server/tests-py/queries/event_triggers/create-delete/setup.yaml @@ -0,0 +1,9 @@ +type: bulk +args: +- type: run_sql + args: + sql: | + create table hge_tests.test_t1( + c1 int, + c2 text + ); diff --git a/server/tests-py/queries/event_triggers/create-delete/teardown.yaml b/server/tests-py/queries/event_triggers/create-delete/teardown.yaml new file mode 100644 index 0000000000000..dcceaddda3730 --- /dev/null +++ b/server/tests-py/queries/event_triggers/create-delete/teardown.yaml @@ -0,0 +1,6 @@ +type: bulk +args: +- type: run_sql + args: + sql: | + drop table hge_tests.test_t1 diff --git a/server/tests-py/test_events.py b/server/tests-py/test_events.py index bba82bb6704a4..302750a69c15d 100755 --- a/server/tests-py/test_events.py +++ b/server/tests-py/test_events.py @@ -4,8 +4,8 @@ import queue import yaml import time -from validate import check_event - +from super_classes import DefaultTestQueries +from validate import check_query_f, check_query, check_event def select_last_event_fromdb(hge_ctx): q = { @@ -58,6 +58,17 @@ def delete(hge_ctx, table, where_exp): st_code, resp = hge_ctx.v1q(q) return st_code, resp +class TestCreateAndDelete(DefaultTestQueries): + + def test_create_delete(self, hge_ctx): + check_query_f(hge_ctx, self.dir() + "/create_and_delete.yaml") + + def test_create_reset(self, hge_ctx): + check_query_f(hge_ctx, self.dir() + "/create_and_reset.yaml") + + @classmethod + def dir(cls): + return 'queries/event_triggers/create-delete' class TestCreateEvtQuery(object):