Skip to content

Commit

Permalink
added tests for bridge configurator.
Browse files Browse the repository at this point in the history
  • Loading branch information
Florian-Limpoeck committed Aug 6, 2024
1 parent 15cf7c9 commit 7f57ed5
Show file tree
Hide file tree
Showing 3 changed files with 154 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ public class WebsocketConfiguration {
@Schema(description = "The server path from the config")
private final @NotNull String serverPath;

@JsonProperty(value = "subProtocol", defaultValue = "mqttv5")
@JsonProperty(value = "subProtocol", defaultValue = "mqtt")
@Schema(description = "The subProtocol from the config")
private final @NotNull String subProtocol;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,11 +37,11 @@ public class BridgeWebsocketConfigurationEntity {
@XmlElement(name = "enabled")
private boolean enabled = false;

@XmlElement(name = "server-path", required = false)
private @Nullable String serverPath = "/mqtt";
@XmlElement(name = "server-path")
private @NotNull String serverPath = "/mqtt";

@XmlElement(name = "subprotocol", required = false)
private @Nullable String subProtocol = "mqttv5";
@XmlElement(name = "subprotocol")
private @NotNull String subProtocol = "mqtt";

public boolean isEnabled() {
return enabled;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,155 @@ public void whenMinimalConfigRemoteSubs_thenDefaultsSet() throws IOException {

}

@Test
public void whenMinimalWebsocketConfigRemoteSubs_thenDefaultsSet() throws IOException {
final String contents = "" +
"<hivemq>\n" +
"<mqtt-bridges>\n" +
" <mqtt-bridge>\n" +
" <id>test-bridge</id>\n" +
" <remote-broker>\n" +
" <host>testhost</host>\n" +
" <websocket>" +
" <enabled>true</enabled>" +
" </websocket>" +
" </remote-broker>\n" +
" <remote-subscriptions>\n" +
" <remote-subscription>\n" +
" <filters>\n" +
" <mqtt-topic-filter>machine-types/1/#</mqtt-topic-filter>\n" +
" </filters>\n" +
" </remote-subscription>\n" +
" </remote-subscriptions>\n" +
" </mqtt-bridge>\n" +
"</mqtt-bridges>" +
"</hivemq>";

Files.write(contents.getBytes(UTF_8), xmlFile);

reader.applyConfig();

final List<MqttBridge> bridges = bridgeConfigurationService.getBridges();

assertEquals(1, bridges.size());
final MqttBridge mqttBridge = bridges.get(0);
assertEquals("testhost", mqttBridge.getHost());
assertEquals(1883, mqttBridge.getPort());
assertNotNull(mqttBridge.getBridgeWebsocketConfig());
assertEquals("/mqtt", mqttBridge.getBridgeWebsocketConfig().getPath());
assertEquals("mqtt", mqttBridge.getBridgeWebsocketConfig().getSubProtocol());
assertEquals(60, mqttBridge.getKeepAlive());
assertEquals(3600, mqttBridge.getSessionExpiry());
assertNull(mqttBridge.getBridgeTls());
assertEquals("test-bridge", mqttBridge.getClientId());
assertEquals("test-bridge", mqttBridge.getId());
assertEquals(1, mqttBridge.getRemoteSubscriptions().size());
final RemoteSubscription remoteSubscription = mqttBridge.getRemoteSubscriptions().get(0);
assertEquals(1, remoteSubscription.getFilters().size());
assertEquals("machine-types/1/#", remoteSubscription.getFilters().get(0));

}

@Test
public void whenSpecificWebsocketConfigRemoteSubs_thenSpecificsSet() throws IOException {
final String contents = "" +
"<hivemq>\n" +
"<mqtt-bridges>\n" +
" <mqtt-bridge>\n" +
" <id>test-bridge</id>\n" +
" <remote-broker>\n" +
" <host>testhost</host>\n" +
" <websocket>" +
" <enabled>true</enabled>" +
" <server-path>/test</server-path>" +
" <subprotocol>hansi</subprotocol>" +
" </websocket>" +
" </remote-broker>\n" +
" <remote-subscriptions>\n" +
" <remote-subscription>\n" +
" <filters>\n" +
" <mqtt-topic-filter>machine-types/1/#</mqtt-topic-filter>\n" +
" </filters>\n" +
" </remote-subscription>\n" +
" </remote-subscriptions>\n" +
" </mqtt-bridge>\n" +
"</mqtt-bridges>" +
"</hivemq>";

Files.write(contents.getBytes(UTF_8), xmlFile);

reader.applyConfig();

final List<MqttBridge> bridges = bridgeConfigurationService.getBridges();

assertEquals(1, bridges.size());
final MqttBridge mqttBridge = bridges.get(0);
assertEquals("testhost", mqttBridge.getHost());
assertEquals(1883, mqttBridge.getPort());
assertNotNull(mqttBridge.getBridgeWebsocketConfig());
assertEquals("/test", mqttBridge.getBridgeWebsocketConfig().getPath());
assertEquals("hansi", mqttBridge.getBridgeWebsocketConfig().getSubProtocol());
assertEquals(60, mqttBridge.getKeepAlive());
assertEquals(3600, mqttBridge.getSessionExpiry());
assertNull(mqttBridge.getBridgeTls());
assertEquals("test-bridge", mqttBridge.getClientId());
assertEquals("test-bridge", mqttBridge.getId());
assertEquals(1, mqttBridge.getRemoteSubscriptions().size());
final RemoteSubscription remoteSubscription = mqttBridge.getRemoteSubscriptions().get(0);
assertEquals(1, remoteSubscription.getFilters().size());
assertEquals("machine-types/1/#", remoteSubscription.getFilters().get(0));

}

@Test
public void whenWebsocketConfigDisabledRemoteSubs_thenConfigNull() throws IOException {
final String contents = "" +
"<hivemq>\n" +
"<mqtt-bridges>\n" +
" <mqtt-bridge>\n" +
" <id>test-bridge</id>\n" +
" <remote-broker>\n" +
" <host>testhost</host>\n" +
" <websocket>" +
" <enabled>false</enabled>" +
" <server-path>/mqtt</server-path>" +
" <subprotocol>mqtt</subprotocol>" +
" </websocket>" +
" </remote-broker>\n" +
" <remote-subscriptions>\n" +
" <remote-subscription>\n" +
" <filters>\n" +
" <mqtt-topic-filter>machine-types/1/#</mqtt-topic-filter>\n" +
" </filters>\n" +
" </remote-subscription>\n" +
" </remote-subscriptions>\n" +
" </mqtt-bridge>\n" +
"</mqtt-bridges>" +
"</hivemq>";

Files.write(contents.getBytes(UTF_8), xmlFile);

reader.applyConfig();

final List<MqttBridge> bridges = bridgeConfigurationService.getBridges();

assertEquals(1, bridges.size());
final MqttBridge mqttBridge = bridges.get(0);
assertEquals("testhost", mqttBridge.getHost());
assertEquals(1883, mqttBridge.getPort());
assertNull(mqttBridge.getBridgeWebsocketConfig());
assertEquals(60, mqttBridge.getKeepAlive());
assertEquals(3600, mqttBridge.getSessionExpiry());
assertNull(mqttBridge.getBridgeTls());
assertEquals("test-bridge", mqttBridge.getClientId());
assertEquals("test-bridge", mqttBridge.getId());
assertEquals(1, mqttBridge.getRemoteSubscriptions().size());
final RemoteSubscription remoteSubscription = mqttBridge.getRemoteSubscriptions().get(0);
assertEquals(1, remoteSubscription.getFilters().size());
assertEquals("machine-types/1/#", remoteSubscription.getFilters().get(0));

}

@Test
public void whenMinimalConfigWithForwarded_thenDefaultsSet() throws IOException {
final String contents = "" +
Expand Down

0 comments on commit 7f57ed5

Please sign in to comment.