blob: b6fcfc04aadb5a2aa4460bf95f3e0334a57eb589 [file] [log] [blame]
/****************************************************************
* 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.transport.matchers;
import java.util.Collection;
import javax.mail.MessagingException;
import org.apache.mailet.MailAddress;
import org.apache.mailet.Matcher;
import org.apache.mailet.base.GenericMatcher;
import org.apache.mailet.base.test.FakeMail;
import org.apache.mailet.base.test.FakeMailContext;
import org.apache.mailet.base.test.FakeMatcherConfig;
import org.apache.mailet.base.test.MailUtil;
import junit.framework.TestCase;
public abstract class AbstractHasMailAttributeTest extends TestCase {
protected FakeMail mockedMail;
protected Matcher matcher;
protected final String MAIL_ATTRIBUTE_NAME = "org.apache.james.test.junit";
protected final String MAIL_ATTRIBUTE_VALUE = "true";
protected String mailAttributeName = "org.apache.james";
protected String mailAttributeValue = "false";
public AbstractHasMailAttributeTest() {
super(null);
}
protected void setMailAttributeName(String mailAttributeName) {
this.mailAttributeName = mailAttributeName;
}
protected void setMailAttributeValue(String mailAttributeValue) {
this.mailAttributeValue = mailAttributeValue;
}
protected void setupMockedMail() throws MessagingException {
mockedMail = MailUtil.createMockMail2Recipients();
mockedMail.setAttribute(mailAttributeName,
mailAttributeValue);
}
protected void setupMatcher() throws MessagingException {
matcher = createMatcher();
FakeMatcherConfig mci = new FakeMatcherConfig(getConfigOption()
+ getHasMailAttribute(), FakeMailContext.defaultContext());
matcher.init(mci);
}
// test if the mail attribute was matched
public void testAttributeIsMatched() throws MessagingException {
init();
setupAll();
Collection<MailAddress> matchedRecipients = matcher.match(mockedMail);
assertNotNull(matchedRecipients);
assertEquals(matchedRecipients.size(), mockedMail.getRecipients()
.size());
}
protected void init() {
setMailAttributeName(MAIL_ATTRIBUTE_NAME);
setMailAttributeValue(MAIL_ATTRIBUTE_VALUE);
}
protected void setupAll() throws MessagingException {
setupMockedMail();
setupMatcher();
}
// test if the mail attribute was not matched
public void testAttributeIsNotMatched() throws MessagingException {
setupAll();
Collection<MailAddress> matchedRecipients = matcher.match(mockedMail);
assertNull(matchedRecipients);
}
protected abstract String getHasMailAttribute();
protected abstract GenericMatcher createMatcher();
protected abstract String getConfigOption();
}