def deleted_resource(resource_client):
    request = input_model = model = resource_client.generate_create_example()
    try:
        _status, response, _error = resource_client.call_and_assert(
            Action.CREATE, OperationStatus.SUCCESS, request
        )
        model = response["resourceModel"]
        test_input_equals_output(resource_client, input_model, model)
        _status, response, _error = resource_client.call_and_assert(
            Action.DELETE, OperationStatus.SUCCESS, model
        )
        assert (
            "resourceModel" not in response
        ), "The deletion handler's response object MUST NOT contain a model"
        yield model, request
    finally:
        status, response = resource_client.call(Action.DELETE, model)

        # a failed status is allowed if the error code is NotFound
        if status == OperationStatus.FAILED:
            error_code = resource_client.assert_failed(status, response)
            assert (
                error_code == HandlerErrorCode.NotFound
            ), "A delete hander MUST return FAILED with a NotFound error code\
                 if the resource did not exist prior to the delete request"
        else:
            resource_client.assert_success(status, response)
def updated_resource(resource_client):
    create_request = input_model = model = resource_client.generate_create_example(
    )
    try:
        _status, response, _error = resource_client.call_and_assert(
            Action.CREATE, OperationStatus.SUCCESS, create_request)
        created_model = model = response["resourceModel"]
        test_input_equals_output(resource_client, input_model, created_model)

        update_request = resource_client.generate_update_example(created_model)

        updated_input_model = prune_properties_from_model(
            update_request.copy(), resource_client.read_only_paths)

        _status, response, _error = resource_client.call_and_assert(
            Action.UPDATE, OperationStatus.SUCCESS, update_request,
            created_model)
        updated_model = response["resourceModel"]
        test_input_equals_output(resource_client, updated_input_model,
                                 updated_model)

        # flake8: noqa: B950
        # pylint: disable=C0301
        yield create_request, created_model, update_request, updated_model, updated_input_model
    finally:
        resource_client.call_and_assert(Action.DELETE, OperationStatus.SUCCESS,
                                        model)
def contract_create_delete(resource_client):
    requested_model = (
        delete_model
    ) = input_model = resource_client.generate_create_example()
    try:
        response = test_create_success(resource_client, requested_model)
        # check response here
        delete_model = response["resourceModel"]
        test_input_equals_output(resource_client, input_model, delete_model)
    finally:
        test_delete_success(resource_client, delete_model)
def created_resource(resource_client):
    request = input_model = model = resource_client.generate_create_example()
    try:
        _status, response, _error = resource_client.call_and_assert(
            Action.CREATE, OperationStatus.SUCCESS, request)
        model = response["resourceModel"]
        test_input_equals_output(resource_client, input_model, model)
        yield model, request
    finally:
        resource_client.call_and_assert(Action.DELETE, OperationStatus.SUCCESS,
                                        model)
Exemple #5
0
def contract_update_read(updated_resource, resource_client):
    # should be able to use the created model
    # to read since physical resource id is immutable
    (
        _create_request,
        _created_model,
        _update_request,
        updated_model,
        updated_input_model,
    ) = updated_resource
    assert resource_client.is_primary_identifier_equal(
        resource_client.primary_identifier_paths, _created_model,
        updated_model), "The primaryIdentifier returned must match\
         the primaryIdentifier passed into the request"

    read_response = test_read_success(resource_client, updated_model)
    test_input_equals_output(resource_client, updated_input_model,
                             read_response["resourceModel"])
def deleted_resource(resource_client):
    request = input_model = model = resource_client.generate_create_example()
    try:
        _status, response, _error = resource_client.call_and_assert(
            Action.CREATE, OperationStatus.SUCCESS, request
        )
        model = response["resourceModel"]
        test_input_equals_output(resource_client, input_model, model)
        _status, response, _error = resource_client.call_and_assert(
            Action.DELETE, OperationStatus.SUCCESS, model
        )
        assert "resourceModel" not in response
        yield model, request
    finally:
        status, response = resource_client.call(Action.DELETE, model)

        # a failed status is allowed if the error code is NotFound
        if status == OperationStatus.FAILED:
            error_code = resource_client.assert_failed(status, response)
            assert error_code == HandlerErrorCode.NotFound
        else:
            resource_client.assert_success(status, response)
Exemple #7
0
def updated_resource(resource_client):
    create_request = input_model = model = resource_client.generate_create_example(
    )
    try:
        _status, response, _error = resource_client.call_and_assert(
            Action.CREATE, OperationStatus.SUCCESS, create_request)
        created_model = model = response["resourceModel"]
        test_input_equals_output(resource_client, input_model, created_model)

        updated_input_model = update_request = resource_client.generate_update_example(
            created_model)
        _status, response, _error = resource_client.call_and_assert(
            Action.UPDATE, OperationStatus.SUCCESS, update_request,
            created_model)
        updated_model = response["resourceModel"]
        test_input_equals_output(resource_client, updated_input_model,
                                 updated_model)

        yield create_request, created_model, update_request, updated_model
    finally:
        resource_client.call_and_assert(Action.DELETE, OperationStatus.SUCCESS,
                                        model)
def contract_create_read(created_resource, resource_client):
    input_model, created_model, _request = created_resource
    read_response = test_read_success(resource_client, created_model)
    test_input_equals_output(resource_client, input_model,
                             read_response["resourceModel"])