Beispiel #1
0
    def test_invalid_parameter_error(self):
        """
        Tests that an INVALID_PARAMETER error is added to the list of
        errors if the given parameter string is invalid.
        """
        field_parameter = FieldSearchParameter(1, '')

        self.assertEqual(len(field_parameter.combined_errors), 1)
        self.assertEqual(
            field_parameter.combined_errors[0],
            FieldSearchParameter.INVALID_PARAMETER,
        )

        field_parameter = FieldSearchParameter(1, 'test')

        self.assertEqual(len(field_parameter.combined_errors), 1)
        self.assertEqual(
            field_parameter.combined_errors[0],
            FieldSearchParameter.INVALID_PARAMETER,
        )

        field_parameter = FieldSearchParameter(1, '"phrase"')

        self.assertEqual(len(field_parameter.combined_errors), 1)
        self.assertEqual(
            field_parameter.combined_errors[0],
            FieldSearchParameter.INVALID_PARAMETER,
        )
Beispiel #2
0
    def test_is_related_to_distillery(self):
        parameter = FieldSearchParameter(0, 'ip_address=10.2.32.2')
        distilleries = Distillery.objects.filter(
            container__bottle__name='test_doc', )

        self.assertTrue(parameter.is_valid())
        self.assertEqual(distilleries.count(), 1)

        for distillery in distilleries:
            self.assertTrue(parameter.is_related_to_distillery(distillery))
Beispiel #3
0
 def test_valid_parameter(self):
     """
     Tests that .is_valid() returns True for valid parameters.
     """
     self.assertTrue(
         FieldSearchParameter(3, 'ip_address=10.45.32.34').is_valid())
     self.assertTrue(FieldSearchParameter(3, 'likes<10').is_valid())
     self.assertTrue(FieldSearchParameter(3, 'verified=False').is_valid())
     self.assertTrue(
         FieldSearchParameter(4, 'priority="something fancy"').is_valid())
    def test_parameter_errors(self):
        """
        Tests that the parameter errors are passed onto the search
        query object.
        """
        field_parameter_string = 'field_name=blah'
        field_parameter = FieldSearchParameter(0, field_parameter_string)
        query = SearchQuery(field_parameter_string)

        self.assertFalse(query.is_valid())
        self.assertEqual(len(query.invalid_parameters), 1)
        self.assertEqual(
            query.invalid_parameters[0].as_dict(),
            field_parameter.as_dict(),
        )
Beispiel #5
0
    def test_create_fieldset(self):
        """
        Tests that .create_fieldset() returns a QueryFieldset with the
        correct properties.
        """
        fieldset = FieldSearchParameter(3, 'ip_address="4"').create_fieldset()

        self.assertIsInstance(fieldset, QueryFieldset)
        self.assertEqual(fieldset.field_name, 'ip_address')
        self.assertEqual(fieldset.operator, 'regex')
        self.assertEqual(fieldset.field_type, 'GenericIPAddressField')
        self.assertEqual(fieldset.value, '4')

        fieldset = FieldSearchParameter(3, 'likes=4').create_fieldset()

        self.assertIsInstance(fieldset, QueryFieldset)
        self.assertEqual(fieldset.field_name, 'likes')
        self.assertEqual(fieldset.operator, 'eq')
        self.assertEqual(fieldset.field_type, 'IntegerField')
        self.assertEqual(fieldset.value, 4)
Beispiel #6
0
    def test_create_fieldset_raises_error(self):
        """
        Tests that .create_fieldset() returns an AssertionError with
        a CANNOT_CREATE_FIELDSET message if the parameter is not valid.
        """
        with self.assertRaises(ValueError) as error:
            FieldSearchParameter(3, 'ip_address<4').create_fieldset()

        self.assertEqual(
            str(error.exception),
            FieldSearchParameter.CANNOT_CREATE_FIELDSET,
        )
Beispiel #7
0
    def test_get_parameter_info(self):
        """
        Tests that .get_parameter_info() returns the correct dictionary.
        """
        field_parameter = FieldSearchParameter(2, 'meh=true')

        self.assertFalse(field_parameter.is_valid())

        error_dict = field_parameter.as_dict()

        self.assertDictEqual(
            error_dict, {
                'parameter': 'meh=true',
                'index': 2,
                'type': 'field',
                'field_name': 'meh',
                'operator': None,
                'value': None,
                'errors': ['Field `meh` does not exist.'],
            })

        field_parameter = FieldSearchParameter(2, 'ip_address<"30.43.23"')

        self.assertFalse(field_parameter.is_valid())

        error_dict = field_parameter.as_dict()

        self.assertDictEqual(
            error_dict, {
                'parameter':
                'ip_address<"30.43.23"',
                'index':
                2,
                'type':
                'field',
                'field_name':
                'ip_address',
                'operator':
                '<',
                'value':
                '"30.43.23"',
                'errors': [
                    'The operator `<` is not used for fields of type '
                    '`GenericIPAddressField`'
                ],
            })
Beispiel #8
0
    def test_nested_field(self):
        """
        Tests that a nested field returns a data field.
        """
        parameter = FieldSearchParameter(0, 'content.text=test')

        self.assertTrue(parameter.is_valid())
        self.assertEqual(parameter.data_field.field_type, 'TextField')

        parameter = FieldSearchParameter(0, 'not.exist=test')

        self.assertFalse(parameter.is_valid())
        self.assertEqual(
            parameter.errors,
            [FieldSearchParameter.FIELD_DOES_NOT_EXIST.format('not.exist')])

        parameter = FieldSearchParameter(0, 'content.exist=test')

        self.assertFalse(parameter.is_valid())
        self.assertEqual(parameter.errors, [
            FieldSearchParameter.FIELD_DOES_NOT_EXIST.format('content.exist')
        ])
Beispiel #9
0
    def test_ip_address_value(self):
        parameter = FieldSearchParameter(0, 'ip_address=123.123.123.123')

        self.assertTrue(parameter.is_valid())
        self.assertEqual(parameter.data_field.field_type,
                         'GenericIPAddressField')
Beispiel #10
0
 def test_invalid_parameter(self):
     """
     Tests that .is_valid() returns False for invalid parameters.
     """
     self.assertFalse(FieldSearchParameter(3, 'ip_address<4').is_valid())
     self.assertFalse(FieldSearchParameter(3, 'verified=meh').is_valid())