From 7e099b44ccd6fca3f195b5867f86cce31e558fee Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Mon, 26 Sep 2011 16:35:32 -0400
Subject: [PATCH] Unit test of the MailExecutor.

---
 .gitignore                            |    3 ++-
 tests/com/gitblit/tests/MailTest.java |   38 ++++++++++++++++++++++++++++++++++++++
 src/com/gitblit/MailExecutor.java     |   16 ++++++++++++++--
 3 files changed, 54 insertions(+), 3 deletions(-)

diff --git a/.gitignore b/.gitignore
index 389f663..0b215f1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -14,4 +14,5 @@
 /*.war
 /proposals
 /*.jar
-/federation.properties
\ No newline at end of file
+/federation.properties
+/mailtest.properties
diff --git a/src/com/gitblit/MailExecutor.java b/src/com/gitblit/MailExecutor.java
index 202875e..bfe2232 100644
--- a/src/com/gitblit/MailExecutor.java
+++ b/src/com/gitblit/MailExecutor.java
@@ -145,8 +145,11 @@
 	public Message createMessage(List<String> toAddresses) {
 		MimeMessage message = new MimeMessage(session);
 		try {
-			InternetAddress from = new InternetAddress(settings.getString(Keys.mail.fromAddress,
-					"gitblit@gitblit.com"), "Gitblit");
+			String fromAddress = settings.getString(Keys.mail.fromAddress, null);
+			if (StringUtils.isEmpty(fromAddress)) {
+				fromAddress = "gitblit@gitblit.com";
+			}
+			InternetAddress from = new InternetAddress(fromAddress, "Gitblit");
 			message.setFrom(from);
 
 			InternetAddress[] tos = new InternetAddress[toAddresses.size()];
@@ -162,6 +165,15 @@
 	}
 
 	/**
+	 * Returns the status of the mail queue.
+	 * 
+	 * @return true, if the queue is empty
+	 */
+	public boolean hasEmptyQueue() {
+		return queue.isEmpty();
+	}
+
+	/**
 	 * Queue's an email message to be sent.
 	 * 
 	 * @param message
diff --git a/tests/com/gitblit/tests/MailTest.java b/tests/com/gitblit/tests/MailTest.java
new file mode 100644
index 0000000..55002ce
--- /dev/null
+++ b/tests/com/gitblit/tests/MailTest.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright 2011 gitblit.com.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.gitblit.tests;
+
+import javax.mail.Message;
+
+import junit.framework.TestCase;
+
+import com.gitblit.FileSettings;
+import com.gitblit.MailExecutor;
+
+public class MailTest extends TestCase {
+
+	public void testSendMail() throws Exception {
+		FileSettings settings = new FileSettings("mailtest.properties");
+		MailExecutor mail = new MailExecutor(settings);
+		Message message = mail.createMessageForAdministrators();
+		message.setSubject("Test");
+		message.setText("this is a test");
+		mail.queue(message);
+		mail.run();		
+
+		assertTrue("mail queue is not empty!", mail.hasEmptyQueue());
+	}
+}

--
Gitblit v1.9.1