示例#1
0
    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"])
示例#2
0
    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'])
示例#3
0
    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))
示例#5
0
 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)
示例#6
0
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))
示例#7
0
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}"
示例#8
0
 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)
示例#9
0
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)}"
示例#10
0
    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)
示例#11
0
 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"
         )
示例#12
0
 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")
示例#13
0
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))
示例#14
0
 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)
示例#15
0
文件: cache.py 项目: tan31989/caravel
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),
        )
示例#16
0
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"
示例#17
0
 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"])
示例#18
0
 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")
示例#19
0
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"
示例#20
0
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"
示例#21
0
    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)
示例#22
0
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"]
示例#23
0
    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)
示例#24
0
    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)
示例#25
0
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
示例#26
0
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
示例#27
0
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"
示例#28
0
def _get_url_path(view, **kwargs):
    with app.test_request_context():
        return urllib.parse.urljoin(
            str(config.get('WEBDRIVER_BASEURL')),
            url_for(view, **kwargs),
        )
示例#29
0
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"
示例#30
0
 def test_get_form_data_default(self) -> None:
     with app.test_request_context():
         form_data, slc = get_form_data()
         self.assertEqual(slc, None)
示例#31
0
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"]
示例#32
0
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))
示例#34
0
 def clean_created_objects(self):
     with app.test_request_context():
         self.logout()
         self.login("admin")
         delete_all_inserted_objects()
         self.logout()