예제 #1
0
파일: Pop.cs 프로젝트: BitrixQA/BitrixAQA
 /// <summary>
 /// Удаляет все письма с сервера.
 /// </summary>
 /// <param name="Login">Логин</param>
 /// <param name="Password">Пароль</param>
 /// <param name="Server">POP3 сервер</param>
 /// <param name="Port">порт</param>
 /// <param name="UseSSL">использовать или нет SSL</param>
 public static void DeleteAllEmails(string Login, string Password, string Server, int Port, bool UseSSL)
 {
     using (Pop3Client client = new Pop3Client())
     {
         client.Connect(Server, Port, UseSSL);
         client.Authenticate(Login, Password, AuthenticationMethod.UsernameAndPassword);
         try
         {
             client.DeleteAllMessages();
         }
         catch (OpenPop.Pop3.Exceptions.PopServerException ex)
         {
             Log.MesQuestion("Скорее всего превышено количество запросов");
             Log.MesQuestion(ex.Message);
         }
     }
 }
		public void TestDeleteAllMessages()
		{
			const string welcomeMessage = "+OK";
			const string okUsername = "******";
			const string okPassword = "******";
			const string messageCountResponse = "+OK 2 5"; // 2 messages with total size of 5 octets
			const string deleteResponse = "+OK"; // Message was deleted
			const string quitAccepted = "+OK";
			const string serverResponses = welcomeMessage + "\r\n" + okUsername + "\r\n" + okPassword + "\r\n" + messageCountResponse  + "\r\n" + deleteResponse + "\r\n" + deleteResponse + "\r\n" + quitAccepted + "\r\n";

			Stream inputStream = new MemoryStream(Encoding.ASCII.GetBytes(serverResponses));
			MemoryStream outputStream = new MemoryStream();

			Pop3Client client = new Pop3Client();
			client.Connect(new CombinedStream(inputStream, outputStream));
			client.Authenticate("test", "test");

			// Delete all the messages
			client.DeleteAllMessages();

			// Check that message 1 and message 2 was deleted
			string[] commandsFired = GetCommands(new StreamReader(new MemoryStream(outputStream.ToArray())).ReadToEnd());

			bool message1Deleted = false;
			bool message2Deleted = false;
			foreach (string commandFired in commandsFired)
			{
				if (commandFired.Equals("DELE 1"))
					message1Deleted = true;

				if (commandFired.Equals("DELE 2"))
					message2Deleted = true;
			}

			// We expect message 1 to be deleted
			Assert.IsTrue(message1Deleted);

			// We expect message 2 to be deleted
			Assert.IsTrue(message2Deleted);

			// Quit and commit
			client.Disconnect();

			const string expectedOutputAfterQuit = "QUIT";
			string outputAfterQuit = GetLastCommand(new StreamReader(new MemoryStream(outputStream.ToArray())).ReadToEnd());

			// We now expect that the client has sent the QUIT command
			Assert.AreEqual(expectedOutputAfterQuit, outputAfterQuit);
		}