package camelinaction;
import java.security.Key;
import java.security.KeyStore;
import org.apache.camel.Exchange;
import org.apache.camel.test.spring.CamelSpringTestSupport;
import org.apache.camel.util.jsse.KeyStoreParameters;
import org.junit.Test;
import org.springframework.context.support.AbstractXmlApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class SpringMessageEncryptionTest extends CamelSpringTestSupport {
// TODO remove this once keystoreparam support added to crypto dataformat
public static Key loadKey() throws Exception {
KeyStoreParameters keystore = new KeyStoreParameters();
keystore.setPassword("supersecret");
keystore.setResource("./cia_secrets.jceks");
keystore.setType("JCEKS");
KeyStore store = keystore.createKeyStore();
return store.getKey("ciasecrets", "secret".toCharArray());
}
@Override
protected AbstractXmlApplicationContext createApplicationContext() {
return new ClassPathXmlApplicationContext(new String[]{"META-INF/spring/message-encryption.xml"});
}
@Test
public void testEncryptAndDecryptMessage() throws Exception {
getMockEndpoint("mock:unencrypted").expectedBodiesReceived("Hello World");
template.sendBody("direct:start", "Hello World");
assertMockEndpointsSatisfied();
Exchange exchange = getMockEndpoint("mock:encrypted").getReceivedExchanges().get(0);
assertNotEquals("Hello World", exchange.getIn().getBody());
}
}