You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by co...@apache.org on 2019/05/07 16:00:33 UTC
[camel] branch master updated: CAMEL-13471 - Adding more tests
This is an automated email from the ASF dual-hosted git repository.
coheigea pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/master by this push:
new 76fadde CAMEL-13471 - Adding more tests
76fadde is described below
commit 76fadde4bf8aa33f1429553814c76abe12a4357e
Author: Colm O hEigeartaigh <co...@apache.org>
AuthorDate: Tue May 7 17:00:06 2019 +0100
CAMEL-13471 - Adding more tests
---
.../java/org/apache/camel/coap/CoAPComponent.java | 2 +-
.../java/org/apache/camel/coap/CoAPEndpoint.java | 2 +-
.../java/org/apache/camel/coap/CoAPProducer.java | 2 +-
.../apache/camel/coap/CoAPComponentTCPTLSTest.java | 39 ++
.../apache/camel/coap/CoAPComponentTLSTest.java | 410 +--------------------
...tTLSTest.java => CoAPComponentTLSTestBase.java} | 214 +++++------
6 files changed, 162 insertions(+), 507 deletions(-)
diff --git a/components/camel-coap/src/main/java/org/apache/camel/coap/CoAPComponent.java b/components/camel-coap/src/main/java/org/apache/camel/coap/CoAPComponent.java
index b82b323..4863e5e 100644
--- a/components/camel-coap/src/main/java/org/apache/camel/coap/CoAPComponent.java
+++ b/components/camel-coap/src/main/java/org/apache/camel/coap/CoAPComponent.java
@@ -72,7 +72,7 @@ public class CoAPComponent extends DefaultComponent implements RestConsumerFacto
coapBuilder.setNetworkConfig(config);
// Configure TLS and / or TCP
- if (CoAPEndpoint.enableTLS(endpoint.getUri())) {
+ if (CoAPEndpoint.enableDTLS(endpoint.getUri())) {
DTLSConnector connector = endpoint.createDTLSConnector(address, false);
coapBuilder.setConnector(connector);
} else if (CoAPEndpoint.enableTCP(endpoint.getUri())) {
diff --git a/components/camel-coap/src/main/java/org/apache/camel/coap/CoAPEndpoint.java b/components/camel-coap/src/main/java/org/apache/camel/coap/CoAPEndpoint.java
index d940ca1..f7b0db4 100644
--- a/components/camel-coap/src/main/java/org/apache/camel/coap/CoAPEndpoint.java
+++ b/components/camel-coap/src/main/java/org/apache/camel/coap/CoAPEndpoint.java
@@ -311,7 +311,7 @@ public class CoAPEndpoint extends DefaultEndpoint {
}
- public static boolean enableTLS(URI uri) {
+ public static boolean enableDTLS(URI uri) {
return "coaps".equals(uri.getScheme());
}
diff --git a/components/camel-coap/src/main/java/org/apache/camel/coap/CoAPProducer.java b/components/camel-coap/src/main/java/org/apache/camel/coap/CoAPProducer.java
index 5b834da..aefa7f6 100644
--- a/components/camel-coap/src/main/java/org/apache/camel/coap/CoAPProducer.java
+++ b/components/camel-coap/src/main/java/org/apache/camel/coap/CoAPProducer.java
@@ -102,7 +102,7 @@ public class CoAPProducer extends DefaultProducer {
client = new CoapClient(uri);
// Configure TLS and / or TCP
- if (CoAPEndpoint.enableTLS(uri)) {
+ if (CoAPEndpoint.enableDTLS(uri)) {
DTLSConnector connector = endpoint.createDTLSConnector(null, true);
CoapEndpoint.Builder coapBuilder = new CoapEndpoint.Builder();
coapBuilder.setConnector(connector);
diff --git a/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPComponentTCPTLSTest.java b/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPComponentTCPTLSTest.java
new file mode 100644
index 0000000..8582613
--- /dev/null
+++ b/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPComponentTCPTLSTest.java
@@ -0,0 +1,39 @@
+/*
+ * 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.camel.coap;
+
+/**
+ * TCP + TLS tests
+ */
+public class CoAPComponentTCPTLSTest extends CoAPComponentTLSTestBase {
+
+ @Override
+ protected String getProtocol() {
+ return "coaps+tcp";
+ }
+
+ @Override
+ protected boolean isPSKSupported() {
+ return false;
+ }
+
+ @Override
+ protected boolean isRPKSupported() {
+ return false;
+ }
+
+}
diff --git a/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPComponentTLSTest.java b/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPComponentTLSTest.java
index 1257b66..549050d 100644
--- a/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPComponentTLSTest.java
+++ b/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPComponentTLSTest.java
@@ -16,410 +16,24 @@
*/
package org.apache.camel.coap;
-import java.io.IOException;
-import java.security.GeneralSecurityException;
-import java.security.KeyStore;
-import java.security.PrivateKey;
-import java.security.PublicKey;
-
-import javax.crypto.KeyGenerator;
-
-import org.apache.camel.Exchange;
-import org.apache.camel.Message;
-import org.apache.camel.Processor;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.support.jsse.KeyManagersParameters;
-import org.apache.camel.support.jsse.KeyStoreParameters;
-import org.apache.camel.support.jsse.SSLContextParameters;
-import org.apache.camel.support.jsse.SSLContextServerParameters;
-import org.apache.camel.support.jsse.TrustManagersParameters;
-import org.apache.camel.test.AvailablePortFinder;
-import org.apache.camel.test.junit4.CamelTestSupport;
-import org.eclipse.californium.core.coap.CoAP;
-import org.eclipse.californium.core.coap.MediaTypeRegistry;
-import org.eclipse.californium.scandium.dtls.pskstore.PskStore;
-import org.eclipse.californium.scandium.dtls.pskstore.StaticPskStore;
-import org.eclipse.californium.scandium.dtls.rpkstore.TrustedRpkStore;
-import org.junit.Test;
-
-public class CoAPComponentTLSTest extends CamelTestSupport {
-
- private static final int PORT = AvailablePortFinder.getNextAvailable();
- private static final int PORT2 = AvailablePortFinder.getNextAvailable();
- private static final int PORT3 = AvailablePortFinder.getNextAvailable();
- private static final int PORT4 = AvailablePortFinder.getNextAvailable();
- private static final int PORT5 = AvailablePortFinder.getNextAvailable();
- private static final int PORT6 = AvailablePortFinder.getNextAvailable();
- private static final int PORT7 = AvailablePortFinder.getNextAvailable();
- private static final int PORT8 = AvailablePortFinder.getNextAvailable();
- private static final int PORT9 = AvailablePortFinder.getNextAvailable();
-
- @Test
- public void testSuccessfulCall() throws Exception {
- MockEndpoint mock = getMockEndpoint("mock:result");
- mock.expectedMinimumMessageCount(1);
- mock.expectedBodiesReceived("Hello Camel CoAP");
- mock.expectedHeaderReceived(Exchange.CONTENT_TYPE, MediaTypeRegistry.toString(MediaTypeRegistry.APPLICATION_OCTET_STREAM));
- mock.expectedHeaderReceived(CoAPConstants.COAP_RESPONSE_CODE, CoAP.ResponseCode.CONTENT.toString());
- sendBodyAndHeader("direct:start", "Camel CoAP", CoAPConstants.COAP_METHOD, "POST");
- assertMockEndpointsSatisfied();
- }
-
- @Test
- public void testNoTruststore() throws Exception {
- MockEndpoint mock = getMockEndpoint("mock:result");
- mock.expectedMessageCount(0);
- sendBodyAndHeader("direct:notruststore", "Camel CoAP", CoAPConstants.COAP_METHOD, "POST");
- assertMockEndpointsSatisfied();
- }
-
- @Test
- public void testTrustValidationFailed() throws Exception {
- MockEndpoint mock = getMockEndpoint("mock:result");
- mock.expectedMessageCount(0);
- sendBodyAndHeader("direct:failedtrust", "Camel CoAP", CoAPConstants.COAP_METHOD, "POST");
- assertMockEndpointsSatisfied();
- }
-
- @Test
- public void testSelfSigned() throws Exception {
- MockEndpoint mock = getMockEndpoint("mock:result");
- mock.expectedMinimumMessageCount(1);
- mock.expectedBodiesReceived("Hello Camel CoAP");
- mock.expectedHeaderReceived(Exchange.CONTENT_TYPE, MediaTypeRegistry.toString(MediaTypeRegistry.APPLICATION_OCTET_STREAM));
- mock.expectedHeaderReceived(CoAPConstants.COAP_RESPONSE_CODE, CoAP.ResponseCode.CONTENT.toString());
- sendBodyAndHeader("direct:selfsigned", "Camel CoAP", CoAPConstants.COAP_METHOD, "POST");
- assertMockEndpointsSatisfied();
- }
-
- @Test
- public void testClientAuthentication() throws Exception {
- MockEndpoint mock = getMockEndpoint("mock:result");
- mock.expectedMinimumMessageCount(1);
- mock.expectedBodiesReceived("Hello Camel CoAP");
- mock.expectedHeaderReceived(Exchange.CONTENT_TYPE, MediaTypeRegistry.toString(MediaTypeRegistry.APPLICATION_OCTET_STREAM));
- mock.expectedHeaderReceived(CoAPConstants.COAP_RESPONSE_CODE, CoAP.ResponseCode.CONTENT.toString());
- sendBodyAndHeader("direct:clientauth", "Camel CoAP", CoAPConstants.COAP_METHOD, "POST");
- assertMockEndpointsSatisfied();
- }
-
- @Test
- public void testFailedClientAuthentication() throws Exception {
- MockEndpoint mock = getMockEndpoint("mock:result");
- mock.expectedMessageCount(0);
- sendBodyAndHeader("direct:failedclientauth", "Camel CoAP", CoAPConstants.COAP_METHOD, "POST");
- assertMockEndpointsSatisfied();
- }
-
- @Test
- public void testCipherSuites() throws Exception {
- MockEndpoint mock = getMockEndpoint("mock:result");
- mock.expectedMinimumMessageCount(1);
- mock.expectedBodiesReceived("Hello Camel CoAP");
- mock.expectedHeaderReceived(Exchange.CONTENT_TYPE, MediaTypeRegistry.toString(MediaTypeRegistry.APPLICATION_OCTET_STREAM));
- mock.expectedHeaderReceived(CoAPConstants.COAP_RESPONSE_CODE, CoAP.ResponseCode.CONTENT.toString());
- sendBodyAndHeader("direct:ciphersuites", "Camel CoAP", CoAPConstants.COAP_METHOD, "POST");
- assertMockEndpointsSatisfied();
- }
-
- @Test
- public void testRawPublicKey() throws Exception {
- MockEndpoint mock = getMockEndpoint("mock:result");
- mock.expectedMinimumMessageCount(1);
- mock.expectedBodiesReceived("Hello Camel CoAP");
- mock.expectedHeaderReceived(Exchange.CONTENT_TYPE, MediaTypeRegistry.toString(MediaTypeRegistry.APPLICATION_OCTET_STREAM));
- mock.expectedHeaderReceived(CoAPConstants.COAP_RESPONSE_CODE, CoAP.ResponseCode.CONTENT.toString());
- sendBodyAndHeader("direct:rpk", "Camel CoAP", CoAPConstants.COAP_METHOD, "POST");
- assertMockEndpointsSatisfied();
- }
-
- @Test
- public void testRawPublicKeyNoTruststore() throws Exception {
- MockEndpoint mock = getMockEndpoint("mock:result");
- mock.expectedMessageCount(0);
- sendBodyAndHeader("direct:rpknotruststore", "Camel CoAP", CoAPConstants.COAP_METHOD, "POST");
- assertMockEndpointsSatisfied();
- }
-
- @Test
- public void testRawPublicKeyFailedTrust() throws Exception {
- MockEndpoint mock = getMockEndpoint("mock:result");
- mock.expectedMessageCount(0);
- sendBodyAndHeader("direct:rpkfailedtrust", "Camel CoAP", CoAPConstants.COAP_METHOD, "POST");
- assertMockEndpointsSatisfied();
- }
-
- @Test
- public void testRawPublicKeyClientAuth() throws Exception {
- MockEndpoint mock = getMockEndpoint("mock:result");
- mock.expectedMinimumMessageCount(1);
- mock.expectedBodiesReceived("Hello Camel CoAP");
- mock.expectedHeaderReceived(Exchange.CONTENT_TYPE, MediaTypeRegistry.toString(MediaTypeRegistry.APPLICATION_OCTET_STREAM));
- mock.expectedHeaderReceived(CoAPConstants.COAP_RESPONSE_CODE, CoAP.ResponseCode.CONTENT.toString());
- sendBodyAndHeader("direct:rpkclientauth", "Camel CoAP", CoAPConstants.COAP_METHOD, "POST");
- assertMockEndpointsSatisfied();
- }
-
- @Test
- public void testPreSharedKey() throws Exception {
- MockEndpoint mock = getMockEndpoint("mock:result");
- mock.expectedMinimumMessageCount(1);
- mock.expectedBodiesReceived("Hello Camel CoAP");
- mock.expectedHeaderReceived(Exchange.CONTENT_TYPE, MediaTypeRegistry.toString(MediaTypeRegistry.APPLICATION_OCTET_STREAM));
- mock.expectedHeaderReceived(CoAPConstants.COAP_RESPONSE_CODE, CoAP.ResponseCode.CONTENT.toString());
- sendBodyAndHeader("direct:psk", "Camel CoAP", CoAPConstants.COAP_METHOD, "POST");
- assertMockEndpointsSatisfied();
- }
-
- @Test
- public void testPreSharedKeyCipherSuite() throws Exception {
- MockEndpoint mock = getMockEndpoint("mock:result");
- mock.expectedMinimumMessageCount(1);
- mock.expectedBodiesReceived("Hello Camel CoAP");
- mock.expectedHeaderReceived(Exchange.CONTENT_TYPE, MediaTypeRegistry.toString(MediaTypeRegistry.APPLICATION_OCTET_STREAM));
- mock.expectedHeaderReceived(CoAPConstants.COAP_RESPONSE_CODE, CoAP.ResponseCode.CONTENT.toString());
- sendBodyAndHeader("direct:pskciphersuite", "Camel CoAP", CoAPConstants.COAP_METHOD, "POST");
- assertMockEndpointsSatisfied();
- }
-
- @Test
- public void testPreSharedKeyX509() throws Exception {
- MockEndpoint mock = getMockEndpoint("mock:result");
- mock.expectedMinimumMessageCount(1);
- mock.expectedBodiesReceived("Hello Camel CoAP");
- mock.expectedHeaderReceived(Exchange.CONTENT_TYPE, MediaTypeRegistry.toString(MediaTypeRegistry.APPLICATION_OCTET_STREAM));
- mock.expectedHeaderReceived(CoAPConstants.COAP_RESPONSE_CODE, CoAP.ResponseCode.CONTENT.toString());
- sendBodyAndHeader("direct:pskx509", "Camel CoAP", CoAPConstants.COAP_METHOD, "POST");
- assertMockEndpointsSatisfied();
- }
+/**
+ * UDP + DTLS tests
+ */
+public class CoAPComponentTLSTest extends CoAPComponentTLSTestBase {
- @Test
- public void testTCP() throws Exception {
- MockEndpoint mock = getMockEndpoint("mock:result");
- mock.expectedMinimumMessageCount(1);
- mock.expectedBodiesReceived("Hello Camel CoAP");
- mock.expectedHeaderReceived(Exchange.CONTENT_TYPE, MediaTypeRegistry.toString(MediaTypeRegistry.APPLICATION_OCTET_STREAM));
- mock.expectedHeaderReceived(CoAPConstants.COAP_RESPONSE_CODE, CoAP.ResponseCode.CONTENT.toString());
- sendBodyAndHeader("direct:tcp", "Camel CoAP", CoAPConstants.COAP_METHOD, "POST");
- assertMockEndpointsSatisfied();
+ @Override
+ protected String getProtocol() {
+ return "coaps";
}
-
@Override
- protected RouteBuilder createRouteBuilder() throws Exception {
-
- registerTLSConfiguration();
-
- return new RouteBuilder() {
- @Override
- public void configure() throws Exception {
-
- fromF("coaps://localhost:%d/TestResource?sslContextParameters=#serviceSSLContextParameters", PORT)
- .transform(body().prepend("Hello "));
-
- fromF("coaps://localhost:%d/TestResource?alias=selfsigned&sslContextParameters=#selfSignedServiceSSLContextParameters", PORT2)
- .transform(body().prepend("Hello "));
-
- fromF("coaps://localhost:%d/TestResource?sslContextParameters=#clientAuthServiceSSLContextParameters", PORT3)
- .transform(body().prepend("Hello "));
-
- fromF("coaps://localhost:%d/TestResource?sslContextParameters=#serviceSSLContextParameters&cipherSuites=TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8", PORT4)
- .transform(body().prepend("Hello "));
-
- fromF("coaps://localhost:%d/TestResource?privateKey=#privateKey&publicKey=#publicKey", PORT5)
- .transform(body().prepend("Hello "));
-
- fromF("coaps://localhost:%d/TestResource?privateKey=#privateKey&publicKey=#publicKey&clientAuthentication=REQUIRE&trustedRpkStore=#trustedRpkStore", PORT6)
- .transform(body().prepend("Hello "));
-
- fromF("coaps://localhost:%d/TestResource?pskStore=#pskStore", PORT7)
- .transform(body().prepend("Hello "));
-
- fromF("coaps://localhost:%d/TestResource?sslContextParameters=#serviceSSLContextParameters&pskStore=#pskStore", PORT8)
- .transform(body().prepend("Hello "));
-
- fromF("coaps+tcp://localhost:%d/TestResource?sslContextParameters=#serviceSSLContextParameters", PORT9)
- .transform(body().prepend("Hello "));
-
- from("direct:start")
- .toF("coaps://localhost:%d/TestResource?sslContextParameters=#clientSSLContextParameters", PORT)
- .to("mock:result");
-
- from("direct:notruststore")
- .toF("coaps://localhost:%d/TestResource", PORT)
- .to("mock:result");
-
- from("direct:failedtrust")
- .toF("coaps://localhost:%d/TestResource?sslContextParameters=#clientSSLContextParameters2", PORT)
- .to("mock:result");
-
- from("direct:selfsigned")
- .toF("coaps://localhost:%d/TestResource?sslContextParameters=#selfSignedClientSSLContextParameters", PORT2)
- .to("mock:result");
-
- from("direct:clientauth")
- .toF("coaps://localhost:%d/TestResource?sslContextParameters=#clientAuthClientSSLContextParameters", PORT3)
- .to("mock:result");
-
- from("direct:failedclientauth")
- .toF("coaps://localhost:%d/TestResource?sslContextParameters=#clientAuthClientSSLContextParameters2", PORT3)
- .to("mock:result");
-
- from("direct:ciphersuites")
- .toF("coaps://localhost:%d/TestResource?sslContextParameters=#clientSSLContextParameters&cipherSuites=TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8", PORT4)
- .to("mock:result");
-
- from("direct:rpk")
- .toF("coaps://localhost:%d/TestResource?trustedRpkStore=#trustedRpkStore", PORT5)
- .to("mock:result");
-
- from("direct:rpknotruststore")
- .toF("coaps://localhost:%d/TestResource", PORT5)
- .to("mock:result");
-
- from("direct:rpkfailedtrust")
- .toF("coaps://localhost:%d/TestResource?trustedRpkStore=#failedTrustedRpkStore", PORT5)
- .to("mock:result");
-
- from("direct:rpkclientauth")
- .toF("coaps://localhost:%d/TestResource?trustedRpkStore=#trustedRpkStore&privateKey=#privateKey&publicKey=#publicKey", PORT6)
- .to("mock:result");
-
- from("direct:psk")
- .toF("coaps://localhost:%d/TestResource?pskStore=#pskStore", PORT7)
- .to("mock:result");
-
- from("direct:pskciphersuite")
- .toF("coaps://localhost:%d/TestResource?pskStore=#pskStore&cipherSuites=TLS_PSK_WITH_AES_128_CBC_SHA256", PORT7)
- .to("mock:result");
-
- from("direct:pskx509")
- .toF("coaps://localhost:%d/TestResource?pskStore=#pskStore&sslContextParameters=#clientSSLContextParameters", PORT8)
- .to("mock:result");
-
- from("direct:tcp")
- .toF("coaps+tcp://localhost:%d/TestResource?sslContextParameters=#clientSSLContextParameters", PORT9)
- .to("mock:result");
-
- }
- };
+ protected boolean isPSKSupported() {
+ return true;
}
- private void registerTLSConfiguration() throws GeneralSecurityException, IOException {
- KeyStoreParameters serviceKeystoreParameters = new KeyStoreParameters();
- serviceKeystoreParameters.setResource("service.jks");
- serviceKeystoreParameters.setPassword("security");
-
- KeyStoreParameters selfSignedKeyStoreParameters = new KeyStoreParameters();
- selfSignedKeyStoreParameters.setResource("selfsigned.jks");
- selfSignedKeyStoreParameters.setPassword("security");
-
- KeyStoreParameters clientKeystoreParameters = new KeyStoreParameters();
- clientKeystoreParameters.setResource("client.jks");
- clientKeystoreParameters.setPassword("security");
-
- KeyStoreParameters truststoreParameters = new KeyStoreParameters();
- truststoreParameters.setResource("truststore.jks");
- truststoreParameters.setPassword("storepass");
-
- KeyStoreParameters truststoreParameters2 = new KeyStoreParameters();
- truststoreParameters2.setResource("truststore2.jks");
- truststoreParameters2.setPassword("storepass");
-
- SSLContextParameters serviceSSLContextParameters = new SSLContextParameters();
- KeyManagersParameters serviceSSLKeyManagers = new KeyManagersParameters();
- serviceSSLKeyManagers.setKeyPassword("security");
- serviceSSLKeyManagers.setKeyStore(serviceKeystoreParameters);
- serviceSSLContextParameters.setKeyManagers(serviceSSLKeyManagers);
-
- SSLContextParameters selfSignedServiceSSLContextParameters = new SSLContextParameters();
- KeyManagersParameters selfSignedServiceSSLKeyManagers = new KeyManagersParameters();
- selfSignedServiceSSLKeyManagers.setKeyPassword("security");
- selfSignedServiceSSLKeyManagers.setKeyStore(selfSignedKeyStoreParameters);
- selfSignedServiceSSLContextParameters.setKeyManagers(selfSignedServiceSSLKeyManagers);
-
- SSLContextParameters clientAuthServiceSSLContextParameters = new SSLContextParameters();
- KeyManagersParameters clientAuthServiceSSLKeyManagers = new KeyManagersParameters();
- clientAuthServiceSSLKeyManagers.setKeyPassword("security");
- clientAuthServiceSSLKeyManagers.setKeyStore(serviceKeystoreParameters);
- clientAuthServiceSSLContextParameters.setKeyManagers(clientAuthServiceSSLKeyManagers);
- TrustManagersParameters clientAuthServiceSSLTrustManagers = new TrustManagersParameters();
- clientAuthServiceSSLTrustManagers.setKeyStore(truststoreParameters);
- clientAuthServiceSSLContextParameters.setTrustManagers(clientAuthServiceSSLTrustManagers);
- SSLContextServerParameters clientAuthSSLContextServerParameters = new SSLContextServerParameters();
- clientAuthSSLContextServerParameters.setClientAuthentication("REQUIRE");
- clientAuthServiceSSLContextParameters.setServerParameters(clientAuthSSLContextServerParameters);
-
- SSLContextParameters clientSSLContextParameters = new SSLContextParameters();
- TrustManagersParameters clientSSLTrustManagers = new TrustManagersParameters();
- clientSSLTrustManagers.setKeyStore(truststoreParameters);
- clientSSLContextParameters.setTrustManagers(clientSSLTrustManagers);
-
- SSLContextParameters clientSSLContextParameters2 = new SSLContextParameters();
- TrustManagersParameters clientSSLTrustManagers2 = new TrustManagersParameters();
- clientSSLTrustManagers2.setKeyStore(truststoreParameters2);
- clientSSLContextParameters2.setTrustManagers(clientSSLTrustManagers2);
-
- SSLContextParameters clientAuthClientSSLContextParameters = new SSLContextParameters();
- TrustManagersParameters clientAuthClientSSLTrustManagers = new TrustManagersParameters();
- clientAuthClientSSLTrustManagers.setKeyStore(truststoreParameters);
- clientAuthClientSSLContextParameters.setTrustManagers(clientAuthClientSSLTrustManagers);
- KeyManagersParameters clientAuthClientSSLKeyManagers = new KeyManagersParameters();
- clientAuthClientSSLKeyManagers.setKeyPassword("security");
- clientAuthClientSSLKeyManagers.setKeyStore(clientKeystoreParameters);
- clientAuthClientSSLContextParameters.setKeyManagers(clientAuthClientSSLKeyManagers);
-
- SSLContextParameters clientAuthClientSSLContextParameters2 = new SSLContextParameters();
- TrustManagersParameters clientAuthClientSSLTrustManagers2 = new TrustManagersParameters();
- clientAuthClientSSLTrustManagers2.setKeyStore(truststoreParameters2);
- clientAuthClientSSLContextParameters2.setTrustManagers(clientAuthClientSSLTrustManagers2);
- KeyManagersParameters clientAuthClientSSLKeyManagers2 = new KeyManagersParameters();
- clientAuthClientSSLKeyManagers2.setKeyPassword("security");
- clientAuthClientSSLKeyManagers2.setKeyStore(clientKeystoreParameters);
- clientAuthClientSSLContextParameters2.setKeyManagers(clientAuthClientSSLKeyManagers2);
-
- SSLContextParameters selfSignedClientSSLContextParameters = new SSLContextParameters();
- TrustManagersParameters selfSignedClientSSLTrustManagers = new TrustManagersParameters();
- selfSignedClientSSLTrustManagers.setKeyStore(selfSignedKeyStoreParameters);
- selfSignedClientSSLContextParameters.setTrustManagers(selfSignedClientSSLTrustManagers);
-
- KeyStore keyStore = serviceKeystoreParameters.createKeyStore();
- PrivateKey privateKey = (PrivateKey)keyStore.getKey("service", "security".toCharArray());
- PublicKey publicKey = keyStore.getCertificate("service").getPublicKey();
-
- TrustedRpkStore trustedRpkStore = id -> {
- return true;
- };
- TrustedRpkStore failedTrustedRpkStore = id -> {
- return false;
- };
- KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
- PskStore pskStore = new StaticPskStore("some-identity", keyGenerator.generateKey().getEncoded());
-
- context.getRegistry().bind("serviceSSLContextParameters", serviceSSLContextParameters);
- context.getRegistry().bind("selfSignedServiceSSLContextParameters", selfSignedServiceSSLContextParameters);
- context.getRegistry().bind("clientAuthServiceSSLContextParameters", clientAuthServiceSSLContextParameters);
- context.getRegistry().bind("clientSSLContextParameters", clientSSLContextParameters);
- context.getRegistry().bind("clientSSLContextParameters2", clientSSLContextParameters2);
- context.getRegistry().bind("clientAuthClientSSLContextParameters", clientAuthClientSSLContextParameters);
- context.getRegistry().bind("clientAuthClientSSLContextParameters2", clientAuthClientSSLContextParameters2);
- context.getRegistry().bind("selfSignedClientSSLContextParameters", selfSignedClientSSLContextParameters);
-
- context.getRegistry().bind("privateKey", privateKey);
- context.getRegistry().bind("publicKey", publicKey);
- context.getRegistry().bind("trustedRpkStore", trustedRpkStore);
- context.getRegistry().bind("failedTrustedRpkStore", failedTrustedRpkStore);
- context.getRegistry().bind("pskStore", pskStore);
+ @Override
+ protected boolean isRPKSupported() {
+ return true;
}
- protected void sendBodyAndHeader(String endpointUri, final Object body, String headerName, String headerValue) {
- template.send(endpointUri, new Processor() {
- public void process(Exchange exchange) {
- Message in = exchange.getIn();
- in.setBody(body);
- in.setHeader(headerName, headerValue);
- }
- });
- }
}
diff --git a/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPComponentTLSTest.java b/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPComponentTLSTestBase.java
similarity index 66%
copy from components/camel-coap/src/test/java/org/apache/camel/coap/CoAPComponentTLSTest.java
copy to components/camel-coap/src/test/java/org/apache/camel/coap/CoAPComponentTLSTestBase.java
index 1257b66..bf56e5a 100644
--- a/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPComponentTLSTest.java
+++ b/components/camel-coap/src/test/java/org/apache/camel/coap/CoAPComponentTLSTestBase.java
@@ -43,7 +43,7 @@ import org.eclipse.californium.scandium.dtls.pskstore.StaticPskStore;
import org.eclipse.californium.scandium.dtls.rpkstore.TrustedRpkStore;
import org.junit.Test;
-public class CoAPComponentTLSTest extends CamelTestSupport {
+abstract class CoAPComponentTLSTestBase extends CamelTestSupport {
private static final int PORT = AvailablePortFinder.getNextAvailable();
private static final int PORT2 = AvailablePortFinder.getNextAvailable();
@@ -53,7 +53,6 @@ public class CoAPComponentTLSTest extends CamelTestSupport {
private static final int PORT6 = AvailablePortFinder.getNextAvailable();
private static final int PORT7 = AvailablePortFinder.getNextAvailable();
private static final int PORT8 = AvailablePortFinder.getNextAvailable();
- private static final int PORT9 = AvailablePortFinder.getNextAvailable();
@Test
public void testSuccessfulCall() throws Exception {
@@ -125,86 +124,92 @@ public class CoAPComponentTLSTest extends CamelTestSupport {
@Test
public void testRawPublicKey() throws Exception {
- MockEndpoint mock = getMockEndpoint("mock:result");
- mock.expectedMinimumMessageCount(1);
- mock.expectedBodiesReceived("Hello Camel CoAP");
- mock.expectedHeaderReceived(Exchange.CONTENT_TYPE, MediaTypeRegistry.toString(MediaTypeRegistry.APPLICATION_OCTET_STREAM));
- mock.expectedHeaderReceived(CoAPConstants.COAP_RESPONSE_CODE, CoAP.ResponseCode.CONTENT.toString());
- sendBodyAndHeader("direct:rpk", "Camel CoAP", CoAPConstants.COAP_METHOD, "POST");
- assertMockEndpointsSatisfied();
+ if (isRPKSupported()) {
+ MockEndpoint mock = getMockEndpoint("mock:result");
+ mock.expectedMinimumMessageCount(1);
+ mock.expectedBodiesReceived("Hello Camel CoAP");
+ mock.expectedHeaderReceived(Exchange.CONTENT_TYPE, MediaTypeRegistry.toString(MediaTypeRegistry.APPLICATION_OCTET_STREAM));
+ mock.expectedHeaderReceived(CoAPConstants.COAP_RESPONSE_CODE, CoAP.ResponseCode.CONTENT.toString());
+ sendBodyAndHeader("direct:rpk", "Camel CoAP", CoAPConstants.COAP_METHOD, "POST");
+ assertMockEndpointsSatisfied();
+ }
}
@Test
public void testRawPublicKeyNoTruststore() throws Exception {
- MockEndpoint mock = getMockEndpoint("mock:result");
- mock.expectedMessageCount(0);
- sendBodyAndHeader("direct:rpknotruststore", "Camel CoAP", CoAPConstants.COAP_METHOD, "POST");
- assertMockEndpointsSatisfied();
+ if (isRPKSupported()) {
+ MockEndpoint mock = getMockEndpoint("mock:result");
+ mock.expectedMessageCount(0);
+ sendBodyAndHeader("direct:rpknotruststore", "Camel CoAP", CoAPConstants.COAP_METHOD, "POST");
+ assertMockEndpointsSatisfied();
+ }
}
@Test
public void testRawPublicKeyFailedTrust() throws Exception {
- MockEndpoint mock = getMockEndpoint("mock:result");
- mock.expectedMessageCount(0);
- sendBodyAndHeader("direct:rpkfailedtrust", "Camel CoAP", CoAPConstants.COAP_METHOD, "POST");
- assertMockEndpointsSatisfied();
+ if (isRPKSupported()) {
+ MockEndpoint mock = getMockEndpoint("mock:result");
+ mock.expectedMessageCount(0);
+ sendBodyAndHeader("direct:rpkfailedtrust", "Camel CoAP", CoAPConstants.COAP_METHOD, "POST");
+ assertMockEndpointsSatisfied();
+ }
}
@Test
public void testRawPublicKeyClientAuth() throws Exception {
- MockEndpoint mock = getMockEndpoint("mock:result");
- mock.expectedMinimumMessageCount(1);
- mock.expectedBodiesReceived("Hello Camel CoAP");
- mock.expectedHeaderReceived(Exchange.CONTENT_TYPE, MediaTypeRegistry.toString(MediaTypeRegistry.APPLICATION_OCTET_STREAM));
- mock.expectedHeaderReceived(CoAPConstants.COAP_RESPONSE_CODE, CoAP.ResponseCode.CONTENT.toString());
- sendBodyAndHeader("direct:rpkclientauth", "Camel CoAP", CoAPConstants.COAP_METHOD, "POST");
- assertMockEndpointsSatisfied();
+ if (isRPKSupported()) {
+ MockEndpoint mock = getMockEndpoint("mock:result");
+ mock.expectedMinimumMessageCount(1);
+ mock.expectedBodiesReceived("Hello Camel CoAP");
+ mock.expectedHeaderReceived(Exchange.CONTENT_TYPE, MediaTypeRegistry.toString(MediaTypeRegistry.APPLICATION_OCTET_STREAM));
+ mock.expectedHeaderReceived(CoAPConstants.COAP_RESPONSE_CODE, CoAP.ResponseCode.CONTENT.toString());
+ sendBodyAndHeader("direct:rpkclientauth", "Camel CoAP", CoAPConstants.COAP_METHOD, "POST");
+ assertMockEndpointsSatisfied();
+ }
}
@Test
public void testPreSharedKey() throws Exception {
- MockEndpoint mock = getMockEndpoint("mock:result");
- mock.expectedMinimumMessageCount(1);
- mock.expectedBodiesReceived("Hello Camel CoAP");
- mock.expectedHeaderReceived(Exchange.CONTENT_TYPE, MediaTypeRegistry.toString(MediaTypeRegistry.APPLICATION_OCTET_STREAM));
- mock.expectedHeaderReceived(CoAPConstants.COAP_RESPONSE_CODE, CoAP.ResponseCode.CONTENT.toString());
- sendBodyAndHeader("direct:psk", "Camel CoAP", CoAPConstants.COAP_METHOD, "POST");
- assertMockEndpointsSatisfied();
+ if (isPSKSupported()) {
+ MockEndpoint mock = getMockEndpoint("mock:result");
+ mock.expectedMinimumMessageCount(1);
+ mock.expectedBodiesReceived("Hello Camel CoAP");
+ mock.expectedHeaderReceived(Exchange.CONTENT_TYPE, MediaTypeRegistry.toString(MediaTypeRegistry.APPLICATION_OCTET_STREAM));
+ mock.expectedHeaderReceived(CoAPConstants.COAP_RESPONSE_CODE, CoAP.ResponseCode.CONTENT.toString());
+ sendBodyAndHeader("direct:psk", "Camel CoAP", CoAPConstants.COAP_METHOD, "POST");
+ assertMockEndpointsSatisfied();
+ }
}
@Test
public void testPreSharedKeyCipherSuite() throws Exception {
- MockEndpoint mock = getMockEndpoint("mock:result");
- mock.expectedMinimumMessageCount(1);
- mock.expectedBodiesReceived("Hello Camel CoAP");
- mock.expectedHeaderReceived(Exchange.CONTENT_TYPE, MediaTypeRegistry.toString(MediaTypeRegistry.APPLICATION_OCTET_STREAM));
- mock.expectedHeaderReceived(CoAPConstants.COAP_RESPONSE_CODE, CoAP.ResponseCode.CONTENT.toString());
- sendBodyAndHeader("direct:pskciphersuite", "Camel CoAP", CoAPConstants.COAP_METHOD, "POST");
- assertMockEndpointsSatisfied();
+ if (isPSKSupported()) {
+ MockEndpoint mock = getMockEndpoint("mock:result");
+ mock.expectedMinimumMessageCount(1);
+ mock.expectedBodiesReceived("Hello Camel CoAP");
+ mock.expectedHeaderReceived(Exchange.CONTENT_TYPE, MediaTypeRegistry.toString(MediaTypeRegistry.APPLICATION_OCTET_STREAM));
+ mock.expectedHeaderReceived(CoAPConstants.COAP_RESPONSE_CODE, CoAP.ResponseCode.CONTENT.toString());
+ sendBodyAndHeader("direct:pskciphersuite", "Camel CoAP", CoAPConstants.COAP_METHOD, "POST");
+ assertMockEndpointsSatisfied();
+ }
}
@Test
public void testPreSharedKeyX509() throws Exception {
- MockEndpoint mock = getMockEndpoint("mock:result");
- mock.expectedMinimumMessageCount(1);
- mock.expectedBodiesReceived("Hello Camel CoAP");
- mock.expectedHeaderReceived(Exchange.CONTENT_TYPE, MediaTypeRegistry.toString(MediaTypeRegistry.APPLICATION_OCTET_STREAM));
- mock.expectedHeaderReceived(CoAPConstants.COAP_RESPONSE_CODE, CoAP.ResponseCode.CONTENT.toString());
- sendBodyAndHeader("direct:pskx509", "Camel CoAP", CoAPConstants.COAP_METHOD, "POST");
- assertMockEndpointsSatisfied();
- }
-
- @Test
- public void testTCP() throws Exception {
- MockEndpoint mock = getMockEndpoint("mock:result");
- mock.expectedMinimumMessageCount(1);
- mock.expectedBodiesReceived("Hello Camel CoAP");
- mock.expectedHeaderReceived(Exchange.CONTENT_TYPE, MediaTypeRegistry.toString(MediaTypeRegistry.APPLICATION_OCTET_STREAM));
- mock.expectedHeaderReceived(CoAPConstants.COAP_RESPONSE_CODE, CoAP.ResponseCode.CONTENT.toString());
- sendBodyAndHeader("direct:tcp", "Camel CoAP", CoAPConstants.COAP_METHOD, "POST");
- assertMockEndpointsSatisfied();
+ if (isPSKSupported()) {
+ MockEndpoint mock = getMockEndpoint("mock:result");
+ mock.expectedMinimumMessageCount(1);
+ mock.expectedBodiesReceived("Hello Camel CoAP");
+ mock.expectedHeaderReceived(Exchange.CONTENT_TYPE, MediaTypeRegistry.toString(MediaTypeRegistry.APPLICATION_OCTET_STREAM));
+ mock.expectedHeaderReceived(CoAPConstants.COAP_RESPONSE_CODE, CoAP.ResponseCode.CONTENT.toString());
+ sendBodyAndHeader("direct:pskx509", "Camel CoAP", CoAPConstants.COAP_METHOD, "POST");
+ assertMockEndpointsSatisfied();
+ }
}
+ protected abstract String getProtocol();
+ protected abstract boolean isPSKSupported();
+ protected abstract boolean isRPKSupported();
@Override
protected RouteBuilder createRouteBuilder() throws Exception {
@@ -215,92 +220,89 @@ public class CoAPComponentTLSTest extends CamelTestSupport {
@Override
public void configure() throws Exception {
- fromF("coaps://localhost:%d/TestResource?sslContextParameters=#serviceSSLContextParameters", PORT)
- .transform(body().prepend("Hello "));
-
- fromF("coaps://localhost:%d/TestResource?alias=selfsigned&sslContextParameters=#selfSignedServiceSSLContextParameters", PORT2)
- .transform(body().prepend("Hello "));
-
- fromF("coaps://localhost:%d/TestResource?sslContextParameters=#clientAuthServiceSSLContextParameters", PORT3)
+ fromF(getProtocol() + "://localhost:%d/TestResource?sslContextParameters=#serviceSSLContextParameters", PORT)
.transform(body().prepend("Hello "));
- fromF("coaps://localhost:%d/TestResource?sslContextParameters=#serviceSSLContextParameters&cipherSuites=TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8", PORT4)
+ fromF(getProtocol() + "://localhost:%d/TestResource?alias=selfsigned&sslContextParameters=#selfSignedServiceSSLContextParameters", PORT2)
.transform(body().prepend("Hello "));
- fromF("coaps://localhost:%d/TestResource?privateKey=#privateKey&publicKey=#publicKey", PORT5)
+ fromF(getProtocol() + "://localhost:%d/TestResource?sslContextParameters=#clientAuthServiceSSLContextParameters", PORT3)
.transform(body().prepend("Hello "));
- fromF("coaps://localhost:%d/TestResource?privateKey=#privateKey&publicKey=#publicKey&clientAuthentication=REQUIRE&trustedRpkStore=#trustedRpkStore", PORT6)
+ fromF(getProtocol() + "://localhost:%d/TestResource?sslContextParameters=#serviceSSLContextParameters&cipherSuites=TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8", PORT4)
.transform(body().prepend("Hello "));
- fromF("coaps://localhost:%d/TestResource?pskStore=#pskStore", PORT7)
- .transform(body().prepend("Hello "));
-
- fromF("coaps://localhost:%d/TestResource?sslContextParameters=#serviceSSLContextParameters&pskStore=#pskStore", PORT8)
- .transform(body().prepend("Hello "));
-
- fromF("coaps+tcp://localhost:%d/TestResource?sslContextParameters=#serviceSSLContextParameters", PORT9)
- .transform(body().prepend("Hello "));
-
from("direct:start")
- .toF("coaps://localhost:%d/TestResource?sslContextParameters=#clientSSLContextParameters", PORT)
+ .toF(getProtocol() + "://localhost:%d/TestResource?sslContextParameters=#clientSSLContextParameters", PORT)
.to("mock:result");
from("direct:notruststore")
- .toF("coaps://localhost:%d/TestResource", PORT)
+ .toF(getProtocol() + "://localhost:%d/TestResource", PORT)
.to("mock:result");
from("direct:failedtrust")
- .toF("coaps://localhost:%d/TestResource?sslContextParameters=#clientSSLContextParameters2", PORT)
+ .toF(getProtocol() + "://localhost:%d/TestResource?sslContextParameters=#clientSSLContextParameters2", PORT)
.to("mock:result");
from("direct:selfsigned")
- .toF("coaps://localhost:%d/TestResource?sslContextParameters=#selfSignedClientSSLContextParameters", PORT2)
+ .toF(getProtocol() + "://localhost:%d/TestResource?sslContextParameters=#selfSignedClientSSLContextParameters", PORT2)
.to("mock:result");
from("direct:clientauth")
- .toF("coaps://localhost:%d/TestResource?sslContextParameters=#clientAuthClientSSLContextParameters", PORT3)
+ .toF(getProtocol() + "://localhost:%d/TestResource?sslContextParameters=#clientAuthClientSSLContextParameters", PORT3)
.to("mock:result");
from("direct:failedclientauth")
- .toF("coaps://localhost:%d/TestResource?sslContextParameters=#clientAuthClientSSLContextParameters2", PORT3)
+ .toF(getProtocol() + "://localhost:%d/TestResource?sslContextParameters=#clientAuthClientSSLContextParameters2", PORT3)
.to("mock:result");
from("direct:ciphersuites")
- .toF("coaps://localhost:%d/TestResource?sslContextParameters=#clientSSLContextParameters&cipherSuites=TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8", PORT4)
+ .toF(getProtocol() + "://localhost:%d/TestResource?sslContextParameters=#clientSSLContextParameters&cipherSuites=TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8", PORT4)
.to("mock:result");
- from("direct:rpk")
- .toF("coaps://localhost:%d/TestResource?trustedRpkStore=#trustedRpkStore", PORT5)
- .to("mock:result");
+ if (isRPKSupported()) {
+ fromF(getProtocol() + "://localhost:%d/TestResource?privateKey=#privateKey&publicKey=#publicKey", PORT5)
+ .transform(body().prepend("Hello "));
- from("direct:rpknotruststore")
- .toF("coaps://localhost:%d/TestResource", PORT5)
- .to("mock:result");
+ fromF(getProtocol() + "://localhost:%d/TestResource?privateKey=#privateKey&publicKey=#publicKey&clientAuthentication=REQUIRE&trustedRpkStore=#trustedRpkStore", PORT6)
+ .transform(body().prepend("Hello "));
- from("direct:rpkfailedtrust")
- .toF("coaps://localhost:%d/TestResource?trustedRpkStore=#failedTrustedRpkStore", PORT5)
- .to("mock:result");
+ from("direct:rpk")
+ .toF(getProtocol() + "://localhost:%d/TestResource?trustedRpkStore=#trustedRpkStore", PORT5)
+ .to("mock:result");
- from("direct:rpkclientauth")
- .toF("coaps://localhost:%d/TestResource?trustedRpkStore=#trustedRpkStore&privateKey=#privateKey&publicKey=#publicKey", PORT6)
- .to("mock:result");
+ from("direct:rpknotruststore")
+ .toF(getProtocol() + "://localhost:%d/TestResource", PORT5)
+ .to("mock:result");
- from("direct:psk")
- .toF("coaps://localhost:%d/TestResource?pskStore=#pskStore", PORT7)
- .to("mock:result");
+ from("direct:rpkfailedtrust")
+ .toF(getProtocol() + "://localhost:%d/TestResource?trustedRpkStore=#failedTrustedRpkStore", PORT5)
+ .to("mock:result");
- from("direct:pskciphersuite")
- .toF("coaps://localhost:%d/TestResource?pskStore=#pskStore&cipherSuites=TLS_PSK_WITH_AES_128_CBC_SHA256", PORT7)
- .to("mock:result");
+ from("direct:rpkclientauth")
+ .toF(getProtocol() + "://localhost:%d/TestResource?trustedRpkStore=#trustedRpkStore&privateKey=#privateKey&publicKey=#publicKey", PORT6)
+ .to("mock:result");
+ }
- from("direct:pskx509")
- .toF("coaps://localhost:%d/TestResource?pskStore=#pskStore&sslContextParameters=#clientSSLContextParameters", PORT8)
- .to("mock:result");
+ if (isPSKSupported()) {
+ fromF(getProtocol() + "://localhost:%d/TestResource?pskStore=#pskStore", PORT7)
+ .transform(body().prepend("Hello "));
- from("direct:tcp")
- .toF("coaps+tcp://localhost:%d/TestResource?sslContextParameters=#clientSSLContextParameters", PORT9)
- .to("mock:result");
+ fromF(getProtocol() + "://localhost:%d/TestResource?sslContextParameters=#serviceSSLContextParameters&pskStore=#pskStore", PORT8)
+ .transform(body().prepend("Hello "));
+
+ from("direct:psk")
+ .toF(getProtocol() + "://localhost:%d/TestResource?pskStore=#pskStore", PORT7)
+ .to("mock:result");
+
+ from("direct:pskciphersuite")
+ .toF(getProtocol() + "://localhost:%d/TestResource?pskStore=#pskStore&cipherSuites=TLS_PSK_WITH_AES_128_CBC_SHA256", PORT7)
+ .to("mock:result");
+
+ from("direct:pskx509")
+ .toF(getProtocol() + "://localhost:%d/TestResource?pskStore=#pskStore&sslContextParameters=#clientSSLContextParameters", PORT8)
+ .to("mock:result");
+ }
}
};