示例#1
0
        public void TestFetch()
        {
            Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            SMTPClientSimulator.StaticSend(account.Address, account.Address, "Test", "SampleBody1");
            IMAPClientSimulator.AssertMessageCount(account.Address, "test", "Inbox", 1);

            SMTPClientSimulator.StaticSend(account.Address, account.Address, "Test", "SampleBody2");
            IMAPClientSimulator.AssertMessageCount(account.Address, "test", "Inbox", 2);

            SMTPClientSimulator.StaticSend(account.Address, account.Address, "Test", "SampleBody3");
            IMAPClientSimulator.AssertMessageCount(account.Address, "test", "Inbox", 3);


            var sim = new IMAPClientSimulator();

            sim.ConnectAndLogon(account.Address, "test");
            sim.SelectFolder("INBOX");
            string result = sim.Fetch("1 BODY[1]");

            CustomAssert.IsTrue(result.Contains("SampleBody1"), result);
            result = sim.Fetch("2 BODY[1]");
            CustomAssert.IsTrue(result.Contains("SampleBody2"), result);
            result = sim.Fetch("3 BODY[1]");
            CustomAssert.IsTrue(result.Contains("SampleBody3"), result);
        }
示例#2
0
        public void TestFetchBody()
        {
            Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            string attachmentName = "本本本.zip";

            string filename = Path.Combine(Path.GetTempPath(), attachmentName);

            File.WriteAllText(filename, "tjena moss");

            var message = new Message();

            message.Charset = "utf-8";
            message.AddRecipient("test", account.Address);
            message.From        = "Test";
            message.FromAddress = account.Address;
            message.Body        = "hejsan";
            message.Attachments.Add(filename);
            message.Save();

            TestSetup.AssertFolderMessageCount(account.IMAPFolders[0], 1);

            var oSimulator = new IMAPClientSimulator();

            oSimulator.ConnectAndLogon(account.Address, "test");
            oSimulator.SelectFolder("INBOX");
            string bodyStructureResponse = oSimulator.Fetch("1 BODYSTRUCTURE");
            string bodyResponse          = oSimulator.Fetch("1 BODY");

            oSimulator.Disconnect();

            CustomAssert.IsTrue(bodyStructureResponse.Contains("BOUNDARY"));
            CustomAssert.IsFalse(bodyResponse.Contains("BOUNDARY"));
        }
示例#3
0
        public void TestRetrievalOfMessageInDeletedFolderUsingIMAP()
        {
            Application application = SingletonProvider <TestSetup> .Instance.GetApp();

            string deletedMessageText = _settings.ServerMessages.get_ItemByName("MESSAGE_FILE_MISSING").Text;

            Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            SMTPClientSimulator.StaticSend(account.Address, account.Address, "Test", "SampleBody");

            IMAPFolder inbox = account.IMAPFolders.get_ItemByName("Inbox");


            TestSetup.AssertFolderMessageCount(inbox, 1);

            Message message = inbox.Messages[0];

            var           dir    = new DirectoryInfo(Path.GetFullPath(message.Filename));
            DirectoryInfo parent = dir.Parent.Parent.Parent;

            parent.Delete(true);

            var sim = new IMAPClientSimulator();

            sim.ConnectAndLogon(account.Address, "test");
            sim.SelectFolder("INBOX");
            string result = sim.Fetch("1 BODY[1]");

            CustomAssert.IsTrue(result.Contains(deletedMessageText.Replace("%MACRO_FILE%", message.Filename)));
            TestSetup.AssertReportedError("Message retrieval failed because message file");
        }
示例#4
0
        public void TestFetchHeaderFieldsNot()
        {
            Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            string message = "From: Someone <*****@*****.**>" + Environment.NewLine +
                             "To: Someoen <*****@*****.**>" + Environment.NewLine +
                             "Date: Wed, 22 Apr 2009 11:05:09 \"GMT\"" + Environment.NewLine +
                             "Subject: Something" + Environment.NewLine +
                             Environment.NewLine +
                             "Hello" + Environment.NewLine;

            var smtpSimulator = new SMTPClientSimulator();

            CustomAssert.IsTrue(smtpSimulator.SendRaw(account.Address, account.Address, message));

            POP3ClientSimulator.AssertMessageCount(account.Address, "test", 1);

            var    oSimulator      = new IMAPClientSimulator();
            string sWelcomeMessage = oSimulator.Connect();

            oSimulator.Logon(account.Address, "test");
            oSimulator.SelectFolder("INBOX");
            string result = oSimulator.Fetch("1 BODY.PEEK[HEADER.FIELDS.NOT (Subject From)]");

            oSimulator.Disconnect();


            CustomAssert.IsTrue(result.Contains("Received:"), result);
            CustomAssert.IsFalse(result.Contains("Subject:"), result);
            CustomAssert.IsFalse(result.Contains("From:"), result);
            // The feedback should end with an empty header line.
            CustomAssert.IsTrue(result.Contains("\r\n\r\n)"), result);
        }
示例#5
0
        public void TestFetchEnvelopeWithDateContainingQuote()
        {
            Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            string message = "From: Someone <*****@*****.**>" + Environment.NewLine +
                             "To: Someoen <*****@*****.**>" + Environment.NewLine +
                             "Date: Wed, 22 Apr 2009 11:05:09 \"GMT\"" + Environment.NewLine +
                             "Subject: Something" + Environment.NewLine +
                             Environment.NewLine +
                             "Hello" + Environment.NewLine;

            var smtpSimulator = new SMTPClientSimulator();

            smtpSimulator.SendRaw(account.Address, account.Address, message);

            POP3ClientSimulator.AssertMessageCount(account.Address, "test", 1);

            var    oSimulator      = new IMAPClientSimulator();
            string sWelcomeMessage = oSimulator.Connect();

            oSimulator.Logon(account.Address, "test");
            oSimulator.SelectFolder("INBOX");
            string result = oSimulator.Fetch("1 ENVELOPE");

            oSimulator.Disconnect();

            CustomAssert.IsTrue(result.Contains("Wed, 22 Apr 2009 11:05:09 GMT"));
        }
示例#6
0
        public void TestBodyStructureWithNonLatinCharacter()
        {
            Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            string attachmentName = "本本本.zip";

            string filename = Path.Combine(Path.GetTempPath(), attachmentName);

            File.WriteAllText(filename, "tjena moss");

            var message = new Message();

            message.Charset = "utf-8";
            message.AddRecipient("test", account.Address);
            message.From        = "Test";
            message.FromAddress = account.Address;
            message.Body        = "hejsan";
            message.Attachments.Add(filename);
            message.Save();

            TestSetup.AssertFolderMessageCount(account.IMAPFolders[0], 1);

            var oSimulator = new IMAPClientSimulator();

            oSimulator.ConnectAndLogon(account.Address, "test");
            oSimulator.SelectFolder("INBOX");
            string result = oSimulator.Fetch("1 BODYSTRUCTURE");

            oSimulator.Disconnect();

            // utf-8 representation of 本本本.zip:
            CustomAssert.IsTrue(result.Contains("=?utf-8?B?5pys5pys5pys?=.zip"));
        }
示例#7
0
        public void TestChangeSeenFlag()
        {
            Account oAccount = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            CustomAssert.IsTrue(SMTPClientSimulator.StaticSend("*****@*****.**", oAccount.Address, "Test", "test"));
            POP3ClientSimulator.AssertMessageCount(oAccount.Address, "test", 1);

            var simulator = new IMAPClientSimulator();

            simulator.ConnectAndLogon(oAccount.Address, "test");
            simulator.ExamineFolder("Inbox");
            string flags      = simulator.GetFlags(1);
            string body       = simulator.Fetch("1 RFC822");
            string flagsAfter = simulator.GetFlags(1);

            simulator.Close();
            simulator.Disconnect();

            CustomAssert.AreEqual(flags, flagsAfter);

            var secondSimulator = new IMAPClientSimulator();

            secondSimulator.ConnectAndLogon(oAccount.Address, "test");
            secondSimulator.SelectFolder("Inbox");
            string secondFlags      = secondSimulator.GetFlags(1);
            string secondBody       = secondSimulator.Fetch("1 RFC822");
            string secondFlagsAfter = secondSimulator.GetFlags(1);

            secondSimulator.Close();
            secondSimulator.Disconnect();

            CustomAssert.AreNotEqual(secondFlags, secondFlagsAfter);
        }
示例#8
0
        public void RequestingSameHeaderFieldMultipleTimesShouldReturnItOnce()
        {
            Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            string message = "From: Someone <*****@*****.**>" + Environment.NewLine +
                             "To: Someoen <*****@*****.**>" + Environment.NewLine +
                             "Date: Wed, 22 Apr 2009 11:05:09 \"GMT\"" + Environment.NewLine +
                             "Subject: SubjectText" + Environment.NewLine +
                             Environment.NewLine +
                             "Hello" + Environment.NewLine;

            var smtpSimulator = new SMTPClientSimulator();

            CustomAssert.IsTrue(smtpSimulator.SendRaw(account.Address, account.Address, message));

            POP3ClientSimulator.AssertMessageCount(account.Address, "test", 1);

            var    oSimulator      = new IMAPClientSimulator();
            string sWelcomeMessage = oSimulator.Connect();

            oSimulator.Logon(account.Address, "test");
            oSimulator.SelectFolder("INBOX");
            string result = oSimulator.Fetch("1 BODY.PEEK[HEADER.FIELDS (Subject Subject)]");

            oSimulator.Disconnect();

            CustomAssert.AreEqual(1, StringExtensions.Occurences(result, "SubjectText"));
        }
示例#9
0
        public void IfInReplyToFieldContainsQuoteThenFetchHeadersShouldEncodeIt()
        {
            Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            string message = "From: Someone <*****@*****.**>" + Environment.NewLine +
                             "To: Someoen <*****@*****.**>" + Environment.NewLine +
                             "In-Reply-To: ShouldBeEncodedDueToQuote\"" + Environment.NewLine +
                             "Subject: Something" + Environment.NewLine +
                             Environment.NewLine +
                             "Hello" + Environment.NewLine;

            var smtpSimulator = new SMTPClientSimulator();

            smtpSimulator.SendRaw(account.Address, account.Address, message);

            POP3ClientSimulator.AssertMessageCount(account.Address, "test", 1);

            var    oSimulator      = new IMAPClientSimulator();
            string sWelcomeMessage = oSimulator.Connect();

            oSimulator.Logon(account.Address, "test");
            oSimulator.SelectFolder("INBOX");
            string result = oSimulator.Fetch("1 ENVELOPE");

            oSimulator.Disconnect();

            CustomAssert.IsFalse(result.Contains("ShouldBeEncodedDueToQuote"));
        }
示例#10
0
        public void TestFetchInvalid()
        {
            Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            SMTPClientSimulator.StaticSend(account.Address, account.Address, "Test", "SampleBody1");
            SMTPClientSimulator.StaticSend(account.Address, account.Address, "Test", "SampleBody2");
            SMTPClientSimulator.StaticSend(account.Address, account.Address, "Test", "SampleBody3");

            IMAPClientSimulator.AssertMessageCount(account.Address, "test", "Inbox", 3);

            var sim = new IMAPClientSimulator();

            sim.ConnectAndLogon(account.Address, "test");
            sim.SelectFolder("INBOX");
            string result = sim.Fetch("0 BODY[1]");

            CustomAssert.IsTrue(result.StartsWith("A17 OK FETCH completed"));
            result = sim.Fetch("-1 BODY[1]");
            CustomAssert.IsTrue(result.StartsWith("A17 BAD"));
            result = sim.Fetch("-100 BODY[1]");
            CustomAssert.IsTrue(result.StartsWith("A17 BAD"));
        }
示例#11
0
        public void TestParseMultipartNoBody()
        {
            Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            string body = TestSetup.GetResource("Messages.MultipartMessageWithNoMainBodyText.txt");

            SMTPClientSimulator.StaticSendRaw(account.Address, account.Address, body);

            POP3ClientSimulator.AssertMessageCount(account.Address, "test", 1);

            var    imapSim = new IMAPClientSimulator("*****@*****.**", "test", "INBOX");
            string result  = imapSim.Fetch("1 (BODY.PEEK[HEADER] BODY.PEEK[TEXT])");

            imapSim.Logout();
        }
示例#12
0
        public void TestFetchCharsetInQuotesWithoutQuotesWithoutSpace()
        {
            Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            SMTPClientSimulator.StaticSendRaw(account.Address, account.Address,
                                              "From: [email protected]\r\n" +
                                              "Content-Type: text/plain; charset=iso-8859-1 \r\n" +
                                              "\r\n" +
                                              "Test\r\n");

            IMAPClientSimulator.AssertMessageCount(account.Address, "test", "Inbox", 1);

            var    sim    = new IMAPClientSimulator(account.Address, "test", "Inbox");
            string result = sim.Fetch("1 BODYSTRUCTURE");

            sim.Disconnect();

            CustomAssert.IsTrue(result.Contains("(\"CHARSET\" \"iso-8859-1\")"), result);
        }
示例#13
0
        public void TestAddMessage()
        {
            Application app = SingletonProvider <TestSetup> .Instance.GetApp();

            Utilities utilities = app.Utilities;

            Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            // Create a new folder.
            IMAPFolder folder = account.IMAPFolders.get_ItemByName("INBOX");

            folder.Save();

            for (int i = 0; i < 3; i++)
            {
                hMailServer.Message message = folder.Messages.Add();
                message.set_Flag(eMessageFlag.eMFSeen, true);
                message.Save();

                POP3ClientSimulator.AssertMessageCount(account.Address, "test", ((i + 1) * 2) - 1);

                SMTPClientSimulator.StaticSend("*****@*****.**", account.Address, "Test", "Test");
                POP3ClientSimulator.AssertMessageCount(account.Address, "test", (i + 1) * 2);
            }

            POP3ClientSimulator.AssertMessageCount(account.Address, "test", 6);

            var sim = new IMAPClientSimulator();

            sim.ConnectAndLogon(account.Address, "test");
            sim.SelectFolder("Inbox");

            string response = sim.Fetch("1:6 UID");

            string[] lines = Strings.Split(response, Environment.NewLine, -1, CompareMethod.Text);

            var uids = new List <string>();

            foreach (string line in lines)
            {
                int paraPos    = line.IndexOf("(");
                int paraEndPos = line.IndexOf(")");

                if (paraPos < 0 || paraEndPos < 0)
                {
                    continue;
                }

                string paraContent = line.Substring(paraPos + 1, paraEndPos - paraPos - 1);

                if (!uids.Contains(paraContent))
                {
                    uids.Add(paraContent);
                }
            }

            CustomAssert.AreEqual(6, uids.Count);

            // Make sure the UIDS are sorted properly by creating a copy, sort the copy
            // and then compare to original.
            var copy = new List <string>();

            copy.InsertRange(0, uids);
            copy.Sort();

            CustomAssert.AreEqual(copy, uids);
        }