Skip to content

Commit 96a4355

Browse files
committed
added integration test
1 parent 078ce6a commit 96a4355

File tree

1 file changed

+78
-0
lines changed

1 file changed

+78
-0
lines changed

client/src/test/java/io/split/client/SplitClientIntegrationTest.java

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1013,6 +1013,84 @@ public MockResponse dispatch(RecordedRequest request) {
10131013
Assert.assertTrue(check3);
10141014
}
10151015

1016+
@Test
1017+
public void ImpressionPropertiesTest() throws Exception {
1018+
String splits = new String(Files.readAllBytes(Paths.get("src/test/resources/splits_imp_toggle.json")), StandardCharsets.UTF_8);
1019+
List<RecordedRequest> allRequests = new ArrayList<>();
1020+
1021+
Dispatcher dispatcher = new Dispatcher() {
1022+
@Override
1023+
public MockResponse dispatch(RecordedRequest request) {
1024+
allRequests.add(request);
1025+
switch (request.getPath()) {
1026+
case "/api/splitChanges?s=1.1&since=-1":
1027+
return new MockResponse().setResponseCode(200).setBody(splits);
1028+
case "/api/splitChanges?s=1.1&since=1602796638344":
1029+
return new MockResponse().setResponseCode(200).setBody("{\"splits\": [], \"since\":1602796638344, \"till\":1602796638344}");
1030+
case "/api/testImpressions/bulk":
1031+
return new MockResponse().setResponseCode(200);
1032+
case "/api/testImpressions/count":
1033+
return new MockResponse().setResponseCode(200);
1034+
case "/v1/keys/ss":
1035+
return new MockResponse().setResponseCode(200);
1036+
case "/v1/metrics/usage":
1037+
return new MockResponse().setResponseCode(200);
1038+
case "/v1/metrics/config":
1039+
return new MockResponse().setResponseCode(200);
1040+
}
1041+
return new MockResponse().setResponseCode(404);
1042+
}
1043+
};
1044+
1045+
MockWebServer server = new MockWebServer();
1046+
server.setDispatcher(dispatcher);
1047+
1048+
server.start();
1049+
String serverURL = String.format("http://%s:%s", server.getHostName(), server.getPort());
1050+
SplitClientConfig config = SplitClientConfig.builder()
1051+
.setBlockUntilReadyTimeout(10000)
1052+
.endpoint(serverURL, serverURL)
1053+
.telemetryURL(serverURL + "/v1")
1054+
.authServiceURL(String.format("%s/api/auth/enabled", serverURL))
1055+
.streamingEnabled(false)
1056+
.featuresRefreshRate(5)
1057+
.impressionsMode(ImpressionsManager.Mode.DEBUG)
1058+
.build();
1059+
1060+
SplitFactory factory = SplitFactoryBuilder.build("fake-api-token", config);
1061+
SplitClient client = factory.client();
1062+
client.blockUntilReady();
1063+
1064+
Assert.assertEquals("off", client.getTreatment("user1", "without_impression_toggle", new HashMap<>(), "{\"prop1\": \"val1\"}"));
1065+
Assert.assertEquals("off", client.getTreatment("user2", "impression_toggle_on", new HashMap<>(), "{\"prop1\": \"val1\", \"prop2\": \"val2\"}"));
1066+
Assert.assertEquals("off", client.getTreatment("user3", "impression_toggle_on", new HashMap<>()));
1067+
client.destroy();
1068+
boolean check1 = false, check2 = false, check3 = false;
1069+
for (int i=0; i < allRequests.size(); i++ ) {
1070+
if (allRequests.get(i).getPath().equals("/api/testImpressions/bulk") ) {
1071+
String body = allRequests.get(i).getBody().readUtf8();
1072+
if (body.contains("user1")) {
1073+
check1 = true;
1074+
Assert.assertTrue(body.contains("without_impression_toggle"));
1075+
Assert.assertTrue(body.contains("\"properties\":\"{\\\"prop1\\\":\\\"val1\\\"}\""));
1076+
}
1077+
if (body.contains("user2")) {
1078+
check2 = true;
1079+
Assert.assertTrue(body.contains("impression_toggle_on"));
1080+
Assert.assertTrue(body.contains("\"properties\":\"{\\\"prop2\\\":\\\"val2\\\",\\\"prop1\\\":\\\"val1\\\"}\""));
1081+
}
1082+
if (body.contains("user3")) {
1083+
check3 = true;
1084+
Assert.assertTrue(body.contains("impression_toggle_on"));
1085+
Assert.assertTrue(body.contains("\"properties\":null"));
1086+
}
1087+
}
1088+
}
1089+
server.shutdown();
1090+
Assert.assertTrue(check1);
1091+
Assert.assertTrue(check2);
1092+
}
1093+
10161094
private SSEMockServer buildSSEMockServer(SSEMockServer.SseEventQueue eventQueue) {
10171095
return new SSEMockServer(eventQueue, (token, version, channel) -> {
10181096
if (!"1.1".equals(version)) {

0 commit comments

Comments
 (0)