Beispiel #1
0
class TestValidateFloat(unittest.TestCase):

    def setUp(self):
        self.model = Model({
            'shapes': {
                'TestShape': {
                    'type': 'float',
                    'min': 0,
                    'max': 1,
                }
            }
        })

    def test_validate_integer_0(self):
        report = validate_shape(self.model.get_shape('TestShape'), 0)
        self.assertEqual(len(report), 0)

    def test_validate_integer_1(self):
        report = validate_shape(self.model.get_shape('TestShape'), 1)
        self.assertEqual(len(report), 0)

    def test_validate_integer_min(self):
        report = validate_shape(self.model.get_shape('TestShape'), -1)
        self.assertEqual(len(report), 1)
        self.assertEqual(report[0].code, "invalid_range")

    def test_validate_integer_max(self):
        report = validate_shape(self.model.get_shape('TestShape'), -1)
        self.assertEqual(len(report), 1)
        self.assertEqual(report[0].code, "invalid_range")

    def test_validate_integer_type_check(self):
        report = validate_shape(self.model.get_shape('TestShape'), "55")
        self.assertEqual(len(report), 1)
        self.assertEqual(report[0].code, "invalid_type")
Beispiel #2
0
class TestValidateList(unittest.TestCase):

    def setUp(self):
        self.model = Model({
            'shapes': {
                'String': {
                    'type': 'string',
                },
                'TestStructure': {
                    'type': 'structure',
                    'members': [{
                        'name': 'foo',
                        'shape': 'String',
                    }]
                },
                'TestShape': {
                    'type': 'list',
                    'of': 'TestStructure',
                    'min': 1,
                    'max': 1,
                }
            }
        })

    def test_validate_list_type_check(self):
        report = validate_shape(self.model.get_shape('TestShape'), 55)
        self.assertEqual(len(report), 1)
        self.assertEqual(report[0].code, "invalid_type")

    def test_validate_list_min(self):
        report = validate_shape(self.model.get_shape('TestShape'), [])
        self.assertEqual(len(report), 1)
        self.assertEqual(report[0].code, "invalid_range")

    def test_validate_list_max(self):
        report = validate_shape(self.model.get_shape('TestShape'), [
            {"foo": ""},
            {"foo": ""},
        ])
        self.assertEqual(len(report), 1)
        self.assertEqual(report[0].code, "invalid_range")

    def test_validate_child_type_check(self):
        report = validate_shape(self.model.get_shape('TestShape'), [1])
        self.assertEqual(len(report), 1)
        self.assertEqual(report[0].code, "invalid_type")
        self.assertEqual(report[0].field, "[0]")

    def test_validate_child_child_type_check(self):
        report = validate_shape(
            self.model.get_shape('TestShape'),
            [{"foo": 1}]
        )
        self.assertEqual(len(report), 1)
        self.assertEqual(report[0].code, "invalid_type")
        self.assertEqual(report[0].field, "[0].foo")
Beispiel #3
0
 def test_validate_string_no(self):
     model = Model({
         'shapes': {
             'TestShape': {
                 'type': 'string',
             }
         }
     })
     report = validate_shape(model.get_shape('TestShape'), "test")
     self.assertEqual(len(report), 0)
Beispiel #4
0
 def test_validate_string_type_check(self):
     model = Model({
         'shapes': {
             'TestShape': {
                 'type': 'string',
             }
         }
     })
     report = validate_shape(model.get_shape('TestShape'), 55)
     self.assertEqual(len(report), 1)
     self.assertEqual(report[0].code, "invalid_type")
Beispiel #5
0
 def test_validate_string_max_fail(self):
     model = Model({
         'shapes': {
             'TestShape': {
                 'type': 'string',
                 'max': 1,
             }
         }
     })
     report = validate_shape(model.get_shape('TestShape'), "test")
     self.assertEqual(len(report), 1)
     self.assertEqual(report[0].code, "invalid_range")
Beispiel #6
0
 def test_validate_string_regex_check(self):
     model = Model({
         'shapes': {
             'TestShape': {
                 'type': 'string',
                 'regex': '^$',
             }
         }
     })
     report = validate_shape(model.get_shape('TestShape'), "foo")
     self.assertEqual(len(report), 1)
     self.assertEqual(report[0].code, "value_fails_regex")
Beispiel #7
0
class TestLayer(unittest.TestCase):

    def setUp(self):
        self.model = Model({
            'operations': {
                'test_call': {
                    'input': {'shape': 'TestShape'}
                }
            },
            'shapes': {
                'String': {
                    'type': 'string',
                },
                'TestShape': {
                    'type': 'structure',
                    'members': [{
                        'name': 'foo',
                        'shape': 'String',
                        'required': True,
                    }]
                }
            }
        })

    def test_validate_before_call(self):
        v = Validation()
        self.assertRaises(
            ParameterError,
            v.before_call,
            None,
            self.model.get_operation("test_call"),
            foo=55,
        )
Beispiel #8
0
 def setUp(self):
     self.model = Model({
         'shapes': {
             'TestShape': {
                 'type': 'boolean',
             }
         }
     })
Beispiel #9
0
class TestValidateStructure(unittest.TestCase):

    def setUp(self):
        self.model = Model({
            'shapes': {
                'String': {
                    'type': 'string',
                },
                'TestShape': {
                    'type': 'structure',
                    'members': [{
                        'name': 'foo',
                        'shape': 'String',
                        'required': True,
                    }]
                }
            }
        })

    def test_validate_structure_type_check(self):
        report = validate_shape(self.model.get_shape('TestShape'), 55)
        self.assertEqual(len(report), 1)
        self.assertEqual(report[0].code, "invalid_type")

    def test_validate_structure_unknown_param(self):
        report = validate_shape(
            self.model.get_shape('TestShape'),
            {"foo": "a", "bar": "a"}
        )
        self.assertEqual(len(report), 1)
        self.assertEqual(report[0].code, "unexpected_field")
        self.assertEqual(report[0].field, "bar")

    def test_validate_structure_child_type_check(self):
        report = validate_shape(self.model.get_shape('TestShape'), {"foo": 1})
        self.assertEqual(len(report), 1)
        self.assertEqual(report[0].code, "invalid_type")
        self.assertEqual(report[0].field, "foo")

    def test_validate_structure_missing_required(self):
        report = validate_shape(self.model.get_shape('TestShape'), {})
        self.assertEqual(len(report), 1)
        self.assertEqual(report[0].code, "required_field_missing")
        self.assertEqual(report[0].field, "foo")
Beispiel #10
0
 def setUp(self):
     self.model = Model({
         'shapes': {
             'TestShape': {
                 'type': 'float',
                 'min': 0,
                 'max': 1,
             }
         }
     })
Beispiel #11
0
class TestValidateBool(unittest.TestCase):

    def setUp(self):
        self.model = Model({
            'shapes': {
                'TestShape': {
                    'type': 'boolean',
                }
            }
        })

    def test_validate_bool_true(self):
        report = validate_shape(self.model.get_shape('TestShape'), True)
        self.assertEqual(len(report), 0)

    def test_validate_bool_false(self):
        report = validate_shape(self.model.get_shape('TestShape'), False)
        self.assertEqual(len(report), 0)

    def test_validate_bool_type_check(self):
        report = validate_shape(self.model.get_shape('TestShape'), 55)
        self.assertEqual(len(report), 1)
        self.assertEqual(report[0].code, "invalid_type")
Beispiel #12
0
 def setUp(self):
     self.model = Model({
         'shapes': {
             'String': {
                 'type': 'string',
             },
             'TestShape': {
                 'type': 'map',
                 'key': 'String',
                 'value': 'String',
                 'min': 1,
                 'max': 1,
             }
         }
     })
Beispiel #13
0
 def setUp(self):
     self.model = Model({
         'shapes': {
             'String': {
                 'type': 'string',
             },
             'TestShape': {
                 'type': 'structure',
                 'members': [{
                     'name': 'foo',
                     'shape': 'String',
                     'required': True,
                 }]
             }
         }
     })
Beispiel #14
0
 def setUp(self):
     self.model = Model({
         'metadata': {},
         'shapes': {},
         'operations': {
             'dummy_operation': {
                 'http': {
                     'method': 'post',
                     'uri': '/foo',
                 },
                 'input': {'shape': 'dummy_operation_request'},
                 'output': {'shape': 'dummy_operation_response'},
                 'exceptions': {},
                 'documentation': 'Test method documentation',
             }
         },
     })
Beispiel #15
0
class TestValidateMap(unittest.TestCase):

    def setUp(self):
        self.model = Model({
            'shapes': {
                'String': {
                    'type': 'string',
                },
                'TestShape': {
                    'type': 'map',
                    'key': 'String',
                    'value': 'String',
                    'min': 1,
                    'max': 1,
                }
            }
        })

    def test_validate_map_success(self):
        report = validate_shape(self.model.get_shape('TestShape'), {1: "foo"})
        self.assertEqual(len(report), 1)
        self.assertEqual(report[0].code, "invalid_type")

    def test_validate_map_type_check(self):
        report = validate_shape(self.model.get_shape('TestShape'), 55)
        self.assertEqual(len(report), 1)
        self.assertEqual(report[0].code, "invalid_type")

    def test_validate_map_key(self):
        report = validate_shape(self.model.get_shape('TestShape'), {1: "foo"})
        self.assertEqual(len(report), 1)
        self.assertEqual(report[0].code, "invalid_type")

    def test_validate_map_value(self):
        report = validate_shape(self.model.get_shape('TestShape'), {"foo": 1})
        self.assertEqual(len(report), 1)
        self.assertEqual(report[0].code, "invalid_type")

    def test_validate_min(self):
        report = validate_shape(self.model.get_shape('TestShape'), {})
        self.assertEqual(len(report), 1)
        self.assertEqual(report[0].code, "invalid_range")

    def test_validate_max(self):
        report = validate_shape(self.model.get_shape('TestShape'), {
            "a": "b",
            "c": "d",
        })
        self.assertEqual(len(report), 1)
        self.assertEqual(report[0].code, "invalid_range")
Beispiel #16
0
 def setUp(self):
     self.model = Model({
         'shapes': {
             'String': {
                 'type': 'string',
             },
             'TestStructure': {
                 'type': 'structure',
                 'members': [{
                     'name': 'foo',
                     'shape': 'String',
                 }]
             },
             'TestShape': {
                 'type': 'list',
                 'of': 'TestStructure',
                 'min': 1,
                 'max': 1,
             }
         }
     })
Beispiel #17
0
 def setUp(self):
     self.model = Model({
         'operations': {
             'test_call': {
                 'input': {'shape': 'TestShape'}
             }
         },
         'shapes': {
             'String': {
                 'type': 'string',
             },
             'TestShape': {
                 'type': 'structure',
                 'members': [{
                     'name': 'foo',
                     'shape': 'String',
                     'required': True,
                 }]
             }
         }
     })
Beispiel #18
0
class TestOperation(unittest.TestCase):

    def setUp(self):
        self.model = Model({
            'metadata': {},
            'shapes': {},
            'operations': {
                'dummy_operation': {
                    'http': {
                        'method': 'post',
                        'uri': '/foo',
                    },
                    'input': {'shape': 'dummy_operation_request'},
                    'output': {'shape': 'dummy_operation_response'},
                    'exceptions': {},
                    'documentation': 'Test method documentation',
                }
            },
        })

    def test_get_operation(self):
        operation = self.model.get_operation('dummy_operation')
        self.assertEqual(operation.name, "dummy_operation")