"""Script for executing the lambda locally against AWS Dev.""" import os from src import app as index os.environ['OWSREQUEST_SERVICE_MAP'] = '{"ows-asset-transcoder": "localhost:5001"}' os.environ['SNS_GENERAL_STATUS_TOPIC_ARN'] = 'arn:aws:sns:us-east-1:103233932089:dev-asset_transcoder_general_status' unexpected_event = { 'detail': { 'requestParameters': { 'bucke': 'dev-orcd-asset-transcoder-input', 'key': '00392262_1dbe_4a14_bf1d_b649f9984e44.jpg' } } } s3_not_found = { 'detail': { 'requestParameters': { 'bucketName': 'dev-orcd-asset-transcoder-input', 'key': 'not_such_file.jpg' } } } s3_no_metadata = { 'detail': { 'requestParameters': { 'bucketName': 'dev-orcd-asset-transcoder-input', 'key': '00392262_1dbe_4a14_bf1d_b649f9984e44.jpg' } } } s3_head_error = { 'detail': { 'requestParameters': { 'bucketName': 'qa-asset-storage', 'key': 'images/v2/product/large_cover' '/0223ad792dee408f9daf436519b21762_e1d74d8a_14f1_4179_b59e_40992c2b15df.jpeg ' } } } success_event = { 'detail': { 'requestParameters': { 'bucketName': 'dev-orcd-asset-transcoder-input', 'key': '003d350f_865a_4405_9600_3f060695cf26.jpg' } } } post_asset_not_found = { 'detail': { 'requestParameters': { 'bucketName': 'dev-orcd-asset-transcoder-input', 'key': 'f1e48259_7fbe_4120_9e8f_d262962c9226.jpg' } } } def test_bad_post_asset(lambda_module): """Test error handling of an error response from the service.""" origin_post_asset = lambda_module.post_asset def _bad_post_asset(data): del data['object_type'] return origin_post_asset(data) lambda_module.post_asset = _bad_post_asset lambda_module.handler(success_event, None) lambda_module.post_asset = origin_post_asset def test_bad_asset_config(lambda_module): """Test error handling of a response from the service with an invalid asset config.""" from owsrequest import request from requests.models import Response origin_request_process = request.process def _bad_request(**kwargs): r = Response() r.status_code = 200 def json_func(): return { 'config': { 'output_bucket_name': 'dummy-bucket', 'preview_bucket_name': 'dummy-bucke' } } r.json = json_func return r request.process = _bad_request lambda_module.handler(success_event, None) request.process = origin_request_process def test_event(lambda_module, event): """Method for testing the handler function with a test event.""" try: lambda_module.handler(event, None) except Exception: pass if __name__ == '__main__': for event in [unexpected_event, s3_not_found, s3_no_metadata, s3_head_error, post_asset_not_found, success_event]: test_event(index, event) try: test_bad_post_asset(index) except Exception: pass try: test_bad_asset_config(index) except Exception: pass