def test_unknown_parameters(self): """ Tests that unknown parameter types are correctly identified. """ unknown_parameter_string_1 = 'fjlk#!!.!@#$' unknown_parameter_string_2 = 'fieoh$%@.!@98' unknown_parameter_1 = UnknownParameter(0, unknown_parameter_string_1) unknown_parameter_2 = UnknownParameter(1, unknown_parameter_string_2) query = SearchQuery( '{} {}'.format( unknown_parameter_string_1, unknown_parameter_string_2, ), self.user, ) self.assertFalse(query.is_valid()) self.assertEqual(len(query.unknown_parameters), 2) self.assertEqual(len(query.invalid_parameters), 2) self.assertEqual( query.invalid_parameters[0].as_dict(), unknown_parameter_1.as_dict(), ) self.assertEqual( query.invalid_parameters[1].as_dict(), unknown_parameter_2.as_dict(), )
def test_empty_search_query_error(self): """ Tests that an empty error is thrown if the query is empty. """ query = SearchQuery('') self.assertFalse(query.is_valid()) self.assertEqual(len(query.errors), 1) self.assertEqual(query.errors[0], SearchQuery.EMPTY_SEARCH_QUERY)
def test_parsing_error(self): """ Tests that a parsing error is thrown if the query cannot be parsed. """ query = SearchQuery(' ') self.assertFalse(query.is_valid()) self.assertEqual(len(query.errors), 1) self.assertEqual(query.errors[0], SearchQuery.PARSING_ERROR.format(' '))
def test_distillery_hyphen(self): """ Tests that a distillery with a hyphen is correctly identified. """ query = SearchQuery('@source="test-logs"', self.user) self.assertFalse(query.is_valid()) self.assertIsNotNone(query.distillery_filter_parameter) self.assertIsInstance(query.distillery_filter_parameter, DistilleryFilterParameter)
def test_distillery_parameter(self): """ Tests that a distillery filter string is correctly identified. """ query = SearchQuery('@source=*.test_logs') self.assertTrue(query.is_valid()) self.assertIsNotNone(query.distillery_filter_parameter) self.assertIsInstance( query.distillery_filter_parameter, DistilleryFilterParameter, )
def test_parameter_index(self): """ Tests that the parameter index is correct for each search parameter. """ query = SearchQuery('ip_address=34.25.12.32 "search phrase"') self.assertTrue(query.is_valid()) self.assertEqual(len(query.keyword_parameters), 1) self.assertEqual(query.keyword_parameters[0].index, 1) self.assertEqual(len(query.field_parameters), 1) self.assertEqual(query.field_parameters[0].index, 0)
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(), )
def test_multiple_distillery_filters_error(self): """ Tests that the query invalidates when multiple distillery filters are used. """ query = SearchQuery('@source=*.test_logs @source=*.test_logs') self.assertFalse(query.is_valid()) self.assertEqual(len(query.errors), 1) self.assertEqual( query.errors[0], SearchQuery.MULTIPLE_DISTILLERY_FILTERS.format( '@source=*.test_logs', 1, ), )