1   /****************************************************************
2    * Licensed to the Apache Software Foundation (ASF) under one   *
3    * or more contributor license agreements.  See the NOTICE file *
4    * distributed with this work for additional information        *
5    * regarding copyright ownership.  The ASF licenses this file   *
6    * to you under the Apache License, Version 2.0 (the            *
7    * "License"); you may not use this file except in compliance   *
8    * with the License.  You may obtain a copy of the License at   *
9    *                                                              *
10   *   http://www.apache.org/licenses/LICENSE-2.0                 *
11   *                                                              *
12   * Unless required by applicable law or agreed to in writing,   *
13   * software distributed under the License is distributed on an  *
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
15   * KIND, either express or implied.  See the License for the    *
16   * specific language governing permissions and limitations      *
17   * under the License.                                           *
18   ****************************************************************/
19  
20  package org.apache.james.transport.mailets;
21  
22  import org.apache.mailet.base.test.FakeMail;
23  import org.apache.mailet.base.test.FakeMailContext;
24  import org.apache.mailet.base.test.FakeMailetConfig;
25  import org.apache.mailet.Mail;
26  import org.apache.mailet.Mailet;
27  
28  import javax.mail.MessagingException;
29  import javax.mail.Session;
30  import javax.mail.internet.MimeBodyPart;
31  import javax.mail.internet.MimeMessage;
32  import javax.mail.internet.MimeMultipart;
33  
34  import java.io.IOException;
35  import java.util.Properties;
36  
37  import junit.framework.TestCase;
38  
39  public class OnlyTextTest extends TestCase {
40  
41      /**
42       * Test method for
43       * 'it.voidlabs.elysium.mailgateway.transport.mailets.OnlyText.service(Mail)
44       * '
45       * 
46       * @throws MessagingException
47       * @throws IOException
48       */
49      public void testService() throws MessagingException, IOException {
50          Mailet mailet;
51          FakeMailetConfig mci;
52          MimeMessage message;
53          Mail mail;
54  
55          mailet = new OnlyText();
56          mci = new FakeMailetConfig("Test", new FakeMailContext());
57          mailet.init(mci);
58  
59          // ----------------
60  
61          message = new MimeMessage(Session.getDefaultInstance(new Properties()));
62          message.setSubject("prova");
63          message.setText("Questa \u00E8 una prova");
64          message.saveChanges();
65  
66          mail = new FakeMail(message);
67          mailet.service(mail);
68  
69          assertEquals("prova", mail.getMessage().getSubject());
70          assertEquals("Questa \u00E8 una prova", mail.getMessage().getContent());
71  
72          // -----------------
73  
74          message = new MimeMessage(Session.getDefaultInstance(new Properties()));
75          message.setSubject("prova");
76          MimeMultipart mp = new MimeMultipart();
77          MimeBodyPart bp = new MimeBodyPart();
78          bp.setText("Questo \u00E8 un part interno1");
79          mp.addBodyPart(bp);
80          bp = new MimeBodyPart();
81          bp.setText("Questo \u00E8 un part interno2");
82          mp.addBodyPart(bp);
83          bp = new MimeBodyPart();
84          MimeMessage message2 = new MimeMessage(Session
85                  .getDefaultInstance(new Properties()));
86          bp.setContent(message2, "message/rfc822");
87          mp.addBodyPart(bp);
88          message.setContent(mp);
89          message.saveChanges();
90  
91          mail = new FakeMail(message);
92          mailet.service(mail);
93  
94          assertEquals("prova", mail.getMessage().getSubject());
95          assertEquals("Questo \u00E8 un part interno1", mail.getMessage()
96                  .getContent());
97  
98          // -----------------
99  
100         message = new MimeMessage(Session.getDefaultInstance(new Properties()));
101         message.setSubject("prova");
102         mp = new MimeMultipart();
103         bp = new MimeBodyPart();
104         bp.setText("Questo \u00E8 un part interno1");
105         mp.addBodyPart(bp);
106         bp = new MimeBodyPart();
107         bp.setText("Questo \u00E8 un part interno2");
108         mp.addBodyPart(bp);
109         bp = new MimeBodyPart();
110         message2 = new MimeMessage(Session.getDefaultInstance(new Properties()));
111         bp.setContent(message2, "message/rfc822");
112         mp.addBodyPart(bp);
113 
114         MimeMultipart mpext = new MimeMultipart();
115         bp = new MimeBodyPart();
116         bp.setContent(mp);
117         mpext.addBodyPart(bp);
118 
119         message.setContent(mpext);
120         message.saveChanges();
121 
122         mail = new FakeMail(message);
123         mailet.service(mail);
124 
125         assertEquals("prova", mail.getMessage().getSubject());
126         assertEquals("Questo \u00E8 un part interno1", mail.getMessage()
127                 .getContent());
128 
129         // ---------------------
130 
131         message = new MimeMessage(Session.getDefaultInstance(new Properties()));
132         message.setSubject("prova");
133         message.setContent("<p>Questa \u00E8 una prova<br />di html</p>",
134                 "text/html");
135         message.saveChanges();
136 
137         mail = new FakeMail(message);
138         mailet.service(mail);
139 
140         assertEquals("prova", mail.getMessage().getSubject());
141         assertEquals("Questa \u00E8 una prova\ndi html\n", mail.getMessage()
142                 .getContent());
143         assertTrue(mail.getMessage().isMimeType("text/plain"));
144 
145         // -----------------
146 
147         message = new MimeMessage(Session.getDefaultInstance(new Properties()));
148         message.setSubject("prova");
149         mp = new MimeMultipart();
150         bp = new MimeBodyPart();
151         message2 = new MimeMessage(Session.getDefaultInstance(new Properties()));
152         bp.setContent(message2, "message/rfc822");
153         mp.addBodyPart(bp);
154         bp = new MimeBodyPart();
155         bp.setContent("<p>Questa \u00E8 una prova<br />di html</p>", "text/html");
156         mp.addBodyPart(bp);
157         message.setContent(mp);
158         message.saveChanges();
159 
160         mail = new FakeMail(message);
161         mailet.service(mail);
162 
163         assertEquals("prova", mail.getMessage().getSubject());
164         assertEquals("Questa \u00E8 una prova\ndi html\n", mail.getMessage()
165                 .getContent());
166         assertTrue(mail.getMessage().isMimeType("text/plain"));
167     }
168 
169     public void testHtml2Text() throws MessagingException {
170         OnlyText mailet = new OnlyText();
171         mailet.init(new FakeMailetConfig("Test", new FakeMailContext()));
172 
173         String html;
174         html = "<b>Prova di html</b><br /><p>Un paragrafo</p><LI>e ci mettiamo anche una lista</LI><br>";
175         assertEquals(
176                 "Prova di html\nUn paragrafo\n\n* e ci mettiamo anche una lista\n",
177                 mailet.html2Text(html));
178 
179         html = "<b>Vediamo invece come andiamo con gli entities</b><br />&egrave;&agrave; &amp;grave;<br>";
180         assertEquals(
181                 "Vediamo invece come andiamo con gli entities\n\u00E8\u00E0 &grave;\n",
182                 mailet.html2Text(html));
183     }
184 
185 }