From e9bd233635fd802e07f8c86b5faee3ad051a90d8 Mon Sep 17 00:00:00 2001 From: anhefti Date: Tue, 14 Jan 2020 16:25:37 +0100 Subject: [PATCH] more tests --- .../sebconfig/impl/ExamConfigServiceImpl.java | 33 --------- .../sebconfig/impl/ExamConfigXMLParser.java | 46 ++++++++++++- .../integration/UseCasesIntegrationTest.java | 68 +++++++++++++++++-- 3 files changed, 107 insertions(+), 40 deletions(-) diff --git a/src/main/java/ch/ethz/seb/sebserver/webservice/servicelayer/sebconfig/impl/ExamConfigServiceImpl.java b/src/main/java/ch/ethz/seb/sebserver/webservice/servicelayer/sebconfig/impl/ExamConfigServiceImpl.java index 7c872d1a..36bcf565 100644 --- a/src/main/java/ch/ethz/seb/sebserver/webservice/servicelayer/sebconfig/impl/ExamConfigServiceImpl.java +++ b/src/main/java/ch/ethz/seb/sebserver/webservice/servicelayer/sebconfig/impl/ExamConfigServiceImpl.java @@ -13,11 +13,8 @@ import java.io.InputStream; import java.io.OutputStream; import java.io.PipedInputStream; import java.io.PipedOutputStream; -import java.util.Arrays; import java.util.Collection; -import java.util.HashSet; import java.util.List; -import java.util.Set; import java.util.concurrent.Future; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -57,36 +54,6 @@ public class ExamConfigServiceImpl implements ExamConfigService { private static final Logger log = LoggerFactory.getLogger(ExamConfigServiceImpl.class); - // comma separated list of SEB exam config keys that can be ignored on imports - // See: https://jira.let.ethz.ch/browse/SEBSERV-100 - private static final Set SEB_EXAM_CONFIG_KEYS_TO_IGNORE = new HashSet<>(Arrays.asList( - - // These keys don't exist anymore: - "examConfigKeyContainedKeys", - "allowWLAN", - "insideSebEnableEnableNetworkConnectionSelector", - "ignoreQuitPassword", - "oskBehavior", - "outsideSebEnableChangeAPassword", - "outsideSebEnableEaseOfAccess", - "outsideSebEnableLockThisComputer", - "outsideSebEnableLogOff", - "outsideSebEnableShutDownurlFilterRegex", - "outsideSebEnableStartTaskManager", - "outsideSebEnableSwitchUser", - "outsideSebEnableVmWareClientShade", - "enableURLContentFilter", - "enableURLFilter", - "prohibitedProcesses.windowHandlingProcess", - "backgroundOpenSEBConfig", - - // These keys are only used internally - "urlFilterRegex", - "urlFilterTrustedContent", - "blacklistURLFilter", - "whitelistURLFilter", - "URLFilterIgnoreList")); - private final ExamConfigIO examConfigIO; private final ConfigurationAttributeDAO configurationAttributeDAO; private final ExamConfigurationMapDAO examConfigurationMapDAO; diff --git a/src/main/java/ch/ethz/seb/sebserver/webservice/servicelayer/sebconfig/impl/ExamConfigXMLParser.java b/src/main/java/ch/ethz/seb/sebserver/webservice/servicelayer/sebconfig/impl/ExamConfigXMLParser.java index ad776b42..de29712d 100644 --- a/src/main/java/ch/ethz/seb/sebserver/webservice/servicelayer/sebconfig/impl/ExamConfigXMLParser.java +++ b/src/main/java/ch/ethz/seb/sebserver/webservice/servicelayer/sebconfig/impl/ExamConfigXMLParser.java @@ -34,6 +34,46 @@ public class ExamConfigXMLParser extends DefaultHandler { private static final Logger log = LoggerFactory.getLogger(ExamConfigXMLParser.class); + // comma separated list of SEB exam config keys that can be ignored on imports + // See: https://jira.let.ethz.ch/browse/SEBSERV-100 + private static final Set SEB_EXAM_CONFIG_KEYS_TO_IGNORE = new HashSet<>(Arrays.asList( + // SEB Server specific + "sebMode", + "sebServerFallback", + "sebServerURL", + + // Obsolete on SEB Server + "startURL", + "startURLAllowDeepLink", + "startURLAppendQueryParameter", + + // These keys don't exist anymore: + "examConfigKeyContainedKeys", + "allowWLAN", + "insideSebEnableEnableNetworkConnectionSelector", + "ignoreQuitPassword", + "oskBehavior", + "outsideSebEnableChangeAPassword", + "outsideSebEnableEaseOfAccess", + "outsideSebEnableLockThisComputer", + "outsideSebEnableLogOff", + "outsideSebEnableShutDownurlFilterRegex", + "outsideSebEnableStartTaskManager", + "outsideSebEnableSwitchUser", + "outsideSebEnableVmWareClientShade", + "enableURLContentFilter", + "enableURLFilter", + "prohibitedProcesses.windowHandlingProcess", + "permittedProcesses.windowHandlingProcess", + "backgroundOpenSEBConfig", + + // These keys are only used internally + "urlFilterRegex", + "urlFilterTrustedContent", + "blacklistURLFilter", + "whitelistURLFilter", + "URLFilterIgnoreList")); + private static final Set VALUE_ELEMENTS = new HashSet<>(Arrays.asList( Constants.XML_PLIST_BOOLEAN_FALSE, Constants.XML_PLIST_BOOLEAN_TRUE, @@ -381,7 +421,11 @@ public class ExamConfigXMLParser extends DefaultHandler { return handleKioskMode(name, listIndex, value); } - log.warn("Unknown attribute. name={} value={}", name, value); + if (SEB_EXAM_CONFIG_KEYS_TO_IGNORE.contains(name)) { + log.debug("Black-listed attribute. name={} value={}", name, value); + } else { + log.warn("Unknown attribute. name={} value={}", name, value); + } return null; } diff --git a/src/test/java/ch/ethz/seb/sebserver/gui/integration/UseCasesIntegrationTest.java b/src/test/java/ch/ethz/seb/sebserver/gui/integration/UseCasesIntegrationTest.java index 2ca7c7e2..065b624a 100644 --- a/src/test/java/ch/ethz/seb/sebserver/gui/integration/UseCasesIntegrationTest.java +++ b/src/test/java/ch/ethz/seb/sebserver/gui/integration/UseCasesIntegrationTest.java @@ -56,9 +56,12 @@ import ch.ethz.seb.sebserver.gbl.model.institution.LmsSetup.LmsType; import ch.ethz.seb.sebserver.gbl.model.sebconfig.Configuration; import ch.ethz.seb.sebserver.gbl.model.sebconfig.ConfigurationAttribute; import ch.ethz.seb.sebserver.gbl.model.sebconfig.ConfigurationNode; +import ch.ethz.seb.sebserver.gbl.model.sebconfig.ConfigurationNode.ConfigurationStatus; +import ch.ethz.seb.sebserver.gbl.model.sebconfig.ConfigurationNode.ConfigurationType; import ch.ethz.seb.sebserver.gbl.model.sebconfig.ConfigurationTableValues; import ch.ethz.seb.sebserver.gbl.model.sebconfig.ConfigurationTableValues.TableValue; import ch.ethz.seb.sebserver.gbl.model.sebconfig.ConfigurationValue; +import ch.ethz.seb.sebserver.gbl.model.sebconfig.Orientation; import ch.ethz.seb.sebserver.gbl.model.sebconfig.SebClientConfig; import ch.ethz.seb.sebserver.gbl.model.sebconfig.View; import ch.ethz.seb.sebserver.gbl.model.user.PasswordChange; @@ -112,9 +115,12 @@ import ch.ethz.seb.sebserver.gui.service.remote.webservice.api.seb.examconfig.Ge import ch.ethz.seb.sebserver.gui.service.remote.webservice.api.seb.examconfig.GetOrientationPage; import ch.ethz.seb.sebserver.gui.service.remote.webservice.api.seb.examconfig.GetOrientations; import ch.ethz.seb.sebserver.gui.service.remote.webservice.api.seb.examconfig.GetViewList; +import ch.ethz.seb.sebserver.gui.service.remote.webservice.api.seb.examconfig.GetViewPage; +import ch.ethz.seb.sebserver.gui.service.remote.webservice.api.seb.examconfig.GetViews; import ch.ethz.seb.sebserver.gui.service.remote.webservice.api.seb.examconfig.ImportExamConfigOnExistingConfig; import ch.ethz.seb.sebserver.gui.service.remote.webservice.api.seb.examconfig.ImportNewExamConfig; import ch.ethz.seb.sebserver.gui.service.remote.webservice.api.seb.examconfig.NewExamConfig; +import ch.ethz.seb.sebserver.gui.service.remote.webservice.api.seb.examconfig.SaveExamConfig; import ch.ethz.seb.sebserver.gui.service.remote.webservice.api.seb.examconfig.SaveExamConfigHistory; import ch.ethz.seb.sebserver.gui.service.remote.webservice.api.seb.examconfig.SaveExamConfigTableValues; import ch.ethz.seb.sebserver.gui.service.remote.webservice.api.seb.examconfig.SaveExamConfigValue; @@ -1426,18 +1432,68 @@ public class UseCasesIntegrationTest extends GuiIntegrationTest { // Use Case 13: Login as examAdmin2 and use newly created configuration // - change configuration status to "Ready to Use" public void testUsecase13() throws IOException { + final RestServiceImpl restService = createRestServiceForUser( + "examAdmin2", + "examAdmin2", + new GetConfigAttributes(), + new GetExamConfigNodePage(), + new SaveExamConfig()); + // get configuration from page + final ConfigurationNode config = restService + .getBuilder(GetExamConfigNodePage.class) + .call() + .getOrThrow().content + .get(0); + assertEquals("New Exam Config", config.name); + + final ConfigurationNode newConfig = new ConfigurationNode( + config.id, + config.institutionId, + config.templateId, + config.name, + config.description, + ConfigurationType.EXAM_CONFIG, + config.owner, + ConfigurationStatus.READY_TO_USE); + + final ConfigurationNode savedConfig = restService + .getBuilder(SaveExamConfig.class) + .withBody(newConfig) + .call() + .getOrThrow(); + + assertTrue(savedConfig.status == ConfigurationStatus.READY_TO_USE); } @Test - @Order(14) + @Order(15) // ************************************* - // Use Case 14: Login as examAdmin2 and use newly created configuration - // - create template from it - // - get all templates - // - check newly created template - public void testUsecase14() throws IOException { + // Use Case 15: Login as examAdmin2 and get views and orientations + // - test Views API + public void testUsecase15() throws IOException { + final RestServiceImpl restService = createRestServiceForUser( + "examAdmin2", + "examAdmin2", + new GetViews(), + new GetViewPage(), + new GetOrientationPage(), + new GetOrientations()); + final List views = restService + .getBuilder(GetViews.class) + .call() + .getOrThrow(); + + assertNotNull(views); + assertTrue(views.size() == 11); + + final List orientations = restService + .getBuilder(GetOrientations.class) + .call() + .getOrThrow(); + + assertNotNull(orientations); } }