View Javadoc

1   /*
2    * $Id: MailMessageTransformersTestCase.java 19250 2010-08-30 16:53:14Z dirk.olmes $
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
5    *
6    * The software in this package is published under the terms of the CPAL v1.0
7    * license, a copy of which has been included with this distribution in the
8    * LICENSE.txt file.
9    */
10  
11  package org.mule.transport.email.transformers;
12  
13  import org.mule.api.endpoint.ImmutableEndpoint;
14  import org.mule.api.transformer.Transformer;
15  import org.mule.api.transformer.TransformerException;
16  import org.mule.transformer.AbstractTransformer;
17  import org.mule.transformer.AbstractTransformerTestCase;
18  import org.mule.transformer.types.DataTypeFactory;
19  
20  import java.util.Properties;
21  
22  import javax.mail.Message;
23  import javax.mail.MessagingException;
24  import javax.mail.Session;
25  import javax.mail.internet.MimeMessage;
26  
27  public class MailMessageTransformersTestCase extends AbstractTransformerTestCase
28  {
29      private Message message;
30  
31      @Override
32      public Transformer getTransformer() throws Exception
33      {
34          return createObject(EmailMessageToString.class);
35      }
36  
37      @Override
38      public Transformer getRoundTripTransformer() throws Exception
39      {
40          StringToEmailMessage trans = createObject(StringToEmailMessage.class);
41          ImmutableEndpoint endpoint = muleContext.getRegistry().lookupEndpointFactory().getOutboundEndpoint(
42              "smtp://a:a@a.com");
43  
44          // We need to init the connector without actually connecting for this test
45          // case
46          try
47          {
48              endpoint.getConnector().initialise();
49          }
50          catch (IllegalStateException e)
51          {
52              assertNotNull(e);
53          }
54  
55          trans.setEndpoint(endpoint);
56  
57          return trans;
58      }
59  
60      @Override
61      public Object getTestData()
62      {
63          if (message == null)
64          {
65              message = new MimeMessage(Session.getDefaultInstance(new Properties()));
66              try
67              {
68                  message.setContent(getResultData(), getContentType());
69              }
70              catch (MessagingException e)
71              {
72                  throw new RuntimeException("Failed to create Mime Message: " + e.getMessage(), e);
73              }
74          }
75          return message;
76      }
77  
78      
79      protected String getContentType()
80      {
81          return "text/plain";
82      }
83      
84      @Override
85      public Object getResultData()
86      {
87          return "Test Email Message";
88      }
89  
90      @Override
91      public boolean compareResults(Object src, Object result)
92      {
93          if (src instanceof Message)
94          {
95              Object objSrc;
96              Object objRes;
97              try
98              {
99                  objSrc = ((Message) src).getContent();
100                 objRes = ((Message) result).getContent();
101             }
102             catch (Exception e)
103             {
104                 throw new RuntimeException(e.getMessage(), e);
105             }
106             if (objSrc == null || objRes == null)
107             {
108                 return false;
109             }
110             return objRes.equals(objSrc);
111         }
112         return super.compareResults(src, result);
113     }
114 
115     public void testStringSourceType() throws Exception
116     {
117         try
118         {
119             assertFalse(getTransformer().isSourceDataTypeSupported(DataTypeFactory.STRING));
120             getTransformer().transform(getResultData());
121             fail("Should throw exception for string source type");
122         }
123         catch (TransformerException e)
124         {
125             // expected
126             assertTrue(true);
127         }
128     }
129 
130     public void testStringSourceTypeWithIgnoreBadInput() throws Exception
131     {
132         AbstractTransformer trans = (AbstractTransformer) getTransformer();
133         trans.setIgnoreBadInput(true);
134         Object result = trans.transform(getResultData());
135         trans.setIgnoreBadInput(false);
136         assertEquals(result, getResultData());
137     }
138 }