FileDocCategorySizeDatePackage
MailImplTest.javaAPI DocApache James 2.3.14343Fri Jan 12 12:56:36 GMT 2007org.apache.james.core

MailImplTest.java

/****************************************************************
 * Licensed to the Apache Software Foundation (ASF) under one   *
 * or more contributor license agreements.  See the NOTICE file *
 * distributed with this work for additional information        *
 * regarding copyright ownership.  The ASF licenses this file   *
 * to you under the Apache License, Version 2.0 (the            *
 * "License"); you may not use this file except in compliance   *
 * with the License.  You may obtain a copy of the License at   *
 *                                                              *
 *   http://www.apache.org/licenses/LICENSE-2.0                 *
 *                                                              *
 * Unless required by applicable law or agreed to in writing,   *
 * software distributed under the License is distributed on an  *
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
 * KIND, either express or implied.  See the License for the    *
 * specific language governing permissions and limitations      *
 * under the License.                                           *
 ****************************************************************/


package org.apache.james.core;

import org.apache.james.test.mock.james.MockMailServer;
import org.apache.james.test.mock.javaxmail.MockMimeMessage;
import org.apache.mailet.MailAddress;
import org.apache.mailet.Mail;

import javax.mail.MessagingException;
import java.util.ArrayList;

public class MailImplTest extends MailTestAllImplementations {

    protected Mail createMailImplementation() {
        return new MailImpl();
    }

    public void testConstr1() throws MessagingException {
        MailImpl mail = new MailImpl();

        helperTestInitialState(mail);
        helperTestMessageSize(mail, 0); // MimeMessageWrapper default is 0
        assertNull("no initial message", mail.getMessage());
        assertNull("no initial sender", mail.getSender());
        assertNull("no initial name", mail.getName());
    }

    public void testConstr2() throws MessagingException {
        ArrayList recepients = new ArrayList();
        String name = new MockMailServer().getId();
        String sender = "sender@localhost";
        MailAddress senderMailAddress = new MailAddress(sender);
        MailImpl mail = new MailImpl(name, senderMailAddress, recepients);

        helperTestInitialState(mail); // MimeMessageWrapper default is 0
        helperTestMessageSize(mail, 0); // MimeMessageWrapper default is 0
        assertNull("no initial message", mail.getMessage());
        assertEquals("sender", sender, mail.getSender().toString());
        assertEquals("name", name, mail.getName());

        mail.setMessage(new MockMimeMessage());
        assertNotNull("message", mail.getMessage());
    }

    public void testConstr3() throws MessagingException {
        ArrayList recepients = new ArrayList();
        String name = new MockMailServer().getId();
        String sender = "sender@localhost";
        MailAddress senderMailAddress = new MailAddress(sender);
        MockMimeMessage mimeMessage = new MockMimeMessage();
        MailImpl mail = new MailImpl(name, senderMailAddress, recepients, mimeMessage);

        helperTestInitialState(mail); 
        helperTestMessageSize(mail, 0);
        assertEquals("initial message", mimeMessage.getMessageID(), mail.getMessage().getMessageID());
        assertEquals("sender", sender, mail.getSender().toString());
        assertEquals("name", name, mail.getName());
        mail.dispose();
    }

    public void testDuplicate() throws MessagingException {
        MailImpl mail = new MailImpl();
        MailImpl duplicate = (MailImpl) mail.duplicate();
        assertNotSame("is real duplicate", mail, duplicate);
        helperTestInitialState(duplicate);
        helperTestMessageSize(duplicate, 0);
    }

    public void testDuplicateNewName() throws MessagingException {
        String newName = "aNewName";
        
        MailImpl mail = new MailImpl();
        assertFalse("before + after names differ", newName.equals(mail.getName()));
        
        MailImpl duplicate = (MailImpl) mail.duplicate(newName);
        assertEquals("new name set", newName, duplicate.getName());
        helperTestInitialState(duplicate);
        helperTestMessageSize(duplicate, 0);
    }
}