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

             var oSimulator = new ImapClientSimulator();
             string sWelcomeMessage = oSimulator.Connect();
             oSimulator.Logon(account.Address, "test");

             string commandSequence = "";
             for (int i = 0; i < 200; i++)
             {
            commandSequence += "A" + i.ToString() + " SELECT INBOX\r\n";
             }
             commandSequence = commandSequence.TrimEnd("\r\n".ToCharArray());

             string result = oSimulator.Send(commandSequence);
             Assert.IsFalse(result.StartsWith("* BYE"));

             oSimulator.Disconnect();

             sWelcomeMessage = oSimulator.Connect();
             oSimulator.Logon(account.Address, "test");
             commandSequence = "";
             for (int i = 0; i < 500; i++)
             {
            commandSequence += "A" + i.ToString() + " SELECT INBOX\r\n";
             }
             commandSequence = commandSequence.TrimEnd("\r\n".ToCharArray());

             result = oSimulator.Send(commandSequence);
             Assert.IsFalse(result.StartsWith("* BYE Excessive number of buffered commands"));
             oSimulator.Disconnect();
        }
Beispiel #2
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();
             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();

             Assert.AreEqual(1, StringExtensions.Occurences(result, "SubjectText"));
        }
Beispiel #3
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();

             Assert.IsFalse(result.Contains("ShouldBeEncodedDueToQuote"));
        }
Beispiel #4
0
        public void TestNestedOrSearch()
        {
            Application application = SingletonProvider<TestSetup>.Instance.GetApp();

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

             // Send a message to this account.
             var smtpClientSimulator = new SmtpClientSimulator();
             smtpClientSimulator.Send("*****@*****.**", "*****@*****.**", "Search test", "This is a test of IMAP Search");

             ImapClientSimulator.AssertMessageCount(oAccount.Address, "test", "Inbox", 1);

             var oSimulator = new ImapClientSimulator();
             string sWelcomeMessage = oSimulator.Connect();
             oSimulator.Logon("*****@*****.**", "test");
             oSimulator.SelectFolder("INBOX");

             string result =
            oSimulator.SendSingleCommand("A4 SEARCH ALL OR OR SINCE 28-May-2008 SINCE 28-May-2008 SINCE 28-May-2008");
             Assert.IsTrue(result.StartsWith("* SEARCH 1"), result);

             result = oSimulator.SendSingleCommand("A4 SEARCH ALL OR SMALLER 1 LARGER 10000");
             Assert.IsTrue(result.StartsWith("* SEARCH\r\n"), result);

             result = oSimulator.SendSingleCommand("A4 SEARCH ALL OR OR SMALLER 1 LARGER 10000 SMALLER 10000");
             Assert.IsTrue(result.StartsWith("* SEARCH 1\r\n"), result);
        }
        public void IfStlsRequiredLogonShouldFailIfNoStls()
        {
            var imapSimulator = new ImapClientSimulator(false, 14303);
             imapSimulator.Connect();

             string errorMessage;
             Assert.IsFalse(imapSimulator.Logon(_account.Address, "test", out errorMessage));

             Assert.IsTrue(errorMessage.Contains("A01 BAD STARTTLS is required."));
        }
Beispiel #6
0
        public void TestCreateFolderWithHash()
        {
            Account oAccount = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             var oSimulator = new ImapClientSimulator();

             oSimulator.Connect();
             oSimulator.Logon(oAccount.Address, "test");
             Assert.IsFalse(oSimulator.CreateFolder("#Test"));
             Assert.IsTrue(oSimulator.CreateFolder("Test.#Testar"));
             oSimulator.Disconnect();
        }
        public void IfStlsRequiredLogonShouldSucceedIfStls()
        {
            var imapSimulator = new ImapClientSimulator(false, 14303);
             imapSimulator.Connect();
             imapSimulator.SendSingleCommand("A01 STARTTLS");
             imapSimulator.Handshake();

             // command is sent over TLS.
             imapSimulator.GetCapabilities();

             Assert.IsTrue(imapSimulator.Logon(_account.Address, "test"));
        }
        public void IfStlsOptionalButSslRequiredByIpRangeForAuthThenAuthShouldFail()
        {
            var range = SingletonProvider<TestSetup>.Instance.GetApp().Settings.SecurityRanges.get_ItemByName("My computer");
             range.RequireSSLTLSForAuth = true;
             range.Save();

             var imapSimulator = new ImapClientSimulator(false, 14302);
             imapSimulator.Connect();

             string errorMessage;
             Assert.IsFalse(imapSimulator.Logon(_account.Address, "test", out errorMessage));
             Assert.IsTrue(errorMessage.Contains("A01 BAD A SSL/TLS-connection is required for authentication."));
        }
Beispiel #9
0
        public void TestCreateFolderWithSlash()
        {
            Account oAccount = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             const string folderName = "ABC\\123";

             var oSimulator = new ImapClientSimulator();
             oSimulator.Connect();
             oSimulator.Logon(oAccount.Address, "test");
             Assert.IsTrue(oSimulator.CreateFolder(folderName));
             Assert.IsTrue(oSimulator.List().Contains(folderName));
             Assert.IsTrue(oSimulator.SelectFolder(folderName));
             oSimulator.Disconnect();
        }
Beispiel #10
0
        public void TestAppendDeletedMessage()
        {
            Account oAccount = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             var oSimulator = new ImapClientSimulator();

             string sWelcomeMessage = oSimulator.Connect();
             oSimulator.Logon("*****@*****.**", "test");
             oSimulator.SendSingleCommandWithLiteral("A01 APPEND INBOX (\\Deleted) {4}", "ABCD");
             Assert.AreEqual(1, oSimulator.GetMessageCount("INBOX"));

             Assert.AreEqual("1", oSimulator.Search("DELETED"));

             oSimulator.Disconnect();
        }
        public void TestLongCommand()
        {
            Account account = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             var oSimulator = new ImapClientSimulator();
             string sWelcomeMessage = oSimulator.Connect();
             oSimulator.Logon(account.Address, "test");

             var sb = new StringBuilder();

             for (int i = 0; i < 240000; i++)
             {
            sb.Append("A");
             }

             string result = oSimulator.Send("A01 " + sb);
             Assert.IsTrue(result.Length == 0 || result.StartsWith("A01"));
        }
        public void TestHierarchyDelimiterListResponse()
        {
            Application application = SingletonProvider<TestSetup>.Instance.GetApp();
             Settings settings = _settings;
             settings.IMAPHierarchyDelimiter = "\\";

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

             string folderName = "Test\\Test";

             var oSimulator = new ImapClientSimulator();
             string sWelcomeMessage = oSimulator.Connect();
             oSimulator.Logon(account.Address, "test");
             Assert.IsTrue(oSimulator.CreateFolder(folderName));
             string listResponse = oSimulator.List();
             Assert.IsTrue(listResponse.Contains("\"Test\\Test\""));
             Assert.IsTrue(listResponse.Contains("\"Test\""));
             oSimulator.Disconnect();
        }
Beispiel #13
0
        public void TestAppendFolderNameInOctet()
        {
            Account oAccount = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             var oSimulator = new ImapClientSimulator();

             string sWelcomeMessage = oSimulator.Connect();
             oSimulator.Logon("*****@*****.**", "test");
             oSimulator.SelectFolder("INBOX");
             oSimulator.CreateFolder("MONK");
             oSimulator.SendRaw("A01 APPEND {4}\r\n");
             string result = oSimulator.Receive();
             Assert.IsTrue(result.StartsWith("+ Ready for additional command text."));

             oSimulator.SendRaw("MONK (\\Seen) \"20-Jan-2009 12:59:50 +0100\" {5}\r\n");
             result = oSimulator.Receive();
             Assert.IsTrue(result.StartsWith("+ Ready for literal data"));

             oSimulator.SendRaw("WOOOT\r\n");
             result = oSimulator.Receive();

             Assert.AreEqual("A01 OK APPEND completed\r\n", result);
        }
Beispiel #14
0
        public void TestExpunge()
        {
            Application application = SingletonProvider<TestSetup>.Instance.GetApp();

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

             IMAPFolders publicFolders = _settings.PublicFolders;
             IMAPFolder folder = publicFolders.Add("Share1");
             folder.Save();

             IMAPFolderPermission permission = folder.Permissions.Add();
             permission.PermissionAccountID = account1.ID;
             permission.PermissionType = eACLPermissionType.ePermissionTypeUser;
             permission.set_Permission(eACLPermission.ePermissionCreate, true);
             permission.set_Permission(eACLPermission.ePermissionInsert, true);
             permission.set_Permission(eACLPermission.ePermissionRead, true);
             permission.set_Permission(eACLPermission.ePermissionWriteDeleted, true);
             permission.Save();

             string folderName = "#Public.Share1";
             SmtpClientSimulator.StaticSend("*****@*****.**", account1.Address, "TestMessage", "Body");
             CustomAsserts.AssertFolderMessageCount(account1.IMAPFolders.get_ItemByName("INBOX"), 1);
             CustomAsserts.AssertFolderMessageCount(folder, 0);

             var imapClientSimulator = new ImapClientSimulator();
             imapClientSimulator.Connect();
             imapClientSimulator.Logon(account1.Address, "test");
             imapClientSimulator.SelectFolder("INBOX");
             Assert.IsTrue(imapClientSimulator.Copy(1, folderName));
             Assert.IsTrue(imapClientSimulator.SelectFolder(folderName));
             Assert.IsTrue(imapClientSimulator.SetDeletedFlag(1));

             Assert.IsFalse(imapClientSimulator.Expunge());

             permission.set_Permission(eACLPermission.ePermissionExpunge, true);
             permission.Save();
             Assert.IsTrue(imapClientSimulator.Expunge());

             imapClientSimulator.Disconnect();
        }
Beispiel #15
0
        public void TestListPublicFolderAnyonePermission()
        {
            Application application = SingletonProvider<TestSetup>.Instance.GetApp();

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

             IMAPFolders publicFolders = _settings.PublicFolders;
             IMAPFolder folder = publicFolders.Add("Share1");
             folder.Save();

             string folderName = "#Public.Share1";

             // account 1 should not have permission since they aren't added yet.
             var imapClientSimulator = new ImapClientSimulator();
             imapClientSimulator.Connect();
             imapClientSimulator.Logon(account1.Address, "test");
             Assert.IsFalse(imapClientSimulator.List().Contains(folderName));
             imapClientSimulator.Disconnect();

             IMAPFolderPermission permission = folder.Permissions.Add();
             permission.PermissionType = eACLPermissionType.ePermissionTypeAnyone;
             permission.set_Permission(eACLPermission.ePermissionCreate, true);
             permission.set_Permission(eACLPermission.ePermissionLookup, true);
             permission.Save();

             // account 1 should not have permission since he's not in the group
             imapClientSimulator = new ImapClientSimulator();
             imapClientSimulator.Connect();
             imapClientSimulator.Logon(account1.Address, "test");
             Assert.IsTrue(imapClientSimulator.List().Contains(folderName));
             imapClientSimulator.Disconnect();
        }
Beispiel #16
0
        public void TestCreateRootSharedFolder()
        {
            Application application = SingletonProvider<TestSetup>.Instance.GetApp();

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

             var imapClientSimulator = new ImapClientSimulator();
             imapClientSimulator.Connect();
             imapClientSimulator.Logon(account1.Address, "test");
             Assert.IsFalse(imapClientSimulator.CreateFolder("#Public.SharedFolder"));
             imapClientSimulator.Disconnect();
        }
Beispiel #17
0
        public void TestDuplicateConflictingGroupPermission()
        {
            Application application = SingletonProvider<TestSetup>.Instance.GetApp();

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

             Group group1 = SingletonProvider<TestSetup>.Instance.AddGroup("TestGroup1");
             SingletonProvider<TestSetup>.Instance.AddGroupMember(group1, account1);

             Group group2 = SingletonProvider<TestSetup>.Instance.AddGroup("TestGroup2");
             SingletonProvider<TestSetup>.Instance.AddGroupMember(group2, account1);

             IMAPFolders publicFolders = _settings.PublicFolders;
             IMAPFolder folder = publicFolders.Add("Share1");
             folder.Save();

             IMAPFolderPermissions permissions = folder.Permissions;

             IMAPFolderPermission permission = permissions.Add();
             permission.PermissionGroupID = group1.ID;
             permission.PermissionType = eACLPermissionType.ePermissionTypeGroup;
             permission.Save();

             IMAPFolderPermission permission2 = permissions.Add();
             permission2.PermissionGroupID = group2.ID;
             permission2.PermissionType = eACLPermissionType.ePermissionTypeGroup;
             permission2.set_Permission(eACLPermission.ePermissionLookup, true);
             permission2.Save();

             string folderName = "#Public.Share1";

             // The account should not have permission since the first permission doesn't give him this.
             var imapClientSimulator = new ImapClientSimulator();
             imapClientSimulator.Connect();
             imapClientSimulator.Logon(account1.Address, "test");
             Assert.IsFalse(imapClientSimulator.List().Contains(folderName));
             imapClientSimulator.Disconnect();

             // Now delete the permissions and in the first permission give the group the rights.
             while (permissions.Count > 0)
            permissions.Delete(0);

             permission = permissions.Add();
             permission.PermissionGroupID = group1.ID;
             permission.PermissionType = eACLPermissionType.ePermissionTypeGroup;
             permission.set_Permission(eACLPermission.ePermissionLookup, true);
             permission.Save();

             permission2 = permissions.Add();
             permission2.PermissionGroupID = group2.ID;
             permission2.PermissionType = eACLPermissionType.ePermissionTypeGroup;
             permission2.Save();

             // The account should not have permission since the first permission does give him this.
             imapClientSimulator = new ImapClientSimulator();
             imapClientSimulator.Connect();
             imapClientSimulator.Logon(account1.Address, "test");
             Assert.IsTrue(imapClientSimulator.List().Contains(folderName));
             imapClientSimulator.Disconnect();
        }
Beispiel #18
0
        public void TestRenamePublicFolderToRootPublicFolder()
        {
            Application application = SingletonProvider<TestSetup>.Instance.GetApp();

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

             IMAPFolders publicFolders = _settings.PublicFolders;
             IMAPFolder folder = publicFolders.Add("Share1");
             folder.Save();

             IMAPFolderPermission permission = folder.Permissions.Add();
             permission.PermissionAccountID = account1.ID;
             permission.PermissionType = eACLPermissionType.ePermissionTypeUser;
             permission.set_Permission(eACLPermission.ePermissionCreate, true);
             permission.set_Permission(eACLPermission.ePermissionLookup, true);
             permission.set_Permission(eACLPermission.ePermissionDeleteMailbox, true);
             permission.Save();

             string oldFolderName = "#Public.Share1.MySub1";
             string newFolderName = "#Public.Share2";

             var imapClientSimulator = new ImapClientSimulator();
             imapClientSimulator.Connect();
             imapClientSimulator.Logon(account1.Address, "test");
             Assert.IsTrue(imapClientSimulator.CreateFolder(oldFolderName));
             Assert.IsFalse(imapClientSimulator.RenameFolder(oldFolderName, newFolderName));

             Assert.IsTrue(imapClientSimulator.List().Contains(oldFolderName));
             Assert.IsFalse(imapClientSimulator.List().Contains(newFolderName));

             imapClientSimulator.Disconnect();
        }
Beispiel #19
0
        public void TestCreateFolderWithSameNameAsPublic()
        {
            Application application = SingletonProvider<TestSetup>.Instance.GetApp();
             string origPublicFolderName = _settings.IMAPPublicFolderName;

             _settings.IMAPPublicFolderName = "MyPublic";

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

            var imapClientSimulator = new ImapClientSimulator();
            imapClientSimulator.Connect();
            imapClientSimulator.Logon(account1.Address, "test");
            Assert.IsFalse(imapClientSimulator.CreateFolder("MyPublic"));
            imapClientSimulator.Disconnect();
             }
             finally
             {
            _settings.IMAPPublicFolderName = origPublicFolderName;
             }
        }
Beispiel #20
0
        public void TestIdle()
        {
            _settings.IMAPIdleEnabled = true;

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

             var oSimulator = new ImapClientSimulator();

             string sWelcomeMessage = oSimulator.Connect();
             oSimulator.Logon(account.Address, "test");
             Assert.IsTrue(oSimulator.SelectFolder("INBOX"));

             oSimulator.StartIdle();

             if (oSimulator.GetPendingDataExists())
            throw new Exception("Unexpected data exists");

             // Send a message to this account.
             var smtpClientSimulator = new SmtpClientSimulator();
             smtpClientSimulator.Send(account.Address, account.Address, "IDLE Test", "This is a test of IDLE");

             string data;
             Assert.IsTrue(oSimulator.EndIdle(false, out data));
        }
Beispiel #21
0
        public void TestGetQuota()
        {
            Account oAccount = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             var oSimulator = new ImapClientSimulator();

             string sWelcomeMessage = oSimulator.Connect();
             oSimulator.Logon("*****@*****.**", "test");
             string result = oSimulator.GetQuota("Inbox");
             Assert.IsTrue(result.Contains("A09 OK"));
             oSimulator.Disconnect();
        }
Beispiel #22
0
        public void TestListPublicFolderGroupPermission()
        {
            Application application = SingletonProvider<TestSetup>.Instance.GetApp();

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

             Group group = SingletonProvider<TestSetup>.Instance.AddGroup("TestGroup");
             SingletonProvider<TestSetup>.Instance.AddGroupMember(group, account2);

             IMAPFolders publicFolders = _settings.PublicFolders;
             IMAPFolder folder = publicFolders.Add("Share1");
             folder.Save();

             IMAPFolderPermission permission = folder.Permissions.Add();
             permission.PermissionGroupID = group.ID;
             permission.PermissionType = eACLPermissionType.ePermissionTypeGroup;
             permission.set_Permission(eACLPermission.ePermissionCreate, true);
             permission.set_Permission(eACLPermission.ePermissionLookup, true);
             permission.Save();

             string folderName = "#Public.Share1";

             // account 1 should not have permission since he's not in the group
             var imapClientSimulator = new ImapClientSimulator();
             imapClientSimulator.Connect();
             imapClientSimulator.Logon(account1.Address, "test");
             Assert.IsFalse(imapClientSimulator.List().Contains(folderName));
             imapClientSimulator.Disconnect();

             // account 2 should have permission since he is in the group
             imapClientSimulator = new ImapClientSimulator();
             imapClientSimulator.Connect();
             imapClientSimulator.Logon(account2.Address, "test");
             Assert.IsTrue(imapClientSimulator.List().Contains(folderName));
             imapClientSimulator.Disconnect();

             // account 3 should not have permission since he's not in the group
             imapClientSimulator = new ImapClientSimulator();
             imapClientSimulator.Connect();
             imapClientSimulator.Logon(account3.Address, "test");
             Assert.IsFalse(imapClientSimulator.List().Contains(folderName));
             imapClientSimulator.Disconnect();

             // add account 1 to the group to give him permission.
             GroupMember member = SingletonProvider<TestSetup>.Instance.AddGroupMember(group, account1);
             imapClientSimulator = new ImapClientSimulator();
             imapClientSimulator.Connect();
             imapClientSimulator.Logon(account1.Address, "test");
             Assert.IsTrue(imapClientSimulator.List().Contains(folderName));
             imapClientSimulator.Disconnect();

             // delete account 1 from the group again to remove permissios.
             group.Members.DeleteByDBID(member.ID);
             imapClientSimulator = new ImapClientSimulator();
             imapClientSimulator.Connect();
             imapClientSimulator.Logon(account1.Address, "test");
             Assert.IsFalse(imapClientSimulator.List().Contains(folderName));
             imapClientSimulator.Disconnect();
        }
Beispiel #23
0
        public void TestPublicFolderUnsubscribe()
        {
            Application application = SingletonProvider<TestSetup>.Instance.GetApp();

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

             IMAPFolders publicFolders = _settings.PublicFolders;
             IMAPFolder folder = publicFolders.Add("Share1");
             folder.Save();

             IMAPFolderPermission permission = folder.Permissions.Add();
             permission.PermissionAccountID = account1.ID;
             permission.PermissionType = eACLPermissionType.ePermissionTypeUser;
             permission.set_Permission(eACLPermission.ePermissionCreate, true);
             permission.set_Permission(eACLPermission.ePermissionAdminister, true);
             permission.set_Permission(eACLPermission.ePermissionExpunge, true);
             permission.set_Permission(eACLPermission.ePermissionDeleteMailbox, true);
             permission.set_Permission(eACLPermission.ePermissionRead, true);
             permission.Save();

             var imapClientSimulator = new ImapClientSimulator();
             imapClientSimulator.Connect();
             imapClientSimulator.Logon(account1.Address, "test");
             string folderName = "#Public.Share1";
             Assert.IsFalse(imapClientSimulator.Unsubscribe(folderName));

             imapClientSimulator.Disconnect();
        }
Beispiel #24
0
        public void TestPublicFolderCreateDeep()
        {
            Application application = SingletonProvider<TestSetup>.Instance.GetApp();

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

             IMAPFolders publicFolders = _settings.PublicFolders;
             IMAPFolder folder = publicFolders.Add("Share1");
             folder.Save();

             IMAPFolderPermission permission = folder.Permissions.Add();
             permission.PermissionAccountID = account1.ID;
             permission.PermissionType = eACLPermissionType.ePermissionTypeUser;
             permission.set_Permission(eACLPermission.ePermissionCreate, true);
             permission.set_Permission(eACLPermission.ePermissionRead, true);
             permission.set_Permission(eACLPermission.ePermissionLookup, true);
             permission.Save();

             var imapClientSimulator = new ImapClientSimulator();
             imapClientSimulator.Connect();
             imapClientSimulator.Logon(account1.Address, "test");
             string folderName = "#Public.Share1.MySub1.MySub2.MySub3.MySub4";
             Assert.IsTrue(imapClientSimulator.CreateFolder(folderName));

             imapClientSimulator.Disconnect();
        }
Beispiel #25
0
        public void TestLSUBPublicFolderParent()
        {
            Application application = SingletonProvider<TestSetup>.Instance.GetApp();

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

             IMAPFolders publicFolders = _settings.PublicFolders;
             IMAPFolder folder = publicFolders.Add("Share1");
             folder.Save();

             IMAPFolderPermission permission = folder.Permissions.Add();
             permission.PermissionAccountID = account1.ID;
             permission.PermissionType = eACLPermissionType.ePermissionTypeUser;
             permission.set_Permission(eACLPermission.ePermissionCreate, true);
             permission.Save();

             string folderName = "#Public.Share1";
             var imapClientSimulator = new ImapClientSimulator();
             imapClientSimulator.Connect();
             imapClientSimulator.Logon(account1.Address, "test");
             Assert.IsFalse(imapClientSimulator.LSUB().Contains(folderName));

             // Add permissions to select and lookup
             permission.set_Permission(eACLPermission.ePermissionLookup, true);
             permission.Save();

             Assert.IsTrue(imapClientSimulator.LSUB().Contains("#Public\"\r\n"));
             Assert.IsTrue(imapClientSimulator.LSUB().Contains(folderName));

             imapClientSimulator.Disconnect();
        }
Beispiel #26
0
        public void TestExamineNonexistantFolder()
        {
            Account oAccount = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             var oSimulator = new ImapClientSimulator();

             string sWelcomeMessage = oSimulator.Connect();
             oSimulator.Logon("*****@*****.**", "test");
             string result = oSimulator.ExamineFolder("NonexistantFolder");

             Assert.IsTrue(result.Contains("BAD Folder could not be found."));
        }
Beispiel #27
0
        public void TestPublicFolderNoSelectAttribute()
        {
            Application application = SingletonProvider<TestSetup>.Instance.GetApp();

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

             IMAPFolders publicFolders = _settings.PublicFolders;
             IMAPFolder folder = publicFolders.Add("Share1");
             folder.Save();

             IMAPFolderPermission permission = folder.Permissions.Add();
             permission.PermissionAccountID = account1.ID;
             permission.PermissionType = eACLPermissionType.ePermissionTypeUser;
             permission.set_Permission(eACLPermission.ePermissionLookup, true);
             permission.Save();

             var imapClientSimulator = new ImapClientSimulator();
             imapClientSimulator.Connect();
             imapClientSimulator.Logon(account1.Address, "test");

             Assert.IsTrue(imapClientSimulator.List("#Public").Contains("Noselect"));
             Assert.IsTrue(imapClientSimulator.List("#Public.Share1").Contains("#Public.Share1"));
             Assert.IsFalse(imapClientSimulator.List("#Public.Share1").Contains("Noselect"));

             imapClientSimulator.Disconnect();
        }
Beispiel #28
0
        public void TestExamineResponse()
        {
            Account account = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             SmtpClientSimulator.StaticSend(account.Address, account.Address, "Test", "Test");
             Pop3ClientSimulator.AssertMessageCount(account.Address, "test", 1);

             var oSimulator = new ImapClientSimulator();
             string sWelcomeMessage = oSimulator.Connect();
             oSimulator.Logon("*****@*****.**", "test");
             string result = oSimulator.ExamineFolder("Inbox");
             oSimulator.Disconnect();

             Assert.IsTrue(result.Contains("* FLAGS"), result);
             Assert.IsTrue(result.Contains("* 1 EXISTS"), result);
             Assert.IsTrue(result.Contains("* 1 RECENT"), result);
             Assert.IsTrue(result.Contains("* OK [UNSEEN 1]"), result);
             Assert.IsTrue(result.Contains("* OK [PERMANENTFLAGS"), result);
             Assert.IsTrue(result.Contains("* OK [UIDNEXT 2]"), result);
             Assert.IsTrue(result.Contains("* OK [UIDVALIDITY"), result);
             Assert.IsTrue(result.Contains("OK [READ-ONLY]"), result);
        }
Beispiel #29
0
        public void TestRenameFolderToAndFromPublic()
        {
            Application application = SingletonProvider<TestSetup>.Instance.GetApp();

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

             IMAPFolders publicFolders = _settings.PublicFolders;
             IMAPFolder folder = publicFolders.Add("Share1");
             folder.Save();

             IMAPFolderPermission permission = folder.Permissions.Add();
             permission.PermissionAccountID = account1.ID;
             permission.PermissionType = eACLPermissionType.ePermissionTypeUser;
             permission.set_Permission(eACLPermission.ePermissionCreate, true);
             permission.set_Permission(eACLPermission.ePermissionDeleteMailbox, true);
             permission.set_Permission(eACLPermission.ePermissionLookup, true);
             permission.Save();

             string oldFolderName = "#Public.Share1";
             string newFolderName = "AccountLevelFolder";

             // Test renaming from local folder name to shared folder.
             var imapClientSimulator = new ImapClientSimulator();
             imapClientSimulator.Connect();
             imapClientSimulator.Logon(account1.Address, "test");
             Assert.IsFalse(imapClientSimulator.RenameFolder(oldFolderName, newFolderName));
             imapClientSimulator.Disconnect();

             // Test renaming from local folder name to shared folder.
             oldFolderName = "LocalFolder";
             newFolderName = "#Public.Share1";

             imapClientSimulator = new ImapClientSimulator();
             imapClientSimulator.Connect();
             imapClientSimulator.Logon(account1.Address, "test");
             imapClientSimulator.CreateFolder(oldFolderName);
             Assert.IsFalse(imapClientSimulator.RenameFolder(oldFolderName, newFolderName));
             imapClientSimulator.Disconnect();
        }
Beispiel #30
0
        public void TestAppendFolderNameInOctetNoFlagList()
        {
            Account oAccount = SingletonProvider<TestSetup>.Instance.AddAccount(_domain, "*****@*****.**", "test");

             var oSimulator = new ImapClientSimulator();

             string sWelcomeMessage = oSimulator.Connect();
             oSimulator.Logon("*****@*****.**", "test");
             oSimulator.SelectFolder("INBOX");
             oSimulator.CreateFolder("MONK");
             oSimulator.SendRaw("A01 APPEND {4}\r\n");
             string result = oSimulator.Receive();
             Assert.IsTrue(result.StartsWith("+ Ready for additional command text."));

             oSimulator.SendRaw("MONK  \"12-Jan-2009 12:12:12 +0100\" {5}\r\n");
             result = oSimulator.Receive();
             Assert.IsTrue(result.StartsWith("+ Ready for literal data"));

             oSimulator.SendRaw("WOOOT\r\n");
             result = oSimulator.Receive();

             Assert.AreEqual("A01 OK APPEND completed\r\n", result);

             DateTime date = Convert.ToDateTime(oAccount.IMAPFolders.get_ItemByName("MONK").Messages[0].InternalDate);

             Assert.AreEqual(2009, date.Year);
             Assert.AreEqual(12, date.Day);
             Assert.AreEqual(1, date.Month);
        }