source: contrib/MailArchiver/sources/vendor/mime4j/apache-mime4j-0.7-SNAPSHOT-20110327.010440-17/dom/src/test/java/org/apache/james/mime4j/dom/HeaderTest.java @ 6785

Revision 6785, 6.0 KB checked in by rafaelraymundo, 12 years ago (diff)

Ticket #2946 - Liberado codigo do MailArchiver?. Documentação na subpasta DOCS.

Line 
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
20package org.apache.james.mime4j.dom;
21
22import junit.framework.TestCase;
23
24import org.apache.commons.io.output.ByteArrayOutputStream;
25import org.apache.james.mime4j.dom.Header;
26import org.apache.james.mime4j.dom.field.Field;
27import org.apache.james.mime4j.field.DefaultFieldParser;
28import org.apache.james.mime4j.message.HeaderImpl;
29import org.apache.james.mime4j.message.MimeWriter;
30import org.apache.james.mime4j.util.CharsetUtil;
31
32public class HeaderTest extends TestCase {
33
34    public static final String SUBJECT = "Subject: test";
35
36    public static final String TO = "To: anyuser <any@user>";
37
38    public void testHeader() throws Exception {
39        Header header = new HeaderImpl();
40        header.addField(DefaultFieldParser.parse(SUBJECT));
41        header.addField(DefaultFieldParser.parse(TO));
42
43        assertNotNull("Subject found", header.getField("Subject"));
44        assertNotNull("To found", header.getField("To"));
45
46        assertEquals("Headers equals", SUBJECT + "\r\n" + TO + "\r\n", header
47                .toString());
48    }
49   
50    private static final String SWISS_GERMAN_HELLO = "Gr\374ezi_z\344m\344";
51
52    public void testWriteSpecialCharacters() throws Exception {
53        String hello = SWISS_GERMAN_HELLO;
54        Header header = new HeaderImpl();
55        header.addField(DefaultFieldParser.parse("Hello: " + hello));
56       
57        Field field = header.getField("Hello");
58        assertNotNull(field);
59        // field.getBody is already a 7 bit ASCII string, after MIME4J-151
60        // assertEquals(hello, field.getBody());
61        assertEquals("Gr?ezi_z?m?", field.getBody());
62       
63        ByteArrayOutputStream buffer = new ByteArrayOutputStream();
64       
65        MimeWriter.DEFAULT.writeHeader(header, buffer);
66        String s = buffer.toString(CharsetUtil.US_ASCII.name());
67       
68        assertEquals("Hello: Gr?ezi_z?m?\r\n\r\n", s);
69    }
70
71    public void testRemoveFields() throws Exception {
72        Header header = new HeaderImpl();
73        header.addField(DefaultFieldParser.parse("Received: from foo by bar for james"));
74        header.addField(DefaultFieldParser.parse("Content-type: text/plain; charset=US-ASCII"));
75        header.addField(DefaultFieldParser.parse("ReCeIvEd: from bar by foo for james"));
76
77        assertEquals(3, header.getFields().size());
78        assertEquals(2, header.getFields("received").size());
79        assertEquals(1, header.getFields("Content-Type").size());
80
81        assertEquals(2, header.removeFields("rEcEiVeD"));
82
83        assertEquals(1, header.getFields().size());
84        assertEquals(0, header.getFields("received").size());
85        assertEquals(1, header.getFields("Content-Type").size());
86
87        assertEquals("Content-type", header.getFields().get(0).getName());
88    }
89
90    public void testRemoveNonExistantField() throws Exception {
91        Header header = new HeaderImpl();
92        header.addField(DefaultFieldParser.parse("Received: from foo by bar for james"));
93        header.addField(DefaultFieldParser.parse("Content-type: text/plain; charset=US-ASCII"));
94        header.addField(DefaultFieldParser.parse("ReCeIvEd: from bar by foo for james"));
95
96        assertEquals(0, header.removeFields("noSuchField"));
97
98        assertEquals(3, header.getFields().size());
99        assertEquals(2, header.getFields("received").size());
100        assertEquals(1, header.getFields("Content-Type").size());
101    }
102
103    public void testSetField() throws Exception {
104        Header header = new HeaderImpl();
105        header.addField(DefaultFieldParser.parse("From: mime4j@james.apache.org"));
106        header.addField(DefaultFieldParser.parse("Received: from foo by bar for james"));
107        header.addField(DefaultFieldParser.parse("Content-type: text/plain; charset=US-ASCII"));
108        header.addField(DefaultFieldParser.parse("ReCeIvEd: from bar by foo for james"));
109
110        header.setField(DefaultFieldParser.parse("received: from nobody by noone for james"));
111
112        assertEquals(3, header.getFields().size());
113        assertEquals(1, header.getFields("received").size());
114
115        assertEquals("From", header.getFields().get(0).getName());
116        assertEquals("received", header.getFields().get(1).getName());
117        assertEquals("Content-type", header.getFields().get(2).getName());
118    }
119
120    public void testSetNonExistantField() throws Exception {
121        Header header = new HeaderImpl();
122        header.addField(DefaultFieldParser.parse("Received: from foo by bar for james"));
123        header.addField(DefaultFieldParser.parse("Content-type: text/plain; charset=US-ASCII"));
124        header.addField(DefaultFieldParser.parse("ReCeIvEd: from bar by foo for james"));
125
126        header.setField(DefaultFieldParser.parse("Message-ID: <msg9901@apache.org>"));
127
128        assertEquals(4, header.getFields().size());
129        assertEquals(1, header.getFields("message-id").size());
130
131        assertEquals("Message-ID", header.getFields().get(3).getName());
132    }
133   
134}
Note: See TracBrowser for help on using the repository browser.