public override void GetFilesFromSource(CertificateTask task, IList <CertificateFile> files)
        {
            var supplierId = task.DocumentLine.Document.FirmCode;

            var config = WaybillProtekHandler.Configs.FirstOrDefault(c => c.SupplierId == supplierId);

            if (config == null)
            {
                throw new Exception(String.Format("Не найдена конфигурация для получения сертификатов от поставщика № {0}", supplierId));
            }

            new WaybillProtekHandler().WithService(config.Url, s => {
                foreach (var id in task.DocumentLine.ProtekDocIds)
                {
                    var response = s.getSertImages(new getSertImages(config.ClientId, config.InstanceId, id.DocId));
                    var index    = 1;
                    foreach (var sertImage in [email protected])
                    {
                        var tempFile = Path.GetTempFileName();
                        File.WriteAllBytes(tempFile, sertImage.image);
                        files.Add(new CertificateFile(tempFile, id.DocId + "-" + index++)
                        {
                            Extension = ".tif"
                        });
                    }
                }
            });

            if (files.Count == 0)
            {
                task.DocumentLine.CertificateError = "Поставщик не предоставил ни одного сертификата";
            }
        }
        public override void GetFilesFromSource(CertificateTask task, IList <CertificateFile> files)
        {
            var client = new WebClient();
            var uri    = new Uri(task.CertificateSource.LookupUrl);

            client.Credentials = Util.GetCredentials(uri);
            var data = client.UploadValues(uri, new NameValueCollection {
                { "Code", task.DocumentLine.Code },
                { "SerialNumber", task.DocumentLine.SerialNumber },
            });

            var doc = XDocument.Load(new MemoryStream(data));

            foreach (var cert in doc.XPathSelectElements("/ArrayOfCert/Cert"))
            {
                var fileUri   = (string)cert.XPathSelectElement("Uri");
                var name      = (string)cert.XPathSelectElement("Name");
                var localFile = Path.GetTempFileName();
                Log.DebugFormat("Будет производиться закачка файла {0} в локальный файл {1}", fileUri, localFile);
                client.DownloadFile(fileUri, localFile);
                files.Add(new CertificateFile(localFile, fileUri, Path.GetFileName(fileUri))
                {
                    Note = name
                });
            }

            if (files.Count == 0)
            {
                task.DocumentLine.CertificateError = "Поставщик не предоставил ни одного сертификата";
            }
        }
        private void CheckErrors(CertificateTask task, MemoryAppender memoryAppender, TestCertificateSourceHandler handler, uint errorCount, bool idEquals = false)
        {
            var firstEvents = memoryAppender.GetEvents();

            var firstErrors = firstEvents.Where(item => item.Level >= Level.Warn);

            Assert.That(firstErrors.Count(), Is.EqualTo(errorCount), firstErrors.Implode(e => e.MessageObject));

            //кол-во ошибок должно быть равно 1
            Assert.That(handler.Errors.Count, Is.EqualTo(1));

            var info = handler.Errors[task.GetErrorId()];

            Assert.That(info.ErrorCount, Is.EqualTo(errorCount));
            Assert.That(info.Exception.Message, Is.StringStarting("Возникла ошибка при обработке задачи: "));
            if (idEquals)
            {
                Assert.That(info.Task.Id, Is.EqualTo(task.Id));
            }
            Assert.That(info.Task.CertificateSource.Id, Is.EqualTo(task.CertificateSource.Id));
            Assert.That(info.Task.CatalogProduct.Id, Is.EqualTo(task.CatalogProduct.Id));
            Assert.That(info.Task.SerialNumber, Is.EqualTo(task.SerialNumber));

            //Задача должна быть удалена из базы данных
            var deletedTask = CertificateTask.Queryable.FirstOrDefault(t => t.Id == task.Id);

            Assert.That(deletedTask, Is.Null);
        }
        private void AddFiles(CertificateTask task,
                              string certificatesPath,
                              string certificateFilenameMask,
                              IList <CertificateFile> list)
        {
            if (String.IsNullOrEmpty(certificateFilenameMask))
            {
                return;
            }

            if (certificateFilenameMask.Length < 5)
            {
                Log.WarnFormat("Для строки документа {0} загрузка сертификатов производиться не будет тк длинна маски '{1}' меньше 5",
                               task.DocumentLine.Id,
                               certificateFilenameMask);
                return;
            }

            var files = Directory.GetFiles(certificatesPath, certificateFilenameMask + "*");

            foreach (var file in files)
            {
                var tempFile = Path.GetTempFileName();
                File.Copy(file, tempFile, true);
                list.Add(new CertificateFile(tempFile, Path.GetFileName(file), file)
                {
                    Extension = ".tif"
                });
            }
        }
Exemple #5
0
        public override void GetFilesFromSource(CertificateTask task, IList <CertificateFile> files)
        {
            var maps = Session.Query <CertificateSourceCatalog>()
                       .Where(c => c.SerialNumber == task.SerialNumber && c.SupplierCode == task.DocumentLine.Code && c.CertificateSource == task.CertificateSource)
                       .ToArray();

            if (maps.Length == 0)
            {
                task.DocumentLine.CertificateError = "Нет записи в таблице перекодировки";
                return;
            }
            foreach (var map in maps.Where(m => !String.IsNullOrWhiteSpace(m.OriginFilePath)))
            {
                var path = map.OriginFilePath;
                if (path[0] == Path.DirectorySeparatorChar)
                {
                    path = path.Slice(1, -1);
                }
                var file = Path.Combine(new Uri(task.CertificateSource.LookupUrl).LocalPath, path);
                if (File.Exists(file))
                {
                    var tmp = Cleaner.TmpFile();
                    File.Copy(file, tmp, true);
                    files.Add(new CertificateFile(tmp, map.OriginFilePath, map.OriginFilePath, task.CertificateSource)
                    {
                        Note = map.Note
                    });
                }
                else
                {
                    task.DocumentLine.CertificateError = String.Format("Файл сертификата '{0}' не найден на ftp АналитФармация", file);
                }
            }
        }
        public void Download_source()
        {
            var testProduct = new TestProduct("Тестовый продукт");

            session.Save(testProduct);
            var product = Product.Find(testProduct.Id);

            var source = new KatrenSource();

            var certificateSource = new CertificateSource();

            certificateSource.SourceClassName = source.GetType().Name;
            session.Save(certificateSource);

            var line = new DocumentLine {
                ProductEntity = product,
                SerialNumber  = "012011",
            };

            var sourceCatalog = new CertificateSourceCatalog {
                CertificateSource    = certificateSource,
                SerialNumber         = line.SerialNumber,
                CatalogProduct       = product.CatalogProduct,
                SupplierCode         = "34266440",
                SupplierProducerCode = "13483667",
                OriginFilePath       = KatrenSource.ToOriginFileName(0x1B9EFC8),
            };

            session.Save(sourceCatalog);

            var task  = new CertificateTask(certificateSource, line);
            var files = source.GetCertificateFiles(task, null);

            Assert.That(files.Count, Is.EqualTo(4));
        }
        public void AccessToDeletedTask()
        {
            Clean();

            var certificateSource = CreateRealSourceForSupplier(supplier);
            var serialNumber      = Path.GetRandomFileName();
            var catalog           = TestCatalogProduct.Queryable.First();
            var product           = TestProduct.Queryable.First(p => p.CatalogProduct == catalog);

            var documentLine = CreateBodyLine(serialNumber, product);

            var realDocumentLine = Document.Find(documentLine.Waybill.Id).Lines[0];

            var task = new CertificateTask(certificateSource, realDocumentLine);

            task.Save();

            Assert.That(task.Id, Is.GreaterThan(0));
            task.Delete();

            Assert.That(task.Id, Is.GreaterThan(0));
            Assert.That(task.CertificateSource, Is.Not.Null);
            Assert.That(task.CatalogProduct, Is.Not.Null);
            Assert.That(task.SerialNumber, Is.Not.Null.Or.Empty);

            var deletedTask = CertificateTask.Queryable.FirstOrDefault(t => t.Id == task.Id);

            Assert.That(deletedTask, Is.Null);
            Assert.That(task.SerialNumber, Is.Not.Null.Or.Empty);
        }
Exemple #8
0
        public override void GetFilesFromSource(CertificateTask task, IList <CertificateFile> files)
        {
            var certificatesPath = task.GetLocalPath();

            if (!Directory.Exists(certificatesPath))
            {
                Log.WarnFormat("Директория {0} для задачи сертификата {1} не существует",
                               certificatesPath,
                               task);
                return;
            }

            var foundFiles = task.DocumentLine.CertificateFilename
                             .Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries)
                             .Select(n => Path.Combine(certificatesPath, n))
                             .Where(f => File.Exists(f))
                             .Select(f => new CertificateFile(CopyToTemp(f), Path.GetFileName(f), Path.GetFileName(f)))
                             .ToList();

            foundFiles.Each(files.Add);
            if (files.Count == 0)
            {
                task.DocumentLine.CertificateError = "Файл сертификата не найден на ftp АналитФармация";
            }
        }
Exemple #9
0
 private void ClearError(CertificateTask certificateTask)
 {
     if (Errors.ContainsKey(certificateTask.GetErrorId()))
     {
         Errors.Remove(certificateTask.GetErrorId());
     }
 }
Exemple #10
0
        public IList <CertificateFile> GetCertificateFiles(CertificateTask task, ISession session)
        {
            var result = new List <CertificateFile>();

            Session = session;

            try {
                GetFilesFromSource(task, result);
            }
            catch {
                Cleaner.Dispose();

                //Удаляем временные закаченные файлы
                result.ForEach(f => {
                    try {
                        if (File.Exists(f.LocalFile))
                        {
                            File.Delete(f.LocalFile);
                        }
                    }
                    catch (Exception exception) {
                        Log.WarnFormat("Ошибка при удалении временного файла {0} по задаче {1}: {2}", f.LocalFile, task, exception);
                    }
                });
                throw;
            }
            finally {
                Session = null;
            }

            return(result);
        }
Exemple #11
0
        public override void GetFilesFromSource(CertificateTask task, IList <CertificateFile> files)
        {
            var catalogId = task.DocumentLine.ProductEntity.CatalogProduct.Id;
            var catalogs  = GetSourceCatalog(catalogId, task.SerialNumber);

            if (catalogs.Count == 0)
            {
                task.DocumentLine.CertificateError = "Нет записи в таблице перекодировки";
                return;
            }

            foreach (var certificateSourceCatalog in catalogs)
            {
                var filename = certificateSourceCatalog.OriginFilePath;
                var mask     = String.Format("{0}*{1}", Path.GetFileNameWithoutExtension(filename), Path.GetExtension(filename));

                var uri = new Uri(task.CertificateSource.LookupUrl);
                var dir = Path.Combine(Path.GetDirectoryName(uri.AbsolutePath) ?? "",
                                       Path.GetDirectoryName(certificateSourceCatalog.OriginFilePath) ?? "");
                using (var ftpClient = new FTP_Client()) {
                    ftpClient.PassiveMode = true;
                    ftpClient.Connect(uri.Host, uri.Port);
                    var credentials = Util.GetCredentials(uri);
                    if (credentials != null)
                    {
                        ftpClient.Authenticate(credentials.UserName, credentials.Password);
                    }
                    else
                    {
                        ftpClient.Authenticate("anonymous", "");
                    }
                    if (!String.IsNullOrEmpty(dir))
                    {
                        ftpClient.SetCurrentDir(dir);
                    }
                    var ftpFiles        = ftpClient.GetList();
                    var filesToDownload = ftpFiles.Tables["DirInfo"]
                                          .AsEnumerable()
                                          .Where(r => !Convert.ToBoolean(r["IsDirectory"]))
                                          .Select(r => r["Name"].ToString())
                                          .Where(n => FileHelper.CheckMask(n, mask))
                                          .ToList();
                    foreach (var file in filesToDownload)
                    {
                        var tempFileName = Path.GetTempFileName();
                        ftpClient.ReceiveFile(file, tempFileName);
                        files.Add(new CertificateFile(
                                      tempFileName,
                                      certificateSourceCatalog.OriginFilePath,
                                      file,
                                      task.CertificateSource));
                    }
                }
            }

            if (files.Count == 0)
            {
                task.DocumentLine.CertificateError = "Файл сертификата не найден на ftp поставщика";
            }
        }
        private CertificateTask SuccessProcessCertificate(out string supplierCertificatesDir, out string certificateFile)
        {
            var certificateSource = CreateRealSourceForSupplier(supplier);
            var serialNumber      = Path.GetRandomFileName();
            var catalog           = TestCatalogProduct.Queryable.First();
            var product           = TestProduct.Queryable.First(p => p.CatalogProduct == catalog);

            supplierCertificatesDir = Path.Combine(Settings.Default.FTPOptBoxPath, supplier.Id.ToString().PadLeft(3, '0'), "Certificats");
            if (Directory.Exists(supplierCertificatesDir))
            {
                Directory.Delete(supplierCertificatesDir, true);
            }
            Directory.CreateDirectory(supplierCertificatesDir);

            certificateFile = Path.GetRandomFileName();
            File.WriteAllText(Path.Combine(supplierCertificatesDir, certificateFile), "Это тестовый сертификат", Encoding.GetEncoding(1251));

            var documentLine     = CreateBodyLine(serialNumber, product);
            var realDocumentLine = Document.Find(documentLine.Waybill.Id).Lines[0];
            var task             = new CertificateTask(certificateSource, realDocumentLine);

            task.Save();

            documentLine.CertificateFilename = Path.GetFileNameWithoutExtension(certificateFile);
            documentLine.Save();

            Assert.That(task.Id, Is.GreaterThan(0));

            ProcessTestHandler();
            return(task);
        }
 protected override CertificateSource DetectSource(CertificateTask certificateTask)
 {
     if (OnSource != null)
     {
         return(OnSource(certificateTask));
     }
     return(base.DetectSource(certificateTask));
 }
            public IList <CertificateFile> GetCertificateFiles(CertificateTask task, ISession session)
            {
                var list = new List <CertificateFile>();

                var tempFile = Path.GetTempFileName();

                list.Add(new CertificateFile(tempFile, Path.GetFileNameWithoutExtension(tempFile), Path.GetFileName(tempFile), task.CertificateSource));

                return(list);
            }
        public void Setup()
        {
            source = new NormanSource();
            var line = new DocumentLine {
                CertificateFilename = "109127-1570912-r-1.jpg",
                ProductEntity       = new Product()
            };

            task  = new CertificateTask(new CertificateSource(), line);
            files = new List <CertificateFile>();
        }
        private void SaveAndProcess(CertificateTask task, TestCertificateSourceHandler handler)
        {
            if (!session.Transaction.IsActive)
            {
                session.BeginTransaction();
            }

            task.Save();
            session.Transaction.Commit();
            session.Flush();
            handler.ProcessData();
        }
        public void DeleteLocalFilesOnError()
        {
            var source = new TestCertifcateSource();
            var task   = new CertificateTask();

            try {
                source.GetCertificateFiles(task, session);
                Assert.Fail("Не возникло исключение NotImplementedException");
            }
            catch (NotImplementedException) {
            }

            Assert.That(source.LocalFiles.TrueForAll(f => !File.Exists(f)), "Не должно существовать локальных файлов");
        }
        public void Ignore_duplicate_task()
        {
            Clean();

            string dir;
            string file;
            var    task          = SuccessProcessCertificate(out dir, out file);
            var    duplicateTask = new CertificateTask(task.CertificateSource, task.DocumentLine);

            session.Save(duplicateTask);

            ProcessTestHandler();

            session.Refresh(task.DocumentLine);
            Assert.That(task.DocumentLine.Certificate.CertificateFiles.Count, Is.EqualTo(1));
        }
Exemple #19
0
        private CertificateTaskErrorInfo FindError(CertificateTask task, Exception exception)
        {
            CertificateTaskErrorInfo result;

            if (Errors.ContainsKey(task.GetErrorId()))
            {
                result = Errors[task.GetErrorId()];
                result.UpdateError(exception);
            }
            else
            {
                result = new CertificateTaskErrorInfo(task, exception);
                Errors[task.GetErrorId()] = result;
            }

            return(result);
        }
        public void DeleteTempFolderTest()
        {
            var rostaSource = new RostaCertificateSource();
            var product     = session.Query <Product>().First(p => p.CatalogProduct != null);
            var documentLog = new TestDocumentLog {
                Supplier     = _testSupplier,
                Client       = _testUser.Client,
                DocumentType = DocumentType.Waybill,
                LogTime      = DateTime.Now,
                FileName     = Path.GetRandomFileName() + ".txt"
            };
            var document = new TestWaybill(documentLog);

            session.Save(document);

            var realDocument = session.Load <Document>(document.Id);

            var task = new CertificateTask {
                SerialNumber   = "123",
                CatalogProduct = product.CatalogProduct,
            };

            task.CertificateSource = _source;
            task.DocumentLine      = new DocumentLine {
                Code          = "000002",
                SerialNumber  = "C392764",
                Document      = realDocument,
                ProductEntity = product
            };
            Save(task.DocumentLine);
            Save(task);

            var certificsteCatalog = new CertificateSourceCatalog {
                CertificateSource = _source,
                SerialNumber      = task.DocumentLine.SerialNumber,
                SupplierCode      = task.DocumentLine.Code,
                OriginFilePath    = "005/0052602p-0.gif",
                CatalogProduct    = product.CatalogProduct
            };

            Save(certificsteCatalog);
            Reopen();
            rostaSource.GetCertificateFiles(task, session);
            // Проверяем, что временная папка удалена
            Assert.That(Directory.Exists(rostaSource.TMPDownloadDir), Is.False);
        }
        private CertificateTask CreateTask()
        {
            TestCertifcateSource.GetFilesFromSourceAction = null;
            TestCertifcateSource.CertificateExistsAction  = null;
            CertificateSource.Assembly = typeof(TestCertifcateSource).Assembly;

            var source = CreateSourceForSupplier(supplier, "TestCertifcateSource");
            var line   = CreateBodyLine();

            var task = new CertificateTask();

            task.CertificateSource = source;
            task.CatalogProduct    = session.Load <Catalog>(line.CatalogProduct.CatalogProduct.Id);
            task.SerialNumber      = DocumentLine.EmptySerialNumber;
            task.DocumentLine      = session.Load <DocumentLine>(line.Id);
            task.Save();
            return(task);
        }
Exemple #22
0
        private void OnTaskError(CertificateTask task, Exception exception)
        {
            var errorInfo = FindError(task, exception);

            if (errorInfo.NeedSendError())
            {
                _logger.ErrorFormat("Ошибка при обработки задачи для сертификата {0} : {1}", task, exception);
            }
            else
            {
                _logger.WarnFormat("Ошибка при обработки задачи для сертификата {0} : {1}", task, exception);
            }
            using (new TransactionScope()) {
                task.DocumentLine.CertificateError = exception.ToString();
                ActiveRecordMediator.Save(task.DocumentLine);
                task.Delete();
            }
        }
Exemple #23
0
        public void SimpleCreateTask()
        {
            var certificateSource = CreateSourceForSupplier();
            var documentLine      = CreateBodyLine();
            var catalog           = TestCatalogProduct.Queryable.First();
            var serialNumber      = Path.GetRandomFileName();
            var realDocumentLine  = Document.Find(documentLine.Waybill.Id).Lines[0];

            var task = new CertificateTask();

            using (new TransactionScope()) {
                task.CertificateSource = certificateSource;
                task.CatalogProduct    = Catalog.Find(catalog.Id);
                task.SerialNumber      = serialNumber;
                task.DocumentLine      = realDocumentLine;
                task.Save();
            }

            Assert.That(task.Id, Is.GreaterThan(0));
        }
            public override void GetFilesFromSource(CertificateTask task, IList <CertificateFile> files)
            {
                if (GetFilesFromSourceAction != null)
                {
                    GetFilesFromSourceAction(task, files);
                    return;
                }

                files.Add(new CertificateFile(Path.GetTempFileName(), "1"));
                files.Add(new CertificateFile(Path.GetTempFileName(), "1"));
                files.Each(f => {
                    LocalFiles.Add(f.LocalFile);
                    if (!File.Exists(f.LocalFile))
                    {
                        File.WriteAllText(f.LocalFile, "this is test text");
                    }
                });

                throw new NotImplementedException();
            }
        public override void GetFilesFromSource(CertificateTask task, IList <CertificateFile> files)
        {
            var certificatesPath = task.GetLocalPath();

            if (!Directory.Exists(certificatesPath))
            {
                Log.WarnFormat("Директория {0} для задачи сертификата {1} не существует",
                               certificatesPath,
                               task);
                return;
            }

            AddFiles(task, certificatesPath, task.DocumentLine.CertificateFilename, files);
            AddFiles(task, certificatesPath, task.DocumentLine.ProtocolFilemame, files);
            AddFiles(task, certificatesPath, task.DocumentLine.PassportFilename, files);

            if (files.Count == 0)
            {
                task.DocumentLine.CertificateError = "Файл сертификата не найден на ftp поставщика";
            }
        }
        public void Check_protek_source()
        {
            var source = new ProtekSource();
            var task   = new CertificateTask();

            task.DocumentLine = new DocumentLine {
                ProtekDocIds = new List <ProtekDoc> {
                    new ProtekDoc {
                        DocId = 4938262
                    }
                }
            };
            var files = source.GetCertificateFiles(task, null);

            Assert.That(files.Count, Is.GreaterThan(0));
            var file = files[0];

            Assert.That(file.ExternalFileId, Is.Not.Null);
            Assert.That(file.LocalFile, Is.Not.Null);
            Assert.That(file.Extension, Is.EqualTo(".tif"));
        }
        public void Load_certificates()
        {
            var source = new NadezhdaFarmCertificateSource();
            var line   = new DocumentLine {
                ProductEntity       = new Product(),
                CertificateFilename = "1473052_1_1.tif;1072321_1_0.tif;"
            };
            var sourceConfig = new CertificateSource {
                FtpSupplier = new Supplier {
                    Id = 1
                }
            };
            var task = new CertificateTask(sourceConfig, line);

            TestHelper.InitFiles(task.GetLocalPath(), new[] { "1473052_1_1.tif" });

            Assert.IsTrue(source.CertificateExists(line));
            var files = new List <CertificateFile>();

            source.GetFilesFromSource(task, files);
            Assert.AreEqual(1, files.Count, task.DocumentLine.CertificateError);
        }
        public override void GetFilesFromSource(CertificateTask task, IList <CertificateFile> files)
        {
            var certificatesPath = task.GetLocalPath();

            if (!Directory.Exists(certificatesPath))
            {
                Log.WarnFormat("Директория {0} для задачи сертификата {1} не существует",
                               certificatesPath,
                               task);
                return;
            }

            if (!String.IsNullOrEmpty(task.DocumentLine.CertificateFilename))
            {
                AddFile(certificatesPath, task.DocumentLine.CertificateFilename, files);
            }

            if (files.Count == 0)
            {
                task.DocumentLine.CertificateError = "Файл сертификата не найден на ftp АналитФармация";
            }
        }
Exemple #29
0
        public void TestGetFiles()
        {
            var rostaSource = new RostaCertificateSource();
            var task        = new CertificateTask();

            task.CertificateSource = _source;
            task.DocumentLine      = new DocumentLine {
                Code         = "000002",
                SerialNumber = "C392764"
            };

            var catalog = new CertificateSourceCatalog {
                CertificateSource = _source,
                SerialNumber      = task.DocumentLine.SerialNumber,
                SupplierCode      = task.DocumentLine.Code,
                OriginFilePath    = "005/0052602p-0.gif"
            };

            catalog.Save();

            catalog = new CertificateSourceCatalog {
                CertificateSource = _source,
                SerialNumber      = task.DocumentLine.SerialNumber,
                SupplierCode      = task.DocumentLine.Code,
                OriginFilePath    = "005/0052602pd-0.gif"
            };
            catalog.Save();

            var files = rostaSource.GetCertificateFiles(task, session);

            Assert.That(files.Count, Is.EqualTo(2));
            var file = files[0];

            Assert.That(File.Exists(file.LocalFile), Is.True, "файл не существует {0}", file.LocalFile);
            Assert.That(file.ExternalFileId, Is.EqualTo(@"005/0052602p-0.gif"));
            Assert.That(file.OriginFilename, Is.EqualTo(@"0052602p-0.gif"));
            Assert.That(file.Extension, Is.EqualTo(".GIF").IgnoreCase);
        }
Exemple #30
0
        public void Check_sia_source()
        {
            var source = new SiaSource();
            var task   = new CertificateTask {
                CertificateSource = new CertificateSource {
                    LookupUrl = "http://*****:*****@online.penza.siaint.ru/Home/GetCert"
                }
            };

            task.DocumentLine = new DocumentLine {
                Code         = "84029",
                SerialNumber = "0020214"
            };
            var files = source.GetCertificateFiles(task, null);

            Assert.That(files.Count, Is.GreaterThan(0));
            var file = files[0];

            Assert.That(File.Exists(file.LocalFile), Is.True, "файл не существует {0}", file.LocalFile);
            Assert.That(file.ExternalFileId, Is.EqualTo(@"http://online.penza.siaint.ru/Home/GetFile?NaimFile=DOCS\2014\4\5\707504403_1.GIF"));
            Assert.That(file.OriginFilename, Is.EqualTo(@"707504403_1.GIF"));
            Assert.That(file.Extension, Is.EqualTo(".GIF"));
        }