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 com.google.gson.Gson;
24 import com.google.gson.reflect.TypeToken;
25 import org.junit.rules.TestName;
26 import org.openecomp.sdc.be.model.User;
27 import org.openecomp.sdc.be.model.category.CategoryDefinition;
28 import org.openecomp.sdc.be.model.category.GroupingDefinition;
29 import org.openecomp.sdc.be.model.category.SubCategoryDefinition;
30 import org.openecomp.sdc.ci.tests.api.ComponentBaseTest;
31 import org.openecomp.sdc.ci.tests.datatypes.enums.UserRoleEnum;
32 import org.openecomp.sdc.ci.tests.datatypes.http.RestResponse;
33 import org.openecomp.sdc.ci.tests.utils.general.ElementFactory;
34 import org.openecomp.sdc.ci.tests.utils.rest.BaseRestUtils;
35 import org.openecomp.sdc.ci.tests.utils.rest.CategoryRestUtils;
36 import org.openecomp.sdc.ci.tests.utils.rest.ResponseParser;
37 import org.testng.annotations.BeforeMethod;
39 import java.io.IOException;
40 import java.util.ArrayList;
41 import java.util.List;
43 import static org.openecomp.sdc.ci.tests.utils.rest.BaseRestUtils.PRODUCT_COMPONENT_TYPE;
45 public abstract class ProductBaseTest extends ComponentBaseTest {
46 User productStrategistUser1;
47 User productStrategistUser2;
48 User productStrategistUser3;
54 // Category1->Subcategory1->Grouping1
55 protected List<CategoryDefinition> defaultCategories;
57 protected static String auditAction;
58 protected static ComponentOperationEnum operation;
60 public ProductBaseTest(TestName testName, String className) {
61 super(testName, className);
65 public void beforeProductTest() throws IOException, Exception {
66 productStrategistUser1 = ElementFactory.getDefaultUser(UserRoleEnum.PRODUCT_STRATEGIST1);
67 productStrategistUser2 = ElementFactory.getDefaultUser(UserRoleEnum.PRODUCT_STRATEGIST2);
68 productStrategistUser3 = ElementFactory.getDefaultUser(UserRoleEnum.PRODUCT_STRATEGIST3);
69 productManager1 = ElementFactory.getDefaultUser(UserRoleEnum.PRODUCT_MANAGER1);
70 productManager2 = ElementFactory.getDefaultUser(UserRoleEnum.PRODUCT_MANAGER2);
71 adminUser = ElementFactory.getDefaultUser(UserRoleEnum.ADMIN);
72 designerUser = ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER);
76 private void createDefaultChain() throws Exception {
77 CategoryDefinition productCategoryDefinition = ElementFactory.getDefaultCategory();
78 SubCategoryDefinition productSubCategoryDefinition = ElementFactory.getDefaultSubCategory();
79 GroupingDefinition productGroupingDefinition = ElementFactory.getDefaultGroup();
80 productCategoryDefinition.addSubCategory(productSubCategoryDefinition);
81 productSubCategoryDefinition.addGrouping(productGroupingDefinition);
82 List<CategoryDefinition> definitionsList = new ArrayList<>();
83 definitionsList.add(productCategoryDefinition);
84 defaultCategories = createCategoriesChain(definitionsList);
87 private List<CategoryDefinition> createCategoriesChain(List<CategoryDefinition> categoryDefinitions)
89 for (CategoryDefinition categoryDefinition : categoryDefinitions) {
90 RestResponse createCategory = CategoryRestUtils.createCategory(categoryDefinition, productStrategistUser1,
91 PRODUCT_COMPONENT_TYPE);
92 int status = createCategory.getErrorCode().intValue();
93 if (status == BaseRestUtils.STATUS_CODE_CREATED) {
94 String categoryId = ResponseParser.getUniqueIdFromResponse(createCategory);
95 categoryDefinition.setUniqueId(categoryId);
97 List<SubCategoryDefinition> subcategories = categoryDefinition.getSubcategories();
98 for (SubCategoryDefinition subCategoryDefinition : subcategories) {
99 RestResponse createSubCategory = CategoryRestUtils.createSubCategory(subCategoryDefinition,
100 categoryDefinition, productStrategistUser1, PRODUCT_COMPONENT_TYPE);
101 status = createSubCategory.getErrorCode().intValue();
102 if (status == BaseRestUtils.STATUS_CODE_CREATED) {
103 String subCategoryId = ResponseParser.getUniqueIdFromResponse(createSubCategory);
104 subCategoryDefinition.setUniqueId(subCategoryId);
106 List<GroupingDefinition> groupings = subCategoryDefinition.getGroupings();
107 for (GroupingDefinition groupingDefinition : groupings) {
108 RestResponse createGroupingRest = CategoryRestUtils.createGrouping(groupingDefinition,
109 subCategoryDefinition, categoryDefinition, productStrategistUser1, PRODUCT_COMPONENT_TYPE);
110 status = createGroupingRest.getErrorCode().intValue();
111 if (status == BaseRestUtils.STATUS_CODE_CREATED) {
112 String groupingId = ResponseParser.getUniqueIdFromResponse(createGroupingRest);
113 groupingDefinition.setUniqueId(groupingId);
118 RestResponse allCategories = CategoryRestUtils.getAllCategories(productStrategistUser1, PRODUCT_COMPONENT_TYPE);
119 Gson gson = new Gson();
120 List<CategoryDefinition> res = gson.fromJson(allCategories.getResponse(),
121 new TypeToken<List<CategoryDefinition>>() {
126 // Category1->Subcategory1->[Grouping1, Grouping11]
127 protected List<CategoryDefinition> addSecondGroupingToDefaultCategory() throws Exception {
128 GroupingDefinition productGroupingDefinition = ElementFactory.getDefaultGroup();
129 productGroupingDefinition.setName("Grouping11");
130 defaultCategories.get(0).getSubcategories().get(0).addGrouping(productGroupingDefinition);
131 return createCategoriesChain(defaultCategories);
134 // Category1->[Subcategory1->[Grouping1,
135 // Grouping11],Subcategory2->[Grouping12]]
136 protected List<CategoryDefinition> addSubcategoryAndGroupingToDefaultCategory() throws Exception {
137 GroupingDefinition groupingDefinition1 = ElementFactory.getDefaultGroup();
138 groupingDefinition1.setName("Grouping11");
139 defaultCategories.get(0).getSubcategories().get(0).addGrouping(groupingDefinition1);
141 SubCategoryDefinition subCategory2 = ElementFactory.getDefaultSubCategory();
142 subCategory2.setName("Subcategory2");
143 GroupingDefinition groupingDefinition2 = ElementFactory.getDefaultGroup();
144 groupingDefinition2.setName("Grouping12");
145 subCategory2.addGrouping(groupingDefinition2);
146 defaultCategories.get(0).addSubCategory(subCategory2);
147 return createCategoriesChain(defaultCategories);
150 // [Category1->[Subcategory1->[Grouping1,
151 // Grouping11],Subcategory2->[Grouping12]],
152 // Category2->[Subcategory1->[Grouping1],Subcategory2->[Grouping1]],
153 // Category3->[Subcategory1->[Grouping11],Subcategory2->[Grouping11,
155 protected List<CategoryDefinition> addManyGroupingsDiffCategories() throws Exception {
156 CategoryDefinition category2 = ElementFactory.getDefaultCategory();
157 category2.setName("Category2");
158 CategoryDefinition category3 = ElementFactory.getDefaultCategory();
159 category3.setName("Category3");
160 SubCategoryDefinition subCategory1 = ElementFactory.getDefaultSubCategory();
161 subCategory1.setName("Subcategory1");
162 SubCategoryDefinition subCategory2 = ElementFactory.getDefaultSubCategory();
163 subCategory2.setName("Subcategory2");
164 SubCategoryDefinition subCategory1_2 = ElementFactory.getDefaultSubCategory();
165 subCategory1_2.setName("Subcategory1");
166 SubCategoryDefinition subCategory2_2 = ElementFactory.getDefaultSubCategory();
167 subCategory2_2.setName("Subcategory2");
168 SubCategoryDefinition subCategory1_3 = ElementFactory.getDefaultSubCategory();
169 subCategory1_3.setName("Subcategory1");
170 SubCategoryDefinition subCategory2_3 = ElementFactory.getDefaultSubCategory();
171 subCategory2_3.setName("Subcategory2");
173 GroupingDefinition groupingDefinition1 = ElementFactory.getDefaultGroup();
174 groupingDefinition1.setName("Grouping1");
175 GroupingDefinition groupingDefinition11 = ElementFactory.getDefaultGroup();
176 groupingDefinition11.setName("Grouping11");
177 GroupingDefinition groupingDefinition12 = ElementFactory.getDefaultGroup();
178 groupingDefinition12.setName("Grouping12");
179 GroupingDefinition groupingDefinition22 = ElementFactory.getDefaultGroup();
180 groupingDefinition22.setName("Grouping22");
182 defaultCategories.get(0).getSubcategories().get(0).addGrouping(groupingDefinition11);
183 subCategory2.addGrouping(groupingDefinition12);
184 defaultCategories.get(0).addSubCategory(subCategory2);
186 defaultCategories.add(category2);
187 defaultCategories.add(category3);
188 category2.addSubCategory(subCategory1_2);
189 category2.addSubCategory(subCategory2_2);
190 subCategory1_2.addGrouping(groupingDefinition1);
191 subCategory2_2.addGrouping(groupingDefinition1);
192 category3.addSubCategory(subCategory1_3);
193 category3.addSubCategory(subCategory2_3);
194 subCategory1_3.addGrouping(groupingDefinition11);
195 subCategory2_3.addGrouping(groupingDefinition11);
196 subCategory2_3.addGrouping(groupingDefinition22);
197 return createCategoriesChain(defaultCategories);