/*
* Copyright 2015 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
*
* 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.jbpm.process.workitem.email;
import java.util.Random;
import org.drools.core.process.instance.impl.WorkItemImpl;
import org.jbpm.test.util.AbstractBaseTest;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* This test tests whether or not it's possible to use the SendHtml functionality to send mail that will be <i>relayed</i>.
* </p>
* The situation that this test is the following:<ol>
* <li>You have a jBPM process that runs on a server on domain "willywonka.com".</li>
* <li>However, you want to send e-mail, from a node within your jBPM process, to e-mail addresses at "oompaloompa.org". </li>
* </ol>
* </p>
* Unfortunately, there's not really a way to test this with the Wiser/SubethaSMTP framework, which means you have to use real
* mail/smtp servers -- which is what this test does.
* </p>
* Fill in the fromAddress, fromPassword and toAddress (and if neccessary, modify the user and smtpServerFrom fields) and run this
* test. If no exceptions are thrown -- and you receive an e-mail, then you're good!
*/
public class SendHtmlRealTest extends AbstractBaseTest {
private static final Logger logger = LoggerFactory.getLogger(SendHtmlRealTest.class);
private Random random = new Random();
int uniqueTestNum = -1;
// the following fields should all be filled with information that relates to 1 domain: willywonka.com, for example.
String fromAddress = "XXXX @gmail.com";
String user = fromAddress.substring(0, fromAddress.indexOf("@"));
String fromPassword = "XXXX's password";
String smtpServerFrom = "smtp." + fromAddress.substring(fromAddress.indexOf("@")+1);
// the toAddress should be on a different domain -- oompaloompa.org, for example.
String toAddress = "XX XX @redhat.com";
@Before
public void setUp() throws Exception {
uniqueTestNum = random.nextInt(Integer.MAX_VALUE);
}
@Test
@Ignore
public void sendEmailViaAnotherDomain() throws Exception {
String testMethodName = Thread.currentThread().getStackTrace()[1].getMethodName();
logger.info("{} : {}", testMethodName, uniqueTestNum);
WorkItemImpl workItem = new WorkItemImpl();
workItem.setParameter( "To", toAddress );
workItem.setParameter( "From", fromAddress );
workItem.setParameter( "Reply-To", fromAddress );
workItem.setParameter( "Subject", this.getClass().getSimpleName() + " test message [" + uniqueTestNum + "]" );
workItem.setParameter( "Body", "\nThis is the test message generated by the "
+ testMethodName + " test (" + uniqueTestNum + ").\n" );
Connection connection = new Connection(smtpServerFrom, "25", user, fromPassword);
// Gmail requires use of the STARTTLS protocol
connection.setStartTls(true);
Email email = EmailWorkItemHandler.createEmail(workItem, connection);
SendHtml.sendHtml(email);
}
}