コード例 #1
0
ファイル: Basics.cs プロジェクト: shaqman/hmailserver
        public void TestPOP3TransactionSafety()
        {
            Account account = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            CustomAssert.IsTrue(SMTPClientSimulator.StaticSend(account.Address, account.Address, "Test", "TestBody"));
            POP3ClientSimulator.AssertMessageCount(account.Address, "test", 1);

            var sim = new POP3ClientSimulator();

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

            // Now delete the message using an IMAP client.
            var imapSimulator = new IMAPClientSimulator();

            CustomAssert.IsTrue(imapSimulator.ConnectAndLogon(account.Address, "test"));
            CustomAssert.IsTrue(imapSimulator.SelectFolder("INBOX"));
            CustomAssert.IsTrue(imapSimulator.SetDeletedFlag(1));
            CustomAssert.IsTrue(imapSimulator.Expunge());
            CustomAssert.AreEqual(0, imapSimulator.GetMessageCount("Inbox"));

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

            // This deletion should not have any effect, since the POP3 connection is referencing an old message.
            sim.DELE(1);
            sim.QUIT();

            CustomAssert.AreEqual(1, imapSimulator.GetMessageCount("Inbox"));
        }
コード例 #2
0
        public void TestImportOfMessageIntoOtherFolder()
        {
            string @messageText =
                "From: [email protected]\r\n" +
                "\r\n" +
                "Test\r\n";

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

            account.IMAPFolders.Add("Woho");

            string domainPath  = Path.Combine(_application.Settings.Directories.DataDirectory, "test.com");
            string accountPath = Path.Combine(domainPath, "test");

            Directory.CreateDirectory(accountPath);
            string fileName = Path.Combine(accountPath, "something.eml");

            File.WriteAllText(fileName, messageText);

            CustomAssert.IsTrue(_application.Utilities.ImportMessageFromFileToIMAPFolder(fileName, account.ID, "Woho"));

            POP3ClientSimulator.AssertMessageCount("*****@*****.**", "test", 0);
            var sim = new IMAPClientSimulator();

            sim.ConnectAndLogon("*****@*****.**", "test");
            CustomAssert.AreEqual(1, sim.GetMessageCount("Woho"));
            sim.Disconnect();
        }
コード例 #3
0
ファイル: Append.cs プロジェクト: shaqman/hmailserver
        public void ConfirmFileAddedToCorrectAccountFolder()
        {
            TestSetup testSetup  = SingletonProvider <TestSetup> .Instance;
            Account   oAccount   = testSetup.AddAccount(_domain, "*****@*****.**", "test");
            var       oSimulator = new IMAPClientSimulator();

            // Confirm that the public folder is empty before we start our test.
            string publicDir = testSetup.GetPublicDirectory();

            testSetup.AssertFilesInDirectory(publicDir, 0);

            // Add a message to the inbox.
            oSimulator.Connect();
            oSimulator.LogonWithLiteral("*****@*****.**", "test");
            oSimulator.SendSingleCommandWithLiteral("A01 APPEND INBOX {4}", "ABCD");

            // Confirm it exists in the IMAP folder.
            CustomAssert.AreEqual(1, oSimulator.GetMessageCount("INBOX"));
            oSimulator.Disconnect();

            // The public directory should still be empty - the message was added to the user account.
            testSetup.AssertFilesInDirectory(publicDir, 0);

            // There should be a single file in the users directory.
            testSetup.AssertFilesInUserDirectory(oAccount, 1);
        }
コード例 #4
0
ファイル: Append.cs プロジェクト: shaqman/hmailserver
        public void ConfirmFileAddedToCorrectPublicFolder()
        {
            TestSetup testSetup  = SingletonProvider <TestSetup> .Instance;
            Account   oAccount   = testSetup.AddAccount(_domain, "*****@*****.**", "test");
            var       oSimulator = new IMAPClientSimulator();

            // Confirm that the public folder is empty before we start our test.
            string publicDir = testSetup.GetPublicDirectory();

            testSetup.AssertFilesInDirectory(publicDir, 0);

            IMAPFolders folders = _application.Settings.PublicFolders;
            IMAPFolder  folder  = folders.Add("Share");

            folder.Save();

            // Give everyone access to the folder.
            IMAPFolderPermission permission = folder.Permissions.Add();

            permission.PermissionType = eACLPermissionType.ePermissionTypeAnyone;
            permission.set_Permission(eACLPermission.ePermissionLookup, true);
            permission.set_Permission(eACLPermission.ePermissionRead, true);
            permission.set_Permission(eACLPermission.ePermissionInsert, true);
            permission.Save();

            // Add the message to the public folder.
            oSimulator.Connect();
            oSimulator.LogonWithLiteral("*****@*****.**", "test");
            oSimulator.SendSingleCommandWithLiteral("A01 APPEND #Public.Share {4}", "ABCD");

            // Confirm that the message exists in the public folder and not in the inbox.
            CustomAssert.AreEqual(1, oSimulator.GetMessageCount("#Public.Share"));
            CustomAssert.AreEqual(0, oSimulator.GetMessageCount("INBOX"));
            oSimulator.Disconnect();


            // The public directory should now contain the message.
            testSetup.AssertFilesInDirectory(publicDir, 1);

            // There users directory should still be empty.
            testSetup.AssertFilesInUserDirectory(oAccount, 0);
        }
コード例 #5
0
ファイル: Append.cs プロジェクト: shaqman/hmailserver
        public void TestAppend()
        {
            Account oAccount = SingletonProvider <TestSetup> .Instance.AddAccount(_domain, "*****@*****.**", "test");

            var oSimulator = new IMAPClientSimulator();

            string sWelcomeMessage = oSimulator.Connect();

            oSimulator.LogonWithLiteral("*****@*****.**", "test");
            oSimulator.SendSingleCommandWithLiteral("A01 APPEND INBOX {4}", "ABCD");
            CustomAssert.AreEqual(1, oSimulator.GetMessageCount("INBOX"));
            oSimulator.Disconnect();
        }