diff --git a/rm-server/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/action/recorded-version-config.get.json.ftl b/rm-server/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/action/recorded-version-config.get.json.ftl index 5c393ba6b3..fef4721616 100644 --- a/rm-server/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/action/recorded-version-config.get.json.ftl +++ b/rm-server/config/alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/action/recorded-version-config.get.json.ftl @@ -7,7 +7,7 @@ <#list recordableVersions as recordableVersion> { "policy": "${recordableVersion.policy}", - "selected": ${recordableVersion.selected?c} + "selected": "${recordableVersion.selected?string("true", "false")}" }<#if recordableVersion_has_next>, ] diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/slingshot/RecordedVersionConfigPost.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/slingshot/RecordedVersionConfigPost.java index 6ff7d05f8f..77812a89d8 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/slingshot/RecordedVersionConfigPost.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/slingshot/RecordedVersionConfigPost.java @@ -43,7 +43,7 @@ import org.springframework.extensions.webscripts.WebScriptRequest; public class RecordedVersionConfigPost extends AbstractRmWebScript implements RecordableVersionModel { // Constant for recorded version parameter - private static final String RECORDED_VERSION = "recordedVersion"; + public static final String RECORDED_VERSION = "recordedVersion"; /** * @see org.alfresco.web.scripts.DeclarativeWebScript#executeImpl(org.alfresco.web.scripts.WebScriptRequest, org.alfresco.web.scripts.Status, org.alfresco.web.scripts.Cache) diff --git a/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/recorded/version/config/BaseRecordedVersionConfigTest.java b/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/recorded/version/config/BaseRecordedVersionConfigTest.java new file mode 100644 index 0000000000..80d0d1c6e0 --- /dev/null +++ b/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/recorded/version/config/BaseRecordedVersionConfigTest.java @@ -0,0 +1,53 @@ +/* + * Copyright (C) 2005-2014 Alfresco Software Limited. + * + * This file is part of Alfresco + * + * Alfresco is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Alfresco is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + */ +package org.alfresco.module.org_alfresco_module_rm.recorded.version.config; + +import java.util.Map; + +import org.alfresco.module.org_alfresco_module_rm.test.util.BaseWebScriptUnitTest; +import org.alfresco.module.org_alfresco_module_rm.version.RecordableVersionModel; +import org.alfresco.service.cmr.repository.NodeRef; + +/** + * Base test class for the recorded version config tests + * + * @author Tuna Aksoy + * @since 2.3 + */ +public abstract class BaseRecordedVersionConfigTest extends BaseWebScriptUnitTest implements RecordableVersionModel +{ + /** Recorded version config web script root folder */ + protected static final String RECORDED_VERSION_CONFIG_WEBSCRIPT_ROOT = "alfresco/templates/webscripts/org/alfresco/slingshot/documentlibrary/action/"; + + /** Node ref for test document */ + protected NodeRef testdoc; + + /** setup web script parameters */ + protected Map buildParameters() + { + testdoc = generateCmContent("testdoc.txt"); + + return buildParameters + ( + "store_type", testdoc.getStoreRef().getProtocol(), + "store_id", testdoc.getStoreRef().getIdentifier(), + "id", testdoc.getId() + ); + } +} diff --git a/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/recorded/version/config/RecordedVersionConfigGetTest.java b/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/recorded/version/config/RecordedVersionConfigGetTest.java new file mode 100644 index 0000000000..cc220ce540 --- /dev/null +++ b/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/recorded/version/config/RecordedVersionConfigGetTest.java @@ -0,0 +1,114 @@ +/* + * Copyright (C) 2005-2014 Alfresco Software Limited. + * + * This file is part of Alfresco + * + * Alfresco is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Alfresco is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + */ +package org.alfresco.module.org_alfresco_module_rm.recorded.version.config; + +import static org.junit.Assert.assertNotNull; +import static org.mockito.Mockito.doReturn; +import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertTrue; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +import org.alfresco.module.org_alfresco_module_rm.script.slingshot.RecordedVersionConfigGet; +import org.alfresco.module.org_alfresco_module_rm.version.RecordableVersionPolicy; +import org.json.JSONArray; +import org.json.JSONObject; +import org.junit.Test; +import org.mockito.InjectMocks; +import org.springframework.extensions.webscripts.DeclarativeWebScript; + +/** + * Recorded Version Config REST API GET implementation unit test. + * + * @author Tuna Aksoy + * @since 2.3 + */ +public class RecordedVersionConfigGetTest extends BaseRecordedVersionConfigTest +{ + /** RecordedVersionConfigGet webscript instance */ + protected @InjectMocks RecordedVersionConfigGet webScript; + + /** + * @see org.alfresco.module.org_alfresco_module_rm.recorded.version.config.BaseRecordedVersionConfigTest#getWebScript() + */ + @Override + protected DeclarativeWebScript getWebScript() + { + return webScript; + } + + /** + * @see org.alfresco.module.org_alfresco_module_rm.recorded.version.config.BaseRecordedVersionConfigTest#getWebScriptTemplate() + */ + @Override + protected String getWebScriptTemplate() + { + return RECORDED_VERSION_CONFIG_WEBSCRIPT_ROOT + "recorded-version-config.get.json.ftl"; + } + + @Test + public void getRecordedVersionConfig() throws Exception + { + // Build parameters + Map parameters = buildParameters(); + + // Test document should not have any recordable version policy set + doReturn(null).when(mockedNodeService).getProperty(testdoc, PROP_RECORDABLE_VERSION_POLICY); + + // execute web script + JSONObject json = executeJSONWebScript(parameters); + + // Do checks + assertNotNull(json); + + assertTrue(json.has("data")); + JSONObject data = json.getJSONObject("data"); + assertNotNull(data); + + assertTrue(data.has("recordableVersions")); + JSONArray recordableVersions = data.getJSONArray("recordableVersions"); + assertNotNull(recordableVersions); + assertEquals(recordableVersions.length(), 3); + + List policies = new ArrayList(); + boolean isSelected = false; + int selectedOnce = 0; + for (int i = 0; i < recordableVersions.length(); i++) + { + JSONObject jsonObject = recordableVersions.getJSONObject(i); + String policy = jsonObject.getString("policy"); + policies.add(RecordableVersionPolicy.valueOf(policy)); + boolean selected = Boolean.valueOf(jsonObject.getString("selected")).booleanValue(); + if (selected) + { + isSelected = true; + selectedOnce++; + } + } + assertEquals(policies, Arrays.asList(RecordableVersionPolicy.values())); + assertTrue(isSelected); + assertEquals(selectedOnce, 1); + + // Test document should still not have any recordable version policy set + doReturn(null).when(mockedNodeService).getProperty(testdoc, PROP_RECORDABLE_VERSION_POLICY); + } +} diff --git a/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/recorded/version/config/RecordedVersionConfigPostTest.java b/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/recorded/version/config/RecordedVersionConfigPostTest.java new file mode 100644 index 0000000000..7c19af8ee5 --- /dev/null +++ b/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/recorded/version/config/RecordedVersionConfigPostTest.java @@ -0,0 +1,104 @@ +/* + * Copyright (C) 2005-2014 Alfresco Software Limited. + * + * This file is part of Alfresco + * + * Alfresco is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Alfresco is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + */ +package org.alfresco.module.org_alfresco_module_rm.recorded.version.config; + +import static org.junit.Assert.assertNotNull; +import static org.mockito.Mockito.doReturn; +import static org.testng.Assert.assertEquals; + +import java.util.Map; + +import org.alfresco.module.org_alfresco_module_rm.script.slingshot.RecordedVersionConfigPost; +import org.alfresco.module.org_alfresco_module_rm.version.RecordableVersionPolicy; +import org.json.JSONObject; +import org.junit.Test; +import org.mockito.InjectMocks; +import org.springframework.extensions.webscripts.DeclarativeWebScript; + +/** + * Recorded Version Config REST API POST implementation unit test. + * + * @author Tuna Aksoy + * @since 2.3 + */ +public class RecordedVersionConfigPostTest extends BaseRecordedVersionConfigTest +{ + /** RecordedVersionConfigPost webscript instance */ + protected @InjectMocks RecordedVersionConfigPost webScript; + + /** + * @see org.alfresco.module.org_alfresco_module_rm.test.util.BaseWebScriptUnitTest#getWebScript() + */ + @Override + protected DeclarativeWebScript getWebScript() + { + return webScript; + } + + /** + * @see org.alfresco.module.org_alfresco_module_rm.test.util.BaseWebScriptUnitTest#getWebScriptTemplate() + */ + @Override + protected String getWebScriptTemplate() + { + return RECORDED_VERSION_CONFIG_WEBSCRIPT_ROOT + "recorded-version-config.post.json.ftl"; + } + + @Test + public void setRecordedVersionConfig() throws Exception + { + RecordableVersionPolicy policy = RecordableVersionPolicy.ALL; + + // Build the content + String content = buildContent(policy); + + // Build parameters + Map parameters = buildParameters(); + + // Test document should not have any recordable version policy set + doReturn(null).when(mockedNodeService).getProperty(testdoc, PROP_RECORDABLE_VERSION_POLICY); + + // execute web script + JSONObject json = executeJSONWebScript(parameters, content); + + // Do checks + assertNotNull(json); + assertEquals(json.length(), 0); + + // Test document must have recordable version policy "ALL" set + doReturn(policy).when(mockedNodeService).getProperty(testdoc, PROP_RECORDABLE_VERSION_POLICY); + } + + /** + * Helper method to build the content for the POST request + * @param policy The recordable version policy + * + * @return Content for the build request + */ + private String buildContent(RecordableVersionPolicy policy) + { + StringBuilder sb = new StringBuilder(); + sb.append("{\""); + sb.append(RecordedVersionConfigPost.RECORDED_VERSION); + sb.append("\":\""); + sb.append(policy.toString()); + sb.append("\"}"); + return sb.toString(); + } +} diff --git a/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/test/AllUnitTestSuite.java b/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/test/AllUnitTestSuite.java index 3079db7ae7..42157ec07e 100644 --- a/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/test/AllUnitTestSuite.java +++ b/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/test/AllUnitTestSuite.java @@ -29,6 +29,8 @@ import org.alfresco.module.org_alfresco_module_rm.model.compatibility.Dictionary import org.alfresco.module.org_alfresco_module_rm.patch.v22.RMv22RemoveInPlaceRolesFromAllPatchUnitTest; import org.alfresco.module.org_alfresco_module_rm.record.RecordMetadataBootstrapUnitTest; import org.alfresco.module.org_alfresco_module_rm.record.RecordServiceImplUnitTest; +import org.alfresco.module.org_alfresco_module_rm.recorded.version.config.RecordedVersionConfigGetTest; +import org.alfresco.module.org_alfresco_module_rm.recorded.version.config.RecordedVersionConfigPostTest; import org.alfresco.module.org_alfresco_module_rm.script.hold.HoldPostUnitTest; import org.alfresco.module.org_alfresco_module_rm.script.hold.HoldPutUnitTest; import org.alfresco.module.org_alfresco_module_rm.script.hold.HoldsGetUnitTest; @@ -54,30 +56,34 @@ import org.junit.runners.Suite.SuiteClasses; DictionaryBootstrapPostProcessorUnitTest.class, BeanExtenderUnitTest.class, DateParameterProcessorUnitTest.class, - + // services RecordServiceImplUnitTest.class, HoldServiceImplUnitTest.class, // FilePlanPermissionServiceImplUnitTest.class, // removed because test unreliable on Bamboo RecordableVersionServiceImplUnitTest.class, - + // evaluators TransferEvaluatorUnitTest.class, FrozenEvaluatorUnitTest.class, - + // web scripts HoldsGetUnitTest.class, HoldPostUnitTest.class, HoldPutUnitTest.class, - + // capability conditions HoldCapabilityConditionUnitTest.class, - + // action implementations FileReportActionUnitTest.class, - + // patches - RMv22RemoveInPlaceRolesFromAllPatchUnitTest.class + RMv22RemoveInPlaceRolesFromAllPatchUnitTest.class, + + // recorded version config + RecordedVersionConfigGetTest.class, + RecordedVersionConfigPostTest.class }) public class AllUnitTestSuite {