Example #1
0
        public async void UpdateMetadata_InvalidData()
        {
            var optionsMock = GetAppSettingsMock();
            var queueMock   = GetQueueMock();

            var guardMock = new Mock <IGuardApi>();

            guardMock.Setup(api => api.UpdateObjectMetadata(
                                It.IsAny <string>(),
                                It.IsAny <IMetadataUpdate>()))
            .ReturnsAsync(true);

            var writeObjectsController = new WriteObjectsController(optionsMock.Object, guardMock.Object, null, queueMock.Object);

            // No object name
            var noObjectNameRequest = new UpdateObjectMetaDataRequest
            {
                ParentDirectoryIds = new[] { IdGenerator.NewId(IdType.Directory) },
                ObjectName         = null
            };

            var response = await writeObjectsController.UpdateObjectMetadata(noObjectNameRequest, IdGenerator.NewId(IdType.Directory), 0);

            Assert.IsType <BadRequestResult>(response);


            // No object name
            var parentDirectoryHasFileIdRequest = new UpdateObjectMetaDataRequest
            {
                ParentDirectoryIds = new[] { IdGenerator.NewId(IdType.File) },
                ObjectName         = "Abc"
            };

            response = await writeObjectsController.UpdateObjectMetadata(parentDirectoryHasFileIdRequest, IdGenerator.NewId(IdType.Directory), 0);

            Assert.IsType <BadRequestResult>(response);


            // Invalid target object id
            var validRequest = new UpdateObjectMetaDataRequest
            {
                ParentDirectoryIds = new[] { IdGenerator.NewId(IdType.Directory) },
                ObjectName         = "Abc"
            };

            response = await writeObjectsController.UpdateObjectMetadata(validRequest, IdGenerator.NewId(IdType.Undefined), 0);

            Assert.IsType <BadRequestResult>(response);
        }
        public async Task <IActionResult> UpdateObjectMetadata(
            [FromBody] UpdateObjectMetaDataRequest updatedMetadata,
            [FromRoute] string objectId,
            [FromQuery(Name = "revisionNr")] uint?revisionNumber)
        {
            #region - Input data validation -

            if (!IdGenerator.TypeFromId(objectId, out var typOfId) || (typOfId != IdType.Directory && typOfId != IdType.File))
            {
                return(BadRequest());
            }

            if (string.IsNullOrWhiteSpace(updatedMetadata.ObjectName) ||
                updatedMetadata.ParentDirectoryIds == null ||
                updatedMetadata.ParentDirectoryIds.Length == 0)
            {
                return(BadRequest());
            }

            foreach (var updatedMetadataParentDirectoryId in updatedMetadata.ParentDirectoryIds)
            {
                // Check that all ids are well formed
                if (!IdGenerator.TypeFromId(updatedMetadataParentDirectoryId, out var typOfParentDirectoryId) ||
                    typOfParentDirectoryId != IdType.Directory)
                {
                    return(BadRequest());
                }
            }

            #endregion

            try
            {
                var successful = await guardApi.UpdateObjectMetadata(objectId, updatedMetadata);

                if (!successful)
                {
                    return(BadRequest());
                }

                return(Ok());
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                return(BadRequest());
            }
        }
Example #3
0
        public async void UpdateMetadata_Throws()
        {
            var optionsMock = GetAppSettingsMock();
            var queueMock   = GetQueueMock();

            var guardMock = new Mock <IGuardApi>();

            guardMock.Setup(api => api.UpdateObjectMetadata(
                                It.IsAny <string>(),
                                It.IsAny <IMetadataUpdate>()))
            .Throws <InvalidOperationException>();

            var writeObjectsController = new WriteObjectsController(optionsMock.Object, guardMock.Object, null, queueMock.Object);

            var request = new UpdateObjectMetaDataRequest()
            {
                ParentDirectoryIds = new[] { IdGenerator.NewId(IdType.Directory) },
                ObjectName         = "NewDirectoryName"
            };

            var response = await writeObjectsController.UpdateObjectMetadata(request, IdGenerator.NewId(IdType.Directory), 0);

            Assert.IsType <BadRequestResult>(response);
        }