diff options
author | a.sreekumar <ajith.sreekumar@est.tech> | 2019-07-24 09:35:31 +0000 |
---|---|---|
committer | a.sreekumar <ajith.sreekumar@est.tech> | 2019-07-24 09:35:31 +0000 |
commit | a86ba140b1e100a2db2b04fc5f4f55bbb8eace42 (patch) | |
tree | f969bfdca22f9777b205d441d876e29fc8aa65d3 /auth/cli-editor/src/test/java | |
parent | 9e4e4474ee079176b26ed0af7105a4b23540d585 (diff) |
Extend APEX CLIEditor to generate policy in ToscaServiceTemplate format
Currently apex CLIEditor is used to generate a json policy model from
apex CLI language (.apex) file.
As per the new LifeCycle API, the policies are expected to be defined
as ToscaServiceTemplate. Hence, the current CLIEditor is extended to
generate the policies in ToscaServiceTemplate way.
Change-Id: I2eb5d5b146643d40b623e329a2a63d6bb0c1fb42
Issue-ID: POLICY-1885
Signed-off-by: a.sreekumar <ajith.sreekumar@est.tech>
Diffstat (limited to 'auth/cli-editor/src/test/java')
3 files changed, 303 insertions, 0 deletions
diff --git a/auth/cli-editor/src/test/java/org/onap/policy/apex/auth/clieditor/tosca/ApexCliToscaEditorTest.java b/auth/cli-editor/src/test/java/org/onap/policy/apex/auth/clieditor/tosca/ApexCliToscaEditorTest.java new file mode 100644 index 000000000..10bb63329 --- /dev/null +++ b/auth/cli-editor/src/test/java/org/onap/policy/apex/auth/clieditor/tosca/ApexCliToscaEditorTest.java @@ -0,0 +1,109 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2019 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.apex.auth.clieditor.tosca; + +import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; + +import java.io.File; +import java.io.IOException; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.onap.policy.common.utils.resources.TextFileUtils; + +/** + * Class to perform unit test of Apex cli tosca editor}. + * + * @author Ajith Sreekumar (ajith.sreekumar@est.tech) + */ +public class ApexCliToscaEditorTest { + + private File tempOutputToscaFile; + private File tempLogFile; + String[] sampleArgs; + + /** + * Initialise args. + * + * @throws IOException Signals that an I/O exception has occurred. + */ + @Before + public void initialiseArgs() throws IOException { + + tempOutputToscaFile = File.createTempFile("ToscaPolicyOutput", ".json"); + tempLogFile = File.createTempFile("ApexCliTosca", ".log"); + sampleArgs = new String[] { + "-c", CommonTestData.COMMAND_FILE_NAME, + "-ac", CommonTestData.APEX_CONFIG_FILE_NAME, + "-t", CommonTestData.INPUT_TOSCA_TEMPLATE_FILE_NAME, + "-ot", tempOutputToscaFile.getAbsolutePath(), + "-l", tempLogFile.getAbsolutePath() + }; + } + + /** + * Removes the generated files. + */ + @After + public void removeGeneratedFiles() { + tempOutputToscaFile.delete(); + tempLogFile.delete(); + } + + @Test + public void testApexCliToscaParameterParser() { + ApexCliToscaParameters params = new ApexCliToscaParameterParser().parse(sampleArgs); + assertEquals(CommonTestData.APEX_CONFIG_FILE_NAME, params.getApexConfigFileName()); + assertEquals(CommonTestData.COMMAND_FILE_NAME, params.getCommandFileName()); + assertEquals(CommonTestData.INPUT_TOSCA_TEMPLATE_FILE_NAME, params.getInputToscaTemplateFileName()); + assertEquals(tempOutputToscaFile.getAbsolutePath(), params.getOutputToscaPolicyFileName()); + assertEquals(tempLogFile.getAbsolutePath(), params.getLogFileName()); + } + + @Test + public void testApexCliTosca_success() throws IOException { + final ApexCliToscaEditorMain cliEditor = new ApexCliToscaEditorMain(sampleArgs); + String outputTosca = TextFileUtils.getTextFileAsString(tempOutputToscaFile.getAbsolutePath()); + String outputToscaCompare = TextFileUtils.getTextFileAsString( + "src/test/resources/tosca/ToscaPolicyOutput_compare.json"); + assertEquals(outputToscaCompare, outputTosca); + assertFalse(cliEditor.isFailure()); + } + + @Test + public void testApexCliTosca_no_args() { + String[] noArgs = new String[] {}; + assertThatThrownBy(() -> new ApexCliToscaEditorMain(noArgs)).hasMessage("Insufficient arguments provided."); + } + + @Test + public void testApexCliTosca_missing_commandfile() { + String[] sampleArgs = new String[] { + "-ac", CommonTestData.APEX_CONFIG_FILE_NAME, + "-t", CommonTestData.INPUT_TOSCA_TEMPLATE_FILE_NAME, + "-ot", tempOutputToscaFile.getAbsolutePath(), + "-l", tempLogFile.getAbsolutePath() + }; + assertThatThrownBy(() -> new ApexCliToscaEditorMain(sampleArgs)).hasMessage("Insufficient arguments provided."); + } +} diff --git a/auth/cli-editor/src/test/java/org/onap/policy/apex/auth/clieditor/tosca/CommonTestData.java b/auth/cli-editor/src/test/java/org/onap/policy/apex/auth/clieditor/tosca/CommonTestData.java new file mode 100644 index 000000000..ce88f9795 --- /dev/null +++ b/auth/cli-editor/src/test/java/org/onap/policy/apex/auth/clieditor/tosca/CommonTestData.java @@ -0,0 +1,38 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2019 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.apex.auth.clieditor.tosca; + +/** + * Class to hold/create all parameters for test cases. + * + * @author Ajith Sreekumar (ajith.sreekumar@est.tech) + */ +public class CommonTestData { + + private CommonTestData() { + // This class cannot be initialized + } + + public static final String INPUT_TOSCA_TEMPLATE_FILE_NAME = "src/test/resources/tosca/ToscaTemplate.json"; + public static final String APEX_CONFIG_FILE_NAME = "src/test/resources/tosca/ApexConfig.json"; + public static final String COMMAND_FILE_NAME = "src/test/resources/tosca/PolicyModel.apex"; + public static final String POLICY_MODEL_FILE_NAME = "src/test/resources/tosca/PolicyModel.json"; +} diff --git a/auth/cli-editor/src/test/java/org/onap/policy/apex/auth/clieditor/utils/CliUtilsTest.java b/auth/cli-editor/src/test/java/org/onap/policy/apex/auth/clieditor/utils/CliUtilsTest.java new file mode 100644 index 000000000..2dfd6f6c9 --- /dev/null +++ b/auth/cli-editor/src/test/java/org/onap/policy/apex/auth/clieditor/utils/CliUtilsTest.java @@ -0,0 +1,156 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2019 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.apex.auth.clieditor.utils; + +import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.io.File; +import java.io.IOException; +import java.util.Arrays; +import java.util.List; +import java.util.Properties; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.onap.policy.apex.auth.clieditor.tosca.ApexCliToscaParameterParser; +import org.onap.policy.apex.auth.clieditor.tosca.ApexCliToscaParameters; +import org.onap.policy.apex.auth.clieditor.tosca.CommonTestData; +import org.onap.policy.common.utils.coder.CoderException; +import org.onap.policy.common.utils.resources.TextFileUtils; + +/** + * Class to perform unit test of {@link CliUtils}}. + * + * @author Ajith Sreekumar (ajith.sreekumar@est.tech) + */ +public class CliUtilsTest { + + private File tempOutputToscaFile; + private File tempLogFile; + private String policyModelFilePath; + String[] sampleArgs; + + /** + * Initialise args. + * + * @throws IOException Signals that an I/O exception has occurred. + */ + @Before + public void initialiseArgs() throws IOException { + + tempOutputToscaFile = File.createTempFile("ToscaPolicyOutput", ".json"); + tempLogFile = File.createTempFile("ApexCliTosca", ".log"); + policyModelFilePath = CommonTestData.POLICY_MODEL_FILE_NAME; + sampleArgs = new String[] {"-c", CommonTestData.COMMAND_FILE_NAME, "-ac", CommonTestData.APEX_CONFIG_FILE_NAME, + "-t", CommonTestData.INPUT_TOSCA_TEMPLATE_FILE_NAME, "-ot", tempOutputToscaFile.getAbsolutePath(), "-l", + tempLogFile.getAbsolutePath()}; + } + + /** + * Removes the generated files. + */ + @After + public void removeGeneratedFiles() { + tempOutputToscaFile.delete(); + tempLogFile.delete(); + } + + @Test + public void testCreateToscaServiceTemplate() throws IOException, CoderException { + ApexCliToscaParameters params = new ApexCliToscaParameterParser().parse(sampleArgs); + CliUtils.createToscaServiceTemplate(params, policyModelFilePath); + String outputTosca = TextFileUtils.getTextFileAsString(tempOutputToscaFile.getAbsolutePath()); + String outputToscaCompare = + TextFileUtils.getTextFileAsString("src/test/resources/tosca/ToscaPolicyOutput_compare.json"); + assertEquals(outputToscaCompare, outputTosca); + } + + @Test + public void testValidateReadableFile_validfile() { + CliUtils.validateReadableFile("Apex Config File", CommonTestData.APEX_CONFIG_FILE_NAME); + } + + @Test + public void testValidateReadableFile_invalidfile() { + String invalidFileName = "src/test/resources/tosca/ApexConfigxyz.json"; + assertThatThrownBy(() -> CliUtils.validateReadableFile("Apex Config File", invalidFileName)) + .hasMessage("File " + invalidFileName + " of type Apex Config File does not exist"); + } + + @Test + public void testValidateWritableFile_validfile() { + CliUtils.validateWritableFile("Output Tosca Policy File", tempOutputToscaFile.getAbsolutePath()); + } + + @Test + public void testValidateWritableFile_invalidfile() { + String invalidFileName = "src/test/resources/tosca"; + assertThatThrownBy(() -> CliUtils.validateWritableFile("Output Tosca Policy File", invalidFileName)) + .hasMessage("File " + invalidFileName + " of type Output Tosca Policy File is not a normal file"); + } + + @Test + public void testValidateWritableDirectory_validdirectory() { + CliUtils.validateWritableDirectory("Working Directory", "src/test/resources/tosca"); + } + + @Test + public void testValidateWritableDirectory_invaliddirectory() { + assertThatThrownBy(() -> CliUtils.validateWritableDirectory("Working Directory", + CommonTestData.APEX_CONFIG_FILE_NAME)).hasMessage("directory " + CommonTestData.APEX_CONFIG_FILE_NAME + + " of type Working Directory is not a directory"); + } + + @Test + public void testGenerateArgumentsForCliEditor_success() { + ApexCliToscaParameters params = new ApexCliToscaParameterParser().parse(sampleArgs); + Properties optionVariableMap = new Properties(); + optionVariableMap.setProperty("c", "commandFileName"); + optionVariableMap.setProperty("ac", "apexConfigFileName"); + optionVariableMap.setProperty("t", "inputToscaTemplateFileName"); + optionVariableMap.setProperty("ot", "outputToscaPolicyFileName"); + optionVariableMap.setProperty("l", "logFileName"); + List<String> cliArgsList = + CliUtils.generateArgumentsForCliEditor(params, optionVariableMap, ApexCliToscaParameters.class); + assertTrue(cliArgsList.containsAll(Arrays.asList(sampleArgs))); + } + + @Test + public void testGenerateArgumentsForCliEditor_invalidvariable() { + ApexCliToscaParameters params = new ApexCliToscaParameterParser().parse(sampleArgs); + Properties optionVariableMap = new Properties(); + optionVariableMap.setProperty("c", "invalidFileName"); + List<String> cliArgsList = + CliUtils.generateArgumentsForCliEditor(params, optionVariableMap, ApexCliToscaParameters.class); + assertEquals(0, cliArgsList.size()); + } + + @Test + public void testGenerateArgumentsForCliEditor_missingoption() { + ApexCliToscaParameters params = new ApexCliToscaParameterParser().parse(sampleArgs); + Properties optionVariableMap = new Properties(); + List<String> cliArgsList = + CliUtils.generateArgumentsForCliEditor(params, optionVariableMap, ApexCliToscaParameters.class); + assertEquals(0, cliArgsList.size()); + } +} |