2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.openecomp.sdc.ci.tests.execute.product;
23 import static org.openecomp.sdc.ci.tests.utils.rest.BaseRestUtils.PRODUCT_COMPONENT_TYPE;
25 import java.io.IOException;
26 import java.util.ArrayList;
27 import java.util.List;
29 import org.junit.rules.TestName;
30 import org.openecomp.sdc.be.model.User;
31 import org.openecomp.sdc.be.model.category.CategoryDefinition;
32 import org.openecomp.sdc.be.model.category.GroupingDefinition;
33 import org.openecomp.sdc.be.model.category.SubCategoryDefinition;
34 import org.openecomp.sdc.ci.tests.api.ComponentBaseTest;
35 import org.openecomp.sdc.ci.tests.datatypes.enums.UserRoleEnum;
36 import org.openecomp.sdc.ci.tests.datatypes.http.RestResponse;
37 import org.openecomp.sdc.ci.tests.utils.general.ElementFactory;
38 import org.openecomp.sdc.ci.tests.utils.rest.BaseRestUtils;
39 import org.openecomp.sdc.ci.tests.utils.rest.CategoryRestUtils;
40 import org.openecomp.sdc.ci.tests.utils.rest.ResponseParser;
41 import org.testng.annotations.BeforeMethod;
43 import com.google.gson.Gson;
44 import com.google.gson.reflect.TypeToken;
46 public abstract class ProductBaseTest extends ComponentBaseTest {
47 User productStrategistUser1;
48 User productStrategistUser2;
49 User productStrategistUser3;
55 // Category1->Subcategory1->Grouping1
56 protected List<CategoryDefinition> defaultCategories;
58 protected static String auditAction;
59 protected static ComponentOperationEnum operation;
61 public ProductBaseTest(TestName testName, String className) {
62 super(testName, className);
66 public void beforeProductTest() throws IOException, Exception {
67 productStrategistUser1 = ElementFactory.getDefaultUser(UserRoleEnum.PRODUCT_STRATEGIST1);
68 productStrategistUser2 = ElementFactory.getDefaultUser(UserRoleEnum.PRODUCT_STRATEGIST2);
69 productStrategistUser3 = ElementFactory.getDefaultUser(UserRoleEnum.PRODUCT_STRATEGIST3);
70 productManager1 = ElementFactory.getDefaultUser(UserRoleEnum.PRODUCT_MANAGER1);
71 productManager2 = ElementFactory.getDefaultUser(UserRoleEnum.PRODUCT_MANAGER2);
72 adminUser = ElementFactory.getDefaultUser(UserRoleEnum.ADMIN);
73 designerUser = ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER);
77 private void createDefaultChain() throws Exception {
78 CategoryDefinition productCategoryDefinition = ElementFactory.getDefaultCategory();
79 SubCategoryDefinition productSubCategoryDefinition = ElementFactory.getDefaultSubCategory();
80 GroupingDefinition productGroupingDefinition = ElementFactory.getDefaultGroup();
81 productCategoryDefinition.addSubCategory(productSubCategoryDefinition);
82 productSubCategoryDefinition.addGrouping(productGroupingDefinition);
83 List<CategoryDefinition> definitionsList = new ArrayList<>();
84 definitionsList.add(productCategoryDefinition);
85 defaultCategories = createCategoriesChain(definitionsList);
88 private List<CategoryDefinition> createCategoriesChain(List<CategoryDefinition> categoryDefinitions)
90 for (CategoryDefinition categoryDefinition : categoryDefinitions) {
91 RestResponse createCategory = CategoryRestUtils.createCategory(categoryDefinition, productStrategistUser1,
92 PRODUCT_COMPONENT_TYPE);
93 int status = createCategory.getErrorCode().intValue();
94 if (status == BaseRestUtils.STATUS_CODE_CREATED) {
95 String categoryId = ResponseParser.getUniqueIdFromResponse(createCategory);
96 categoryDefinition.setUniqueId(categoryId);
98 List<SubCategoryDefinition> subcategories = categoryDefinition.getSubcategories();
99 for (SubCategoryDefinition subCategoryDefinition : subcategories) {
100 RestResponse createSubCategory = CategoryRestUtils.createSubCategory(subCategoryDefinition,
101 categoryDefinition, productStrategistUser1, PRODUCT_COMPONENT_TYPE);
102 status = createSubCategory.getErrorCode().intValue();
103 if (status == BaseRestUtils.STATUS_CODE_CREATED) {
104 String subCategoryId = ResponseParser.getUniqueIdFromResponse(createSubCategory);
105 subCategoryDefinition.setUniqueId(subCategoryId);
107 List<GroupingDefinition> groupings = subCategoryDefinition.getGroupings();
108 for (GroupingDefinition groupingDefinition : groupings) {
109 RestResponse createGroupingRest = CategoryRestUtils.createGrouping(groupingDefinition,
110 subCategoryDefinition, categoryDefinition, productStrategistUser1, PRODUCT_COMPONENT_TYPE);
111 status = createGroupingRest.getErrorCode().intValue();
112 if (status == BaseRestUtils.STATUS_CODE_CREATED) {
113 String groupingId = ResponseParser.getUniqueIdFromResponse(createGroupingRest);
114 groupingDefinition.setUniqueId(groupingId);
119 RestResponse allCategories = CategoryRestUtils.getAllCategories(productStrategistUser1, PRODUCT_COMPONENT_TYPE);
120 Gson gson = new Gson();
121 List<CategoryDefinition> res = gson.fromJson(allCategories.getResponse(),
122 new TypeToken<List<CategoryDefinition>>() {
127 // Category1->Subcategory1->[Grouping1, Grouping11]
128 protected List<CategoryDefinition> addSecondGroupingToDefaultCategory() throws Exception {
129 GroupingDefinition productGroupingDefinition = ElementFactory.getDefaultGroup();
130 productGroupingDefinition.setName("Grouping11");
131 defaultCategories.get(0).getSubcategories().get(0).addGrouping(productGroupingDefinition);
132 return createCategoriesChain(defaultCategories);
135 // Category1->[Subcategory1->[Grouping1,
136 // Grouping11],Subcategory2->[Grouping12]]
137 protected List<CategoryDefinition> addSubcategoryAndGroupingToDefaultCategory() throws Exception {
138 GroupingDefinition groupingDefinition1 = ElementFactory.getDefaultGroup();
139 groupingDefinition1.setName("Grouping11");
140 defaultCategories.get(0).getSubcategories().get(0).addGrouping(groupingDefinition1);
142 SubCategoryDefinition subCategory2 = ElementFactory.getDefaultSubCategory();
143 subCategory2.setName("Subcategory2");
144 GroupingDefinition groupingDefinition2 = ElementFactory.getDefaultGroup();
145 groupingDefinition2.setName("Grouping12");
146 subCategory2.addGrouping(groupingDefinition2);
147 defaultCategories.get(0).addSubCategory(subCategory2);
148 return createCategoriesChain(defaultCategories);
151 // [Category1->[Subcategory1->[Grouping1,
152 // Grouping11],Subcategory2->[Grouping12]],
153 // Category2->[Subcategory1->[Grouping1],Subcategory2->[Grouping1]],
154 // Category3->[Subcategory1->[Grouping11],Subcategory2->[Grouping11,
156 protected List<CategoryDefinition> addManyGroupingsDiffCategories() throws Exception {
157 CategoryDefinition category2 = ElementFactory.getDefaultCategory();
158 category2.setName("Category2");
159 CategoryDefinition category3 = ElementFactory.getDefaultCategory();
160 category3.setName("Category3");
161 SubCategoryDefinition subCategory1 = ElementFactory.getDefaultSubCategory();
162 subCategory1.setName("Subcategory1");
163 SubCategoryDefinition subCategory2 = ElementFactory.getDefaultSubCategory();
164 subCategory2.setName("Subcategory2");
165 SubCategoryDefinition subCategory1_2 = ElementFactory.getDefaultSubCategory();
166 subCategory1_2.setName("Subcategory1");
167 SubCategoryDefinition subCategory2_2 = ElementFactory.getDefaultSubCategory();
168 subCategory2_2.setName("Subcategory2");
169 SubCategoryDefinition subCategory1_3 = ElementFactory.getDefaultSubCategory();
170 subCategory1_3.setName("Subcategory1");
171 SubCategoryDefinition subCategory2_3 = ElementFactory.getDefaultSubCategory();
172 subCategory2_3.setName("Subcategory2");
174 GroupingDefinition groupingDefinition1 = ElementFactory.getDefaultGroup();
175 groupingDefinition1.setName("Grouping1");
176 GroupingDefinition groupingDefinition11 = ElementFactory.getDefaultGroup();
177 groupingDefinition11.setName("Grouping11");
178 GroupingDefinition groupingDefinition12 = ElementFactory.getDefaultGroup();
179 groupingDefinition12.setName("Grouping12");
180 GroupingDefinition groupingDefinition22 = ElementFactory.getDefaultGroup();
181 groupingDefinition22.setName("Grouping22");
183 defaultCategories.get(0).getSubcategories().get(0).addGrouping(groupingDefinition11);
184 subCategory2.addGrouping(groupingDefinition12);
185 defaultCategories.get(0).addSubCategory(subCategory2);
187 defaultCategories.add(category2);
188 defaultCategories.add(category3);
189 category2.addSubCategory(subCategory1_2);
190 category2.addSubCategory(subCategory2_2);
191 subCategory1_2.addGrouping(groupingDefinition1);
192 subCategory2_2.addGrouping(groupingDefinition1);
193 category3.addSubCategory(subCategory1_3);
194 category3.addSubCategory(subCategory2_3);
195 subCategory1_3.addGrouping(groupingDefinition11);
196 subCategory2_3.addGrouping(groupingDefinition11);
197 subCategory2_3.addGrouping(groupingDefinition22);
198 return createCategoriesChain(defaultCategories);