public override Task <Object> UpdateObjectAsync(
     Object obj,
     UpdateObjectOptions options         = null,
     CancellationToken cancellationToken = default(CancellationToken))
 {
     return(Task.FromResult(obj));
 }
        public void ModifyRequest_PositiveMatchOptions()
        {
            var obj = new Object {
                Generation = 10L, Metageneration = 20L
            };
            var request = new UpdateRequest(null, obj, "bucket", "object");
            var options = new UpdateObjectOptions
            {
                Generation            = 1L,
                IfGenerationMatch     = 2L,
                IfMetagenerationMatch = 3L,
                PredefinedAcl         = PredefinedObjectAcl.AuthenticatedRead,
                Projection            = Projection.Full,
                UserProject           = "proj"
            };

            options.ModifyRequest(request, obj);
            Assert.Equal(1L, request.Generation);
            Assert.Equal(2L, request.IfGenerationMatch);
            Assert.Null(request.IfGenerationNotMatch);
            Assert.Equal(3L, request.IfMetagenerationMatch);
            Assert.Null(request.IfMetagenerationNotMatch);
            Assert.Equal(PredefinedAclEnum.AuthenticatedRead, request.PredefinedAcl);
            Assert.Equal(ProjectionEnum.Full, request.Projection);
            Assert.Equal("proj", request.UserProject);
        }
        public void ModifyRequest_ForceNoPreconditions_ButPreconditionsSet()
        {
            var obj = new Object {
                Generation = 10L, Metageneration = 20L
            };
            var request = new UpdateRequest(null, obj, "bucket", "object");
            var options = new UpdateObjectOptions {
                ForceNoPreconditions = true, IfGenerationMatch = 2L
            };

            Assert.Throws <ArgumentException>(() => options.ModifyRequest(request, obj));
        }
        public void ModifyRequest_DefaultOptions()
        {
            var obj = new Object {
                Generation = 10L, Metageneration = 20L
            };
            var request = new UpdateRequest(null, obj, "bucket", "object");
            var options = new UpdateObjectOptions();

            options.ModifyRequest(request, obj);
            Assert.Null(request.Generation);
            Assert.Equal(10L, request.IfGenerationMatch);
            Assert.Null(request.IfGenerationNotMatch);
            Assert.Equal(20L, request.IfMetagenerationMatch);
            Assert.Null(request.IfMetagenerationNotMatch);
            Assert.Null(request.PredefinedAcl);
            Assert.Null(request.Projection);
        }
        public void ModifyRequest_ForceNoPreconditions()
        {
            var obj = new Object {
                Generation = 10L, Metageneration = 20L
            };
            var request = new UpdateRequest(null, obj, "bucket", "object");
            var options = new UpdateObjectOptions {
                ForceNoPreconditions = true
            };

            options.ModifyRequest(request, obj);
            Assert.Null(request.Generation);
            Assert.Null(request.IfGenerationMatch);
            Assert.Null(request.IfGenerationNotMatch);
            Assert.Null(request.IfMetagenerationMatch);
            Assert.Null(request.IfMetagenerationNotMatch);
            Assert.Null(request.PredefinedAcl);
            Assert.Null(request.Projection);
        }
        public void ModifyRequest_MatchNotMatchConflicts()
        {
            var obj = new Object {
                Generation = 10L, Metageneration = 20L
            };
            var request = new UpdateRequest(null, obj, "bucket", "object");

            Assert.Throws <ArgumentException>(() =>
            {
                var options = new UpdateObjectOptions {
                    IfGenerationMatch = 1L, IfGenerationNotMatch = 2L
                };
                options.ModifyRequest(request, obj);
            });
            Assert.Throws <ArgumentException>(() =>
            {
                var options = new UpdateObjectOptions {
                    IfMetagenerationMatch = 1L, IfMetagenerationNotMatch = 2L
                };
                options.ModifyRequest(request, obj);
            });
        }
        // *************************************************************************************************************
        // UPDATE OBJECT

        public override Object UpdateObject(
            Object obj,
            UpdateObjectOptions options = null)
        {
            return(obj);
        }