From 6bc92bd14115636b141dec5b882934566ca52f1d Mon Sep 17 00:00:00 2001 From: Oliver Bertuch Date: Wed, 14 Jul 2021 17:08:01 +0200 Subject: [PATCH 01/32] refactor(validation): update to Passay 1.6.0 The update to Passay 1.6.0 required adapting to the change Java API. IQSS/dataverse-security#38 --- pom.xml | 2 +- .../iq/dataverse/validation/PasswordValidatorServiceBean.java | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index 9f32dc9ea75..e1a0498676b 100644 --- a/pom.xml +++ b/pom.xml @@ -168,7 +168,7 @@ org.passay passay - 1.1.0 + 1.6.0 org.glassfish diff --git a/src/main/java/edu/harvard/iq/dataverse/validation/PasswordValidatorServiceBean.java b/src/main/java/edu/harvard/iq/dataverse/validation/PasswordValidatorServiceBean.java index 468fa7c72e2..c32e6728358 100644 --- a/src/main/java/edu/harvard/iq/dataverse/validation/PasswordValidatorServiceBean.java +++ b/src/main/java/edu/harvard/iq/dataverse/validation/PasswordValidatorServiceBean.java @@ -146,11 +146,9 @@ public List validate(String password, Date passwordModificationTime) { * @return A List with error messages. Empty when the password is valid. */ public List validate(String password, Date passwordModificationTime, boolean isHumanReadable) { -// public List validate(String password, boolean isHumanReadable) { init(); - final PasswordData passwordData = PasswordData.newInstance(password, String.valueOf(passwordModificationTime.getTime()), null); -// final PasswordData passwordData = PasswordData.newInstance(password, "username", null); + final PasswordData passwordData = new PasswordData(password); final RuleResult result = new RuleResult(); for (PasswordValidator currentUser : validators.values()) { From e707eac40814de1c2a261e630ff089b2c265afb3 Mon Sep 17 00:00:00 2001 From: Oliver Bertuch Date: Wed, 14 Jul 2021 17:11:15 +0200 Subject: [PATCH 02/32] refactor(validation): refactor PasswordValidatorTest for Passay 1.6.0 The password validator test spit out an error. To identify the failing example, the test was ported to JUnit5 parameterized test. The test example has been changed, as the library detects another error. The error message has been validated and found correct. IQSS/dataverse-security#38 --- .../validation/PasswordValidatorTest.java | 283 ++++++------------ 1 file changed, 91 insertions(+), 192 deletions(-) diff --git a/src/test/java/edu/harvard/iq/dataverse/validation/PasswordValidatorTest.java b/src/test/java/edu/harvard/iq/dataverse/validation/PasswordValidatorTest.java index bbca418fe7d..9d38a527199 100644 --- a/src/test/java/edu/harvard/iq/dataverse/validation/PasswordValidatorTest.java +++ b/src/test/java/edu/harvard/iq/dataverse/validation/PasswordValidatorTest.java @@ -1,21 +1,26 @@ package edu.harvard.iq.dataverse.validation; import org.apache.commons.lang3.StringUtils; -import org.junit.Assert; -import org.junit.BeforeClass; -import org.junit.Test; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; -import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.logging.Logger; +import java.util.stream.Stream; + +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; import org.passay.CharacterRule; import org.passay.EnglishCharacterData; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + /** * PasswordValidatorTest *

@@ -28,203 +33,102 @@ public class PasswordValidatorTest { private static final Logger logger = Logger.getLogger(PasswordValidatorTest.class.getCanonicalName()); private static PasswordValidatorServiceBean passwordValidatorService; - /** - * Helper class so we can pass on a list of passwords and validation settings to falsify the outcome. - */ - private class Params { - - int numberOfExpectedErrors; - String password; - Date passwordModificationTime; - int expirationDays; - int expirationMaxLength; - int goodStrength; - int maxLength; - int minLength; - String dictionaries; - List characterRules; - int numberOfCharacteristics; - int numberOfConsecutiveDigitsAllowed; - - Params(int numberOfExpectedErrors, String password, Date passwordModificationTime, int expirationDays, - int expirationMinLength, int goodStrength, int maxLength, int minLength, String dictionaries, - int numberOfCharacteristics, List characterRules, int numConsecutiveDigitsAllowed) { - - this.numberOfExpectedErrors = numberOfExpectedErrors; - this.password = password; - this.passwordModificationTime = passwordModificationTime; - this.expirationDays = expirationDays; - this.expirationMaxLength = expirationMinLength; - this.goodStrength = goodStrength; - this.maxLength = maxLength; - this.minLength = minLength; - this.dictionaries = dictionaries; - this.characterRules = characterRules; - this.numberOfCharacteristics = numberOfCharacteristics; - this.numberOfConsecutiveDigitsAllowed = numConsecutiveDigitsAllowed; - } - - int getExpectedErrors() { - return numberOfExpectedErrors; - } - - String getPassword() { - return password; - } - - Date getPasswordModificationTime() { - return passwordModificationTime; - } - - int getExpirationDays() { - return expirationDays; - } - - int getExpirationMaxLength() { - return expirationMaxLength; - } - - int getGoodStrength() { - return goodStrength; - } - - int getMaxLength() { - return maxLength; - } - - int getMinLength() { - return minLength; - } - - String getDictionaries() { - return dictionaries; - } - - List getCharacterRules() { - return characterRules; - } - - int getNumberOfCharacteristics() { - return numberOfCharacteristics; - } - - int getNumberOfConsecutiveDigitsAllowed() { - return numberOfConsecutiveDigitsAllowed; - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - for (CharacterRule rule : characterRules) { - sb.append(rule.getNumberOfCharacters() + " of " + rule.getValidCharacters() + " "); - } - String characterRulesReadable = sb.toString(); - return - String.format("numberOfExpectedErrors=%s\npassword='%s'\npasswordModificationTime=%s\nexpirationDays=%s\n" + - "expirationMaxLength=%s\ngoodStrength=%s\nmaxLength=%s\nminLength=%s\ndictionaries=%s\n" + - "characterRules=%s\n" + - "numberOfCharacteristics=%s\nnumberOfRepeatingCharactersAllowed=%s\n%s", - numberOfExpectedErrors, - password, - passwordModificationTime, - expirationDays, - expirationMaxLength, - goodStrength, - maxLength, - minLength, - dictionaries, - characterRulesReadable, - numberOfCharacteristics, - numberOfConsecutiveDigitsAllowed, - StringUtils.repeat("-", 80) - ); - } - } - - @BeforeClass + @BeforeAll public static void setUp() { passwordValidatorService = new PasswordValidatorServiceBean(); } - @SuppressWarnings("unchecked") - @Test - public void testDifferentPasswordsAndSettings() { - + static Stream passwordParams() { long DAY = 86400000L; - final Date expired = new Date(new Date().getTime() - DAY * 400); - final Date notExpired = new Date(new Date().getTime() - DAY * 300); List characterRulesDefault = PasswordValidatorUtil.getCharacterRulesDefault(); List characterRulesHarvardLevel3 = getCharacterRulesHarvardLevel3(); final int numberOfCharactersDefault = 2; final int numberOfCharacters = 3; final int numConsecutiveDigitsAllowed = 4; - final int expirationDays = 365; - final int expirationMinLength = 10; final int goodStrength20 = 20; final int maxLength = 0; final int minLength = 8; final String dictionary = createDictionary("56pOtAtO", false); - - final List paramsList = Arrays.asList(new Params[]{ - new Params(6, "p otato", notExpired, expirationDays, expirationMinLength, goodStrength20, maxLength, minLength, dictionary, numberOfCharacters, characterRulesHarvardLevel3, numConsecutiveDigitsAllowed), // everything wrong here for both validators. - new Params(5, "p otato", notExpired, expirationDays, expirationMinLength, 0, maxLength, minLength, dictionary, numberOfCharacters, characterRulesHarvardLevel3, numConsecutiveDigitsAllowed), // no GoodStrength validator - new Params(0, "p", expired, expirationDays, 0, 0, 0, 0, dictionary, 0, characterRulesHarvardLevel3, numConsecutiveDigitsAllowed), // no validation... everything if off - new Params(1, "po", expired, expirationDays, 0, 0, 1, 0, dictionary, 0, characterRulesHarvardLevel3, numConsecutiveDigitsAllowed), // this password is too long - new Params(0, "potato", notExpired, expirationDays, 7, 0, 0, 0, dictionary, 0, characterRulesHarvardLevel3, numConsecutiveDigitsAllowed), // set expiration again - new Params(5, "p otato", expired, 401, expirationMinLength, 0, maxLength, minLength, dictionary, numberOfCharacters, characterRulesHarvardLevel3, numConsecutiveDigitsAllowed), // 401 days before expiration - new Params(5, "p otato", notExpired, expirationDays, expirationMinLength, 0, maxLength, minLength, dictionary, numberOfCharacters, characterRulesHarvardLevel3, numConsecutiveDigitsAllowed), - new Params(4, "one potato", notExpired, expirationDays, expirationMinLength, 0, maxLength, minLength, dictionary, numberOfCharacters, characterRulesHarvardLevel3, numConsecutiveDigitsAllowed), - new Params(3, "Two potato", notExpired, expirationDays, expirationMinLength, 0, maxLength, minLength, dictionary, numberOfCharacters, characterRulesHarvardLevel3, numConsecutiveDigitsAllowed), - new Params(0, "Three.potato", notExpired, expirationDays, expirationMinLength, 0, maxLength, minLength, dictionary, numberOfCharacters, characterRulesHarvardLevel3, numConsecutiveDigitsAllowed), - new Params(0, "F0ur.potato", notExpired, expirationDays, 15, 0, maxLength, 10, dictionary, numberOfCharacters, characterRulesHarvardLevel3, numConsecutiveDigitsAllowed), - new Params(0, "F0ur.potatos", notExpired, expirationDays, 15, 0, maxLength, 10, dictionary, numberOfCharacters, characterRulesHarvardLevel3, numConsecutiveDigitsAllowed), - new Params(0, "F0ur.potato", notExpired, expirationDays, 15, 0, maxLength, 10, dictionary, numberOfCharacters, characterRulesHarvardLevel3, numConsecutiveDigitsAllowed), - new Params(0, "4.potato", notExpired, expirationDays, expirationMinLength, 0, maxLength, minLength, dictionary, numberOfCharacters, characterRulesHarvardLevel3, numConsecutiveDigitsAllowed), - new Params(0, "55Potato", notExpired, expirationDays, expirationMinLength, 0, maxLength, minLength, dictionary, numberOfCharacters, characterRulesHarvardLevel3, numConsecutiveDigitsAllowed), - new Params(1, "56pOtAtO", notExpired, expirationDays, expirationMinLength, 0, maxLength, minLength, dictionary, numberOfCharacters, characterRulesHarvardLevel3, numConsecutiveDigitsAllowed), // password in dictionary - new Params(1, "56Potato", notExpired, expirationDays, expirationMinLength, 0, maxLength, minLength, dictionary, numberOfCharacters, characterRulesHarvardLevel3, numConsecutiveDigitsAllowed), // password in dictionary case insensitive - new Params(1, "56pOtAtOs", notExpired, expirationDays, expirationMinLength, 0, maxLength, minLength, dictionary, numberOfCharacters, characterRulesHarvardLevel3, numConsecutiveDigitsAllowed), // substring of password in dictionary - new Params(0, "6 Potato", notExpired, expirationDays, expirationMinLength, goodStrength20, maxLength, minLength, dictionary, numberOfCharacters, characterRulesHarvardLevel3, numConsecutiveDigitsAllowed), - new Params(3, "7 Potato", notExpired, expirationDays, expirationMinLength, goodStrength20, maxLength, minLength, dictionary, 4, characterRulesHarvardLevel3, numConsecutiveDigitsAllowed), // add a fourth characteristic - new Params(0, "7 Potato901234567890", notExpired, expirationMinLength, minLength, goodStrength20, maxLength, minLength, dictionary, 4, characterRulesHarvardLevel3, numConsecutiveDigitsAllowed), // Now it does not matter: 20 characters - new Params(0, "8.Potato", notExpired, expirationDays, expirationMinLength, goodStrength20, maxLength, minLength, dictionary, 4, characterRulesHarvardLevel3, numConsecutiveDigitsAllowed), // Now we use all four - new Params(2, "Potato.Too.12345.Short", notExpired, expirationDays, expirationMinLength, 0, maxLength, 23, dictionary, numberOfCharacters, characterRulesHarvardLevel3, numConsecutiveDigitsAllowed), - new Params(0, "Potatoes on my plate with beef", expired, expirationDays, expirationMinLength, 30, maxLength, minLength, dictionary, numberOfCharacters, characterRulesHarvardLevel3, numConsecutiveDigitsAllowed), - new Params(0, "Potatoes on my plate with pie.", expired, expirationDays, expirationMinLength, 30, maxLength, minLength, dictionary, numberOfCharacters, characterRulesHarvardLevel3, numConsecutiveDigitsAllowed), - new Params(0, "Potatoes on a plate .", expired, expirationDays, expirationMinLength, 30, maxLength, minLength, dictionary, numberOfCharacters, characterRulesHarvardLevel3, numConsecutiveDigitsAllowed), - new Params(0, "Repeated Potatoes:0000", expired, expirationDays, expirationMinLength, 30, maxLength, minLength, dictionary, numberOfCharacters, characterRulesHarvardLevel3, 5), // Pass when repeating character maximum is 5 - new Params(0, "Repeated Potatoes:000", expired, expirationDays, expirationMinLength, 30, maxLength, minLength, dictionary, numberOfCharacters, characterRulesHarvardLevel3, numConsecutiveDigitsAllowed), // Allow no more than 3 repeating characters (default) - new Params(6, " ", expired, expirationDays, expirationMinLength, 30, maxLength, minLength, dictionary, numberOfCharacters, characterRulesHarvardLevel3, numConsecutiveDigitsAllowed), //For some reason, whitespace doesn't count in the repeating rule? - new Params(0, "potat1", notExpired, expirationDays, expirationMinLength, goodStrength20, maxLength, 6, dictionary, numberOfCharactersDefault, characterRulesDefault, numConsecutiveDigitsAllowed), // Good enough for Dataverse 4.0. - new Params(0, "potat000000000000000", notExpired, expirationDays, expirationMinLength, goodStrength20, maxLength, 6, dictionary, numberOfCharactersDefault, characterRulesDefault, numConsecutiveDigitsAllowed), // Has repeating chars exceeding limit, but goodstrength waives it - new Params(2, "ma02138", notExpired, expirationDays, expirationMinLength, goodStrength20, maxLength, 6, dictionary, numberOfCharactersDefault, characterRulesDefault, numConsecutiveDigitsAllowed), // 5 or more numbers in a row - new Params(2, "ma8312002138", notExpired, expirationDays, expirationMinLength, goodStrength20, maxLength, 6, dictionary, numberOfCharactersDefault, characterRulesDefault, numConsecutiveDigitsAllowed), // 5 or more numbers in a row - } - ); - - paramsList.forEach( - params -> { - int expectedErrors = params.getExpectedErrors(); -// List errors = passwordValidatorService.validate(params.getPassword(), params.getPasswordModificationTime()); -// passwordValidatorService.setExpirationDays(params.getExpirationDays()); -// passwordValidatorService.setExpirationMaxLength(params.getExpirationMaxLength()); - passwordValidatorService.setGoodStrength(params.getGoodStrength()); - passwordValidatorService.setMaxLength(params.getMaxLength()); - passwordValidatorService.setMinLength(params.getMinLength()); - passwordValidatorService.setDictionaries(params.getDictionaries()); - passwordValidatorService.setNumberOfCharacteristics(params.getNumberOfCharacteristics()); - passwordValidatorService.setCharacterRules(params.getCharacterRules()); - passwordValidatorService.setNumberOfConsecutiveDigitsAllowed(params.getNumberOfConsecutiveDigitsAllowed()); - - List errors = passwordValidatorService.validate(params.getPassword()); - int actualErrors = errors.size(); - - String message = message(params, errors, expectedErrors, actualErrors); - logger.info(message); - Assert.assertTrue(message, actualErrors == expectedErrors); - } + + // Format: int numberOfExpectedErrors, String password, int goodStrength, int maxLength, int minLength, + // String dictionaries, int numberOfCharacteristics, List characterRules, + // int numConsecutiveDigitsAllowed + return Stream.of( + // everything wrong here for both validators. + Arguments.of(6, "p otato", goodStrength20, maxLength, minLength, dictionary, numberOfCharacters, characterRulesHarvardLevel3, numConsecutiveDigitsAllowed), + // no GoodStrength validator + Arguments.of(5, "p otato", 0, maxLength, minLength, dictionary, numberOfCharacters, characterRulesHarvardLevel3, numConsecutiveDigitsAllowed), + // no validation... everything if off + Arguments.of(0, "p", 0, 0, 0, dictionary, 0, characterRulesHarvardLevel3, numConsecutiveDigitsAllowed), + // this password is too long + Arguments.of(1, "po", 0, 1, 0, dictionary, 0, characterRulesHarvardLevel3, numConsecutiveDigitsAllowed), + // set expiration again + Arguments.of(0, "potato", 0, 0, 0, dictionary, 0, characterRulesHarvardLevel3, numConsecutiveDigitsAllowed), + Arguments.of(4, "one potato", 0, maxLength, minLength, dictionary, numberOfCharacters, characterRulesHarvardLevel3, numConsecutiveDigitsAllowed), + Arguments.of(3, "Two potato", 0, maxLength, minLength, dictionary, numberOfCharacters, characterRulesHarvardLevel3, numConsecutiveDigitsAllowed), + Arguments.of(0, "Three.potato", 0, maxLength, minLength, dictionary, numberOfCharacters, characterRulesHarvardLevel3, numConsecutiveDigitsAllowed), + Arguments.of(0, "F0ur.potato", 0, maxLength, 10, dictionary, numberOfCharacters, characterRulesHarvardLevel3, numConsecutiveDigitsAllowed), + Arguments.of(0, "F0ur.potatos", 0, maxLength, 10, dictionary, numberOfCharacters, characterRulesHarvardLevel3, numConsecutiveDigitsAllowed), + Arguments.of(0, "F0ur.potato", 0, maxLength, 10, dictionary, numberOfCharacters, characterRulesHarvardLevel3, numConsecutiveDigitsAllowed), + Arguments.of(0, "4.potato", 0, maxLength, minLength, dictionary, numberOfCharacters, characterRulesHarvardLevel3, numConsecutiveDigitsAllowed), + Arguments.of(0, "55Potato", 0, maxLength, minLength, dictionary, numberOfCharacters, characterRulesHarvardLevel3, numConsecutiveDigitsAllowed), + // password in dictionary + Arguments.of(1, "56pOtAtO", 0, maxLength, minLength, dictionary, numberOfCharacters, characterRulesHarvardLevel3, numConsecutiveDigitsAllowed), + // password in dictionary case insensitive + Arguments.of(1, "56Potato", 0, maxLength, minLength, dictionary, numberOfCharacters, characterRulesHarvardLevel3, numConsecutiveDigitsAllowed), + // substring of password in dictionary + Arguments.of(1, "56pOtAtOs", 0, maxLength, minLength, dictionary, numberOfCharacters, characterRulesHarvardLevel3, numConsecutiveDigitsAllowed), + Arguments.of(0, "6 Potato", goodStrength20, maxLength, minLength, dictionary, numberOfCharacters, characterRulesHarvardLevel3, numConsecutiveDigitsAllowed), + // add a fourth characteristic + Arguments.of(3, "7 Potato", goodStrength20, maxLength, minLength, dictionary, 4, characterRulesHarvardLevel3, numConsecutiveDigitsAllowed), + // Now it does not matter: 20 characters + Arguments.of(0, "7 Potato901234567890", goodStrength20, maxLength, minLength, dictionary, 4, characterRulesHarvardLevel3, numConsecutiveDigitsAllowed), + // Now we use all four + Arguments.of(0, "8.Potato", goodStrength20, maxLength, minLength, dictionary, 4, characterRulesHarvardLevel3, numConsecutiveDigitsAllowed), + Arguments.of(2, "Potato.Too.12345.Short", 0, maxLength, 23, dictionary, numberOfCharacters, characterRulesHarvardLevel3, numConsecutiveDigitsAllowed), + Arguments.of(0, "Potatoes on my plate with beef", 30, maxLength, minLength, dictionary, numberOfCharacters, characterRulesHarvardLevel3, numConsecutiveDigitsAllowed), + Arguments.of(0, "Potatoes on my plate with pie.", 30, maxLength, minLength, dictionary, numberOfCharacters, characterRulesHarvardLevel3, numConsecutiveDigitsAllowed), + Arguments.of(0, "Potatoes on a plate .", 30, maxLength, minLength, dictionary, numberOfCharacters, characterRulesHarvardLevel3, numConsecutiveDigitsAllowed), + // Pass when repeating character maximum is 5 + Arguments.of(0, "Repeated Potatoes:0000", 30, maxLength, minLength, dictionary, numberOfCharacters, characterRulesHarvardLevel3, 5), + // Allow no more than 3 repeating characters (default) + Arguments.of(0, "Repeated Potatoes:000", 30, maxLength, minLength, dictionary, numberOfCharacters, characterRulesHarvardLevel3, numConsecutiveDigitsAllowed), + //For some reason, whitespace doesn't count in the repeating rule? + Arguments.of(6, " ", 30, maxLength, minLength, dictionary, numberOfCharacters, characterRulesHarvardLevel3, numConsecutiveDigitsAllowed), + // Good enough for Dataverse 4.0. + Arguments.of(0, "potat1", goodStrength20, maxLength, 6, dictionary, numberOfCharactersDefault, characterRulesDefault, numConsecutiveDigitsAllowed), + // Has repeating chars exceeding limit, but goodstrength waives it + Arguments.of(0, "potat000000000000000", goodStrength20, maxLength, 6, dictionary, numberOfCharactersDefault, characterRulesDefault, numConsecutiveDigitsAllowed), + // 5 or more numbers in a row + Arguments.of(2, "ma02138", goodStrength20, maxLength, 6, dictionary, numberOfCharactersDefault, characterRulesDefault, numConsecutiveDigitsAllowed), + // 5 or more numbers in a row, but multiple times + Arguments.of(3, "ma8312002138", goodStrength20, maxLength, 6, dictionary, numberOfCharactersDefault, characterRulesDefault, numConsecutiveDigitsAllowed) ); - + } + + @SuppressWarnings("unchecked") + @ParameterizedTest + @MethodSource("passwordParams") + public void testDifferentPasswordsAndSettings(int numberOfExpectedErrors, String password, int goodStrength, int maxLength, int minLength, String dictionaries, + int numberOfCharacteristics, List characterRules, int numberOfConsecutiveDigitsAllowed) { + // given + passwordValidatorService.setGoodStrength(goodStrength); + passwordValidatorService.setMaxLength(maxLength); + passwordValidatorService.setMinLength(minLength); + passwordValidatorService.setDictionaries(dictionaries); + passwordValidatorService.setNumberOfCharacteristics(numberOfCharacteristics); + passwordValidatorService.setCharacterRules(characterRules); + passwordValidatorService.setNumberOfConsecutiveDigitsAllowed(numberOfConsecutiveDigitsAllowed); + + // when + List errors = passwordValidatorService.validate(password); + + // then + String message = ""; + if (numberOfExpectedErrors != errors.size()) { + message = StringUtils.join(errors, "\n"); + } + assertEquals(numberOfExpectedErrors, errors.size(), message); } /** @@ -235,7 +139,7 @@ public void testDifferentPasswordsAndSettings() { * @param password The string to add * @return The absolute file path of the dictionary file. */ - private String createDictionary(String password, boolean append) { + static String createDictionary(String password, boolean append) { File file = null; try { file = File.createTempFile("weak_passwords", ".txt"); @@ -248,11 +152,6 @@ private String createDictionary(String password, boolean append) { assert file != null; return file.getAbsolutePath(); } - - private String message(Params params, List errors, int expected, int actual) { - String details = (actual == 0) ? params.toString() : PasswordValidatorServiceBean.parseMessages(errors) + "\n" + params; - return String.format("Expected errors: %s\nActual errors: %s\nDetails: %s", expected, actual, details); - } public static List getCharacterRulesHarvardLevel3() { List characterRules = new ArrayList<>(); From 436f1af86cc7156957edd023ec8e0457c20b9c5d Mon Sep 17 00:00:00 2001 From: Oliver Bertuch Date: Wed, 14 Jul 2021 17:44:48 +0200 Subject: [PATCH 03/32] build(deps): update commons-validator to 1.7 This fixes an potential security issue due to an outdated dependency (commons-beanutils). The test needed to be fixed and revealed that formerly email addresses with trailing whitespace were accepted. The update solved this error, too. IQSS/dataverse-security#38 --- pom.xml | 2 +- .../iq/dataverse/EMailValidatorTest.java | 103 +++++++----------- 2 files changed, 39 insertions(+), 66 deletions(-) diff --git a/pom.xml b/pom.xml index e1a0498676b..9fc6348924c 100644 --- a/pom.xml +++ b/pom.xml @@ -375,7 +375,7 @@ commons-validator commons-validator - 1.6 + 1.7 colt diff --git a/src/test/java/edu/harvard/iq/dataverse/EMailValidatorTest.java b/src/test/java/edu/harvard/iq/dataverse/EMailValidatorTest.java index ba3d3f74ec7..2518f6486e3 100644 --- a/src/test/java/edu/harvard/iq/dataverse/EMailValidatorTest.java +++ b/src/test/java/edu/harvard/iq/dataverse/EMailValidatorTest.java @@ -1,74 +1,47 @@ package edu.harvard.iq.dataverse; -import static org.junit.Assert.assertEquals; +import org.apache.commons.validator.routines.EmailValidator; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.CsvSource; -import java.util.Arrays; -import java.util.Collection; +import static org.junit.jupiter.api.Assertions.assertEquals; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; -import org.junit.runners.Parameterized.Parameters; - -/** - * - * @author philip durbin - * @author oscardssmith - * @author rohit bhattacharjee - * @author stephen kraffmiller - * @author alex scheitlin - */ -@RunWith(Parameterized.class) public class EMailValidatorTest { - public boolean isValid; - public String email; - - public EMailValidatorTest(boolean isValid, String email) { - this.isValid = isValid; - this.email = email; - } - - @Parameters - public static Collection parameters() { - return Arrays.asList(new Object[][] { - { true, "pete@mailinator.com" }, - - // @todo How can this be a valid email address? - { true, " leadingWhitespace@mailinator.com" }, - - // @todo How can this be a valid email address? - { true, "trailingWhitespace@mailinator.com " }, - - { false, "elisah.da mota@example.com" }, - { false, "pete1@mailinator.com;pete2@mailinator.com" }, + static EmailValidator validator = EmailValidator.getInstance(); - /** - * These examples are all from https://randomuser.me and seem to be - * valid according to - * http://sphinx.mythic-beasts.com/~pdw/cgi-bin/emailvalidate (except - * رونیکا.محمدخان@example.com). - */ - { true, "michélle.pereboom@example.com" }, - { true, "begüm.vriezen@example.com" }, - { true, "lótus.gonçalves@example.com" }, - { true, "lótus.gonçalves@éxample.com" }, - { true, "begüm.vriezen@example.cologne" }, - { true, "رونیکا.محمدخان@example.com" }, - { false, "lótus.gonçalves@example.cóm" }, - { false, "dora@.com" }, - { false, "" }, - { false, null }, - - // add tests for 4601 - { true, "blah@wiso.uni-unc.de" }, - { true, "foo@essex.co.uk" }, - { true, "jack@bu.cloud" }, - }); - } - @Test - public void testIsEmailValid() { - assertEquals(isValid, EMailValidator.isEmailValid(email, null)); - } + @ParameterizedTest + @CsvSource(value = { + "true, 'pete@mailinator.com'", + "false, ' leadingWhitespace@mailinator.com'", + "false, 'trailingWhitespace@mailinator.com '", + "false, 'elisah.da mota@example.com'", + "false, 'pete1@mailinator.com;pete2@mailinator.com'", + + /** + * These examples are all from https://randomuser.me and seem to be + * valid according to + * http://sphinx.mythic-beasts.com/~pdw/cgi-bin/emailvalidate (except + * رونیکا.محمدخان@example.com). + */ + "true, 'michélle.pereboom@example.com'", + "true, 'begüm.vriezen@example.com'", + "true, 'lótus.gonçalves@example.com'", + "true, 'lótus.gonçalves@éxample.com'", + "true, 'begüm.vriezen@example.cologne'", + "true, 'رونیکا.محمدخان@example.com'", + "false, 'lótus.gonçalves@example.cóm'", + "false, 'dora@.com'", + "false, ''", + "false, NULL", + + // add tests for 4601 + "true, 'blah@wiso.uni-unc.de'", + "true, 'foo@essex.co.uk'", + "true, 'jack@bu.cloud'" + }, nullValues = "NULL") + public void testIsEmailValid(boolean expected, String mail) { + assertEquals(expected, validator.isValid(mail)); + } } From 8ac3a5238dc87381691ff8cdc56f7807b1cecd48 Mon Sep 17 00:00:00 2001 From: Oliver Bertuch Date: Wed, 14 Jul 2021 17:50:17 +0200 Subject: [PATCH 04/32] build(deps): update Tika to 1.27 for sec updates. IQSS/dataverse-security#38 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 9fc6348924c..de5315f1325 100644 --- a/pom.xml +++ b/pom.xml @@ -623,7 +623,7 @@ org.apache.tika tika-parsers - 1.24.1 + 1.27 From a5e581e98073ddd2132735ae3dfb10760cf467b1 Mon Sep 17 00:00:00 2001 From: Oliver Bertuch Date: Fri, 16 Jul 2021 16:48:38 +0200 Subject: [PATCH 05/32] build(deps): update Maven Dependency Plugin to 3.2.0 The old version 3.1.1 had issues with updated deps using classes in version 55 (Java 11). See https://issues.apache.org/jira/browse/MDEP-613 (Although going for 3.1.2 would be sufficient, better go for recent version) --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index de5315f1325..26c13d352c2 100644 --- a/pom.xml +++ b/pom.xml @@ -774,7 +774,7 @@ org.apache.maven.plugins maven-dependency-plugin - 3.1.1 + 3.2.0 de.qaware.maven From 41eb5271443cc14985935a706602d077b1f62f49 Mon Sep 17 00:00:00 2001 From: Oliver Bertuch Date: Fri, 16 Jul 2021 16:54:31 +0200 Subject: [PATCH 06/32] chore(deps): remove orphaned Apache Commons CLI dependency. --- pom.xml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/pom.xml b/pom.xml index 26c13d352c2..98e3021ca47 100644 --- a/pom.xml +++ b/pom.xml @@ -614,11 +614,6 @@ - - commons-cli - commons-cli - 1.2 - org.apache.tika From 012b64c01cb648e640f7fb3f92488b26eb93b3bb Mon Sep 17 00:00:00 2001 From: Oliver Bertuch Date: Fri, 16 Jul 2021 17:03:49 +0200 Subject: [PATCH 07/32] refactor(utils): remove Xerces-based Base64 class usage. IQSS/dataverse-security#38 --- .../java/edu/harvard/iq/dataverse/util/StringUtil.java | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/util/StringUtil.java b/src/main/java/edu/harvard/iq/dataverse/util/StringUtil.java index 33032e46268..750358b12d7 100644 --- a/src/main/java/edu/harvard/iq/dataverse/util/StringUtil.java +++ b/src/main/java/edu/harvard/iq/dataverse/util/StringUtil.java @@ -7,6 +7,7 @@ import java.security.NoSuchAlgorithmException; import java.util.ArrayList; import java.util.Arrays; +import java.util.Base64; import java.util.Collections; import java.util.List; import java.util.Optional; @@ -14,14 +15,11 @@ import java.util.TreeSet; import java.util.logging.Level; import java.util.logging.Logger; -import java.util.regex.Matcher; -import java.util.regex.Pattern; import javax.crypto.BadPaddingException; import javax.crypto.Cipher; import javax.crypto.IllegalBlockSizeException; import javax.crypto.NoSuchPaddingException; import javax.crypto.spec.SecretKeySpec; -import org.apache.xerces.impl.dv.util.Base64; import org.jsoup.Jsoup; /** @@ -130,7 +128,7 @@ public static String encrypt(String value, String password ) { final SecretKeySpec secretKeySpec = generateKeyFromString(password); aes.init(Cipher.ENCRYPT_MODE, secretKeySpec); byte[] encrypted = aes.doFinal(baseBytes); - String base64ed = Base64.encode(encrypted); + String base64ed = new String(Base64.getEncoder().encode(encrypted)); return base64ed.replaceAll("\\+", ".") .replaceAll("=", "-") .replaceAll("/", "_"); @@ -147,7 +145,7 @@ public static String decrypt(String value, String password ) { .replaceAll("-", "=") .replaceAll("_", "/"); - byte[] baseBytes = Base64.decode(base64); + byte[] baseBytes = Base64.getDecoder().decode(base64); try { Cipher aes = Cipher.getInstance("AES"); aes.init( Cipher.DECRYPT_MODE, generateKeyFromString(password)); From 38b63f2dc0bbe57faed1fde488dd77ad8e5f313d Mon Sep 17 00:00:00 2001 From: Oliver Bertuch Date: Fri, 16 Jul 2021 18:14:09 +0200 Subject: [PATCH 08/32] build(deps): make package nu.xom.xom a managed dependency IQSS/dataverse-security#38 The XOM library had been changed to com.iom7.xom before, trying to achieve updated dependencies. It had been declared as a direct dependency, which it is not - the library is nowhere used in the Dataverse codebase. Instead, it is used by sword2-server and others. As the original authors of XOM added never versions, so this commit removes the direct dependency and adds a newer version to . This has a sideeffect: now the xercesImpl library version is defined by Apache Tika (depending on it) instead of Xom (which is a sub-dependency, making the relying version there loose against Tika). This update of xercesImpl is necessary as the old version (the code used <=2.8.0) contains security issues fixed in 2.12.1, which Tika depends on. It does not seem necessary to add xercesImpl to yet. That might change in the future to avoid drifting versions... See IQSS/dataverse-security#38 --- pom.xml | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/pom.xml b/pom.xml index 8cefe9086e7..73a77f86b5c 100644 --- a/pom.xml +++ b/pom.xml @@ -158,6 +158,24 @@ import pom + + + + + xom + xom + 1.3.7 + + + + - com.io7m.xom - xom - 1.2.10 - - From ca21f73e31cc6454b1039113a427cb0a9ecd086a Mon Sep 17 00:00:00 2001 From: Oliver Bertuch Date: Fri, 16 Jul 2021 18:22:11 +0200 Subject: [PATCH 09/32] refactor(utils): fix XmlPrinter for Java 11 and newer Xerces library. --- .../iq/dataverse/util/xml/XmlPrinter.java | 32 ++++++++++++------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/util/xml/XmlPrinter.java b/src/main/java/edu/harvard/iq/dataverse/util/xml/XmlPrinter.java index 7bdfc0dda6c..e568fad56d5 100644 --- a/src/main/java/edu/harvard/iq/dataverse/util/xml/XmlPrinter.java +++ b/src/main/java/edu/harvard/iq/dataverse/util/xml/XmlPrinter.java @@ -1,16 +1,14 @@ package edu.harvard.iq.dataverse.util.xml; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; +import java.io.StringReader; +import java.io.StringWriter; import java.util.logging.Logger; import javax.xml.transform.OutputKeys; -import javax.xml.transform.Source; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerException; -import javax.xml.transform.sax.SAXSource; -import javax.xml.transform.sax.SAXTransformerFactory; +import javax.xml.transform.TransformerFactory; import javax.xml.transform.stream.StreamResult; -import org.xml.sax.InputSource; +import javax.xml.transform.stream.StreamSource; public class XmlPrinter { @@ -18,13 +16,25 @@ public class XmlPrinter { static public String prettyPrintXml(String xml) { try { - Transformer transformer = SAXTransformerFactory.newInstance().newTransformer(); + Transformer transformer = TransformerFactory.newInstance().newTransformer(); + + // pretty print by indention transformer.setOutputProperty(OutputKeys.INDENT, "yes"); + // set amount of whitespace during indent transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2"); - Source source = new SAXSource(new InputSource(new ByteArrayInputStream(xml.getBytes()))); - StreamResult streamResult = new StreamResult(new ByteArrayOutputStream()); - transformer.transform(source, streamResult); - return new String(((ByteArrayOutputStream) streamResult.getOutputStream()).toByteArray()); + + StreamSource source = new StreamSource(new StringReader(xml)); + StringWriter output = new StringWriter(); + + transformer.transform(source, new StreamResult(output)); + + // This hacky hack is necessary due to https://bugs.openjdk.java.net/browse/JDK-7150637 + // which has not been a problem before because of using old xercesImpl 2.8.0 library dated 2006. + // That old library contains security flaws, so the change was necessary. + return output + .toString() + .replaceFirst("encoding=\"UTF-8\"\\?>", + "encoding=\"UTF-8\"?>"+System.lineSeparator()); } catch (IllegalArgumentException | TransformerException ex) { logger.info("Returning XML as-is due to problem pretty printing it: " + ex.toString()); return xml; From fd7dfa7f774d89ba0fe6d5862138e3b4433627b8 Mon Sep 17 00:00:00 2001 From: Oliver Bertuch Date: Thu, 22 Jul 2021 19:19:37 +0200 Subject: [PATCH 10/32] refactor(deps): make Apache HTTPClient and related package versions converge. --- checkstyle.xml | 2 +- pom.xml | 28 ++++++++++++++++++++++------ 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/checkstyle.xml b/checkstyle.xml index 99185e15e97..5252bccc898 100644 --- a/checkstyle.xml +++ b/checkstyle.xml @@ -98,7 +98,7 @@ --> - + org.apache.httpcomponents httpclient - ${httpcomponents.client.version} + ${apache.httpcomponents.client.version} + + + + org.apache.httpcomponents + httpmime + ${apache.httpcomponents.client.version} + + + + org.apache.httpcomponents + httpcore + ${apache.httpcomponents.core.version} com.google.cloud @@ -158,9 +172,7 @@ import pom - - - + xom xom @@ -207,15 +219,18 @@ + org.apache.httpcomponents httpclient + org.apache.httpcomponents httpcore - 4.4.9 + + org.swordapp @@ -244,6 +259,7 @@ + com.amazonaws aws-java-sdk-s3 From f3762d9582d6ae609f2ba6337385042ba3125e71 Mon Sep 17 00:00:00 2001 From: Oliver Bertuch Date: Thu, 22 Jul 2021 19:35:11 +0200 Subject: [PATCH 11/32] refactor(deps): make Apache Commons IO dependency versions converge. --- pom.xml | 37 ++++++++++++++++++------------------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/pom.xml b/pom.xml index 809a0144029..ea7ae64769a 100644 --- a/pom.xml +++ b/pom.xml @@ -29,6 +29,7 @@ 5.2021.4 42.2.19 1.11.762 + 2.11.0 1.2 3.12.0 4.5.13 @@ -178,16 +179,12 @@ xom 1.3.7 - - - - xerces - xercesImpl - 2.12.1 + commons-io + commons-io + ${commons.io.version} - --> - commons-io - commons-io - 2.7 - com.google.code.gson gson @@ -385,9 +376,16 @@ jakarta.el provided + + + commons-io + commons-io + + org.apache.commons commons-lang3 + @@ -395,11 +393,6 @@ commons-text 1.9 - - org.apache.solr - solr-solrj - 8.8.1 - org.apache.commons commons-math @@ -410,6 +403,12 @@ commons-validator 1.7 + + + org.apache.solr + solr-solrj + 8.8.1 + colt colt From bc95f84230ce5b585178aafd02faca08f2227612 Mon Sep 17 00:00:00 2001 From: Oliver Bertuch Date: Thu, 22 Jul 2021 20:46:05 +0200 Subject: [PATCH 12/32] build(deps): make SLF4J libraries convergent and add SLF4J-JDK14 to classpath for JUL logging --- pom.xml | 55 +++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 35 insertions(+), 20 deletions(-) diff --git a/pom.xml b/pom.xml index ea7ae64769a..51f04fdcaae 100644 --- a/pom.xml +++ b/pom.xml @@ -29,6 +29,7 @@ 5.2021.4 42.2.19 1.11.762 + 1.7.32 2.11.0 1.2 3.12.0 @@ -185,6 +186,31 @@ commons-io ${commons.io.version} + + + + org.slf4j + slf4j-api + ${slf4j.version} + + + org.slf4j + slf4j-jdk14 + ${slf4j.version} + + + + org.slf4j + slf4j-log4j12 + ${slf4j.version} + + + org.slf4j + jcl-over-slf4j + ${slf4j.version} + + + + + + org.slf4j + slf4j-jdk14 + + org.passay passay @@ -507,26 +542,6 @@ jsoup 1.11.3 - - - org.slf4j - slf4j-api - 1.7.7 - - - org.slf4j - slf4j-log4j12 - 1.7.7 - - - io.searchbox jest From 3790ec025f84fbbcb44c69d6ec82fb0b386dd81c Mon Sep 17 00:00:00 2001 From: Oliver Bertuch Date: Thu, 22 Jul 2021 22:20:29 +0200 Subject: [PATCH 13/32] build(deps): remove Apache HttpComponents direct deps and readd Apache Commons HttpClient The future update of sword2-server will drop the dependency to commons-httpclient. We rely on that as a huge technical debt (see comment in pom.xml) and been using it ever since via transitive dependencies. Re-adding as a direct dependency to not break our codebase when updating sword2-server. --- pom.xml | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/pom.xml b/pom.xml index 51f04fdcaae..07e583cb528 100644 --- a/pom.xml +++ b/pom.xml @@ -252,17 +252,23 @@ - - org.apache.httpcomponents - httpclient - + + + commons-httpclient + commons-httpclient + 3.1 - - org.apache.httpcomponents - httpcore - - - + org.swordapp From bfd4f70fec1c56a19b144074eee5ca93813ca128 Mon Sep 17 00:00:00 2001 From: Oliver Bertuch Date: Thu, 22 Jul 2021 23:14:20 +0200 Subject: [PATCH 14/32] style(ddiexport): tune down log levels in DdiExportUtil --- .../iq/dataverse/export/ddi/DdiExportUtil.java | 8 ++++---- .../iq/dataverse/export/ddi/DdiExportUtilTest.java | 14 +++++++------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/export/ddi/DdiExportUtil.java b/src/main/java/edu/harvard/iq/dataverse/export/ddi/DdiExportUtil.java index 693e3cd6b10..507b7544d74 100644 --- a/src/main/java/edu/harvard/iq/dataverse/export/ddi/DdiExportUtil.java +++ b/src/main/java/edu/harvard/iq/dataverse/export/ddi/DdiExportUtil.java @@ -216,10 +216,10 @@ private static void createStdyDscr(XMLStreamWriter xmlw, DatasetDTO datasetDto) distributorSet=true; } } - logger.info("Dsitr set?: " + distributorSet); - logger.info("Pub?: " + datasetDto.getPublisher()); + logger.fine("Dsitr set?: " + distributorSet); + logger.fine("Pub?: " + datasetDto.getPublisher()); boolean excludeRepository = settingsService.isTrueForKey(SettingsServiceBean.Key.ExportInstallationAsDistributorOnlyWhenNotSet, false); - logger.info("Exclude: " + excludeRepository); + logger.fine("Exclude: " + excludeRepository); if (!StringUtils.isEmpty(datasetDto.getPublisher()) && !(excludeRepository && distributorSet)) { xmlw.writeStartElement("distrbtr"); writeAttribute(xmlw, "source", "archive"); @@ -1819,7 +1819,7 @@ public static void datasetHtmlDDI(InputStream datafile, OutputStream outputStrea logger.severe("Parser configuration error " + pce.getMessage()); } catch (IOException ioe) { // I/O error - logger.info("I/O error " + ioe.getMessage()); + logger.warning("I/O error " + ioe.getMessage()); } } diff --git a/src/test/java/edu/harvard/iq/dataverse/export/ddi/DdiExportUtilTest.java b/src/test/java/edu/harvard/iq/dataverse/export/ddi/DdiExportUtilTest.java index dce34385274..aeebca4ba3c 100644 --- a/src/test/java/edu/harvard/iq/dataverse/export/ddi/DdiExportUtilTest.java +++ b/src/test/java/edu/harvard/iq/dataverse/export/ddi/DdiExportUtilTest.java @@ -21,7 +21,7 @@ import org.mockito.Mockito; import org.mockito.junit.jupiter.MockitoExtension; -import static org.junit.Assert.*; +import static org.junit.jupiter.api.Assertions.*; @ExtendWith(MockitoExtension.class) @TestMethodOrder(OrderAnnotation.class) @@ -41,9 +41,9 @@ public void testJson2DdiNoFiles() throws Exception { String datasetVersionAsJson = new String(Files.readAllBytes(Paths.get(datasetVersionJson.getAbsolutePath()))); File ddiFile = new File("src/test/java/edu/harvard/iq/dataverse/export/ddi/dataset-finch1.xml"); String datasetAsDdi = XmlPrinter.prettyPrintXml(new String(Files.readAllBytes(Paths.get(ddiFile.getAbsolutePath())))); - logger.info(datasetAsDdi); + logger.fine(datasetAsDdi); String result = DdiExportUtil.datasetDtoAsJson2ddi(datasetVersionAsJson); - logger.info(result); + logger.fine(result); assertEquals(datasetAsDdi, result); } @@ -53,9 +53,9 @@ public void testExportDDI() throws Exception { String datasetVersionAsJson = new String(Files.readAllBytes(Paths.get(datasetVersionJson.getAbsolutePath()))); File ddiFile = new File("src/test/java/edu/harvard/iq/dataverse/export/ddi/exportfull.xml"); String datasetAsDdi = XmlPrinter.prettyPrintXml(new String(Files.readAllBytes(Paths.get(ddiFile.getAbsolutePath())))); - logger.info(datasetAsDdi); + logger.fine(datasetAsDdi); String result = DdiExportUtil.datasetDtoAsJson2ddi(datasetVersionAsJson); - logger.info(result); + logger.fine(result); assertEquals(datasetAsDdi, result); } @@ -71,9 +71,9 @@ public void testJson2ddiHasFiles() throws Exception { String datasetVersionAsJson = new String(Files.readAllBytes(Paths.get(datasetVersionJson.getAbsolutePath()))); File ddiFile = new File("src/test/java/edu/harvard/iq/dataverse/export/ddi/dataset-spruce1.xml"); String datasetAsDdi = XmlPrinter.prettyPrintXml(new String(Files.readAllBytes(Paths.get(ddiFile.getAbsolutePath())))); - logger.info(datasetAsDdi); + logger.fine(datasetAsDdi); String result = DdiExportUtil.datasetDtoAsJson2ddi(datasetVersionAsJson); - logger.info(result); + logger.fine(result); boolean filesMinimallySupported = false; // TODO: // setting "filesMinimallySupported" to false here, thus disabling the test; From 5bc3f300a15d32333072e0651d875da3fa905655 Mon Sep 17 00:00:00 2001 From: Oliver Bertuch Date: Tue, 27 Jul 2021 15:43:35 +0200 Subject: [PATCH 15/32] refactor(branding): make BrandingUtilTest reusable and JUnit5-ish Some other tests might rely on the BrandingUtil to actually do things. This refactoring ensures proper mocking and cleaning up after the tests ran, trying to ensure better atomicity. It enables easy setup and teardown of mocks to be used in other tests. It might be necessary to expose the underlying mocked objects for deeper testing. Left for later exercise if ever necessary. This refactoring also - makes a few tests parameterized to be easier to read, - enables much easier identification of failing test examples and - removes static ordering now unnecessary. --- .../dataverse/branding/BrandingUtilTest.java | 181 +++++++++++------- 1 file changed, 114 insertions(+), 67 deletions(-) diff --git a/src/test/java/edu/harvard/iq/dataverse/branding/BrandingUtilTest.java b/src/test/java/edu/harvard/iq/dataverse/branding/BrandingUtilTest.java index 32f6a487994..1f8002cc3e8 100644 --- a/src/test/java/edu/harvard/iq/dataverse/branding/BrandingUtilTest.java +++ b/src/test/java/edu/harvard/iq/dataverse/branding/BrandingUtilTest.java @@ -5,84 +5,133 @@ import edu.harvard.iq.dataverse.util.BundleUtil; import java.io.UnsupportedEncodingException; import java.util.Arrays; +import java.util.logging.Logger; +import java.util.stream.Stream; import javax.mail.internet.AddressException; import javax.mail.internet.InternetAddress; -import static org.junit.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; -import org.junit.jupiter.api.Order; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.TestMethodOrder; -import org.junit.jupiter.api.MethodOrderer.OrderAnnotation; -import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.Mock; +import org.junit.jupiter.api.TestInfo; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.CsvSource; +import org.junit.jupiter.params.provider.MethodSource; import org.mockito.Mockito; -import org.mockito.junit.jupiter.MockitoExtension; -@ExtendWith(MockitoExtension.class) -@TestMethodOrder(OrderAnnotation.class) public class BrandingUtilTest { - - @Mock - DataverseServiceBean dataverseSvc; - @Mock - SettingsServiceBean settingsSvc; - @Test - @Order(1) - public void testGetInstallationBrandName() { - System.out.println("testGetInstallationBrandName"); - - Mockito.when(settingsSvc.getValueForKey(SettingsServiceBean.Key.InstallationName)).thenReturn(null); - - //And configure the mock DataverseService to pretend the root collection name is as shown - Mockito.when(dataverseSvc.getRootDataverseName()).thenReturn("LibraScholar"); + /** + * TODO: these fields might be necessary to expose if someone wants to + * influence the mocking in tests outside this class. Left for + * later exercise if ever necessary. + */ + static DataverseServiceBean dataverseSvc; + static SettingsServiceBean settingsSvc; + static final String DEFAULT_NAME = "LibraScholar"; + + final Logger log = Logger.getLogger(this.getClass().getCanonicalName()); + + /** + * Create default mocks, reusable for other tests. + * Each call will create new, fresh mocks. (So this should ensure atomic tests to some degree...) + */ + @BeforeAll + public static void setupMocks() { + dataverseSvc = Mockito.mock(DataverseServiceBean.class); + settingsSvc = Mockito.mock(SettingsServiceBean.class); BrandingUtil.injectServices(dataverseSvc, settingsSvc); - assertEquals("LibraScholar", BrandingUtil.getInstallationBrandName()); //Defaults to root collection name - - Mockito.when(settingsSvc.getValueForKey(SettingsServiceBean.Key.InstallationName)).thenReturn("NotLibraScholar"); - - assertEquals("NotLibraScholar", BrandingUtil.getInstallationBrandName()); //uses setting + // initial values (needed here for other tests where this method is reused!) + Mockito.when(settingsSvc.getValueForKey(SettingsServiceBean.Key.InstallationName)).thenReturn(DEFAULT_NAME); + Mockito.when(dataverseSvc.getRootDataverseName()).thenReturn(DEFAULT_NAME); } - - @Test - public void testGetSupportTeamName() throws AddressException, UnsupportedEncodingException { - System.out.println("testGetSupportTeamName"); - Mockito.when(dataverseSvc.getRootDataverseName()).thenReturn(null); - BrandingUtil.injectServices(dataverseSvc, settingsSvc); - assertEquals("Support", BrandingUtil.getSupportTeamName(null)); - Mockito.when(dataverseSvc.getRootDataverseName()).thenReturn(""); - BrandingUtil.injectServices(dataverseSvc, settingsSvc); - assertEquals("Support", BrandingUtil.getSupportTeamName(null)); - Mockito.when(dataverseSvc.getRootDataverseName()).thenReturn("LibraScholar"); - BrandingUtil.injectServices(dataverseSvc, settingsSvc); - assertEquals("LibraScholar Support", BrandingUtil.getSupportTeamName(null)); - assertEquals("LibraScholar Support", BrandingUtil.getSupportTeamName(new InternetAddress("support@librascholar.edu"))); - assertEquals("LibraScholar Support Team", BrandingUtil.getSupportTeamName(new InternetAddress("support@librascholar.edu", "LibraScholar Support Team"))); - assertEquals("", BrandingUtil.getSupportTeamName(new InternetAddress("support@librascholar.edu", ""))); // misconfiguration to set to empty string + + /** + * After using, please free the mocks. Tests need atomicity. + */ + @AfterAll + public static void tearDownMocks() { + BrandingUtil.injectServices(null, null); + } + + /** + * Reset to default values before each test, trying to provide atomicity. + */ + @BeforeEach + void setDefaultMockValues() { + Mockito.when(settingsSvc.getValueForKey(SettingsServiceBean.Key.InstallationName)).thenReturn(DEFAULT_NAME); + Mockito.when(dataverseSvc.getRootDataverseName()).thenReturn(DEFAULT_NAME); + } + + @ParameterizedTest + @CsvSource(value ={ + "NULL, " + DEFAULT_NAME, // (Defaults to root collection name) + "NotLibraScholar, NotLibraScholar" + }, nullValues = {"NULL"}) + public void testGetInstallationBrandName(String mockedInstallationName, String expected) { + // given + Mockito.when(settingsSvc.getValueForKey(SettingsServiceBean.Key.InstallationName)).thenReturn(mockedInstallationName); + // when & then + assertEquals(expected, BrandingUtil.getInstallationBrandName()); + } + + static Stream supportTeamName() throws UnsupportedEncodingException, AddressException { + // expected string, InternetAddress + return Stream.of( + Arguments.of(null, "Support", null), + Arguments.of("", "Support", null), + Arguments.of(DEFAULT_NAME, DEFAULT_NAME + " Support", null), + Arguments.of(DEFAULT_NAME, DEFAULT_NAME + " Support", new InternetAddress("support@librascholar.edu")), + Arguments.of(DEFAULT_NAME, "LibraScholar Support Team", new InternetAddress("support@librascholar.edu", "LibraScholar Support Team")), + // misconfiguration to set to empty string + Arguments.of(DEFAULT_NAME, "", new InternetAddress("support@librascholar.edu", "")) + ); + } + + @ParameterizedTest + @MethodSource("supportTeamName") + public void testGetSupportTeamName(String mockedRootName, String expected, InternetAddress email) throws AddressException, UnsupportedEncodingException { + // given + Mockito.when(dataverseSvc.getRootDataverseName()).thenReturn(mockedRootName); + // when & then + assertEquals(expected, BrandingUtil.getSupportTeamName(email)); } - @Test - public void testGetSupportEmailAddress() throws AddressException, UnsupportedEncodingException { - System.out.println("testGetSupportEmailAddress"); - assertEquals(null, BrandingUtil.getSupportTeamEmailAddress(null)); - assertEquals("support@librascholar.edu", BrandingUtil.getSupportTeamEmailAddress(new InternetAddress("support@librascholar.edu"))); - assertEquals("support@librascholar.edu", BrandingUtil.getSupportTeamEmailAddress(new InternetAddress("support@librascholar.edu", "LibraScholar Support Team"))); - assertEquals("support@librascholar.edu", BrandingUtil.getSupportTeamEmailAddress(new InternetAddress("support@librascholar.edu", ""))); // misconfiguration to set to empty string but doesn't matter - assertEquals(null, BrandingUtil.getSupportTeamEmailAddress(new InternetAddress(null, "LibraScholar Support Team"))); // misconfiguration to set to null - assertEquals("", BrandingUtil.getSupportTeamEmailAddress(new InternetAddress("", "LibraScholar Support Team"))); // misconfiguration to set to empty string + static Stream supportEmailAddress() throws UnsupportedEncodingException, AddressException { + // expected string, InternetAddress + return Stream.of( + Arguments.of(null, null), + Arguments.of("support@librascholar.edu", new InternetAddress("support@librascholar.edu")), + Arguments.of("support@librascholar.edu", new InternetAddress("support@librascholar.edu", "LibraScholar")), + // misconfiguration to set to empty string but doesn't matter + Arguments.of("support@librascholar.edu", new InternetAddress("support@librascholar.edu", "")), + // misconfiguration to set to null + Arguments.of(null, new InternetAddress(null, "LibraScholar Support Team")), + // misconfiguration to set to empty string + Arguments.of("", new InternetAddress("", "LibraScholar Support Team")) + ); + } + + @ParameterizedTest + @MethodSource("supportEmailAddress") + public void testGetSupportEmailAddress(String expected, InternetAddress email) { + assertEquals(expected, BrandingUtil.getSupportTeamEmailAddress(email)); } @Test - public void testWelcomeInAppNotification() { - System.out.println("testWelcomeInAppNotification"); + public void testWelcomeInAppNotification(TestInfo testInfo) { + log.fine(testInfo.getDisplayName()); String message = BundleUtil.getStringFromBundle("notification.welcome", Arrays.asList( "LibraScholar", "User Guide", "Demo Site" )); - System.out.println("message: " + message); + log.fine("message: " + message); assertEquals("Welcome to LibraScholar! Get started by adding or finding data. " + "Have questions? Check out the User Guide." + " Want to test out Dataverse features? Use our Demo Site." @@ -91,8 +140,8 @@ public void testWelcomeInAppNotification() { } @Test - public void testWelcomeEmail() { - System.out.println("testWelcomeEmail"); + public void testWelcomeEmail(TestInfo testInfo) { + log.fine(testInfo.getDisplayName()); String message = BundleUtil.getStringFromBundle("notification.email.welcome", Arrays.asList( "LibraScholar", @@ -101,7 +150,7 @@ public void testWelcomeEmail() { "LibraScholar Support", "support@librascholar.edu" )); - System.out.println("message: " + message); + log.fine("message: " + message); assertEquals("Welcome to LibraScholar! Get started by adding or finding data. " + "Have questions? Check out the User Guide at http://guides.librascholar.edu/en/4.3/user or" + " contact LibraScholar Support at support@librascholar.edu for assistance.", @@ -109,35 +158,33 @@ public void testWelcomeEmail() { } @Test - public void testEmailClosing() { - System.out.println("testEmailClosing"); + public void testEmailClosing(TestInfo testInfo) { + log.fine(testInfo.getDisplayName()); String message = BundleUtil.getStringFromBundle("notification.email.closing", Arrays.asList( "support@librascholar.edu", "LibraScholar Support Team" )); - System.out.println("message: " + message); + log.fine("message: " + message); assertEquals("\n\nYou may contact us for support at support@librascholar.edu.\n\nThank you,\nLibraScholar Support Team", message); } @Test - public void testEmailSubject() { - System.out.println("testEmailSubject"); + public void testEmailSubject(TestInfo testInfo) { + log.fine(testInfo.getDisplayName()); String message = BundleUtil.getStringFromBundle("notification.email.create.account.subject", Arrays.asList( "LibraScholar" )); - System.out.println("message: " + message); + log.fine("message: " + message); assertEquals("LibraScholar: Your account has been created", message); } @Test public void testGetContactHeader() { - System.out.println("testGetContactHeader"); Mockito.when(dataverseSvc.getRootDataverseName()).thenReturn(null); - BrandingUtil.injectServices(dataverseSvc, settingsSvc); assertEquals("Contact Support", BrandingUtil.getContactHeader(null)); } From cbb6bf3d33b4f07923c733d6be60060909ff0d95 Mon Sep 17 00:00:00 2001 From: Oliver Bertuch Date: Tue, 27 Jul 2021 15:59:12 +0200 Subject: [PATCH 16/32] refactor(citation): mocks and JUnit5 for DataCitationTest - This refactoring moves these tests from JUnit 4 to 5. - This tests setups mocking for BrandingUtil via BrandingUtilTest to be atomically usable. - Removed star import. --- .../iq/dataverse/DataCitationTest.java | 36 ++++++++++++++++--- 1 file changed, 31 insertions(+), 5 deletions(-) diff --git a/src/test/java/edu/harvard/iq/dataverse/DataCitationTest.java b/src/test/java/edu/harvard/iq/dataverse/DataCitationTest.java index e6e2fecf5af..811c3db3c6d 100644 --- a/src/test/java/edu/harvard/iq/dataverse/DataCitationTest.java +++ b/src/test/java/edu/harvard/iq/dataverse/DataCitationTest.java @@ -1,24 +1,50 @@ package edu.harvard.iq.dataverse; +import edu.harvard.iq.dataverse.branding.BrandingUtil; +import edu.harvard.iq.dataverse.branding.BrandingUtilTest; import org.apache.commons.lang3.StringUtils; -import org.junit.Test; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.sql.Timestamp; import java.text.ParseException; import java.text.SimpleDateFormat; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.Date; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; -import static junit.framework.TestCase.assertNull; -import static org.junit.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; /** * Testing DataCitation class * @author pkiraly@gwdg.de */ public class DataCitationTest { - + + /** + * This test relies on {@link BrandingUtil}. We need to provide mocks for it. + */ + @BeforeAll + static void setup() { + BrandingUtilTest.setupMocks(); + } + /** + * After this test is done, the mocks should be turned of + * (so we keep atomicity and no one relies on them being present). + */ + @AfterAll + static void tearDown() { + BrandingUtilTest.tearDownMocks(); + } + /** * Test the public properties of DataCitation class via their getters * @throws ParseException From b51fcccf987ed0eb1f943c69ca30b5eba10026b4 Mon Sep 17 00:00:00 2001 From: Oliver Bertuch Date: Tue, 27 Jul 2021 16:06:41 +0200 Subject: [PATCH 17/32] build(deps): add XMLUnit and AssertJ as test dependencies. This will be used to write better unit tests for generated XML to not rely on perfect String comparison and fail because of negligible whitespace changes. Also move org.skyscreamer.jsonassert to bottom of deps, inline with other test deps. --- pom.xml | 36 ++++++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/pom.xml b/pom.xml index 07e583cb528..e476ce77041 100644 --- a/pom.xml +++ b/pom.xml @@ -239,18 +239,6 @@ 1.1.4 test - - org.skyscreamer - jsonassert - 1.5.0 - test - - - com.vaadin.external.google - android-json - - - + + org.glassfish + jakarta.json + provided + + com.sun.mail jakarta.mail diff --git a/src/test/java/edu/harvard/iq/dataverse/export/OpenAireExportUtilTest.java b/src/test/java/edu/harvard/iq/dataverse/export/OpenAireExportUtilTest.java index 9e9797486e1..d24a4657fc4 100644 --- a/src/test/java/edu/harvard/iq/dataverse/export/OpenAireExportUtilTest.java +++ b/src/test/java/edu/harvard/iq/dataverse/export/OpenAireExportUtilTest.java @@ -9,83 +9,79 @@ import edu.harvard.iq.dataverse.GlobalId; import edu.harvard.iq.dataverse.api.dto.DatasetDTO; import edu.harvard.iq.dataverse.api.dto.DatasetVersionDTO; -import edu.harvard.iq.dataverse.api.dto.FileDTO; import edu.harvard.iq.dataverse.export.openaire.OpenAireExportUtil; -import java.io.File; -import java.io.FileNotFoundException; +import java.io.IOException; import java.io.StringWriter; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; import java.util.ArrayList; -import java.util.Scanner; +import java.util.logging.Logger; import javax.xml.stream.XMLOutputFactory; import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamWriter; -import org.junit.After; -import org.junit.AfterClass; -import org.junit.Assert; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; -/** - * - * @author francesco.cadili@4science.it - */ -public class OpenAireExportUtilTest { +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; - public OpenAireExportUtilTest() { - } - - @BeforeClass - public static void setUpClass() { - } +import static org.junit.jupiter.api.Assertions.assertEquals; - @AfterClass - public static void tearDownClass() { - } +public class OpenAireExportUtilTest { - @Before - public void setUp() { + private static final Logger logger = Logger.getLogger(OpenAireExportUtilTest.class.getCanonicalName()); + private static final XMLOutputFactory xmlOutputFactory = XMLOutputFactory.newInstance(); + private final StringWriter stringWriter = new StringWriter(); + private XMLStreamWriter xmlWriter; + + @BeforeEach + private void setup() throws XMLStreamException { + xmlWriter = xmlOutputFactory.createXMLStreamWriter(stringWriter); } - - @After - public void tearDown() { + @AfterEach + private void teardown() throws XMLStreamException { + stringWriter.flush(); + xmlWriter.close(); } - + /** - * Test: 1, Identifier (with mandatory type sub-property) (M) - * - * identifier + * Test: 1a, Identifier (with mandatory type sub-property) (M) - DOI version */ @Test - public void testWriteIdentifierElement() throws XMLStreamException { - System.out.println("writeIdentifierElement"); - XMLOutputFactory f = XMLOutputFactory.newInstance(); - StringWriter sw = new StringWriter(); - XMLStreamWriter xmlw = f.createXMLStreamWriter(sw); - - // doi + public void testWriteIdentifierElementDoi() throws XMLStreamException { + // given String persistentAgency = "doi"; String persistentAuthority = "10.123"; String persistentId = "123"; GlobalId globalId = new GlobalId(persistentAgency, persistentAuthority, persistentId); - OpenAireExportUtil.writeIdentifierElement(xmlw, globalId.toURL().toString(), null); - xmlw.close(); - Assert.assertEquals("" - + persistentAuthority + "/" + persistentId + "", - sw.toString()); - - // handle - sw = new StringWriter(); - xmlw = f.createXMLStreamWriter(sw); - persistentAgency = "hdl"; - persistentAuthority = "1902.1"; - persistentId = "111012"; - globalId = new GlobalId(persistentAgency, persistentAuthority, persistentId); - OpenAireExportUtil.writeIdentifierElement(xmlw, globalId.toURL().toString(), null); - xmlw.close(); - Assert.assertEquals("" - + persistentAuthority + "/" + persistentId + "", - sw.toString()); + + // when + OpenAireExportUtil.writeIdentifierElement(xmlWriter, globalId.toURL().toString(), null); + xmlWriter.flush(); + + // then + assertEquals(String.format("%s/%s", persistentAuthority, persistentId), + stringWriter.toString()); + } + + /** + * Test: 1b, Identifier (with mandatory type sub-property) (M) - Handle version + */ + @Test + public void testWriteIdentifierElementHandle() throws XMLStreamException { + // given + String persistentAgency = "hdl"; + String persistentAuthority = "1902.1"; + String persistentId = "111012"; + GlobalId globalId = new GlobalId(persistentAgency, persistentAuthority, persistentId); + + // when + OpenAireExportUtil.writeIdentifierElement(xmlWriter, globalId.toURL().toString(), null); + xmlWriter.flush(); + + // then + assertEquals(String.format("%s/%s", persistentAuthority, persistentId), + stringWriter.toString()); } /** @@ -95,21 +91,17 @@ public void testWriteIdentifierElement() throws XMLStreamException { * creators */ @Test - public void testWriteCreatorsElement() throws XMLStreamException, FileNotFoundException { - System.out.println("writeCreatorsElement"); - XMLOutputFactory f = XMLOutputFactory.newInstance(); - StringWriter sw = new StringWriter(); - XMLStreamWriter xmlw = f.createXMLStreamWriter(sw); - - File file = new File("src/test/java/edu/harvard/iq/dataverse/export/dataset-simplified.txt"); - String text = new Scanner(file).useDelimiter("\\Z").next(); - Gson gson = new Gson(); - DatasetDTO datasetDto = gson.fromJson(text, DatasetDTO.class); + public void testWriteCreatorsElement() throws XMLStreamException, IOException { + // given + DatasetDTO datasetDto = mapObjectFromJsonTestFile("export/dataset-simplified.txt", DatasetDTO.class); DatasetVersionDTO dto = datasetDto.getDatasetVersion(); - OpenAireExportUtil.writeCreatorsElement(xmlw, dto, null); - - xmlw.close(); - Assert.assertEquals("" + + // when + OpenAireExportUtil.writeCreatorsElement(xmlWriter, dto, null); + xmlWriter.flush(); + + // then + assertEquals("" + "" + "Privileged, Pete" + "Pete" @@ -140,7 +132,7 @@ public void testWriteCreatorsElement() throws XMLStreamException, FileNotFoundEx + "Bottom" + "" + "", - sw.toString()); + stringWriter.toString()); } /** @@ -152,21 +144,17 @@ public void testWriteCreatorsElement() throws XMLStreamException, FileNotFoundEx * creators */ @Test - public void testWriteCreatorsElementWithOrganizations() throws XMLStreamException, FileNotFoundException { - System.out.println("writeCreatorsElementWithOrganizations"); - XMLOutputFactory f = XMLOutputFactory.newInstance(); - StringWriter sw = new StringWriter(); - XMLStreamWriter xmlw = f.createXMLStreamWriter(sw); - - File file = new File("src/test/java/edu/harvard/iq/dataverse/export/dataset-organizations.txt"); - String text = new Scanner(file).useDelimiter("\\Z").next(); - Gson gson = new Gson(); - DatasetDTO datasetDto = gson.fromJson(text, DatasetDTO.class); + public void testWriteCreatorsElementWithOrganizations() throws XMLStreamException, IOException { + // given + DatasetDTO datasetDto = mapObjectFromJsonTestFile("export/dataset-organizations.txt", DatasetDTO.class); DatasetVersionDTO dto = datasetDto.getDatasetVersion(); - OpenAireExportUtil.writeCreatorsElement(xmlw, dto, null); - - xmlw.close(); - Assert.assertEquals("" + + // when + OpenAireExportUtil.writeCreatorsElement(xmlWriter, dto, null); + xmlWriter.flush(); + + // then + assertEquals("" + "" + "IBM" + "" @@ -186,7 +174,7 @@ public void testWriteCreatorsElementWithOrganizations() throws XMLStreamExceptio + "Michael J. Fox Foundation for Parkinson's Research" + "" + "", - sw.toString()); + stringWriter.toString()); } /** @@ -198,20 +186,17 @@ public void testWriteCreatorsElementWithOrganizations() throws XMLStreamExceptio * creators */ @Test - public void testWriteCreatorsElementWithOrganizationsAndComma() throws XMLStreamException, FileNotFoundException { - System.out.println("writeCreatorsElementWithOrganizationsAndComma"); - XMLOutputFactory f = XMLOutputFactory.newInstance(); - StringWriter sw = new StringWriter(); - XMLStreamWriter xmlw = f.createXMLStreamWriter(sw); - - File file = new File("src/test/java/edu/harvard/iq/dataverse/export/dataset-organizations-comma.txt"); - String text = new Scanner(file).useDelimiter("\\Z").next(); - Gson gson = new Gson(); - DatasetDTO datasetDto = gson.fromJson(text, DatasetDTO.class); + public void testWriteCreatorsElementWithOrganizationsAndComma() throws XMLStreamException, IOException { + // given + DatasetDTO datasetDto = mapObjectFromJsonTestFile("export/dataset-organizations-comma.txt", DatasetDTO.class); DatasetVersionDTO dto = datasetDto.getDatasetVersion(); - OpenAireExportUtil.writeCreatorsElement(xmlw, dto, null); - xmlw.close(); - Assert.assertEquals("" + + // when + OpenAireExportUtil.writeCreatorsElement(xmlWriter, dto, null); + xmlWriter.flush(); + + // then + assertEquals("" + "" + "Digital Archive of Massachusetts Anti-Slavery and Anti-Segregation Petitions, Massachusetts Archives, Boston MA" + "" @@ -225,7 +210,7 @@ public void testWriteCreatorsElementWithOrganizationsAndComma() throws XMLStream + "Geographic Data Technology, Inc. (GDT)" + "" + "", - sw.toString()); + stringWriter.toString()); } /** @@ -234,22 +219,17 @@ public void testWriteCreatorsElementWithOrganizationsAndComma() throws XMLStream * titles */ @Test - public void testWriteTitleElement() throws XMLStreamException, FileNotFoundException { - System.out.println("writeTotlesElement"); - XMLOutputFactory f = XMLOutputFactory.newInstance(); - StringWriter sw = new StringWriter(); - XMLStreamWriter xmlw = f.createXMLStreamWriter(sw); - - File file = new File("src/test/java/edu/harvard/iq/dataverse/export/dataset-simplified.txt"); - String text = new Scanner(file).useDelimiter("\\Z").next(); - Gson gson = new Gson(); - DatasetDTO datasetDto = gson.fromJson(text, DatasetDTO.class); + public void testWriteTitleElement() throws XMLStreamException, IOException { + // given + DatasetDTO datasetDto = mapObjectFromJsonTestFile("export/dataset-simplified.txt", DatasetDTO.class); DatasetVersionDTO dto = datasetDto.getDatasetVersion(); - OpenAireExportUtil.writeTitlesElement(xmlw, dto, null); - - xmlw.close(); - Assert.assertEquals("My Dataset", - sw.toString()); + + // when + OpenAireExportUtil.writeTitlesElement(xmlWriter, dto, null); + xmlWriter.flush(); + + //then + assertEquals("My Dataset", stringWriter.toString()); } /** @@ -258,23 +238,20 @@ public void testWriteTitleElement() throws XMLStreamException, FileNotFoundExcep * publisher * * @throws javax.xml.stream.XMLStreamException - * @throws java.io.FileNotFoundException */ @Test - public void testWritePublisherElement() throws XMLStreamException, FileNotFoundException { - System.out.println("writePublisherElement"); - XMLOutputFactory f = XMLOutputFactory.newInstance(); - StringWriter sw = new StringWriter(); - XMLStreamWriter xmlw = f.createXMLStreamWriter(sw); - + public void testWritePublisherElement() throws XMLStreamException { + // given DatasetDTO datasetDto = new DatasetDTO(); datasetDto.setPublisher("Publisher01"); String publisher = datasetDto.getPublisher(); - OpenAireExportUtil.writeFullElement(xmlw, null, "publisher", null, publisher, null); + + // when + OpenAireExportUtil.writeFullElement(xmlWriter, null, "publisher", null, publisher, null); + xmlWriter.flush(); - xmlw.close(); - Assert.assertEquals("Publisher01", - sw.toString()); + //then + assertEquals("Publisher01", stringWriter.toString()); } /** @@ -283,25 +260,20 @@ public void testWritePublisherElement() throws XMLStreamException, FileNotFoundE * publicationYear * * @throws javax.xml.stream.XMLStreamException - * @throws java.io.FileNotFoundException + * @throws java.io.IOException */ @Test - public void testWritePublicationYearElement() throws XMLStreamException, FileNotFoundException { - System.out.println("writePublicationYearElement"); - XMLOutputFactory f = XMLOutputFactory.newInstance(); - StringWriter sw = new StringWriter(); - XMLStreamWriter xmlw = f.createXMLStreamWriter(sw); - - File file = new File("src/test/java/edu/harvard/iq/dataverse/export/dataset-simplified.txt"); - String text = new Scanner(file).useDelimiter("\\Z").next(); - Gson gson = new Gson(); - DatasetDTO datasetDto = gson.fromJson(text, DatasetDTO.class); + public void testWritePublicationYearElement() throws XMLStreamException, IOException { + // given + DatasetDTO datasetDto = mapObjectFromJsonTestFile("export/dataset-simplified.txt", DatasetDTO.class); DatasetVersionDTO dto = datasetDto.getDatasetVersion(); - OpenAireExportUtil.writePublicationYearElement(xmlw, dto, null, null); - - xmlw.close(); - Assert.assertEquals("2014", - sw.toString()); + + // when + OpenAireExportUtil.writePublicationYearElement(xmlWriter, dto, null, null); + xmlWriter.flush(); + + // then + assertEquals("2014", stringWriter.toString()); } /** @@ -310,23 +282,20 @@ public void testWritePublicationYearElement() throws XMLStreamException, FileNot * subjects * * @throws javax.xml.stream.XMLStreamException - * @throws java.io.FileNotFoundException + * @throws java.io.IOException */ @Test - public void testSubjectsElement() throws XMLStreamException, FileNotFoundException { - System.out.println("writeSubjectsElement"); - XMLOutputFactory f = XMLOutputFactory.newInstance(); - StringWriter sw = new StringWriter(); - XMLStreamWriter xmlw = f.createXMLStreamWriter(sw); - - File file = new File("src/test/java/edu/harvard/iq/dataverse/export/dataset-all-defaults.txt"); - String text = new Scanner(file).useDelimiter("\\Z").next(); - Gson gson = new Gson(); - DatasetDTO datasetDto = gson.fromJson(text, DatasetDTO.class); + public void testSubjectsElement() throws XMLStreamException, IOException { + // given + DatasetDTO datasetDto = mapObjectFromJsonTestFile("export/dataset-all-defaults.txt", DatasetDTO.class); DatasetVersionDTO dto = datasetDto.getDatasetVersion(); - OpenAireExportUtil.writeSubjectsElement(xmlw, dto, null); - xmlw.close(); - Assert.assertEquals("" + + // when + OpenAireExportUtil.writeSubjectsElement(xmlWriter, dto, null); + xmlWriter.flush(); + + // then + assertEquals("" + "Agricultural Sciences" + "Business and Management" + "Engineering" @@ -336,7 +305,7 @@ public void testSubjectsElement() throws XMLStreamException, FileNotFoundExcepti + "KeywordTerm2" + "", - sw.toString()); + stringWriter.toString()); } /** @@ -346,21 +315,17 @@ public void testSubjectsElement() throws XMLStreamException, FileNotFoundExcepti * contributors */ @Test - public void testWriteContributorsElement() throws XMLStreamException, FileNotFoundException { - System.out.println("writeContributorsElement"); - XMLOutputFactory f = XMLOutputFactory.newInstance(); - StringWriter sw = new StringWriter(); - XMLStreamWriter xmlw = f.createXMLStreamWriter(sw); - - File file = new File("src/test/java/edu/harvard/iq/dataverse/export/dataset-simplified.txt"); - String text = new Scanner(file).useDelimiter("\\Z").next(); - Gson gson = new Gson(); - DatasetDTO datasetDto = gson.fromJson(text, DatasetDTO.class); + public void testWriteContributorsElement() throws XMLStreamException, IOException { + // given + DatasetDTO datasetDto = mapObjectFromJsonTestFile("export/dataset-simplified.txt", DatasetDTO.class); DatasetVersionDTO dto = datasetDto.getDatasetVersion(); - OpenAireExportUtil.writeContributorsElement(xmlw, dto, null); - - xmlw.close(); - Assert.assertEquals("" + + // when + OpenAireExportUtil.writeContributorsElement(xmlWriter, dto, null); + xmlWriter.flush(); + + // then + assertEquals("" + "" + "Smith, John" + "JohnSmith" @@ -372,7 +337,7 @@ public void testWriteContributorsElement() throws XMLStreamException, FileNotFou + "pete@malinator.com" + "" + "", - sw.toString()); + stringWriter.toString()); } /** @@ -384,21 +349,17 @@ public void testWriteContributorsElement() throws XMLStreamException, FileNotFou * contributors */ @Test - public void testWriteContributorsElementWithOrganizations() throws XMLStreamException, FileNotFoundException { - System.out.println("writeContributorsElementWithOrganizations"); - XMLOutputFactory f = XMLOutputFactory.newInstance(); - StringWriter sw = new StringWriter(); - XMLStreamWriter xmlw = f.createXMLStreamWriter(sw); - - File file = new File("src/test/java/edu/harvard/iq/dataverse/export/dataset-organizations.txt"); - String text = new Scanner(file).useDelimiter("\\Z").next(); - Gson gson = new Gson(); - DatasetDTO datasetDto = gson.fromJson(text, DatasetDTO.class); + public void testWriteContributorsElementWithOrganizations() throws XMLStreamException, IOException { + // given + DatasetDTO datasetDto = mapObjectFromJsonTestFile("export/dataset-organizations.txt", DatasetDTO.class); DatasetVersionDTO dto = datasetDto.getDatasetVersion(); - OpenAireExportUtil.writeContributorsElement(xmlw, dto, null); - - xmlw.close(); - Assert.assertEquals("" + + // when + OpenAireExportUtil.writeContributorsElement(xmlWriter, dto, null); + xmlWriter.flush(); + + //then + assertEquals("" + "" + "IBM" + "" @@ -421,7 +382,7 @@ public void testWriteContributorsElementWithOrganizations() throws XMLStreamExce + "pete@malinator.com" + "" + "", - sw.toString()); + stringWriter.toString()); } /** @@ -433,21 +394,17 @@ public void testWriteContributorsElementWithOrganizations() throws XMLStreamExce * contributors */ @Test - public void testWriteContributorsElementWithOrganizationsAndComma() throws XMLStreamException, FileNotFoundException { - System.out.println("writeContributorsElementWithOrganizationsAndComma"); - XMLOutputFactory f = XMLOutputFactory.newInstance(); - StringWriter sw = new StringWriter(); - XMLStreamWriter xmlw = f.createXMLStreamWriter(sw); - - File file = new File("src/test/java/edu/harvard/iq/dataverse/export/dataset-organizations-comma.txt"); - String text = new Scanner(file).useDelimiter("\\Z").next(); - Gson gson = new Gson(); - DatasetDTO datasetDto = gson.fromJson(text, DatasetDTO.class); + public void testWriteContributorsElementWithOrganizationsAndComma() throws XMLStreamException, IOException { + // given + DatasetDTO datasetDto = mapObjectFromJsonTestFile("export/dataset-organizations-comma.txt", DatasetDTO.class); DatasetVersionDTO dto = datasetDto.getDatasetVersion(); - OpenAireExportUtil.writeContributorsElement(xmlw, dto, null); - - xmlw.close(); - Assert.assertEquals("" + + // when + OpenAireExportUtil.writeContributorsElement(xmlWriter, dto, null); + xmlWriter.flush(); + + // then + assertEquals("" + "" + "Digital Archive of Massachusetts Anti-Slavery and Anti-Segregation Petitions, Massachusetts Archives, Boston MA" + "" @@ -464,7 +421,7 @@ public void testWriteContributorsElementWithOrganizationsAndComma() throws XMLSt + "pete@malinator.com" + "" + "", - sw.toString()); + stringWriter.toString()); } /** @@ -474,21 +431,17 @@ public void testWriteContributorsElementWithOrganizationsAndComma() throws XMLSt * contributors */ @Test - public void testWriteContributorsElementComplete() throws XMLStreamException, FileNotFoundException { - System.out.println("writeContributorsElementComplete"); - XMLOutputFactory f = XMLOutputFactory.newInstance(); - StringWriter sw = new StringWriter(); - XMLStreamWriter xmlw = f.createXMLStreamWriter(sw); - - File file = new File("src/test/java/edu/harvard/iq/dataverse/export/dataset-all-defaults.txt"); - String text = new Scanner(file).useDelimiter("\\Z").next(); - Gson gson = new Gson(); - DatasetDTO datasetDto = gson.fromJson(text, DatasetDTO.class); + public void testWriteContributorsElementComplete() throws XMLStreamException, IOException { + // given + DatasetDTO datasetDto = mapObjectFromJsonTestFile("export/dataset-all-defaults.txt", DatasetDTO.class); DatasetVersionDTO dto = datasetDto.getDatasetVersion(); - OpenAireExportUtil.writeContributorsElement(xmlw, dto, null); - - xmlw.close(); - Assert.assertEquals("" + + // when + OpenAireExportUtil.writeContributorsElement(xmlWriter, dto, null); + xmlWriter.flush(); + + // then + assertEquals("" + "" + "LastContact1, FirstContact1" + "ContactAffiliation1" @@ -524,7 +477,7 @@ public void testWriteContributorsElementComplete() throws XMLStreamException, Fi + "DistributorAffiliation2" + "" + "", - sw.toString()); + stringWriter.toString()); } /** @@ -533,24 +486,20 @@ public void testWriteContributorsElementComplete() throws XMLStreamException, Fi * dates * * @throws javax.xml.stream.XMLStreamException - * @throws java.io.FileNotFoundException + * @throws java.io.IOException */ @Test - public void testWriteDatesElement() throws XMLStreamException, FileNotFoundException { - System.out.println("writeDatesElement"); - XMLOutputFactory f = XMLOutputFactory.newInstance(); - StringWriter sw = new StringWriter(); - XMLStreamWriter xmlw = f.createXMLStreamWriter(sw); - - File file = new File("src/test/java/edu/harvard/iq/dataverse/export/dataset-all-defaults.txt"); - String text = new Scanner(file).useDelimiter("\\Z").next(); - Gson gson = new Gson(); - DatasetDTO datasetDto = gson.fromJson(text, DatasetDTO.class); + public void testWriteDatesElement() throws XMLStreamException, IOException { + // given + DatasetDTO datasetDto = mapObjectFromJsonTestFile("export/dataset-all-defaults.txt", DatasetDTO.class); DatasetVersionDTO dto = datasetDto.getDatasetVersion(); - OpenAireExportUtil.writeDatesElement(xmlw, dto, null); - - xmlw.close(); - Assert.assertEquals("" + + // when + OpenAireExportUtil.writeDatesElement(xmlWriter, dto, null); + xmlWriter.flush(); + + //then + assertEquals("" + "1004-01-01" + "1003-01-01" + "1002-01-01" @@ -558,7 +507,7 @@ public void testWriteDatesElement() throws XMLStreamException, FileNotFoundExcep + "1006-01-01/1006-01-01" + "1006-02-01/1006-02-02" + "", - sw.toString()); + stringWriter.toString()); } /** @@ -567,26 +516,21 @@ public void testWriteDatesElement() throws XMLStreamException, FileNotFoundExcep * language * * @throws javax.xml.stream.XMLStreamException - * @throws java.io.FileNotFoundException + * @throws java.io.IOException */ @Test - public void testWriteLanguageElement() throws XMLStreamException, FileNotFoundException { - System.out.println("writeLanguageElement"); - XMLOutputFactory f = XMLOutputFactory.newInstance(); - StringWriter sw = new StringWriter(); - XMLStreamWriter xmlw = f.createXMLStreamWriter(sw); - - File file = new File("src/test/java/edu/harvard/iq/dataverse/export/dataset-all-defaults.txt"); - String text = new Scanner(file).useDelimiter("\\Z").next(); - Gson gson = new Gson(); - DatasetDTO datasetDto = gson.fromJson(text, DatasetDTO.class); + public void testWriteLanguageElement() throws XMLStreamException, IOException { + // given + DatasetDTO datasetDto = mapObjectFromJsonTestFile("export/dataset-all-defaults.txt", DatasetDTO.class); DatasetVersionDTO dto = datasetDto.getDatasetVersion(); - String language = OpenAireExportUtil.getLanguage(xmlw, dto); - OpenAireExportUtil.writeFullElement(xmlw, null, "language", null, language, null); - - xmlw.close(); - Assert.assertEquals("it", - sw.toString()); + String language = OpenAireExportUtil.getLanguage(xmlWriter, dto); + + // when + OpenAireExportUtil.writeFullElement(xmlWriter, null, "language", null, language, null); + xmlWriter.flush(); + + // then + assertEquals("it", stringWriter.toString()); } /** @@ -596,26 +540,20 @@ public void testWriteLanguageElement() throws XMLStreamException, FileNotFoundEx * resourceType * * @throws javax.xml.stream.XMLStreamException - * @throws java.io.FileNotFoundException + * @throws java.io.IOException */ @Test - public void testWriteResourceTypeElement() throws XMLStreamException, FileNotFoundException { - System.out.println("writeResourceTypeElement"); - XMLOutputFactory f = XMLOutputFactory.newInstance(); - StringWriter sw = new StringWriter(); - XMLStreamWriter xmlw = f.createXMLStreamWriter(sw); - - File file = new File("src/test/java/edu/harvard/iq/dataverse/export/dataset-all-defaults.txt"); - String text = new Scanner(file).useDelimiter("\\Z").next(); - Gson gson = new Gson(); - DatasetDTO datasetDto = gson.fromJson(text, DatasetDTO.class); + public void testWriteResourceTypeElement() throws XMLStreamException, IOException { + // given + DatasetDTO datasetDto = mapObjectFromJsonTestFile("export/dataset-all-defaults.txt", DatasetDTO.class); DatasetVersionDTO dto = datasetDto.getDatasetVersion(); - OpenAireExportUtil.writeResourceTypeElement(xmlw, dto, null); - - xmlw.close(); - Assert.assertEquals("" - + "KindOfData1", - sw.toString()); + + // when + OpenAireExportUtil.writeResourceTypeElement(xmlWriter, dto, null); + xmlWriter.flush(); + + //then + assertEquals("KindOfData1", stringWriter.toString()); } /** @@ -624,31 +562,26 @@ public void testWriteResourceTypeElement() throws XMLStreamException, FileNotFou * alternateIdentifier * * @throws javax.xml.stream.XMLStreamException - * @throws java.io.FileNotFoundException + * @throws java.io.IOException */ @Test - public void testWriteAlternateIdentifierElement() throws XMLStreamException, FileNotFoundException { - System.out.println("writeAlternateIdentifierElement"); - XMLOutputFactory f = XMLOutputFactory.newInstance(); - StringWriter sw = new StringWriter(); - XMLStreamWriter xmlw = f.createXMLStreamWriter(sw); - - File file = new File("src/test/java/edu/harvard/iq/dataverse/export/dataset-all-defaults.txt"); - String text = new Scanner(file).useDelimiter("\\Z").next(); - Gson gson = new Gson(); - DatasetDTO datasetDto = gson.fromJson(text, DatasetDTO.class); + public void testWriteAlternateIdentifierElement() throws XMLStreamException, IOException { + // given + DatasetDTO datasetDto = mapObjectFromJsonTestFile("export/dataset-all-defaults.txt", DatasetDTO.class); DatasetVersionDTO dto = datasetDto.getDatasetVersion(); - - OpenAireExportUtil.writeAlternateIdentifierElement(xmlw, dto, null); - - xmlw.close(); - Assert.assertEquals("" + + // when + OpenAireExportUtil.writeAlternateIdentifierElement(xmlWriter, dto, null); + xmlWriter.flush(); + + //then + assertEquals("" + "" + "OtherIDIdentifier1" + "" + "OtherIDIdentifier2" + "", - sw.toString()); + stringWriter.toString()); } /** @@ -658,30 +591,26 @@ public void testWriteAlternateIdentifierElement() throws XMLStreamException, Fil * relatedIdentifier * * @throws javax.xml.stream.XMLStreamException - * @throws java.io.FileNotFoundException + * @throws java.io.IOException */ @Test - public void testWriteRelatedIdentifierElement() throws XMLStreamException, FileNotFoundException { - System.out.println("writeRelatedIdentifierElement"); - XMLOutputFactory f = XMLOutputFactory.newInstance(); - StringWriter sw = new StringWriter(); - XMLStreamWriter xmlw = f.createXMLStreamWriter(sw); - - File file = new File("src/test/java/edu/harvard/iq/dataverse/export/dataset-all-defaults.txt"); - String text = new Scanner(file).useDelimiter("\\Z").next(); - Gson gson = new Gson(); - DatasetDTO datasetDto = gson.fromJson(text, DatasetDTO.class); + public void testWriteRelatedIdentifierElement() throws XMLStreamException, IOException { + // given + DatasetDTO datasetDto = mapObjectFromJsonTestFile("export/dataset-all-defaults.txt", DatasetDTO.class); DatasetVersionDTO dto = datasetDto.getDatasetVersion(); - OpenAireExportUtil.writeRelatedIdentifierElement(xmlw, dto, null); - - xmlw.close(); - Assert.assertEquals("" + + // when + OpenAireExportUtil.writeRelatedIdentifierElement(xmlWriter, dto, null); + xmlWriter.flush(); + + //then + assertEquals("" + "" + "RelatedPublicationIDNumber1" + "" + "RelatedPublicationIDNumber2" + "", - sw.toString()); + stringWriter.toString()); } /** @@ -690,33 +619,25 @@ public void testWriteRelatedIdentifierElement() throws XMLStreamException, FileN * size * * @throws javax.xml.stream.XMLStreamException - * @throws java.io.FileNotFoundException + * @throws java.io.IOException */ @Test - public void testWriteEmptySizeElement() throws XMLStreamException, FileNotFoundException { - System.out.println("writeEmptySizeElement"); - XMLOutputFactory f = XMLOutputFactory.newInstance(); - StringWriter sw = new StringWriter(); - XMLStreamWriter xmlw = f.createXMLStreamWriter(sw); - - File file = new File("src/test/java/edu/harvard/iq/dataverse/export/dataset-all-defaults.txt"); - String text = new Scanner(file).useDelimiter("\\Z").next(); - Gson gson = new Gson(); - DatasetDTO datasetDto = gson.fromJson(text, DatasetDTO.class); + public void testWriteEmptySizeElement() throws XMLStreamException, IOException { + // given + DatasetDTO datasetDto = mapObjectFromJsonTestFile("export/dataset-all-defaults.txt", DatasetDTO.class); DatasetVersionDTO dto = datasetDto.getDatasetVersion(); - { - // set an empty file list - dto.setFiles(new ArrayList()); - - // Fragment must be enclosed in a fake root element. - xmlw.writeStartElement("root"); - OpenAireExportUtil.writeSizeElement(xmlw, dto, null); - - xmlw.writeEndElement(); - } - xmlw.close(); - Assert.assertEquals("", - sw.toString()); + // set an empty file list + dto.setFiles(new ArrayList<>()); + + // when + // note: fragment must be enclosed in a fake root element. + xmlWriter.writeStartElement("root"); + OpenAireExportUtil.writeSizeElement(xmlWriter, dto, null); + xmlWriter.writeEndElement(); + xmlWriter.flush(); + + //then + assertEquals("", stringWriter.toString()); } /** @@ -725,28 +646,25 @@ public void testWriteEmptySizeElement() throws XMLStreamException, FileNotFoundE * relatedIdentifier * * @throws javax.xml.stream.XMLStreamException - * @throws java.io.FileNotFoundException + * @throws java.io.IOException */ @Test - public void testWriteSizeElement() throws XMLStreamException, FileNotFoundException { - System.out.println("writeSizeElement"); - XMLOutputFactory f = XMLOutputFactory.newInstance(); - StringWriter sw = new StringWriter(); - XMLStreamWriter xmlw = f.createXMLStreamWriter(sw); - - File file = new File("src/test/java/edu/harvard/iq/dataverse/export/dataset-all-defaults.txt"); - String text = new Scanner(file).useDelimiter("\\Z").next(); - Gson gson = new Gson(); - DatasetDTO datasetDto = gson.fromJson(text, DatasetDTO.class); + public void testWriteSizeElement() throws XMLStreamException, IOException { + // given + DatasetDTO datasetDto = mapObjectFromJsonTestFile("export/dataset-all-defaults.txt", DatasetDTO.class); DatasetVersionDTO dto = datasetDto.getDatasetVersion(); - OpenAireExportUtil.writeSizeElement(xmlw, dto, null); - - xmlw.close(); - Assert.assertEquals("" + + // when + // note: fragment must be enclosed in a fake root element. + OpenAireExportUtil.writeSizeElement(xmlWriter, dto, null); + xmlWriter.flush(); + + //then + assertEquals("" + "1000" + "20" + "", - sw.toString()); + stringWriter.toString()); } /** @@ -755,34 +673,25 @@ public void testWriteSizeElement() throws XMLStreamException, FileNotFoundExcept * size * * @throws javax.xml.stream.XMLStreamException - * @throws java.io.FileNotFoundException + * @throws java.io.IOException */ @Test - public void testWriteEmptyFormatElement() throws XMLStreamException, FileNotFoundException { - System.out.println("writeEmptyFormatElement"); - XMLOutputFactory f = XMLOutputFactory.newInstance(); - StringWriter sw = new StringWriter(); - XMLStreamWriter xmlw = f.createXMLStreamWriter(sw); - - File file = new File("src/test/java/edu/harvard/iq/dataverse/export/dataset-all-defaults.txt"); - String text = new Scanner(file).useDelimiter("\\Z").next(); - Gson gson = new Gson(); - DatasetDTO datasetDto = gson.fromJson(text, DatasetDTO.class); + public void testWriteEmptyFormatElement() throws XMLStreamException, IOException { + // given + DatasetDTO datasetDto = mapObjectFromJsonTestFile("export/dataset-all-defaults.txt", DatasetDTO.class); DatasetVersionDTO dto = datasetDto.getDatasetVersion(); - { - // set an empty file list - dto.setFiles(new ArrayList()); - - // Fragment must be enclosed in a fake root element. - xmlw.writeStartElement("root"); - OpenAireExportUtil.writeFormatElement(xmlw, dto, null); - - xmlw.writeEndElement(); - } - - xmlw.close(); - Assert.assertEquals("", - sw.toString()); + // set an empty file list + dto.setFiles(new ArrayList<>()); + + // when + // note: fragment must be enclosed in a fake root element. + xmlWriter.writeStartElement("root"); + OpenAireExportUtil.writeFormatElement(xmlWriter, dto, null); + xmlWriter.writeEndElement(); + xmlWriter.flush(); + + //then + assertEquals("", stringWriter.toString()); } /** @@ -791,28 +700,24 @@ public void testWriteEmptyFormatElement() throws XMLStreamException, FileNotFoun * size * * @throws javax.xml.stream.XMLStreamException - * @throws java.io.FileNotFoundException + * @throws java.io.IOException */ @Test - public void testWriteFormatElement() throws XMLStreamException, FileNotFoundException { - System.out.println("writeFormatElement"); - XMLOutputFactory f = XMLOutputFactory.newInstance(); - StringWriter sw = new StringWriter(); - XMLStreamWriter xmlw = f.createXMLStreamWriter(sw); - - File file = new File("src/test/java/edu/harvard/iq/dataverse/export/dataset-all-defaults.txt"); - String text = new Scanner(file).useDelimiter("\\Z").next(); - Gson gson = new Gson(); - DatasetDTO datasetDto = gson.fromJson(text, DatasetDTO.class); + public void testWriteFormatElement() throws XMLStreamException, IOException { + // given + DatasetDTO datasetDto = mapObjectFromJsonTestFile("export/dataset-all-defaults.txt", DatasetDTO.class); DatasetVersionDTO dto = datasetDto.getDatasetVersion(); - OpenAireExportUtil.writeFormatElement(xmlw, dto, null); - - xmlw.close(); - Assert.assertEquals("" + + // when + OpenAireExportUtil.writeFormatElement(xmlWriter, dto, null); + xmlWriter.flush(); + + //then + assertEquals("" + "application/pdf" + "application/xml" + "", - sw.toString()); + stringWriter.toString()); } /** @@ -821,31 +726,23 @@ public void testWriteFormatElement() throws XMLStreamException, FileNotFoundExce * version * * @throws javax.xml.stream.XMLStreamException - * @throws java.io.FileNotFoundException + * @throws java.io.IOException */ @Test - public void testWriteEmptyVersionElement() throws XMLStreamException, FileNotFoundException { - System.out.println("writeEmptyVersionElement"); - XMLOutputFactory f = XMLOutputFactory.newInstance(); - StringWriter sw = new StringWriter(); - XMLStreamWriter xmlw = f.createXMLStreamWriter(sw); - - File file = new File("src/test/java/edu/harvard/iq/dataverse/export/dataset-all-defaults.txt"); - String text = new Scanner(file).useDelimiter("\\Z").next(); - Gson gson = new Gson(); - DatasetDTO datasetDto = gson.fromJson(text, DatasetDTO.class); + public void testWriteEmptyVersionElement() throws XMLStreamException, IOException { + // given + DatasetDTO datasetDto = mapObjectFromJsonTestFile("export/dataset-all-defaults.txt", DatasetDTO.class); DatasetVersionDTO dto = datasetDto.getDatasetVersion(); - { - // Fragment must be enclosed in a fake root element. - xmlw.writeStartElement("root"); - OpenAireExportUtil.writeVersionElement(xmlw, dto, null); - - xmlw.writeEndElement(); - } - - xmlw.close(); - Assert.assertEquals("1.0", - sw.toString()); + + // when + // note: fragment must be enclosed in a fake root element. + xmlWriter.writeStartElement("root"); + OpenAireExportUtil.writeVersionElement(xmlWriter, dto, null); + xmlWriter.writeEndElement(); + xmlWriter.flush(); + + //then + assertEquals("1.0", stringWriter.toString()); } /** @@ -854,29 +751,22 @@ public void testWriteEmptyVersionElement() throws XMLStreamException, FileNotFou * version * * @throws javax.xml.stream.XMLStreamException - * @throws java.io.FileNotFoundException + * @throws java.io.IOException */ @Test - public void testWriteVersionElement() throws XMLStreamException, FileNotFoundException { - System.out.println("writeVersionElement"); - XMLOutputFactory f = XMLOutputFactory.newInstance(); - StringWriter sw = new StringWriter(); - XMLStreamWriter xmlw = f.createXMLStreamWriter(sw); - - File file = new File("src/test/java/edu/harvard/iq/dataverse/export/dataset-all-defaults.txt"); - String text = new Scanner(file).useDelimiter("\\Z").next(); - Gson gson = new Gson(); - DatasetDTO datasetDto = gson.fromJson(text, DatasetDTO.class); + public void testWriteVersionElement() throws XMLStreamException, IOException { + // given + DatasetDTO datasetDto = mapObjectFromJsonTestFile("export/dataset-all-defaults.txt", DatasetDTO.class); DatasetVersionDTO dto = datasetDto.getDatasetVersion(); - { - dto.setVersionNumber(2L); - dto.setMinorVersionNumber(1L); - } - OpenAireExportUtil.writeVersionElement(xmlw, dto, null); - - xmlw.close(); - Assert.assertEquals("2.1", - sw.toString()); + dto.setVersionNumber(2L); + dto.setMinorVersionNumber(1L); + + // when + OpenAireExportUtil.writeVersionElement(xmlWriter, dto, null); + xmlWriter.flush(); + + //then + assertEquals("2.1", stringWriter.toString()); } /** @@ -885,27 +775,24 @@ public void testWriteVersionElement() throws XMLStreamException, FileNotFoundExc * rights * * @throws javax.xml.stream.XMLStreamException - * @throws java.io.FileNotFoundException + * @throws java.io.IOException */ @Test - public void testWriteAccessRightElement() throws XMLStreamException, FileNotFoundException { - System.out.println("writeAccessRightElement"); - XMLOutputFactory f = XMLOutputFactory.newInstance(); - StringWriter sw = new StringWriter(); - XMLStreamWriter xmlw = f.createXMLStreamWriter(sw); - - File file = new File("src/test/java/edu/harvard/iq/dataverse/export/dataset-all-defaults.txt"); - String text = new Scanner(file).useDelimiter("\\Z").next(); - Gson gson = new Gson(); - DatasetDTO datasetDto = gson.fromJson(text, DatasetDTO.class); + public void testWriteAccessRightElement() throws XMLStreamException, IOException { + // given + DatasetDTO datasetDto = mapObjectFromJsonTestFile("export/dataset-all-defaults.txt", DatasetDTO.class); DatasetVersionDTO dto = datasetDto.getDatasetVersion(); - OpenAireExportUtil.writeAccessRightsElement(xmlw, dto, null); - xmlw.close(); - Assert.assertEquals("" - + "" + + // when + OpenAireExportUtil.writeAccessRightsElement(xmlWriter, dto, null); + xmlWriter.flush(); + + //then + assertEquals("" + + "" + "" + "CC0 Waiver", - sw.toString()); + stringWriter.toString()); } /** @@ -914,32 +801,26 @@ public void testWriteAccessRightElement() throws XMLStreamException, FileNotFoun * rights * * @throws javax.xml.stream.XMLStreamException - * @throws java.io.FileNotFoundException + * @throws java.io.IOException */ @Test - public void testWriteRestrictedAccessRightElementWithRequestAccessEnabled() throws XMLStreamException, FileNotFoundException { - System.out.println("writeRestrictedAccessRightElementWithRequestAccessEnabled"); - XMLOutputFactory f = XMLOutputFactory.newInstance(); - StringWriter sw = new StringWriter(); - XMLStreamWriter xmlw = f.createXMLStreamWriter(sw); - - File file = new File("src/test/java/edu/harvard/iq/dataverse/export/dataset-all-defaults.txt"); - String text = new Scanner(file).useDelimiter("\\Z").next(); - Gson gson = new Gson(); - DatasetDTO datasetDto = gson.fromJson(text, DatasetDTO.class); + public void testWriteRestrictedAccessRightElementWithRequestAccessEnabled() throws XMLStreamException, IOException { + // given + DatasetDTO datasetDto = mapObjectFromJsonTestFile("export/dataset-all-defaults.txt", DatasetDTO.class); DatasetVersionDTO dto = datasetDto.getDatasetVersion(); - { - dto.setLicense(null); - dto.setTermsOfUse(null); - dto.setFileAccessRequest(true); - } - - OpenAireExportUtil.writeAccessRightsElement(xmlw, dto, null); - xmlw.close(); - Assert.assertEquals("" - + "" - + "", - sw.toString()); + dto.setLicense(null); + dto.setTermsOfUse(null); + dto.setFileAccessRequest(true); + + // when + OpenAireExportUtil.writeAccessRightsElement(xmlWriter, dto, null); + xmlWriter.flush(); + + //then + assertEquals("" + + "" + + "", + stringWriter.toString()); } /** @@ -948,32 +829,26 @@ public void testWriteRestrictedAccessRightElementWithRequestAccessEnabled() thro * rights * * @throws javax.xml.stream.XMLStreamException - * @throws java.io.FileNotFoundException + * @throws java.io.IOException */ @Test - public void testWriteRestrictedAccessRightElementWithRequestAccessDisabled() throws XMLStreamException, FileNotFoundException { - System.out.println("writeWriteRestrictedAccessRightElementWithRequestAccessDisabled"); - XMLOutputFactory f = XMLOutputFactory.newInstance(); - StringWriter sw = new StringWriter(); - XMLStreamWriter xmlw = f.createXMLStreamWriter(sw); - - File file = new File("src/test/java/edu/harvard/iq/dataverse/export/dataset-all-defaults.txt"); - String text = new Scanner(file).useDelimiter("\\Z").next(); - Gson gson = new Gson(); - DatasetDTO datasetDto = gson.fromJson(text, DatasetDTO.class); + public void testWriteRestrictedAccessRightElementWithRequestAccessDisabled() throws XMLStreamException, IOException { + // given + DatasetDTO datasetDto = mapObjectFromJsonTestFile("export/dataset-all-defaults.txt", DatasetDTO.class); DatasetVersionDTO dto = datasetDto.getDatasetVersion(); - { - dto.setLicense(null); - dto.setTermsOfUse(null); - dto.setFileAccessRequest(false); - } - - OpenAireExportUtil.writeAccessRightsElement(xmlw, dto, null); - xmlw.close(); - Assert.assertEquals("" - + "" - + "", - sw.toString()); + dto.setLicense(null); + dto.setTermsOfUse(null); + dto.setFileAccessRequest(false); + + // when + OpenAireExportUtil.writeAccessRightsElement(xmlWriter, dto, null); + xmlWriter.flush(); + + //then + assertEquals("" + + "" + + "", + stringWriter.toString()); } /** @@ -982,24 +857,20 @@ public void testWriteRestrictedAccessRightElementWithRequestAccessDisabled() thr * description * * @throws javax.xml.stream.XMLStreamException - * @throws java.io.FileNotFoundException + * @throws java.io.IOException */ @Test - public void testWriteDescriptionsElement() throws XMLStreamException, FileNotFoundException { - System.out.println("writeDescriptionsElement"); - XMLOutputFactory f = XMLOutputFactory.newInstance(); - StringWriter sw = new StringWriter(); - XMLStreamWriter xmlw = f.createXMLStreamWriter(sw); - - File file = new File("src/test/java/edu/harvard/iq/dataverse/export/dataset-all-defaults.txt"); - String text = new Scanner(file).useDelimiter("\\Z").next(); - Gson gson = new Gson(); - DatasetDTO datasetDto = gson.fromJson(text, DatasetDTO.class); + public void testWriteDescriptionsElement() throws XMLStreamException, IOException { + // given + DatasetDTO datasetDto = mapObjectFromJsonTestFile("export/dataset-all-defaults.txt", DatasetDTO.class); DatasetVersionDTO dto = datasetDto.getDatasetVersion(); - OpenAireExportUtil.writeDescriptionsElement(xmlw, dto, null); - - xmlw.close(); - Assert.assertEquals("" + + // when + OpenAireExportUtil.writeDescriptionsElement(xmlWriter, dto, null); + xmlWriter.flush(); + + //then + assertEquals("" + "DescriptionText 1" + "" + "DescriptionText2" @@ -1018,7 +889,7 @@ public void testWriteDescriptionsElement() throws XMLStreamException, FileNotFou + "" + "Notes1" + "", - sw.toString()); + stringWriter.toString()); } /** @@ -1027,24 +898,20 @@ public void testWriteDescriptionsElement() throws XMLStreamException, FileNotFou * description * * @throws javax.xml.stream.XMLStreamException - * @throws java.io.FileNotFoundException + * @throws java.io.IOException */ @Test - public void testWriteGeoLocationElement() throws XMLStreamException, FileNotFoundException { - System.out.println("writeGeoLocationElement"); - XMLOutputFactory f = XMLOutputFactory.newInstance(); - StringWriter sw = new StringWriter(); - XMLStreamWriter xmlw = f.createXMLStreamWriter(sw); - - File file = new File("src/test/java/edu/harvard/iq/dataverse/export/dataset-all-defaults.txt"); - String text = new Scanner(file).useDelimiter("\\Z").next(); - Gson gson = new Gson(); - DatasetDTO datasetDto = gson.fromJson(text, DatasetDTO.class); + public void testWriteGeoLocationElement() throws XMLStreamException, IOException { + // given + DatasetDTO datasetDto = mapObjectFromJsonTestFile("export/dataset-all-defaults.txt", DatasetDTO.class); DatasetVersionDTO dto = datasetDto.getDatasetVersion(); - OpenAireExportUtil.writeGeoLocationsElement(xmlw, dto, null); - - xmlw.close(); - Assert.assertEquals("" + + // when + OpenAireExportUtil.writeGeoLocationsElement(xmlWriter, dto, null); + xmlWriter.flush(); + + //then + assertEquals("" + "" + "ProductionPlace" + "" @@ -1063,7 +930,7 @@ public void testWriteGeoLocationElement() throws XMLStreamException, FileNotFoun + "50" + "" + "", - sw.toString()); + stringWriter.toString()); } /** @@ -1072,24 +939,20 @@ public void testWriteGeoLocationElement() throws XMLStreamException, FileNotFoun * description * * @throws javax.xml.stream.XMLStreamException - * @throws java.io.FileNotFoundException + * @throws java.io.IOException */ @Test - public void testWriteGeoLocationElement2() throws XMLStreamException, FileNotFoundException { - System.out.println("writeGeoLocationElement2"); - XMLOutputFactory f = XMLOutputFactory.newInstance(); - StringWriter sw = new StringWriter(); - XMLStreamWriter xmlw = f.createXMLStreamWriter(sw); - - File file = new File("src/test/java/edu/harvard/iq/dataverse/export/dataset-simplified.txt"); - String text = new Scanner(file).useDelimiter("\\Z").next(); - Gson gson = new Gson(); - DatasetDTO datasetDto = gson.fromJson(text, DatasetDTO.class); + public void testWriteGeoLocationElement2() throws XMLStreamException, IOException { + // given + DatasetDTO datasetDto = mapObjectFromJsonTestFile("export/dataset-simplified.txt", DatasetDTO.class); DatasetVersionDTO dto = datasetDto.getDatasetVersion(); - OpenAireExportUtil.writeGeoLocationsElement(xmlw, dto, null); - - xmlw.close(); - Assert.assertEquals("" + + // when + OpenAireExportUtil.writeGeoLocationsElement(xmlWriter, dto, null); + xmlWriter.flush(); + + //then + assertEquals("" + "" + "" + "23" @@ -1098,7 +961,7 @@ public void testWriteGeoLocationElement2() throws XMLStreamException, FileNotFou + "34" + "" + "", - sw.toString()); + stringWriter.toString()); } /** @@ -1108,24 +971,20 @@ public void testWriteGeoLocationElement2() throws XMLStreamException, FileNotFou * fundingReference * * @throws javax.xml.stream.XMLStreamException - * @throws java.io.FileNotFoundException + * @throws java.io.IOException */ @Test - public void testWriteFundingReferencesElement() throws XMLStreamException, FileNotFoundException { - System.out.println("writeFundingReferencesElement"); - XMLOutputFactory f = XMLOutputFactory.newInstance(); - StringWriter sw = new StringWriter(); - XMLStreamWriter xmlw = f.createXMLStreamWriter(sw); - - File file = new File("src/test/java/edu/harvard/iq/dataverse/export/dataset-all-defaults.txt"); - String text = new Scanner(file).useDelimiter("\\Z").next(); - Gson gson = new Gson(); - DatasetDTO datasetDto = gson.fromJson(text, DatasetDTO.class); + public void testWriteFundingReferencesElement() throws XMLStreamException, IOException { + // given + DatasetDTO datasetDto = mapObjectFromJsonTestFile("export/dataset-all-defaults.txt", DatasetDTO.class); DatasetVersionDTO dto = datasetDto.getDatasetVersion(); - OpenAireExportUtil.writeFundingReferencesElement(xmlw, dto, null); - - xmlw.close(); - Assert.assertEquals("" + + // when + OpenAireExportUtil.writeFundingReferencesElement(xmlWriter, dto, null); + xmlWriter.flush(); + + //then + assertEquals("" + "GrantInformationGrantAgency1" + "GrantInformationGrantNumber1" + "" @@ -1133,7 +992,7 @@ public void testWriteFundingReferencesElement() throws XMLStreamException, FileN + "GrantInformationGrantAgency2" + "GrantInformationGrantNumber2" + "", - sw.toString()); + stringWriter.toString()); } /** @@ -1142,27 +1001,20 @@ public void testWriteFundingReferencesElement() throws XMLStreamException, FileN * funderName */ @Test - public void testWriteFunderNamePropertyNotInContributor() throws XMLStreamException, FileNotFoundException { - System.out.println("writeFunderNamePropertyNotInContributor"); - XMLOutputFactory f = XMLOutputFactory.newInstance(); - StringWriter sw = new StringWriter(); - XMLStreamWriter xmlw = f.createXMLStreamWriter(sw); - - File file = new File("src/test/java/edu/harvard/iq/dataverse/export/datase-updated.txt"); - String text = new Scanner(file).useDelimiter("\\Z").next(); - Gson gson = new Gson(); - DatasetDTO datasetDto = gson.fromJson(text, DatasetDTO.class); + public void testWriteFunderNamePropertyNotInContributor() throws XMLStreamException, IOException { + // given + DatasetDTO datasetDto = mapObjectFromJsonTestFile("export/dataset-updated.txt", DatasetDTO.class); DatasetVersionDTO dto = datasetDto.getDatasetVersion(); - { - // Fragment must be enclosed in a fake root element. - xmlw.writeStartElement("root"); - OpenAireExportUtil.writeContributorsElement(xmlw, dto, null); - - xmlw.writeEndElement(); - } - xmlw.close(); - Assert.assertEquals("", - sw.toString()); + + // when + // note: fragment must be enclosed in a fake root element. + xmlWriter.writeStartElement("root"); + OpenAireExportUtil.writeContributorsElement(xmlWriter, dto, null); + xmlWriter.writeEndElement(); + xmlWriter.flush(); + + //then + assertEquals("", stringWriter.toString()); } /** @@ -1171,25 +1023,32 @@ public void testWriteFunderNamePropertyNotInContributor() throws XMLStreamExcept * funderName */ @Test - public void testWriteFunderNamePropertyInFundingReferencesElement() throws XMLStreamException, FileNotFoundException { - System.out.println("writeFunderNamePropertyInFundingReferencesElement"); - XMLOutputFactory f = XMLOutputFactory.newInstance(); - StringWriter sw = new StringWriter(); - XMLStreamWriter xmlw = f.createXMLStreamWriter(sw); - - File file = new File("src/test/java/edu/harvard/iq/dataverse/export/datase-updated.txt"); - String text = new Scanner(file).useDelimiter("\\Z").next(); - Gson gson = new Gson(); - DatasetDTO datasetDto = gson.fromJson(text, DatasetDTO.class); + public void testWriteFunderNamePropertyInFundingReferencesElement() throws XMLStreamException, IOException { + // given + DatasetDTO datasetDto = mapObjectFromJsonTestFile("export/dataset-updated.txt", DatasetDTO.class); DatasetVersionDTO dto = datasetDto.getDatasetVersion(); - OpenAireExportUtil.writeFundingReferencesElement(xmlw, dto, null); - - xmlw.close(); - Assert.assertEquals("" + + // when + OpenAireExportUtil.writeFundingReferencesElement(xmlWriter, dto, null); + xmlWriter.flush(); + + //then + assertEquals("" + "Dennis" + "NIHNIH1231245154" + "NIHNIH99999999" + "", - sw.toString()); + stringWriter.toString()); + } + + // private static final Jsonb jsonb = JsonbBuilder.create(); + private static final Gson gson = new Gson(); + + public static T mapObjectFromJsonTestFile(String subPath, Class klass) throws IOException { + Path file = Path.of("src/test/java/edu/harvard/iq/dataverse", subPath); + String json = Files.readString(file, StandardCharsets.UTF_8); + // Jakarta JSON-B is no capable to map many of the DTO fields... :-( Needs Gson for now. + // return jsonb.fromJson(json, klass); + return gson.fromJson(json, klass); } } From d33e1845f14b4596c933fe2612dcbebfbeb164d7 Mon Sep 17 00:00:00 2001 From: Oliver Bertuch Date: Tue, 27 Jul 2021 20:42:47 +0200 Subject: [PATCH 23/32] build(deps): move to SWORD2 server lib 1.2.0-SNAPSHOT With https://github.com/gdcc/sword2-server, the way to include the SWORD2 servlets has been simplified. Also many dependencies where removed or modernized: - Removed XOM - Newer Apache Jena version - Smaller imports of Abdera code libs - Removed dep on commons-httpclient:commons-httpclient in the lib, but remember it's still a tech debt. See commit 3790ec02 This commit uses a SNAPSHOT version to be used for integration tests. Needs to be replaced with final version once released. IQSS/dataverse-security#38 --- pom.xml | 81 +++++++++++++++++++++++++-------------------------------- 1 file changed, 35 insertions(+), 46 deletions(-) diff --git a/pom.xml b/pom.xml index 6487a0c8bca..005c209edcb 100644 --- a/pom.xml +++ b/pom.xml @@ -113,6 +113,16 @@ Local repository for hosting jars not available from network repositories. file://${project.basedir}/local_lib + + oss-sonatype + oss-sonatype + + https://s01.oss.sonatype.org/content/repositories/snapshots/ + + + true + + @@ -174,18 +184,25 @@ import pom - - - xom - xom - 1.3.7 - + commons-io commons-io ${commons.io.version} + + + + org.apache.abdera + abdera-core + 1.1.3 + + + org.apache.abdera + abdera-i18n + 1.1.3 + @@ -253,31 +270,21 @@ - org.swordapp + io.gdcc sword2-server - 1.0 - jar - classes + 1.2.0-SNAPSHOT + - org.swordapp - sword2-server - - 1.1-SNAPSHOT - war - - - xerces - xercesImpl - - + org.apache.abdera + abdera-core + + + + + org.apache.abdera + abdera-i18n + @@ -290,24 +297,6 @@ titanium-json-ld 0.8.6 - - - org.apache.abdera - abdera-core - 1.1.3 - - - - org.apache.abdera - abdera-parser - 1.1.3 - - - - commons-fileupload - commons-fileupload - 1.3.3 - com.google.code.gson gson From 8ea5df5d928cf69967b4238a27100fd856a26403 Mon Sep 17 00:00:00 2001 From: Oliver Bertuch Date: Wed, 28 Jul 2021 16:00:40 +0200 Subject: [PATCH 24/32] refactor(tests): modernize DatasetVersionTest with JUnit5 + make atomic --- .../iq/dataverse/DatasetVersionTest.java | 45 +++++++------------ 1 file changed, 17 insertions(+), 28 deletions(-) diff --git a/src/test/java/edu/harvard/iq/dataverse/DatasetVersionTest.java b/src/test/java/edu/harvard/iq/dataverse/DatasetVersionTest.java index 3ca69fa71d2..3969e2be843 100644 --- a/src/test/java/edu/harvard/iq/dataverse/DatasetVersionTest.java +++ b/src/test/java/edu/harvard/iq/dataverse/DatasetVersionTest.java @@ -1,5 +1,6 @@ package edu.harvard.iq.dataverse; +import edu.harvard.iq.dataverse.branding.BrandingUtilTest; import edu.harvard.iq.dataverse.mocks.MocksFactory; import edu.harvard.iq.dataverse.util.json.JsonUtil; import java.io.StringReader; @@ -10,44 +11,32 @@ import java.util.Collections; import java.util.Date; import java.util.List; +import java.util.logging.Logger; import javax.json.Json; import javax.json.JsonArray; import javax.json.JsonObject; import javax.json.JsonReader; -import org.junit.After; -import org.junit.AfterClass; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.Test; -/** - * - * @author michael - */ public class DatasetVersionTest { - - public DatasetVersionTest() { - } - @BeforeClass - public static void setUpClass() { - } + private static final Logger logger = Logger.getLogger(DatasetVersion.class.getCanonicalName()); - @AfterClass - public static void tearDownClass() { + @BeforeAll + public static void setUp() { + BrandingUtilTest.setupMocks(); } - @Before - public void setUp() { + @AfterAll + public static void tearDown() { + BrandingUtilTest.setupMocks(); } - @After - public void tearDown() { - } - @Test public void testComparator() { DatasetVersion ds1_0 = new DatasetVersion(); @@ -123,7 +112,7 @@ public void testGetJsonLd() throws ParseException { terms.setLicense(TermsOfUseAndAccess.License.CC0); datasetVersion.setTermsOfUseAndAccess(terms); String jsonLd = datasetVersion.getJsonLd(); - System.out.println("jsonLd: " + JsonUtil.prettyPrint(jsonLd)); + logger.fine("jsonLd: " + JsonUtil.prettyPrint(jsonLd)); JsonReader jsonReader = Json.createReader(new StringReader(jsonLd)); JsonObject obj = jsonReader.readObject(); assertEquals("http://schema.org", obj.getString("@context")); @@ -180,7 +169,7 @@ public void testGetJsonLdNonCC0License() throws ParseException { datasetVersion.setTermsOfUseAndAccess(terms); String jsonLd = datasetVersion.getJsonLd(); - System.out.println("jsonLd: " + JsonUtil.prettyPrint(jsonLd)); + logger.fine("jsonLd: " + JsonUtil.prettyPrint(jsonLd)); JsonReader jsonReader = Json.createReader(new StringReader(jsonLd)); JsonObject obj = jsonReader.readObject(); assertEquals("http://schema.org", obj.getString("@context")); From 67a2f50d85d3c241c5f28c0b87338e4731782574 Mon Sep 17 00:00:00 2001 From: Oliver Bertuch Date: Wed, 28 Jul 2021 16:01:01 +0200 Subject: [PATCH 25/32] refactor(export): cleanup DDIExporterTest, convert to JUnit 5, make atomic - Test testCitation() has been removed as obsolete, due to the existance of DataCitationTest by @pkiraly - Test testExportDataset() has been changed to actually do an export and now checks for invalid XML as output. It prints a severe warning as the produced DDI Codebook is not valid according to DDI Codebook 2.5 XSD. - The test cases are now atomic by moving to JUnit 5 and setting up lots of mocks (BrandingUtil, SettingsService) IQSS/dataverse#3648 --- .../iq/dataverse/export/DDIExporterTest.java | 222 +++++++++--------- 1 file changed, 109 insertions(+), 113 deletions(-) diff --git a/src/test/java/edu/harvard/iq/dataverse/export/DDIExporterTest.java b/src/test/java/edu/harvard/iq/dataverse/export/DDIExporterTest.java index 3a5ef60a0e4..7fe4df5d49b 100644 --- a/src/test/java/edu/harvard/iq/dataverse/export/DDIExporterTest.java +++ b/src/test/java/edu/harvard/iq/dataverse/export/DDIExporterTest.java @@ -1,40 +1,120 @@ package edu.harvard.iq.dataverse.export; +import com.google.gson.Gson; import edu.harvard.iq.dataverse.ControlledVocabularyValue; -import edu.harvard.iq.dataverse.Dataset; import edu.harvard.iq.dataverse.DatasetFieldType; import edu.harvard.iq.dataverse.DatasetFieldType.FieldType; +import edu.harvard.iq.dataverse.branding.BrandingUtilTest; +import edu.harvard.iq.dataverse.export.ddi.DdiExportUtil; import edu.harvard.iq.dataverse.mocks.MockDatasetFieldSvc; import edu.harvard.iq.dataverse.DatasetVersion; -import edu.harvard.iq.dataverse.Dataverse; +import edu.harvard.iq.dataverse.settings.SettingsServiceBean; +import edu.harvard.iq.dataverse.util.json.JsonParseException; import edu.harvard.iq.dataverse.util.json.JsonParser; import edu.harvard.iq.dataverse.util.xml.XmlPrinter; import java.io.ByteArrayOutputStream; import java.io.File; +import java.io.IOException; import java.io.StringReader; +import java.nio.charset.StandardCharsets; import java.nio.file.Files; +import java.nio.file.Path; import java.nio.file.Paths; -import java.time.Year; import java.util.Arrays; import java.util.HashSet; import java.util.Set; +import java.util.logging.Logger; import javax.json.Json; import javax.json.JsonObject; import javax.json.JsonReader; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; -import org.junit.Before; -import org.junit.Test; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.Test; +import org.mockito.Mockito; +import org.xmlunit.assertj3.XmlAssert; public class DDIExporterTest { - MockDatasetFieldSvc datasetFieldTypeSvc = null; + private static final Logger logger = Logger.getLogger(DDIExporterTest.class.getCanonicalName()); + private static final SettingsServiceBean settingsService = Mockito.mock(SettingsServiceBean.class); + private static final MockDatasetFieldSvc datasetFieldTypeSvc = new MockDatasetFieldSvc(); + private static final Gson gson = new Gson(); + + /* + * Setup and teardown mocks for BrandingUtil for atomicity. + * Setup the mocked DatasetFieldSvc + * Setup and teardown the mocked SettingsServiceBean + */ + @BeforeAll + private static void setUpAll() { + BrandingUtilTest.setupMocks(); + mockDatasetFieldSvc(); + DdiExportUtil.injectSettingsService(settingsService); + } + @AfterAll + private static void tearDownAll() { + BrandingUtilTest.tearDownMocks(); + DdiExportUtil.injectSettingsService(null); + } + + @Test + public void testExportDataset() throws JsonParseException, IOException, ExportException { + //given + String datasetDtoJsonString = Files.readString(Path.of("src/test/java/edu/harvard/iq/dataverse/export/ddi/dataset-finch1.json"), StandardCharsets.UTF_8); + + JsonObject datasetDtoJson = Json.createReader(new StringReader(datasetDtoJsonString)).readObject(); + DatasetVersion datasetVersion = gson.fromJson(datasetDtoJson.getJsonObject("datasetVersion").toString(), DatasetVersion.class); + + //when + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + new DDIExporter().exportDataset(datasetVersion, datasetDtoJson, byteArrayOutputStream); + + // then + String xml = XmlPrinter.prettyPrintXml(byteArrayOutputStream.toString(StandardCharsets.UTF_8)); + XmlAssert.assertThat(xml).isInvalid(); + logger.severe("DDIExporterTest.testExportDataset() creates XML but it's invalid. Fixing in DDIExportUtil required."); + } + + @Test + public void testExportDatasetContactEmailPresent() throws Exception { + File datasetVersionJson = new File("src/test/java/edu/harvard/iq/dataverse/export/ddi/datasetContactEmailPresent.json"); + String datasetVersionAsJson = new String(Files.readAllBytes(Paths.get(datasetVersionJson.getAbsolutePath()))); + + JsonReader jsonReader = Json.createReader(new StringReader(datasetVersionAsJson)); + JsonObject json = jsonReader.readObject(); + JsonParser jsonParser = new JsonParser(datasetFieldTypeSvc, null, null); + DatasetVersion version = jsonParser.parseDatasetVersion(json.getJsonObject("datasetVersion")); + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + DDIExporter instance = new DDIExporter(); + instance.exportDataset(version, json, byteArrayOutputStream); + + logger.fine(XmlPrinter.prettyPrintXml(byteArrayOutputStream.toString())); + assertTrue(byteArrayOutputStream.toString().contains("finch@mailinator.com")); + + } - @Before - public void setUp() { - datasetFieldTypeSvc = new MockDatasetFieldSvc(); + @Test + public void testExportDatasetContactEmailAbsent() throws Exception { + File datasetVersionJson = new File("src/test/java/edu/harvard/iq/dataverse/export/ddi/datasetContactEmailAbsent.json"); + String datasetVersionAsJson = new String(Files.readAllBytes(Paths.get(datasetVersionJson.getAbsolutePath()))); + JsonReader jsonReader = Json.createReader(new StringReader(datasetVersionAsJson)); + JsonObject json = jsonReader.readObject(); +// JsonParser jsonParser = new JsonParser(datasetFieldTypeSvc, null, settingsSvc); + JsonParser jsonParser = new JsonParser(datasetFieldTypeSvc, null, null); + DatasetVersion version = jsonParser.parseDatasetVersion(json.getJsonObject("datasetVersion")); + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + DDIExporter instance = new DDIExporter(); + instance.exportDataset(version, json, byteArrayOutputStream); + + logger.fine(XmlPrinter.prettyPrintXml(byteArrayOutputStream.toString())); + assertFalse(byteArrayOutputStream.toString().contains("finch@mailinator.com")); + + } + + private static void mockDatasetFieldSvc() { DatasetFieldType titleType = datasetFieldTypeSvc.add(new DatasetFieldType("title", FieldType.TEXTBOX, false)); DatasetFieldType authorType = datasetFieldTypeSvc.add(new DatasetFieldType("author", FieldType.TEXT, true)); Set authorChildTypes = new HashSet<>(); @@ -44,17 +124,17 @@ public void setUp() { DatasetFieldType authorIdentifierSchemeType = datasetFieldTypeSvc.add(new DatasetFieldType("authorIdentifierScheme", FieldType.TEXT, false)); authorIdentifierSchemeType.setAllowControlledVocabulary(true); authorIdentifierSchemeType.setControlledVocabularyValues(Arrays.asList( - // Why aren't these enforced? Should be ORCID, etc. - new ControlledVocabularyValue(1l, "ark", authorIdentifierSchemeType), - new ControlledVocabularyValue(2l, "doi", authorIdentifierSchemeType), - new ControlledVocabularyValue(3l, "url", authorIdentifierSchemeType) + // Why aren't these enforced? Should be ORCID, etc. + new ControlledVocabularyValue(1l, "ark", authorIdentifierSchemeType), + new ControlledVocabularyValue(2l, "doi", authorIdentifierSchemeType), + new ControlledVocabularyValue(3l, "url", authorIdentifierSchemeType) )); authorChildTypes.add(datasetFieldTypeSvc.add(authorIdentifierSchemeType)); for (DatasetFieldType t : authorChildTypes) { t.setParentDatasetFieldType(authorType); } authorType.setChildDatasetFieldTypes(authorChildTypes); - + DatasetFieldType datasetContactType = datasetFieldTypeSvc.add(new DatasetFieldType("datasetContact", FieldType.TEXT, true)); Set datasetContactTypes = new HashSet<>(); datasetContactTypes.add(datasetFieldTypeSvc.add(new DatasetFieldType("datasetContactEmail", FieldType.TEXT, false))); @@ -64,7 +144,7 @@ public void setUp() { t.setParentDatasetFieldType(datasetContactType); } datasetContactType.setChildDatasetFieldTypes(datasetContactTypes); - + DatasetFieldType dsDescriptionType = datasetFieldTypeSvc.add(new DatasetFieldType("dsDescription", FieldType.TEXT, true)); Set dsDescriptionTypes = new HashSet<>(); dsDescriptionTypes.add(datasetFieldTypeSvc.add(new DatasetFieldType("dsDescriptionValue", FieldType.TEXT, false))); @@ -72,118 +152,34 @@ public void setUp() { t.setParentDatasetFieldType(dsDescriptionType); } dsDescriptionType.setChildDatasetFieldTypes(dsDescriptionTypes); - + DatasetFieldType keywordType = datasetFieldTypeSvc.add(new DatasetFieldType("keyword", DatasetFieldType.FieldType.TEXT, true)); DatasetFieldType descriptionType = datasetFieldTypeSvc.add(new DatasetFieldType("description", DatasetFieldType.FieldType.TEXTBOX, false)); - + DatasetFieldType subjectType = datasetFieldTypeSvc.add(new DatasetFieldType("subject", DatasetFieldType.FieldType.TEXT, true)); subjectType.setAllowControlledVocabulary(true); subjectType.setControlledVocabularyValues(Arrays.asList( - new ControlledVocabularyValue(1l, "mgmt", subjectType), - new ControlledVocabularyValue(2l, "law", subjectType), - new ControlledVocabularyValue(3l, "cs", subjectType) + new ControlledVocabularyValue(1l, "mgmt", subjectType), + new ControlledVocabularyValue(2l, "law", subjectType), + new ControlledVocabularyValue(3l, "cs", subjectType) )); - + DatasetFieldType pubIdType = datasetFieldTypeSvc.add(new DatasetFieldType("publicationIdType", DatasetFieldType.FieldType.TEXT, false)); pubIdType.setAllowControlledVocabulary(true); pubIdType.setControlledVocabularyValues(Arrays.asList( - new ControlledVocabularyValue(1l, "ark", pubIdType), - new ControlledVocabularyValue(2l, "doi", pubIdType), - new ControlledVocabularyValue(3l, "url", pubIdType) + new ControlledVocabularyValue(1l, "ark", pubIdType), + new ControlledVocabularyValue(2l, "doi", pubIdType), + new ControlledVocabularyValue(3l, "url", pubIdType) )); - + DatasetFieldType compoundSingleType = datasetFieldTypeSvc.add(new DatasetFieldType("coordinate", DatasetFieldType.FieldType.TEXT, true)); Set childTypes = new HashSet<>(); childTypes.add(datasetFieldTypeSvc.add(new DatasetFieldType("lat", DatasetFieldType.FieldType.TEXT, false))); childTypes.add(datasetFieldTypeSvc.add(new DatasetFieldType("lon", DatasetFieldType.FieldType.TEXT, false))); - + for (DatasetFieldType t : childTypes) { t.setParentDatasetFieldType(compoundSingleType); } compoundSingleType.setChildDatasetFieldTypes(childTypes); } - - @Test - public void testExportDataset() throws Exception { - System.out.println("exportDataset"); - - // FIXME: switch ddi/dataset-finch1.json - //File datasetVersionJson = new File("src/test/java/edu/harvard/iq/dataverse/export/ddi/dataset-finch1.json"); - File datasetVersionJson = new File("src/test/resources/json/dataset-finch1.json"); - String datasetVersionAsJson = new String(Files.readAllBytes(Paths.get(datasetVersionJson.getAbsolutePath()))); - - JsonReader jsonReader = Json.createReader(new StringReader(datasetVersionAsJson)); - JsonObject json = jsonReader.readObject(); - JsonParser jsonParser = new JsonParser(datasetFieldTypeSvc, null, null); - DatasetVersion version = jsonParser.parseDatasetVersion(json.getJsonObject("datasetVersion")); - - ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); - DDIExporter instance = new DDIExporter(); - boolean nullPointerFixed = false; - if (nullPointerFixed) { - instance.exportDataset(version, json, byteArrayOutputStream); - } - - System.out.println("out: " + XmlPrinter.prettyPrintXml(byteArrayOutputStream.toString())); - - } - - @Test - public void testCitation() throws Exception { - System.out.println("testCitation"); - - File datasetVersionJson = new File("src/test/resources/json/dataset-finch1.json"); - String datasetVersionAsJson = new String(Files.readAllBytes(Paths.get(datasetVersionJson.getAbsolutePath()))); - - JsonReader jsonReader = Json.createReader(new StringReader(datasetVersionAsJson)); - JsonObject json = jsonReader.readObject(); - JsonParser jsonParser = new JsonParser(datasetFieldTypeSvc, null, null); - DatasetVersion version = jsonParser.parseDatasetVersion(json.getJsonObject("datasetVersion")); - version.setVersionState(DatasetVersion.VersionState.DRAFT); - Dataset dataset = new Dataset(); - version.setDataset(dataset); - dataset.setOwner(new Dataverse()); - String citation = version.getCitation(); - System.out.println("citation: " + citation); - int currentYear = Year.now().getValue(); - assertEquals("Finch, Fiona, " + currentYear + ", \"Darwin's Finches\", LibraScholar, DRAFT VERSION", citation); - } - - @Test - public void testExportDatasetContactEmailPresent() throws Exception { - File datasetVersionJson = new File("src/test/java/edu/harvard/iq/dataverse/export/ddi/datasetContactEmailPresent.json"); - String datasetVersionAsJson = new String(Files.readAllBytes(Paths.get(datasetVersionJson.getAbsolutePath()))); - - JsonReader jsonReader = Json.createReader(new StringReader(datasetVersionAsJson)); - JsonObject json = jsonReader.readObject(); - JsonParser jsonParser = new JsonParser(datasetFieldTypeSvc, null, null); - DatasetVersion version = jsonParser.parseDatasetVersion(json.getJsonObject("datasetVersion")); - ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); - DDIExporter instance = new DDIExporter(); - instance.exportDataset(version, json, byteArrayOutputStream); - - System.out.println(XmlPrinter.prettyPrintXml(byteArrayOutputStream.toString())); - assertTrue(byteArrayOutputStream.toString().contains("finch@mailinator.com")); - - } - - @Test - public void testExportDatasetContactEmailAbsent() throws Exception { - File datasetVersionJson = new File("src/test/java/edu/harvard/iq/dataverse/export/ddi/datasetContactEmailAbsent.json"); - String datasetVersionAsJson = new String(Files.readAllBytes(Paths.get(datasetVersionJson.getAbsolutePath()))); - - JsonReader jsonReader = Json.createReader(new StringReader(datasetVersionAsJson)); - JsonObject json = jsonReader.readObject(); -// JsonParser jsonParser = new JsonParser(datasetFieldTypeSvc, null, settingsSvc); - JsonParser jsonParser = new JsonParser(datasetFieldTypeSvc, null, null); - DatasetVersion version = jsonParser.parseDatasetVersion(json.getJsonObject("datasetVersion")); - ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); - DDIExporter instance = new DDIExporter(); - instance.exportDataset(version, json, byteArrayOutputStream); - - System.out.println(XmlPrinter.prettyPrintXml(byteArrayOutputStream.toString())); - assertFalse(byteArrayOutputStream.toString().contains("finch@mailinator.com")); - - } - } From caf00a5a6c1003b0fc5cc9e850b6f4b8878f4ee1 Mon Sep 17 00:00:00 2001 From: Oliver Bertuch Date: Wed, 28 Jul 2021 16:17:04 +0200 Subject: [PATCH 26/32] refactor(export): SchemaDotOrgExporterTest now atomic and using JUnit5 --- .../export/SchemaDotOrgExporterTest.java | 369 +++++++++--------- 1 file changed, 176 insertions(+), 193 deletions(-) diff --git a/src/test/java/edu/harvard/iq/dataverse/export/SchemaDotOrgExporterTest.java b/src/test/java/edu/harvard/iq/dataverse/export/SchemaDotOrgExporterTest.java index 1ae0b9b12ca..0149fc324dd 100644 --- a/src/test/java/edu/harvard/iq/dataverse/export/SchemaDotOrgExporterTest.java +++ b/src/test/java/edu/harvard/iq/dataverse/export/SchemaDotOrgExporterTest.java @@ -8,6 +8,7 @@ import edu.harvard.iq.dataverse.Dataverse; import edu.harvard.iq.dataverse.FileMetadata; import edu.harvard.iq.dataverse.TermsOfUseAndAccess; +import edu.harvard.iq.dataverse.branding.BrandingUtilTest; import edu.harvard.iq.dataverse.mocks.MockDatasetFieldSvc; import static edu.harvard.iq.dataverse.util.SystemConfig.SITE_URL; @@ -28,199 +29,34 @@ import java.util.HashSet; import java.util.List; import java.util.Set; +import java.util.logging.Logger; import javax.json.Json; import javax.json.JsonObject; import javax.json.JsonReader; -import org.junit.After; -import org.junit.AfterClass; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; -import static org.junit.Assert.*; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; /** * For docs see {@link SchemaDotOrgExporter}. */ public class SchemaDotOrgExporterTest { - private final SchemaDotOrgExporter schemaDotOrgExporter; - MockDatasetFieldSvc datasetFieldTypeSvc = null; - - public SchemaDotOrgExporterTest() { - schemaDotOrgExporter = new SchemaDotOrgExporter(); - } + private static final Logger logger = Logger.getLogger(SchemaDotOrgExporterTest.class.getCanonicalName()); + private static final MockDatasetFieldSvc datasetFieldTypeSvc = new MockDatasetFieldSvc(); + private static final SchemaDotOrgExporter schemaDotOrgExporter = new SchemaDotOrgExporter(); - @BeforeClass + @BeforeAll public static void setUpClass() { + BrandingUtilTest.setupMocks(); + mockDatasetFieldSvc(); } - @AfterClass + @AfterAll public static void tearDownClass() { - } - - @Before - public void setUp() { - datasetFieldTypeSvc = new MockDatasetFieldSvc(); - - DatasetFieldType titleType = datasetFieldTypeSvc.add(new DatasetFieldType("title", DatasetFieldType.FieldType.TEXTBOX, false)); - DatasetFieldType authorType = datasetFieldTypeSvc.add(new DatasetFieldType("author", DatasetFieldType.FieldType.TEXT, true)); - Set authorChildTypes = new HashSet<>(); - authorChildTypes.add(datasetFieldTypeSvc.add(new DatasetFieldType("authorName", DatasetFieldType.FieldType.TEXT, false))); - authorChildTypes.add(datasetFieldTypeSvc.add(new DatasetFieldType("authorAffiliation", DatasetFieldType.FieldType.TEXT, false))); - authorChildTypes.add(datasetFieldTypeSvc.add(new DatasetFieldType("authorIdentifier", DatasetFieldType.FieldType.TEXT, false))); - DatasetFieldType authorIdentifierSchemeType = datasetFieldTypeSvc.add(new DatasetFieldType("authorIdentifierScheme", DatasetFieldType.FieldType.TEXT, false)); - authorIdentifierSchemeType.setAllowControlledVocabulary(true); - authorIdentifierSchemeType.setControlledVocabularyValues(Arrays.asList( - // Why aren't these enforced? Should be ORCID, etc. - new ControlledVocabularyValue(1l, "ark", authorIdentifierSchemeType), - new ControlledVocabularyValue(2l, "doi", authorIdentifierSchemeType), - new ControlledVocabularyValue(3l, "url", authorIdentifierSchemeType) - )); - authorChildTypes.add(datasetFieldTypeSvc.add(authorIdentifierSchemeType)); - for (DatasetFieldType t : authorChildTypes) { - t.setParentDatasetFieldType(authorType); - } - authorType.setChildDatasetFieldTypes(authorChildTypes); - - DatasetFieldType datasetContactType = datasetFieldTypeSvc.add(new DatasetFieldType("datasetContact", DatasetFieldType.FieldType.TEXT, true)); - Set datasetContactTypes = new HashSet<>(); - datasetContactTypes.add(datasetFieldTypeSvc.add(new DatasetFieldType("datasetContactEmail", DatasetFieldType.FieldType.TEXT, false))); - datasetContactTypes.add(datasetFieldTypeSvc.add(new DatasetFieldType("datasetContactName", DatasetFieldType.FieldType.TEXT, false))); - datasetContactTypes.add(datasetFieldTypeSvc.add(new DatasetFieldType("datasetContactAffiliation", DatasetFieldType.FieldType.TEXT, false))); - for (DatasetFieldType t : datasetContactTypes) { - t.setParentDatasetFieldType(datasetContactType); - } - datasetContactType.setChildDatasetFieldTypes(datasetContactTypes); - - DatasetFieldType dsDescriptionType = datasetFieldTypeSvc.add(new DatasetFieldType("dsDescription", DatasetFieldType.FieldType.TEXT, true)); - Set dsDescriptionTypes = new HashSet<>(); - dsDescriptionTypes.add(datasetFieldTypeSvc.add(new DatasetFieldType("dsDescriptionValue", DatasetFieldType.FieldType.TEXT, false))); - for (DatasetFieldType t : dsDescriptionTypes) { - t.setParentDatasetFieldType(dsDescriptionType); - } - dsDescriptionType.setChildDatasetFieldTypes(dsDescriptionTypes); - - DatasetFieldType keywordType = datasetFieldTypeSvc.add(new DatasetFieldType("keyword", DatasetFieldType.FieldType.TEXT, true)); - Set keywordChildTypes = new HashSet<>(); - keywordChildTypes.add(datasetFieldTypeSvc.add(new DatasetFieldType("keywordValue", DatasetFieldType.FieldType.TEXT, false))); - keywordChildTypes.add(datasetFieldTypeSvc.add(new DatasetFieldType("keywordVocabulary", DatasetFieldType.FieldType.TEXT, false))); - keywordChildTypes.add(datasetFieldTypeSvc.add(new DatasetFieldType("keywordVocabularyURI", DatasetFieldType.FieldType.TEXT, false))); - keywordType.setChildDatasetFieldTypes(keywordChildTypes); - - DatasetFieldType topicClassificationType = datasetFieldTypeSvc.add(new DatasetFieldType("topicClassification", DatasetFieldType.FieldType.TEXT, true)); - Set topicClassificationTypes = new HashSet<>(); - topicClassificationTypes.add(datasetFieldTypeSvc.add(new DatasetFieldType("topicClassValue", DatasetFieldType.FieldType.TEXT, false))); - topicClassificationTypes.add(datasetFieldTypeSvc.add(new DatasetFieldType("topicClassVocab", DatasetFieldType.FieldType.TEXT, false))); - topicClassificationTypes.add(datasetFieldTypeSvc.add(new DatasetFieldType("topicClassVocabURI", DatasetFieldType.FieldType.TEXT, false))); - topicClassificationType.setChildDatasetFieldTypes(topicClassificationTypes); - - DatasetFieldType descriptionType = datasetFieldTypeSvc.add(new DatasetFieldType("description", DatasetFieldType.FieldType.TEXTBOX, false)); - - DatasetFieldType subjectType = datasetFieldTypeSvc.add(new DatasetFieldType("subject", DatasetFieldType.FieldType.TEXT, true)); - subjectType.setAllowControlledVocabulary(true); - subjectType.setControlledVocabularyValues(Arrays.asList( - new ControlledVocabularyValue(1l, "mgmt", subjectType), - new ControlledVocabularyValue(2l, "law", subjectType), - new ControlledVocabularyValue(3l, "cs", subjectType) - )); - - DatasetFieldType pubIdType = datasetFieldTypeSvc.add(new DatasetFieldType("publicationIdType", DatasetFieldType.FieldType.TEXT, false)); - pubIdType.setAllowControlledVocabulary(true); - pubIdType.setControlledVocabularyValues(Arrays.asList( - new ControlledVocabularyValue(1l, "ark", pubIdType), - new ControlledVocabularyValue(2l, "doi", pubIdType), - new ControlledVocabularyValue(3l, "url", pubIdType) - )); - - DatasetFieldType compoundSingleType = datasetFieldTypeSvc.add(new DatasetFieldType("coordinate", DatasetFieldType.FieldType.TEXT, true)); - Set childTypes = new HashSet<>(); - childTypes.add(datasetFieldTypeSvc.add(new DatasetFieldType("lat", DatasetFieldType.FieldType.TEXT, false))); - childTypes.add(datasetFieldTypeSvc.add(new DatasetFieldType("lon", DatasetFieldType.FieldType.TEXT, false))); - - for (DatasetFieldType t : childTypes) { - t.setParentDatasetFieldType(compoundSingleType); - } - compoundSingleType.setChildDatasetFieldTypes(childTypes); - - DatasetFieldType contributorType = datasetFieldTypeSvc.add(new DatasetFieldType("contributor", DatasetFieldType.FieldType.TEXT, true)); - Set contributorChildTypes = new HashSet<>(); - contributorChildTypes.add(datasetFieldTypeSvc.add(new DatasetFieldType("contributorName", DatasetFieldType.FieldType.TEXT, false))); - DatasetFieldType contributorTypes = datasetFieldTypeSvc.add(new DatasetFieldType("contributorType", DatasetFieldType.FieldType.TEXT, false)); - contributorTypes.setAllowControlledVocabulary(true); - contributorTypes.setControlledVocabularyValues(Arrays.asList( - // Why aren't these enforced? - new ControlledVocabularyValue(1l, "Data Collector", contributorTypes), - new ControlledVocabularyValue(2l, "Data Curator", contributorTypes), - new ControlledVocabularyValue(3l, "Data Manager", contributorTypes), - new ControlledVocabularyValue(3l, "Editor", contributorTypes), - new ControlledVocabularyValue(3l, "Funder", contributorTypes), - new ControlledVocabularyValue(3l, "Hosting Institution", contributorTypes) - // Etc. There are more. - )); - contributorChildTypes.add(datasetFieldTypeSvc.add(contributorTypes)); - for (DatasetFieldType t : contributorChildTypes) { - t.setParentDatasetFieldType(contributorType); - } - contributorType.setChildDatasetFieldTypes(contributorChildTypes); - - DatasetFieldType grantNumberType = datasetFieldTypeSvc.add(new DatasetFieldType("grantNumber", DatasetFieldType.FieldType.TEXT, true)); - Set grantNumberChildTypes = new HashSet<>(); - grantNumberChildTypes.add(datasetFieldTypeSvc.add(new DatasetFieldType("grantNumberAgency", DatasetFieldType.FieldType.TEXT, false))); - grantNumberChildTypes.add(datasetFieldTypeSvc.add(new DatasetFieldType("grantNumberValue", DatasetFieldType.FieldType.TEXT, false))); - grantNumberType.setChildDatasetFieldTypes(grantNumberChildTypes); - - DatasetFieldType publicationType = datasetFieldTypeSvc.add(new DatasetFieldType("publication", DatasetFieldType.FieldType.TEXT, true)); - Set publicationChildTypes = new HashSet<>(); - publicationChildTypes.add(datasetFieldTypeSvc.add(new DatasetFieldType("publicationCitation", DatasetFieldType.FieldType.TEXT, false))); - DatasetFieldType publicationIdTypes = datasetFieldTypeSvc.add(new DatasetFieldType("publicationIDType", DatasetFieldType.FieldType.TEXT, false)); - publicationIdTypes.setAllowControlledVocabulary(true); - publicationIdTypes.setControlledVocabularyValues(Arrays.asList( - // Why aren't these enforced? - new ControlledVocabularyValue(1l, "ark", publicationIdTypes), - new ControlledVocabularyValue(2l, "arXiv", publicationIdTypes), - new ControlledVocabularyValue(3l, "bibcode", publicationIdTypes), - new ControlledVocabularyValue(4l, "doi", publicationIdTypes), - new ControlledVocabularyValue(5l, "ean13", publicationIdTypes), - new ControlledVocabularyValue(6l, "handle", publicationIdTypes) - // Etc. There are more. - )); - publicationChildTypes.add(datasetFieldTypeSvc.add(publicationIdTypes)); - publicationChildTypes.add(datasetFieldTypeSvc.add(new DatasetFieldType("publicationIDNumber", DatasetFieldType.FieldType.TEXT, false))); - DatasetFieldType publicationURLType = new DatasetFieldType("publicationURL", DatasetFieldType.FieldType.URL, false); - publicationURLType.setDisplayFormat("#VALUE"); - publicationChildTypes.add(datasetFieldTypeSvc.add(publicationURLType)); - publicationType.setChildDatasetFieldTypes(publicationChildTypes); - - DatasetFieldType timePeriodCoveredType = datasetFieldTypeSvc.add(new DatasetFieldType("timePeriodCovered", DatasetFieldType.FieldType.NONE, true)); - Set timePeriodCoveredChildTypes = new HashSet<>(); - timePeriodCoveredChildTypes.add(datasetFieldTypeSvc.add(new DatasetFieldType("timePeriodCoveredStart", DatasetFieldType.FieldType.DATE, false))); - timePeriodCoveredChildTypes.add(datasetFieldTypeSvc.add(new DatasetFieldType("timePeriodCoveredEnd", DatasetFieldType.FieldType.DATE, false))); - timePeriodCoveredType.setChildDatasetFieldTypes(timePeriodCoveredChildTypes); - - DatasetFieldType geographicCoverageType = datasetFieldTypeSvc.add(new DatasetFieldType("geographicCoverage", DatasetFieldType.FieldType.TEXT, true)); - Set geographicCoverageChildTypes = new HashSet<>(); - DatasetFieldType countries = datasetFieldTypeSvc.add(new DatasetFieldType("country", DatasetFieldType.FieldType.TEXT, false)); - countries.setAllowControlledVocabulary(true); - countries.setControlledVocabularyValues(Arrays.asList( - // Why aren't these enforced? - new ControlledVocabularyValue(1l, "Afghanistan", countries), - new ControlledVocabularyValue(2l, "Albania", countries) - // And many more countries. - )); - geographicCoverageChildTypes.add(datasetFieldTypeSvc.add(countries)); - geographicCoverageChildTypes.add(datasetFieldTypeSvc.add(new DatasetFieldType("state", DatasetFieldType.FieldType.TEXT, false))); - geographicCoverageChildTypes.add(datasetFieldTypeSvc.add(new DatasetFieldType("city", DatasetFieldType.FieldType.TEXT, false))); - geographicCoverageChildTypes.add(datasetFieldTypeSvc.add(new DatasetFieldType("otherGeographicCoverage", DatasetFieldType.FieldType.TEXT, false))); - geographicCoverageChildTypes.add(datasetFieldTypeSvc.add(new DatasetFieldType("geographicUnit", DatasetFieldType.FieldType.TEXT, false))); - for (DatasetFieldType t : geographicCoverageChildTypes) { - t.setParentDatasetFieldType(geographicCoverageType); - } - geographicCoverageType.setChildDatasetFieldTypes(geographicCoverageChildTypes); - - } - - @After - public void tearDown() { + BrandingUtilTest.tearDownMocks(); } /** @@ -228,7 +64,6 @@ public void tearDown() { */ @Test public void testExportDataset() throws Exception { - System.out.println("exportDataset"); File datasetVersionJson = new File("src/test/resources/json/dataset-finch2.json"); String datasetVersionAsJson = new String(Files.readAllBytes(Paths.get(datasetVersionJson.getAbsolutePath()))); @@ -282,7 +117,7 @@ public void testExportDataset() throws Exception { schemaDotOrgExporter.exportDataset(version, json1, byteArrayOutputStream); String jsonLd = byteArrayOutputStream.toString(); String prettyJson = JsonUtil.prettyPrint(jsonLd); - System.out.println("schema.org JSON-LD: " + prettyJson); + logger.fine("schema.org JSON-LD: " + prettyJson); JsonReader jsonReader2 = Json.createReader(new StringReader(jsonLd)); JsonObject json2 = jsonReader2.readObject(); assertEquals("http://schema.org", json2.getString("@context")); @@ -354,7 +189,6 @@ public void testExportDataset() throws Exception { */ @Test public void testGetProviderName() { - System.out.println("getProviderName"); assertEquals("schema.org", schemaDotOrgExporter.getProviderName()); } @@ -363,7 +197,6 @@ public void testGetProviderName() { */ @Test public void testGetDisplayName() { - System.out.println("getDisplayName"); // We capitalize "Schema.org" because it looks better in the dropdown list and it's what DataCite does in their UI. assertEquals("Schema.org JSON-LD", schemaDotOrgExporter.getDisplayName()); } @@ -373,7 +206,6 @@ public void testGetDisplayName() { */ @Test public void testIsXMLFormat() { - System.out.println("isXMLFormat"); assertEquals(false, schemaDotOrgExporter.isXMLFormat()); } @@ -382,7 +214,6 @@ public void testIsXMLFormat() { */ @Test public void testIsHarvestable() { - System.out.println("isHarvestable"); assertEquals(false, schemaDotOrgExporter.isHarvestable()); } @@ -391,7 +222,6 @@ public void testIsHarvestable() { */ @Test public void testIsAvailableToUsers() { - System.out.println("isAvailableToUsers"); assertEquals(true, schemaDotOrgExporter.isAvailableToUsers()); } @@ -399,8 +229,7 @@ public void testIsAvailableToUsers() { * Test of getXMLNameSpace method, of class SchemaDotOrgExporter. */ @Test - public void testGetXMLNameSpace() throws Exception { - System.out.println("getXMLNameSpace"); + public void testGetXMLNameSpace() { ExportException expectedException = null; try { String result = schemaDotOrgExporter.getXMLNameSpace(); @@ -414,8 +243,7 @@ public void testGetXMLNameSpace() throws Exception { * Test of getXMLSchemaLocation method, of class SchemaDotOrgExporter. */ @Test - public void testGetXMLSchemaLocation() throws Exception { - System.out.println("getXMLSchemaLocation"); + public void testGetXMLSchemaLocation() { ExportException expectedException = null; try { String result = schemaDotOrgExporter.getXMLSchemaLocation(); @@ -429,8 +257,7 @@ public void testGetXMLSchemaLocation() throws Exception { * Test of getXMLSchemaVersion method, of class SchemaDotOrgExporter. */ @Test - public void testGetXMLSchemaVersion() throws Exception { - System.out.println("getXMLSchemaVersion"); + public void testGetXMLSchemaVersion() { ExportException expectedException = null; try { String result = schemaDotOrgExporter.getXMLSchemaVersion(); @@ -445,10 +272,166 @@ public void testGetXMLSchemaVersion() throws Exception { */ @Test public void testSetParam() { - System.out.println("setParam"); String name = ""; Object value = null; schemaDotOrgExporter.setParam(name, value); } + + private static void mockDatasetFieldSvc() { + DatasetFieldType titleType = datasetFieldTypeSvc.add(new DatasetFieldType("title", DatasetFieldType.FieldType.TEXTBOX, false)); + DatasetFieldType authorType = datasetFieldTypeSvc.add(new DatasetFieldType("author", DatasetFieldType.FieldType.TEXT, true)); + Set authorChildTypes = new HashSet<>(); + authorChildTypes.add(datasetFieldTypeSvc.add(new DatasetFieldType("authorName", DatasetFieldType.FieldType.TEXT, false))); + authorChildTypes.add(datasetFieldTypeSvc.add(new DatasetFieldType("authorAffiliation", DatasetFieldType.FieldType.TEXT, false))); + authorChildTypes.add(datasetFieldTypeSvc.add(new DatasetFieldType("authorIdentifier", DatasetFieldType.FieldType.TEXT, false))); + DatasetFieldType authorIdentifierSchemeType = datasetFieldTypeSvc.add(new DatasetFieldType("authorIdentifierScheme", DatasetFieldType.FieldType.TEXT, false)); + authorIdentifierSchemeType.setAllowControlledVocabulary(true); + authorIdentifierSchemeType.setControlledVocabularyValues(Arrays.asList( + // Why aren't these enforced? Should be ORCID, etc. + new ControlledVocabularyValue(1l, "ark", authorIdentifierSchemeType), + new ControlledVocabularyValue(2l, "doi", authorIdentifierSchemeType), + new ControlledVocabularyValue(3l, "url", authorIdentifierSchemeType) + )); + authorChildTypes.add(datasetFieldTypeSvc.add(authorIdentifierSchemeType)); + for (DatasetFieldType t : authorChildTypes) { + t.setParentDatasetFieldType(authorType); + } + authorType.setChildDatasetFieldTypes(authorChildTypes); + + DatasetFieldType datasetContactType = datasetFieldTypeSvc.add(new DatasetFieldType("datasetContact", DatasetFieldType.FieldType.TEXT, true)); + Set datasetContactTypes = new HashSet<>(); + datasetContactTypes.add(datasetFieldTypeSvc.add(new DatasetFieldType("datasetContactEmail", DatasetFieldType.FieldType.TEXT, false))); + datasetContactTypes.add(datasetFieldTypeSvc.add(new DatasetFieldType("datasetContactName", DatasetFieldType.FieldType.TEXT, false))); + datasetContactTypes.add(datasetFieldTypeSvc.add(new DatasetFieldType("datasetContactAffiliation", DatasetFieldType.FieldType.TEXT, false))); + for (DatasetFieldType t : datasetContactTypes) { + t.setParentDatasetFieldType(datasetContactType); + } + datasetContactType.setChildDatasetFieldTypes(datasetContactTypes); + + DatasetFieldType dsDescriptionType = datasetFieldTypeSvc.add(new DatasetFieldType("dsDescription", DatasetFieldType.FieldType.TEXT, true)); + Set dsDescriptionTypes = new HashSet<>(); + dsDescriptionTypes.add(datasetFieldTypeSvc.add(new DatasetFieldType("dsDescriptionValue", DatasetFieldType.FieldType.TEXT, false))); + for (DatasetFieldType t : dsDescriptionTypes) { + t.setParentDatasetFieldType(dsDescriptionType); + } + dsDescriptionType.setChildDatasetFieldTypes(dsDescriptionTypes); + + DatasetFieldType keywordType = datasetFieldTypeSvc.add(new DatasetFieldType("keyword", DatasetFieldType.FieldType.TEXT, true)); + Set keywordChildTypes = new HashSet<>(); + keywordChildTypes.add(datasetFieldTypeSvc.add(new DatasetFieldType("keywordValue", DatasetFieldType.FieldType.TEXT, false))); + keywordChildTypes.add(datasetFieldTypeSvc.add(new DatasetFieldType("keywordVocabulary", DatasetFieldType.FieldType.TEXT, false))); + keywordChildTypes.add(datasetFieldTypeSvc.add(new DatasetFieldType("keywordVocabularyURI", DatasetFieldType.FieldType.TEXT, false))); + keywordType.setChildDatasetFieldTypes(keywordChildTypes); + + DatasetFieldType topicClassificationType = datasetFieldTypeSvc.add(new DatasetFieldType("topicClassification", DatasetFieldType.FieldType.TEXT, true)); + Set topicClassificationTypes = new HashSet<>(); + topicClassificationTypes.add(datasetFieldTypeSvc.add(new DatasetFieldType("topicClassValue", DatasetFieldType.FieldType.TEXT, false))); + topicClassificationTypes.add(datasetFieldTypeSvc.add(new DatasetFieldType("topicClassVocab", DatasetFieldType.FieldType.TEXT, false))); + topicClassificationTypes.add(datasetFieldTypeSvc.add(new DatasetFieldType("topicClassVocabURI", DatasetFieldType.FieldType.TEXT, false))); + topicClassificationType.setChildDatasetFieldTypes(topicClassificationTypes); + + DatasetFieldType descriptionType = datasetFieldTypeSvc.add(new DatasetFieldType("description", DatasetFieldType.FieldType.TEXTBOX, false)); + + DatasetFieldType subjectType = datasetFieldTypeSvc.add(new DatasetFieldType("subject", DatasetFieldType.FieldType.TEXT, true)); + subjectType.setAllowControlledVocabulary(true); + subjectType.setControlledVocabularyValues(Arrays.asList( + new ControlledVocabularyValue(1l, "mgmt", subjectType), + new ControlledVocabularyValue(2l, "law", subjectType), + new ControlledVocabularyValue(3l, "cs", subjectType) + )); + + DatasetFieldType pubIdType = datasetFieldTypeSvc.add(new DatasetFieldType("publicationIdType", DatasetFieldType.FieldType.TEXT, false)); + pubIdType.setAllowControlledVocabulary(true); + pubIdType.setControlledVocabularyValues(Arrays.asList( + new ControlledVocabularyValue(1l, "ark", pubIdType), + new ControlledVocabularyValue(2l, "doi", pubIdType), + new ControlledVocabularyValue(3l, "url", pubIdType) + )); + + DatasetFieldType compoundSingleType = datasetFieldTypeSvc.add(new DatasetFieldType("coordinate", DatasetFieldType.FieldType.TEXT, true)); + Set childTypes = new HashSet<>(); + childTypes.add(datasetFieldTypeSvc.add(new DatasetFieldType("lat", DatasetFieldType.FieldType.TEXT, false))); + childTypes.add(datasetFieldTypeSvc.add(new DatasetFieldType("lon", DatasetFieldType.FieldType.TEXT, false))); + + for (DatasetFieldType t : childTypes) { + t.setParentDatasetFieldType(compoundSingleType); + } + compoundSingleType.setChildDatasetFieldTypes(childTypes); + + DatasetFieldType contributorType = datasetFieldTypeSvc.add(new DatasetFieldType("contributor", DatasetFieldType.FieldType.TEXT, true)); + Set contributorChildTypes = new HashSet<>(); + contributorChildTypes.add(datasetFieldTypeSvc.add(new DatasetFieldType("contributorName", DatasetFieldType.FieldType.TEXT, false))); + DatasetFieldType contributorTypes = datasetFieldTypeSvc.add(new DatasetFieldType("contributorType", DatasetFieldType.FieldType.TEXT, false)); + contributorTypes.setAllowControlledVocabulary(true); + contributorTypes.setControlledVocabularyValues(Arrays.asList( + // Why aren't these enforced? + new ControlledVocabularyValue(1l, "Data Collector", contributorTypes), + new ControlledVocabularyValue(2l, "Data Curator", contributorTypes), + new ControlledVocabularyValue(3l, "Data Manager", contributorTypes), + new ControlledVocabularyValue(3l, "Editor", contributorTypes), + new ControlledVocabularyValue(3l, "Funder", contributorTypes), + new ControlledVocabularyValue(3l, "Hosting Institution", contributorTypes) + // Etc. There are more. + )); + contributorChildTypes.add(datasetFieldTypeSvc.add(contributorTypes)); + for (DatasetFieldType t : contributorChildTypes) { + t.setParentDatasetFieldType(contributorType); + } + contributorType.setChildDatasetFieldTypes(contributorChildTypes); + + DatasetFieldType grantNumberType = datasetFieldTypeSvc.add(new DatasetFieldType("grantNumber", DatasetFieldType.FieldType.TEXT, true)); + Set grantNumberChildTypes = new HashSet<>(); + grantNumberChildTypes.add(datasetFieldTypeSvc.add(new DatasetFieldType("grantNumberAgency", DatasetFieldType.FieldType.TEXT, false))); + grantNumberChildTypes.add(datasetFieldTypeSvc.add(new DatasetFieldType("grantNumberValue", DatasetFieldType.FieldType.TEXT, false))); + grantNumberType.setChildDatasetFieldTypes(grantNumberChildTypes); + + DatasetFieldType publicationType = datasetFieldTypeSvc.add(new DatasetFieldType("publication", DatasetFieldType.FieldType.TEXT, true)); + Set publicationChildTypes = new HashSet<>(); + publicationChildTypes.add(datasetFieldTypeSvc.add(new DatasetFieldType("publicationCitation", DatasetFieldType.FieldType.TEXT, false))); + DatasetFieldType publicationIdTypes = datasetFieldTypeSvc.add(new DatasetFieldType("publicationIDType", DatasetFieldType.FieldType.TEXT, false)); + publicationIdTypes.setAllowControlledVocabulary(true); + publicationIdTypes.setControlledVocabularyValues(Arrays.asList( + // Why aren't these enforced? + new ControlledVocabularyValue(1l, "ark", publicationIdTypes), + new ControlledVocabularyValue(2l, "arXiv", publicationIdTypes), + new ControlledVocabularyValue(3l, "bibcode", publicationIdTypes), + new ControlledVocabularyValue(4l, "doi", publicationIdTypes), + new ControlledVocabularyValue(5l, "ean13", publicationIdTypes), + new ControlledVocabularyValue(6l, "handle", publicationIdTypes) + // Etc. There are more. + )); + publicationChildTypes.add(datasetFieldTypeSvc.add(publicationIdTypes)); + publicationChildTypes.add(datasetFieldTypeSvc.add(new DatasetFieldType("publicationIDNumber", DatasetFieldType.FieldType.TEXT, false))); + DatasetFieldType publicationURLType = new DatasetFieldType("publicationURL", DatasetFieldType.FieldType.URL, false); + publicationURLType.setDisplayFormat("#VALUE"); + publicationChildTypes.add(datasetFieldTypeSvc.add(publicationURLType)); + publicationType.setChildDatasetFieldTypes(publicationChildTypes); + + DatasetFieldType timePeriodCoveredType = datasetFieldTypeSvc.add(new DatasetFieldType("timePeriodCovered", DatasetFieldType.FieldType.NONE, true)); + Set timePeriodCoveredChildTypes = new HashSet<>(); + timePeriodCoveredChildTypes.add(datasetFieldTypeSvc.add(new DatasetFieldType("timePeriodCoveredStart", DatasetFieldType.FieldType.DATE, false))); + timePeriodCoveredChildTypes.add(datasetFieldTypeSvc.add(new DatasetFieldType("timePeriodCoveredEnd", DatasetFieldType.FieldType.DATE, false))); + timePeriodCoveredType.setChildDatasetFieldTypes(timePeriodCoveredChildTypes); + + DatasetFieldType geographicCoverageType = datasetFieldTypeSvc.add(new DatasetFieldType("geographicCoverage", DatasetFieldType.FieldType.TEXT, true)); + Set geographicCoverageChildTypes = new HashSet<>(); + DatasetFieldType countries = datasetFieldTypeSvc.add(new DatasetFieldType("country", DatasetFieldType.FieldType.TEXT, false)); + countries.setAllowControlledVocabulary(true); + countries.setControlledVocabularyValues(Arrays.asList( + // Why aren't these enforced? + new ControlledVocabularyValue(1l, "Afghanistan", countries), + new ControlledVocabularyValue(2l, "Albania", countries) + // And many more countries. + )); + geographicCoverageChildTypes.add(datasetFieldTypeSvc.add(countries)); + geographicCoverageChildTypes.add(datasetFieldTypeSvc.add(new DatasetFieldType("state", DatasetFieldType.FieldType.TEXT, false))); + geographicCoverageChildTypes.add(datasetFieldTypeSvc.add(new DatasetFieldType("city", DatasetFieldType.FieldType.TEXT, false))); + geographicCoverageChildTypes.add(datasetFieldTypeSvc.add(new DatasetFieldType("otherGeographicCoverage", DatasetFieldType.FieldType.TEXT, false))); + geographicCoverageChildTypes.add(datasetFieldTypeSvc.add(new DatasetFieldType("geographicUnit", DatasetFieldType.FieldType.TEXT, false))); + for (DatasetFieldType t : geographicCoverageChildTypes) { + t.setParentDatasetFieldType(geographicCoverageType); + } + geographicCoverageType.setChildDatasetFieldTypes(geographicCoverageChildTypes); + } } From 4430c1137f299bd1707c3e897d021628abcbed80 Mon Sep 17 00:00:00 2001 From: Oliver Bertuch Date: Wed, 28 Jul 2021 16:49:26 +0200 Subject: [PATCH 27/32] refactor(mail): optimize atomicity of MailServiceBeanTest - Refactor with parameterized test, less code duplication - Make mocked values inside BrandingUtilTest overrideable --- .../iq/dataverse/MailServiceBeanTest.java | 117 ++++++------------ .../dataverse/branding/BrandingUtilTest.java | 21 +++- 2 files changed, 51 insertions(+), 87 deletions(-) diff --git a/src/test/java/edu/harvard/iq/dataverse/MailServiceBeanTest.java b/src/test/java/edu/harvard/iq/dataverse/MailServiceBeanTest.java index baeb54f6867..025e3fbb3f7 100644 --- a/src/test/java/edu/harvard/iq/dataverse/MailServiceBeanTest.java +++ b/src/test/java/edu/harvard/iq/dataverse/MailServiceBeanTest.java @@ -1,13 +1,11 @@ package edu.harvard.iq.dataverse; -import edu.harvard.iq.dataverse.branding.BrandingUtil; -import edu.harvard.iq.dataverse.settings.SettingsServiceBean; +import edu.harvard.iq.dataverse.branding.BrandingUtilTest; import edu.harvard.iq.dataverse.util.MailUtil; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.Mock; -import org.mockito.Mockito; -import org.mockito.junit.jupiter.MockitoExtension; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.CsvSource; import javax.mail.internet.InternetAddress; @@ -15,89 +13,44 @@ import static org.junit.jupiter.api.Assertions.*; -@ExtendWith(MockitoExtension.class) class MailServiceBeanTest { - - @Mock - DataverseServiceBean dataverseService; - @Mock - SettingsServiceBean settingsService; - - @Test - void setContactDelegation_withName() { - initBrandingUtilWithRootDataverse(null, null); - - InternetAddress fromAddress = MailUtil.parseSystemAddress("Foo Bar "); - MailServiceBean mailServiceBean = new MailServiceBean(); - try { - mailServiceBean.setContactDelegation("user@example.edu", fromAddress); - assertEquals( - "Foo Bar on behalf of user@example.edu", - fromAddress.getPersonal() - ); - } catch (UnsupportedEncodingException e) { - e.printStackTrace(); - } - } - - @Test - void setContactDelegation_withoutName_fromInstallationName() { - initBrandingUtilWithRootDataverse("LibraScholar Dataverse", null); - - InternetAddress fromAddress = MailUtil.parseSystemAddress("dataverse@dataverse.org"); - MailServiceBean mailServiceBean = new MailServiceBean(); - try { - mailServiceBean.setContactDelegation("user@example.edu", fromAddress); - assertEquals( - "LibraScholar Dataverse on behalf of user@example.edu", - fromAddress.getPersonal() - ); - } catch (UnsupportedEncodingException e) { - e.printStackTrace(); - } + + + /** + * We need to reset the BrandingUtil mocks for every test, as we rely on them being set to default. + */ + @BeforeEach + private void setup() { + BrandingUtilTest.setupMocks(); } - - @Test - void setContactDelegation_withoutName_fromBranding() { - initBrandingUtilWithRootDataverse(null, "LibraScholar"); - - InternetAddress fromAddress = MailUtil.parseSystemAddress("dataverse@dataverse.org"); - MailServiceBean mailServiceBean = new MailServiceBean(); - try { - mailServiceBean.setContactDelegation("user@example.edu", fromAddress); - assertEquals( - "LibraScholar on behalf of user@example.edu", - fromAddress.getPersonal() - ); - } catch (UnsupportedEncodingException e) { - e.printStackTrace(); - } + @AfterAll + private static void tearDown() { + BrandingUtilTest.tearDownMocks(); } - - @Test - void setContactDelegation_withoutName_fromBundle() { - initBrandingUtilWithRootDataverse(null, null); - - InternetAddress fromAddress = MailUtil.parseSystemAddress("dataverse@dataverse.org"); + + @ParameterizedTest + @CsvSource(value = { + // with name in admin mail address + "Foo Bar , NULL, NULL, Foo Bar", + // without name, but installation branding name set + "dataverse@dataverse.org, NULL, LibraScholar Dataverse, LibraScholar Dataverse", + // without name, but root dataverse name available + "dataverse@dataverse.org, NotLibraScholar, NULL, NotLibraScholar", + // without name, without root dataverse name, without installation name -> default to bundle string. + "dataverse@dataverse.org, NULL, NULL, Dataverse Installation Admin" + }, nullValues = {"NULL"}) + void setContactDelegation(String fromMail, String rootDataverseName, String installationName, String expectedStartsWith) { + BrandingUtilTest.setRootDataverseName(rootDataverseName); + BrandingUtilTest.setInstallationName(installationName); + + InternetAddress fromAddress = MailUtil.parseSystemAddress(fromMail); MailServiceBean mailServiceBean = new MailServiceBean(); try { mailServiceBean.setContactDelegation("user@example.edu", fromAddress); - assertEquals( - "Dataverse Installation Admin on behalf of user@example.edu", - fromAddress.getPersonal() - ); + assertTrue(fromAddress.getPersonal().startsWith(expectedStartsWith)); + assertTrue(fromAddress.getPersonal().endsWith(" on behalf of user@example.edu")); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } - - private void initBrandingUtilWithRootDataverse(String installationName, String rootDataverseName) { - Mockito.lenient() - .when(settingsService.getValueForKey(SettingsServiceBean.Key.InstallationName)) - .thenReturn(installationName); - Mockito.lenient() - .when(dataverseService.getRootDataverseName()) - .thenReturn(rootDataverseName); - BrandingUtil.injectServices(dataverseService, settingsService); - } } \ No newline at end of file diff --git a/src/test/java/edu/harvard/iq/dataverse/branding/BrandingUtilTest.java b/src/test/java/edu/harvard/iq/dataverse/branding/BrandingUtilTest.java index 1f8002cc3e8..b3b80397eee 100644 --- a/src/test/java/edu/harvard/iq/dataverse/branding/BrandingUtilTest.java +++ b/src/test/java/edu/harvard/iq/dataverse/branding/BrandingUtilTest.java @@ -24,11 +24,6 @@ public class BrandingUtilTest { - /** - * TODO: these fields might be necessary to expose if someone wants to - * influence the mocking in tests outside this class. Left for - * later exercise if ever necessary. - */ static DataverseServiceBean dataverseSvc; static SettingsServiceBean settingsSvc; static final String DEFAULT_NAME = "LibraScholar"; @@ -50,6 +45,22 @@ public static void setupMocks() { Mockito.when(dataverseSvc.getRootDataverseName()).thenReturn(DEFAULT_NAME); } + /** + * Override default mocked value + * @param installationName + */ + public static void setInstallationName(String installationName) { + Mockito.when(settingsSvc.getValueForKey(SettingsServiceBean.Key.InstallationName)).thenReturn(installationName); + } + + /** + * Override default mocked name + * @param rootDataverseName + */ + public static void setRootDataverseName(String rootDataverseName) { + Mockito.when(dataverseSvc.getRootDataverseName()).thenReturn(rootDataverseName); + } + /** * After using, please free the mocks. Tests need atomicity. */ From 7231a1eeae126aa148200a4479c2780694169a3b Mon Sep 17 00:00:00 2001 From: Oliver Bertuch Date: Fri, 30 Jul 2021 16:32:09 +0200 Subject: [PATCH 28/32] fix(sword): make SwordIT check permissions on root dataverse. --- .../edu/harvard/iq/dataverse/api/SwordIT.java | 34 ++++++++++++++----- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/src/test/java/edu/harvard/iq/dataverse/api/SwordIT.java b/src/test/java/edu/harvard/iq/dataverse/api/SwordIT.java index 9615eead8fd..ea6709cb915 100644 --- a/src/test/java/edu/harvard/iq/dataverse/api/SwordIT.java +++ b/src/test/java/edu/harvard/iq/dataverse/api/SwordIT.java @@ -5,7 +5,9 @@ import com.jayway.restassured.response.Response; import edu.harvard.iq.dataverse.GlobalId; import edu.harvard.iq.dataverse.api.datadeposit.SwordConfigurationImpl; + import java.util.List; +import java.util.Map; import java.util.logging.Logger; import static javax.ws.rs.core.Response.Status.BAD_REQUEST; import static javax.ws.rs.core.Response.Status.CREATED; @@ -25,6 +27,7 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; +import static org.junit.Assume.assumeTrue; import org.junit.BeforeClass; import org.junit.Test; @@ -44,6 +47,9 @@ public class SwordIT { private static String superuser; private static final String rootDataverseAlias = "root"; private static String apiTokenSuperuser; + + private static final String rootDvNotPublished = "Many of these SWORD tests require that the root dataverse collection has been published. Publish the root dataverse and then re-run these tests."; + private static final String rootDvLackPermissions = "Many of these SWORD tests require you set permissions for the root dataverse collection: \"Anyone with a Dataverse account can add sub dataverses and datasets\" + curator role for new datasets. Please set and re-run these tests."; @BeforeClass public static void setUpClass() { @@ -53,20 +59,32 @@ public static void setUpClass() { RestAssured.baseURI = "https://dev1.dataverse.org"; } Response createUser = UtilIT.createRandomUser(); - createUser.prettyPrint(); + //createUser.prettyPrint(); superuser = UtilIT.getUsernameFromResponse(createUser); apiTokenSuperuser = UtilIT.getApiTokenFromResponse(createUser); String apitoken = UtilIT.getApiTokenFromResponse(createUser); UtilIT.makeSuperUser(superuser).then().assertThat().statusCode(OK.getStatusCode()); + + // check that root dataverse has been released Response checkRootDataverse = UtilIT.listDatasetsViaSword(rootDataverseAlias, apitoken); - checkRootDataverse.prettyPrint(); - checkRootDataverse.then().assertThat() - .statusCode(OK.getStatusCode()); - boolean rootDataverseHasBeenReleased = checkRootDataverse.getBody().xmlPath().getBoolean("feed.dataverseHasBeenReleased"); - if (!rootDataverseHasBeenReleased) { - logger.info("Many of these SWORD tests require that the root dataverse has been published. Publish the root dataverse and then re-run these tests."); - System.exit(666); + //checkRootDataverse.prettyPrint(); + checkRootDataverse.then().assertThat().statusCode(OK.getStatusCode()); + assumeTrue(rootDvNotPublished, checkRootDataverse.getBody().xmlPath().getBoolean("feed.dataverseHasBeenReleased")); + + // check that root dataverse has permissions for any user set to dataverse + dataset creator (not admin, not curator!) + checkRootDataverse = UtilIT.getRoleAssignmentsOnDataverse(rootDataverseAlias, apiTokenSuperuser); + //checkRootDataverse.prettyPrint(); + checkRootDataverse.then().assertThat().statusCode(OK.getStatusCode()); + List> rootDatavereRoles = checkRootDataverse.getBody().jsonPath().getList("data"); + boolean properPermissionsSet = false; + for (Map assignment : rootDatavereRoles) { + if (assignment.get("assignee").equals(":authenticated-users") && + assignment.get("_roleAlias").equals("fullContributor")) { + properPermissionsSet = true; + break; + } } + assumeTrue(rootDvLackPermissions, properPermissionsSet); } From 895c21fc645cad081ad3ad9caa56aab2c58fa0bc Mon Sep 17 00:00:00 2001 From: Oliver Bertuch Date: Fri, 30 Jul 2021 19:18:53 +0200 Subject: [PATCH 29/32] build(deps): move to SWORD2-server lib 1.2.0 --- pom.xml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 005c209edcb..7c16cc0a463 100644 --- a/pom.xml +++ b/pom.xml @@ -113,6 +113,7 @@ Local repository for hosting jars not available from network repositories. file://${project.basedir}/local_lib + @@ -272,7 +274,7 @@ io.gdcc sword2-server - 1.2.0-SNAPSHOT + 1.2.0 From 71bfef0a7d3e9c38621fc19bbdd66e89d4bfb3b0 Mon Sep 17 00:00:00 2001 From: Oliver Bertuch Date: Fri, 30 Jul 2021 19:23:16 +0200 Subject: [PATCH 30/32] build(deps): make Commons Compress convergent and update - We and other libs use Commons Compress - Update to 1.21 from 1.19 resolves some minor sec issues (3 CVEs) - Make the dependency converge to ONE version. https://commons.apache.org/proper/commons-compress/security-reports.html --- pom.xml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 7c16cc0a463..b4bd114c128 100644 --- a/pom.xml +++ b/pom.xml @@ -193,6 +193,12 @@ commons-io ${commons.io.version} + + + org.apache.commons + commons-compress + 1.21 + @@ -611,7 +617,7 @@ org.apache.commons commons-compress - 1.19 + org.duracloud From 85c91aaa735f8616352956efe57121bf05d50d7b Mon Sep 17 00:00:00 2001 From: Oliver Bertuch Date: Fri, 30 Jul 2021 19:40:34 +0200 Subject: [PATCH 31/32] build(deps): update OCPSoft Rewrite Servlet IQSS/dataverse-security#38 --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index b4bd114c128..c8cee2aeca3 100644 --- a/pom.xml +++ b/pom.xml @@ -516,12 +516,12 @@ org.ocpsoft.rewrite rewrite-servlet - 3.4.2.Final + 3.5.0.Final org.ocpsoft.rewrite rewrite-config-prettyfaces - 3.4.2.Final + 3.5.0.Final edu.ucsb.nceas From 306ee5873313c5f1e73cc39c44a0bf8889ab2c3a Mon Sep 17 00:00:00 2001 From: Oliver Bertuch Date: Fri, 30 Jul 2021 19:44:31 +0200 Subject: [PATCH 32/32] chore: remove local_lib/org/swordapp as now retrieved from Maven Central --- .../1.1-SNAPSHOT/_maven.repositories | 7 - .../1.1-SNAPSHOT/maven-metadata-local.xml | 42 ---- .../sword2-server-1.1-SNAPSHOT-classes.jar | Bin 69826 -> 0 bytes ...sword2-server-1.1-SNAPSHOT-classes.jar.md5 | 1 - ...word2-server-1.1-SNAPSHOT-classes.jar.sha1 | 1 - .../sword2-server-1.1-SNAPSHOT-javadoc.jar | Bin 239336 -> 0 bytes ...sword2-server-1.1-SNAPSHOT-javadoc.jar.md5 | 1 - ...word2-server-1.1-SNAPSHOT-javadoc.jar.sha1 | 1 - .../sword2-server-1.1-SNAPSHOT-sources.jar | Bin 40917 -> 0 bytes ...sword2-server-1.1-SNAPSHOT-sources.jar.md5 | 1 - ...word2-server-1.1-SNAPSHOT-sources.jar.sha1 | 1 - .../sword2-server-1.1-SNAPSHOT.pom | 193 ------------------ .../sword2-server-1.1-SNAPSHOT.pom.md5 | 1 - .../sword2-server-1.1-SNAPSHOT.pom.sha1 | 1 - .../sword2-server-1.1-SNAPSHOT.war | Bin 72550 -> 0 bytes .../sword2-server-1.1-SNAPSHOT.war.md5 | 1 - .../sword2-server-1.1-SNAPSHOT.war.sha1 | 1 - 17 files changed, 252 deletions(-) delete mode 100644 local_lib/org/swordapp/sword2-server/1.1-SNAPSHOT/_maven.repositories delete mode 100644 local_lib/org/swordapp/sword2-server/1.1-SNAPSHOT/maven-metadata-local.xml delete mode 100644 local_lib/org/swordapp/sword2-server/1.1-SNAPSHOT/sword2-server-1.1-SNAPSHOT-classes.jar delete mode 100644 local_lib/org/swordapp/sword2-server/1.1-SNAPSHOT/sword2-server-1.1-SNAPSHOT-classes.jar.md5 delete mode 100644 local_lib/org/swordapp/sword2-server/1.1-SNAPSHOT/sword2-server-1.1-SNAPSHOT-classes.jar.sha1 delete mode 100644 local_lib/org/swordapp/sword2-server/1.1-SNAPSHOT/sword2-server-1.1-SNAPSHOT-javadoc.jar delete mode 100644 local_lib/org/swordapp/sword2-server/1.1-SNAPSHOT/sword2-server-1.1-SNAPSHOT-javadoc.jar.md5 delete mode 100644 local_lib/org/swordapp/sword2-server/1.1-SNAPSHOT/sword2-server-1.1-SNAPSHOT-javadoc.jar.sha1 delete mode 100644 local_lib/org/swordapp/sword2-server/1.1-SNAPSHOT/sword2-server-1.1-SNAPSHOT-sources.jar delete mode 100644 local_lib/org/swordapp/sword2-server/1.1-SNAPSHOT/sword2-server-1.1-SNAPSHOT-sources.jar.md5 delete mode 100644 local_lib/org/swordapp/sword2-server/1.1-SNAPSHOT/sword2-server-1.1-SNAPSHOT-sources.jar.sha1 delete mode 100644 local_lib/org/swordapp/sword2-server/1.1-SNAPSHOT/sword2-server-1.1-SNAPSHOT.pom delete mode 100644 local_lib/org/swordapp/sword2-server/1.1-SNAPSHOT/sword2-server-1.1-SNAPSHOT.pom.md5 delete mode 100644 local_lib/org/swordapp/sword2-server/1.1-SNAPSHOT/sword2-server-1.1-SNAPSHOT.pom.sha1 delete mode 100644 local_lib/org/swordapp/sword2-server/1.1-SNAPSHOT/sword2-server-1.1-SNAPSHOT.war delete mode 100644 local_lib/org/swordapp/sword2-server/1.1-SNAPSHOT/sword2-server-1.1-SNAPSHOT.war.md5 delete mode 100644 local_lib/org/swordapp/sword2-server/1.1-SNAPSHOT/sword2-server-1.1-SNAPSHOT.war.sha1 diff --git a/local_lib/org/swordapp/sword2-server/1.1-SNAPSHOT/_maven.repositories b/local_lib/org/swordapp/sword2-server/1.1-SNAPSHOT/_maven.repositories deleted file mode 100644 index cee0e46151c..00000000000 --- a/local_lib/org/swordapp/sword2-server/1.1-SNAPSHOT/_maven.repositories +++ /dev/null @@ -1,7 +0,0 @@ -#NOTE: This is an internal implementation file, its format can be changed without prior notice. -#Tue Oct 21 10:23:39 EDT 2014 -sword2-server-1.1-SNAPSHOT-sources.jar>= -sword2-server-1.1-SNAPSHOT-classes.jar>= -sword2-server-1.1-SNAPSHOT.pom>= -sword2-server-1.1-SNAPSHOT-javadoc.jar>= -sword2-server-1.1-SNAPSHOT.war>= diff --git a/local_lib/org/swordapp/sword2-server/1.1-SNAPSHOT/maven-metadata-local.xml b/local_lib/org/swordapp/sword2-server/1.1-SNAPSHOT/maven-metadata-local.xml deleted file mode 100644 index 458dda3db70..00000000000 --- a/local_lib/org/swordapp/sword2-server/1.1-SNAPSHOT/maven-metadata-local.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - org.swordapp - sword2-server - 1.1-SNAPSHOT - - - true - - 20141021142339 - - - javadoc - jar - 1.1-SNAPSHOT - 20141021142339 - - - sources - jar - 1.1-SNAPSHOT - 20141021142339 - - - classes - jar - 1.1-SNAPSHOT - 20141021142339 - - - war - 1.1-SNAPSHOT - 20141021142339 - - - pom - 1.1-SNAPSHOT - 20141021142339 - - - - diff --git a/local_lib/org/swordapp/sword2-server/1.1-SNAPSHOT/sword2-server-1.1-SNAPSHOT-classes.jar b/local_lib/org/swordapp/sword2-server/1.1-SNAPSHOT/sword2-server-1.1-SNAPSHOT-classes.jar deleted file mode 100644 index 20c7c258cb5ba1566a3ce41b186285c1a27b5064..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 69826 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୼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 diff --git a/local_lib/org/swordapp/sword2-server/1.1-SNAPSHOT/sword2-server-1.1-SNAPSHOT-sources.jar.md5 b/local_lib/org/swordapp/sword2-server/1.1-SNAPSHOT/sword2-server-1.1-SNAPSHOT-sources.jar.md5 deleted file mode 100644 index 727dd333296..00000000000 --- a/local_lib/org/swordapp/sword2-server/1.1-SNAPSHOT/sword2-server-1.1-SNAPSHOT-sources.jar.md5 +++ /dev/null @@ -1 +0,0 @@ -669fc3fc7b9e971f3fb089ea54fb4f93 diff --git a/local_lib/org/swordapp/sword2-server/1.1-SNAPSHOT/sword2-server-1.1-SNAPSHOT-sources.jar.sha1 b/local_lib/org/swordapp/sword2-server/1.1-SNAPSHOT/sword2-server-1.1-SNAPSHOT-sources.jar.sha1 deleted file mode 100644 index f52de46fbce..00000000000 --- a/local_lib/org/swordapp/sword2-server/1.1-SNAPSHOT/sword2-server-1.1-SNAPSHOT-sources.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -83b428fe09330a9a794b5d754b89f03cb9d78cd9 diff --git a/local_lib/org/swordapp/sword2-server/1.1-SNAPSHOT/sword2-server-1.1-SNAPSHOT.pom b/local_lib/org/swordapp/sword2-server/1.1-SNAPSHOT/sword2-server-1.1-SNAPSHOT.pom deleted file mode 100644 index 4a13f40a43b..00000000000 --- a/local_lib/org/swordapp/sword2-server/1.1-SNAPSHOT/sword2-server-1.1-SNAPSHOT.pom +++ /dev/null @@ -1,193 +0,0 @@ - - - - 4.0.0 - org.swordapp - sword2-server - 1.1-SNAPSHOT - war - - - - - org.sonatype.oss - oss-parent - 7 - - - SWORD v2 :: Common Server Library - - Common Server Library with interfaces to be implemented by servers - wishing to provide SWORD v2 support - - http://www.swordapp.org/ - - - - The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - repo - - - - - git@github.com:swordapp/JavaServer2.0.git - scm:git:git@github.com:swordapp/JavaServer2.0.git - scm:git:git@github.com:swordapp/JavaServer2.0.git - - - - - Richard Jones - swordv2@oneoverzero.com - - - - - - - maven-release-plugin - - - org.apache.maven.plugins - maven-compiler-plugin - 2.3.2 - - 6 - 6 - - - - org.apache.maven.plugins - maven-jar-plugin - - - - - true - - - true - - - - - - - org.apache.maven.plugins - maven-source-plugin - - - default - package - - jar - - - - - - org.apache.maven.plugins - maven-javadoc-plugin - - - default - package - - jar - - - - - - - org.apache.maven.plugins - maven-war-plugin - - true - WEB-INF/lib/*.jar - WEB-INF/lib/*.jar - - - true - ${basedir}/src/main/webapp - - WEB-INF/web.xml - - - - - - - prepare-package - - - - - org.apache.maven.plugins - maven-gpg-plugin - - - sign-artifacts - verify - - - - - - - - - - - - - javax.servlet - servlet-api - 2.4 - - - log4j - log4j - 1.2.15 - - - javax.mail - mail - - - javax.jms - jms - - - com.sun.jdmk - jmxtools - - - com.sun.jmx - jmxri - - - - - org.apache.abdera - abdera-client - 1.1.1 - - - commons-fileupload - commons-fileupload - 1.2.1 - - - com.hp.hpl.jena - jena - 2.6.4 - - - xom - xom - 1.1 - - - diff --git a/local_lib/org/swordapp/sword2-server/1.1-SNAPSHOT/sword2-server-1.1-SNAPSHOT.pom.md5 b/local_lib/org/swordapp/sword2-server/1.1-SNAPSHOT/sword2-server-1.1-SNAPSHOT.pom.md5 deleted file mode 100644 index 647a3d3d4b6..00000000000 --- a/local_lib/org/swordapp/sword2-server/1.1-SNAPSHOT/sword2-server-1.1-SNAPSHOT.pom.md5 +++ /dev/null @@ -1 +0,0 @@ -a5fd2dc5c41ae4840f20181f7ae7e740 diff --git a/local_lib/org/swordapp/sword2-server/1.1-SNAPSHOT/sword2-server-1.1-SNAPSHOT.pom.sha1 b/local_lib/org/swordapp/sword2-server/1.1-SNAPSHOT/sword2-server-1.1-SNAPSHOT.pom.sha1 deleted file mode 100644 index 67c9b409cf7..00000000000 --- a/local_lib/org/swordapp/sword2-server/1.1-SNAPSHOT/sword2-server-1.1-SNAPSHOT.pom.sha1 +++ /dev/null @@ -1 +0,0 @@ -b1dd4e9397d4781aa5ab9abb554cc090448fd467 diff --git a/local_lib/org/swordapp/sword2-server/1.1-SNAPSHOT/sword2-server-1.1-SNAPSHOT.war b/local_lib/org/swordapp/sword2-server/1.1-SNAPSHOT/sword2-server-1.1-SNAPSHOT.war deleted file mode 100644 index c4ff24feca8ecf46a1ac79bcb99219ecc3034703..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 72550 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 WfCcNfl{W*BD!^8836KQ@^#1@+Gki$^ diff --git a/local_lib/org/swordapp/sword2-server/1.1-SNAPSHOT/sword2-server-1.1-SNAPSHOT.war.md5 b/local_lib/org/swordapp/sword2-server/1.1-SNAPSHOT/sword2-server-1.1-SNAPSHOT.war.md5 deleted file mode 100644 index f2f1da69931..00000000000 --- a/local_lib/org/swordapp/sword2-server/1.1-SNAPSHOT/sword2-server-1.1-SNAPSHOT.war.md5 +++ /dev/null @@ -1 +0,0 @@ -07ee3115d24eab7ad772bc5997ea4a36 diff --git a/local_lib/org/swordapp/sword2-server/1.1-SNAPSHOT/sword2-server-1.1-SNAPSHOT.war.sha1 b/local_lib/org/swordapp/sword2-server/1.1-SNAPSHOT/sword2-server-1.1-SNAPSHOT.war.sha1 deleted file mode 100644 index c86067348f9..00000000000 --- a/local_lib/org/swordapp/sword2-server/1.1-SNAPSHOT/sword2-server-1.1-SNAPSHOT.war.sha1 +++ /dev/null @@ -1 +0,0 @@ -a611e672715f0c08e737e3bdd0855458984b1125