Repository navigation
Expand file tree
/
Copy pathReidentifyFileValidationsTests.java
More file actions
85 lines (73 loc) · 3.9 KB
/
Copy pathReidentifyFileValidationsTests.java
File metadata and controls
85 lines (73 loc) · 3.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
package com.skyflow.detect.internal;
import com.skyflow.detect.DataSourceType;
import com.skyflow.detect.EntityType;
import com.skyflow.detect.RedactionLevel;
import com.skyflow.detect.RedactionType;
import com.skyflow.detect.ReidentifyFileRequest;
import com.skyflow.errors.ErrorCode;
import com.skyflow.errors.BaseErrorMessage;
import com.skyflow.errors.SkyflowException;
import org.junit.Assert;
import org.junit.Test;
import java.util.Arrays;
import java.util.Collections;
public class ReidentifyFileValidationsTests {
private static ReidentifyFileRequest.ReidentifyFileRequestBuilder valid() {
return ReidentifyFileRequest.builder().dataSource(DataSourceType.BASE64).value("Zm9v");
}
private static void assertRejected(ReidentifyFileRequest request, BaseErrorMessage expected) {
try {
ReidentifyFileValidations.validateReidentifyFileRequest(request);
Assert.fail("expected SkyflowException: " + expected);
} catch (SkyflowException e) {
Assert.assertEquals(ErrorCode.INVALID_INPUT.getCode(), e.getHttpCode());
Assert.assertEquals(expected.getMessage(), e.getMessage());
}
}
@Test
public void rejectsNullRequest() {
assertRejected(null, BaseErrorMessage.ReidentifyFileRequestNull);
}
@Test
public void rejectsMissingDataSource() {
assertRejected(ReidentifyFileRequest.builder().value("Zm9v").build(), BaseErrorMessage.InvalidDataSourceInReidentifyFile);
}
@Test
public void rejectsNullOrBlankValue() {
assertRejected(ReidentifyFileRequest.builder().dataSource(DataSourceType.BASE64).build(), BaseErrorMessage.InvalidValueInReidentifyFile);
assertRejected(valid().value("").build(), BaseErrorMessage.InvalidValueInReidentifyFile);
assertRejected(valid().value(" \t").build(), BaseErrorMessage.InvalidValueInReidentifyFile);
}
@Test
public void checksFieldsInOrderDataSourceBeforeValue() {
// Both missing: dataSource is reported first.
assertRejected(ReidentifyFileRequest.builder().build(), BaseErrorMessage.InvalidDataSourceInReidentifyFile);
}
@Test
public void acceptsMinimalAndFullValidRequests() throws SkyflowException {
ReidentifyFileValidations.validateReidentifyFileRequest(valid().build());
ReidentifyFileValidations.validateReidentifyFileRequest(valid()
.dataSource(DataSourceType.PRESIGNED_URL).value("https://example.com/f")
.redactionLevel(Arrays.asList(
RedactionLevel.builder().tokenGroupName("g").redactionPattern("p").build(),
RedactionLevel.builder().entityName(EntityType.NAME).redactionType(RedactionType.REDACTED).build(),
RedactionLevel.builder().tokenGroupName("g2").redactionType(RedactionType.PLAIN_TEXT).build(),
RedactionLevel.builder().entityName(EntityType.SSN).redactionPattern("p2").build()))
.build());
}
@Test
public void nullOrEmptyRedactionLevelListIsAllowed() throws SkyflowException {
ReidentifyFileValidations.validateReidentifyFileRequest(valid().redactionLevel(null).build());
ReidentifyFileValidations.validateReidentifyFileRequest(valid().redactionLevel(Collections.<RedactionLevel>emptyList()).build());
}
@Test
public void anyRedactionLevelShapePassesThrough() throws SkyflowException {
// Every RedactionLevel field is optional on the API; the server applies its own rules.
ReidentifyFileValidations.validateReidentifyFileRequest(valid().redactionLevel(Arrays.asList(
null,
RedactionLevel.builder().build(),
RedactionLevel.builder().tokenGroupName("g").build(),
RedactionLevel.builder().tokenGroupName("g").entityName(EntityType.NAME)
.redactionPattern("p").redactionType(RedactionType.MASKED).build())).build());
}
}