def test_filter_values_adhoc_filters(self) -> None: with app.test_request_context( data={ "form_data": json.dumps({ "adhoc_filters": [{ "clause": "WHERE", "comparator": "foo", "expressionType": "SIMPLE", "operator": "in", "subject": "name", }], }) }): cache = ExtraCache() self.assertEqual(cache.filter_values("name"), ["foo"]) self.assertEqual(cache.applied_filters, ["name"]) with app.test_request_context( data={ "form_data": json.dumps({ "adhoc_filters": [{ "clause": "WHERE", "comparator": ["foo", "bar"], "expressionType": "SIMPLE", "operator": "in", "subject": "name", }], }) }): cache = ExtraCache() self.assertEqual(cache.filter_values("name"), ["foo", "bar"]) self.assertEqual(cache.applied_filters, ["name"])
def test_filter_values_macro(self): form_data1 = { 'extra_filters': [ {'col': 'my_special_filter', 'op': 'in', 'val': ['foo']}, ], 'filters': [ {'col': 'my_special_filter2', 'op': 'in', 'val': ['bar']}, ], } form_data2 = { 'extra_filters': [ {'col': 'my_special_filter', 'op': 'in', 'val': ['foo', 'bar']}, ], } form_data3 = { 'extra_filters': [ {'col': 'my_special_filter', 'op': 'in', 'val': ['foo', 'bar']}, ], 'filters': [ {'col': 'my_special_filter', 'op': 'in', 'val': ['savage']}, ], } data1 = {'form_data': json.dumps(form_data1)} data2 = {'form_data': json.dumps(form_data2)} data3 = {'form_data': json.dumps(form_data3)} with app.test_request_context(data=data1): filter_values = jinja_context.filter_values('my_special_filter') self.assertEqual(filter_values, ['foo']) filter_values = jinja_context.filter_values('my_special_filter2') self.assertEqual(filter_values, ['bar']) filter_values = jinja_context.filter_values('') self.assertEqual(filter_values, []) with app.test_request_context(data=data2): filter_values = jinja_context.filter_values('my_special_filter') self.assertEqual(filter_values, ['foo', 'bar']) with app.test_request_context(data=data3): filter_values = jinja_context.filter_values('my_special_filter') self.assertEqual(filter_values, ['savage', 'foo', 'bar']) with app.test_request_context(): filter_values = jinja_context.filter_values('nonexistent_filter', 'foo') self.assertEqual(filter_values, ['foo'])
def test_filter_values_macro(self): form_data1 = { 'extra_filters': [ {'col': 'my_special_filter', 'op': 'in', 'val': ['foo']}, ], 'filters': [ {'col': 'my_special_filter2', 'op': 'in', 'val': ['bar']}, ], } form_data2 = { 'extra_filters': [ {'col': 'my_special_filter', 'op': 'in', 'val': ['foo', 'bar']}, ], } form_data3 = { 'extra_filters': [ {'col': 'my_special_filter', 'op': 'in', 'val': ['foo', 'bar']}, ], 'filters': [ {'col': 'my_special_filter', 'op': 'in', 'val': ['savage']}, ], } data1 = {'form_data': json.dumps(form_data1)} data2 = {'form_data': json.dumps(form_data2)} data3 = {'form_data': json.dumps(form_data3)} with app.test_request_context(data=data1): filter_values = jinja_context.filter_values('my_special_filter') self.assertEqual(filter_values, ['foo']) filter_values = jinja_context.filter_values('my_special_filter2') self.assertEqual(filter_values, ['bar']) filter_values = jinja_context.filter_values('') self.assertEqual(filter_values, []) with app.test_request_context(data=data2): filter_values = jinja_context.filter_values('my_special_filter') self.assertEqual(filter_values, ['foo', 'bar']) with app.test_request_context(data=data3): filter_values = jinja_context.filter_values('my_special_filter') self.assertEqual(filter_values, ['savage', 'foo', 'bar']) with app.test_request_context(): filter_values = jinja_context.filter_values('nonexistent_filter', 'foo') self.assertEqual(filter_values, ['foo'])
def _get_url_path(view: str, user_friendly: bool = False, **kwargs: Any) -> str: with app.test_request_context(): base_url = (WEBDRIVER_BASEURL_USER_FRIENDLY if user_friendly else WEBDRIVER_BASEURL) return urllib.parse.urljoin(str(base_url), url_for(view, **kwargs))
def test_get_form_data_request_args(self) -> None: with app.test_request_context( query_string={"form_data": json.dumps({"foo": "bar"})} ): form_data, slc = get_form_data() self.assertEqual(form_data, {"foo": "bar"}) self.assertEqual(slc, None)
def get_url(params): """Return external URL for warming up a given chart/table cache.""" baseurl = "http://{SUPERSET_WEBSERVER_ADDRESS}:{SUPERSET_WEBSERVER_PORT}/".format( **app.config) with app.test_request_context(): return urllib.parse.urljoin(baseurl, url_for("Superset.explore_json", **params))
def get_url(chart): """Return external URL for warming up a given chart/table cache.""" with app.test_request_context(): baseurl = ("{SUPERSET_WEBSERVER_PROTOCOL}://" "{SUPERSET_WEBSERVER_ADDRESS}:" "{SUPERSET_WEBSERVER_PORT}".format(**app.config)) return f"{baseurl}{chart.url}"
def test_get_form_data_globals(self) -> None: with app.test_request_context(): g.form_data = {"foo": "bar"} form_data, slc = get_form_data() delattr(g, "form_data") self.assertEqual(form_data, {"foo": "bar"}) self.assertEqual(slc, None)
def get_url(chart, extra_filters: Optional[Dict[str, Any]] = None): """Return external URL for warming up a given chart/table cache.""" with app.test_request_context(): baseurl = ("{SUPERSET_WEBSERVER_PROTOCOL}://" "{SUPERSET_WEBSERVER_ADDRESS}:" "{SUPERSET_WEBSERVER_PORT}".format(**app.config)) return f"{baseurl}{chart.get_explore_url(overrides=extra_filters)}"
def test_get_form_data_request_form_with_queries(self) -> None: # the CSV export uses for requests, even when sending requests to # /api/v1/chart/data with app.test_request_context(data={ "form_data": json.dumps({"queries": [{ "url_params": { "foo": "bar" } }]}) }): form_data, slc = get_form_data() self.assertEqual( form_data, { "url_params": { "foo": "bar" }, "time_range_endpoints": get_time_range_endpoints(form_data={}), }, ) self.assertEqual(slc, None)
def test_url_param_unescaped_default_form_data(self) -> None: with app.test_request_context( query_string={"form_data": json.dumps({"url_params": {"foo": "O'Brien"}})} ): cache = ExtraCache(dialect=dialect()) self.assertEqual( cache.url_param("bar", "O'Malley", escape_result=False), "O'Malley" )
def test_url_param_form_data(self) -> None: with app.test_request_context( query_string={ "form_data": json.dumps({"url_params": { "foo": "bar" }}) }): self.assertEquals(ExtraCache().url_param("foo"), "bar")
def _get_url_path(view, user_friendly=False, **kwargs): with app.test_request_context(): base_url = ( GET_WEBDRIVER_BASEURL_USER_FRIENDLY() if user_friendly else GET_WEBDRIVER_BASEURL() ) return urllib.parse.urljoin(str(base_url), url_for(view, **kwargs))
def test_get_form_data_corrupted_json(self) -> None: with app.test_request_context( data={"form_data": "{x: '2324'}"}, query_string={"form_data": '{"baz": "bar"'}, ): form_data, slc = get_form_data() self.assertEqual(form_data, {}) self.assertEqual(slc, None)
def get_url(params): """Return external URL for warming up a given chart/table cache.""" baseurl = 'http://{SUPERSET_WEBSERVER_ADDRESS}:{SUPERSET_WEBSERVER_PORT}/'.format( **app.config) with app.test_request_context(): return urllib.parse.urljoin( baseurl, url_for('Superset.explore_json', **params), )
def test_url_param_form_data() -> None: with app.test_request_context( query_string={ "form_data": json.dumps({"url_params": { "foo": "bar" }}) }): cache = ExtraCache() assert cache.url_param("foo") == "bar"
def test_filter_values_extra_filters(self) -> None: with app.test_request_context( data={ "form_data": json.dumps( {"extra_filters": [{"col": "name", "op": "in", "val": "foo"}]} ) } ): self.assertEqual(filter_values("name"), ["foo"])
def test_url_param_escaped_form_data(self) -> None: with app.test_request_context( query_string={ "form_data": json.dumps({"url_params": { "foo": "O'Brien" }}) }): cache = ExtraCache(dialect=dialect()) self.assertEqual(cache.url_param("foo"), "O''Brien")
def test_url_param_escaped_default_form_data() -> None: with app.test_request_context( query_string={ "form_data": json.dumps({"url_params": { "foo": "O'Brien" }}) }): cache = ExtraCache(dialect=dialect()) assert cache.url_param("bar", "O'Malley") == "O''Malley"
def test_url_param_unescaped_form_data() -> None: with app.test_request_context( query_string={ "form_data": json.dumps({"url_params": { "foo": "O'Brien" }}) }): cache = ExtraCache(dialect=dialect()) assert cache.url_param("foo", escape_result=False) == "O'Brien"
def test_get_form_data_default(self) -> None: with app.test_request_context(): form_data, slc = get_form_data() self.assertEqual( form_data, {"time_range_endpoints": get_time_range_endpoints(form_data={})}, ) self.assertEqual(slc, None)
def test_filter_values_extra_filters(app_context: AppContext) -> None: with app.test_request_context( data={ "form_data": json.dumps( {"extra_filters": [{"col": "name", "op": "in", "val": "foo"}]} ) } ): cache = ExtraCache() assert cache.filter_values("name") == ["foo"] assert cache.applied_filters == ["name"]
def test_get_form_data_request_form(self) -> None: with app.test_request_context(data={"form_data": json.dumps({"foo": "bar"})}): form_data, slc = get_form_data() self.assertEqual( form_data, { "foo": "bar", "time_range_endpoints": get_time_range_endpoints(form_data={}), }, ) self.assertEqual(slc, None)
def test_get_form_data_globals(self) -> None: with app.test_request_context(): g.form_data = {"foo": "bar"} form_data, slc = get_form_data() delattr(g, "form_data") self.assertEqual( form_data, { "foo": "bar", "time_range_endpoints": get_time_range_endpoints(form_data={}), }, ) self.assertEqual(slc, None)
def _get_auth_cookies(): # Login with the user specified to get the reports with app.test_request_context(): user = security_manager.find_user(config.get('EMAIL_REPORTS_USER')) login_user(user) # A mock response object to get the cookie information from response = Response() app.session_interface.save_session(app, session, response) cookies = [] # Set the cookies in the driver for name, value in response.headers: if name.lower() == 'set-cookie': cookie = parse_cookie(value) cookies.append(cookie['session']) return cookies
def _get_auth_cookies() -> List["TypeConversionDict[Any, Any]"]: # Login with the user specified to get the reports with app.test_request_context(): user = security_manager.find_user(config["EMAIL_REPORTS_USER"]) login_user(user) # A mock response object to get the cookie information from response = Response() app.session_interface.save_session(app, session, response) cookies = [] # Set the cookies in the driver for name, value in response.headers: if name.lower() == "set-cookie": cookie = parse_cookie(value) cookies.append(cookie["session"]) return cookies
def test_url_param_escaped_form_data(app_context: AppContext) -> None: with app.test_request_context( query_string={"form_data": json.dumps({"url_params": {"foo": "O'Brien"}})} ): cache = ExtraCache(dialect=dialect()) assert cache.url_param("foo") == "O''Brien"
def _get_url_path(view, **kwargs): with app.test_request_context(): return urllib.parse.urljoin( str(config.get('WEBDRIVER_BASEURL')), url_for(view, **kwargs), )
def test_url_param_query(app_context: AppContext) -> None: with app.test_request_context(query_string={"foo": "bar"}): cache = ExtraCache() assert cache.url_param("foo") == "bar"
def test_get_form_data_default(self) -> None: with app.test_request_context(): form_data, slc = get_form_data() self.assertEqual(slc, None)
def test_get_filters_adhoc_filters(app_context: AppContext) -> None: with app.test_request_context( data={ "form_data": json.dumps( { "adhoc_filters": [ { "clause": "WHERE", "comparator": "foo", "expressionType": "SIMPLE", "operator": "in", "subject": "name", } ], } ) } ): cache = ExtraCache() assert cache.get_filters("name") == [ {"op": "IN", "col": "name", "val": ["foo"]} ] assert cache.removed_filters == [] assert cache.applied_filters == ["name"] with app.test_request_context( data={ "form_data": json.dumps( { "adhoc_filters": [ { "clause": "WHERE", "comparator": ["foo", "bar"], "expressionType": "SIMPLE", "operator": "in", "subject": "name", } ], } ) } ): cache = ExtraCache() assert cache.get_filters("name") == [ {"op": "IN", "col": "name", "val": ["foo", "bar"]} ] assert cache.removed_filters == [] with app.test_request_context( data={ "form_data": json.dumps( { "adhoc_filters": [ { "clause": "WHERE", "comparator": ["foo", "bar"], "expressionType": "SIMPLE", "operator": "in", "subject": "name", } ], } ) } ): cache = ExtraCache() assert cache.get_filters("name", remove_filter=True) == [ {"op": "IN", "col": "name", "val": ["foo", "bar"]} ] assert cache.removed_filters == ["name"] assert cache.applied_filters == ["name"]
def _get_url_path(view, **kwargs): with app.test_request_context(): return urllib.parse.urljoin( str(config.get('WEBDRIVER_BASEURL')), url_for(view, **kwargs), )
def _get_url_path(view: str, **kwargs: Any) -> str: with app.test_request_context(): return urllib.parse.urljoin(str(config["WEBDRIVER_BASEURL"]), url_for(view, **kwargs))
def clean_created_objects(self): with app.test_request_context(): self.logout() self.login("admin") delete_all_inserted_objects() self.logout()