def test_tag_keys_dynamic_field_validation_failure(self): """Test that invalid tag keys are not valid fields.""" tag_keys = ["valid_tag"] query_params = {"bad_tag": "value"} serializer = FilterSerializer(data=query_params, tag_keys=tag_keys) with self.assertRaises(serializers.ValidationError): serializer.is_valid(raise_exception=True)
def test_filter_params_invalid_time_scope_monthly(self): """Test parse of filter params for invalid month time_scope_units.""" filter_params = { 'resolution': 'monthly', 'time_scope_value': '-10', 'time_scope_units': 'month' } serializer = FilterSerializer(data=filter_params) with self.assertRaises(serializers.ValidationError): serializer.is_valid(raise_exception=True)
def test_parse_filter_params_success(self): """Test parse of a filter param successfully.""" filter_params = { 'resolution': 'daily', 'time_scope_value': '-10', 'time_scope_units': 'day', 'resource_scope': [] } serializer = FilterSerializer(data=filter_params) self.assertTrue(serializer.is_valid())
def test_parse_filter_params_success(self): """Test parse of a filter param successfully.""" filter_params = { "resolution": "daily", "time_scope_value": "-10", "time_scope_units": "day", "resource_scope": [], } serializer = FilterSerializer(data=filter_params) self.assertTrue(serializer.is_valid())
def test_filter_params_invalid_time_scope_monthly(self): """Test parse of filter params for invalid month time_scope_units.""" filter_params = { "resolution": "monthly", "time_scope_value": "-10", "time_scope_units": "month" } serializer = FilterSerializer(data=filter_params) with self.assertRaises(serializers.ValidationError): serializer.is_valid(raise_exception=True)
def test_filter_params_with_and_string_success(self): """Test that the and: prefix is allowed with a string of items.""" filter_params = { "resolution": "daily", "time_scope_value": "-10", "time_scope_units": "day", "and:product_family": "fam1,fam2", "resource_scope": [], } serializer = FilterSerializer(data=filter_params) self.assertTrue(serializer.is_valid())
def test_filter_params_with_or_list_success_multi_item(self): """Test that the or: prefix is allowed with a list.""" filter_params = { 'resolution': 'daily', 'time_scope_value': '-10', 'time_scope_units': 'day', 'or:region': ['region1', 'region2'], 'resource_scope': [] } serializer = FilterSerializer(data=filter_params) self.assertTrue(serializer.is_valid())
def test_filter_params_with_or_string_success_multi_item(self): """Test that the or: prefix is allowed with a string of items.""" filter_params = { "resolution": "daily", "time_scope_value": "-10", "time_scope_units": "day", "or:az": "az1,az2", "resource_scope": [], } serializer = FilterSerializer(data=filter_params) self.assertTrue(serializer.is_valid())
def test_filter_params_with_and_list_success_single_item(self): """Test that the and: prefix succeeds with one item.""" filter_params = { 'resolution': 'daily', 'time_scope_value': '-10', 'time_scope_units': 'day', 'and:account': ['account1'], 'resource_scope': [] } serializer = FilterSerializer(data=filter_params) self.assertTrue(serializer.is_valid())
def test_filter_params_with_and_string_success(self): """Test that the and: prefix is allowed with a string of items.""" filter_params = { 'resolution': 'daily', 'time_scope_value': '-10', 'time_scope_units': 'day', 'and:product_family': 'fam1,fam2', 'resource_scope': [] } serializer = FilterSerializer(data=filter_params) self.assertTrue(serializer.is_valid())
def test_filter_params_with_and_list_success_single_item(self): """Test that the and: prefix succeeds with one item.""" filter_params = { "resolution": "daily", "time_scope_value": "-10", "time_scope_units": "day", "and:account": ["account1"], "resource_scope": [], } serializer = FilterSerializer(data=filter_params) self.assertTrue(serializer.is_valid())
def test_filter_params_with_or_list_success_multi_item(self): """Test that the or: prefix is allowed with a list.""" filter_params = { "resolution": "daily", "time_scope_value": "-10", "time_scope_units": "day", "or:region": ["region1", "region2"], "resource_scope": [], } serializer = FilterSerializer(data=filter_params) self.assertTrue(serializer.is_valid())
def test_filter_params_with_or_string_success_multi_item(self): """Test that the or: prefix is allowed with a string of items.""" filter_params = { 'resolution': 'daily', 'time_scope_value': '-10', 'time_scope_units': 'day', 'or:az': 'az1,az2', 'resource_scope': [] } serializer = FilterSerializer(data=filter_params) self.assertTrue(serializer.is_valid())
def test_filter_params_with_and_failure_bad_param(self): """Test that and/or does not work on a field it is not allowed on.""" filter_params = { 'resolution': 'daily', 'time_scope_value': '-10', 'time_scope_units': 'day', 'and:resolution': 'daily', 'resource_scope': [] } serializer = FilterSerializer(data=filter_params) with self.assertRaises(serializers.ValidationError): serializer.is_valid(raise_exception=True)
def test_filter_params_invalid_fields(self): """Test parse of filter params for invalid fields.""" filter_params = { "resolution": "daily", "time_scope_value": "-10", "time_scope_units": "day", "resource_scope": [], "invalid": "param", } serializer = FilterSerializer(data=filter_params) with self.assertRaises(serializers.ValidationError): serializer.is_valid(raise_exception=True)
def test_filter_params_invalid_fields(self): """Test parse of filter params for invalid fields.""" filter_params = { 'resolution': 'daily', 'time_scope_value': '-10', 'time_scope_units': 'day', 'resource_scope': [], 'invalid': 'param' } serializer = FilterSerializer(data=filter_params) with self.assertRaises(serializers.ValidationError): serializer.is_valid(raise_exception=True)
def test_filter_params_with_and_failure_bad_param(self): """Test that and/or does not work on a field it is not allowed on.""" filter_params = { "resolution": "daily", "time_scope_value": "-10", "time_scope_units": "day", "and:resolution": "daily", "resource_scope": [], } serializer = FilterSerializer(data=filter_params) with self.assertRaises(serializers.ValidationError): serializer.is_valid(raise_exception=True)
def test_all_filter_op_fields(self): """Test that the allowed fields pass.""" for field in FilterSerializer._opfields: field = "and:" + field filter_param = {field: ["1", "2"]} serializer = FilterSerializer(data=filter_param) self.assertTrue(serializer.is_valid()) for field in FilterSerializer._opfields: field = "or:" + field filter_param = {field: ["1", "2"]} serializer = FilterSerializer(data=filter_param) self.assertTrue(serializer.is_valid())
def test_tag_keys_dynamic_field_validation_success(self): """Test that tag keys are validated as fields.""" tag_keys = ["valid_tag"] query_params = {"valid_tag": "value"} serializer = FilterSerializer(data=query_params, tag_keys=tag_keys) self.assertTrue(serializer.is_valid())
def test_parse_filter_params_no_time(self): """Test parse of a filter param no time filter.""" filter_params = {"resource_scope": ["S3"]} serializer = FilterSerializer(data=filter_params) self.assertTrue(serializer.is_valid())