1
2
3
4
5
6
7
8
9
10
11 package org.mule.transport.email.transformers;
12
13 import org.mule.api.endpoint.ImmutableEndpoint;
14 import org.mule.api.transformer.TransformerException;
15 import org.mule.api.transformer.Transformer;
16 import org.mule.lifecycle.AlreadyInitialisedException;
17 import org.mule.transformer.AbstractTransformer;
18 import org.mule.transformer.AbstractTransformerTestCase;
19 import org.mule.transport.email.transformers.EmailMessageToString;
20 import org.mule.transport.email.transformers.StringToEmailMessage;
21
22 import java.util.Properties;
23
24 import javax.mail.Message;
25 import javax.mail.MessagingException;
26 import javax.mail.Session;
27 import javax.mail.internet.MimeMessage;
28
29 public class MailMessageTransformersTestCase extends AbstractTransformerTestCase
30 {
31 private Message message;
32
33 public Transformer getTransformer() throws Exception
34 {
35 return new EmailMessageToString();
36 }
37
38 public Transformer getRoundTripTransformer() throws Exception
39 {
40 StringToEmailMessage trans = new StringToEmailMessage();
41 ImmutableEndpoint endpoint = muleContext.getRegistry().lookupEndpointFactory().getOutboundEndpoint(
42 "smtp://a:a@a.com");
43
44
45
46 try
47 {
48 endpoint.getConnector().initialise();
49 }
50 catch (AlreadyInitialisedException e)
51 {
52 assertNotNull(e);
53 }
54
55 trans.setEndpoint(endpoint);
56
57 return trans;
58 }
59
60 public Object getTestData()
61 {
62 if (message == null)
63 {
64 message = new MimeMessage(Session.getDefaultInstance(new Properties()));
65 try
66 {
67 message.setContent(getResultData(), "text/plain");
68 }
69 catch (MessagingException e)
70 {
71 throw new RuntimeException("Failed to create Mime Message: " + e.getMessage(), e);
72 }
73 }
74 return message;
75 }
76
77 public Object getResultData()
78 {
79 return "Test Email Message";
80 }
81
82 public boolean compareResults(Object src, Object result)
83 {
84 if (src instanceof Message)
85 {
86 Object objSrc;
87 Object objRes;
88 try
89 {
90 objSrc = ((Message) src).getContent();
91 objRes = ((Message) result).getContent();
92 }
93 catch (Exception e)
94 {
95 throw new RuntimeException(e.getMessage(), e);
96 }
97 if (objSrc == null || objRes == null)
98 {
99 return false;
100 }
101 return objRes.equals(objSrc);
102 }
103 return super.compareResults(src, result);
104 }
105
106 public void testStringSourceType() throws Exception
107 {
108 try
109 {
110 assertFalse(getTransformer().isSourceTypeSupported(String.class));
111 getTransformer().transform(getResultData());
112 fail("Should throw exception for string source type");
113 }
114 catch (TransformerException e)
115 {
116
117 assertTrue(true);
118 }
119 }
120
121 public void testStringSourceTypeWithIgnoreBadInput() throws Exception
122 {
123 AbstractTransformer trans = (AbstractTransformer) getTransformer();
124 trans.setIgnoreBadInput(true);
125 Object result = trans.transform(getResultData());
126 trans.setIgnoreBadInput(false);
127 assertSame(result, getResultData());
128 }
129 }