public void Ignore_document_for_wrong_address() { var begin = DateTime.Now; var supplier = TestSupplier.CreateNaked(session); var from = String.Format("{0}@test.test", supplier.Id); PrepareSupplier(supplier, from); var message = ImapHelper.BuildMessageWithAttachments( String.Format("{0}@waybills.analit.net", "1"), from, new[] { @"..\..\Data\Waybills\bi055540.DBF" }); var bytes = message.ToByteData(); ImapHelper.StoreMessage( Settings.Default.TestIMAPUser, Settings.Default.TestIMAPPass, Settings.Default.IMAPSourceFolder, bytes); this.supplier = supplier; Process(); var docs = session.Query <TestDocumentLog>().Where(d => d.LogTime > begin).ToList(); Assert.That(docs.Count, Is.EqualTo(0)); }
public void ProcessReaderException() { ImapHelper.ClearImapFolder(Settings.Default.TestIMAPUser, Settings.Default.TestIMAPPass, Settings.Default.IMAPSourceFolder); ImapHelper.StoreMessage(@"..\..\Data\Unparse.eml"); var imapReader = MockRepository.GenerateStub <IIMAPReader>(); imapReader.Stub(s => s.IMAPAuth(null)) .IgnoreArguments() .Do(new Action <IMAP_Client>(client => client.Authenticate(Settings.Default.TestIMAPUser, Settings.Default.TestIMAPPass))); var exception = new Exception("ошибка при разборе письма в reader'е"); imapReader.Stub(s => s.ProcessMime(null)) .IgnoreArguments() .Do(new Action <Mime>(mime => { throw exception; })); var handler = new IMAPHandler(imapReader); handler.ProcessIMAPFolder(); imapReader.AssertWasCalled(r => r.IMAPAuth(Arg <IMAP_Client> .Is.Anything)); imapReader.AssertWasCalled(r => r.PingReader()); imapReader.AssertWasCalled(r => r.ProcessMime(Arg <Mime> .Is.Anything)); imapReader.AssertWasNotCalled(r => r.ProcessBrokenMessage(Arg <IMAP_FetchItem> .Is.Anything, Arg <IMAP_FetchItem[]> .Is.Anything, Arg <Exception> .Is.Equal(exception))); var existsMessages = ImapHelper.CheckImapFolder(Settings.Default.TestIMAPUser, Settings.Default.TestIMAPPass, Settings.Default.IMAPSourceFolder); Assert.That(existsMessages.Count, Is.EqualTo(1), "Письмо было удалено сразу же после возникнования ошибок"); }
public void Process_message_if_from_contains_more_than_one_address() { client = TestClient.CreateNaked(session); address = client.Addresses[0]; supplier = TestSupplier.CreateNaked(session); supplier.WaybillSource.EMailFrom = String.Format("edata{0}@msk.katren.ru", supplier.Id); supplier.WaybillSource.SourceType = TestWaybillSourceType.Email; session.Save(supplier); FileHelper.DeleteDir(Settings.Default.DocumentPath); ImapHelper.ClearImapFolder(); var mime = PatchTo(@"..\..\Data\Unparse.eml", String.Format("{0}@waybills.analit.net", address.Id), String.Format("edata{0}@msk.katren.ru,[email protected]", supplier.Id)); ImapHelper.StoreMessage(mime.ToByteData()); Process(); var files = GetFileForAddress(DocType.Waybill); Assert.That(files.Length, Is.EqualTo(1), "не обработали документ"); }
public static StoreArgs ParseStoreArgs(string args) { string[] parts = args.Split(new char[] { ' ' }, 3); if (parts.Length != 3) { throw new Exception("Error in arguments."); } var result = new StoreArgs { Ranges = ImapHelper.GetSequenceRange(parts[0]) }; switch (parts[1].ToUpperInvariant()) { case "FLAGS": result.DataItem = "FLAGS"; result.Silent = false; break; case "FLAGS.SILENT": result.DataItem = "FLAGS"; result.Silent = true; break; case "+FLAGS": result.DataItem = "+FLAGS"; result.Silent = false; break; case "+FLAGS.SILENT": result.DataItem = "+FLAGS"; result.Silent = true; break; case "-FLAGS": result.DataItem = "-FLAGS"; result.Silent = false; break; case "-FLAGS.SILENT": result.DataItem = "-FLAGS"; result.Silent = false; break; default: throw new Exception("Error in arguments."); } if (!(parts[2].StartsWith("(") && parts[2].EndsWith(")"))) { throw new Exception("Error in arguments."); } var spl = parts[2].Substring(1, parts[2].Length - 2).Split(' '); result.Flags = new HashSet <string>(spl.Select(o => o.TrimStart('\\'))).ToArray(); return(result); }
public void NotFoundError() { var supplier = TestSupplier.CreateNaked(session); var from = String.Format("{0}@supplier.test", supplier.Id); PrepareSupplier(supplier, from); var message = ImapHelper.BuildMessageWithAttachments( "test NotFound", "body NotFound", new string[] { "*****@*****.**" }, new[] { from }, null); var handler = new DocSourceHandlerForTesting(Settings.Default.TestIMAPUser, Settings.Default.TestIMAPPass); try { handler.CheckMime(message); Assert.Fail("Должно было возникнуть исключение MiniMailOnEmptyRecipientsException"); } catch (MiniMailOnEmptyRecipientsException exception) { Assert.That(exception.Template, Is.EqualTo(ResponseTemplate.MiniMailOnEmptyRecipients)); Assert.That(exception.CauseList, Is.EqualTo("[email protected] : " + RecipientStatus.NotFound.GetDescription())); SendErrorToProvider(handler, exception, message); } }
private object ToRightDataType(string value, SearchDataType type) { if (string.IsNullOrEmpty(value)) { return(null); } if (type == SearchDataType.Text) { return(value); } else if (type == SearchDataType.Number) { int intvalue = 0; if (int.TryParse(value, out intvalue)) { return(intvalue); } else { return(null); } } else if (type == SearchDataType.Date) { return(ImapHelper.ParseRfc2822Time(value)); } return(null); }
public void CheckGetSHA256Hash() { //пустое письмо var mime = new Mime(); var hash = mime.GetSHA256Hash(); Assert.IsEmpty(hash); //установлена тема письма mime.MainEntity.Subject = "test subject"; hash = mime.GetSHA256Hash(); Assert.IsNotEmpty(hash); //установлено тело письма как текст mime = ImapHelper.BuildMessageWithAttachments("", "test body", new string[] { "*****@*****.**" }, new string[] { "*****@*****.**" }, null); hash = mime.GetSHA256Hash(); Assert.IsNotEmpty(hash); //установлено тело письма как html mime = ImapHelper.BuildMessageWithAttachments("", "test body", new string[] { "*****@*****.**" }, new string[] { "*****@*****.**" }, null); var hmtlEntity = mime.MainEntity.ChildEntities[mime.MainEntity.ChildEntities.Count - 1]; hmtlEntity.DataText = null; hmtlEntity.ContentType = MediaType_enum.Text_html; hmtlEntity.DataText = "test body html"; hash = mime.GetSHA256Hash(); Assert.IsNotEmpty(hash); //установлено все как строки с пробелами mime = ImapHelper.BuildMessageWithAttachments("", "test body", new string[] { "*****@*****.**" }, new string[] { "*****@*****.**" }, null); mime.MainEntity.Subject = " "; mime.MainEntity.ChildEntities[mime.MainEntity.ChildEntities.Count - 1].DataText = " "; hash = mime.GetSHA256Hash(); Assert.IsEmpty(hash); }
private void SetUp(IList <TestUser> users, TestRegion region, string subject, string body, IList <string> fileNames) { var info = new DocSourceHandlerTestInfo(); var supplier = TestSupplier.CreateNaked(session); var from = String.Format("{0}@supplier.test", supplier.Id); PrepareSupplier(supplier, from); info.Supplier = supplier; var toList = users.Select(u => "{0}@docs.analit.net".Format(u.AvaliableAddresses[0].Id)).ToList(); if (region != null) { toList.Add(region.ShortAliase + "@docs.analit.net"); } var message = ImapHelper.BuildMessageWithAttachments( subject, body, toList.ToArray(), new[] { from }, fileNames != null ? fileNames.ToArray() : null); info.Mime = message; info.Region = region; info.Users = users; _info = info; }
public void SendWithExclusion() { var client = TestClient.CreateNaked(session); var user = client.Users[0]; var inforoomRegion = TestRegion.Find(TestRegion.Inforoom); SetUp( new List <TestUser> { user }, inforoomRegion, "Это письмо пользователю", "Это текст письма пользователю", null); var handler = new DocSourceHandlerForTesting(Settings.Default.TestIMAPUser, Settings.Default.TestIMAPPass); handler.TestProcessMime(_info.Mime); var existsMessages = ImapHelper.CheckImapFolder(Settings.Default.TestIMAPUser, Settings.Default.TestIMAPPass, ImapHelper.INBOXFolder); Assert.That(existsMessages.Count, Is.GreaterThanOrEqualTo(1), "Не найдены письма в IMAP-папке"); var responseCount = existsMessages .Count(m => m.Envelope?.Subject?.Equals(_responseSubject, StringComparison.CurrentCultureIgnoreCase) == true); Assert.That(responseCount, Is.EqualTo(1), "Не найдено письмо с загловком '{0}'", _responseSubject); var mails = TestMailSendLog.Queryable.Where(l => l.User.Id == user.Id).ToList(); Assert.That(mails.Count, Is.EqualTo(1)); var mailLog = mails[0]; Assert.That(mailLog.Mail.Supplier.Id, Is.EqualTo(_info.Supplier.Id)); }
public void SetUp(IList <string> fileNames) { client = TestClient.CreateNaked(session); supplier = TestSupplier.CreateNaked(session); var from = String.Format("{0}@test.test", client.Id); PrepareSupplier(supplier, from); byte[] bytes; if (IsEmlFile) { bytes = File.ReadAllBytes(fileNames[0]); } else { var message = ImapHelper.BuildMessageWithAttachments( String.Format("{0}@waybills.analit.net", client.Addresses[0].Id), from, fileNames.ToArray()); bytes = message.ToByteData(); } ImapHelper.StoreMessage( Settings.Default.TestIMAPUser, Settings.Default.TestIMAPPass, Settings.Default.IMAPSourceFolder, bytes); }
public void ErrorOnEmptyLetter() { var client = TestClient.CreateNaked(session); var user = client.Users[0]; var supplier = TestSupplier.CreateNaked(session); var from = $"{supplier.Id}@supplier.test"; PrepareSupplier(supplier, from); var message = ImapHelper.BuildMessageWithAttachments( " ", " ", new string[] { "{0}@docs.analit.net".Format(user.AvaliableAddresses[0].Id) }, new[] { from }, null); var handler = new DocSourceHandlerForTesting(Settings.Default.TestIMAPUser, Settings.Default.TestIMAPPass); try { handler.CheckMime(message); Assert.Fail("Должно было возникнуть исключение MiniMailOnEmptyLetterException"); } catch (MiniMailOnEmptyLetterException exception) { Assert.That(exception.Template, Is.EqualTo(ResponseTemplate.MiniMailOnEmptyLetter)); SendErrorToProvider(handler, exception, message); } }
public void ErrorOnAllowedExtensions() { var client = TestClient.CreateNaked(session); var user = client.Users[0]; var supplier = TestSupplier.CreateNaked(session); var from = String.Format("{0}@supplier.test", supplier.Id); PrepareSupplier(supplier, from); var message = ImapHelper.BuildMessageWithAttachments( "test AllowedExtensions", "body AllowedExtensions", new string[] { "{0}@docs.analit.net".Format(user.AvaliableAddresses[0].Id) }, new[] { from }, new string[] { @"..\..\Data\Waybills\70983_906384.zip" }); var handler = new DocSourceHandlerForTesting(Settings.Default.TestIMAPUser, Settings.Default.TestIMAPPass); try { handler.CheckMime(message); Assert.Fail("Должно было возникнуть исключение MiniMailOnAllowedExtensionsException"); } catch (MiniMailOnAllowedExtensionsException exception) { Assert.That(exception.Template, Is.EqualTo(ResponseTemplate.MiniMailOnAllowedExtensions)); Assert.That(exception.ErrorExtention, Is.EqualTo(".zip").IgnoreCase); Assert.That(exception.AllowedExtensions, Is.EqualTo("doc, xls, gif, tiff, tif, jpg, pdf, txt").IgnoreCase); SendErrorToProvider(handler, exception, message); } }
public void DeleteDirectories() { TestHelper.RecreateDirectories(); ImapHelper.ClearImapFolder(Settings.Default.TestIMAPUser, Settings.Default.TestIMAPPass, Settings.Default.IMAPSourceFolder); filter = new EventFilter <WaybillService>(); }
public void DeleteDirectories() { SetDefaultValues(); _info = null; TestHelper.RecreateDirectories(); ImapHelper.ClearImapFolder(Settings.Default.TestIMAPUser, Settings.Default.TestIMAPPass, Settings.Default.IMAPSourceFolder); ImapHelper.ClearImapFolder(Settings.Default.TestIMAPUser, Settings.Default.TestIMAPPass, ImapHelper.INBOXFolder, _responseSubject); }
public static List <ImapResponse> ExecuteByUid(MailDb mailDb, SelectFolder folder, string args) { var storeArgs = ParseStoreArgs(args); var messages = ImapHelper.GetMessagesByUid(mailDb, folder, storeArgs.Ranges); return(ExecuteNew(mailDb, messages, storeArgs.DataItem, storeArgs.Flags, storeArgs.Silent)); }
public static List <ImapResponse> ExecuteByUid(MailDb mailDb, SelectFolder folder, string args) { var copyArgs = ParseArgs(args); var messages = ImapHelper.GetMessagesByUid(mailDb, folder, copyArgs.Ranges); return(Execute(mailDb, messages, copyArgs.FolderName)); }
public void Setup() { client = TestClient.Create(2, 2); address = client.Addresses[0]; source.SourceType = PriceSourceType.Email; source.Save(); ImapHelper.ClearImapFolder(Settings.Default.TestIMAPUser, Settings.Default.TestIMAPPass, Settings.Default.IMAPSourceFolder); }
public void MessageClientCheckWithExtensionExceptions() { SetSupplierAndClientConnection(); //проверка на отсутствие документов до запуска обработчика var currentDocuments = session.Query <Document>().Where(s => s.Invoice.RecipientId == recipientId); Assert.IsTrue(!currentDocuments.Any()); //новая накладная var document = GetDocument(recipientId); //прикрепление накладной к письму var msData = GetMemoryStreamForDocument(document); var message = BuildMessageWithAttachments($"to_{supplier.Id}@sup.com", $"from_{supplier.Id}@sup.com", "text.sst", msData.ToArray()); if (!session.Transaction.IsActive) { session.BeginTransaction(); } session.Transaction.Commit(); session.BeginTransaction(); var waybillExcludeFileToRemove = session.Query <WaybillExcludeFile>().ToList(); session.DeleteEach(waybillExcludeFileToRemove); session.Connection.Query( $"INSERT INTO usersettings.WaybillExcludeFile (Supplier,Mask) Values({supplier.Id} , '{"*.sst"}')") .FirstOrDefault(); ImapHelper.StoreMessage( Settings.Default.TestIMAPUser, Settings.Default.TestIMAPPass, Settings.Default.IMAPSourceFolder, message.ToByteData()); //запуск обработчика session.Transaction.Commit(); #if DEBUG handler.SetSessionForTest(session); #endif handler.ProcessData(); session.Flush(); //проверка на наличие документов после запуска обработчика currentDocuments = session.Query <Document>().Where(s => s.Invoice.RecipientId == recipientId); //документ отсутствует var currentDocument = currentDocuments.FirstOrDefault(); Assert.IsTrue(currentDocument == null); var logs = session.Query <DocumentReceiveLog>().Where(s => s.ClientCode == client.Id && s.Supplier.Id == supplier.Id).ToList(); Assert.IsTrue(logs.All(s => s.Comment.IndexOf($"Разбор документа не производился, применена маска исключения '{"*.sst"}'.") != -1)); }
private void Process() { Assert.That(_info, Is.Not.Null, "Перед обработкой должен быть вызван метод SetUp"); Assert.That(_info.Mime, Is.Not.Null, "Перед обработкой должен быть вызван метод SetUp"); var handler = new DocSourceHandlerForTesting(Settings.Default.TestIMAPUser, Settings.Default.TestIMAPPass); handler.TestProcessMime(_info.Mime); var existsMessages = ImapHelper.CheckImapFolder(Settings.Default.TestIMAPUser, Settings.Default.TestIMAPPass, Settings.Default.IMAPSourceFolder); Assert.That(existsMessages.Count, Is.EqualTo(0), "Существуют письма в IMAP-папками с темами: {0}", existsMessages.Select(m => m.Envelope.Subject).Implode()); }
/// <summary> /// FETCH /// </summary> public static List <ImapResponse> GenerateBySeqId(MailDb mailDb, SelectFolder Folder, string Cmd) { var cmdReader = new CommandReader(Cmd); var set = cmdReader.SequenceSet; var range = GetSequenceRange(set); var AllDataItems = cmdReader.ReadAllDataItems(); var messages = ImapHelper.GetMessagesBySeqNo(mailDb, Folder, range); return(Generate(mailDb, Folder, AllDataItems, messages)); }
public void CreateDirectoryPath() { CreateDownHandlerPath(); ImapHelper.ClearImapFolder(Settings.Default.TestIMAPUser, Settings.Default.TestIMAPPass, Settings.Default.IMAPSourceFolder); DownHistoryPath = Settings.Default.HistoryPath; if (!Directory.Exists(DownHistoryPath)) { Directory.CreateDirectory(DownHistoryPath); } }
private static (string id, MailboxFlags) CalculateFlagsFromFileName(string fileName) { fileName = Path.GetFileName(fileName); // ReSharper disable once AssignNullToNotNullAttribute Match match = s_maildirPattern.Match(fileName); if (!match.Success) { return(fileName, MailboxFlags.None); } return(match.Groups[1].Value, ImapHelper.GetFlagsFromMailDir(match.Groups[2].Value)); }
public static CopyArgs ParseArgs(string args) { var parts = args.Split(new char[] { ' ' }, 2); if (parts.Length != 2) { throw new Exception("Error in arguments."); } return(new CopyArgs { Ranges = ImapHelper.GetSequenceRange(parts[0]), FolderName = IMAP_Utils.DecodeMailbox(TextUtils.UnQuoteString(parts[1])) }); }
public void Process_price_in_message() { var file = @"..\..\Data\EmailSourceHandlerTest\Price_ProgTechnologi.eml"; source.EmailTo = "*****@*****.**"; source.EmailFrom = "*****@*****.**"; source.PriceMask = "*.*"; source.ExtrMask = "*.*"; source.Save(); ImapHelper.StoreMessage( Settings.Default.TestIMAPUser, Settings.Default.TestIMAPPass, Settings.Default.IMAPSourceFolder, File.ReadAllBytes(file)); handler.ProcessData(); }
public void Parse_waybill_if_parsing_enabled() { client = TestClient.CreateNaked(session); supplier = TestSupplier.CreateNaked(session); var beign = DateTime.Now; //Удаляем миллисекунды из даты, т.к. они не сохраняются в базе данных beign = beign.AddMilliseconds(-beign.Millisecond); var email = String.Format("edata{0}@msk.katren.ru", supplier.Id); supplier.WaybillSource.EMailFrom = email; supplier.WaybillSource.SourceType = TestWaybillSourceType.Email; session.Save(supplier); session.Save(client); ImapHelper.ClearImapFolder(); ImapHelper.StoreMessageWithAttachToImapFolder( String.Format("{0}@waybills.analit.net", client.Addresses[0].Id), email, @"..\..\Data\Waybills\8916.dbf"); Process(); var files = GetFileForAddress(DocType.Waybill); Assert.That(files.Length, Is.EqualTo(1)); var logs = session.Query <TestDocumentLog>().Where(d => d.Client.Id == client.Id).ToList(); Assert.That(logs.Count, Is.EqualTo(1)); var log = logs.Single(); var logTime = log.LogTime; Assert.That(logTime.Date.AddHours(logTime.Hour).AddMinutes(logTime.Minute).AddSeconds(logTime.Second), Is.GreaterThanOrEqualTo(beign.Date.AddHours(beign.Hour).AddMinutes(beign.Minute).AddSeconds(beign.Second))); Assert.That(log.DocumentSize, Is.GreaterThan(0)); var documents = session.Query <Document>().Where(d => d.Log.Id == log.Id).ToList(); Assert.That(documents.Count, Is.EqualTo(1)); Assert.That(documents.Single().Lines.Count, Is.EqualTo(7)); }
public void Parse_reject() { client = TestClient.CreateNaked(session); supplier = TestSupplier.CreateNaked(session); var price = supplier.Prices[0]; var productSynonym = price.AddProductSynonym("юниэнзим с МПС таб п/о N20", session.Query <TestProduct>().First()); var producerSynonym = price.AddProducerSynonym("юникем Лабора", session.Query <TestProducer>().First()); var email = String.Format("edata{0}@msk.katren.ru", supplier.Id); supplier.WaybillSource.EMailFrom = email; supplier.WaybillSource.SourceType = TestWaybillSourceType.Email; supplier.RejectParser = "NadezhdaFarm7579RejectParser"; session.Save(supplier); session.Save(client); ImapHelper.ClearImapFolder(); ImapHelper.StoreMessageWithAttachToImapFolder( String.Format("{0}@refused.analit.net", client.Addresses[0].Id), email, @"..\..\Data\Rejects\35115498_Надежда-Фарм Орел_Фарма Орел(protocol).txt"); Process(); var files = GetFileForAddress(DocType.Reject); Assert.That(files.Length, Is.EqualTo(1)); var logs = session.Query <TestDocumentLog>().Where(d => d.Client.Id == client.Id).ToList(); Assert.That(logs.Count, Is.EqualTo(1)); var log = logs.Single(); Assert.That(log.DocumentSize, Is.GreaterThan(0)); Assert.AreEqual(DocumentType.Reject, log.DocumentType); var reject = session.Query <RejectHeader>().FirstOrDefault(r => r.Supplier.Id == supplier.Id); Assert.AreEqual(1, reject.Lines.Count); Assert.AreEqual("NadezhdaFarm7579RejectParser", reject.Parser); Assert.AreEqual(productSynonym.Product.Id, reject.Lines[0].ProductEntity.Id); Assert.AreEqual(producerSynonym.Producer.Id, reject.Lines[0].ProducerEntity.Id); }
public void EmailPriceInPasswordProtectedArchiveProcessingTest() { var email = "*****@*****.**"; source.EmailFrom = email; source.EmailTo = email; source.PriceMask = "1.zip"; source.ExtrMask = "*.txt"; source.ArchivePassword = "******"; source.Save(); // Кладем в IMAP папку сообщение с вложениями ImapHelper.StoreMessageWithAttachToImapFolder(Settings.Default.TestIMAPUser, Settings.Default.TestIMAPPass, Settings.Default.IMAPSourceFolder, email, email, Path.Combine(_dataDir, "1.zip")); // Запускаем обработчик Process(); Assert.IsTrue(PriceItemList.list.Any(l => l.PriceItemId == priceItem.Id), "Ошибка обработки файла. Файл не поставлен в очередь на формализацию"); }
public void MiniMailOnUnknownProvider() { var files = new List <string> { @"..\..\Data\Waybills\bi055540.DBF", }; //SetUp без регистрации тестовой почты --begin-- client = TestClient.CreateNaked(session); supplier = TestSupplier.CreateNaked(session); var from = String.Format("{0}@test.test", client.Id); session.Save(supplier); byte[] bytes; if (IsEmlFile) { bytes = File.ReadAllBytes(files[0]); } else { var message = ImapHelper.BuildMessageWithAttachments( String.Format("{0}@waybills.analit.net", client.Addresses[0].Id), from, files.ToArray()); bytes = message.ToByteData(); } ImapHelper.StoreMessage( Settings.Default.TestIMAPUser, Settings.Default.TestIMAPPass, Settings.Default.IMAPSourceFolder, bytes); //--EndSetUp-- Process(); var logs = session.Query <RejectedEmail>().Where(log => log.From == from); Assert.That(logs.Count(), Is.Not.Null); }
public void Resend_eml_price() { var file = "price1.zip"; source.SourceType = PriceSourceType.Email; source.EmailFrom = "*****@*****.**"; source.EmailTo = "*****@*****.**"; source.PricePath = file; source.ExtrMask = "price.txt"; source.Save(); PriceDownloadLog downloadLog; using (var scope = new TransactionScope(OnDispose.Rollback)) { downloadLog = new PriceDownloadLog { Addition = String.Empty, ArchFileName = file, ExtrFileName = "price.txt", Host = Environment.MachineName, LogTime = DateTime.Now, PriceItemId = priceItem.Id, ResultCode = 2 }; downloadLog.Save(); scope.VoteCommit(); } using (var sw = new FileStream(Path.Combine(Settings.Default.HistoryPath, downloadLog.Id + ".eml"), FileMode.CreateNew)) { var attachments = new List <string> { Path.Combine(DataDirectory, file) }; var message = ImapHelper.BuildMessageWithAttachments("*****@*****.**", "*****@*****.**", attachments.ToArray()); var bytes = message.ToByteData(); sw.Write(bytes, 0, bytes.Length); } WcfCallResendPrice(downloadLog.Id); Assert.That(PriceItemList.list.FirstOrDefault(i => i.PriceItemId == priceItem.Id), Is.Not.Null, "Прайса нет в очереди на формализацию"); Assert.IsFalse(File.Exists(Path.Combine(Path.GetTempPath(), file)), "Не удален временный файл из темп"); }
public void MessageClientCheck() { SetSupplierAndClientConnection(); //проверка на отсутствие документов до запуска обработчика var currentDocuments = session.Query <Document>().Where(s => s.Invoice.RecipientId == recipientId); Assert.IsTrue(!currentDocuments.Any()); //новая накладная var document = GetDocument(recipientId); //прикрепление накладной к письму var msData = GetMemoryStreamForDocument(document); var message = BuildMessageWithAttachments($"to_{supplier.Id}@sup.com", $"from_{supplier.Id}@sup.com", "text.sst", msData.ToArray()); ImapHelper.StoreMessage( Settings.Default.TestIMAPUser, Settings.Default.TestIMAPPass, Settings.Default.IMAPSourceFolder, message.ToByteData()); //запуск обработчика session.Transaction.Commit(); #if DEBUG handler.SetSessionForTest(session); #endif handler.ProcessData(); session.Flush(); //проверка на наличие документов после запуска обработчика currentDocuments = session.Query <Document>().Where(s => s.Invoice.RecipientId == recipientId); //документ был один var currentDocument = currentDocuments.FirstOrDefault(); Assert.IsTrue(currentDocuments.Count() == 1); //проверки соответствия полей Assert.IsTrue(currentDocument.Address.Id == aIntersection.Address.Id); Assert.IsTrue(currentDocument.ClientCode == client.Id); Assert.IsTrue(currentDocument.FirmCode == supplier.Id); }