Skip to content

Commit ba6f604

Browse files
committed
add uts
1 parent 7367ceb commit ba6f604

File tree

13 files changed

+229
-89
lines changed

13 files changed

+229
-89
lines changed

client/src/main/java/io/split/client/SplitClientImpl.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,7 @@
99
import io.split.engine.evaluator.Evaluator;
1010
import io.split.engine.SDKReadinessGates;
1111
import io.split.engine.evaluator.EvaluatorImp;
12-
import io.split.engine.inputValidation.EventsValidator;
13-
import io.split.engine.inputValidation.KeyValidator;
14-
import io.split.engine.inputValidation.SplitNameValidator;
15-
import io.split.engine.inputValidation.TrafficTypeValidator;
12+
import io.split.inputValidation.*;
1613
import io.split.engine.metrics.Metrics;
1714
import io.split.grammar.Treatments;
1815
import org.slf4j.Logger;
@@ -148,7 +145,7 @@ private boolean track(Event event) {
148145
}
149146

150147
// Traffic Type validations
151-
TrafficTypeValidator.TrafficTypeResult trafficTypeResult = TrafficTypeValidator.isValid(event.trafficTypeName, _splitCache, "track");
148+
InputValidationResult trafficTypeResult = TrafficTypeValidator.isValid(event.trafficTypeName, _splitCache, "track");
152149
if (!trafficTypeResult.getSuccess()) {
153150
return false;
154151
}
@@ -190,7 +187,7 @@ private SplitResult getTreatmentWithConfigInternal(String label, String matching
190187
return SPLIT_RESULT_CONTROL;
191188
}
192189

193-
SplitNameValidator.SplitNameResult splitNameResult = SplitNameValidator.isValid(split, method);
190+
InputValidationResult splitNameResult = SplitNameValidator.isValid(split, method);
194191
if (!splitNameResult.getSuccess()) {
195192
return SPLIT_RESULT_CONTROL;
196193
}

client/src/main/java/io/split/client/SplitFactoryBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package io.split.client;
22

3-
import io.split.engine.inputValidation.ApiKeyValidator;
3+
import io.split.inputValidation.ApiKeyValidator;
44
import io.split.grammar.Treatments;
55
import org.slf4j.Logger;
66
import org.slf4j.LoggerFactory;

client/src/main/java/io/split/engine/inputValidation/SplitNameValidator.java

Lines changed: 0 additions & 51 deletions
This file was deleted.

client/src/main/java/io/split/engine/inputValidation/ApiKeyValidator.java renamed to client/src/main/java/io/split/inputValidation/ApiKeyValidator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package io.split.engine.inputValidation;
1+
package io.split.inputValidation;
22

33
import org.slf4j.Logger;
44
import org.slf4j.LoggerFactory;

client/src/main/java/io/split/engine/inputValidation/EventsValidator.java renamed to client/src/main/java/io/split/inputValidation/EventsValidator.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package io.split.engine.inputValidation;
1+
package io.split.inputValidation;
22

33
import io.split.client.dtos.Event;
44
import org.slf4j.Logger;
@@ -25,6 +25,10 @@ public static EventValidatorResult propertiesAreValid(Map<String, Object> proper
2525

2626
Map<String, Object> result = new HashMap<>();
2727
for (Map.Entry<String, Object> entry : properties.entrySet()) {
28+
if (entry.getKey() == null || entry.getKey().isEmpty()) {
29+
continue;
30+
}
31+
2832
size += entry.getKey().length();
2933
Object value = entry.getValue();
3034

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package io.split.inputValidation;
2+
3+
public class InputValidationResult {
4+
private final boolean _success;
5+
private final String _value;
6+
7+
public InputValidationResult(boolean success, String value) {
8+
_success = success;
9+
_value = value;
10+
}
11+
12+
public InputValidationResult(boolean success) {
13+
_success = success;
14+
_value = null;
15+
}
16+
17+
public boolean getSuccess() {
18+
return _success;
19+
}
20+
21+
public String getValue() {
22+
return _value;
23+
}
24+
}

client/src/main/java/io/split/engine/inputValidation/KeyValidator.java renamed to client/src/main/java/io/split/inputValidation/KeyValidator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package io.split.engine.inputValidation;
1+
package io.split.inputValidation;
22

33
import org.slf4j.Logger;
44
import org.slf4j.LoggerFactory;
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package io.split.inputValidation;
2+
3+
import org.slf4j.Logger;
4+
import org.slf4j.LoggerFactory;
5+
6+
public class SplitNameValidator {
7+
private static final Logger _log = LoggerFactory.getLogger(SplitNameValidator.class);
8+
9+
public static InputValidationResult isValid(String name, String method) {
10+
if (name == null) {
11+
_log.error(String.format("%s: you passed a null split name, split name must be a non-empty string", method));
12+
return new InputValidationResult(false);
13+
}
14+
15+
if (name.isEmpty()) {
16+
_log.error(String.format("%s: you passed an empty split name, split name must be a non-empty string", method));
17+
return new InputValidationResult(false);
18+
}
19+
20+
String trimmed = name.trim();
21+
if (!trimmed.equals(name)) {
22+
_log.warn(String.format("%s: split name %s has extra whitespace, trimming", method, name));
23+
name = trimmed;
24+
}
25+
26+
return new InputValidationResult(true, name);
27+
}
28+
}

client/src/main/java/io/split/engine/inputValidation/TrafficTypeValidator.java renamed to client/src/main/java/io/split/inputValidation/TrafficTypeValidator.java

Lines changed: 5 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package io.split.engine.inputValidation;
1+
package io.split.inputValidation;
22

33
import io.split.engine.cache.SplitCache;
44
import org.slf4j.Logger;
@@ -7,15 +7,15 @@
77
public class TrafficTypeValidator {
88
private static final Logger _log = LoggerFactory.getLogger(TrafficTypeValidator.class);
99

10-
public static TrafficTypeResult isValid(String trafficTypeName, SplitCache splitCache, String method) {
10+
public static InputValidationResult isValid(String trafficTypeName, SplitCache splitCache, String method) {
1111
if (trafficTypeName == null) {
1212
_log.error(String.format("%s: you passed a null trafficTypeName, trafficTypeName must be a non-empty string", method));
13-
return new TrafficTypeResult(false);
13+
return new InputValidationResult(false);
1414
}
1515

1616
if (trafficTypeName.isEmpty()) {
1717
_log.error(String.format("%s: you passed an empty trafficTypeName, trafficTypeName must be a non-empty string", method));
18-
return new TrafficTypeResult(false);
18+
return new InputValidationResult(false);
1919
}
2020

2121
if (!trafficTypeName.equals(trafficTypeName.toLowerCase())) {
@@ -28,29 +28,6 @@ public static TrafficTypeResult isValid(String trafficTypeName, SplitCache split
2828
"make sure you’re tracking your events to a valid traffic type defined in the Split console.", method, trafficTypeName));
2929
}
3030

31-
return new TrafficTypeResult(true, trafficTypeName);
32-
}
33-
34-
public static class TrafficTypeResult {
35-
private final boolean _success;
36-
private final String _value;
37-
38-
public TrafficTypeResult(boolean success, String value) {
39-
_success = success;
40-
_value = value;
41-
}
42-
43-
public TrafficTypeResult(boolean success) {
44-
_success = success;
45-
_value = null;
46-
}
47-
48-
public boolean getSuccess() {
49-
return _success;
50-
}
51-
52-
public String getValue() {
53-
return _value;
54-
}
31+
return new InputValidationResult(true, trafficTypeName);
5532
}
5633
}
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package io.split.inputValidation;
2+
3+
import org.junit.Assert;
4+
import org.junit.Test;
5+
6+
import java.util.HashMap;
7+
import java.util.Map;
8+
9+
public class EventsValidatorTest {
10+
@Test
11+
public void propertiesAreValidWorks() {
12+
Map<String, Object> properties = new HashMap<>();
13+
properties.put("prop1", 1);
14+
properties.put("prop2", 2L);
15+
properties.put("prop3", 7.56);
16+
properties.put("prop4", "something");
17+
properties.put("prop5", true);
18+
properties.put("prop6", null);
19+
properties.put(null, "value");
20+
properties.put("", "value");
21+
22+
EventsValidator.EventValidatorResult result = EventsValidator.propertiesAreValid(properties);
23+
Assert.assertTrue(result.getSuccess());
24+
Assert.assertEquals(1063, result.getEventSize());
25+
Assert.assertEquals(6, result.getValue().size());
26+
27+
// when properties size is > Event.MAX_PROPERTIES_LENGTH_BYTES
28+
properties = new HashMap<>();
29+
for (int i = 0; i <= (32 * 1024); i++) {
30+
properties.put("prop" + i, "something-" + i);
31+
}
32+
result = EventsValidator.propertiesAreValid(properties);
33+
Assert.assertFalse(result.getSuccess());
34+
}
35+
36+
@Test
37+
public void typeIsValidWorks() {
38+
boolean result = EventsValidator.typeIsValid("event_type_id", "test");
39+
Assert.assertTrue(result);
40+
41+
// when eventTypeId is null
42+
result = EventsValidator.typeIsValid(null, "test");
43+
Assert.assertFalse(result);
44+
45+
// when eventTypeId is empty
46+
result = EventsValidator.typeIsValid("", "test");
47+
Assert.assertFalse(result);
48+
49+
// when eventTypeId is does not match
50+
result = EventsValidator.typeIsValid("aksdjas!@#$@%#^$&%", "test");
51+
Assert.assertFalse(result);
52+
}
53+
}

0 commit comments

Comments
 (0)