Skip to content

Commit 4bfcbf2

Browse files
added condition to filter nonwhitelisted files before calling upload new endpoint
1 parent a1a464b commit 4bfcbf2

File tree

3 files changed

+53
-1
lines changed

3 files changed

+53
-1
lines changed

zebedee-cms/src/main/java/com/github/onsdigital/zebedee/model/approval/ApproveTask.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ private boolean doApproval() throws Exception {
175175
info().data("user", session.getEmail()).data("collectionId", collection.getDescription().getId())
176176
.log("approve task: collection approve task completed successfully");
177177

178-
if (Configuration.isUploadNewEndpointEnabled()) {
178+
if (Configuration.isUploadNewEndpointEnabled() && DatasetWhitelistChecker.isURIWhitelisted(collectionReader)) {
179179
uploadNewEndpoint(collection, collectionReader);
180180
}
181181

zebedee-cms/src/main/java/com/github/onsdigital/zebedee/util/DatasetWhitelistChecker.java

+13
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import java.util.Arrays;
66
import java.util.Set;
77
import java.util.stream.Collectors;
8+
import com.github.onsdigital.zebedee.reader.CollectionReader;
89

910
public class DatasetWhitelistChecker {
1011
public static final String REG_EX_STR = "(?i)(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)20[2-9][0-9]";
@@ -34,4 +35,16 @@ public static boolean isWhitelisted(String filename) {
3435

3536
return whitelist.contains(baseFilename);
3637
}
38+
39+
public static boolean isURIWhitelisted(CollectionReader collectionReader) {
40+
for (String uri : collectionReader.getReviewed().listUris()) {
41+
String fileName = uri.substring(uri.lastIndexOf('/') + 1);
42+
43+
if (isWhitelisted(fileName)) {
44+
return true;
45+
}
46+
}
47+
48+
return false;
49+
}
3750
}

zebedee-cms/src/test/java/com/github/onsdigital/zebedee/util/DatasetWhitelistCheckerTest.java

+39
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,38 @@
22

33
import static org.junit.Assert.assertFalse;
44
import static org.junit.Assert.assertTrue;
5+
import static org.mockito.Mockito.when;
56

7+
import java.util.Arrays;
8+
import java.util.List;
9+
10+
import org.junit.Before;
611
import org.junit.Test;
712
import org.junit.runner.RunWith;
13+
import org.mockito.InjectMocks;
14+
import org.mockito.Mock;
815
import org.mockito.junit.MockitoJUnitRunner;
916

17+
import com.github.onsdigital.zebedee.reader.CollectionReader;
18+
import com.github.onsdigital.zebedee.reader.ContentReader;
19+
1020
@RunWith(MockitoJUnitRunner.class)
1121
public class DatasetWhitelistCheckerTest {
1222

23+
@Mock
24+
private CollectionReader collectionReader;
25+
26+
@Mock
27+
private ContentReader reviewedContentReader;
28+
29+
@InjectMocks
30+
private DatasetWhitelistChecker checker;
31+
32+
@Before
33+
public void setUp() {
34+
when(collectionReader.getReviewed()).thenReturn(reviewedContentReader);
35+
}
36+
1337
@Test
1438
public void testIsWhitelistedWithValidFilename() {
1539
assertTrue(DatasetWhitelistChecker.isWhitelisted("upload-mm22.csv"));
@@ -70,4 +94,19 @@ public void testIsWhitelistedWithrtisa() {
7094
assertTrue(DatasetWhitelistChecker.isWhitelisted("rtisa.csv"));
7195
}
7296

97+
@Test
98+
public void testIsURIWhitelisted_WithWhitelistedURI() {
99+
List<String> uris = Arrays.asList("/path/to/upload-mm22.csv");
100+
when(reviewedContentReader.listUris()).thenReturn(uris);
101+
102+
assertTrue("Expected URI to be whitelisted", DatasetWhitelistChecker.isURIWhitelisted(collectionReader));
103+
}
104+
105+
@Test
106+
public void testIsURIWhitelisted_WithNonWhitelistedURI() {
107+
List<String> uris = Arrays.asList("/visualisations/dvc3069/Occupation%2520graphics%2520for%2520data%2520vis.xlsx");
108+
when(reviewedContentReader.listUris()).thenReturn(uris);
109+
110+
assertFalse("Expected URI to not be whitelisted", DatasetWhitelistChecker.isURIWhitelisted(collectionReader));
111+
}
73112
}

0 commit comments

Comments
 (0)