[SDC-31] add mising script got Comformance fix
[sdc.git] / asdc-tests / src / main / java / org / openecomp / sdc / ci / tests / execute / product / ProductBaseTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * SDC
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
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
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=========================================================
19  */
20
21 package org.openecomp.sdc.ci.tests.execute.product;
22
23 import static org.openecomp.sdc.ci.tests.utils.rest.BaseRestUtils.PRODUCT_COMPONENT_TYPE;
24
25 import java.io.IOException;
26 import java.util.ArrayList;
27 import java.util.List;
28
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;
42
43 import com.google.gson.Gson;
44 import com.google.gson.reflect.TypeToken;
45
46 public abstract class ProductBaseTest extends ComponentBaseTest {
47         User productStrategistUser1;
48         User productStrategistUser2;
49         User productStrategistUser3;
50         User productManager1;
51         User productManager2;
52         User adminUser;
53         User designerUser;
54
55         // Category1->Subcategory1->Grouping1
56         protected List<CategoryDefinition> defaultCategories;
57
58         protected static String auditAction;
59         protected static ComponentOperationEnum operation;
60
61         public ProductBaseTest(TestName testName, String className) {
62                 super(testName, className);
63         }
64
65         @BeforeMethod
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);
74                 createDefaultChain();
75         }
76
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);
86         }
87
88         private List<CategoryDefinition> createCategoriesChain(List<CategoryDefinition> categoryDefinitions)
89                         throws Exception {
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);
97                         }
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);
106                                 }
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);
115                                         }
116                                 }
117                         }
118                 }
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>>() {
123                                 }.getType());
124                 return res;
125         }
126
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);
133         }
134
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);
141
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);
149         }
150
151         // [Category1->[Subcategory1->[Grouping1,
152         // Grouping11],Subcategory2->[Grouping12]],
153         // Category2->[Subcategory1->[Grouping1],Subcategory2->[Grouping1]],
154         // Category3->[Subcategory1->[Grouping11],Subcategory2->[Grouping11,
155         // Grouping22]]]
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");
173
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");
182
183                 defaultCategories.get(0).getSubcategories().get(0).addGrouping(groupingDefinition11);
184                 subCategory2.addGrouping(groupingDefinition12);
185                 defaultCategories.get(0).addSubCategory(subCategory2);
186
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);
199         }
200 }