/*- * ============LICENSE_START======================================================= * SDC * ================================================================================ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. * ================================================================================ * 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. * ============LICENSE_END========================================================= */ package org.openecomp.sdc.ci.tests.execute.property; import org.junit.Rule; import org.junit.rules.TestName; import org.openecomp.sdc.be.dao.api.ActionStatus; import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum; import org.openecomp.sdc.be.model.ComponentInstanceProperty; import org.openecomp.sdc.be.model.PropertyDefinition; import org.openecomp.sdc.be.model.Resource; import org.openecomp.sdc.ci.tests.api.ComponentBaseTest; import org.openecomp.sdc.ci.tests.datatypes.PropertyReqDetails; import org.openecomp.sdc.ci.tests.datatypes.enums.*; import org.openecomp.sdc.ci.tests.datatypes.http.RestResponse; import org.openecomp.sdc.ci.tests.utils.general.AtomicOperationUtils; import org.openecomp.sdc.ci.tests.utils.general.ElementFactory; import org.openecomp.sdc.ci.tests.utils.rest.BaseRestUtils; import org.openecomp.sdc.ci.tests.utils.rest.LifecycleRestUtils; import org.openecomp.sdc.ci.tests.utils.rest.ResourceRestUtils; import org.openecomp.sdc.ci.tests.utils.rest.ResponseParser; import org.openecomp.sdc.ci.tests.utils.validation.ErrorValidationUtils; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; import java.io.IOException; import java.util.ArrayList; import java.util.List; import static org.openecomp.sdc.ci.tests.utils.rest.BaseRestUtils.STATUS_CODE_INVALID_CONTENT; import static org.testng.AssertJUnit.assertEquals; import static org.testng.AssertJUnit.assertTrue; public class ComponentProperty extends ComponentBaseTest { @Rule public static TestName name = new TestName(); public ComponentProperty() { super(name, ComponentProperty.class.getName()); } @DataProvider private static final Object[][] propertiesListDefaultValueSuccessFlow() throws IOException, Exception { return new Object[][] { // integer { "integer", "[1,2]", "[1,2]" }, { "tosca.datatypes.Credential", "[{\"protocol\":\"protocol1\",\"token\":\"token1\"},{\"protocol\":\"protocol2\",\"token\":\"token2\"}]", "[{\"protocol\":\"protocol1\",\"token\":\"token1\"},{\"protocol\":\"protocol2\",\"token\":\"token2\"}]" }, { "tosca.datatypes.Credential", "[{\"protocol\":\"protocol1\",\"token\":\"token1\"},{\"protocol\":\"protocol
2\",\"token\":\"token2 2\"}]", "[{\"protocol\":\"protocol1\",\"token\":\"token1\"},{\"protocol\":\"protocol2\",\"token\":\"token2 2\"}]" }, { "tosca.datatypes.Credential", null, null }, { "tosca.datatypes.Credential", "[]", "[]" }, { "integer", "[1,2,1,2]", "[1,2,1,2]" }, { "integer", "[1,,2]", "[1,2]" }, { "integer", "[1,null,2]", "[1,2]" }, { "integer", "[1,2,null]", "[1,2]" }, { "integer", "[null,1,2]", "[1,2]" }, { "integer", "[1,,2]", "[1,2]" }, { "integer", "[,1,2]", "[1,2]" }, // {"integer", // "[1000000000000000000000000000000000000000000000000000,2]" , // "[1000000000000000000000000000000000000000000000000000,2]"}, { "integer", "[100000000,2]", "[100000000,2]" }, // Andrey, in // success // flow // integer // max value // is // 2147483647 { "integer", null, null }, // no default value { "integer", "[1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2]", "[1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2]" }, // boolean { "boolean", "[true,false]", "[true,false]" }, { "boolean", "[true,false,false]", "[true,false,false]" }, { "boolean", "[null,true,false]", "[true,false]" }, { "boolean", "[true,false,null]", "[true,false]" }, { "boolean", "[true,,false]", "[true,false]" }, { "boolean", "[true,false,]", "[true,false]" }, { "boolean", "[,true,false]", "[true,false]" }, { "boolean", null, null }, // DE199713 - Default value for property type Boolean should // support also the following values: "true", "t" , "on" , "1" , // "false", "f" , "off" , "0" { "boolean", "[on,off]", "[true,false]" }, { "boolean", "[ON,OFF]", "[true,false]" }, { "boolean", "[On,Off]", "[true,false]" }, { "boolean", "[yes,no]", "[true,false]" }, { "boolean", "[YES,NO]", "[true,false]" }, { "boolean", "[Yes,No]", "[true,false]" }, { "boolean", "[y,n]", "[true,false]" }, { "boolean", "[Y,N]", "[true,false]" }, // float { "float", "[10.0,0.0]", "[10.0,0.0]" }, { "float", "[10,0]", "[10,0]" }, // contain // integer { "float", "[-10,-5.30]", "[-10,-5.30]" }, // Negative numbers { "float", "[10,null,0]", "[10,0]" }, { "float", "[null,10,0]", "[10,0]" }, { "float", "[10,0,null]", "[10,0]" }, { "float", "[10,0.1111111111111111111111111111111111111111]", "[10,0.1111111111111111111111111111111111111111]" }, { "float", "[10, ,7.3 ]", "[10,7.3]" }, { "float", "[10 , 7.3 , ]", "[10,7.3]" }, { "float", "[, , 10 , 7.3 , ]", "[10,7.3]" }, { "float", "[4.7f, -5.5f ]", "[4.7,-5.5]" }, { "float", "[4.7f, 6.3 ,6.3, 4.7f]", "[4.7,6.3,6.3,4.7]" }, // duplicate // value { "float", null, null }, { "string", "[aaaa , AAAA ]", "[\"aaaa\",\"AAAA\"]" }, { "string", "[1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2]", "[\"1\",\"2\",\"1\",\"2\",\"1\",\"2\",\"1\",\"2\",\"1\",\"2\",\"1\",\"2\",\"1\",\"2\",\"1\",\"2\",\"1\",\"2\",\"1\",\"2\",\"1\",\"2\",\"1\",\"2\",\"1\",\"2\",\"1\",\"2\",\"1\",\"2\",\"1\",\"2\",\"1\",\"2\",\"1\",\"2\",\"1\",\"2\",\"1\",\"2\",\"1\",\"2\",\"1\",\"2\",\"1\",\"2\",\"1\",\"2\",\"1\",\"2\",\"1\",\"2\",\"1\",\"2\",\"1\",\"2\",\"1\",\"2\",\"1\",\"2\",\"1\",\"2\",\"1\",\"2\",\"1\",\"2\",\"1\",\"2\",\"1\",\"2\",\"1\",\"2\",\"1\",\"2\",\"1\",\"2\",\"1\",\"2\",\"1\",\"2\",\"1\",\"2\",\"1\",\"2\",\"1\",\"2\",\"1\",\"2\",\"1\",\"2\",\"1\",\"2\",\"1\",\"2\",\"1\",\"2\",\"1\",\"2\",\"1\",\"2\"]" }, { "string", "[aaaa , AAAA, 1, off , true, false ]", "[\"aaaa\",\"AAAA\",\"1\",\"off\",\"true\",\"false\"]" }, { "string", "[aaaa , AAAA, aaaa, Aaaa , aaaa ]", "[\"aaaa\",\"AAAA\",\"aaaa\",\"Aaaa\",\"aaaa\"]" }, { "string", "[aaaa , AAAA, , ]", "[\"aaaa\",\"AAAA\"]" }, { "string", "[ , aaaa , AAAA ]", "[\"aaaa\",\"AAAA\"]" }, { "string", "[ aaaa , , AAAA ]", "[\"aaaa\",\"AAAA\"]" }, { "string", "[ aaaa , AAAA, null ]", "[\"aaaa\",\"AAAA\"]" }, { "string", "[ null, aaaa , AAAA ]", "[\"aaaa\",\"AAAA\"]" }, { "string", "[ aaaa , null , AAAA ]", "[\"aaaa\",\"AAAA\"]" }, { "string", null, null }, // without // default // values // - // Property // will // be // without // default // parameter { "string", "[ AAA ]", "[\"AAA\"]" }, // BUG DE199715 - // Error 400 // response // received // while adding // property with // default value // contain HTML // tags. // Need to check // whether / is // legal in yaml }; } @DataProvider private static final Object[][] invalidListProperties() throws IOException, Exception { return new Object[][] { { "integer", "[1,aaa]" }, { "tosca.datatypes.Credential", "[{\"protocol\":\"protocol1\",\"token\":\"token1\"},{\"protocol\":\"protocol2\",\"token1\":\"token2\"}]" }, { "integer", "[1,false]" }, { "integer", "[1,3.5]" }, { "integer", "[1,3#]" }, { "boolean", "[true,3.5]" }, { "boolean", "[true,1000]" }, { "boolean", "[false,trueee]" }, { "boolean", "[true,false!]" }, { "float", "[5.0000001,true]" }, { "float", "[0.0001,koko]" }, { "float", "[0.0001,6.3@]" }, { "float", "[0.0001f,6.3x]" }, }; } @DataProvider private static final Object[][] updatePropertiesListDefaultValueSuccessFlow() throws IOException, Exception { return new Object[][] { // integer // Setting --- update properties // ----------------------------------------------------------------------- { "integer", "[1,2]", "[1,2]", "integer", "[200,100]", "[200,100]" }, { "integer", "[1,2]", "[1,2]", "integer", "[200,100,null]", "[200,100]" }, { "integer", "[1,2]", "[1,2]", "integer", "[null, 200,100]", "[200,100]" }, { "integer", "[1,2]", "[1,2]", "integer", "[200,null,100]", "[200,100]" }, { "integer", "[1,2]", "[1,2]", "integer", "[200,100, ]", "[200,100]" }, { "integer", "[1,2]", "[1,2]", "integer", "[ , 200,100 ]", "[200,100]" }, { "integer", "[1,2]", "[1,2]", "integer", "[200 , ,100 ]", "[200,100]" }, { "integer", "[1,2]", "[1,2]", "integer", null, null }, { "integer", "[1,2]", "[1,2]", "integer", "[200 , 100 , 200, 100]", "[200,100,200,100]" }, // // ////DE199829 update resource property schema_type is not // updated { "integer", "[1,2]", "[1,2]", "string", "[aaaa , bbbb ]", "[\"aaaa\",\"bbbb\"]" }, { "integer", "[1,2]", "[1,2]", "boolean", "[true , false ]", "[true,false]" }, { "integer", "[1,2]", "[1,2]", "float", "[3.5,4.8f ]", "[3.5,4.8]" }, // {"string", "[aaa,bbb]" , "[\"aaa\",\"bbb\"]","integer","[100, // 200]" , "[\"100\",\"200\"]"}, { "string", "[aaa,bbb]", "[\"aaa\",\"bbb\"]", "integer", "[100, 200]", "[100,200]" }, { "string", "[aaa,bbb]", "[\"aaa\",\"bbb\"]", "float", "[0.1f, 3.01]", "[0.1,3.01]" }, { "string", "[aaa,bbb]", "[\"aaa\",\"bbb\"]", "boolean", "[true, false]", "[true,false]" }, { "float", "[1.2,2.3]", "[1.2,2.3]", "boolean", "[true, false]", "[true,false]" }, { "float", "[1.2,2.3]", "[1.2,2.3]", "integer", "[100, 200]", "[100,200]" }, { "float", "[1.2,2.3]", "[1.2,2.3]", "string", "[koko, moko]", "[\"koko\",\"moko\"]" }, { "boolean", "[true,false]", "[true,false]", "string", "[koko, moko]", "[\"koko\",\"moko\"]" }, // {"boolean", "[true,false]" , // "[\"true\",\"false\"]","integer","[100, 300000000000000]" , // "[\"100\",\"300000000000000\"]"},// Andrey, value not valid // for integer success flow { "boolean", "[true,false]", "[true,false]", "integer", "[100,2147483647]", "[100,2147483647]" }, // Andrey, // in // success // flow // integer // max // value // is // 2147483647 { "boolean", "[true,false]", "[true,false]", "float", "[3.000000000000002, 5.67f]", "[3.000000000000002,5.67]" }, // ////DE199829 // { "string", "[aaa,bbb]", "[\"aaa\",\"bbb\"]", "string", "[xxx, yyy]", "[\"xxx\",\"yyy\"]" }, { "string", "[aaa,bbb]", "[\"aaa\",\"bbb\"]", "string", "[xxx , yyy ,null]", "[\"xxx\",\"yyy\"]" }, { "string", "[aaa,bbb]", "[\"aaa\",\"bbb\"]", "string", "[null, xxx, yyy]", "[\"xxx\",\"yyy\"]" }, { "string", "[aaa,bbb]", "[\"aaa\",\"bbb\"]", "string", "[xxx ,null,yyy]", "[\"xxx\",\"yyy\"]" }, { "string", "[aaa,bbb]", "[\"aaa\",\"bbb\"]", "string", "[xxx ,yyy, ]", "[\"xxx\",\"yyy\"]" }, { "string", "[aaa,bbb]", "[\"aaa\",\"bbb\"]", "string", "[ , xxx,yyy ]", "[\"xxx\",\"yyy\"]" }, { "string", "[aaa,bbb]", "[\"aaa\",\"bbb\"]", "string", "[xxx , ,yyy ]", "[\"xxx\",\"yyy\"]" }, { "string", "[aaa,bbb]", "[\"aaa\",\"bbb\"]", "string", "[ xxx , yyy , xxx , yyy]", "[\"xxx\",\"yyy\",\"xxx\",\"yyy\"]" }, { "string", "[aaa,bbb]", "[\"aaa\",\"bbb\"]", "string", null, null }, { "string", "[aaa,bbb]", "[\"aaa\",\"bbb\"]", "string", "[xxx_-x, y__y--y]", "[\"xxx_-x\",\"y__y--y\"]" }, // DE199715 // {"string", "[aaa,bbb]" , "[\"aaa\",\"bbb\"]", "string" , // "[\"xxx\", \"yyy\"]" , "[\"xxx\",\"yyy\"]"}, // { "float", "[1.00,0.02]", "[1.00,0.02]", "float", "[2.1 , -0.1]", "[2.1,-0.1]" }, { "float", "[1.00,0.02]", "[1.00,0.02]", "float", "[2.1, 0.1 ,null]", "[2.1,0.1]" }, { "float", "[1.00,0.02]", "[1.00,0.02]", "float", "[null , 2.1, 0.1]", "[2.1,0.1]" }, { "float", "[1.00,0.02]", "[1.00,0.02]", "float", "[2.1,null,0.1]", "[2.1,0.1]" }, { "float", "[1.00,0.02]", "[1.00,0.02]", "float", "[2.1,0.1, ]", "[2.1,0.1]" }, // {"float", "[1.00,0.02]" , "[1.00,0.02]","float","[ , // 2.00000000000001,0.00000000000000100 ]" , // "[2.00000000000001,0.00000000000000100]"}, { "float", "[1.00,0.02]", "[1.00,0.02]", "float", "[2.1 , ,0.1 ]", "[2.1,0.1]" }, { "float", "[1.00,0.02]", "[1.00,0.02]", "float", null, null }, { "float", "[1.00,0.02]", "[1.00,0.02]", "float", "[2.1f , ,0.1f ]", "[2.1,0.1]" }, { "float", "[1.00,0.02]", "[1.00,0.02]", "float", "[2.1 , 0.1 , 2.1, 0.1]", "[2.1,0.1,2.1,0.1]" }, { "float", "[1.00,0.02]", "[1.00,0.02]", "float", "[200 , 100.11]", "[200,100.11]" }, { "float", "[1.00,0.02]", "[1.00,0.02]", "float", "[-2.35 , 100.11]", "[-2.35,100.11]" }, // { "boolean", "[true,false]", "[true,false]", "boolean", "[false , false]", "[false,false]" }, { "boolean", "[true,false]", "[true,false]", "boolean", "[false, true ,null]", "[false,true]" }, { "boolean", "[true,false]", "[true,false]", "boolean", "[null , false, true]", "[false,true]" }, { "boolean", "[true,false]", "[true,false]", "boolean", "[false,null,true]", "[false,true]" }, { "boolean", "[true,false]", "[true,false]", "boolean", "[false ,true , ]", "[false,true]" }, { "boolean", "[true,false]", "[true,false]", "boolean", "[ , false, true ]", "[false,true]" }, { "boolean", "[true,false]", "[true,false]", "boolean", "[false , ,true ]", "[false,true]" }, { "boolean", "[true,false]", "[true,false]", "boolean", null, null }, { "boolean", "[true,false]", "[true,false]", "boolean", "[false , true , false, true]", "[false,true,false,true]" }, }; } @DataProvider private static final Object[][] updatePropertiesListDefaultValueFailureFlow() throws IOException, Exception { return new Object[][] { // integer // Setting --- update properties // ----------------------------------------------------------------------- { "integer", "[1,2]", "[1,2]", "integer", "[aaa,bbb]" }, { "integer", "[1,2]", "[1,2]", "integer", "[true,false]" }, { "integer", "[1,2]", "[1,2]", "integer", "[1.0,100]" }, { "integer", "[1,2]", "[1,2]", "integer", "[@12,100]" }, { "float", "[0.11,0.22]", "[0.11,0.22]", "float", "[aaa, bbb]" }, { "float", "[0.11,0.22]", "[0.11,0.22]", "float", "[0.88, false]" }, { "float", "[0.11,0.22]", "[0.11,0.22]", "float", "[0.88g, 0.3]" }, { "float", "[0.11,0.22]", "[0.11,0.22]", "float", "[@0.88, 0.3]" }, { "boolean", "[true, false]", "[true,false]", "boolean", "[true, 100]" }, { "boolean", "[true, false]", "[true,false]", "boolean", "[false, 0.01]" }, { "boolean", "[true, false]", "[true,false]", "boolean", "[koko, true]" }, { "boolean", "[true, false]", "[true,false]", "boolean", "[@false, true]" }, }; } // Map properties @DataProvider private static final Object[][] updatePropertiesMapDefaultValueSuccessFlow() throws IOException, Exception { return new Object[][] { // entrySchemaType , propertyDefaultValues , // expectedDefaultValue , newEntrySchemaType , // newPropertyDefaultValue , newExpectedDefaultValue // integer { "integer", "{\"key1\":1 , \"key2\":2}", "{\"key1\":1,\"key2\":2}", "integer", "{\"key1\":200,\"key2\":null , \"key3\":300}", "{\"key1\":200,\"key2\":null,\"key3\":300}" }, { "integer", "{\"key1\":1 , \"key2\":2}", "{\"key1\":1,\"key2\":2}", "integer", "{\"key1\":null,\"key2\":200 , \"key3\":100}", "{\"key1\":null,\"key2\":200,\"key3\":100}" }, // string { "integer", "{\"key1\":1 , \"key2\":2}", "{\"key1\":1,\"key2\":2}", "string", "{\"key1\":\"aaaa\" , \"key2\":\"aaaa\"}", "{\"key1\":\"aaaa\",\"key2\":\"aaaa\"}" }, { "integer", "{\"key1\":1 , \"key2\":2}", "{\"key1\":1,\"key2\":2}", "boolean", "{\"key1\":true , \"key2\":false}", "{\"key1\":true,\"key2\":false}" }, { "integer", "{\"key1\":1 , \"key2\":2}", "{\"key1\":1,\"key2\":2}", "float", "{\"key1\":3.5 , \"key2\":4.8f}", "{\"key1\":3.5,\"key2\":4.8}" }, // string { "string", "{\"key1\":aaa , \"key2\":bbb}", "{\"key1\":\"aaa\",\"key2\":\"bbb\"}", "string", "{\"key1\":xxx , \"key2\":yyy}", "{\"key1\":\"xxx\",\"key2\":\"yyy\"}" }, // float { "float", "{\"key1\":1.00 , \"key2\":0.02}", "{\"key1\":1.00,\"key2\":0.02}", "float", "{\"key1\":2.1, \"key2\":-0.1}", "{\"key1\":2.1,\"key2\":-0.1}" }, { "float", "{\"key1\":1.00 , \"key2\":0.02}", "{\"key1\":1.00,\"key2\":0.02}", "float", "{\"key1\":2.1 , \"key2\":0.1 , \"key3\":null}", "{\"key1\":2.1,\"key2\":0.1,\"key3\":null}" }, // boolean { "boolean", "{\"key1\":true , \"key2\":false}", "{\"key1\":true,\"key2\":false}", "boolean", "{\"key1\":false , \"key2\":false}", "{\"key1\":false,\"key2\":false}" }, { "boolean", "{\"key1\":true , \"key2\":false}", "{\"key1\":true,\"key2\":false}", "boolean", "{\"key1\":false , \"key2\":true , \"key3\":null}", "{\"key1\":false,\"key2\":true,\"key3\":null}" }, // null { "boolean", "{\"key1\":null , \"key2\":false}", "{\"key1\":null,\"key2\":false}", "boolean", "{\"key1\":false , \"key2\":true , \"key3\":null}", "{\"key1\":false,\"key2\":true,\"key3\":null}" }, // tosca.datatypes.Credential { "tosca.datatypes.Credential", "{\"key1\":{\"protocol\":\"protocol
1\",\"token\":\"token1\"},\"key2\":{\"protocol\":\"protocol2\",\"token\":\"token2\"}}", "{\"key1\":{\"protocol\":\"protocol1\",\"token\":\"token1\"},\"key2\":{\"protocol\":\"protocol2\",\"token\":\"token2\"}}", "tosca.datatypes.Credential", "{\"key1\":{\"protocol\":\"protocol
1\",\"token\":\"token1\"},\"key2\":{\"protocol\":\"protocol2\",\"token\":\"token2\"}}", "{\"key1\":{\"protocol\":\"protocol1\",\"token\":\"token1\"},\"key2\":{\"protocol\":\"protocol2\",\"token\":\"token2\"}}" }, }; } @DataProvider private static final Object[][] propertiesMapDefaultValueSuccessFlow() throws IOException, Exception { return new Object[][] { // entrySchemaType , propertyDefaultValues , // expectedDefaultValue // // {"string", // "{\"vf_module_id\":{\"get_input\":\"vf_module_id\"}, // \"vnf_idw\": 2}", // "{\"vf_module_id\":{\"get_input\":\"vf_module_id\"}, // \"vnf_idw\": 2}"}, // tosca.datatypes.Credential { "tosca.datatypes.Credential", "{\"key1\":{\"protocol\":\"protocol
1\",\"token\":\"token1\"},\"key2\":{\"protocol\":\"protocol2\",\"token\":\"token2\"}}", "{\"key1\":{\"protocol\":\"protocol1\",\"token\":\"token1\"},\"key2\":{\"protocol\":\"protocol2\",\"token\":\"token2\"}}" }, // integer { "integer", "{\"key1\":1 , \"key2\":2}", "{\"key1\":1,\"key2\":2}" }, { "integer", "{\"key1\":1,\"key2\":2,\"key3\":1,\"key4\":2}", "{\"key1\":1,\"key2\":2,\"key3\":1,\"key4\":2}" }, { "integer", "{\"key1\":1,\"key2\":null,\"key3\":1,\"key4\":2}", "{\"key1\":1,\"key2\":null,\"key3\":1,\"key4\":2}" }, { "integer", "{\"key1\":null,\"key2\":1,\"key3\":1,\"key4\":2}", "{\"key1\":null,\"key2\":1,\"key3\":1,\"key4\":2}" }, { "integer", "{\"key1\":1,\"key2\":2,\"key3\":1,\"key4\":null}", "{\"key1\":1,\"key2\":2,\"key3\":1,\"key4\":null}" }, { "integer", "{\"key1\":1,\"key2\":2,\"key3\":1,\"key4\":NULL}", "{\"key1\":1,\"key2\":2,\"key3\":1,\"key4\":null}" }, { "integer", "{\"key1\":1,\"key2\":2,\"key3\":1,\"key4\":Null}", "{\"key1\":1,\"key2\":2,\"key3\":1,\"key4\":null}" }, { "integer", "{\"key1\":1,\"key2\":2,\"key3\":1,\"key4\":nuLL}", "{\"key1\":1,\"key2\":2,\"key3\":1,\"key4\":null}" }, { "integer", null, null }, // no default value // //BUG //// {"integer", // "{\"key1\":1000000000000000000000000000000000000000000000000000,\"key2\":2}" // ,"{\"key1\":1000000000000000000000000000000000000000000000000000,\"key2\":2}"}, { "boolean", "{\"key1\":true , \"key2\":false}", "{\"key1\":true,\"key2\":false}" }, { "boolean", "{\"key1\":true , \"key2\":false, \"key3\":false }", "{\"key1\":true,\"key2\":false,\"key3\":false}" }, { "boolean", "{\"key1\":null , \"key2\":true, \"key3\":false }", "{\"key1\":null,\"key2\":true,\"key3\":false}" }, { "boolean", "{\"key1\":true , \"key2\":Null, \"key3\":false }", "{\"key1\":true,\"key2\":null,\"key3\":false}" }, { "boolean", "{\"key1\":true , \"key2\":false, \"key3\":nULL }", "{\"key1\":true,\"key2\":false,\"key3\":null}" }, { "boolean", null, null }, { "boolean", "{\"key1\":on , \"key2\":off}", "{\"key1\":true,\"key2\":false}" }, { "boolean", "{\"key1\":ON , \"key2\":OFF}", "{\"key1\":true,\"key2\":false}" }, { "boolean", "{\"key1\":On , \"key2\":Off}", "{\"key1\":true,\"key2\":false}" }, { "boolean", "{\"key1\":yes , \"key2\":no}", "{\"key1\":true,\"key2\":false}" }, { "boolean", "{\"key1\":YES , \"key2\":NO}", "{\"key1\":true,\"key2\":false}" }, { "boolean", "{\"key1\":Yes , \"key2\":No}", "{\"key1\":true,\"key2\":false}" }, { "boolean", "{\"key1\":y , \"key2\":n}", "{\"key1\":true,\"key2\":false}" }, { "boolean", "{\"key1\":Y , \"key2\":N}", "{\"key1\":true,\"key2\":false}" }, { "boolean", "{null:false}", "{\"null\":false}" }, // float { "float", "{\"key1\":10.0 , \"key2\":0.0}", "{\"key1\":10.0,\"key2\":0.0}" }, { "float", "{\"key1\":10 , \"key2\":0}", "{\"key1\":10,\"key2\":0}" }, // contain // integer { "float", "{\"key1\":null , \"key2\":Null}", "{\"key1\":null,\"key2\":null}" }, // contain // null { "float", "{\"key1\":3.5 , \"key2\":nULL}", "{\"key1\":3.5,\"key2\":null}" }, // BUG { "float", "{\"key1\":3.5 , \"key2\":0.1111111111111111111111111111111111111111}", "{\"key1\":3.5,\"key2\":0.1111111111111111111111111111111111111111}" }, { "float", "{\"key1\":4.7f , \"key2\":-5.5f}", "{\"key1\":4.7,\"key2\":-5.5}" }, { "float", "{\"key1\":4.7f , \"key2\":-5.5f, \"key3\":-5.5f}", "{\"key1\":4.7,\"key2\":-5.5,\"key3\":-5.5}" }, { "boolean", null, null }, { "string", "{\"key1\":aaaa , \"key2\":AAAA}", "{\"key1\":\"aaaa\",\"key2\":\"AAAA\"}" }, { "string", "{\"key1\":off , \"key2\":true , \"key3\":1}", "{\"key1\":\"off\",\"key2\":\"true\",\"key3\":\"1\"}" }, { "string", "{\"key1\":aaaa , \"key2\":Aaaa , \"key3\":aaaa}", "{\"key1\":\"aaaa\",\"key2\":\"Aaaa\",\"key3\":\"aaaa\"}" }, { "string", "{\"key1\":aaaa , \"key2\":bbbb , \"key3\":null}", "{\"key1\":\"aaaa\",\"key2\":\"bbbb\",\"key3\":null}" }, { "string", "{\"key1\":NULL , \"key2\":bbbb , \"key3\":aaaa}", "{\"key1\":null,\"key2\":\"bbbb\",\"key3\":\"aaaa\"}" }, { "string", "{\"key1\":aaaa , \"key2\":Null , \"key3\":bbbb}", "{\"key1\":\"aaaa\",\"key2\":null,\"key3\":\"bbbb\"}" }, { "string", null, null }, // without default values - Property // will be without default parameter { "string", "{\"key1\":\"AAAA\" }", "{\"key1\":\"AAAA\"}" }, }; } @DataProvider private static final Object[][] updatePropertiesMapDefaultValueFailureFlow() throws IOException, Exception { return new Object[][] { // integer { "integer", "{\"key1\":1 , \"key2\":2}", "{\"key1\":1,\"key2\":2}", "integer", "{\"key1\":aaa , \"key2\":bbb}" }, { "integer", "{\"key1\":1 , \"key2\":2}", "{\"key1\":1,\"key2\":2}", "integer", "{\"key1\":true , \"key2\":false}" }, { "integer", "{\"key1\":1 , \"key2\":2}", "{\"key1\":1,\"key2\":2}", "integer", "{\"key1\":1.0 , \"key2\":100}" }, { "integer", "{\"key1\":1 , \"key2\":2}", "{\"key1\":1,\"key2\":2}", "integer", "{\"key1\":12@ , \"key2\":100}" }, // float { "float", "{\"key1\":0.11 , \"key2\":0.22}", "{\"key1\":0.11,\"key2\":0.22}", "float", "{\"key1\":aaa , \"key2\":bbb}" }, { "float", "{\"key1\":0.11 , \"key2\":0.22}", "{\"key1\":0.11,\"key2\":0.22}", "float", "{\"key1\":0.88 , \"key2\":false}" }, { "float", "{\"key1\":0.11 , \"key2\":0.22}", "{\"key1\":0.11,\"key2\":0.22}", "float", "{\"key1\":0.88g , \"key2\":0.3}" }, { "float", "{\"key1\":0.11 , \"key2\":0.22}", "{\"key1\":0.11,\"key2\":0.22}", "float", "{\"key1\":@0.88g , \"key2\":0.3}" }, // boolean { "boolean", "{\"key1\":true , \"key2\":false}", "{\"key1\":true,\"key2\":false}", "boolean", "{\"key1\":true , \"key2\":100}" }, { "boolean", "{\"key1\":true , \"key2\":false}", "{\"key1\":true,\"key2\":false}", "boolean", "{\"key1\":false , \"key2\":0.01}" }, { "boolean", "{\"key1\":true , \"key2\":false}", "{\"key1\":true,\"key2\":false}", "boolean", "{\"key1\":koko , \"key2\":true}" }, { "boolean", "{\"key1\":true , \"key2\":false}", "{\"key1\":true,\"key2\":false}", "boolean", "{\"key1\":@false , \"key2\":true}" }, { "boolean", "{\"key1\":true,\"key2\":false}", "{\"key1\":true,\"key2\":false}", "boolean", "{:false , \"key2\":true}" }, { "boolean", "{\"key1\":true,\"key2\":false}", "{\"key1\":true,\"key2\":false}", "boolean", "{\"key1\":true , , \"key2\":false}" }, // tosca.datatypes.Credential { "tosca.datatypes.Credential", "{\"key1\":{\"protocol\":\"protocol
1\",\"token\":\"token1\"},\"key2\":{\"protocol\":\"protocol2\",\"token\":\"token2\"}}", "{\"key1\":{\"protocol\":\"protocol1\",\"token\":\"token1\"},\"key2\":{\"protocol\":\"protocol2\",\"token\":\"token2\"}}", "tosca.datatypes.Credential", "{\"key1\":{\"protocol\":\"protocol
1\",\"token\":\"token1\"},\"key2\":{\"protocol\":\"protocol2\",\"token2\":\"token2\"}}" }, }; } // US594938 - UPDATE PROPERTY // DE199718 @Test(dataProvider = "updatePropertiesListDefaultValueFailureFlow") public void updateDefaultValueOfResourcePropertyListFailureFlow(String entrySchemaType, String propertyDefaltValues, String expecteddefaultValues, String newEntrySchemaType, String newPropertyDefaltValues) throws Exception { PropertyReqDetails propertyDetails = ElementFactory.getDefaultListProperty(); propertyDetails.setPropertyDefaultValue(propertyDefaltValues); propertyDetails.getSchema().getProperty().setType(entrySchemaType); // create resource Resource basicVFC = AtomicOperationUtils.createResourcesByTypeNormTypeAndCatregory(ResourceTypeEnum.VFC, NormativeTypesEnum.ROOT, ResourceCategoryEnum.GENERIC_ABSTRACT, UserRoleEnum.DESIGNER, true).left() .value(); // Add property type list to resource ComponentInstanceProperty resourcePropertiesFromResponse = AtomicOperationUtils .addCustomPropertyToResource(propertyDetails, basicVFC, UserRoleEnum.DESIGNER, true).left().value(); String propertyUniqueId = resourcePropertiesFromResponse.getUniqueId(); // verify properties return from response assertEquals("list", resourcePropertiesFromResponse.getType()); assertEquals(expecteddefaultValues, resourcePropertiesFromResponse.getDefaultValue()); assertEquals(propertyDetails.getSchema().getProperty().getType(), resourcePropertiesFromResponse.getSchema().getProperty().getType()); // string/integer/boolean/float verifyResourcePropertyList(basicVFC, propertyDetails, expecteddefaultValues); // Update resource property type = "list" propertyDetails.setPropertyDefaultValue(newPropertyDefaltValues); propertyDetails.getSchema().getProperty().setType(newEntrySchemaType); RestResponse updatePropertyResponse = AtomicOperationUtils .updatePropertyOfResource(propertyDetails, basicVFC, propertyUniqueId, UserRoleEnum.DESIGNER, false) .right().value(); assertTrue(updatePropertyResponse.getErrorCode().equals(STATUS_CODE_INVALID_CONTENT)); ArrayList variables = new ArrayList<>(); variables.add(propertyDetails.getName()); variables.add(propertyDetails.getPropertyType()); variables.add(propertyDetails.getSchema().getProperty().getType()); variables.add(newPropertyDefaltValues); ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.INVALID_COMPLEX_DEFAULT_VALUE.name(), variables, updatePropertyResponse.getResponse()); } @Test public void updatePropertyOfDerivedResource() throws Exception { PropertyReqDetails propertyDetails = ElementFactory.getDefaultListProperty(PropertyTypeEnum.STRING_LIST); // create resource Resource basicVFC = AtomicOperationUtils.createResourcesByTypeNormTypeAndCatregory(ResourceTypeEnum.VFC, NormativeTypesEnum.ROOT, ResourceCategoryEnum.GENERIC_ABSTRACT, UserRoleEnum.DESIGNER, true).left() .value(); // Add property type list to resource ComponentInstanceProperty resourcePropertiesFromResponse = AtomicOperationUtils .addCustomPropertyToResource(propertyDetails, basicVFC, UserRoleEnum.DESIGNER, true).left().value(); String derivedResourcePropertyUniqueId = resourcePropertiesFromResponse.getUniqueId(); AtomicOperationUtils.changeComponentState(basicVFC, UserRoleEnum.DESIGNER, LifeCycleStatesEnum.CERTIFY, true); // second resource derived from basicVFC Resource vfc1FromBasicVFC = AtomicOperationUtils .createResourcesByCustomNormativeTypeAndCatregory(ResourceTypeEnum.VFC, basicVFC, ResourceCategoryEnum.APPLICATION_L4_BORDER, UserRoleEnum.DESIGNER, true) .left().value(); // add property Type list to second resource PropertyReqDetails defaultListProperty = ElementFactory.getDefaultListProperty(PropertyTypeEnum.INTEGER_LIST); resourcePropertiesFromResponse = AtomicOperationUtils .addCustomPropertyToResource(defaultListProperty, vfc1FromBasicVFC, UserRoleEnum.DESIGNER, true).left() .value(); // Update property (list) of derived resource RestResponse updatePropertyResponse = AtomicOperationUtils.updatePropertyOfResource(propertyDetails, basicVFC, derivedResourcePropertyUniqueId, UserRoleEnum.DESIGNER, false).right().value(); assertTrue(updatePropertyResponse.getErrorCode().equals(BaseRestUtils.STATUS_CODE_RESTRICTED_OPERATION)); ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.RESTRICTED_OPERATION.name(), new ArrayList(), updatePropertyResponse.getResponse()); // Verify resource's priority list did not changed verifyResourcePropertyList(basicVFC, propertyDetails, "[\"a\",\"b\"]"); } @Test public void updatePropertyOfNonDerivedResource() throws Exception { PropertyReqDetails propertyDetails = ElementFactory.getDefaultListProperty(PropertyTypeEnum.STRING_LIST); // create resource Resource basicVFC = AtomicOperationUtils.createResourcesByTypeNormTypeAndCatregory(ResourceTypeEnum.VFC, NormativeTypesEnum.ROOT, ResourceCategoryEnum.GENERIC_ABSTRACT, UserRoleEnum.DESIGNER, true).left() .value(); // Add property type list to resource ComponentInstanceProperty resourcePropertiesFromResponse = AtomicOperationUtils .addCustomPropertyToResource(propertyDetails, basicVFC, UserRoleEnum.DESIGNER, true).left().value(); AtomicOperationUtils.changeComponentState(basicVFC, UserRoleEnum.DESIGNER, LifeCycleStatesEnum.CERTIFY, true); // second resource derived from basicVFC Resource vfc1FromBasicVFC = AtomicOperationUtils .createResourcesByCustomNormativeTypeAndCatregory(ResourceTypeEnum.VFC, basicVFC, ResourceCategoryEnum.APPLICATION_L4_BORDER, UserRoleEnum.DESIGNER, true) .left().value(); // add property Type list to second resource PropertyReqDetails defaultListProperty = ElementFactory.getDefaultListProperty(PropertyTypeEnum.INTEGER_LIST); resourcePropertiesFromResponse = AtomicOperationUtils .addCustomPropertyToResource(defaultListProperty, vfc1FromBasicVFC, UserRoleEnum.DESIGNER, true).left() .value(); String propertyUniqueId = resourcePropertiesFromResponse.getUniqueId(); // Update property (list) of derived resource defaultListProperty.setPropertyDefaultValue("[1,2,3,4]"); String expectedDefaultValue = "[1,2,3,4]"; ComponentInstanceProperty resourcePropertyAfterUpdate = AtomicOperationUtils .updatePropertyOfResource(defaultListProperty, vfc1FromBasicVFC, propertyUniqueId, UserRoleEnum.DESIGNER, true) .left().value(); assertEquals(resourcePropertyAfterUpdate.getType(), "list"); assertEquals(resourcePropertyAfterUpdate.getDefaultValue(), expectedDefaultValue); assertEquals(resourcePropertyAfterUpdate.getSchema().getProperty().getType(), defaultListProperty.getSchema().getProperty().getType()); // string/integer/boolean/float // Get resource and verify updated default value RestResponse restResponse = ResourceRestUtils.getResource(vfc1FromBasicVFC.getUniqueId()); String expectedDefaultValueFromDerivedResource = "[\"a\",\"b\"]"; Resource resource = ResponseParser.convertResourceResponseToJavaObject(restResponse.getResponse()); resource.getProperties().get(0).getDefaultValue().equals(expectedDefaultValue); resource.getProperties().get(1).getDefaultValue().equals(expectedDefaultValueFromDerivedResource); } @Test public void updateListPropertyToNonCheckedOutResource() throws Exception { PropertyReqDetails propertyDetails = ElementFactory.getDefaultListProperty(); String PropertyDefaultValue = "[2,3]"; propertyDetails.setPropertyDefaultValue(PropertyDefaultValue); propertyDetails.getSchema().getProperty().setType("integer"); // create resource Resource basicVFC = AtomicOperationUtils.createResourcesByTypeNormTypeAndCatregory(ResourceTypeEnum.VFC, NormativeTypesEnum.ROOT, ResourceCategoryEnum.GENERIC_ABSTRACT, UserRoleEnum.DESIGNER, true).left() .value(); // Add property type list to resource ComponentInstanceProperty resourcePropertiesFromResponse = AtomicOperationUtils .addCustomPropertyToResource(propertyDetails, basicVFC, UserRoleEnum.DESIGNER, true).left().value(); String propertyUniqueId = resourcePropertiesFromResponse.getUniqueId(); AtomicOperationUtils.changeComponentState(basicVFC, UserRoleEnum.DESIGNER, LifeCycleStatesEnum.CHECKIN, true); // Update resource property type = "list" propertyDetails.setPropertyDefaultValue("[3,4]"); propertyDetails.getSchema().getProperty().setType("integer"); RestResponse updatePropertyResponse = AtomicOperationUtils .updatePropertyOfResource(propertyDetails, basicVFC, propertyUniqueId, UserRoleEnum.DESIGNER, false) .right().value(); assertTrue(updatePropertyResponse.getErrorCode().equals(BaseRestUtils.STATUS_CODE_RESTRICTED_OPERATION)); ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.RESTRICTED_OPERATION.name(), new ArrayList(), updatePropertyResponse.getResponse()); // Verify resource's priority list did not changed verifyResourcePropertyList(basicVFC, propertyDetails, "[2,3]"); } @Test public void updateListPropertyResourceByNonResouceOwner() throws Exception { PropertyReqDetails propertyDetails = ElementFactory.getDefaultListProperty(); String PropertyDefaultValue = "[2,3]"; propertyDetails.setPropertyDefaultValue(PropertyDefaultValue); propertyDetails.getSchema().getProperty().setType("integer"); // create resource Resource basicVFC = AtomicOperationUtils.createResourcesByTypeNormTypeAndCatregory(ResourceTypeEnum.VFC, NormativeTypesEnum.ROOT, ResourceCategoryEnum.GENERIC_ABSTRACT, UserRoleEnum.DESIGNER, true).left() .value(); // Add property type list to resource ComponentInstanceProperty resourcePropertiesFromResponse = AtomicOperationUtils .addCustomPropertyToResource(propertyDetails, basicVFC, UserRoleEnum.DESIGNER, true).left().value(); String propertyUniqueId = resourcePropertiesFromResponse.getUniqueId(); // AtomicOperationUtils.changeComponentState(basicVFC, // UserRoleEnum.DESIGNER, LifeCycleStatesEnum.CHECKIN, true); // Update resource property type = "list" propertyDetails.setPropertyDefaultValue("[3,4]"); propertyDetails.getSchema().getProperty().setType("integer"); RestResponse updatePropertyResponse = AtomicOperationUtils .updatePropertyOfResource(propertyDetails, basicVFC, propertyUniqueId, UserRoleEnum.DESIGNER2, false) .right().value(); assertTrue(updatePropertyResponse.getErrorCode().equals(BaseRestUtils.STATUS_CODE_RESTRICTED_OPERATION)); ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.RESTRICTED_OPERATION.name(), new ArrayList(), updatePropertyResponse.getResponse()); // Verify resource's priority list did not changed verifyResourcePropertyList(basicVFC, propertyDetails, "[2,3]"); } @Test public void updateListPropertyResourceByTester() throws Exception { PropertyReqDetails propertyDetails = ElementFactory.getDefaultListProperty(); String PropertyDefaultValue = "[2,3]"; propertyDetails.setPropertyDefaultValue(PropertyDefaultValue); propertyDetails.getSchema().getProperty().setType("integer"); // create resource Resource basicVFC = AtomicOperationUtils.createResourcesByTypeNormTypeAndCatregory(ResourceTypeEnum.VFC, NormativeTypesEnum.ROOT, ResourceCategoryEnum.GENERIC_ABSTRACT, UserRoleEnum.DESIGNER, true).left() .value(); // Add property type list to resource ComponentInstanceProperty resourcePropertiesFromResponse = AtomicOperationUtils .addCustomPropertyToResource(propertyDetails, basicVFC, UserRoleEnum.DESIGNER, true).left().value(); String propertyUniqueId = resourcePropertiesFromResponse.getUniqueId(); // AtomicOperationUtils.changeComponentState(basicVFC, // UserRoleEnum.DESIGNER, LifeCycleStatesEnum.CHECKIN, true); // Update resource property type = "list" propertyDetails.setPropertyDefaultValue("[3,4]"); propertyDetails.getSchema().getProperty().setType("integer"); RestResponse updatePropertyResponse = AtomicOperationUtils .updatePropertyOfResource(propertyDetails, basicVFC, propertyUniqueId, UserRoleEnum.TESTER, false) .right().value(); assertTrue(updatePropertyResponse.getErrorCode().equals(BaseRestUtils.STATUS_CODE_RESTRICTED_OPERATION)); ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.RESTRICTED_OPERATION.name(), new ArrayList(), updatePropertyResponse.getResponse()); // Verify resource's priority list did not changed verifyResourcePropertyList(basicVFC, propertyDetails, "[2,3]"); } // DE199964 @Test(enabled = false) public void updateListPropertyToNonExistingResource() throws Exception { PropertyReqDetails propertyDetails = ElementFactory.getDefaultListProperty(); String PropertyDefaultValue = "[2,3]"; propertyDetails.setPropertyDefaultValue(PropertyDefaultValue); propertyDetails.getSchema().getProperty().setType("integer"); // create resource Resource basicVFC = AtomicOperationUtils.createResourcesByTypeNormTypeAndCatregory(ResourceTypeEnum.VFC, NormativeTypesEnum.ROOT, ResourceCategoryEnum.GENERIC_ABSTRACT, UserRoleEnum.DESIGNER, true).left() .value(); // Add property type list to resource ComponentInstanceProperty resourcePropertiesFromResponse = AtomicOperationUtils .addCustomPropertyToResource(propertyDetails, basicVFC, UserRoleEnum.DESIGNER, true).left().value(); String propertyUniqueId = resourcePropertiesFromResponse.getUniqueId(); String resourceUniqueId = basicVFC.getUniqueId(); basicVFC.setUniqueId("1111111"); RestResponse updatePropertyResponse = AtomicOperationUtils .updatePropertyOfResource(propertyDetails, basicVFC, propertyUniqueId, UserRoleEnum.DESIGNER, false) .right().value(); assertTrue(updatePropertyResponse.getErrorCode().equals(BaseRestUtils.STATUS_CODE_NOT_FOUND)); ArrayList variables = new ArrayList<>(); variables.add(basicVFC.getUniqueId()); ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.RESOURCE_NOT_FOUND.name(), variables, updatePropertyResponse.getResponse()); // Verify resource's priority list did not changed basicVFC.setUniqueId(resourceUniqueId); verifyResourcePropertyList(basicVFC, propertyDetails, "[2,3]"); } // DE199725 @Test public void updateResourcePropertyListNonSupportedPropertyType() throws Exception { // Not // "list" // type PropertyReqDetails propertyDetails = ElementFactory.getDefaultListProperty(); String PropertyDefaultValue = "[2,3]"; propertyDetails.setPropertyDefaultValue(PropertyDefaultValue); propertyDetails.getSchema().getProperty().setType("integer"); // create resource Resource basicVFC = AtomicOperationUtils.createResourcesByTypeNormTypeAndCatregory(ResourceTypeEnum.VFC, NormativeTypesEnum.ROOT, ResourceCategoryEnum.GENERIC_ABSTRACT, UserRoleEnum.DESIGNER, true).left() .value(); // Add property type list to resource ComponentInstanceProperty resourcePropertiesFromResponse = AtomicOperationUtils .addCustomPropertyToResource(propertyDetails, basicVFC, UserRoleEnum.DESIGNER, true).left().value(); String propertyUniqueId = resourcePropertiesFromResponse.getUniqueId(); // update resource property String propertyType = "listttttttt"; propertyDetails.setPropertyType(propertyType); RestResponse updatePropertyResponse = AtomicOperationUtils .updatePropertyOfResource(propertyDetails, basicVFC, propertyUniqueId, UserRoleEnum.DESIGNER, false) .right().value(); ArrayList variables = new ArrayList<>(); variables.add(propertyDetails.getPropertyType()); // property data type // (koko instead // list) variables.add(propertyDetails.getName()); ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.INVALID_PROPERTY_TYPE.name(), variables, updatePropertyResponse.getResponse()); // Verify resource's priority list did not changed propertyDetails.setPropertyType("list"); verifyResourcePropertyList(basicVFC, propertyDetails, "[2,3]"); } @Test(enabled = false) // DE199732 public void updateResourcePropertyListNonSupportedEntrySchemaType() throws Exception { PropertyReqDetails propertyDetails = ElementFactory.getDefaultListProperty(); String PropertyDefaultValue = "[2,3]"; propertyDetails.setPropertyDefaultValue(PropertyDefaultValue); propertyDetails.getSchema().getProperty().setType("integer"); // create resource Resource basicVFC = AtomicOperationUtils.createResourcesByTypeNormTypeAndCatregory(ResourceTypeEnum.VFC, NormativeTypesEnum.ROOT, ResourceCategoryEnum.GENERIC_ABSTRACT, UserRoleEnum.DESIGNER, true).left() .value(); // Add property type list to resource ComponentInstanceProperty resourcePropertiesFromResponse = AtomicOperationUtils .addCustomPropertyToResource(propertyDetails, basicVFC, UserRoleEnum.DESIGNER, true).left().value(); String propertyUniqueId = resourcePropertiesFromResponse.getUniqueId(); // update resource property String EntrySchemaType = "integerrrrrr"; propertyDetails.getSchema().getProperty().setType(EntrySchemaType); RestResponse updatePropertyResponse = AtomicOperationUtils .updatePropertyOfResource(propertyDetails, basicVFC, propertyUniqueId, UserRoleEnum.DESIGNER, false) .right().value(); assertTrue(updatePropertyResponse.getErrorCode().equals(STATUS_CODE_INVALID_CONTENT)); ArrayList variables = new ArrayList<>(); variables.add(EntrySchemaType); variables.add(propertyDetails.getName()); ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.INVALID_PROPERTY_INNER_TYPE.name(), variables, updatePropertyResponse.getResponse()); propertyDetails.getSchema().getProperty().setType("integer"); verifyResourcePropertyList(basicVFC, propertyDetails, "[2,3]"); } @Test(dataProvider = "updatePropertiesListDefaultValueSuccessFlow") public void updateResourcePropertyListSuccessFlow(String entrySchemaType, String propertyDefaltValues, String expecteddefaultValues, String newEntrySchemaType, String newPropertyDefaltValues, String newExpecteddefaultValues) throws Exception { PropertyReqDetails propertyDetails = ElementFactory.getDefaultListProperty(); propertyDetails.setPropertyDefaultValue(propertyDefaltValues); propertyDetails.getSchema().getProperty().setType(entrySchemaType); // create resource Resource basicVFC = AtomicOperationUtils.createResourcesByTypeNormTypeAndCatregory(ResourceTypeEnum.VFC, NormativeTypesEnum.ROOT, ResourceCategoryEnum.GENERIC_ABSTRACT, UserRoleEnum.DESIGNER, true).left() .value(); // Add property type list to resource ComponentInstanceProperty resourcePropertiesFromResponse = AtomicOperationUtils .addCustomPropertyToResource(propertyDetails, basicVFC, UserRoleEnum.DESIGNER, true).left().value(); String propertyUniqueId = resourcePropertiesFromResponse.getUniqueId(); // verify properties return from response assertEquals("list", resourcePropertiesFromResponse.getType()); assertEquals(expecteddefaultValues, resourcePropertiesFromResponse.getDefaultValue()); assertEquals(propertyDetails.getSchema().getProperty().getType(), resourcePropertiesFromResponse.getSchema().getProperty().getType()); // string/integer/boolean/float verifyResourcePropertyList(basicVFC, propertyDetails, expecteddefaultValues); // Update resource property type = "list" propertyDetails.setPropertyDefaultValue(newPropertyDefaltValues); propertyDetails.getSchema().getProperty().setType(newEntrySchemaType); ComponentInstanceProperty resourcePropertyAfterUpdate = AtomicOperationUtils .updatePropertyOfResource(propertyDetails, basicVFC, propertyUniqueId, UserRoleEnum.DESIGNER, true) .left().value(); assertEquals("list", resourcePropertyAfterUpdate.getType()); assertEquals(newExpecteddefaultValues, resourcePropertyAfterUpdate.getDefaultValue()); assertEquals(propertyDetails.getSchema().getProperty().getType(), resourcePropertyAfterUpdate.getSchema().getProperty().getType()); // string/integer/boolean/float verifyResourcePropertyList(basicVFC, propertyDetails, newExpecteddefaultValues); } // Add property type list to resource // DE199718 @Test(dataProvider = "invalidListProperties") // invalid default values public void addListPropertyToResourceFailureFlow(String entrySchemaType, String propertyDefaltValues) throws Exception { // String propertyType = "list"; PropertyReqDetails propertyDetails = ElementFactory.getDefaultListProperty(); propertyDetails.getSchema().getProperty().setType(entrySchemaType); propertyDetails.setPropertyDefaultValue(propertyDefaltValues); // create resource Resource basicVFC = AtomicOperationUtils.createResourcesByTypeNormTypeAndCatregory(ResourceTypeEnum.VFC, NormativeTypesEnum.ROOT, ResourceCategoryEnum.GENERIC_ABSTRACT, UserRoleEnum.DESIGNER, true).left() .value(); // Add property type list to resource RestResponse addPropertyToResourceResponse = AtomicOperationUtils .addCustomPropertyToResource(propertyDetails, basicVFC, UserRoleEnum.DESIGNER, false).right().value(); assertTrue(addPropertyToResourceResponse.getErrorCode().equals(STATUS_CODE_INVALID_CONTENT)); ArrayList variables = new ArrayList<>(); variables.add(propertyDetails.getName()); variables.add(propertyDetails.getPropertyType()); variables.add(propertyDetails.getSchema().getProperty().getType()); variables.add(propertyDefaltValues); ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.INVALID_COMPLEX_DEFAULT_VALUE.name(), variables, addPropertyToResourceResponse.getResponse()); } // DE199964 @Test public void addListPropertyToNonExistingResource() throws Exception { PropertyReqDetails propertyDetails = ElementFactory.getDefaultListProperty(); propertyDetails.getSchema().getProperty().setType("integer"); propertyDetails.setPropertyDefaultValue("[1,2]"); // create resource Resource basicVFC = AtomicOperationUtils.createResourcesByTypeNormTypeAndCatregory(ResourceTypeEnum.VFC, NormativeTypesEnum.ROOT, ResourceCategoryEnum.GENERIC_ABSTRACT, UserRoleEnum.DESIGNER, true).left() .value(); // Add property type list to non existing resource basicVFC.setUniqueId("1111111"); RestResponse addPropertyToResourceResponse = AtomicOperationUtils .addCustomPropertyToResource(propertyDetails, basicVFC, UserRoleEnum.DESIGNER, false).right().value(); assertTrue(addPropertyToResourceResponse.getErrorCode().equals(BaseRestUtils.STATUS_CODE_NOT_FOUND)); ArrayList variables = new ArrayList<>(); variables.add(""); ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.RESOURCE_NOT_FOUND.name(), variables, addPropertyToResourceResponse.getResponse()); } @Test public void addListPropertyToNonCheckedOutResource() throws Exception { PropertyReqDetails propertyDetails = ElementFactory.getDefaultListProperty(); propertyDetails.getSchema().getProperty().setType("integer"); propertyDetails.setPropertyDefaultValue("[1,2]"); // create resource Resource basicVFC = AtomicOperationUtils.createResourcesByTypeNormTypeAndCatregory(ResourceTypeEnum.VFC, NormativeTypesEnum.ROOT, ResourceCategoryEnum.GENERIC_ABSTRACT, UserRoleEnum.DESIGNER, true).left() .value(); AtomicOperationUtils.changeComponentState(basicVFC, UserRoleEnum.DESIGNER, LifeCycleStatesEnum.CHECKIN, true); // Add property type list to non Checked-Out resource RestResponse addPropertyToResourceResponse = AtomicOperationUtils .addCustomPropertyToResource(propertyDetails, basicVFC, UserRoleEnum.DESIGNER, false).right().value(); assertTrue(addPropertyToResourceResponse.getErrorCode().equals(BaseRestUtils.STATUS_CODE_RESTRICTED_OPERATION)); ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.RESTRICTED_OPERATION.name(), new ArrayList(), addPropertyToResourceResponse.getResponse()); } @Test public void addListPropertyToResourceByNonResourceOwner() throws Exception { PropertyReqDetails propertyDetails = ElementFactory.getDefaultListProperty(); propertyDetails.getSchema().getProperty().setType("integer"); propertyDetails.setPropertyDefaultValue("[1,2]"); // create resource Resource basicVFC = AtomicOperationUtils.createResourcesByTypeNormTypeAndCatregory(ResourceTypeEnum.VFC, NormativeTypesEnum.ROOT, ResourceCategoryEnum.GENERIC_ABSTRACT, UserRoleEnum.DESIGNER, true).left() .value(); // Add property type list to non Checked-Out resource RestResponse addPropertyToResourceResponse = AtomicOperationUtils .addCustomPropertyToResource(propertyDetails, basicVFC, UserRoleEnum.DESIGNER2, false).right().value(); assertTrue(addPropertyToResourceResponse.getErrorCode().equals(BaseRestUtils.STATUS_CODE_RESTRICTED_OPERATION)); ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.RESTRICTED_OPERATION.name(), new ArrayList(), addPropertyToResourceResponse.getResponse()); } @Test public void addListPropertyToResourcePropertyAlreadyExists01() throws Exception { String propertyType = "list"; String propertySchemaType = "integer"; String defaultValues = "[1,2]"; String expecteddefaultValues = "[1,2]"; PropertyReqDetails propertyDetails = ElementFactory.getDefaultListProperty(); propertyDetails.getSchema().getProperty().setType(propertySchemaType); propertyDetails.setPropertyDefaultValue(defaultValues); // create resource Resource basicVFC = AtomicOperationUtils.createResourcesByTypeNormTypeAndCatregory(ResourceTypeEnum.VFC, NormativeTypesEnum.ROOT, ResourceCategoryEnum.GENERIC_ABSTRACT, UserRoleEnum.DESIGNER, true).left() .value(); // check-in and check-out resource RestResponse changeComponentState = LifecycleRestUtils.changeComponentState(basicVFC, ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER), LifeCycleStatesEnum.CHECKIN); assertTrue(changeComponentState.getErrorCode().equals(BaseRestUtils.STATUS_CODE_SUCCESS)); changeComponentState = LifecycleRestUtils.changeComponentState(basicVFC, ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER), LifeCycleStatesEnum.CHECKOUT); assertTrue(changeComponentState.getErrorCode().equals(BaseRestUtils.STATUS_CODE_SUCCESS)); // Add property type list to resource ComponentInstanceProperty resourcePropertiesFromResponse = AtomicOperationUtils .addCustomPropertyToResource(propertyDetails, basicVFC, UserRoleEnum.DESIGNER, true).left().value(); // verify properties return from response assertEquals(resourcePropertiesFromResponse.getType(), propertyType); assertEquals(resourcePropertiesFromResponse.getDefaultValue(), expecteddefaultValues); assertEquals(resourcePropertiesFromResponse.getSchema().getProperty().getType(), propertySchemaType); // string/integer/boolean/float verifyResourcePropertyList(basicVFC, propertyDetails, expecteddefaultValues); // Add same property again to resource RestResponse addPropertyRestResponse = AtomicOperationUtils .addCustomPropertyToResource(propertyDetails, basicVFC, UserRoleEnum.DESIGNER, false).right().value(); assertTrue(addPropertyRestResponse.getErrorCode().equals(BaseRestUtils.STATUS_CODE_ALREADY_EXISTS)); ArrayList variables = new ArrayList<>(); variables.add(""); ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.PROPERTY_ALREADY_EXIST.name(), variables, addPropertyRestResponse.getResponse()); // verify property not deleted verifyResourcePropertyList(basicVFC, propertyDetails, expecteddefaultValues); } @Test public void addListPropertyToResourcePropertyAlreadyExists02() throws Exception { String propertyType = "list"; String propertySchemaType = "integer"; String defaultValues = "[1,2]"; String expecteddefaultValues = "[1,2]"; PropertyReqDetails propertyDetails = ElementFactory.getDefaultListProperty(); propertyDetails.getSchema().getProperty().setType(propertySchemaType); propertyDetails.setPropertyDefaultValue(defaultValues); // create resource Resource basicVFC = AtomicOperationUtils.createResourcesByTypeNormTypeAndCatregory(ResourceTypeEnum.VFC, NormativeTypesEnum.ROOT, ResourceCategoryEnum.GENERIC_ABSTRACT, UserRoleEnum.DESIGNER, true).left() .value(); // Add property type list to resource ComponentInstanceProperty resourcePropertiesFromResponse = AtomicOperationUtils .addCustomPropertyToResource(propertyDetails, basicVFC, UserRoleEnum.DESIGNER, true).left().value(); // verify properties return from response assertEquals(resourcePropertiesFromResponse.getType(), propertyType); assertEquals(resourcePropertiesFromResponse.getDefaultValue(), expecteddefaultValues); assertEquals(resourcePropertiesFromResponse.getSchema().getProperty().getType(), propertySchemaType); // string/integer/boolean/float verifyResourcePropertyList(basicVFC, propertyDetails, expecteddefaultValues); // check-in and check-out resource RestResponse changeComponentState = LifecycleRestUtils.changeComponentState(basicVFC, ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER), LifeCycleStatesEnum.CHECKIN); assertTrue(changeComponentState.getErrorCode().equals(BaseRestUtils.STATUS_CODE_SUCCESS)); changeComponentState = LifecycleRestUtils.changeComponentState(basicVFC, ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER), LifeCycleStatesEnum.CHECKOUT); assertTrue(changeComponentState.getErrorCode().equals(BaseRestUtils.STATUS_CODE_SUCCESS)); // Add same property again to resource RestResponse addPropertyRestResponse = AtomicOperationUtils .addCustomPropertyToResource(propertyDetails, basicVFC, UserRoleEnum.DESIGNER, false).right().value(); assertTrue(addPropertyRestResponse.getErrorCode().equals(BaseRestUtils.STATUS_CODE_ALREADY_EXISTS)); ArrayList variables = new ArrayList<>(); variables.add(""); ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.PROPERTY_ALREADY_EXIST.name(), variables, addPropertyRestResponse.getResponse()); // verify property not deleted verifyResourcePropertyList(basicVFC, propertyDetails, expecteddefaultValues); } @Test // DE199725 public void addListPropertyToResourceNonSupportedPropertyType() throws Exception { // Not // "list" // type String propertyType = "listttttttt"; PropertyReqDetails propertyDetails = ElementFactory.getDefaultListProperty(); propertyDetails.setPropertyType(propertyType); // create resource Resource basicVFC = AtomicOperationUtils.createResourcesByTypeNormTypeAndCatregory(ResourceTypeEnum.VFC, NormativeTypesEnum.ROOT, ResourceCategoryEnum.GENERIC_ABSTRACT, UserRoleEnum.DESIGNER, true).left() .value(); // Add property type list to resource RestResponse addPropertyRestResponse = AtomicOperationUtils .addCustomPropertyToResource(propertyDetails, basicVFC, UserRoleEnum.DESIGNER, false).right().value(); assertTrue(addPropertyRestResponse.getErrorCode().equals(STATUS_CODE_INVALID_CONTENT)); ArrayList variables = new ArrayList<>(); variables.add(propertyDetails.getPropertyType()); // property data type // (koko instead // list) variables.add(propertyDetails.getName()); ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.INVALID_PROPERTY_TYPE.name(), variables, addPropertyRestResponse.getResponse()); } @Test // DE199732 public void addListPropertyToResourceNonSupportedEntrySchemaType() throws Exception { String EntrySchemaType = "stringggg"; // instead "string" PropertyReqDetails propertyDetails = ElementFactory.getDefaultListProperty(); propertyDetails.getSchema().getProperty().setType(EntrySchemaType); // create resource Resource basicVFC = AtomicOperationUtils.createResourcesByTypeNormTypeAndCatregory(ResourceTypeEnum.VFC, NormativeTypesEnum.ROOT, ResourceCategoryEnum.GENERIC_ABSTRACT, UserRoleEnum.DESIGNER, true).left() .value(); // Add property type list to resource RestResponse addPropertyRestResponse = AtomicOperationUtils .addCustomPropertyToResource(propertyDetails, basicVFC, UserRoleEnum.DESIGNER, false).right().value(); assertTrue(addPropertyRestResponse.getErrorCode().equals(STATUS_CODE_INVALID_CONTENT)); ArrayList variables = new ArrayList<>(); variables.add(EntrySchemaType); variables.add(propertyDetails.getName()); ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.INVALID_PROPERTY_INNER_TYPE.name(), variables, addPropertyRestResponse.getResponse()); } @Test public void addHundredPropertyListToResourceSuccessFlow() throws Exception { String propertyType = "list"; // create resource Resource basicVFC = AtomicOperationUtils.createResourcesByTypeNormTypeAndCatregory(ResourceTypeEnum.VFC, NormativeTypesEnum.ROOT, ResourceCategoryEnum.GENERIC_ABSTRACT, UserRoleEnum.DESIGNER, true).left() .value(); PropertyReqDetails propertyDetails = ElementFactory.getDefaultListProperty(); String propertyName = propertyDetails.getName(); int numberOfPropertiesToAddToResource = 100; ComponentInstanceProperty resourcePropertiesFromResponse; for (int x = 0; x < numberOfPropertiesToAddToResource; x++) { propertyDetails.setName(propertyName + x); resourcePropertiesFromResponse = AtomicOperationUtils .addCustomPropertyToResource(propertyDetails, basicVFC, UserRoleEnum.DESIGNER, true).left().value(); // verify properties return from response assertEquals(resourcePropertiesFromResponse.getName(), propertyName + x); assertEquals(resourcePropertiesFromResponse.getType(), propertyType); assertEquals(resourcePropertiesFromResponse.getDefaultValue(), "[\"a\",\"b\"]"); assertEquals(resourcePropertiesFromResponse.getSchema().getProperty().getType(), propertyDetails.getSchema().getProperty().getType()); // string/integer/boolean/float } // get resource and verify that 100 properties exist Resource resourceObject = AtomicOperationUtils.getResourceObject(basicVFC, UserRoleEnum.DESIGNER); assertEquals(numberOfPropertiesToAddToResource, resourceObject.getProperties().size()); } @Test(dataProvider = "propertiesListDefaultValueSuccessFlow") public void addListPropertyToResourceSuccessFlow(String entrySchemaType, String propertyDefaltValues, String expecteddefaultValues) throws Exception { String propertyType = "list"; PropertyReqDetails propertyDetails = ElementFactory.getDefaultListProperty(); propertyDetails.getSchema().getProperty().setType(entrySchemaType); propertyDetails.setPropertyDefaultValue(propertyDefaltValues); // create resource Resource basicVFC = AtomicOperationUtils.createResourcesByTypeNormTypeAndCatregory(ResourceTypeEnum.VFC, NormativeTypesEnum.ROOT, ResourceCategoryEnum.GENERIC_ABSTRACT, UserRoleEnum.DESIGNER, true).left() .value(); // Add property type list to resource ComponentInstanceProperty resourcePropertiesFromResponse = AtomicOperationUtils .addCustomPropertyToResource(propertyDetails, basicVFC, UserRoleEnum.DESIGNER, true).left().value(); // verify properties return from response assertEquals(propertyType, resourcePropertiesFromResponse.getType()); assertEquals(expecteddefaultValues, resourcePropertiesFromResponse.getDefaultValue()); assertEquals(entrySchemaType, resourcePropertiesFromResponse.getSchema().getProperty().getType()); // string/integer/boolean/float verifyResourcePropertyList(basicVFC, propertyDetails, expecteddefaultValues); assertEquals(resourcePropertiesFromResponse.getType(), propertyType); assertEquals(resourcePropertiesFromResponse.getDefaultValue(), expecteddefaultValues); assertEquals(resourcePropertiesFromResponse.getSchema().getProperty().getType(), entrySchemaType); // string/integer/boolean/float verifyResourcePropertyList(basicVFC, propertyDetails, expecteddefaultValues); } // Delete property type list @Test public void deleteOneOfTheListPropertiesFromResourceAndAddItAgain() throws Exception { ComponentInstanceProperty resourcePropertiesFromResponse; PropertyReqDetails propertyDetailsTypeString = ElementFactory .getDefaultListProperty(PropertyTypeEnum.STRING_LIST); PropertyReqDetails propertyDetailsInteger = ElementFactory .getDefaultListProperty(PropertyTypeEnum.INTEGER_LIST); // create resource Resource basicVFC = AtomicOperationUtils.createResourcesByTypeNormTypeAndCatregory(ResourceTypeEnum.VFC, NormativeTypesEnum.ROOT, ResourceCategoryEnum.GENERIC_ABSTRACT, UserRoleEnum.DESIGNER, true).left() .value(); // Add 2 property type list to resource resourcePropertiesFromResponse = AtomicOperationUtils .addCustomPropertyToResource(propertyDetailsTypeString, basicVFC, UserRoleEnum.DESIGNER, true).left() .value(); assertEquals(resourcePropertiesFromResponse.getType(), propertyDetailsTypeString.getPropertyType()); assertEquals(resourcePropertiesFromResponse.getDefaultValue(), "[\"a\",\"b\"]"); assertEquals(resourcePropertiesFromResponse.getSchema().getProperty().getType(), propertyDetailsTypeString.getSchema().getProperty().getType()); // string/integer/boolean/float resourcePropertiesFromResponse = AtomicOperationUtils .addCustomPropertyToResource(propertyDetailsInteger, basicVFC, UserRoleEnum.DESIGNER, true).left() .value(); String propertyUniqueId = resourcePropertiesFromResponse.getUniqueId(); assertEquals(resourcePropertiesFromResponse.getType(), propertyDetailsInteger.getPropertyType()); assertEquals(resourcePropertiesFromResponse.getDefaultValue(), "[1,2]"); assertEquals(resourcePropertiesFromResponse.getSchema().getProperty().getType(), propertyDetailsInteger.getSchema().getProperty().getType()); // Get resource and verify updated default value RestResponse restResponse = ResourceRestUtils.getResource(basicVFC.getUniqueId()); Resource resource = ResponseParser.convertResourceResponseToJavaObject(restResponse.getResponse()); assertEquals(2, resource.getProperties().size()); // Delete one resource RestResponse deletePropertyOfResource = AtomicOperationUtils.deletePropertyOfResource(basicVFC.getUniqueId(), propertyUniqueId, UserRoleEnum.DESIGNER); assertTrue(BaseRestUtils.STATUS_CODE_DELETE == deletePropertyOfResource.getErrorCode()); // Get resource and verify updated default value restResponse = ResourceRestUtils.getResource(basicVFC.getUniqueId()); resource = ResponseParser.convertResourceResponseToJavaObject(restResponse.getResponse()); assertEquals(1, resource.getProperties().size()); verifyResourcePropertyList(basicVFC, propertyDetailsTypeString, "[\"a\",\"b\"]"); // Add deleted property again to resource resourcePropertiesFromResponse = AtomicOperationUtils .addCustomPropertyToResource(propertyDetailsInteger, basicVFC, UserRoleEnum.DESIGNER, true).left() .value(); assertEquals(resourcePropertiesFromResponse.getType(), propertyDetailsInteger.getPropertyType()); assertEquals(resourcePropertiesFromResponse.getDefaultValue(), "[1,2]"); assertEquals(resourcePropertiesFromResponse.getSchema().getProperty().getType(), propertyDetailsInteger.getSchema().getProperty().getType()); // Get resource and verify updated default value restResponse = ResourceRestUtils.getResource(basicVFC.getUniqueId()); resource = ResponseParser.convertResourceResponseToJavaObject(restResponse.getResponse()); assertEquals(2, resource.getProperties().size()); } @Test public void deletePropertyListTypeInteger() throws Exception { ComponentInstanceProperty resourcePropertiesFromResponse; PropertyReqDetails propertyDetailsTypeString = ElementFactory .getDefaultListProperty(PropertyTypeEnum.STRING_LIST); PropertyReqDetails propertyDetailsInteger = ElementFactory .getDefaultListProperty(PropertyTypeEnum.INTEGER_LIST); // create resource Resource basicVFC = AtomicOperationUtils.createResourcesByTypeNormTypeAndCatregory(ResourceTypeEnum.VFC, NormativeTypesEnum.ROOT, ResourceCategoryEnum.GENERIC_ABSTRACT, UserRoleEnum.DESIGNER, true).left() .value(); // Add 2 property type list to resource resourcePropertiesFromResponse = AtomicOperationUtils .addCustomPropertyToResource(propertyDetailsTypeString, basicVFC, UserRoleEnum.DESIGNER, true).left() .value(); String propertyUniqueId = resourcePropertiesFromResponse.getUniqueId(); assertEquals(resourcePropertiesFromResponse.getType(), propertyDetailsTypeString.getPropertyType()); assertEquals(resourcePropertiesFromResponse.getDefaultValue(), "[\"a\",\"b\"]"); assertEquals(resourcePropertiesFromResponse.getSchema().getProperty().getType(), propertyDetailsTypeString.getSchema().getProperty().getType()); // string/integer/boolean/float resourcePropertiesFromResponse = AtomicOperationUtils .addCustomPropertyToResource(propertyDetailsInteger, basicVFC, UserRoleEnum.DESIGNER, true).left() .value(); assertEquals(resourcePropertiesFromResponse.getType(), propertyDetailsInteger.getPropertyType()); assertEquals(resourcePropertiesFromResponse.getDefaultValue(), "[1,2]"); assertEquals(resourcePropertiesFromResponse.getSchema().getProperty().getType(), propertyDetailsInteger.getSchema().getProperty().getType()); // Get resource and verify updated default value RestResponse restResponse = ResourceRestUtils.getResource(basicVFC.getUniqueId()); Resource resource = ResponseParser.convertResourceResponseToJavaObject(restResponse.getResponse()); assertEquals(2, resource.getProperties().size()); // Delete one resource RestResponse deletePropertyOfResource = AtomicOperationUtils.deletePropertyOfResource(basicVFC.getUniqueId(), propertyUniqueId, UserRoleEnum.DESIGNER); assertTrue(BaseRestUtils.STATUS_CODE_DELETE == deletePropertyOfResource.getErrorCode()); // Get resource and verify updated default value restResponse = ResourceRestUtils.getResource(basicVFC.getUniqueId()); resource = ResponseParser.convertResourceResponseToJavaObject(restResponse.getResponse()); assertEquals(1, resource.getProperties().size()); verifyResourcePropertyList(basicVFC, propertyDetailsInteger, "[1,2]"); } @Test public void deletePropertyListTypeBoolean() throws Exception { ComponentInstanceProperty resourcePropertiesFromResponse; PropertyReqDetails propertyDetailsTypeString = ElementFactory .getDefaultListProperty(PropertyTypeEnum.BOOLEAN_LIST); PropertyReqDetails propertyDetailsInteger = ElementFactory .getDefaultListProperty(PropertyTypeEnum.INTEGER_LIST); // create resource Resource basicVFC = AtomicOperationUtils.createResourcesByTypeNormTypeAndCatregory(ResourceTypeEnum.VFC, NormativeTypesEnum.ROOT, ResourceCategoryEnum.GENERIC_ABSTRACT, UserRoleEnum.DESIGNER, true).left() .value(); // Add 2 property type list to resource resourcePropertiesFromResponse = AtomicOperationUtils .addCustomPropertyToResource(propertyDetailsTypeString, basicVFC, UserRoleEnum.DESIGNER, true).left() .value(); String propertyUniqueId = resourcePropertiesFromResponse.getUniqueId(); assertEquals(resourcePropertiesFromResponse.getType(), propertyDetailsTypeString.getPropertyType()); assertEquals(resourcePropertiesFromResponse.getDefaultValue(), "[true,false]"); assertEquals(resourcePropertiesFromResponse.getSchema().getProperty().getType(), propertyDetailsTypeString.getSchema().getProperty().getType()); // string/integer/boolean/float resourcePropertiesFromResponse = AtomicOperationUtils .addCustomPropertyToResource(propertyDetailsInteger, basicVFC, UserRoleEnum.DESIGNER, true).left() .value(); assertEquals(resourcePropertiesFromResponse.getType(), propertyDetailsInteger.getPropertyType()); assertEquals(resourcePropertiesFromResponse.getDefaultValue(), "[1,2]"); assertEquals(resourcePropertiesFromResponse.getSchema().getProperty().getType(), propertyDetailsInteger.getSchema().getProperty().getType()); // Get resource and verify updated default value RestResponse restResponse = ResourceRestUtils.getResource(basicVFC.getUniqueId()); Resource resource = ResponseParser.convertResourceResponseToJavaObject(restResponse.getResponse()); assertEquals(2, resource.getProperties().size()); // Delete one property RestResponse deletePropertyOfResource = AtomicOperationUtils.deletePropertyOfResource(basicVFC.getUniqueId(), propertyUniqueId, UserRoleEnum.DESIGNER); assertTrue(BaseRestUtils.STATUS_CODE_DELETE == deletePropertyOfResource.getErrorCode()); // Get resource and verify updated default value restResponse = ResourceRestUtils.getResource(basicVFC.getUniqueId()); resource = ResponseParser.convertResourceResponseToJavaObject(restResponse.getResponse()); assertEquals(1, resource.getProperties().size()); verifyResourcePropertyList(basicVFC, propertyDetailsInteger, "[1,2]"); } @Test public void deletePropertyListTypeFloat() throws Exception { ComponentInstanceProperty resourcePropertiesFromResponse; PropertyReqDetails propertyDetailsTypeString = ElementFactory .getDefaultListProperty(PropertyTypeEnum.FLOAT_LIST); PropertyReqDetails propertyDetailsInteger = ElementFactory .getDefaultListProperty(PropertyTypeEnum.INTEGER_LIST); // create resource Resource basicVFC = AtomicOperationUtils.createResourcesByTypeNormTypeAndCatregory(ResourceTypeEnum.VFC, NormativeTypesEnum.ROOT, ResourceCategoryEnum.GENERIC_ABSTRACT, UserRoleEnum.DESIGNER, true).left() .value(); // Add 2 property type list to resource resourcePropertiesFromResponse = AtomicOperationUtils .addCustomPropertyToResource(propertyDetailsTypeString, basicVFC, UserRoleEnum.DESIGNER, true).left() .value(); String propertyUniqueId = resourcePropertiesFromResponse.getUniqueId(); assertEquals(resourcePropertiesFromResponse.getType(), propertyDetailsTypeString.getPropertyType()); assertEquals(resourcePropertiesFromResponse.getDefaultValue(), "[1.0,2.0]"); assertEquals(resourcePropertiesFromResponse.getSchema().getProperty().getType(), propertyDetailsTypeString.getSchema().getProperty().getType()); // string/integer/boolean/float resourcePropertiesFromResponse = AtomicOperationUtils .addCustomPropertyToResource(propertyDetailsInteger, basicVFC, UserRoleEnum.DESIGNER, true).left() .value(); assertEquals(resourcePropertiesFromResponse.getType(), propertyDetailsInteger.getPropertyType()); assertEquals(resourcePropertiesFromResponse.getDefaultValue(), "[1,2]"); assertEquals(resourcePropertiesFromResponse.getSchema().getProperty().getType(), propertyDetailsInteger.getSchema().getProperty().getType()); // Get resource and verify updated default value RestResponse restResponse = ResourceRestUtils.getResource(basicVFC.getUniqueId()); Resource resource = ResponseParser.convertResourceResponseToJavaObject(restResponse.getResponse()); assertEquals(2, resource.getProperties().size()); // Delete one property RestResponse deletePropertyOfResource = AtomicOperationUtils.deletePropertyOfResource(basicVFC.getUniqueId(), propertyUniqueId, UserRoleEnum.DESIGNER); assertTrue(BaseRestUtils.STATUS_CODE_DELETE == deletePropertyOfResource.getErrorCode()); // Get resource and verify updated default value restResponse = ResourceRestUtils.getResource(basicVFC.getUniqueId()); resource = ResponseParser.convertResourceResponseToJavaObject(restResponse.getResponse()); assertEquals(1, resource.getProperties().size()); verifyResourcePropertyList(basicVFC, propertyDetailsInteger, "[1,2]"); } @Test public void deletePropertyListAlreadyDeleted() throws Exception { ComponentInstanceProperty resourcePropertiesFromResponse; PropertyReqDetails propertyDetailsTypeString = ElementFactory .getDefaultListProperty(PropertyTypeEnum.FLOAT_LIST); PropertyReqDetails propertyDetailsInteger = ElementFactory .getDefaultListProperty(PropertyTypeEnum.INTEGER_LIST); // create resource Resource basicVFC = AtomicOperationUtils.createResourcesByTypeNormTypeAndCatregory(ResourceTypeEnum.VFC, NormativeTypesEnum.ROOT, ResourceCategoryEnum.GENERIC_ABSTRACT, UserRoleEnum.DESIGNER, true).left() .value(); // Add 2 property type list to resource resourcePropertiesFromResponse = AtomicOperationUtils .addCustomPropertyToResource(propertyDetailsTypeString, basicVFC, UserRoleEnum.DESIGNER, true).left() .value(); String propertyUniqueId = resourcePropertiesFromResponse.getUniqueId(); assertEquals(resourcePropertiesFromResponse.getType(), propertyDetailsTypeString.getPropertyType()); assertEquals(resourcePropertiesFromResponse.getDefaultValue(), "[1.0,2.0]"); assertEquals(resourcePropertiesFromResponse.getSchema().getProperty().getType(), propertyDetailsTypeString.getSchema().getProperty().getType()); // string/integer/boolean/float resourcePropertiesFromResponse = AtomicOperationUtils .addCustomPropertyToResource(propertyDetailsInteger, basicVFC, UserRoleEnum.DESIGNER, true).left() .value(); assertEquals(resourcePropertiesFromResponse.getType(), propertyDetailsInteger.getPropertyType()); assertEquals(resourcePropertiesFromResponse.getDefaultValue(), "[1,2]"); assertEquals(resourcePropertiesFromResponse.getSchema().getProperty().getType(), propertyDetailsInteger.getSchema().getProperty().getType()); // Get resource and verify updated default value RestResponse restResponse = ResourceRestUtils.getResource(basicVFC.getUniqueId()); Resource resource = ResponseParser.convertResourceResponseToJavaObject(restResponse.getResponse()); assertEquals(2, resource.getProperties().size()); // Delete one property RestResponse deletePropertyOfResource = AtomicOperationUtils.deletePropertyOfResource(basicVFC.getUniqueId(), propertyUniqueId, UserRoleEnum.DESIGNER); assertTrue(BaseRestUtils.STATUS_CODE_DELETE == deletePropertyOfResource.getErrorCode()); // Get resource and verify updated default value restResponse = ResourceRestUtils.getResource(basicVFC.getUniqueId()); resource = ResponseParser.convertResourceResponseToJavaObject(restResponse.getResponse()); assertEquals(1, resource.getProperties().size()); verifyResourcePropertyList(basicVFC, propertyDetailsInteger, "[1,2]"); // delete again the same property deletePropertyOfResource = AtomicOperationUtils.deletePropertyOfResource(basicVFC.getUniqueId(), propertyUniqueId, UserRoleEnum.DESIGNER); assertTrue(BaseRestUtils.STATUS_CODE_NOT_FOUND == deletePropertyOfResource.getErrorCode()); ArrayList variables = new ArrayList<>(); variables.add(""); ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.PROPERTY_NOT_FOUND.name(), variables, deletePropertyOfResource.getResponse()); } @Test public void deletePropertyListResourceIsNotCheckedOutState() throws Exception { ComponentInstanceProperty resourcePropertiesFromResponse; PropertyReqDetails propertyDetailsTypeString = ElementFactory .getDefaultListProperty(PropertyTypeEnum.FLOAT_LIST); String expectedDefaultvalues = "[1.0,2.0]"; // create resource Resource basicVFC = AtomicOperationUtils.createResourcesByTypeNormTypeAndCatregory(ResourceTypeEnum.VFC, NormativeTypesEnum.ROOT, ResourceCategoryEnum.GENERIC_ABSTRACT, UserRoleEnum.DESIGNER, true).left() .value(); // Add property type list to resource resourcePropertiesFromResponse = AtomicOperationUtils .addCustomPropertyToResource(propertyDetailsTypeString, basicVFC, UserRoleEnum.DESIGNER, true).left() .value(); String propertyUniqueId = resourcePropertiesFromResponse.getUniqueId(); assertEquals(resourcePropertiesFromResponse.getType(), propertyDetailsTypeString.getPropertyType()); assertEquals(resourcePropertiesFromResponse.getDefaultValue(), expectedDefaultvalues); assertEquals(resourcePropertiesFromResponse.getSchema().getProperty().getType(), propertyDetailsTypeString.getSchema().getProperty().getType()); // string/integer/boolean/float // Get resource and verify updated default value verifyResourcePropertyList(basicVFC, propertyDetailsTypeString, expectedDefaultvalues); // Check-in resource AtomicOperationUtils.changeComponentState(basicVFC, UserRoleEnum.DESIGNER, LifeCycleStatesEnum.CHECKIN, true); // Delete property RestResponse deletePropertyOfResource = AtomicOperationUtils.deletePropertyOfResource(basicVFC.getUniqueId(), propertyUniqueId, UserRoleEnum.DESIGNER); assertTrue(BaseRestUtils.STATUS_CODE_RESTRICTED_OPERATION == deletePropertyOfResource.getErrorCode()); ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.RESTRICTED_OPERATION.name(), new ArrayList(), deletePropertyOfResource.getResponse()); // Get resource and verify property is not deleted verifyResourcePropertyList(basicVFC, propertyDetailsTypeString, expectedDefaultvalues); } @Test public void deletePropertyListResourceByNotIsNonResouceOwner() throws Exception { ComponentInstanceProperty resourcePropertiesFromResponse; PropertyReqDetails propertyDetailsTypeString = ElementFactory .getDefaultListProperty(PropertyTypeEnum.FLOAT_LIST); String expectedDefaultvalues = "[1.0,2.0]"; // create resource Resource basicVFC = AtomicOperationUtils.createResourcesByTypeNormTypeAndCatregory(ResourceTypeEnum.VFC, NormativeTypesEnum.ROOT, ResourceCategoryEnum.GENERIC_ABSTRACT, UserRoleEnum.DESIGNER, true).left() .value(); // Add property type list to resource resourcePropertiesFromResponse = AtomicOperationUtils .addCustomPropertyToResource(propertyDetailsTypeString, basicVFC, UserRoleEnum.DESIGNER, true).left() .value(); String propertyUniqueId = resourcePropertiesFromResponse.getUniqueId(); assertEquals(resourcePropertiesFromResponse.getType(), propertyDetailsTypeString.getPropertyType()); assertEquals(resourcePropertiesFromResponse.getDefaultValue(), expectedDefaultvalues); assertEquals(resourcePropertiesFromResponse.getSchema().getProperty().getType(), propertyDetailsTypeString.getSchema().getProperty().getType()); // string/integer/boolean/float // Get resource and verify updated default value verifyResourcePropertyList(basicVFC, propertyDetailsTypeString, expectedDefaultvalues); // Delete property by non resource owner RestResponse deletePropertyOfResource = AtomicOperationUtils.deletePropertyOfResource(basicVFC.getUniqueId(), propertyUniqueId, UserRoleEnum.DESIGNER2); assertTrue(BaseRestUtils.STATUS_CODE_RESTRICTED_OPERATION == deletePropertyOfResource.getErrorCode()); ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.RESTRICTED_OPERATION.name(), new ArrayList(), deletePropertyOfResource.getResponse()); // Get resource and verify property is not deleted verifyResourcePropertyList(basicVFC, propertyDetailsTypeString, expectedDefaultvalues); } @Test public void deletePropertyListFromNonExistingResource() throws Exception { ComponentInstanceProperty resourcePropertiesFromResponse; PropertyReqDetails propertyDetailsTypeString = ElementFactory .getDefaultListProperty(PropertyTypeEnum.FLOAT_LIST); String expectedDefaultvalues = "[1.0,2.0]"; // create resource Resource basicVFC = AtomicOperationUtils.createResourcesByTypeNormTypeAndCatregory(ResourceTypeEnum.VFC, NormativeTypesEnum.ROOT, ResourceCategoryEnum.GENERIC_ABSTRACT, UserRoleEnum.DESIGNER, true).left() .value(); String actualResourceUniqueId = basicVFC.getUniqueId(); // Add property type list to resource resourcePropertiesFromResponse = AtomicOperationUtils .addCustomPropertyToResource(propertyDetailsTypeString, basicVFC, UserRoleEnum.DESIGNER, true).left() .value(); String propertyUniqueId = resourcePropertiesFromResponse.getUniqueId(); assertEquals(resourcePropertiesFromResponse.getType(), propertyDetailsTypeString.getPropertyType()); assertEquals(resourcePropertiesFromResponse.getDefaultValue(), expectedDefaultvalues); assertEquals(resourcePropertiesFromResponse.getSchema().getProperty().getType(), propertyDetailsTypeString.getSchema().getProperty().getType()); // string/integer/boolean/float // Get resource and verify updated default value verifyResourcePropertyList(basicVFC, propertyDetailsTypeString, expectedDefaultvalues); // Delete property from non existing resource basicVFC.setUniqueId("1111111"); RestResponse deletePropertyOfResource = AtomicOperationUtils.deletePropertyOfResource(basicVFC.getUniqueId(), propertyUniqueId, UserRoleEnum.DESIGNER); assertTrue(deletePropertyOfResource.getErrorCode().equals(BaseRestUtils.STATUS_CODE_NOT_FOUND)); ArrayList variables = new ArrayList<>(); variables.add(""); ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.RESOURCE_NOT_FOUND.name(), variables, deletePropertyOfResource.getResponse()); // Get resource and verify property is not deleted basicVFC.setUniqueId(actualResourceUniqueId); verifyResourcePropertyList(basicVFC, propertyDetailsTypeString, expectedDefaultvalues); } @Test public void deletePropertyOfDerivedResource() throws Exception { PropertyReqDetails propertyDetails = ElementFactory.getDefaultListProperty(PropertyTypeEnum.STRING_LIST); // create resource Resource basicVFC = AtomicOperationUtils.createResourcesByTypeNormTypeAndCatregory(ResourceTypeEnum.VFC, NormativeTypesEnum.ROOT, ResourceCategoryEnum.GENERIC_ABSTRACT, UserRoleEnum.DESIGNER, true).left() .value(); // Add property type list to resource ComponentInstanceProperty resourcePropertiesFromResponse = AtomicOperationUtils .addCustomPropertyToResource(propertyDetails, basicVFC, UserRoleEnum.DESIGNER, true).left().value(); String derivedResourcePropertyUniqueId = resourcePropertiesFromResponse.getUniqueId(); AtomicOperationUtils.changeComponentState(basicVFC, UserRoleEnum.DESIGNER, LifeCycleStatesEnum.CERTIFY, true); // second resource derived from basicVFC Resource vfc1FromBasicVFC = AtomicOperationUtils .createResourcesByCustomNormativeTypeAndCatregory(ResourceTypeEnum.VFC, basicVFC, ResourceCategoryEnum.APPLICATION_L4_BORDER, UserRoleEnum.DESIGNER, true) .left().value(); // Delete property (list) of derived resource RestResponse deletePropertyOfResource = AtomicOperationUtils.deletePropertyOfResource( vfc1FromBasicVFC.getUniqueId(), derivedResourcePropertyUniqueId, UserRoleEnum.DESIGNER); assertTrue(deletePropertyOfResource.getErrorCode().equals(BaseRestUtils.STATUS_CODE_NOT_FOUND)); ArrayList variables = new ArrayList<>(); variables.add(""); ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.PROPERTY_NOT_FOUND.name(), variables, deletePropertyOfResource.getResponse()); // Verify resource's priority list did not changed verifyResourcePropertyList(vfc1FromBasicVFC, propertyDetails, "[\"a\",\"b\"]"); } @Test public void deletePropertyOfNonDerivedResource() throws Exception { PropertyReqDetails propertyListString = ElementFactory.getDefaultListProperty(PropertyTypeEnum.STRING_LIST); // create resource Resource basicVFC = AtomicOperationUtils.createResourcesByTypeNormTypeAndCatregory(ResourceTypeEnum.VFC, NormativeTypesEnum.ROOT, ResourceCategoryEnum.GENERIC_ABSTRACT, UserRoleEnum.DESIGNER, true).left() .value(); // Add property type list to resource ComponentInstanceProperty resourcePropertiesFromResponse = AtomicOperationUtils .addCustomPropertyToResource(propertyListString, basicVFC, UserRoleEnum.DESIGNER, true).left().value(); AtomicOperationUtils.changeComponentState(basicVFC, UserRoleEnum.DESIGNER, LifeCycleStatesEnum.CERTIFY, true); // second resource derived from basicVFC Resource vfc1FromBasicVFC = AtomicOperationUtils .createResourcesByCustomNormativeTypeAndCatregory(ResourceTypeEnum.VFC, basicVFC, ResourceCategoryEnum.APPLICATION_L4_BORDER, UserRoleEnum.DESIGNER, true) .left().value(); // add property Type list to second resource PropertyReqDetails propertyListInteger = ElementFactory.getDefaultListProperty(PropertyTypeEnum.INTEGER_LIST); resourcePropertiesFromResponse = AtomicOperationUtils .addCustomPropertyToResource(propertyListInteger, vfc1FromBasicVFC, UserRoleEnum.DESIGNER, true).left() .value(); String propertyUniqueId = resourcePropertiesFromResponse.getUniqueId(); // Delete property (list) of derived resource RestResponse deletePropertyOfResource = AtomicOperationUtils .deletePropertyOfResource(vfc1FromBasicVFC.getUniqueId(), propertyUniqueId, UserRoleEnum.DESIGNER); assertTrue(BaseRestUtils.STATUS_CODE_DELETE == deletePropertyOfResource.getErrorCode()); // Get resource and verify updated default value RestResponse restResponse = ResourceRestUtils.getResource(basicVFC.getUniqueId()); Resource resource = ResponseParser.convertResourceResponseToJavaObject(restResponse.getResponse()); assertEquals(1, resource.getProperties().size()); verifyResourcePropertyList(basicVFC, propertyListString, "[\"a\",\"b\"]"); } private void verifyResourcePropertyList(Resource resource, PropertyReqDetails expectedProperty, String expecteddefaultValues) throws Exception { // get resource and verify property from type list Resource getResource = AtomicOperationUtils.getResourceObject(resource, UserRoleEnum.DESIGNER); List actualResourceProperties = getResource.getProperties(); boolean isPropertyAppear = false; for (PropertyDefinition pro : actualResourceProperties) { if (expectedProperty.getName().equals(pro.getName())) { assertTrue("Check Property Type ", pro.getType().equals(expectedProperty.getPropertyType())); assertEquals("Check Property default values ", expecteddefaultValues, pro.getDefaultValue()); // assertTrue("Check Property default values ", // pro.getDefaultValue().equals(expecteddefaultValues)); assertTrue("Check entrySchema Property Type ", pro.getSchema().getProperty().getType() .equals(expectedProperty.getSchema().getProperty().getType())); isPropertyAppear = true; } } assertTrue(isPropertyAppear); } // US656905 // --------------------- Map Property // ---------------------------------------------------------------- @Test(dataProvider = "updatePropertiesMapDefaultValueFailureFlow") public void updateDefaultValueOfResourcePropertyMapFailureFlow(String entrySchemaType, String propertyDefaultValues, String expectedDefaultValue, String newEntrySchemaType, String newPropertyDefaultValue) throws Exception { PropertyReqDetails propertyDetails = ElementFactory.getDefaultMapProperty(); propertyDetails.setPropertyDefaultValue(propertyDefaultValues); propertyDetails.getSchema().getProperty().setType(entrySchemaType); // create resource Resource basicVFC = AtomicOperationUtils.createResourcesByTypeNormTypeAndCatregory(ResourceTypeEnum.VFC, NormativeTypesEnum.ROOT, ResourceCategoryEnum.GENERIC_ABSTRACT, UserRoleEnum.DESIGNER, true).left() .value(); // Add property type list to resource ComponentInstanceProperty resourcePropertiesFromResponse = AtomicOperationUtils .addCustomPropertyToResource(propertyDetails, basicVFC, UserRoleEnum.DESIGNER, true).left().value(); String propertyUniqueId = resourcePropertiesFromResponse.getUniqueId(); // verify properties return from response assertEquals("map", resourcePropertiesFromResponse.getType()); assertEquals(expectedDefaultValue, resourcePropertiesFromResponse.getDefaultValue()); assertEquals(propertyDetails.getSchema().getProperty().getType(), resourcePropertiesFromResponse.getSchema().getProperty().getType()); // string/integer/boolean/float verifyResourcePropertyList(basicVFC, propertyDetails, expectedDefaultValue); // Update resource property type = "map" propertyDetails.setPropertyDefaultValue(newPropertyDefaultValue); propertyDetails.getSchema().getProperty().setType(newEntrySchemaType); RestResponse updatePropertyResponse = AtomicOperationUtils .updatePropertyOfResource(propertyDetails, basicVFC, propertyUniqueId, UserRoleEnum.DESIGNER, false) .right().value(); assertTrue(updatePropertyResponse.getErrorCode().equals(STATUS_CODE_INVALID_CONTENT)); ArrayList variables = new ArrayList<>(); variables.add(propertyDetails.getName()); variables.add(propertyDetails.getPropertyType()); variables.add(propertyDetails.getSchema().getProperty().getType()); variables.add(newPropertyDefaultValue); ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.INVALID_COMPLEX_DEFAULT_VALUE.name(), variables, updatePropertyResponse.getResponse()); } @Test(dataProvider = "updatePropertiesMapDefaultValueSuccessFlow") public void updateResourcePropertyMapSuccessFlow(String entrySchemaType, String propertyDefaultValues, String expectedDefaultValue, String newEntrySchemaType, String newPropertyDefaultValue, String newExpectedDefaultValue) throws Exception { PropertyReqDetails propertyDetails = ElementFactory.getDefaultMapProperty(); propertyDetails.setPropertyDefaultValue(propertyDefaultValues); propertyDetails.getSchema().getProperty().setType(entrySchemaType); // create resource Resource basicVFC = AtomicOperationUtils.createResourcesByTypeNormTypeAndCatregory(ResourceTypeEnum.VFC, NormativeTypesEnum.ROOT, ResourceCategoryEnum.GENERIC_ABSTRACT, UserRoleEnum.DESIGNER, true).left() .value(); // Add property type list to resource ComponentInstanceProperty resourcePropertiesFromResponse = AtomicOperationUtils .addCustomPropertyToResource(propertyDetails, basicVFC, UserRoleEnum.DESIGNER, true).left().value(); String propertyUniqueId = resourcePropertiesFromResponse.getUniqueId(); // verify properties return from response assertEquals("map", resourcePropertiesFromResponse.getType()); assertEquals(expectedDefaultValue, resourcePropertiesFromResponse.getDefaultValue()); assertEquals(propertyDetails.getSchema().getProperty().getType(), resourcePropertiesFromResponse.getSchema().getProperty().getType()); // string/integer/boolean/float verifyResourcePropertyList(basicVFC, propertyDetails, expectedDefaultValue); // Update resource property type = "map" propertyDetails.setPropertyDefaultValue(newPropertyDefaultValue); propertyDetails.getSchema().getProperty().setType(newEntrySchemaType); ComponentInstanceProperty resourcePropertyAfterUpdate = AtomicOperationUtils .updatePropertyOfResource(propertyDetails, basicVFC, propertyUniqueId, UserRoleEnum.DESIGNER, true) .left().value(); assertEquals("map", resourcePropertyAfterUpdate.getType()); assertEquals(newExpectedDefaultValue, resourcePropertyAfterUpdate.getDefaultValue()); assertEquals(propertyDetails.getSchema().getProperty().getType(), resourcePropertyAfterUpdate.getSchema().getProperty().getType()); // string/integer/boolean/float verifyResourcePropertyList(basicVFC, propertyDetails, newExpectedDefaultValue); } @Test public void deletePropertyMapTypeString() throws Exception { ComponentInstanceProperty resourcePropertiesFromResponse; PropertyReqDetails propertyDetailsTypeString = ElementFactory .getDefaultMapProperty(PropertyTypeEnum.STRING_MAP); PropertyReqDetails propertyDetailsInteger = ElementFactory.getDefaultMapProperty(PropertyTypeEnum.INTEGER_MAP); // create resource Resource basicVFC = AtomicOperationUtils.createResourcesByTypeNormTypeAndCatregory(ResourceTypeEnum.VFC, NormativeTypesEnum.ROOT, ResourceCategoryEnum.GENERIC_ABSTRACT, UserRoleEnum.DESIGNER, true).left() .value(); // Add 2 property type list to resource resourcePropertiesFromResponse = AtomicOperationUtils .addCustomPropertyToResource(propertyDetailsTypeString, basicVFC, UserRoleEnum.DESIGNER, true).left() .value(); String propertyUniqueId = resourcePropertiesFromResponse.getUniqueId(); assertEquals(resourcePropertiesFromResponse.getType(), propertyDetailsTypeString.getPropertyType()); assertEquals("{\"key1\":\"val1\",\"key2\":\"val2\"}", resourcePropertiesFromResponse.getDefaultValue()); assertEquals(resourcePropertiesFromResponse.getSchema().getProperty().getType(), propertyDetailsTypeString.getSchema().getProperty().getType()); // string/integer/boolean/float resourcePropertiesFromResponse = AtomicOperationUtils .addCustomPropertyToResource(propertyDetailsInteger, basicVFC, UserRoleEnum.DESIGNER, true).left() .value(); assertEquals(resourcePropertiesFromResponse.getType(), propertyDetailsInteger.getPropertyType()); assertEquals("{\"key1\":123,\"key2\":-456}", resourcePropertiesFromResponse.getDefaultValue()); assertEquals(resourcePropertiesFromResponse.getSchema().getProperty().getType(), propertyDetailsInteger.getSchema().getProperty().getType()); // Get resource and verify updated default value RestResponse restResponse = ResourceRestUtils.getResource(basicVFC.getUniqueId()); Resource resource = ResponseParser.convertResourceResponseToJavaObject(restResponse.getResponse()); assertEquals(2, resource.getProperties().size()); // Delete one resource RestResponse deletePropertyOfResource = AtomicOperationUtils.deletePropertyOfResource(basicVFC.getUniqueId(), propertyUniqueId, UserRoleEnum.DESIGNER); assertTrue(BaseRestUtils.STATUS_CODE_DELETE == deletePropertyOfResource.getErrorCode()); // Get resource and verify updated default value restResponse = ResourceRestUtils.getResource(basicVFC.getUniqueId()); resource = ResponseParser.convertResourceResponseToJavaObject(restResponse.getResponse()); assertEquals(1, resource.getProperties().size()); verifyResourcePropertyList(basicVFC, propertyDetailsInteger, "{\"key1\":123,\"key2\":-456}"); } @Test public void deletePropertyMapTypeFloat() throws Exception { ComponentInstanceProperty resourcePropertiesFromResponse; PropertyReqDetails propertyDetailsTypeFloat = ElementFactory.getDefaultMapProperty(PropertyTypeEnum.FLOAT_MAP); PropertyReqDetails propertyDetailsInteger = ElementFactory.getDefaultMapProperty(PropertyTypeEnum.INTEGER_MAP); // create resource Resource basicVFC = AtomicOperationUtils.createResourcesByTypeNormTypeAndCatregory(ResourceTypeEnum.VFC, NormativeTypesEnum.ROOT, ResourceCategoryEnum.GENERIC_ABSTRACT, UserRoleEnum.DESIGNER, true).left() .value(); // Add 2 property type list to resource resourcePropertiesFromResponse = AtomicOperationUtils .addCustomPropertyToResource(propertyDetailsTypeFloat, basicVFC, UserRoleEnum.DESIGNER, true).left() .value(); String propertyUniqueId = resourcePropertiesFromResponse.getUniqueId(); assertEquals(resourcePropertiesFromResponse.getType(), propertyDetailsTypeFloat.getPropertyType()); assertEquals("{\"key1\":0.2123,\"key2\":43.545}", resourcePropertiesFromResponse.getDefaultValue()); assertEquals(resourcePropertiesFromResponse.getSchema().getProperty().getType(), propertyDetailsTypeFloat.getSchema().getProperty().getType()); // string/integer/boolean/float resourcePropertiesFromResponse = AtomicOperationUtils .addCustomPropertyToResource(propertyDetailsInteger, basicVFC, UserRoleEnum.DESIGNER, true).left() .value(); assertEquals(resourcePropertiesFromResponse.getType(), propertyDetailsInteger.getPropertyType()); assertEquals("{\"key1\":123,\"key2\":-456}", resourcePropertiesFromResponse.getDefaultValue()); assertEquals(resourcePropertiesFromResponse.getSchema().getProperty().getType(), propertyDetailsInteger.getSchema().getProperty().getType()); // Get resource and verify updated default value RestResponse restResponse = ResourceRestUtils.getResource(basicVFC.getUniqueId()); Resource resource = ResponseParser.convertResourceResponseToJavaObject(restResponse.getResponse()); assertEquals(2, resource.getProperties().size()); // Delete one resource RestResponse deletePropertyOfResource = AtomicOperationUtils.deletePropertyOfResource(basicVFC.getUniqueId(), propertyUniqueId, UserRoleEnum.DESIGNER); assertTrue(BaseRestUtils.STATUS_CODE_DELETE == deletePropertyOfResource.getErrorCode()); // Get resource and verify updated default value restResponse = ResourceRestUtils.getResource(basicVFC.getUniqueId()); resource = ResponseParser.convertResourceResponseToJavaObject(restResponse.getResponse()); assertEquals(1, resource.getProperties().size()); verifyResourcePropertyList(basicVFC, propertyDetailsInteger, "{\"key1\":123,\"key2\":-456}"); } @Test public void deletePropertyMapTypeBoolean() throws Exception { ComponentInstanceProperty resourcePropertiesFromResponse; PropertyReqDetails propertyDetailsTypeBoolean = ElementFactory .getDefaultMapProperty(PropertyTypeEnum.BOOLEAN_MAP); PropertyReqDetails propertyDetailsInteger = ElementFactory.getDefaultMapProperty(PropertyTypeEnum.INTEGER_MAP); // create resource Resource basicVFC = AtomicOperationUtils.createResourcesByTypeNormTypeAndCatregory(ResourceTypeEnum.VFC, NormativeTypesEnum.ROOT, ResourceCategoryEnum.GENERIC_ABSTRACT, UserRoleEnum.DESIGNER, true).left() .value(); // Add 2 property type list to resource resourcePropertiesFromResponse = AtomicOperationUtils .addCustomPropertyToResource(propertyDetailsTypeBoolean, basicVFC, UserRoleEnum.DESIGNER, true).left() .value(); String propertyUniqueId = resourcePropertiesFromResponse.getUniqueId(); assertEquals(resourcePropertiesFromResponse.getType(), propertyDetailsTypeBoolean.getPropertyType()); assertEquals("{\"key1\":true,\"key2\":false}", resourcePropertiesFromResponse.getDefaultValue()); assertEquals(resourcePropertiesFromResponse.getSchema().getProperty().getType(), propertyDetailsTypeBoolean.getSchema().getProperty().getType()); // string/integer/boolean/float resourcePropertiesFromResponse = AtomicOperationUtils .addCustomPropertyToResource(propertyDetailsInteger, basicVFC, UserRoleEnum.DESIGNER, true).left() .value(); assertEquals(resourcePropertiesFromResponse.getType(), propertyDetailsInteger.getPropertyType()); assertEquals("{\"key1\":123,\"key2\":-456}", resourcePropertiesFromResponse.getDefaultValue()); assertEquals(resourcePropertiesFromResponse.getSchema().getProperty().getType(), propertyDetailsInteger.getSchema().getProperty().getType()); // Get resource and verify updated default value RestResponse restResponse = ResourceRestUtils.getResource(basicVFC.getUniqueId()); Resource resource = ResponseParser.convertResourceResponseToJavaObject(restResponse.getResponse()); assertEquals(2, resource.getProperties().size()); // Delete one resource RestResponse deletePropertyOfResource = AtomicOperationUtils.deletePropertyOfResource(basicVFC.getUniqueId(), propertyUniqueId, UserRoleEnum.DESIGNER); assertTrue(BaseRestUtils.STATUS_CODE_DELETE == deletePropertyOfResource.getErrorCode()); // Get resource and verify updated default value restResponse = ResourceRestUtils.getResource(basicVFC.getUniqueId()); resource = ResponseParser.convertResourceResponseToJavaObject(restResponse.getResponse()); assertEquals(1, resource.getProperties().size()); verifyResourcePropertyList(basicVFC, propertyDetailsInteger, "{\"key1\":123,\"key2\":-456}"); } @Test public void deletePropertyMapTypeInteger() throws Exception { ComponentInstanceProperty resourcePropertiesFromResponse; PropertyReqDetails propertyDetailsTypeInteger = ElementFactory .getDefaultMapProperty(PropertyTypeEnum.INTEGER_MAP); PropertyReqDetails propertyDetailsBoolean = ElementFactory.getDefaultMapProperty(PropertyTypeEnum.BOOLEAN_MAP); // create resource Resource basicVFC = AtomicOperationUtils.createResourcesByTypeNormTypeAndCatregory(ResourceTypeEnum.VFC, NormativeTypesEnum.ROOT, ResourceCategoryEnum.GENERIC_ABSTRACT, UserRoleEnum.DESIGNER, true).left() .value(); // Add 2 property type list to resource resourcePropertiesFromResponse = AtomicOperationUtils .addCustomPropertyToResource(propertyDetailsTypeInteger, basicVFC, UserRoleEnum.DESIGNER, true).left() .value(); String propertyUniqueId = resourcePropertiesFromResponse.getUniqueId(); assertEquals(resourcePropertiesFromResponse.getType(), propertyDetailsTypeInteger.getPropertyType()); assertEquals("{\"key1\":123,\"key2\":-456}", resourcePropertiesFromResponse.getDefaultValue()); assertEquals(resourcePropertiesFromResponse.getSchema().getProperty().getType(), propertyDetailsTypeInteger.getSchema().getProperty().getType()); // string/integer/boolean/float resourcePropertiesFromResponse = AtomicOperationUtils .addCustomPropertyToResource(propertyDetailsBoolean, basicVFC, UserRoleEnum.DESIGNER, true).left() .value(); assertEquals(resourcePropertiesFromResponse.getType(), propertyDetailsBoolean.getPropertyType()); assertEquals("{\"key1\":true,\"key2\":false}", resourcePropertiesFromResponse.getDefaultValue()); assertEquals(resourcePropertiesFromResponse.getSchema().getProperty().getType(), propertyDetailsBoolean.getSchema().getProperty().getType()); // Get resource and verify updated default value RestResponse restResponse = ResourceRestUtils.getResource(basicVFC.getUniqueId()); Resource resource = ResponseParser.convertResourceResponseToJavaObject(restResponse.getResponse()); assertEquals(2, resource.getProperties().size()); // Delete one resource RestResponse deletePropertyOfResource = AtomicOperationUtils.deletePropertyOfResource(basicVFC.getUniqueId(), propertyUniqueId, UserRoleEnum.DESIGNER); assertTrue(BaseRestUtils.STATUS_CODE_DELETE == deletePropertyOfResource.getErrorCode()); // Get resource and verify updated default value restResponse = ResourceRestUtils.getResource(basicVFC.getUniqueId()); resource = ResponseParser.convertResourceResponseToJavaObject(restResponse.getResponse()); assertEquals(1, resource.getProperties().size()); verifyResourcePropertyList(basicVFC, propertyDetailsBoolean, "{\"key1\":true,\"key2\":false}"); } @Test(dataProvider = "propertiesMapDefaultValueSuccessFlow") public void addMapPropertyToResourceSuccessFlow(String entrySchemaType, String propertyDefaltValues, String expecteddefaultValues) throws Exception { String propertyType = "map"; PropertyReqDetails propertyDetails = ElementFactory.getDefaultMapProperty(); propertyDetails.getSchema().getProperty().setType(entrySchemaType); propertyDetails.setPropertyDefaultValue(propertyDefaltValues); // create resource Resource basicVFC = AtomicOperationUtils.createResourcesByTypeNormTypeAndCatregory(ResourceTypeEnum.VFC, NormativeTypesEnum.ROOT, ResourceCategoryEnum.GENERIC_ABSTRACT, UserRoleEnum.DESIGNER, true).left() .value(); // Add property type list to resource ComponentInstanceProperty resourcePropertiesFromResponse = AtomicOperationUtils .addCustomPropertyToResource(propertyDetails, basicVFC, UserRoleEnum.DESIGNER, true).left().value(); // verify properties return from response assertEquals(propertyType, resourcePropertiesFromResponse.getType()); assertEquals(expecteddefaultValues, resourcePropertiesFromResponse.getDefaultValue()); assertEquals(entrySchemaType, resourcePropertiesFromResponse.getSchema().getProperty().getType()); // string/integer/boolean/float verifyResourcePropertyList(basicVFC, propertyDetails, expecteddefaultValues); } @Test public void addMapPropertyToNonExistingResource() throws Exception { PropertyReqDetails propertyDetails = ElementFactory.getDefaultListProperty(); propertyDetails.getSchema().getProperty().setType("integer"); propertyDetails.setPropertyDefaultValue("{\"key1\":1 , \"key2\":2}"); // create resource Resource basicVFC = AtomicOperationUtils.createResourcesByTypeNormTypeAndCatregory(ResourceTypeEnum.VFC, NormativeTypesEnum.ROOT, ResourceCategoryEnum.GENERIC_ABSTRACT, UserRoleEnum.DESIGNER, true).left() .value(); // Add property type list to non existing resource basicVFC.setUniqueId("1111111"); RestResponse addPropertyToResourceResponse = AtomicOperationUtils .addCustomPropertyToResource(propertyDetails, basicVFC, UserRoleEnum.DESIGNER, false).right().value(); assertTrue(addPropertyToResourceResponse.getErrorCode().equals(BaseRestUtils.STATUS_CODE_NOT_FOUND)); ArrayList variables = new ArrayList<>(); variables.add(""); ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.RESOURCE_NOT_FOUND.name(), variables, addPropertyToResourceResponse.getResponse()); } @Test public void addMaptPropertyToResourceByNonResourceOwner() throws Exception { PropertyReqDetails propertyDetails = ElementFactory.getDefaultListProperty(); propertyDetails.getSchema().getProperty().setType("integer"); propertyDetails.setPropertyDefaultValue("{\"key1\":1 , \"key2\":2}"); // create resource Resource basicVFC = AtomicOperationUtils.createResourcesByTypeNormTypeAndCatregory(ResourceTypeEnum.VFC, NormativeTypesEnum.ROOT, ResourceCategoryEnum.GENERIC_ABSTRACT, UserRoleEnum.DESIGNER, true).left() .value(); // Add property type list to non Checked-Out resource RestResponse addPropertyToResourceResponse = AtomicOperationUtils .addCustomPropertyToResource(propertyDetails, basicVFC, UserRoleEnum.DESIGNER2, false).right().value(); assertTrue(addPropertyToResourceResponse.getErrorCode().equals(BaseRestUtils.STATUS_CODE_RESTRICTED_OPERATION)); ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.RESTRICTED_OPERATION.name(), new ArrayList(), addPropertyToResourceResponse.getResponse()); } @Test public void addMapPropertyToResourcePropertyAlreadyExists() throws Exception { ComponentInstanceProperty resourcePropertiesFromResponse; PropertyReqDetails propertyDetailsTypeString = ElementFactory .getDefaultListProperty(PropertyTypeEnum.STRING_MAP); // create resource Resource basicVFC = AtomicOperationUtils.createResourcesByTypeNormTypeAndCatregory(ResourceTypeEnum.VFC, NormativeTypesEnum.ROOT, ResourceCategoryEnum.GENERIC_ABSTRACT, UserRoleEnum.DESIGNER, true).left() .value(); // Add 2 property type list to resource resourcePropertiesFromResponse = AtomicOperationUtils .addCustomPropertyToResource(propertyDetailsTypeString, basicVFC, UserRoleEnum.DESIGNER, true).left() .value(); assertEquals(resourcePropertiesFromResponse.getType(), propertyDetailsTypeString.getPropertyType()); assertEquals("{\"key1\":\"val1\",\"key2\":\"val2\"}", resourcePropertiesFromResponse.getDefaultValue()); assertEquals(resourcePropertiesFromResponse.getSchema().getProperty().getType(), propertyDetailsTypeString.getSchema().getProperty().getType()); // string/integer/boolean/float // check-in and check-out resource RestResponse changeComponentState = LifecycleRestUtils.changeComponentState(basicVFC, ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER), LifeCycleStatesEnum.CHECKIN); assertTrue(changeComponentState.getErrorCode().equals(BaseRestUtils.STATUS_CODE_SUCCESS)); changeComponentState = LifecycleRestUtils.changeComponentState(basicVFC, ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER), LifeCycleStatesEnum.CHECKOUT); assertTrue(changeComponentState.getErrorCode().equals(BaseRestUtils.STATUS_CODE_SUCCESS)); // Add same property again to resource RestResponse addPropertyRestResponse = AtomicOperationUtils .addCustomPropertyToResource(propertyDetailsTypeString, basicVFC, UserRoleEnum.DESIGNER, false).right() .value(); assertTrue(addPropertyRestResponse.getErrorCode().equals(BaseRestUtils.STATUS_CODE_ALREADY_EXISTS)); ArrayList variables = new ArrayList<>(); variables.add(""); ErrorValidationUtils.checkBodyResponseOnError(ActionStatus.PROPERTY_ALREADY_EXIST.name(), variables, addPropertyRestResponse.getResponse()); // verify property not deleted verifyResourcePropertyList(basicVFC, propertyDetailsTypeString, "{\"key1\":\"val1\",\"key2\":\"val2\"}"); } }