コード例 #1
0
        public void UpsertFileDataSourceMustCallValidateIfUpdating()
        {
            //Arrange
            var source = new FileDataSource {
                Id = newSourceId, InputStatus = SourceStatus.PendingExtraction
            };

            mockContext
            .Setup(context => context.GetFileDataSource(It.IsAny <Guid>(), It.IsAny <string>()))
            .Returns(source)
            .Verifiable();

            var uploadContract = new FileDataContract
            {
                SourceId         = newSourceId,
                OriginalFileName = "Original Name"
            };
            var fileStream = new MemoryStream(new byte[] { 100 });

            //Act
            CreateService().UpsertFileDataSource(uploadContract, fileStream);

            //Assert
            mockService
            .Verify(service => service.ValidateSource(It.Is <Guid>(guid => guid == newSourceId)));
        }
コード例 #2
0
        public void AdaptFile(IEnumerable <OrganizationFile> fromValue, IEnumerable <FileDataContract> toValue)
        {
            var fileDataContracts = toValue.ToList();
            var organizationFiles = fromValue.ToList();

            Guard.Against.Zero(organizationFiles.Count(), nameof(OrganizationFile));
            Guard.Against.Zero(fileDataContracts.Count(), nameof(FileDataContract));


            foreach (var organizationFile in organizationFiles)
            {
                var value = new FileDataContract
                {
                    Id                 = organizationFile.Id,
                    AllDataInFile      = organizationFile.AllDataInFile,
                    FileFormat         = organizationFile.FileFormat,
                    FileLocationOrigin = organizationFile.FileLocationOrigin,
                    FileMigrated       = organizationFile.FileMigrated.ToString(),
                    FileSize           = organizationFile.FileSize,
                    LocationToCopy     = organizationFile.LocationToCopy,
                    OrgCode            = organizationFile.OrgCode,
                    Status             = organizationFile.Status.ToString(),
                    FileDescription    = organizationFile.FileDescription,
                    FileMigratedOn     = organizationFile.FileMigratedOn
                };
                var dt = new[] { value };
                toValue = fileDataContracts.Concat(dt);
            }
        }
コード例 #3
0
        public void UpsertFileDataSourceMustCancelfInsertingAndSourceIdNotNull()
        {
            //Arrange
            var source = new FileDataSource {
                Id = newSourceId
            };

            mockContext
            .Setup(context => context.AddDataSource(It.IsAny <FileDataSource>()))
            .Returns(source)
            .Verifiable();

            var uploadContract = new FileDataContract
            {
                SourceId         = newSourceId,
                OriginalFileName = "Original Name"
            };

            //Act
            CreateService().UpsertFileDataSource(uploadContract, new MemoryStream());

            //Assert
            mockContext.Verify();
            mockService
            .Verify(service => service.CancelFileSourceExtraction(It.Is <Guid>(guid => guid == newSourceId)));
        }
コード例 #4
0
        public void UpsertFileDataSourceMustSetTheFileHashIfInserting()
        {
            //Arrange
            var source = new FileDataSource {
                Id = newSourceId
            };

            mockContext
            .Setup(context => context.AddDataSource(It.IsAny <FileDataSource>()))
            .Returns(source)
            .Verifiable();

            var uploadContract = new FileDataContract
            {
                SourceId         = newSourceId,
                OriginalFileName = "Original Name",
            };
            var fileStream = new MemoryStream(new byte[] { 100 });

            //Act
            CreateService().UpsertFileDataSource(uploadContract, fileStream);

            //Assert
            mockContext
            .Verify(context => context.AddDataSource(
                        It.Is <FileDataSource>(
                            dataSource =>
                            (dataSource.OriginalFileName == "Original Name") &&
                            (dataSource.FileHash) == "<686ÏNffi¢]¢€¡†\\-(t")));
        }
コード例 #5
0
        public void UpsertFileDataSourceMustCallAddDatasourceWhenInserting()
        {
            //Arrange
            var contract = new FileDataContract
            {
                ReferenceNotes   = "reference notes",
                OriginalFileName = "Original name",
                HandlerName      = "handler name"
            };

            mockContext
            .Setup(context => context.AddDataSource(It.Is <FileDataSource>(
                                                        source =>
                                                        (source.InputStatus == SourceStatus.PendingExtraction) &&
                                                        (source.ReferenceNotes == "reference notes") &&
                                                        (source.OriginalFileName == "Original name") &&
                                                        (source.HandlerName == "handler name") &&
                                                        (source.UserName == "TestUserName"))))
            .Returns(new FileDataSource {
                Id = newSourceId, InputStatus = SourceStatus.PendingExtraction
            })
            .Verifiable();

            //Act
            CreateService().UpsertFileDataSource(contract, new MemoryStream());

            //Assert
            mockContext.Verify();
        }
コード例 #6
0
        public FileDataContract Update(string key, FileDataContract data)
        {
            var currentFile = _repository.GetById(key);

            if (currentFile == null)
            {
                return(null);
            }

            var updateFile = _mapper.Map <File>(data);

            ValidationResult results = _validator.Validate(updateFile);

            if (!results.IsValid)
            {
                data.Error = new List <InfoDataContract>();
                foreach (var error in results.Errors)
                {
                    data.Error.Add(new InfoDataContract {
                        Field = error.PropertyName, Message = error.ErrorMessage
                    });
                }

                return(data);
            }

            currentFile.Status      = data.Status;
            currentFile.ProcessDate = DateTime.Now;

            var updatedFile = _repository.Update(currentFile);

            return(_mapper.Map <FileDataContract>(updatedFile));
        }
コード例 #7
0
        public static FileDataContract GetFileDataContract(string codOrg)
        {
            var dataContract = new FileDataContract(null, codOrg, "firstFile.xml", 555,
                                                    "xml", "c:/temp/teste", "y:/copy/file",
                                                    "Processed", false, null, new List <BsonDocument>()
                                                    );

            return(dataContract);
        }
コード例 #8
0
        /// <summary>
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public async Task <FileDataContract> GetOrganizationFileById(string id)
        {
            var match = await _repositoryInstance.GetByIdAsync(id);

            if (match == null)
            {
                return(null);
            }

            var toOrganizationFile = new FileDataContract();

            _adapter.AdaptFile(match, toOrganizationFile);

            return(toOrganizationFile);
        }
コード例 #9
0
        public void CanConvert(string identifier, int fileId, string fileSignature, string icon)
        {
            var value = new FileDataContract
            {
                Id = identifier,
                Icon = icon
            };

            var result = this.converter.Convert(value, null);
            Assert.NotNull(result);
            Assert.NotNull(result.IconFileUrl);
            Assert.Equal(fileId, result.FileId);
            Assert.Equal(fileSignature, result.FileSignature);
            Assert.Equal(icon, result.IconFileUrl.ToString());   
        }
コード例 #10
0
        public void CanConvert(string identifier, int fileId, string fileSignature, string icon)
        {
            var value = new FileDataContract
            {
                Id   = identifier,
                Icon = icon
            };

            var result = this.converter.Convert(value, null);

            Assert.NotNull(result);
            Assert.NotNull(result.IconFileUrl);
            Assert.Equal(fileId, result.FileId);
            Assert.Equal(fileSignature, result.FileSignature);
            Assert.Equal(icon, result.IconFileUrl.ToString());
        }
コード例 #11
0
        public void AdaptFile(OrganizationFile fromValue, FileDataContract toValue)
        {
            Guard.Against.Null(fromValue, nameof(OrganizationFile));
            Guard.Against.Null(toValue, nameof(FileDataContract));

            toValue.Id                 = fromValue.Id;
            toValue.AllDataInFile      = fromValue.AllDataInFile;
            toValue.FileFormat         = fromValue.FileFormat;
            toValue.FileLocationOrigin = fromValue.FileLocationOrigin;
            toValue.FileMigrated       = fromValue.FileMigrated.ToString();
            toValue.FileSize           = fromValue.FileSize;
            toValue.LocationToCopy     = fromValue.LocationToCopy;
            toValue.OrgCode            = fromValue.OrgCode;
            toValue.Status             = fromValue.Status.ToString();
            toValue.FileDescription    = fromValue.FileDescription;
            toValue.FileMigratedOn     = fromValue.FileMigratedOn;
        }
コード例 #12
0
        public virtual async Task <IHttpActionResult> UploadFile()
        {
            if (!Request.Content.IsMimeMultipartContent())
            {
                throw new Exception();
            }
            var provider = new MultipartMemoryStreamProvider();
            await Request.Content.ReadAsMultipartAsync(provider);

            var fileInfo = new FileDataContract {
                UserName = User.Identity.Name
            };
            Stream buffer = null;

            foreach (var content in provider.Contents)
            {
                var name = content.Headers.ContentDisposition.Name.Trim('\"');
                if (string.Equals(name, "referenceNotes", StringComparison.InvariantCultureIgnoreCase))
                {
                    fileInfo.ReferenceNotes = await content.ReadAsStringAsync();

                    continue;
                }
                if (string.Equals(name, "fileHandler", StringComparison.InvariantCultureIgnoreCase))
                {
                    fileInfo.HandlerName = await content.ReadAsStringAsync();

                    continue;
                }
                if (string.Equals(name, "mediaType", StringComparison.InvariantCultureIgnoreCase))
                {
                    fileInfo.MediaType = await content.ReadAsStringAsync();

                    continue;
                }
                if (!string.Equals(name, "file", StringComparison.InvariantCultureIgnoreCase))
                {
                    continue;
                }
                fileInfo.OriginalFileName = content.Headers.ContentDisposition.FileName.Trim('\"');
                buffer = await content.ReadAsStreamAsync();
            }
            var result = await service.UpsertFileDataSource(fileInfo, buffer);

            return(Ok(result));
        }
コード例 #13
0
 public virtual Task <SourceResultDataContract> UpsertFileDataSource(FileDataContract fileData, Stream stream)
 {
     return(Task.Run(() =>
     {
         lock (UpsertFileDataSourceLock)
         {
             var hash = GetHash(stream);
             var fileSource = Context.GetFileDataSource(fileData.SourceId, hash);
             if (fileSource == null)
             {
                 fileSource = new FileDataSource
                 {
                     OriginalFileName = fileData.OriginalFileName,
                     DateEdit = DateTime.Now,
                     InputStatus = SourceStatus.PendingExtraction,
                     ReferenceNotes = fileData.ReferenceNotes,
                     UserName = fileData.UserName,
                     HandlerName = fileData.HandlerName,
                     FileHash = hash,
                     MediaType = fileData.MediaType
                 };
                 fileSource = Context.AddDataSource(fileSource);
                 var newFileName = streamManager
                                   .StageStream(
                     fileSource.Id,
                     fileData.OriginalFileName,
                     stream);
                 fileSource.CurrentFileName = newFileName;
             }
             if (fileSource.InputStatus != SourceStatus.PendingExtraction)
             {
                 return DataContractError(fileSource.Id,
                                          DataSourceServiceResources.FileSourceIsNotPendingExtraction);
             }
             fileSource.OriginalFileName = fileData.OriginalFileName ?? fileSource.OriginalFileName;
             fileSource.HandlerName = fileData.HandlerName ?? fileSource.HandlerName;
             fileSource.MediaType = fileData.MediaType ?? fileSource.MediaType;
             fileSource.UserName = fileData.UserName;
             fileSource.DateEdit = DateTime.Now;
             fileSource.ReferenceNotes = fileData.ReferenceNotes ?? fileSource.ReferenceNotes;
             Context.UpdateDataSource(fileSource);
             return ValidateSource(fileSource.Id);
         }
     }));
 }
コード例 #14
0
ファイル: FilesController.cs プロジェクト: DAREAS/FileManager
        public ActionResult Post([FromBody] FileDataContract file, [FromServices] IFileOperations operations)
        {
            try
            {
                var result = operations.Insert(file);

                if (result.Error.Any())
                {
                    return(BadRequest(result.Error));
                }

                return(Created("", result));
            }
            catch (Exception ex)
            {
                return(BadRequest(new { Code = HttpContext.Response.StatusCode, Message = ex.Message }));
            }
        }
コード例 #15
0
        public void UpsertFileDataMustNotUpdateReferenceNotesIfNull()
        {
            //Arrange
            var source = new FileDataSource
            {
                Id               = newSourceId,
                InputStatus      = SourceStatus.PendingExtraction,
                HandlerName      = "oldHandlerName",
                OriginalFileName = "oldFileName",
                ReferenceNotes   = "oldReferenceNotes"
            };

            mockContext
            .Setup(context => context.GetFileDataSource(It.IsAny <Guid>(), It.IsAny <string>()))
            .Returns(source)
            .Verifiable();
            CreateService();
            mockService
            .Setup(service => service.ValidateSource(It.IsAny <Guid>()))
            .Returns((SourceResultDataContract)null)
            .Verifiable();
            var contract = new FileDataContract
            {
                SourceId         = newSourceId,
                HandlerName      = "newHandlerName",
                OriginalFileName = "newFileName",
            };

            //Act
            mockService.Object.UpsertFileDataSource(contract, new MemoryStream());

            //Assert
            mockService.Verify();
            mockContext.Verify();
            mockContext
            .Verify(context => context.UpdateDataSource(It.Is <FileDataSource>(
                                                            dataSource =>
                                                            (dataSource.Id == newSourceId) &&
                                                            (dataSource.UserName == "testUserName") &&
                                                            (dataSource.OriginalFileName == "newFileName") &&
                                                            (dataSource.HandlerName == "newHandlerName") &&
                                                            (dataSource.ReferenceNotes == "oldReferenceNotes"))));
        }
コード例 #16
0
        public void AdaptToOrganizationFile(FileDataContract fromFileData, TermDetailConfig configuration)
        {
            Guard.Against.Null(fromFileData, nameof(FileDataContract));
            Guard.Against.Null(configuration, nameof(TermDetailConfig));

            Enum.TryParse <StatusType>(fromFileData.Status, true, out var statusType);
            bool.TryParse(fromFileData.FileMigrated, out var fileMigrated);

            configuration.AddOrganizationFile("", fromFileData.OrgCode,
                                              fromFileData.FileDescription,
                                              fromFileData.FileSize,
                                              fromFileData.FileFormat,
                                              fromFileData.FileLocationOrigin,
                                              fromFileData.LocationToCopy,
                                              statusType,
                                              fileMigrated,
                                              fromFileData.FileMigratedOn,
                                              fromFileData.AllDataInFile, true);

            //var configTemp = item.TermDetailConfigs.GetTermDetailConfiguration(item.Id, item.CodOrg);
        }
コード例 #17
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="fileContract"></param>
        /// <returns></returns>
        public async Task CreateOrganizationFile(FileDataContract fileContract)
        {
            Guard.Against.Null(fileContract, nameof(fileContract));

            //retrieve OrganizationConfigurations based on orgCode
            //TODO change to verify type of debt
            var config = await _configRepositoryInstance.GetEqualField("OrgCode", fileContract.OrgCode);

            var configResult = config.FirstOrDefault();

            if (config == null)
            {
                throw new Exception("configuration of organization was not found.");
            }

            //Verify if exists document with the same name
            var allFilesDb = _repositoryInstance.GetEqualField("OrgCode", fileContract.OrgCode);
            var match      = allFilesDb.Result.FirstOrDefault(x => x.FileDescription.Trim().Equals(fileContract.FileDescription));


            if (match == null)
            {
                Enum.TryParse <StatusType>(fileContract.Status, true, out var status);
                Boolean.TryParse(fileContract.FileMigrated, out var fileMigrated);

                var org = new OrganizationFile(string.Empty, fileContract.FileDescription,
                                               fileContract.FileSize, fileContract.FileFormat, fileContract.FileLocationOrigin,
                                               fileContract.LocationToCopy, status, fileMigrated,
                                               null, configResult, fileContract.AllDataInFile);

                _repositoryInstance.Add(org);

                fileContract.Id = org.Id;
            }
            else
            {
                throw new InvalidOperationException(
                          $"Can not save File '{match.FileDescription + " and " + match.OrgCode}' already exist.");
            }
        }
コード例 #18
0
        public FileDataContract Insert(FileDataContract data)
        {
            var newFile = _mapper.Map <File>(data);

            ValidationResult results = _validator.Validate(newFile);

            if (!results.IsValid)
            {
                data.Error = new List <InfoDataContract>();
                foreach (var error in results.Errors)
                {
                    data.Error.Add(new InfoDataContract {
                        Field = error.PropertyName, Message = error.ErrorMessage
                    });
                }

                return(data);
            }

            var fileResult = _repository.Insert(newFile);

            return(_mapper.Map <FileDataContract>(fileResult));
        }
コード例 #19
0
        public void UpsertFilesourceMustUpdateCurrentFileNameWithTheNewName()
        {
            //Arrange
            var source = new FileDataSource {
                Id = newSourceId, InputStatus = SourceStatus.PendingExtraction
            };

            mockStreamManager
            .Setup(manager => manager.StageStream(
                       It.Is <Guid>(guid => guid == newSourceId),
                       It.Is <string>(s => s == "Original Name"),
                       It.IsAny <Stream>()))
            .Returns("NewFileName")
            .Verifiable();
            mockContext
            .Setup(context => context.AddDataSource(It.IsAny <FileDataSource>()))
            .Returns(source);

            var uploadContract = new FileDataContract
            {
                SourceId         = newSourceId,
                OriginalFileName = "Original Name"
            };

            //Act
            CreateService().UpsertFileDataSource(uploadContract, new MemoryStream());

            //Assert
            mockService.Verify();
            mockStreamManager.Verify();
            mockContext.Verify(context => context.UpdateDataSource(It.Is <FileDataSource>(
                                                                       dataSource =>
                                                                       (dataSource.Id == newSourceId) &&
                                                                       (dataSource.InputStatus == SourceStatus.PendingExtraction) &&
                                                                       (dataSource.CurrentFileName == "NewFileName"))), Times.Once);
        }
コード例 #20
0
ファイル: FilesController.cs プロジェクト: DAREAS/FileManager
        public ActionResult Put(string idFile, [FromBody] FileDataContract file, [FromServices] IFileOperations operations)
        {
            try
            {
                var result = operations.Update(idFile, file);

                if (result == null)
                {
                    return(OkWithSuccess(result, System.Net.HttpStatusCode.NotFound));
                }

                if (result.Error.Any())
                {
                    return(BadRequest(result.Error));
                }


                return(OkWithSuccess(result));
            }
            catch (Exception ex)
            {
                return(BadRequest(new { Code = HttpContext.Response.StatusCode, Message = ex.Message }));
            }
        }