/*
* Copyright 2005-2010 the original author or authors.
*
* Licensed 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.springframework.ws.transport.mail;
import java.net.URI;
import javax.xml.namespace.QName;
import javax.xml.soap.MessageFactory;
import javax.xml.soap.SOAPConstants;
import javax.xml.soap.SOAPMessage;
import org.springframework.ws.soap.SoapMessage;
import org.springframework.ws.soap.saaj.SaajSoapMessage;
import org.springframework.ws.transport.WebServiceConnection;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.jvnet.mock_javamail.Mailbox;
public class MailMessageSenderIntegrationTest {
private MailMessageSender messageSender;
private MessageFactory messageFactory;
private static final String SOAP_ACTION = "http://springframework.org/DoIt";
@Before
public void setUp() throws Exception {
messageSender = new MailMessageSender();
messageSender.setFrom("Spring-WS SOAP Client <client@example.com>");
messageSender.setTransportUri("smtp://smtp.example.com");
messageSender.setStoreUri("imap://imap.example.com/INBOX");
messageFactory = MessageFactory.newInstance(SOAPConstants.SOAP_1_1_PROTOCOL);
messageSender.afterPropertiesSet();
}
@After
public void tearDown() throws Exception {
Mailbox.clearAll();
}
@Test
public void testSendAndReceiveQueueNoResponse() throws Exception {
WebServiceConnection connection = null;
try {
URI mailTo = new URI("mailto:server@example.com?subject=SOAP%20Test");
connection = messageSender.createConnection(mailTo);
SOAPMessage saajMessage = messageFactory.createMessage();
saajMessage.getSOAPBody().addBodyElement(new QName("http://springframework.org", "test"));
SoapMessage soapRequest = new SaajSoapMessage(saajMessage);
soapRequest.setSoapAction(SOAP_ACTION);
connection.send(soapRequest);
Assert.assertEquals("No mail message sent", 1, Mailbox.get("server@example.com").size());
}
finally {
if (connection != null) {
connection.close();
}
}
}
}