示例#1
0
    def test_queries_multiple_uris(self, storage):
        """
        Uses a `terms` filter against target.scope to filter for URI.

        When multiple "uri" fields are supplied, the normalized URIs of all of
        them should be collected into a set and sent in the query.
        """
        request = mock.Mock()
        params = multidict.MultiDict()
        params.add("uri", "http://example.com")
        params.add("uri", "http://example.net")
        storage.expand_uri.side_effect = [
            ["http://giraffes.com/", "https://elephants.com/"],
            ["http://tigers.com/", "https://elephants.com/"],
        ]

        urifilter = query.UriFilter(request)

        result = urifilter(params)
        query_uris = result["terms"]["target.scope"]

        storage.expand_uri.assert_any_call(request.db, "http://example.com")
        storage.expand_uri.assert_any_call(request.db, "http://example.net")
        assert sorted(query_uris) == sorted([
            "httpx://giraffes.com", "httpx://elephants.com",
            "httpx://tigers.com"
        ])
示例#2
0
    def test_expands_and_normalizes_into_terms_filter(self, storage):
        """
        Uses a `terms` filter against target.scope to filter for URI.

        UriFilter should use a `terms` filter against the normalized version of the
        target source field, which we store in `target.scope`.

        It should expand the input URI before searching, and normalize the results
        of the expansion.
        """
        request = mock.Mock()
        storage.expand_uri.side_effect = lambda _, x: [
            "http://giraffes.com/",
            "https://elephants.com/",
        ]

        urifilter = query.UriFilter(request)

        result = urifilter({"uri": "http://example.com/"})
        query_uris = result["terms"]["target.scope"]

        storage.expand_uri.assert_called_with(request.db,
                                              "http://example.com/")
        assert sorted(query_uris) == sorted(
            ["httpx://giraffes.com", "httpx://elephants.com"])
示例#3
0
    def test_inactive_when_no_uri_param(self):
        """
        When there's no `uri` parameter, return None.
        """
        request = mock.Mock()
        urifilter = query.UriFilter(request)

        assert urifilter({"foo": "bar"}) is None
示例#4
0
文件: core.py 项目: afrilya53/h
 def _default_querybuilder(request, es):
     builder = query.Builder(es_version=es.version)
     builder.append_filter(query.DeletedFilter())
     builder.append_filter(query.AuthFilter(request))
     builder.append_filter(query.UriFilter(request))
     builder.append_filter(query.GroupFilter())
     builder.append_filter(query.GroupAuthFilter(request))
     builder.append_filter(query.UserFilter())
     builder.append_filter(query.NipsaFilter(request))
     builder.append_matcher(query.AnyMatcher())
     builder.append_matcher(query.TagsMatcher())
     return builder
示例#5
0
def default_querybuilder(request):
    builder = query.Builder()
    builder.append_filter(query.DeletedFilter())
    builder.append_filter(query.AuthFilter(request))
    builder.append_filter(query.UriFilter(request))
    builder.append_filter(query.GroupFilter())
    builder.append_filter(query.UserFilter())
    builder.append_matcher(query.AnyMatcher())
    builder.append_matcher(query.TagsMatcher())
    for factory in request.registry.get(FILTERS_KEY, []):
        builder.append_filter(factory(request))
    return builder
示例#6
0
    def test_accepts_url_aliases(self, storage):
        request = mock.Mock()
        params = multidict.MultiDict()
        params.add("uri", "http://example.com")
        params.add("url", "http://example.net")
        storage.expand_uri.side_effect = [
            ["http://giraffes.com/", "https://elephants.com/"],
            ["http://tigers.com/", "https://elephants.com/"],
        ]

        urifilter = query.UriFilter(request)

        result = urifilter(params)
        query_uris = result["terms"]["target.scope"]

        storage.expand_uri.assert_any_call(request.db, "http://example.com")
        storage.expand_uri.assert_any_call(request.db, "http://example.net")
        assert sorted(query_uris) == sorted(["httpx://giraffes.com",
                                             "httpx://elephants.com",
                                             "httpx://tigers.com"])
示例#7
0
 def search(self, search, pyramid_request):
     search.append_filter(query.UriFilter(pyramid_request))
     return search