Package com.ecyrd.jspwiki.util

Source Code of com.ecyrd.jspwiki.util.MailUtilTest

package com.ecyrd.jspwiki.util;

import java.net.ConnectException;
import java.util.Properties;

import javax.mail.MessagingException;

import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;

import org.apache.log4j.PropertyConfigurator;

import com.ecyrd.jspwiki.TestEngine;
import com.ecyrd.jspwiki.WikiContext;
import com.ecyrd.jspwiki.WikiPage;
import com.ecyrd.jspwiki.util.MailUtil;

/**
* This test is not integrated into any TestSuite yet, because I don't know how
* to really assert if a mail was sent etc. (setup would be to complicated yet). Therefore
* replace the static TEST variables with your configuration and test by hand: execute
* testSendMail and see if you get the mail at the adress you indicate in "TEST_RECEIVER".
*
* @author Christoph Sauer
*
*/
public class MailUtilTest extends TestCase
{
    Properties m_props = new Properties();

    WikiContext     m_context;

    static final String PAGE_NAME = "TestPage";
   
    static final String TEST_HOST = "mail.mydomain.org";
    static final String TEST_PORT = "587";
    static final String TEST_ACCOUNT = "myaccount";
    static final String TEST_PASSWORD = "changeit";
   
    static final String TEST_RECEIVER = "someone@somewhere.org";
    static final String TEST_SENDER = "homer.simpson@burns.com";
   
    public MailUtilTest( String s )
    {
        super( s );
    }

    public void setUp()
        throws Exception
    {
        m_props.load( TestEngine.findTestProperties() );
        PropertyConfigurator.configure(m_props);
       
        TestEngine testEngine = new TestEngine( m_props );
       
        m_context = new WikiContext( testEngine,
                                     new WikiPage( testEngine, PAGE_NAME ) );
    }

    public void tearDown()
    {
    }

    /**
     * Verifies that the properties loaded by tests/etc/jspwiki.properties are the ones we expect.
     * Three of them (account, password, jndi name) are commented out, so we expect null.
     */
    public void testProperties()
    {
        Properties props = m_context.getEngine().getWikiProperties();
        assertEquals( "127.0.0.1",                   props.getProperty( MailUtil.PROP_MAIL_HOST ) );
        assertEquals( "25",                          props.getProperty( MailUtil.PROP_MAIL_PORT ) );
        assertEquals( "JSPWiki <JSPWiki@localhost>", props.getProperty( MailUtil.PROP_MAIL_SENDER ) );
        assertNull( props.getProperty( MailUtil.PROP_MAIL_ACCOUNT ) );
        assertNull( props.getProperty( MailUtil.PROP_MAIL_PASSWORD ) );
        assertNull( props.getProperty( MailUtil.PROP_MAIL_JNDI_NAME ) );
    }
   
    /**
     * This test sends a message to the local user's mailbox on this host. It assumes that
     * there is a locally-listening SMTP server on port 25, and that the current runtime
     * user has a mailbox on the local machine. For Unix-based systems such as Linux and
     * OS X, you can verify that this test ran successfully simply by typing "mail" at
     * the command line.
     */
    public void testSendMail()
    {
        m_props.setProperty( "jspwiki.usePageCache", "true" );

        String user = System.getProperty( "user.name" ) + "@localhost";
       
        try
        {
            MailUtil.sendMessage(m_context.getEngine(),
                                 user,
                                 "Mail test",
                                 "This is a test mail generated by MailUtilTest.");           
        }
        catch( MessagingException e )
        {
            if( e.getCause() instanceof ConnectException )
            {
                // This can occur if you do not have a SMTP server set up.  We just log this
                // and don't fail.
                System.out.println("I could not test whether mail sending works, since I could not connect to your SMTP server.");
                System.out.println("Reason: "+e.getMessage());
                return;
            }
            e.printStackTrace();
            fail( "Unknown problem (check the console for error report)" );
        }
        catch (Exception e)
        {
            e.printStackTrace();
            fail( "Could not send mail: " + e.getMessage() );
        }
    }

    public static Test suite()
    {
        return new TestSuite( MailUtilTest.class );
    }

}
TOP

Related Classes of com.ecyrd.jspwiki.util.MailUtilTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.