From 399cf1d2b3381d7095181265a5a4710934c07ba1 Mon Sep 17 00:00:00 2001 From: Lily Kuang Date: Thu, 16 Apr 2020 10:41:01 -0700 Subject: [PATCH 1/5] add statsd to charts api --- superset/charts/api.py | 12 ++++++- tests/charts/api_tests.py | 66 +++++++++++++++++++-------------------- 2 files changed, 44 insertions(+), 34 deletions(-) diff --git a/superset/charts/api.py b/superset/charts/api.py index be0df118b20c3..f975a6275c1e6 100644 --- a/superset/charts/api.py +++ b/superset/charts/api.py @@ -54,7 +54,11 @@ from superset.tasks.thumbnails import cache_chart_thumbnail from superset.utils.core import json_int_dttm_ser from superset.utils.screenshots import ChartScreenshot -from superset.views.base_api import BaseSupersetModelRestApi, RelatedFieldFilter +from superset.views.base_api import ( + BaseSupersetModelRestApi, + RelatedFieldFilter, + statsd_metrics, +) from superset.views.filters import FilterRelatedOwners logger = logging.getLogger(__name__) @@ -145,6 +149,7 @@ def __init__(self) -> None: @expose("/", methods=["POST"]) @protect() @safe + @statsd_metrics def post(self) -> Response: """Creates a new Chart --- @@ -197,6 +202,7 @@ def post(self) -> Response: @expose("/", methods=["PUT"]) @protect() @safe + @statsd_metrics def put( # pylint: disable=too-many-return-statements, arguments-differ self, pk: int ) -> Response: @@ -264,6 +270,7 @@ def put( # pylint: disable=too-many-return-statements, arguments-differ @expose("/", methods=["DELETE"]) @protect() @safe + @statsd_metrics def delete(self, pk: int) -> Response: # pylint: disable=arguments-differ """Deletes a Chart --- @@ -310,6 +317,7 @@ def delete(self, pk: int) -> Response: # pylint: disable=arguments-differ @expose("/", methods=["DELETE"]) @protect() @safe + @statsd_metrics @rison(get_delete_ids_schema) def bulk_delete( self, **kwargs: Any @@ -371,6 +379,7 @@ def bulk_delete( @event_logger.log_this @protect() @safe + @statsd_metrics def data(self) -> Response: """ Takes a query context constructed in the client and returns payload @@ -476,6 +485,7 @@ def data(self) -> Response: @protect() @rison(thumbnail_query_schema) @safe + @statsd_metrics def thumbnail( self, pk: int, digest: str, **kwargs: Dict[str, bool] ) -> WerkzeugResponse: diff --git a/tests/charts/api_tests.py b/tests/charts/api_tests.py index 257b89ba37df0..6a52bcfef400c 100644 --- a/tests/charts/api_tests.py +++ b/tests/charts/api_tests.py @@ -87,20 +87,20 @@ def _get_query_context(self) -> Dict[str, Any]: def test_delete_chart(self): """ - Chart API: Test delete + Chart API: Test delete """ admin_id = self.get_user("admin").id chart_id = self.insert_chart("name", [admin_id], 1).id self.login(username="admin") uri = f"api/v1/chart/{chart_id}" - rv = self.client.delete(uri) + rv = self.delete_assert_metric(uri, "delete") self.assertEqual(rv.status_code, 200) model = db.session.query(Slice).get(chart_id) self.assertEqual(model, None) def test_delete_bulk_charts(self): """ - Chart API: Test delete bulk + Chart API: Test delete bulk """ admin_id = self.get_user("admin").id chart_count = 4 @@ -112,7 +112,7 @@ def test_delete_bulk_charts(self): self.login(username="admin") argument = chart_ids uri = f"api/v1/chart/?q={prison.dumps(argument)}" - rv = self.client.delete(uri) + rv = self.delete_assert_metric(uri, "bulk_delete") self.assertEqual(rv.status_code, 200) response = json.loads(rv.data.decode("utf-8")) expected_response = {"message": f"Deleted {chart_count} charts"} @@ -123,7 +123,7 @@ def test_delete_bulk_charts(self): def test_delete_bulk_chart_bad_request(self): """ - Chart API: Test delete bulk bad request + Chart API: Test delete bulk bad request """ chart_ids = [1, "a"] self.login(username="admin") @@ -144,7 +144,7 @@ def test_delete_not_found_chart(self): def test_delete_bulk_charts_not_found(self): """ - Chart API: Test delete bulk not found + Chart API: Test delete bulk not found """ max_id = db.session.query(func.max(Slice.id)).scalar() chart_ids = [max_id + 1, max_id + 2] @@ -156,7 +156,7 @@ def test_delete_bulk_charts_not_found(self): def test_delete_chart_admin_not_owned(self): """ - Chart API: Test admin delete not owned + Chart API: Test admin delete not owned """ gamma_id = self.get_user("gamma").id chart_id = self.insert_chart("title", [gamma_id], 1).id @@ -170,7 +170,7 @@ def test_delete_chart_admin_not_owned(self): def test_delete_bulk_chart_admin_not_owned(self): """ - Chart API: Test admin delete bulk not owned + Chart API: Test admin delete bulk not owned """ gamma_id = self.get_user("gamma").id chart_count = 4 @@ -195,7 +195,7 @@ def test_delete_bulk_chart_admin_not_owned(self): def test_delete_chart_not_owned(self): """ - Chart API: Test delete try not owned + Chart API: Test delete try not owned """ user_alpha1 = self.create_user( "alpha1", "password", "Alpha", email="alpha1@superset.org" @@ -215,7 +215,7 @@ def test_delete_chart_not_owned(self): def test_delete_bulk_chart_not_owned(self): """ - Chart API: Test delete bulk try not owned + Chart API: Test delete bulk try not owned """ user_alpha1 = self.create_user( "alpha1", "password", "Alpha", email="alpha1@superset.org" @@ -262,7 +262,7 @@ def test_delete_bulk_chart_not_owned(self): def test_create_chart(self): """ - Chart API: Test create chart + Chart API: Test create chart """ admin_id = self.get_user("admin").id chart_data = { @@ -278,7 +278,7 @@ def test_create_chart(self): } self.login(username="admin") uri = f"api/v1/chart/" - rv = self.client.post(uri, json=chart_data) + rv = self.post_assert_metric(uri, chart_data, "post") self.assertEqual(rv.status_code, 201) data = json.loads(rv.data.decode("utf-8")) model = db.session.query(Slice).get(data.get("id")) @@ -287,7 +287,7 @@ def test_create_chart(self): def test_create_simple_chart(self): """ - Chart API: Test create simple chart + Chart API: Test create simple chart """ chart_data = { "slice_name": "title1", @@ -305,7 +305,7 @@ def test_create_simple_chart(self): def test_create_chart_validate_owners(self): """ - Chart API: Test create validate owners + Chart API: Test create validate owners """ chart_data = { "slice_name": "title1", @@ -323,7 +323,7 @@ def test_create_chart_validate_owners(self): def test_create_chart_validate_params(self): """ - Chart API: Test create validate params json + Chart API: Test create validate params json """ chart_data = { "slice_name": "title1", @@ -338,7 +338,7 @@ def test_create_chart_validate_params(self): def test_create_chart_validate_datasource(self): """ - Chart API: Test create validate datasource + Chart API: Test create validate datasource """ self.login(username="admin") chart_data = { @@ -368,7 +368,7 @@ def test_create_chart_validate_datasource(self): def test_update_chart(self): """ - Chart API: Test update + Chart API: Test update """ admin = self.get_user("admin") gamma = self.get_user("gamma") @@ -387,7 +387,7 @@ def test_update_chart(self): } self.login(username="admin") uri = f"api/v1/chart/{chart_id}" - rv = self.client.put(uri, json=chart_data) + rv = self.put_assert_metric(uri, chart_data, "put") self.assertEqual(rv.status_code, 200) model = db.session.query(Slice).get(chart_id) related_dashboard = db.session.query(Dashboard).get(1) @@ -407,7 +407,7 @@ def test_update_chart(self): def test_update_chart_new_owner(self): """ - Chart API: Test update set new owner to current user + Chart API: Test update set new owner to current user """ gamma = self.get_user("gamma") admin = self.get_user("admin") @@ -424,7 +424,7 @@ def test_update_chart_new_owner(self): def test_update_chart_not_owned(self): """ - Chart API: Test update not owned + Chart API: Test update not owned """ user_alpha1 = self.create_user( "alpha1", "password", "Alpha", email="alpha1@superset.org" @@ -446,7 +446,7 @@ def test_update_chart_not_owned(self): def test_update_chart_validate_datasource(self): """ - Chart API: Test update validate datasource + Chart API: Test update validate datasource """ admin = self.get_user("admin") chart = self.insert_chart("title", [admin.id], 1) @@ -472,7 +472,7 @@ def test_update_chart_validate_datasource(self): def test_update_chart_validate_owners(self): """ - Chart API: Test update validate owners + Chart API: Test update validate owners """ chart_data = { "slice_name": "title1", @@ -490,7 +490,7 @@ def test_update_chart_validate_owners(self): def test_get_chart(self): """ - Chart API: Test get chart + Chart API: Test get chart """ admin = self.get_user("admin") chart = self.insert_chart("title", [admin.id], 1) @@ -521,17 +521,17 @@ def test_get_chart(self): def test_get_chart_not_found(self): """ - Chart API: Test get chart not found + Chart API: Test get chart not found """ chart_id = 1000 self.login(username="admin") uri = f"api/v1/chart/{chart_id}" - rv = self.client.get(uri) + rv = self.get_assert_metric(uri, "get") self.assertEqual(rv.status_code, 404) def test_get_chart_no_data_access(self): """ - Chart API: Test get chart without data access + Chart API: Test get chart without data access """ self.login(username="gamma") chart_no_access = ( @@ -545,30 +545,30 @@ def test_get_chart_no_data_access(self): def test_get_charts(self): """ - Chart API: Test get charts + Chart API: Test get charts """ self.login(username="admin") uri = f"api/v1/chart/" - rv = self.client.get(uri) + rv = self.get_assert_metric(uri, "get_list") self.assertEqual(rv.status_code, 200) data = json.loads(rv.data.decode("utf-8")) self.assertEqual(data["count"], 33) def test_get_charts_filter(self): """ - Chart API: Test get charts filter + Chart API: Test get charts filter """ self.login(username="admin") arguments = {"filters": [{"col": "slice_name", "opr": "sw", "value": "G"}]} uri = f"api/v1/chart/?q={prison.dumps(arguments)}" - rv = self.client.get(uri) + rv = self.get_assert_metric(uri, "get_list") self.assertEqual(rv.status_code, 200) data = json.loads(rv.data.decode("utf-8")) self.assertEqual(data["count"], 5) def test_get_charts_custom_filter(self): """ - Chart API: Test get charts custom filter + Chart API: Test get charts custom filter """ admin = self.get_user("admin") chart1 = self.insert_chart("foo", [admin.id], 1, description="ZY_bar") @@ -618,7 +618,7 @@ def test_get_charts_custom_filter(self): def test_get_charts_page(self): """ - Chart API: Test get charts filter + Chart API: Test get charts filter """ # Assuming we have 33 sample charts self.login(username="admin") @@ -638,7 +638,7 @@ def test_get_charts_page(self): def test_get_charts_no_data_access(self): """ - Chart API: Test get charts no data access + Chart API: Test get charts no data access """ self.login(username="gamma") uri = f"api/v1/chart/" From 43a5ce6bd41e94c7ec89a69e1fb094db9e983863 Mon Sep 17 00:00:00 2001 From: Lily Kuang Date: Thu, 16 Apr 2020 12:15:23 -0700 Subject: [PATCH 2/5] update test for charts api --- superset/charts/api.py | 8 +++--- tests/charts/api_tests.py | 56 +++++++++++++++++++-------------------- 2 files changed, 32 insertions(+), 32 deletions(-) diff --git a/superset/charts/api.py b/superset/charts/api.py index f975a6275c1e6..7b1911f1bf514 100644 --- a/superset/charts/api.py +++ b/superset/charts/api.py @@ -54,10 +54,10 @@ from superset.tasks.thumbnails import cache_chart_thumbnail from superset.utils.core import json_int_dttm_ser from superset.utils.screenshots import ChartScreenshot -from superset.views.base_api import ( - BaseSupersetModelRestApi, - RelatedFieldFilter, - statsd_metrics, +from superset.views.base_api import ( + BaseSupersetModelRestApi, + RelatedFieldFilter, + statsd_metrics, ) from superset.views.filters import FilterRelatedOwners diff --git a/tests/charts/api_tests.py b/tests/charts/api_tests.py index 6a52bcfef400c..3be7f9eb994fc 100644 --- a/tests/charts/api_tests.py +++ b/tests/charts/api_tests.py @@ -129,17 +129,17 @@ def test_delete_bulk_chart_bad_request(self): self.login(username="admin") argument = chart_ids uri = f"api/v1/chart/?q={prison.dumps(argument)}" - rv = self.client.delete(uri) + rv = self.delete_assert_metric(uri, "bulk_delete") self.assertEqual(rv.status_code, 400) def test_delete_not_found_chart(self): """ - Chart API: Test not found delete + Chart API: Test not found delete """ self.login(username="admin") chart_id = 1000 uri = f"api/v1/chart/{chart_id}" - rv = self.client.delete(uri) + rv = self.delete_assert_metric(uri, "delete") self.assertEqual(rv.status_code, 404) def test_delete_bulk_charts_not_found(self): @@ -151,7 +151,7 @@ def test_delete_bulk_charts_not_found(self): self.login(username="admin") argument = chart_ids uri = f"api/v1/chart/?q={prison.dumps(argument)}" - rv = self.client.delete(uri) + rv = self.delete_assert_metric(uri, "bulk_delete") self.assertEqual(rv.status_code, 404) def test_delete_chart_admin_not_owned(self): @@ -163,7 +163,7 @@ def test_delete_chart_admin_not_owned(self): self.login(username="admin") uri = f"api/v1/chart/{chart_id}" - rv = self.client.delete(uri) + rv = self.delete_assert_metric(uri, "delete") self.assertEqual(rv.status_code, 200) model = db.session.query(Slice).get(chart_id) self.assertEqual(model, None) @@ -183,7 +183,7 @@ def test_delete_bulk_chart_admin_not_owned(self): self.login(username="admin") argument = chart_ids uri = f"api/v1/chart/?q={prison.dumps(argument)}" - rv = self.client.delete(uri) + rv = self.delete_assert_metric(uri, "bulk_delete") response = json.loads(rv.data.decode("utf-8")) self.assertEqual(rv.status_code, 200) expected_response = {"message": f"Deleted {chart_count} charts"} @@ -206,7 +206,7 @@ def test_delete_chart_not_owned(self): chart = self.insert_chart("title", [user_alpha1.id], 1) self.login(username="alpha2", password="password") uri = f"api/v1/chart/{chart.id}" - rv = self.client.delete(uri) + rv = self.delete_assert_metric(uri, "delete") self.assertEqual(rv.status_code, 403) db.session.delete(chart) db.session.delete(user_alpha1) @@ -238,7 +238,7 @@ def test_delete_bulk_chart_not_owned(self): # verify we can't delete not owned charts arguments = [chart.id for chart in charts] uri = f"api/v1/chart/?q={prison.dumps(arguments)}" - rv = self.client.delete(uri) + rv = self.delete_assert_metric(uri, "bulk_delete") self.assertEqual(rv.status_code, 403) response = json.loads(rv.data.decode("utf-8")) expected_response = {"message": "Forbidden"} @@ -247,7 +247,7 @@ def test_delete_bulk_chart_not_owned(self): # # nothing is deleted in bulk with a list of owned and not owned charts arguments = [chart.id for chart in charts] + [owned_chart.id] uri = f"api/v1/chart/?q={prison.dumps(arguments)}" - rv = self.client.delete(uri) + rv = self.delete_assert_metric(uri, "bulk_delete") self.assertEqual(rv.status_code, 403) response = json.loads(rv.data.decode("utf-8")) expected_response = {"message": "Forbidden"} @@ -296,7 +296,7 @@ def test_create_simple_chart(self): } self.login(username="admin") uri = f"api/v1/chart/" - rv = self.client.post(uri, json=chart_data) + rv = self.post_assert_metric(uri, chart_data, "post") self.assertEqual(rv.status_code, 201) data = json.loads(rv.data.decode("utf-8")) model = db.session.query(Slice).get(data.get("id")) @@ -315,7 +315,7 @@ def test_create_chart_validate_owners(self): } self.login(username="admin") uri = f"api/v1/chart/" - rv = self.client.post(uri, json=chart_data) + rv = self.post_assert_metric(uri, chart_data, "post") self.assertEqual(rv.status_code, 422) response = json.loads(rv.data.decode("utf-8")) expected_response = {"message": {"owners": ["Owners are invalid"]}} @@ -333,7 +333,7 @@ def test_create_chart_validate_params(self): } self.login(username="admin") uri = f"api/v1/chart/" - rv = self.client.post(uri, json=chart_data) + rv = self.post_assert_metric(uri, chart_data, "post") self.assertEqual(rv.status_code, 400) def test_create_chart_validate_datasource(self): @@ -347,7 +347,7 @@ def test_create_chart_validate_datasource(self): "datasource_type": "unknown", } uri = f"api/v1/chart/" - rv = self.client.post(uri, json=chart_data) + rv = self.post_assert_metric(uri, chart_data, "post") self.assertEqual(rv.status_code, 422) response = json.loads(rv.data.decode("utf-8")) self.assertEqual( @@ -359,7 +359,7 @@ def test_create_chart_validate_datasource(self): "datasource_type": "table", } uri = f"api/v1/chart/" - rv = self.client.post(uri, json=chart_data) + rv = self.post_assert_metric(uri, chart_data, "post") self.assertEqual(rv.status_code, 422) response = json.loads(rv.data.decode("utf-8")) self.assertEqual( @@ -415,7 +415,7 @@ def test_update_chart_new_owner(self): chart_data = {"slice_name": "title1_changed"} self.login(username="admin") uri = f"api/v1/chart/{chart_id}" - rv = self.client.put(uri, json=chart_data) + rv = self.put_assert_metric(uri, chart_data, "put") self.assertEqual(rv.status_code, 200) model = db.session.query(Slice).get(chart_id) self.assertIn(admin, model.owners) @@ -437,7 +437,7 @@ def test_update_chart_not_owned(self): self.login(username="alpha2", password="password") chart_data = {"slice_name": "title1_changed"} uri = f"api/v1/chart/{chart.id}" - rv = self.client.put(uri, json=chart_data) + rv = self.put_assert_metric(uri, chart_data, "put") self.assertEqual(rv.status_code, 403) db.session.delete(chart) db.session.delete(user_alpha1) @@ -453,7 +453,7 @@ def test_update_chart_validate_datasource(self): self.login(username="admin") chart_data = {"datasource_id": 1, "datasource_type": "unknown"} uri = f"api/v1/chart/{chart.id}" - rv = self.client.put(uri, json=chart_data) + rv = self.put_assert_metric(uri, chart_data, "put") self.assertEqual(rv.status_code, 422) response = json.loads(rv.data.decode("utf-8")) self.assertEqual( @@ -461,7 +461,7 @@ def test_update_chart_validate_datasource(self): ) chart_data = {"datasource_id": 0, "datasource_type": "table"} uri = f"api/v1/chart/{chart.id}" - rv = self.client.put(uri, json=chart_data) + rv = self.put_assert_metric(uri, chart_data, "put") self.assertEqual(rv.status_code, 422) response = json.loads(rv.data.decode("utf-8")) self.assertEqual( @@ -496,7 +496,7 @@ def test_get_chart(self): chart = self.insert_chart("title", [admin.id], 1) self.login(username="admin") uri = f"api/v1/chart/{chart.id}" - rv = self.client.get(uri) + rv = self.get_assert_metric(uri, "get") self.assertEqual(rv.status_code, 200) expected_result = { "cache_timeout": None, @@ -545,7 +545,7 @@ def test_get_chart_no_data_access(self): def test_get_charts(self): """ - Chart API: Test get charts + Chart API: Test get charts """ self.login(username="admin") uri = f"api/v1/chart/" @@ -585,7 +585,7 @@ def test_get_charts_custom_filter(self): } self.login(username="admin") uri = f"api/v1/chart/?q={prison.dumps(arguments)}" - rv = self.client.get(uri) + rv = self.get_assert_metric(uri, "get_list") self.assertEqual(rv.status_code, 200) data = json.loads(rv.data.decode("utf-8")) self.assertEqual(data["count"], 3) @@ -604,7 +604,7 @@ def test_get_charts_custom_filter(self): self.logout() self.login(username="gamma") uri = f"api/v1/chart/?q={prison.dumps(arguments)}" - rv = self.client.get(uri) + rv = self.get_assert_metric(uri, "get_list") self.assertEqual(rv.status_code, 200) data = json.loads(rv.data.decode("utf-8")) self.assertEqual(data["count"], 0) @@ -618,7 +618,7 @@ def test_get_charts_custom_filter(self): def test_get_charts_page(self): """ - Chart API: Test get charts filter + Chart API: Test get charts filter """ # Assuming we have 33 sample charts self.login(username="admin") @@ -631,25 +631,25 @@ def test_get_charts_page(self): arguments = {"page_size": 10, "page": 3} uri = f"api/v1/chart/?q={prison.dumps(arguments)}" - rv = self.client.get(uri) + rv = self.get_assert_metric(uri, "get_list") self.assertEqual(rv.status_code, 200) data = json.loads(rv.data.decode("utf-8")) self.assertEqual(len(data["result"]), 3) def test_get_charts_no_data_access(self): """ - Chart API: Test get charts no data access + Chart API: Test get charts no data access """ self.login(username="gamma") uri = f"api/v1/chart/" - rv = self.client.get(uri) + rv = self.get_assert_metric(uri, "get_list") self.assertEqual(rv.status_code, 200) data = json.loads(rv.data.decode("utf-8")) self.assertEqual(data["count"], 0) def test_chart_data(self): """ - Query API: Test chart data query + Query API: Test chart data query """ self.login(username="admin") query_context = self._get_query_context() @@ -661,7 +661,7 @@ def test_chart_data(self): def test_query_exec_not_allowed(self): """ - Query API: Test chart data query not allowed + Query API: Test chart data query not allowed """ self.login(username="gamma") query_context = self._get_query_context() From c32f8be2af6b5065552b3990895c88934a119360 Mon Sep 17 00:00:00 2001 From: Lily Kuang Date: Mon, 20 Apr 2020 09:36:12 -0700 Subject: [PATCH 3/5] [charts] add statsd asserts wrapper --- tests/charts/api_tests.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/charts/api_tests.py b/tests/charts/api_tests.py index a3a5c8920373f..8e59cd9aaf38a 100644 --- a/tests/charts/api_tests.py +++ b/tests/charts/api_tests.py @@ -654,14 +654,14 @@ def test_chart_data(self): self.login(username="admin") query_context = self._get_query_context() uri = "api/v1/chart/data" - rv = self.client.post(uri, json=query_context) + rv = self.post_assert_metric(uri, query_context, "post") self.assertEqual(rv.status_code, 200) data = json.loads(rv.data.decode("utf-8")) self.assertEqual(data["result"][0]["rowcount"], 100) def test_invalid_chart_data(self): """ - Query API: Test chart data query + Query API: Test chart data query """ self.login(username="admin") query_context = self._get_query_context() @@ -677,5 +677,5 @@ def test_query_exec_not_allowed(self): self.login(username="gamma") query_context = self._get_query_context() uri = "api/v1/chart/data" - rv = self.client.post(uri, json=query_context) + rv = self.post_assert_metric(uri, query_context, "post") self.assertEqual(rv.status_code, 401) From 055337cdfc49cccf73af86c87daff941e7644825 Mon Sep 17 00:00:00 2001 From: Lily Kuang Date: Mon, 20 Apr 2020 09:55:55 -0700 Subject: [PATCH 4/5] [charts] update api test --- tests/charts/api_tests.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/charts/api_tests.py b/tests/charts/api_tests.py index 2391ee656917c..d9088efb98ab3 100644 --- a/tests/charts/api_tests.py +++ b/tests/charts/api_tests.py @@ -664,7 +664,7 @@ def test_chart_data(self): self.login(username="admin") query_context = self._get_query_context() uri = "api/v1/chart/data" - rv = self.post_assert_metric(uri, query_context, "post") + rv = self.post_assert_metric(uri, query_context, "data") self.assertEqual(rv.status_code, 200) data = json.loads(rv.data.decode("utf-8")) self.assertEqual(data["result"][0]["rowcount"], 100) @@ -687,5 +687,5 @@ def test_query_exec_not_allowed(self): self.login(username="gamma") query_context = self._get_query_context() uri = "api/v1/chart/data" - rv = self.post_assert_metric(uri, query_context, "post") + rv = self.post_assert_metric(uri, query_context, "data") self.assertEqual(rv.status_code, 401) From 18c5cc23f78c54c7fa7c0200ca018f41c6152fcb Mon Sep 17 00:00:00 2001 From: Lily Kuang Date: Tue, 21 Apr 2020 10:10:44 -0700 Subject: [PATCH 5/5] removed white space --- tests/charts/api_tests.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/charts/api_tests.py b/tests/charts/api_tests.py index d9088efb98ab3..0f08f4a654a02 100644 --- a/tests/charts/api_tests.py +++ b/tests/charts/api_tests.py @@ -566,7 +566,7 @@ def test_get_charts(self): def test_get_charts_filter(self): """ - Chart API: Test get charts filter + Chart API: Test get charts filter """ self.login(username="admin") arguments = {"filters": [{"col": "slice_name", "opr": "sw", "value": "G"}]} @@ -578,7 +578,7 @@ def test_get_charts_filter(self): def test_get_charts_custom_filter(self): """ - Chart API: Test get charts custom filter + Chart API: Test get charts custom filter """ admin = self.get_user("admin") chart1 = self.insert_chart("foo", [admin.id], 1, description="ZY_bar")