"""Lambda test module.""" from importlib import reload import os from unittest.mock import call import boto3 from moto import mock_s3 from src import app from src.config import app_logger @mock_s3 def test_handler(mocker): """Test handler function.""" s3_bucket = 'test-bucket' s3_key = '2-second-stereo-white-noise.flac' test_event = {'bucket': s3_bucket, 'filename': s3_key} # Reload app module so s3 mock is applied to module level s3_client. reload(app) mocker.patch.object(app_logger, 'info') s3_connection = boto3.resource('s3', region_name='us-east-1') s3_connection.create_bucket(Bucket=s3_bucket) test_audio_file_path = os.path.join(os.path.dirname(__file__), s3_key) with open(test_audio_file_path, 'rb') as test_audio_file: s3_connection.Object(s3_bucket, s3_key).put(Body=test_audio_file) result = app.handler(test_event, None) assert app_logger.info.mock_calls == [call(test_event)] # For some reason, even though this test is run in a docker container, the fingerprints are slightly different depending on the machine the docker container is running on. # noqa: E501 jenkins_fingerprint = '/gAAAAhTOUhaAQAAVm5qSNQBAQBJuWVIpQIBADyCmkjcAAQAXvspSKYDBQCNMKhIoAAJAIH1EEh3AwoAp92wSD4CCwDExatICAMLAKpov0jGAQwA9ud/SI0CDAAstZZIFQEOAOv6M0jdAhAAW5m+SDwDEAC3gdVIxQATANgtBUiHARMAtpKBSNYBGwCKwIFICwIbAHr3kUjxAhsAnKm1SLcCHACiUapIRAIeAMnpjkhTAx4AaYimSL8AHwDqdRRIfwMgALnW2UjRAyIAx+FbSEQBIwBT62xIGAMrAF36tki5ASwAEWGXSFkCLABNxKJIggIsAEFim0jvAC0A1/lNSKgALwCCwA5I4gIxAFfKrUgvAjIA5E6RSKgDMgCUlrlIFAEzAC/Re0iLATUANYeGSPwBNQBcqo1IYgM3AOujv0gVAzgAFHGxSFEBOgCVEGdI0AA/ALJbBkgdAUAA17lQSOUBQACarYVIrwBCAFdbBEgoAkMAOlurSOcCQwBuC8hIYQJEAOi0lkgyA0QATsOvSHoDRQBeo7tIZQFHAGhqSkgLA0cAicPqSLEBTACBl3hI5gNMAP70RUgpAU0A9BBOSN4BTQDaY4lICwJOAKvUoEiYAlAA5kenSPsAVAB4pF1IBgNVABEgvEiXAFYAPR3cR2sBVwBk2GtIswFXAOqla0hXA1cAziqtSKEDVwDho75I' # noqa: E501 m1_mac_local_fingerprint = '/gAAANdUOUhaAQAAAHFqSNQBAQDRtWVIpQIBAAuDmkjcAAQAOv0pSKYDBQBtMKhIoAAJAFL1EEh3AwoAr9ywSD4CCwCtw6tICAMLACxpv0jGAQwAnul/SI0CDABItJZIFQEOAOn6M0jdAhAAeZi+SDwDEAB6gNVIxQATAFctBUiHARMAnpSBSNYBGwA7wYFICwIbADz3kUjxAhsAxqm1SLcCHAACUqpIRAIeAB/qjkhTAx4AkIimSL8AHwCJdhRIfwMgALrX2UjRAyIACuNbSEQBIwBQ6GxIGAMrAHL7tki5ASwA52GXSFkCLACLw6JIggIsADJim0jvAC0AC/pNSKgALwACwg5I4gIxAALKrUgvAjIAME6RSKgDMgAtlLlIFAEzACjSe0iLATUAEYiGSPwBNQBAqo1IYgM3AJ+jv0gVAzgAGnGxSFEBOgBiEGdI0AA/AG9cBkgdAUAA7blQSOUBQACsrYVIrwBCADtZBEgoAkMAkVmrSOcCQwBnCshIYQJEAAK1lkgyA0QAg8GvSHoDRQB3obtIZQFHAG5sSkgLA0cA8sXqSLEBTABUm3hI5gNMAG7yRUgpAU0AEg5OSN4BTQDYYYlICwJOABHToEiYAlAA70anSPsAVAAto11IBgNVAMEfvEiXAFYATh7cR2sBVwDf2WtIswFXAOqha0hXA1cAOSytSKEDVwBOpb5I' # noqa: E501 m1_mac_dockerizer_fingerprint = '/gAAABZTOUhaAQAAYm5qSNQBAQBZuWVIpQIBADuCmkjcAAQAXPspSKYDBQCLMKhIoAAJAHX1EEh3AwoAoN2wSD4CCwCwxatICAMLAIhov0jGAQwAz+d/SI0CDAA+tZZIFQEOABv7M0jdAhAAbJm+SDwDEADLgdVIxQATAMMtBUiHARMAxZKBSNYBGwCVwIFICwIbAGv3kUjxAhsApqm1SLcCHAC5UapIRAIeAMbpjkhTAx4AYIimSL8AHwDzdRRIfwMgANDW2UjRAyIALOJbSEQBIwBO62xIGAMrAFv6tki5ASwAEWGXSFkCLABNxKJIggIsAEFim0jvAC0A1/lNSKgALwCCwA5I4gIxAFfKrUgvAjIA4U6RSKgDMgCalrlIFAEzAC/Re0iLATUARoeGSPwBNQBuqo1IYgM3AP2jv0gVAzgAFnGxSFEBOgCdEGdI0AA/ALRbBkgdAUAA4LlQSOUBQACdrYVIrwBCAEBbBEgoAkMAL1urSOcCQwBoC8hIYQJEANW0lkgyA0QAdcOvSHoDRQA9o7tIZQFHAHFqSkgLA0cApMPqSLEBTACll3hI5gNMACX1RUgpAU0A5BBOSN4BTQDIY4lICwJOALrUoEiYAlAA6EenSPsAVABmpF1IBgNVABogvEiXAFYAKB3cR2sBVwBv2GtIswFXAP6la0hXA1cAwCqtSKEDVwDqo75I' # noqa: E501 expected_fingerprints = { jenkins_fingerprint, m1_mac_local_fingerprint, m1_mac_dockerizer_fingerprint } assert result in [ {'audio_fingerprint': fingerprint} for fingerprint in expected_fingerprints ]