コード例 #1
0
ファイル: AutoBan.cs プロジェクト: shaqman/hmailserver
        public void TestIMAPLogonFailure()
        {
            _settings.AutoBanOnLogonFailure         = true;
            _settings.MaxInvalidLogonAttempts       = 4;
            _settings.MaxInvalidLogonAttemptsWithin = 5;
            _settings.AutoBanMinutes = 3;

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

            var sim = new IMAPClientSimulator();

            CustomAssert.IsTrue(sim.ConnectAndLogon(account.Address, "test"));
            sim.Disconnect();

            // confirm that we can retrieve welcome message.
            CustomAssert.IsTrue(sim.GetWelcomeMessage().StartsWith("* OK"));

            // fail to log on 3 times.
            for (int i = 0; i < 4; i++)
            {
                string errorMessage;

                CustomAssert.IsFalse(sim.ConnectAndLogon(account.Address, "testA", out errorMessage));
                sim.Disconnect();

                if (i == 3)
                {
                    CustomAssert.IsTrue(errorMessage.Contains("Too many invalid logon attempts."));
                }
            }

            CustomAssert.IsTrue(sim.GetWelcomeMessage().Length == 0);

            string logText = TestSetup.ReadCurrentDefaultLog();

            CustomAssert.IsTrue(logText.Contains("Blocked either by IP range or by connection limit."), logText);
        }