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