Пример #1
0
    def test_filter_queryset(self):
        """Test search object filtering."""

        view = ElasticListAPIView()
        view.Meta.model = MagicMock()
        view.Meta.model.field_has_raw.return_value = False

        elasticfilter = ElasticFilter()
        request = MagicMock()

        # Set up the query terms for the test.
        request.query_params = QueryDict('', mutable=True)

        request.query_params.update({
            view.pagination_class.page_query_param: 'ignored',
            'name': 'value',
            'name__terms': '["value1","value2"]'
        })

        result = \
            elasticfilter.filter_queryset(request, Search(), view).to_dict()

        EXPECTED = [{
            'terms': {
                u'name': ['value1', 'value2']
            }
        }, {
            'match': {
                u'name': 'value'
            }
        }]

        for item in EXPECTED:
            self.assertTrue(item in result['query']['bool']['must'])
Пример #2
0
    def test_filter_terms_regexp(self):
        """Test search object filtering using terms and regexp.

        Because their values are dicts, these take a different code path than
        "standard" match queries.

        """

        view = ElasticListAPIView()
        view.Meta.model = MagicMock()
        view.Meta.model.field_has_raw.return_value = False

        EXPECTED = [
            {"regexp": {"this.is.a.nested.field": ".+12345666666666"}},
            {"terms": {"_type": ["audit.http.request", "audit.http.response", "identity.*"]}},
        ]

        elasticfilter = ElasticFilter()
        request = MagicMock()

        # Set up the query terms for the test.
        request.query_params = QueryDict("", mutable=True)
        request.query_params.update(
            {
                view.pagination_class.page_query_param: "ignored",
                "terms": {"_type": ["audit.http.request", "audit.http.response", "identity.*"]},
                "regexp": {"this.is.a.nested.field": ".+12345666666666"},
            }
        )

        result = elasticfilter.filter_queryset(request, Search(), view).to_dict()

        for item in EXPECTED:
            self.assertTrue(item in result["query"]["bool"]["must"])
Пример #3
0
    def test_filter_queryset(self):
        """Test search object filtering."""

        view = ElasticListAPIView()
        view.Meta.model = MagicMock()
        view.Meta.model.field_has_raw.return_value = False

        elasticfilter = ElasticFilter()
        request = MagicMock()

        # Set up the query terms for the test.
        request.query_params = QueryDict('', mutable=True)

        request.query_params.update(
            {view.pagination_class.page_query_param: 'ignored',
             'name': 'value',
             'name__terms': '["value1","value2"]'}
        )

        result = \
            elasticfilter.filter_queryset(request, Search(), view).to_dict()

        EXPECTED = [{'terms': {u'name': ['value1', 'value2']}},
                    {'match': {u'name': 'value'}}]

        for item in EXPECTED:
            self.assertTrue(item in result['query']['bool']['must'])
Пример #4
0
    def test__coerce_value_exception(self):
        """Test coercion failure that returns the original string."""

        expectation = "2015-03-12T00:12:55.500814+00:00"
        elasticfilter = ElasticFilter()

        # pylint: disable=W0212
        result = elasticfilter._coerce_value(expectation)
        self.assertEqual(result, expectation)
Пример #5
0
    def test__coerce_value_exception(self):
        """Test coercion failure that returns the original string."""

        expectation = '2015-03-12T00:12:55.500814+00:00'
        elasticfilter = ElasticFilter()

        # pylint: disable=W0212
        result = elasticfilter._coerce_value(expectation)
        self.assertEqual(result, expectation)
Пример #6
0
    def test__coerce_value_list(self):
        """Test that we properly coerce values to native python types."""

        expectation = [1426206062000, 1426206062000]
        quoted_value = "[1426206062000, 1426206062000]"
        elasticfilter = ElasticFilter()

        # pylint: disable=W0212
        result = elasticfilter._coerce_value(quoted_value)
        self.assertEqual(result, expectation)
Пример #7
0
    def test__coerce_value_list(self):
        """Test that we properly coerce values to native python types."""

        expectation = [1426206062000, 1426206062000]
        quoted_value = '[1426206062000, 1426206062000]'
        elasticfilter = ElasticFilter()

        # pylint: disable=W0212
        result = elasticfilter._coerce_value(quoted_value)
        self.assertEqual(result, expectation)
Пример #8
0
    def test__add_query_no_raw(self):
        """Test proper handling of mapping without raw field."""

        view = ElasticListAPIView()
        view.Meta.model = MagicMock()
        view.Meta.model.field_has_raw.return_value = False

        expectation = {"query": {"match": {"param1": "value1"}}}
        elasticfilter = ElasticFilter()
        queryset = Search()

        # pylint: disable=W0212
        result = elasticfilter._add_query("param1", "value1", view, queryset)
        self.assertTrue(view.Meta.model.field_has_raw.called)
        self.assertEqual(result.to_dict(), expectation)
Пример #9
0
    def test__add_query_with_raw(self):
        """Test proper handling of mapping with raw field."""

        view = ElasticListAPIView()
        view.Meta.model = MagicMock()
        view.Meta.model.field_has_raw.return_value = True

        expectation = {'query': {'match': {'param1.raw': 'value1'}}}
        elasticfilter = ElasticFilter()
        queryset = Search()

        # pylint: disable=W0212
        result = elasticfilter._add_query('param1', 'value1', view, queryset)
        self.assertTrue(view.Meta.model.field_has_raw.called)
        self.assertEqual(result.to_dict(), expectation)
Пример #10
0
    def test__add_query_no_raw(self):
        """Test proper handling of mapping without raw field."""

        view = ElasticListAPIView()
        view.Meta.model = MagicMock()
        view.Meta.model.field_has_raw.return_value = False

        expectation = {'query': {'match': {'param1': 'value1'}}}
        elasticfilter = ElasticFilter()
        queryset = Search()

        # pylint: disable=W0212
        result = elasticfilter._add_query('param1', 'value1', view, queryset)
        self.assertTrue(view.Meta.model.field_has_raw.called)
        self.assertEqual(result.to_dict(), expectation)
Пример #11
0
    def test_filter_terms_regexp(self):
        """Test search object filtering using terms and regexp.

        Because their values are dicts, these take a different code path than
        "standard" match queries.

        """

        view = ElasticListAPIView()
        view.Meta.model = MagicMock()
        view.Meta.model.field_has_raw.return_value = False

        EXPECTED = [{
            'regexp': {
                'this.is.a.nested.field': '.+12345666666666'
            }
        }, {
            'terms': {
                '_type':
                ["audit.http.request", "audit.http.response", "identity.*"]
            }
        }]

        elasticfilter = ElasticFilter()
        request = MagicMock()

        # Set up the query terms for the test.
        request.query_params = QueryDict('', mutable=True)
        request.query_params.update(
            {
                view.pagination_class.page_query_param: 'ignored',
                'terms': {
                    "_type": [
                        "audit.http.request", "audit.http.response",
                        "identity.*"
                    ],
                },
                'regexp': {
                    "this.is.a.nested.field": ".+12345666666666"
                },
            }, )

        result = \
            elasticfilter.filter_queryset(request, Search(), view).to_dict()

        for item in EXPECTED:
            self.assertTrue(item in result['query']['bool']['must'])
Пример #12
0
    def test_filter_queryset(self):
        """Test search object filtering."""

        view = ElasticListAPIView()
        view.Meta.model = MagicMock()
        view.Meta.model.field_has_raw.return_value = False

        elasticfilter = ElasticFilter()
        request = MagicMock()

        # Set up the query terms for the test.
        request.query_params = QueryDict("", mutable=True)

        request.query_params.update(
            {view.pagination_class.page_query_param: "ignored", "name": "value", "name__terms": '["value1","value2"]'}
        )

        result = elasticfilter.filter_queryset(request, Search(), view).to_dict()

        EXPECTED = [{"terms": {u"name": ["value1", "value2"]}}, {"match": {u"name": "value"}}]

        for item in EXPECTED:
            self.assertTrue(item in result["query"]["bool"]["must"])