Duplicate java SSL test for mqtt v5
This commit is contained in:
parent
147e2d6676
commit
17ad067259
|
|
@ -49,8 +49,7 @@ init_per_suite(Config) ->
|
||||||
rabbit_ct_helpers:log_environment(),
|
rabbit_ct_helpers:log_environment(),
|
||||||
Config.
|
Config.
|
||||||
|
|
||||||
end_per_suite(Config) ->
|
end_per_suite(Config) -> Config.
|
||||||
rabbit_ct_helpers:run_teardown_steps(Config).
|
|
||||||
|
|
||||||
init_per_group(Group, Config0) ->
|
init_per_group(Group, Config0) ->
|
||||||
Suffix = rabbit_ct_helpers:testcase_absname(Config0, "", "-"),
|
Suffix = rabbit_ct_helpers:testcase_absname(Config0, "", "-"),
|
||||||
|
|
@ -103,7 +102,7 @@ java(Config) ->
|
||||||
run_test(Config, ["tests", "ssltests"]).
|
run_test(Config, ["tests", "ssltests"]).
|
||||||
|
|
||||||
java_v5(Config) ->
|
java_v5(Config) ->
|
||||||
run_test(Config, ["v5tests"]).
|
run_test(Config, ["v5tests", "v5ssltests"]).
|
||||||
|
|
||||||
run_test(Config, Target) ->
|
run_test(Config, Target) ->
|
||||||
CertsDir = rabbit_ct_helpers:get_config(Config, rmq_certsdir),
|
CertsDir = rabbit_ct_helpers:get_config(Config, rmq_certsdir),
|
||||||
|
|
|
||||||
|
|
@ -28,6 +28,9 @@ v5tests:
|
||||||
# @mvnw -q $(MVN_FLAGS) -Dtest=MqttV5Test#subscribeMultiple test
|
# @mvnw -q $(MVN_FLAGS) -Dtest=MqttV5Test#subscribeMultiple test
|
||||||
@mvnw -q $(MVN_FLAGS) -Dtest=MqttV5Test test
|
@mvnw -q $(MVN_FLAGS) -Dtest=MqttV5Test test
|
||||||
|
|
||||||
|
v5ssltests:
|
||||||
|
@mvnw -q $(MVN_FLAGS) -Dtest=MqttV5SSLTest test
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
@mvnw clean
|
@mvnw clean
|
||||||
|
|
||||||
|
|
|
||||||
164
deps/rabbitmq_mqtt/test/java_SUITE_data/src/test/java/com/rabbitmq/mqtt/test/tls/MqttV5SSLTest.java
vendored
Normal file
164
deps/rabbitmq_mqtt/test/java_SUITE_data/src/test/java/com/rabbitmq/mqtt/test/tls/MqttV5SSLTest.java
vendored
Normal file
|
|
@ -0,0 +1,164 @@
|
||||||
|
// This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
// file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||||
|
//
|
||||||
|
// Copyright (c) 2007-2020 VMware, Inc. or its affiliates. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
package com.rabbitmq.mqtt.test.tls;
|
||||||
|
|
||||||
|
import org.eclipse.paho.mqttv5.client.*;
|
||||||
|
import org.eclipse.paho.mqttv5.common.MqttException;
|
||||||
|
import org.eclipse.paho.mqttv5.common.MqttMessage;
|
||||||
|
import org.eclipse.paho.mqttv5.common.packet.MqttProperties;
|
||||||
|
import org.junit.jupiter.api.AfterEach;
|
||||||
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
|
||||||
|
import static org.eclipse.paho.mqttv5.common.packet.MqttReturnCode.RETURN_CODE_BAD_USERNAME_OR_PASSWORD;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* MQTT v5 TLS test
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class MqttV5SSLTest implements MqttCallback {
|
||||||
|
|
||||||
|
private final String brokerUrl = "ssl://" + getHost() + ":" + getPort();
|
||||||
|
private String clientId;
|
||||||
|
private String clientId2;
|
||||||
|
private MqttClient client;
|
||||||
|
private MqttClient client2;
|
||||||
|
private MqttConnectionOptions conOpt;
|
||||||
|
|
||||||
|
private volatile List<MqttMessage> receivedMessages;
|
||||||
|
|
||||||
|
private static String getPort() {
|
||||||
|
Object port = System.getProperty("mqtt.ssl.port");
|
||||||
|
assertNotNull(port);
|
||||||
|
return port.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String getHost() {
|
||||||
|
Object host = System.getProperty("hostname");
|
||||||
|
assertNotNull(host);
|
||||||
|
return host.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
// override 10s limit
|
||||||
|
private class MyConnOpts extends MqttConnectionOptions {
|
||||||
|
private int keepAliveInterval = 60;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setKeepAliveInterval(int keepAliveInterval) {
|
||||||
|
this.keepAliveInterval = keepAliveInterval;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getKeepAliveInterval() {
|
||||||
|
return keepAliveInterval;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@BeforeEach
|
||||||
|
public void setUp() throws MqttException, IOException {
|
||||||
|
clientId = getClass().getSimpleName() + ((int) (10000 * Math.random()));
|
||||||
|
clientId2 = clientId + "-2";
|
||||||
|
client = new MqttClient(brokerUrl, clientId, null);
|
||||||
|
client2 = new MqttClient(brokerUrl, clientId2, null);
|
||||||
|
conOpt = new MyConnOpts();
|
||||||
|
conOpt.setSocketFactory(MutualAuth.getSSLContextWithoutCert().getSocketFactory());
|
||||||
|
setConOpts(conOpt);
|
||||||
|
receivedMessages = Collections.synchronizedList(new ArrayList<MqttMessage>());
|
||||||
|
}
|
||||||
|
|
||||||
|
@AfterEach
|
||||||
|
public void tearDown() throws MqttException {
|
||||||
|
// clean any sticky sessions
|
||||||
|
setConOpts(conOpt);
|
||||||
|
client = new MqttClient(brokerUrl, clientId, null);
|
||||||
|
try {
|
||||||
|
client.connect(conOpt);
|
||||||
|
client.disconnect();
|
||||||
|
} catch (Exception ignored) {
|
||||||
|
}
|
||||||
|
|
||||||
|
client2 = new MqttClient(brokerUrl, clientId2, null);
|
||||||
|
try {
|
||||||
|
client2.connect(conOpt);
|
||||||
|
client2.disconnect();
|
||||||
|
} catch (Exception ignored) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void setConOpts(MqttConnectionOptions conOpts) {
|
||||||
|
conOpts.setCleanStart(true);
|
||||||
|
conOpts.setKeepAliveInterval(60);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void certLogin() throws MqttException {
|
||||||
|
try {
|
||||||
|
conOpt.setSocketFactory(MutualAuth.getSSLContextWithClientCert().getSocketFactory());
|
||||||
|
client.connect(conOpt);
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
fail("Exception: " + e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Test public void invalidUser() throws MqttException {
|
||||||
|
conOpt.setUserName("invalid-user");
|
||||||
|
try {
|
||||||
|
client.connect(conOpt);
|
||||||
|
fail("Authentication failure expected");
|
||||||
|
} catch (MqttException ex) {
|
||||||
|
assertEquals(RETURN_CODE_BAD_USERNAME_OR_PASSWORD, ex.getReasonCode());
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
fail("Exception: " + e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test public void invalidPassword() throws MqttException {
|
||||||
|
conOpt.setUserName("invalid-user");
|
||||||
|
conOpt.setPassword("invalid-password".getBytes());
|
||||||
|
try {
|
||||||
|
client.connect(conOpt);
|
||||||
|
fail("Authentication failure expected");
|
||||||
|
} catch (MqttException ex) {
|
||||||
|
assertEquals(RETURN_CODE_BAD_USERNAME_OR_PASSWORD, ex.getReasonCode());
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
fail("Exception: " + e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void messageArrived(String topic, MqttMessage message) throws Exception {
|
||||||
|
receivedMessages.add(message);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void disconnected(MqttDisconnectResponse mqttDisconnectResponse) {
|
||||||
|
}
|
||||||
|
|
||||||
|
public void mqttErrorOccurred(MqttException e) {
|
||||||
|
}
|
||||||
|
|
||||||
|
public void deliveryComplete(IMqttToken iMqttToken) {
|
||||||
|
}
|
||||||
|
|
||||||
|
public void connectComplete(boolean b, String s) {
|
||||||
|
}
|
||||||
|
|
||||||
|
public void authPacketArrived(int i, MqttProperties mqttProperties) {
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue