def test_urifilter_inactive_when_no_uri_param(): """ When there's no `uri` parameter, return None. """ urifilter = query.UriFilter() assert urifilter({"foo": "bar"}) is None
def test_urifilter_expands_and_normalizes_into_terms_filter(storage, uri): """ 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. """ storage.expand_uri.side_effect = lambda x: [ "http://giraffes.com/", "https://elephants.com/", ] uri.normalize.side_effect = lambda x: x[:-1] # Strip the trailing slash urifilter = query.UriFilter() result = urifilter({"uri": "http://example.com/"}) storage.expand_uri.assert_called_with("http://example.com/") assert result == { "terms": { "target.scope": ["http://giraffes.com", "https://elephants.com"] } }
def make_builder(): builder = query.Builder() builder.append_filter(query.AuthFilter(request, private=private)) builder.append_filter(query.UriFilter()) builder.append_filter( lambda _: nipsa.nipsa_filter(request.authenticated_userid)) builder.append_filter(query.GroupFilter()) builder.append_matcher(query.AnyMatcher()) builder.append_matcher(query.TagsMatcher()) return builder
def default_querybuilder(request, private=True): builder = query.Builder() builder.append_filter(query.AuthFilter(request, private=private)) builder.append_filter(query.UriFilter(request)) builder.append_filter(query.GroupFilter()) builder.append_matcher(query.AnyMatcher()) builder.append_matcher(query.TagsMatcher()) for factory in request.registry.get(FILTERS_KEY, []): builder.append_filter(factory(request)) for factory in request.registry.get(MATCHERS_KEY, []): builder.append_matcher(factory(request)) return builder