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