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)
Beispiel #4
0
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)
Beispiel #6
0
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)
Beispiel #9
0
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"
Beispiel #13
0
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)