110719: IT checking redirect links accepted by checklinks curate task

This commit is contained in:
Marie Verdonck
2024-06-13 20:48:31 +02:00
parent 3dab2a7cea
commit e826660cb0

View File

@@ -9,6 +9,7 @@ package org.dspace.curate;
import static com.jayway.jsonpath.JsonPath.read; import static com.jayway.jsonpath.JsonPath.read;
import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertTrue;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.multipart; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.multipart;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
@@ -22,7 +23,7 @@ import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import org.dspace.app.launcher.ScriptLauncher; import org.apache.commons.lang3.StringUtils;
import org.dspace.app.rest.converter.DSpaceRunnableParameterConverter; import org.dspace.app.rest.converter.DSpaceRunnableParameterConverter;
import org.dspace.app.rest.matcher.ProcessMatcher; import org.dspace.app.rest.matcher.ProcessMatcher;
import org.dspace.app.rest.model.ParameterValueRest; import org.dspace.app.rest.model.ParameterValueRest;
@@ -661,12 +662,19 @@ public class CurationScriptIT extends AbstractControllerIntegrationTest {
.withTitle("Public item 1") .withTitle("Public item 1")
.withIssueDate("2017-10-17") .withIssueDate("2017-10-17")
.withAuthor("Smith, Donald").withAuthor("Doe, John") .withAuthor("Smith, Donald").withAuthor("Doe, John")
.withMetadata("dc", "identifier", "uri", "https://tinyurl.com/2rxpte5s") // Value not starting with http or https
.withMetadata("dc", "identifier", "uri", "demo.dspace.org/home")
// MetadataValueLinkChecker uri field with regular link
.withMetadata("dc", "description", null, "https://google.com")
// MetadataValueLinkChecker uri field with redirect link
.withMetadata("dc", "description", "uri", "https://demo7.dspace.org/handle/123456789/1")
// MetadataValueLinkChecker uri field with non resolving link
.withMetadata("dc", "description", "uri", "https://www.atmire.com/broken-link")
.withSubject("ExtraEntry") .withSubject("ExtraEntry")
.build(); .build();
String[] args = new String[] {"curate", "-t", "checklinks", "-i", publicItem1.getHandle()}; String[] args = new String[] {"curate", "-t", "checklinks", "-i", publicItem1.getHandle()};
TestDSpaceRunnableHandler testDSpaceRunnableHandler = new TestDSpaceRunnableHandler(); TestDSpaceRunnableHandler handler = new TestDSpaceRunnableHandler();
ScriptService scriptService = ScriptServiceFactory.getInstance().getScriptService(); ScriptService scriptService = ScriptServiceFactory.getInstance().getScriptService();
ScriptConfiguration scriptConfiguration = scriptService.getScriptConfiguration(args[0]); ScriptConfiguration scriptConfiguration = scriptService.getScriptConfiguration(args[0]);
@@ -676,10 +684,27 @@ public class CurationScriptIT extends AbstractControllerIntegrationTest {
script = scriptService.createDSpaceRunnableForScriptConfiguration(scriptConfiguration); script = scriptService.createDSpaceRunnableForScriptConfiguration(scriptConfiguration);
} }
if (script != null) { if (script != null) {
script.initialize(args, testDSpaceRunnableHandler, admin); script.initialize(args, handler, admin);
script.run(); script.run();
} }
assertTrue(testDSpaceRunnableHandler.getInfoMessages().contains("200 - OK")); // field that should be ignored
assertFalse(checkIfInfoTextLoggedByHandler(handler, "demo.dspace.org/home"));
// redirect links in field that should not be ignored (https) => expect OK
assertTrue(checkIfInfoTextLoggedByHandler(handler, "https://demo7.dspace.org/handle/123456789/1 = 200 - OK"));
// regular link in field that should not be ignored (http) => expect OK
assertTrue(checkIfInfoTextLoggedByHandler(handler, "https://google.com = 200 - OK"));
// nonexistent link in field that should not be ignored => expect 404
assertTrue(checkIfInfoTextLoggedByHandler(handler, "https://www.atmire.com/broken-link = 404 - FAILED"));
} }
boolean checkIfInfoTextLoggedByHandler(TestDSpaceRunnableHandler handler, String text) {
for (String message: handler.getInfoMessages()) {
if (StringUtils.containsIgnoreCase(message, text)) {
return true;
}
}
return false;
}
} }