def testValidateMissing(self): 'APIGateway.getParameter() should call the validator if passed [with missing param]' event = {} sut = APIGateway(mockLoggerFactory, event) validator = MagicMock() sut.getParameter('param', 'basePath', 'p', False, validator) validator.assert_called_once_with(None)
def testMissingRequired(self): 'APIGateway.getParameter() should raise a 400 HttpError if the parameter is missing and required' event = {} sut = APIGateway(mockLoggerFactory, event) with self.assertRaises(HttpError) as cm: sut.getParameter('param', 'basePath', 'p', True, None) self.assertEqual(cm.exception.statusCode, 400) self.assertEqual(cm.exception.statusReason, 'Bad request') self.assertEqual(cm.exception.message, 'Missing param "p"')
def testValidateFound(self): 'APIGateway.getParameter() should call the validator if passed [with found param]' event = { 'basePath': { 'p': 'value' } } sut = APIGateway(mockLoggerFactory, event) validator = MagicMock() sut.getParameter('param', 'basePath', 'p', False, validator) validator.assert_called_once_with('value')
def testRightParameters(self): 'APIGateway.getHeader() should call APIGateway.getParameter() with the right parameters' event = {} sut = APIGateway(mockLoggerFactory, event) sut.getParameter = MagicMock() sut.getHeader('p', 'required', 'validator') sut.getParameter.assert_called_once_with('header', 'headers', 'p', 'required', 'validator')
def testInvalid(self): 'APIGateway.getParameter() should throw a 400 HttpError with the error of the validator as cause' event = { 'basePath': { 'p': 'value' } } sut = APIGateway(mockLoggerFactory, event) validator = MagicMock() validator.side_effect = Exception('error message') with self.assertRaises(HttpError) as cm: sut.getParameter('param', 'basePath', 'p', False, validator) validator.assert_called_once_with('value') self.assertEqual(cm.exception.statusCode, 400) self.assertEqual(cm.exception.message, 'Invalid param "p"') self.assertEqual(cm.exception.causes, ['error message'])
def testReturn(self): 'APIGateway.getParameter() should return the parameter' event = { 'basePath': { 'p': 'value' } } sut = APIGateway(mockLoggerFactory, event) param = sut.getParameter('param', 'basePath', 'p', False, None) self.assertEqual(param, 'value')
def testMissingNotRequired(self): 'APIGateway.getParameter() should return None if the parameter is missing and not required' event = {} sut = APIGateway(mockLoggerFactory, event) param = sut.getParameter('param', 'basePath', 'p', False, None) self.assertIsNone(param)