You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2023/07/19 15:33:43 UTC
[camel] branch main updated: [CAMEL-19613] AS2 component (#10735)
This is an automated email from the ASF dual-hosted git repository.
acosentino pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push:
new cb997651b57 [CAMEL-19613] AS2 component (#10735)
cb997651b57 is described below
commit cb997651b579b60ff9a5e7eca36a70efa007c38c
Author: Adriano Machado <60...@users.noreply.github.com>
AuthorDate: Wed Jul 19 11:33:35 2023 -0400
[CAMEL-19613] AS2 component (#10735)
Co-authored-by: Adriano Machado <ad...@redhat.com>
---
components/camel-as2/camel-as2-component/pom.xml | 9 +++++
.../camel/component/as2/AS2ServerManagerIT.java | 29 +++++----------
.../camel/component/as2/AbstractAS2ITSupport.java | 43 +++++++++++++++-------
.../camel/component/as2/MendelsonCertLoader.java | 23 +-----------
.../as2/MendelsonSslEndpointManualTest.java | 6 +++
5 files changed, 55 insertions(+), 55 deletions(-)
diff --git a/components/camel-as2/camel-as2-component/pom.xml b/components/camel-as2/camel-as2-component/pom.xml
index 9e691a1d0ba..e00c0b85848 100644
--- a/components/camel-as2/camel-as2-component/pom.xml
+++ b/components/camel-as2/camel-as2-component/pom.xml
@@ -72,6 +72,15 @@
<version>${commons-io-version}</version>
<scope>test</scope>
</dependency>
+
+ <!-- test infra -->
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test-infra-core</artifactId>
+ <version>${project.version}</version>
+ <scope>test</scope>
+ <type>test-jar</type>
+ </dependency>
</dependencies>
<build>
diff --git a/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2ServerManagerIT.java b/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2ServerManagerIT.java
index 22485cd5c24..19895a60d96 100644
--- a/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2ServerManagerIT.java
+++ b/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AS2ServerManagerIT.java
@@ -143,11 +143,6 @@ public class AS2ServerManagerIT extends AbstractAS2ITSupport {
+ "UNT+23+00000000000117'\n"
+ "UNZ+1+00000000000778'";
- private static AS2SignedDataGenerator gen;
-
- private static KeyPair issueKP;
- private static X509Certificate issueCert;
-
private static KeyPair signingKP;
private static X509Certificate signingCert;
private static List<X509Certificate> certList;
@@ -155,7 +150,6 @@ public class AS2ServerManagerIT extends AbstractAS2ITSupport {
private static KeyPair decryptingKP;
private static SSLContext clientSslContext;
- private static SSLContext serverSslContext;
@BeforeAll
public static void setup() throws Exception {
@@ -406,8 +400,6 @@ public class AS2ServerManagerIT extends AbstractAS2ITSupport {
kpg.initialize(1024, new SecureRandom());
String hackerIssueDN = "O=Hackers Unlimited Ltd., C=US";
var hackerIssueKP = kpg.generateKeyPair();
- var hackerissueCert = Utils.makeCertificate(
- hackerIssueKP, hackerIssueDN, hackerIssueKP, hackerIssueDN);
String hackerSigningDN = "CN=John Doe, E=j.doe@sharklasers.com, O=Self Signed, C=US";
var hackerSigningKP = kpg.generateKeyPair();
var hackerSigningCert = Utils.makeCertificate(
@@ -635,7 +627,8 @@ public class AS2ServerManagerIT extends AbstractAS2ITSupport {
new IssuerAndSerialNumber(new X500Name(signingCert.getIssuerDN().getName()), signingCert.getSerialNumber())));
attributes.add(new SMIMECapabilitiesAttribute(capabilities));
- gen = SigningUtils.createSigningGenerator(AS2SignatureAlgorithm.SHA256WITHRSA, certList.toArray(new X509Certificate[0]),
+ AS2SignedDataGenerator gen = SigningUtils.createSigningGenerator(AS2SignatureAlgorithm.SHA256WITHRSA,
+ certList.toArray(new X509Certificate[0]),
signingKP.getPrivate());
gen.addCertificates(certs);
@@ -650,8 +643,8 @@ public class AS2ServerManagerIT extends AbstractAS2ITSupport {
kpg.initialize(1024, new SecureRandom());
String issueDN = "O=Punkhorn Software, C=US";
- issueKP = kpg.generateKeyPair();
- issueCert = Utils.makeCertificate(
+ KeyPair issueKP = kpg.generateKeyPair();
+ X509Certificate issueCert = Utils.makeCertificate(
issueKP, issueDN, issueKP, issueDN);
//
@@ -687,8 +680,7 @@ public class AS2ServerManagerIT extends AbstractAS2ITSupport {
sslContextParameters.setKeyManagers(kmp);
sslContextParameters.setTrustManagers(clientSSLTrustManagers);
- SSLContext sslContext = sslContextParameters.createSSLContext(context);
- return sslContext;
+ return sslContextParameters.createSSLContext(context);
}
public SSLContext setupServerContext(CamelContext context) throws Exception {
@@ -710,20 +702,17 @@ public class AS2ServerManagerIT extends AbstractAS2ITSupport {
sslContextParameters.setTrustManagers(tmp);
sslContextParameters.setServerParameters(scsp);
- SSLContext sslContext = sslContextParameters.createSSLContext(context);
- return sslContext;
+ return sslContextParameters.createSSLContext(context);
}
@Override
- protected CamelContext createCamelContext() throws Exception {
- CamelContext context = super.createCamelContext();
- this.clientSslContext = setupClientContext(context);
- this.serverSslContext = setupClientContext(context);
+ public void configureContext(CamelContext context) throws Exception {
+ clientSslContext = setupClientContext(context);
+ SSLContext serverSslContext = setupClientContext(context);
AS2Component as2Component = (AS2Component) context.getComponent("as2");
AS2Configuration configuration = as2Component.getConfiguration();
configuration.setSslContext(serverSslContext);
configuration.setDecryptingPrivateKey(decryptingKP.getPrivate());
- return context;
}
@Override
diff --git a/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AbstractAS2ITSupport.java b/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AbstractAS2ITSupport.java
index 1b09968232d..2e0dd9012ee 100644
--- a/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AbstractAS2ITSupport.java
+++ b/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/AbstractAS2ITSupport.java
@@ -23,24 +23,31 @@ import java.util.Properties;
import org.apache.camel.CamelContext;
import org.apache.camel.CamelExecutionException;
+import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.support.PropertyBindingSupport;
-import org.apache.camel.test.junit5.CamelTestSupport;
+import org.apache.camel.test.infra.core.CamelContextExtension;
+import org.apache.camel.test.infra.core.TransientCamelContextExtension;
+import org.apache.camel.test.infra.core.annotations.RouteFixture;
+import org.apache.camel.test.infra.core.api.CamelTestSupportHelper;
+import org.apache.camel.test.infra.core.api.ConfigurableContext;
+import org.apache.camel.test.infra.core.api.ConfigurableRoute;
import org.junit.jupiter.api.TestInstance;
import org.junit.jupiter.api.TestInstance.Lifecycle;
+import org.junit.jupiter.api.extension.RegisterExtension;
/**
* Abstract base class for AS2 Integration tests generated by Camel API component maven plugin.
*/
@TestInstance(Lifecycle.PER_CLASS)
-public class AbstractAS2ITSupport extends CamelTestSupport {
+public abstract class AbstractAS2ITSupport implements CamelTestSupportHelper, ConfigurableContext, ConfigurableRoute {
private static final String TEST_OPTIONS_PROPERTIES = "/test-options.properties";
- @Override
- protected CamelContext createCamelContext() throws Exception {
-
- final CamelContext context = super.createCamelContext();
+ @RegisterExtension
+ public static final CamelContextExtension camelContextExtension = new TransientCamelContextExtension();
+ @Override
+ public void configureContext(CamelContext context) throws Exception {
// read AS2 component configuration from TEST_OPTIONS_PROPERTIES
final Properties properties = new Properties();
try {
@@ -63,18 +70,28 @@ public class AbstractAS2ITSupport extends CamelTestSupport {
final AS2Component component = new AS2Component(context);
component.setConfiguration(configuration);
context.addComponent("as2", component);
+ }
- return context;
+ @Override
+ public CamelContextExtension getCamelContextExtension() {
+ return camelContextExtension;
}
- @SuppressWarnings("unchecked")
- protected <T> T requestBodyAndHeaders(String endpointUri, Object body, Map<String, Object> headers)
- throws CamelExecutionException {
- return (T) template().requestBodyAndHeaders(endpointUri, body, headers);
+ @Override
+ @RouteFixture
+ public void createRouteBuilder(CamelContext context) throws Exception {
+ final RouteBuilder routeBuilder = createRouteBuilder();
+
+ if (routeBuilder != null) {
+ context.addRoutes(routeBuilder);
+ }
}
+ protected abstract RouteBuilder createRouteBuilder() throws Exception;
+
@SuppressWarnings("unchecked")
- protected <T> T requestBody(String endpoint, Object body) throws CamelExecutionException {
- return (T) template().requestBody(endpoint, body);
+ protected <T> T requestBodyAndHeaders(String endpointUri, Object body, Map<String, Object> headers)
+ throws CamelExecutionException {
+ return (T) getCamelContextExtension().getProducerTemplate().requestBodyAndHeaders(endpointUri, body, headers);
}
}
diff --git a/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/MendelsonCertLoader.java b/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/MendelsonCertLoader.java
index c88b6997e9e..cc94894bf60 100644
--- a/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/MendelsonCertLoader.java
+++ b/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/MendelsonCertLoader.java
@@ -18,7 +18,6 @@ package org.apache.camel.component.as2;
import java.io.IOException;
import java.io.InputStream;
-import java.nio.charset.StandardCharsets;
import java.security.KeyManagementException;
import java.security.KeyStore;
import java.security.KeyStoreException;
@@ -30,12 +29,10 @@ import java.security.cert.CertificateException;
import java.security.cert.CertificateFactory;
import java.security.spec.InvalidKeySpecException;
import java.util.ArrayList;
-import java.util.Base64;
import java.util.List;
import javax.net.ssl.SSLContext;
-import org.apache.commons.io.IOUtils;
import org.apache.http.conn.ssl.TrustAllStrategy;
import org.apache.http.ssl.SSLContexts;
import org.slf4j.Logger;
@@ -145,11 +142,6 @@ public class MendelsonCertLoader {
return privateKey;
}
- private List<Certificate> getCertificatesFromStream(InputStream inputStream) throws CertificateException {
- CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509");
- return (List<Certificate>) certificateFactory.generateCertificates(inputStream);
- }
-
private Certificate getCertificateFromStream(InputStream inputStream) throws IOException, CertificateException {
CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509");
return certificateFactory.generateCertificate(inputStream);
@@ -173,23 +165,10 @@ public class MendelsonCertLoader {
return (PrivateKey) ks.getKey(
ks.aliases().nextElement(),
keyStorePassword.toCharArray());
- } catch (KeyStoreException e) {
- LOG.error("Error while retrieving private key" + e);
- } catch (UnrecoverableKeyException e) {
+ } catch (KeyStoreException | UnrecoverableKeyException e) {
LOG.error("Error while retrieving private key" + e);
}
throw new IllegalStateException("Failed to construct a PrivateKey from provided InputStream");
}
- private byte[] getBytesFromPem(InputStream inputStream) throws IOException {
- String privateKeyPEM
- = IOUtils.toString(inputStream, StandardCharsets.UTF_8).replaceAll("-{5}.+-{5}", "").replaceAll("\\s", "");
- return Base64.getDecoder().decode(privateKeyPEM);
- }
-
- private byte[] getBytesFromPKCS12(InputStream inputStream) throws IOException {
- String privateKeyPKCS12 = IOUtils.toString(inputStream, StandardCharsets.UTF_8);
- return privateKeyPKCS12.getBytes(StandardCharsets.UTF_8);
- }
-
}
diff --git a/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/MendelsonSslEndpointManualTest.java b/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/MendelsonSslEndpointManualTest.java
index 5382b74c9cb..b4e0f25d4fa 100644
--- a/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/MendelsonSslEndpointManualTest.java
+++ b/components/camel-as2/camel-as2-component/src/test/java/org/apache/camel/component/as2/MendelsonSslEndpointManualTest.java
@@ -24,6 +24,7 @@ import javax.net.ssl.HostnameVerifier;
import org.apache.camel.CamelContext;
import org.apache.camel.Exchange;
+import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.as2.api.AS2EncryptionAlgorithm;
import org.apache.camel.component.as2.api.AS2MessageStructure;
import org.apache.camel.component.as2.api.AS2SignatureAlgorithm;
@@ -125,4 +126,9 @@ public class MendelsonSslEndpointManualTest extends AbstractAS2ITSupport {
"you can check your message in http://testas2.mendelson-e-c.com:8080/webas2/ " +
"Login guest, password guest");
}
+
+ @Override
+ protected RouteBuilder createRouteBuilder() throws Exception {
+ return null;
+ }
}