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)