1212import com .orange .lo .sdk .externalconnector .model .Value ;
1313import org .eclipse .paho .client .mqttv3 .IMqttClient ;
1414import org .eclipse .paho .client .mqttv3 .IMqttMessageListener ;
15+ import org .eclipse .paho .client .mqttv3 .MqttCallback ;
1516import org .eclipse .paho .client .mqttv3 .MqttConnectOptions ;
1617import org .eclipse .paho .client .mqttv3 .MqttException ;
1718import org .eclipse .paho .client .mqttv3 .MqttMessage ;
1819import org .junit .jupiter .api .BeforeEach ;
1920import org .junit .jupiter .api .Test ;
2021import org .junit .jupiter .api .extension .ExtendWith ;
22+ import org .mockito .AdditionalMatchers ;
23+ import org .mockito .InOrder ;
2124import org .mockito .Mock ;
25+ import org .mockito .Mockito ;
2226import org .mockito .junit .jupiter .MockitoExtension ;
2327
2428import java .util .Arrays ;
@@ -43,20 +47,26 @@ class DataManagementExtConnectorTest {
4347
4448 @ BeforeEach
4549 void setUp () {
46- parameters = LOApiClientParameters .builder ()
47- .apiKey (API_KEY )
48- .build ();
49- this .dataManagementExtConnector = new DataManagementExtConnector (parameters , () -> mqttClient );
50- dataManagementExtConnector .connect ();
50+
5151 }
5252
5353 @ Test
5454 void shouldCallConnectFromMqttClientWhenConnectIsCalled () throws MqttException {
55+ parameters = LOApiClientParameters .builder ()
56+ .apiKey (API_KEY )
57+ .build ();
58+ this .dataManagementExtConnector = new DataManagementExtConnector (parameters , () -> mqttClient );
59+ dataManagementExtConnector .connect ();
5560 verify (mqttClient , times (1 )).connect (any (MqttConnectOptions .class ));
5661 }
5762
5863 @ Test
5964 void shouldCallDisconnectFromMqttClientWhenDisconnectIsCalled () throws MqttException {
65+ parameters = LOApiClientParameters .builder ()
66+ .apiKey (API_KEY )
67+ .build ();
68+ this .dataManagementExtConnector = new DataManagementExtConnector (parameters , () -> mqttClient );
69+ dataManagementExtConnector .connect ();
6070 dataManagementExtConnector .disconnect ();
6171
6272 verify (mqttClient , times (1 )).disconnect ();
@@ -92,7 +102,12 @@ void shouldSubscribeCommandRequestTopicWhenMessageCallbackIsSet() throws MqttExc
92102 dataManagementExtConnector = new DataManagementExtConnector (parameters , () -> mqttClient );
93103 dataManagementExtConnector .connect ();
94104
95- verify (mqttClient , times (1 )).subscribe (eq (DEFAULT_EXT_CONNECTOR_COMMAND_REQUEST_TOPIC ), eq (DEFAULT_MESSAGE_QOS ), any (IMqttMessageListener .class ));
105+ verify (mqttClient , times (1 )).setCallback (any (MqttCallback .class ));
106+ verify (mqttClient , times (1 )).subscribe (
107+ AdditionalMatchers .aryEq (new String [] {DEFAULT_EXT_CONNECTOR_COMMAND_REQUEST_TOPIC }),
108+ AdditionalMatchers .aryEq (new int [] {DEFAULT_MESSAGE_QOS }),
109+ any (IMqttMessageListener [].class )
110+ );
96111 }
97112
98113 @ Test
@@ -107,15 +122,24 @@ void shouldSubscribeToChangedCommandRequestTopicWhenMessageCallbackIsSetAndComma
107122 dataManagementExtConnector = new DataManagementExtConnector (parameters , () -> mqttClient );
108123 dataManagementExtConnector .connect ();
109124
110- verify (mqttClient , times (1 )).subscribe (eq (commandRequestTopic ), eq (DEFAULT_MESSAGE_QOS ), any (IMqttMessageListener .class ));
125+ verify (mqttClient , times (1 )).setCallback (any (MqttCallback .class ));
126+ verify (mqttClient , times (1 )).subscribe (
127+ AdditionalMatchers .aryEq (new String [] {commandRequestTopic }),
128+ AdditionalMatchers .aryEq (new int [] {DEFAULT_MESSAGE_QOS }),
129+ any (IMqttMessageListener [].class )
130+ );
111131 }
112132
113133 @ Test
114134 void shouldSendNodeStatusToDefaultStatusTopicAsSelectedNodeIdWhenStatusTopicWasNotChangedInParameters () throws MqttException {
135+ parameters = LOApiClientParameters .builder ()
136+ .apiKey (API_KEY )
137+ .build ();
115138 String expectedTopic = String .format (DEFAULT_EXT_CONNECTOR_STATUS_TOPIC_TEMPLATE , EX_CONNECTOR_NODE_ID );
116139 NodeStatus nodeStatus = getNodeStatus ();
117140 MqttMessage expectedMessage = toMqttMessage (nodeStatus );
118-
141+ this .dataManagementExtConnector = new DataManagementExtConnector (parameters , () -> mqttClient );
142+ dataManagementExtConnector .connect ();
119143 dataManagementExtConnector .sendStatus (EX_CONNECTOR_NODE_ID , nodeStatus );
120144
121145 verify (mqttClient , times (1 )).publish (eq (expectedTopic ), hasSamePayload (expectedMessage ));
@@ -125,14 +149,14 @@ void shouldSendNodeStatusToDefaultStatusTopicAsSelectedNodeIdWhenStatusTopicWasN
125149 @ Test
126150 void shouldSendNodeStatusToChangedStatusTopicAsSelectedNodeIdWhenStatusTopicWasChangedInParameters () throws MqttException {
127151 String statusTopic = "/%s/new/status/topic" ;
152+ parameters = LOApiClientParameters .builder ()
153+ .apiKey (API_KEY )
154+ .extConnectorStatusTopicTemplate (statusTopic )
155+ .build ();
128156 String expectedTopic = String .format (statusTopic , EX_CONNECTOR_NODE_ID );
129157 NodeStatus nodeStatus = getNodeStatus ();
130158 MqttMessage expectedMessage = toMqttMessage (nodeStatus );
131159
132- parameters = LOApiClientParameters .builder ()
133- .apiKey (API_KEY )
134- .extConnectorStatusTopicTemplate (statusTopic )
135- .build ();
136160
137161 dataManagementExtConnector = new DataManagementExtConnector (parameters , () -> mqttClient );
138162 dataManagementExtConnector .connect ();
@@ -144,26 +168,31 @@ void shouldSendNodeStatusToChangedStatusTopicAsSelectedNodeIdWhenStatusTopicWasC
144168
145169 @ Test
146170 void shouldSendMessageToDefaultDataTopicTemplateAsSelectedNodeIdWhenDataTopicTemplateWasNotChangedInParameters () throws MqttException {
171+ parameters = LOApiClientParameters .builder ()
172+ .apiKey (API_KEY )
173+ .build ();
147174 String expectedTopic = String .format (DEFAULT_EXT_CONNECTOR_DATA_TOPIC_TEMPLATE , EX_CONNECTOR_NODE_ID );
148175 DataMessage dataMessage = getDataMessage ();
149176 MqttMessage expectedMessage = toMqttMessage (dataMessage );
150177
178+ this .dataManagementExtConnector = new DataManagementExtConnector (parameters , () -> mqttClient );
179+ dataManagementExtConnector .connect ();
151180 dataManagementExtConnector .sendMessage (EX_CONNECTOR_NODE_ID , dataMessage );
152181
153182 verify (mqttClient , times (1 )).publish (eq (expectedTopic ), hasSamePayload (expectedMessage ));
154183 }
155184
156185 @ Test
157186 void shouldSendMessageToChangedDataTopicTemplateAsSelectedNodeIdWhenDataTopicTemplateWasChangedInParameters () throws MqttException {
158- String dataTopicTemplate = "/%s/new/data/topic" ;
187+ String dataTopicTemplate = "/%s/new/data/topic" ;
188+ parameters = LOApiClientParameters .builder ()
189+ .apiKey (API_KEY )
190+ .extConnectorDataTopicTemplate (dataTopicTemplate )
191+ .build ();
159192 String expectedTopic = String .format (dataTopicTemplate , EX_CONNECTOR_NODE_ID );
160193 DataMessage dataMessage = getDataMessage ();
161194 MqttMessage expectedMessage = toMqttMessage (dataMessage );
162195
163- parameters = LOApiClientParameters .builder ()
164- .apiKey (API_KEY )
165- .extConnectorDataTopicTemplate (dataTopicTemplate )
166- .build ();
167196
168197 dataManagementExtConnector = new DataManagementExtConnector (parameters , () -> mqttClient );
169198 dataManagementExtConnector .connect ();
0 commit comments