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 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
45
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
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 }