Skip to content

Commit 7cb7773

Browse files
authored
Feature/happy path testing for documentation (#226)
* Refactor test environment initialization. Replaced hardcoded QA environment with dynamic environment retrieval from respective objects to improve maintainability and flexibility. Also added `getEnvironment()` method in `AbstractIntegrationTest` for consistent environment access across test classes. * Add integration test for telemetry connection onboarding This test validates the onboarding process for a new telemetry connection, ensuring the response contains all necessary authentication and connection details. The test is currently disabled and requires replacing the placeholder registration code to run. * Remove unused imports of `QA` environment from test files. The `QA` environment import was present but unused across multiple test files. This cleanup improves code readability and eliminates unnecessary dependencies, aligning with best practices.
1 parent 0f73a4c commit 7cb7773

12 files changed

Lines changed: 106 additions & 54 deletions
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
package com.dke.data.agrirouter.documentation;
2+
3+
import com.dke.data.agrirouter.api.enums.ApplicationType;
4+
import com.dke.data.agrirouter.api.enums.CertificationType;
5+
import com.dke.data.agrirouter.api.enums.Gateway;
6+
import com.dke.data.agrirouter.api.service.parameters.OnboardingParameters;
7+
import com.dke.data.agrirouter.impl.onboard.OnboardingServiceImpl;
8+
import com.dke.data.agrirouter.test.AbstractIntegrationTest;
9+
import org.junit.jupiter.api.Disabled;
10+
import org.junit.jupiter.api.Test;
11+
12+
import java.util.UUID;
13+
14+
import static org.junit.jupiter.api.Assertions.assertNotNull;
15+
16+
class OnboardingForTelemetryConnectionTest extends AbstractIntegrationTest {
17+
18+
@Test
19+
@Disabled("Please replace the placeholder for the registration code to run the test case.")
20+
void givenValidRegistrationCodeWhenOnboardingNewTelemetryConnectionThenTheNewEndpointShouldBeCreated() {
21+
22+
// [1] Create onboarding parameters
23+
// ============================================================
24+
// Define the parameters used for onboarding, please be aware that the registration code needs
25+
// to be replaced with an actual code to run the test case.
26+
var onboardingParameters = new OnboardingParameters();
27+
onboardingParameters.setRegistrationCode("REPLACE_ME_WITH_ACTUAL_REGISTRATION_CODE");
28+
onboardingParameters.setApplicationId(communicationUnit.getApplicationId());
29+
onboardingParameters.setCertificationVersionId(communicationUnit.getCertificationVersionId());
30+
onboardingParameters.setCertificationType(CertificationType.P12);
31+
onboardingParameters.setGatewayId(Gateway.REST.getKey());
32+
onboardingParameters.setApplicationType(ApplicationType.APPLICATION);
33+
onboardingParameters.setUuid(UUID.randomUUID().toString());
34+
35+
// [2] Onboard the new telemetry connection
36+
// ============================================================
37+
// Use the onboarding service to onboard the new telemetry connection.
38+
var onboardingService = new OnboardingServiceImpl(communicationUnit.getEnvironment());
39+
final var onboardingResponse = onboardingService.onboard(onboardingParameters);
40+
41+
// [3] Validate the onboarding response
42+
// ============================================================
43+
// Check if the onboarding response contains all necessary information. This is just necessary within the tests, but not
44+
// needed in production code.
45+
assertNotNull(onboardingResponse);
46+
assertNotNull(onboardingResponse.getCapabilityAlternateId());
47+
assertNotNull(onboardingResponse.getDeviceAlternateId());
48+
assertNotNull(onboardingResponse.getSensorAlternateId());
49+
assertNotNull(onboardingResponse.getAuthentication());
50+
assertNotNull(onboardingResponse.getAuthentication().getCertificate());
51+
assertNotNull(onboardingResponse.getAuthentication().getSecret());
52+
assertNotNull(onboardingResponse.getAuthentication().getType());
53+
assertNotNull(onboardingResponse.getConnectionCriteria());
54+
assertNotNull(onboardingResponse.getConnectionCriteria().getMeasures());
55+
assertNotNull(onboardingResponse.getConnectionCriteria().getCommands());
56+
}
57+
58+
59+
}

agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/AbstractIntegrationTest.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.dke.data.agrirouter.test;
22

3+
import com.dke.data.agrirouter.api.env.Environment;
4+
import com.dke.data.agrirouter.api.env.QA;
35
import org.apache.commons.lang3.NotImplementedException;
46

57
import java.util.concurrent.TimeUnit;
@@ -51,6 +53,12 @@ public String getApplicationId() {
5153
public String getCertificationVersionId() {
5254
return "96c2c3e8-5e30-11ef-a95b-d2e1bbd0b244";
5355
}
56+
57+
@Override
58+
public Environment getEnvironment() {
59+
return new QA() {
60+
};
61+
}
5462
};
5563

5664
/**
@@ -69,6 +77,12 @@ public String getCertificationVersionId() {
6977
return "4dc7a506-5e31-11ef-a95b-d2e1bbd0b244";
7078
}
7179

80+
@Override
81+
public Environment getEnvironment() {
82+
return new QA() {
83+
};
84+
}
85+
7286
@Override
7387
public String getPrivateKey() {
7488
return """
@@ -135,6 +149,12 @@ public String getCertificationVersionId() {
135149
return "e743930a-5e31-11ef-a95b-d2e1bbd0b244";
136150
}
137151

152+
@Override
153+
public Environment getEnvironment() {
154+
return new QA() {
155+
};
156+
}
157+
138158
@Override
139159
public String getPrivateKey() {
140160
return """
@@ -204,6 +224,13 @@ public abstract static class Application {
204224
*/
205225
public abstract String getCertificationVersionId();
206226

227+
/**
228+
* Environment for the application.
229+
*
230+
* @return -
231+
*/
232+
public abstract Environment getEnvironment();
233+
207234
/**
208235
* Private key for the application.
209236
*

agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/fixture/CommunicationUnitFixture.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import com.dke.data.agrirouter.api.enums.CertificationType;
88
import com.dke.data.agrirouter.api.enums.ContentMessageType;
99
import com.dke.data.agrirouter.api.enums.Gateway;
10-
import com.dke.data.agrirouter.api.env.QA;
1110
import com.dke.data.agrirouter.api.service.onboard.OnboardingService;
1211
import com.dke.data.agrirouter.api.service.parameters.OnboardingParameters;
1312
import com.dke.data.agrirouter.api.service.parameters.SetCapabilitiesParameters;
@@ -38,8 +37,7 @@ class CommunicationUnitFixture extends AbstractIntegrationTest {
3837
@Test
3938
@Disabled("Please replace the placeholder for the registration code to run the test case.")
4039
void onboardCommunicationUnitAndSaveToFile() throws IOException {
41-
OnboardingService onboardingService = new OnboardingServiceImpl(new QA() {
42-
});
40+
OnboardingService onboardingService = new OnboardingServiceImpl(communicationUnit.getEnvironment());
4341
OnboardingParameters onboardingParameters = new OnboardingParameters();
4442
onboardingParameters.setRegistrationCode("8908462691");
4543
onboardingParameters.setApplicationId(communicationUnit.getApplicationId());

agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/fixture/FarmingSoftwareFixture.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import com.dke.data.agrirouter.api.dto.onboard.OnboardingResponse;
44
import com.dke.data.agrirouter.api.enums.CertificationType;
55
import com.dke.data.agrirouter.api.enums.Gateway;
6-
import com.dke.data.agrirouter.api.env.QA;
76
import com.dke.data.agrirouter.api.service.onboard.secured.OnboardingService;
87
import com.dke.data.agrirouter.api.service.parameters.SecuredOnboardingParameters;
98
import com.dke.data.agrirouter.impl.onboard.secured.OnboardingServiceImpl;
@@ -34,8 +33,7 @@ class FarmingSoftwareFixture extends AbstractIntegrationTest {
3433
@Test
3534
@Disabled("Please replace the placeholder for the registration code to run the test case.")
3635
void onboardFarmingSoftwareAndSaveToFile() throws IOException {
37-
OnboardingService onboardingService = new OnboardingServiceImpl(new QA() {
38-
});
36+
OnboardingService onboardingService = new OnboardingServiceImpl(farmingSoftware.getEnvironment());
3937
SecuredOnboardingParameters onboardingParameters = new SecuredOnboardingParameters();
4038
onboardingParameters.setRegistrationCode("2067663604");
4139
onboardingParameters.setApplicationId(farmingSoftware.getApplicationId());

agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/fixture/MqttCommunicationUnitFixture.java

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
import com.dke.data.agrirouter.api.enums.CertificationType;
77
import com.dke.data.agrirouter.api.enums.ContentMessageType;
88
import com.dke.data.agrirouter.api.enums.Gateway;
9-
import com.dke.data.agrirouter.api.env.QA;
109
import com.dke.data.agrirouter.api.service.onboard.OnboardingService;
1110
import com.dke.data.agrirouter.api.service.parameters.OnboardingParameters;
1211
import com.dke.data.agrirouter.api.service.parameters.SetCapabilitiesParameters;
@@ -48,8 +47,7 @@ class MqttCommunicationUnitFixture extends AbstractIntegrationTest {
4847
@Test
4948
//@Disabled("Please replace the placeholder for the registration code to run the test case.")
5049
void onboardCommunicationUnitAndSaveToFile() throws Throwable {
51-
OnboardingService onboardingService = new OnboardingServiceImpl(new QA() {
52-
});
50+
OnboardingService onboardingService = new OnboardingServiceImpl(communicationUnit.getEnvironment());
5351
OnboardingParameters onboardingParameters = new OnboardingParameters();
5452
onboardingParameters.setRegistrationCode("4822479417");
5553
onboardingParameters.setApplicationId(communicationUnit.getApplicationId());
@@ -73,12 +71,10 @@ void onboardCommunicationUnitAndSaveToFile() throws Throwable {
7371
OnboardingResponseRepository.save(
7472
OnboardingResponseRepository.Identifier.MQTT_COMMUNICATION_UNIT, onboardingResponse);
7573

76-
MqttClientService mqttClientService = new MqttClientService(new QA() {
77-
});
74+
MqttClientService mqttClientService = new MqttClientService(communicationUnit.getEnvironment());
7875
IMqttClient mqttClient = mqttClientService.create(onboardingResponse);
7976

80-
MqttOptionService mqttOptionService = new MqttOptionService(new QA() {
81-
});
77+
MqttOptionService mqttOptionService = new MqttOptionService(communicationUnit.getEnvironment());
8278
mqttClient.setCallback(new InternalCallback());
8379
mqttClient.connect(mqttOptionService.createMqttConnectOptions(onboardingResponse));
8480
mqttClient.subscribe(onboardingResponse.getConnectionCriteria().getCommands());

agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/fixture/TelemetryPlatformFixture.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import com.dke.data.agrirouter.api.dto.onboard.OnboardingResponse;
44
import com.dke.data.agrirouter.api.enums.CertificationType;
55
import com.dke.data.agrirouter.api.enums.Gateway;
6-
import com.dke.data.agrirouter.api.env.QA;
76
import com.dke.data.agrirouter.api.service.onboard.secured.OnboardingService;
87
import com.dke.data.agrirouter.api.service.parameters.SecuredOnboardingParameters;
98
import com.dke.data.agrirouter.impl.onboard.secured.OnboardingServiceImpl;
@@ -31,8 +30,7 @@ class TelemetryPlatformFixture extends AbstractIntegrationTest {
3130
@Test
3231
@Disabled("Please replace the placeholder for the registration code to run the test case.")
3332
void onboardTelemetryPlatformAndSaveToFile() throws IOException {
34-
OnboardingService onboardingService = new OnboardingServiceImpl(new QA() {
35-
});
33+
OnboardingService onboardingService = new OnboardingServiceImpl(telemetryPlatform.getEnvironment());
3634
SecuredOnboardingParameters onboardingParameters = new SecuredOnboardingParameters();
3735
onboardingParameters.setRegistrationCode("8530975704");
3836
onboardingParameters.setApplicationId(telemetryPlatform.getApplicationId());

agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/mqtt/PingServiceTest.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import agrirouter.response.Response;
44
import com.dke.data.agrirouter.api.dto.messaging.FetchMessageResponse;
5-
import com.dke.data.agrirouter.api.env.QA;
65
import com.dke.data.agrirouter.api.service.messaging.encoding.DecodeMessageService;
76
import com.dke.data.agrirouter.api.service.messaging.mqtt.PingService;
87
import com.dke.data.agrirouter.api.service.parameters.PingParameters;
@@ -38,12 +37,10 @@ class PingServiceTest extends AbstractIntegrationTest {
3837
void sendHealthMessageToPingEndpoint() throws Throwable {
3938
var onboardingResponse = OnboardingResponseRepository.read(OnboardingResponseRepository.Identifier.MQTT_COMMUNICATION_UNIT);
4039

41-
var mqttClientService = new MqttClientService(new QA() {
42-
});
40+
var mqttClientService = new MqttClientService(communicationUnit.getEnvironment());
4341
var mqttClient = mqttClientService.create(onboardingResponse);
4442

45-
var mqttOptionService = new MqttOptionService(new QA() {
46-
});
43+
var mqttOptionService = new MqttOptionService(communicationUnit.getEnvironment());
4744
mqttClient.setCallback(new PingServiceTest.InternalCallback());
4845
mqttClient.connect(mqttOptionService.createMqttConnectOptions(onboardingResponse));
4946
mqttClient.subscribe(onboardingResponse.getConnectionCriteria().getCommands());

agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/SetSubscriptionServiceTest.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import com.dke.data.agrirouter.api.cancellation.DefaultCancellationToken;
44
import com.dke.data.agrirouter.api.enums.ContentMessageType;
55
import com.dke.data.agrirouter.api.enums.SystemMessageType;
6-
import com.dke.data.agrirouter.api.env.QA;
76
import com.dke.data.agrirouter.api.service.messaging.encoding.DecodeMessageService;
87
import com.dke.data.agrirouter.api.service.messaging.http.FetchMessageService;
98
import com.dke.data.agrirouter.api.service.messaging.http.SetSubscriptionService;
@@ -31,8 +30,7 @@ class SetSubscriptionServiceTest extends AbstractIntegrationTest {
3130
@Test
3231
void givenValidEndpointWhenSendingSubscriptionsTheSubscriptionMessageShouldBeAccepted()
3332
throws Throwable {
34-
SetSubscriptionService setSubscriptionService = new SetSubscriptionServiceImpl(new QA() {
35-
});
33+
SetSubscriptionService setSubscriptionService = new SetSubscriptionServiceImpl(farmingSoftware.getEnvironment());
3634

3735
var parameters = new SetSubscriptionParameters();
3836
parameters.setOnboardingResponse(read(Identifier.FARMING_SOFTWARE));
@@ -70,8 +68,7 @@ void givenValidEndpointWhenSendingSubscriptionsTheSubscriptionMessageShouldBeAcc
7068
@Test
7169
void givenValidEndpointWhenSendingInvalidSubscriptionsTheSubscriptionMessageShouldNotBeAccepted()
7270
throws Throwable {
73-
SetSubscriptionService setSubscriptionService = new SetSubscriptionServiceImpl(new QA() {
74-
});
71+
SetSubscriptionService setSubscriptionService = new SetSubscriptionServiceImpl(farmingSoftware.getEnvironment());
7572

7673
var parameters = new SetSubscriptionParameters();
7774
parameters.setOnboardingResponse(read(Identifier.FARMING_SOFTWARE));

agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/onboarding/AuthorizationRequestServiceTest.java

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.dke.data.agrirouter.test.onboarding;
22

33
import com.dke.data.agrirouter.api.enums.SecuredOnboardingResponseType;
4-
import com.dke.data.agrirouter.api.env.QA;
54
import com.dke.data.agrirouter.api.exception.IllegalParameterDefinitionException;
65
import com.dke.data.agrirouter.api.service.onboard.secured.AuthorizationRequestService;
76
import com.dke.data.agrirouter.api.service.parameters.AuthorizationRequestParameters;
@@ -21,8 +20,7 @@ public class AuthorizationRequestServiceTest extends AbstractIntegrationTest {
2120
@Test
2221
void givenValidParameterWhenCreatingTheUrlThenTheUrlShouldBeGeneratedForFarmingSoftware() {
2322
AuthorizationRequestService authorizationRequestService =
24-
new AuthorizationRequestServiceImpl(new QA() {
25-
});
23+
new AuthorizationRequestServiceImpl(farmingSoftware.getEnvironment());
2624
var authorizationRequestParameters =
2725
new AuthorizationRequestParameters();
2826
authorizationRequestParameters.setApplicationId(farmingSoftware.getApplicationId());
@@ -40,8 +38,7 @@ void givenValidParameterWhenCreatingTheUrlThenTheUrlShouldBeGeneratedForFarmingS
4038
@Test
4139
void givenValidParameterWhenCreatingTheUrlThenTheUrlShouldBeGeneratedForTelemetryPlatform() {
4240
AuthorizationRequestService authorizationRequestService =
43-
new AuthorizationRequestServiceImpl(new QA() {
44-
});
41+
new AuthorizationRequestServiceImpl(telemetryPlatform.getEnvironment());
4542
var authorizationRequestParameters =
4643
new AuthorizationRequestParameters();
4744
authorizationRequestParameters.setApplicationId(telemetryPlatform.getApplicationId());
@@ -59,8 +56,7 @@ void givenValidParameterWhenCreatingTheUrlThenTheUrlShouldBeGeneratedForTelemetr
5956
@Test
6057
void givenInvalidParameterWhenCreatingTheUrlThenTheUrlShouldBeGenerated() {
6158
AuthorizationRequestService authorizationRequestService =
62-
new AuthorizationRequestServiceImpl(new QA() {
63-
});
59+
new AuthorizationRequestServiceImpl(telemetryPlatform.getEnvironment());
6460
var authorizationRequestParameters =
6561
new AuthorizationRequestParameters();
6662
authorizationRequestParameters.setResponseType(SecuredOnboardingResponseType.ONBOARD);

agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/onboarding/OnboardingWithErrorMessageTest.java

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33
import com.dke.data.agrirouter.api.enums.ApplicationType;
44
import com.dke.data.agrirouter.api.enums.CertificationType;
55
import com.dke.data.agrirouter.api.enums.Gateway;
6-
import com.dke.data.agrirouter.api.env.Environment;
7-
import com.dke.data.agrirouter.api.env.QA;
86
import com.dke.data.agrirouter.api.exception.OnboardingException;
97
import com.dke.data.agrirouter.api.service.onboard.OnboardingService;
108
import com.dke.data.agrirouter.api.service.parameters.OnboardingParameters;
@@ -21,7 +19,7 @@ class OnboardingWithErrorMessageTest extends AbstractIntegrationTest {
2119
@Test
2220
void
2321
givenInvalidRegistrationCodeWhenSendingTheOnboardingRequestThenThereShouldBeAnOnboardingExceptionWithFilledErrorMessage() {
24-
OnboardingService onboardingService = new OnboardingServiceImpl(getEnv());
22+
OnboardingService onboardingService = new OnboardingServiceImpl(communicationUnit.getEnvironment());
2523
var onboardingParameters = new OnboardingParameters();
2624
onboardingParameters.setApplicationMessageId(MessageIdService.generateMessageId());
2725
onboardingParameters.setApplicationType(ApplicationType.APPLICATION);
@@ -41,8 +39,4 @@ class OnboardingWithErrorMessageTest extends AbstractIntegrationTest {
4139
"Bearer not found.", onboardingException.getOnboardingError().getError().getMessage());
4240
}
4341

44-
private Environment getEnv() {
45-
return new QA() {
46-
};
47-
}
4842
}

0 commit comments

Comments
 (0)