def test_lambda_handler_sns(
         self, mock_lambda_step_handler, mock_lambda_api_handler,
         mock_lambda_sns_handler, mock_lambda_sqs_handler,
         mock_lambda_timer_handler, mock_lambda_kinesis_handler,
         mock_lambda_dynamodb_handler):
     lambda_handler(
         {
             'Records': [{
                 'eventSource': 'aws:sns',
                 'Sns': {
                     'Message': 'message'
                 }
             }]
         }, 'a')
     self.assertFalse(mock_lambda_kinesis_handler.called)
     self.assertFalse(mock_lambda_timer_handler.called)
     self.assertFalse(mock_lambda_dynamodb_handler.called)
     mock_lambda_sns_handler.assert_called_with({
         'eventSource': 'aws:sns',
         'Sns': {
             'Message': 'message'
         }
     })
     self.assertFalse(mock_lambda_sqs_handler.called)
     self.assertFalse(mock_lambda_api_handler.called)
     self.assertFalse(mock_lambda_step_handler.called)
 def test_lambda_handler_api(self, mock_lambda_api_handler,
                             mock_lambda_sns_handler,
                             mock_lambda_timer_handler,
                             mock_lambda_kinesis_handler,
                             mock_lambda_dynamodb_handler):
     lambda_handler({'foo': 'bar'}, 'a')
     self.assertFalse(mock_lambda_kinesis_handler.called)
     self.assertFalse(mock_lambda_timer_handler.called)
     self.assertFalse(mock_lambda_dynamodb_handler.called)
     self.assertFalse(mock_lambda_sns_handler.called)
     mock_lambda_api_handler.assert_called_with({'foo': 'bar'})
 def test_lambda_handler_timer(self, mock_lambda_api_handler,
                               mock_lambda_sns_handler,
                               mock_lambda_timer_handler,
                               mock_lambda_kinesis_handler,
                               mock_lambda_dynamodb_handler):
     lambda_handler({'source': 'aws.events'}, 'a')
     self.assertFalse(mock_lambda_kinesis_handler.called)
     mock_lambda_timer_handler.assert_called_with()
     self.assertFalse(mock_lambda_dynamodb_handler.called)
     self.assertFalse(mock_lambda_sns_handler.called)
     self.assertFalse(mock_lambda_api_handler.called)
 def test_lambda_handler_dynamodb(self, mock_lambda_api_handler,
                                  mock_lambda_sns_handler,
                                  mock_lambda_timer_handler,
                                  mock_lambda_kinesis_handler,
                                  mock_lambda_dynamodb_handler):
     lambda_handler({'Records': [{'dynamodb': {}}]}, 'a')
     self.assertFalse(mock_lambda_kinesis_handler.called)
     self.assertFalse(mock_lambda_timer_handler.called)
     mock_lambda_dynamodb_handler.assert_called_with(
         {'Records': [{
             'dynamodb': {}
         }]})
     self.assertFalse(mock_lambda_sns_handler.called)
     self.assertFalse(mock_lambda_api_handler.called)
 def test_lambda_handler_kinesis(self,
                                 mock_lambda_step_handler,
                                 mock_lambda_api_handler,
                                 mock_lambda_sns_handler,
                                 mock_lambda_timer_handler,
                                 mock_lambda_kinesis_handler,
                                 mock_lambda_dynamodb_handler):
     lambda_handler({'Records': [{'kinesis': 'abc123'}]}, 'a')
     mock_lambda_kinesis_handler.assert_called_with({'Records': [{'kinesis': 'abc123'}]})
     self.assertFalse(mock_lambda_timer_handler.called)
     self.assertFalse(mock_lambda_dynamodb_handler.called)
     self.assertFalse(mock_lambda_sns_handler.called)
     self.assertFalse(mock_lambda_api_handler.called)
     self.assertFalse(mock_lambda_step_handler.called)
 def test_lambda_handler_step(self,
                              mock_lambda_step_handler,
                              mock_lambda_api_handler,
                              mock_lambda_sns_handler,
                              mock_lambda_sqs_handler,
                              mock_lambda_timer_handler,
                              mock_lambda_kinesis_handler,
                              mock_lambda_dynamodb_handler):
     lambda_handler({'step_function': True, 'foo': 'bar'}, 'a')
     self.assertFalse(mock_lambda_kinesis_handler.called)
     self.assertFalse(mock_lambda_timer_handler.called)
     self.assertFalse(mock_lambda_dynamodb_handler.called)
     self.assertFalse(mock_lambda_sns_handler.called)
     self.assertFalse(mock_lambda_sqs_handler.called)
     self.assertFalse(mock_lambda_api_handler.called)
     mock_lambda_step_handler.assert_called_with({'step_function': True, 'foo': 'bar'})
            for sqs_message in sqs_messages:
                body = sqs_message[AWS_SQS.MESSAGE.Body]
                tmp = {
                    AWS_LAMBDA.EventSource: AWS_LAMBDA.EVENT_SOURCE.SQS,
                    AWS_LAMBDA.SQS_RECORD.BODY: body
                }
                lambda_event[AWS_LAMBDA.Records].append(tmp)

            # and call the handler with the records
            if args.lambda_command:
                subprocess.call([
                    '/bin/bash', '-c',
                    args.lambda_command + " '" + json.dumps(lambda_event) + "'"
                ])
            else:
                lambda_handler(lambda_event, lambda_context)

            # after processing, the SQS messages need to be deleted
            response = sqs_conn.delete_message_batch(
                QueueUrl=sqs_queue_url,
                Entries=[{
                    AWS_SQS.MESSAGE.Id:
                    str(i),
                    AWS_SQS.MESSAGE.ReceiptHandle:
                    sqs_message[AWS_SQS.MESSAGE.ReceiptHandle]
                } for i, sqs_message in enumerate(sqs_messages)])

    if args.run_kinesis_lambda and kinesis_conn:

        # run the kinesis handler
        for i, shard_it in enumerate(shard_its):