def test_disable_python(self, mock_gen_aws_client, mock_get_serialized_lambda_function): mock_client = Mock() mock_gen_aws_client.return_value = mock_client mock_client.get_function = MagicMock( return_value={ "Configuration": { "FunctionName": "lambdaF", "Runtime": "python3.6", "FunctionArn": "arn:aws:lambda:us-east-2:599817902985:function:lambdaF", "Handler": "sentry_sdk.integrations.init_serverless_sdk.sentry_lambda_handler", "Layers": [ { "Arn": "arn:aws:lambda:us-east-2:1234:layer:something-else:2" }, { "Arn": "arn:aws:lambda:us-east-2:1234:layer:my-python-layer:34" }, ], "Environment": { "Variables": { "SENTRY_INITIAL_HANDLER": "lambda_handler.test_handler", "SENTRY_DSN": self.sentry_dsn, "SENTRY_TRACES_SAMPLE_RATE": "1.0", "OTHER": "hi", } }, }, }) mock_client.update_function_configuration = MagicMock() return_value = { "name": "lambdaF", "runtime": "python3.6", "version": -1, "outOfDate": False, "enabled": False, } mock_get_serialized_lambda_function.return_value = return_value assert self.get_response(action="disable", target="lambdaF").data == return_value mock_client.get_function.assert_called_with(FunctionName="lambdaF") mock_client.update_function_configuration.assert_called_with( FunctionName="lambdaF", Layers=["arn:aws:lambda:us-east-2:1234:layer:something-else:2"], Environment={"Variables": { "OTHER": "hi" }}, Handler="lambda_handler.test_handler", )
def test_update_version(self, mock_gen_aws_client, mock_get_serialized_lambda_function): mock_client = Mock() mock_gen_aws_client.return_value = mock_client mock_client.get_function = MagicMock( return_value={ "Configuration": { "FunctionName": "lambdaD", "Runtime": "nodejs10.x", "FunctionArn": "arn:aws:lambda:us-east-2:599817902985:function:lambdaD", "Layers": [ { "Arn": "arn:aws:lambda:us-east-2:1234:layer:something-else:2" }, { "Arn": "arn:aws:lambda:us-east-2:1234:layer:my-layer:2" }, ], "Environment": { "Variables": { "NODE_OPTIONS": "-r @sentry/serverless/dist/auto", "SENTRY_DSN": self.sentry_dsn, "SENTRY_TRACES_SAMPLE_RATE": "1.0", "OTHER": "hi", } }, }, }) mock_client.update_function_configuration = MagicMock() return_value = { "name": "lambdaD", "runtime": "nodejs10.x", "version": 3, "outOfDate": False, "enabled": True, } mock_get_serialized_lambda_function.return_value = return_value assert self.get_response(action="updateVersion", target="lambdaD").data == return_value mock_client.get_function.assert_called_with(FunctionName="lambdaD") mock_client.update_function_configuration.assert_called_with( FunctionName="lambdaD", Layers=[ { "Arn": "arn:aws:lambda:us-east-2:1234:layer:something-else:2" }, "arn:aws:lambda:us-east-2:1234:layer:my-layer:3", ], )
def test_enable_python_layer_on_already_enabled( self, mock_gen_aws_client, mock_get_serialized_lambda_function): """ Test that ensures that if sentry-sdk is already enabled, then re-enabling it should not override the env variables since it could be problematic since the SENTRY_INITIAL_HANDLER env variable could be overriden the second time with "sentry_sdk.integrations.init_serverless_sdk. sentry_lambda_handler" and then disabling the sentry-sdk, would break the function because the Handler will be updated with an incorrect SENTRY_INITIAL_HANDLER value """ mock_client = Mock() mock_gen_aws_client.return_value = mock_client mock_client.get_function = MagicMock( return_value={ "Configuration": { "FunctionName": "lambdaZ", "Runtime": "python3.8", "Handler": "sentry_sdk.integrations.init_serverless_sdk.sentry_lambda_handler", "FunctionArn": "arn:aws:lambda:us-east-2:599817902985:function:lambdaZ", "Layers": [ "arn:aws:lambda:us-east-2:1234:layer:something-else:2", "arn:aws:lambda:us-east-2:1234:layer:my-python-layer:34", ], "Environment": { "Variables": { "SENTRY_INITIAL_HANDLER": "lambda_handler.test_handler", "SENTRY_DSN": self.sentry_dsn, "SENTRY_TRACES_SAMPLE_RATE": "1.0", } }, }, }) mock_client.update_function_configuration = MagicMock() return_value = { "name": "lambdaZ", "runtime": "python3.8", "version": 3, "outOfDate": False, "enabled": True, } mock_get_serialized_lambda_function.return_value = return_value assert self.get_response(action="enable", target="lambdaZ").data == return_value mock_client.get_function.assert_called_with(FunctionName="lambdaZ") mock_client.update_function_configuration.assert_called_with( FunctionName="lambdaZ", Layers=[ "arn:aws:lambda:us-east-2:1234:layer:something-else:2", "arn:aws:lambda:us-east-2:1234:layer:my-python-layer:34", ], Environment={ "Variables": { "SENTRY_INITIAL_HANDLER": "lambda_handler.test_handler", "SENTRY_DSN": self.sentry_dsn, "SENTRY_TRACES_SAMPLE_RATE": "1.0", } }, Handler= "sentry_sdk.integrations.init_serverless_sdk.sentry_lambda_handler", )