def test_invoke_lambda_happycase(sagemaker_session): lambda_obj = lambda_helper.Lambda(function_arn=LAMBDA_ARN, session=sagemaker_session) lambda_obj.invoke() sagemaker_session.lambda_client.invoke.assert_called_with( FunctionName=LAMBDA_ARN, InvocationType="RequestResponse")
def test_upsert_lambda_client_error(sagemaker_session): lambda_obj = lambda_helper.Lambda( function_name=FUNCTION_NAME, execution_role_arn=EXECUTION_ROLE, script=SCRIPT, handler=HANDLER, session=sagemaker_session, ) sagemaker_session.lambda_client.create_function.side_effect = ClientError( { "Error": { "Code": "ResourceConflictException", "Message": "Lambda already exists" } }, "CreateFunction", ) sagemaker_session.lambda_client.update_function_code.side_effect = ClientError( { "Error": { "Code": "ResourceConflictException", "Message": "Cannot update code" } }, "UpdateFunctionCode", ) with pytest.raises(ValueError) as error: lambda_obj.upsert() assert "Cannot update code" in str(error)
def test_lambda_object_no_code_error(): with pytest.raises(ValueError) as error: lambda_helper.Lambda( function_name=FUNCTION_NAME, execution_role_arn=EXECUTION_ROLE, handler=HANDLER, session=sagemaker_session, ) assert "Either zipped_code_dir or script must be provided" in str(error)
def test_lambda_object_with_no_name_and_arn_error(): with pytest.raises(ValueError) as error: lambda_helper.Lambda( execution_role_arn=EXECUTION_ROLE, script=SCRIPT, handler=HANDLER, session=sagemaker_session, ) assert "Either function_arn or function_name must be provided" in str(error)
def test_lambda_object_no_execution_role_error(): with pytest.raises(ValueError) as error: lambda_helper.Lambda( function_name=FUNCTION_NAME, zipped_code_dir=ZIPPED_CODE_DIR, s3_bucket=S3_BUCKET, handler=HANDLER, session=sagemaker_session, ) assert "execution_role_arn must be provided." in str(error)
def test_delete_lambda_client_error(sagemaker_session): lambda_obj = lambda_helper.Lambda(function_arn=LAMBDA_ARN, session=sagemaker_session) sagemaker_session.lambda_client.delete_function.side_effect = ClientError( {"Error": {"Code": "Invalid", "Message": "Delete failed"}}, "Invoke" ) with pytest.raises(ValueError) as error: lambda_obj.delete() assert "Delete failed" in str(error)
def test_lambda_object_both_script_and_code_dir_error(): with pytest.raises(ValueError) as error: lambda_helper.Lambda( function_name=FUNCTION_NAME, execution_role_arn=EXECUTION_ROLE, script=SCRIPT, zipped_code_dir=ZIPPED_CODE_DIR, handler=HANDLER, session=sagemaker_session, ) assert "Provide either script or zipped_code_dir, not both." in str(error)
def test_update_lambda_happycase1(sagemaker_session): lambda_obj = lambda_helper.Lambda( function_name=FUNCTION_NAME, execution_role_arn=EXECUTION_ROLE, script=SCRIPT, handler=HANDLER, session=sagemaker_session, ) lambda_obj.update() sagemaker_session.lambda_client.update_function_code.assert_called_with( FunctionName=FUNCTION_NAME, ZipFile=ZIPPED_CODE)
def test_create_lambda_no_function_name_error(sagemaker_session): lambda_obj = lambda_helper.Lambda( function_arn=LAMBDA_ARN, execution_role_arn=EXECUTION_ROLE, zipped_code_dir=ZIPPED_CODE_DIR, s3_bucket=S3_BUCKET, handler=HANDLER, session=sagemaker_session, ) with pytest.raises(ValueError) as error: lambda_obj.create() assert "FunctionName must be provided to create a Lambda function" in str(error)
def test_update_lambda_happycase2(sagemaker_session): lambda_obj = lambda_helper.Lambda( function_arn=LAMBDA_ARN, execution_role_arn=EXECUTION_ROLE, zipped_code_dir=ZIPPED_CODE_DIR, s3_bucket=S3_BUCKET, handler=HANDLER, session=sagemaker_session, ) lambda_obj.update() sagemaker_session.lambda_client.update_function_code.assert_called_with( FunctionName=LAMBDA_ARN, S3Bucket=S3_BUCKET, S3Key=S3_KEY)
def test_lambda_object_with_name_happycase1(): lambda_obj = lambda_helper.Lambda( function_name=FUNCTION_NAME, execution_role_arn=EXECUTION_ROLE, script=SCRIPT, handler=HANDLER, session=sagemaker_session, ) assert lambda_obj.function_name == FUNCTION_NAME assert lambda_obj.execution_role_arn == EXECUTION_ROLE assert lambda_obj.script == SCRIPT assert lambda_obj.handler == HANDLER assert lambda_obj.timeout == 120 assert lambda_obj.memory_size == 128 assert lambda_obj.runtime == "python3.8"
def test_lambda_object_with_name_happycase2(): lambda_obj = lambda_helper.Lambda( function_name=FUNCTION_NAME, execution_role_arn=EXECUTION_ROLE, zipped_code_dir=ZIPPED_CODE_DIR, s3_bucket=S3_BUCKET, handler=HANDLER, session=sagemaker_session, ) assert lambda_obj.function_name == FUNCTION_NAME assert lambda_obj.execution_role_arn == EXECUTION_ROLE assert lambda_obj.zipped_code_dir == ZIPPED_CODE_DIR assert lambda_obj.s3_bucket == S3_BUCKET assert lambda_obj.handler == HANDLER assert lambda_obj.timeout == 120 assert lambda_obj.memory_size == 128 assert lambda_obj.runtime == "python3.8"
def test_create_lambda_client_error(sagemaker_session): lambda_obj = lambda_helper.Lambda( function_name=FUNCTION_NAME, execution_role_arn=EXECUTION_ROLE, zipped_code_dir=ZIPPED_CODE_DIR, s3_bucket=S3_BUCKET, handler=HANDLER, session=sagemaker_session, ) sagemaker_session.lambda_client.create_function.side_effect = ClientError( {"Error": {"Code": "ResourceConflictException", "Message": "Function already exists"}}, "CreateFunction", ) with pytest.raises(ValueError) as error: lambda_obj.create() assert "Function already exists" in str(error)
def test_upsert_lambda_happycase1(sagemaker_session): lambda_obj = lambda_helper.Lambda( function_name=FUNCTION_NAME, execution_role_arn=EXECUTION_ROLE, script=SCRIPT, handler=HANDLER, session=sagemaker_session, ) code = {"ZipFile": ZIPPED_CODE} lambda_obj.upsert() sagemaker_session.lambda_client.create_function.assert_called_with( FunctionName=FUNCTION_NAME, Runtime="python3.8", Handler=HANDLER, Role=EXECUTION_ROLE, Code=code, Timeout=120, MemorySize=128, )
def test_create_lambda_happycase2(sagemaker_session): lambda_obj = lambda_helper.Lambda( function_name=FUNCTION_NAME, execution_role_arn=EXECUTION_ROLE, zipped_code_dir=ZIPPED_CODE_DIR, s3_bucket=S3_BUCKET, handler=HANDLER, session=sagemaker_session, ) lambda_obj.create() code = {"S3Bucket": lambda_obj.s3_bucket, "S3Key": S3_KEY} sagemaker_session.lambda_client.create_function.assert_called_with( FunctionName=FUNCTION_NAME, Runtime="python3.8", Handler=HANDLER, Role=EXECUTION_ROLE, Code=code, Timeout=120, MemorySize=128, )
def test_upsert_lambda_happycase2(sagemaker_session): lambda_obj = lambda_helper.Lambda( function_name=FUNCTION_NAME, execution_role_arn=EXECUTION_ROLE, script=SCRIPT, handler=HANDLER, session=sagemaker_session, ) sagemaker_session.lambda_client.create_function.side_effect = ClientError( { "Error": { "Code": "ResourceConflictException", "Message": "Lambda already exists" } }, "CreateFunction", ) lambda_obj.upsert() sagemaker_session.lambda_client.update_function_code.assert_called_once_with( FunctionName=FUNCTION_NAME, ZipFile=ZIPPED_CODE)
def test_lambda_object_with_arn_happycase(): lambda_obj = lambda_helper.Lambda(function_arn=LAMBDA_ARN, session=sagemaker_session) assert lambda_obj.function_arn == LAMBDA_ARN
def test_delete_lambda_happycase(sagemaker_session): lambda_obj = lambda_helper.Lambda(function_arn=LAMBDA_ARN, session=sagemaker_session) lambda_obj.delete() sagemaker_session.lambda_client.delete_function.assert_called_with( FunctionName=LAMBDA_ARN)