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