[SDC-29] rebase continue work to align source
[sdc.git] / test-apis-ci / src / main / java / org / openecomp / sdc / ci / tests / execute / distribution / AuthanticationTests.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.distribution;
22
23 import static org.testng.AssertJUnit.assertEquals;
24
25 import java.io.IOException;
26 import java.util.HashMap;
27 import java.util.List;
28 import java.util.Map;
29
30 import org.junit.Rule;
31 import org.junit.rules.TestName;
32 import org.openecomp.sdc.be.datatypes.elements.ConsumerDataDefinition;
33 import org.openecomp.sdc.be.model.User;
34 import org.openecomp.sdc.be.resources.data.auditing.AuditingActionEnum;
35 import org.openecomp.sdc.ci.tests.api.ComponentBaseTest;
36 import org.openecomp.sdc.ci.tests.datatypes.ArtifactReqDetails;
37 import org.openecomp.sdc.ci.tests.datatypes.ResourceReqDetails;
38 import org.openecomp.sdc.ci.tests.datatypes.ServiceReqDetails;
39 import org.openecomp.sdc.ci.tests.datatypes.enums.ArtifactTypeEnum;
40 import org.openecomp.sdc.ci.tests.datatypes.enums.UserRoleEnum;
41 import org.openecomp.sdc.ci.tests.datatypes.expected.ExpectedAuthenticationAudit;
42 import org.openecomp.sdc.ci.tests.datatypes.http.RestResponse;
43 import org.openecomp.sdc.ci.tests.utils.general.ElementFactory;
44 import org.openecomp.sdc.ci.tests.utils.rest.ArtifactRestUtils;
45 import org.openecomp.sdc.ci.tests.utils.rest.BaseRestUtils;
46 import org.openecomp.sdc.ci.tests.utils.rest.ConsumerRestUtils;
47 import org.openecomp.sdc.ci.tests.utils.rest.ServiceRestUtils;
48 import org.openecomp.sdc.ci.tests.utils.validation.AuditValidationUtils;
49 import org.openecomp.sdc.common.api.Constants;
50 import org.openecomp.sdc.common.util.ValidationUtils;
51 import org.testng.AssertJUnit;
52 import org.testng.annotations.AfterMethod;
53 import org.testng.annotations.BeforeMethod;
54 import org.testng.annotations.DataProvider;
55 import org.testng.annotations.Test;
56
57 public class AuthanticationTests extends ComponentBaseTest {
58
59         @Rule
60         public static TestName name = new TestName();
61         protected ResourceReqDetails resourceDetails;
62         protected ServiceReqDetails serviceDetails;
63         protected User sdncUserDetails;
64
65         protected static final String AUTH_SUCCESS = "AUTH_SUCCESS";
66
67         protected static final String AUTH_REQUIRED = "AUTH_REQUIRED";
68
69         // user ci password 123456
70         // protected final String authorizationHeader = "Basic Y2k6MTIzNDU2";
71         // user ci password 123456
72         protected final String USER = "ci";
73         protected final String PASSWORD = "123456";
74         protected final String SALT = "2a1f887d607d4515d4066fe0f5452a50";
75         protected final String HASHED_PASSWORD = "0a0dc557c3bf594b1a48030e3e99227580168b21f44e285c69740b8d5b13e33b";
76         protected User sdncAdminUserDetails;
77         protected ConsumerDataDefinition consumerDataDefinition;
78
79         public AuthanticationTests() {
80                 super(name, AuthanticationTests.class.getName());
81         }
82
83         @DataProvider
84         private final Object[][] getServiceDepArtType() throws IOException, Exception {
85                 return new Object[][] { { ArtifactTypeEnum.YANG_XML.getType() }, { ArtifactTypeEnum.OTHER.getType() } };
86         }
87
88         @BeforeMethod
89         public void setup() throws Exception {
90                 resourceDetails = ElementFactory.getDefaultResource();
91                 serviceDetails = ElementFactory.getDefaultService();
92                 sdncUserDetails = ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER);
93                 sdncAdminUserDetails = ElementFactory.getDefaultUser(UserRoleEnum.ADMIN);
94
95                 createComponents();
96                 consumerDataDefinition = createConsumer();
97                 RestResponse deleteResponse = ConsumerRestUtils.deleteConsumer(consumerDataDefinition, sdncAdminUserDetails);
98                 BaseRestUtils.checkStatusCode(deleteResponse, "delete operation filed", false, 404, 200);
99                 ;
100
101                 RestResponse createResponse = ConsumerRestUtils.createConsumer(consumerDataDefinition, sdncAdminUserDetails);
102                 BaseRestUtils.checkCreateResponse(createResponse);
103
104         }
105
106         @AfterMethod
107         public void tearDown() throws Exception {
108                 RestResponse deleteResponse = ConsumerRestUtils.deleteConsumer(consumerDataDefinition, sdncAdminUserDetails);
109                 BaseRestUtils.checkStatusCode(deleteResponse, "delete operation filed", false, 404, 200);
110                 ;
111
112         }
113
114         protected ConsumerDataDefinition createConsumer() {
115                 ConsumerDataDefinition consumer = new ConsumerDataDefinition();
116                 consumer.setConsumerName(USER);
117                 consumer.setConsumerSalt(SALT);
118                 consumer.setConsumerPassword(HASHED_PASSWORD);
119                 return consumer;
120
121         }
122
123         protected void createComponents() throws Exception {
124                 RestResponse response = ServiceRestUtils.createService(serviceDetails, sdncUserDetails);
125                 ServiceRestUtils.checkCreateResponse(response);
126         }
127
128         @Test(dataProvider = "getServiceDepArtType", description = "mumu")
129         public void downloadServiceArtifactSuccessWithAutantication(String serviceDepArtType) throws Exception {
130                 String serviceUniqueId = serviceDetails.getUniqueId();
131
132                 ArtifactReqDetails artifactDetails = ElementFactory.getDefaultDeploymentArtifactForType(serviceDepArtType);
133
134                 RestResponse addArtifactResponse = ArtifactRestUtils.addInformationalArtifactToService(artifactDetails,
135                                 sdncUserDetails, serviceUniqueId, ArtifactRestUtils.calculateChecksum(artifactDetails));
136                 AssertJUnit.assertEquals("Check response code after adding interface artifact", 200,
137                                 addArtifactResponse.getErrorCode().intValue());
138
139                 String artifactName = ValidationUtils.normalizeFileName(artifactDetails.getArtifactName());
140                 // Thread.sleep(5000);
141                 Map<String, String> authorizationHeaders = BaseRestUtils.addAuthorizeHeader(USER, PASSWORD);
142                 RestResponse restResponse = ArtifactRestUtils.downloadServiceArtifact(serviceDetails, artifactDetails,
143                                 sdncUserDetails, authorizationHeaders);
144                 AssertJUnit.assertEquals("Check response code after download resource", 200,
145                                 restResponse.getErrorCode().intValue());
146
147                 List<String> contDispHeaderList = restResponse.getHeaderFields().get(Constants.CONTENT_DISPOSITION_HEADER);
148                 AssertJUnit.assertNotNull(contDispHeaderList);
149                 AssertJUnit.assertEquals("Check content disposition header",
150                                 new StringBuilder().append("attachment; filename=\"").append(artifactName).append("\"").toString(),
151                                 contDispHeaderList.get(0));
152
153                 String downloadUrl = ArtifactRestUtils
154                                 .getPartialUrlByArtifactName(serviceDetails, serviceDetails.getVersion(), artifactName).substring(6);
155
156                 ExpectedAuthenticationAudit expectedAuthenticationAudit = new ExpectedAuthenticationAudit(downloadUrl, USER,
157                                 AuditingActionEnum.AUTH_REQUEST.getName(), AUTH_SUCCESS);
158                 AuditValidationUtils.validateAuthenticationAudit(expectedAuthenticationAudit);
159         }
160
161         @Test(dataProvider = "getServiceDepArtType")
162         public void downloadServiceArtifactWithOutAutantication(String serviceDepArtType) throws Exception {
163                 String serviceUniqueId = serviceDetails.getUniqueId();
164
165                 ArtifactReqDetails artifactDetails = ElementFactory.getDefaultDeploymentArtifactForType(serviceDepArtType);
166
167                 RestResponse addArtifactResponse = ArtifactRestUtils.addInformationalArtifactToService(artifactDetails,
168                                 sdncUserDetails, serviceUniqueId, ArtifactRestUtils.calculateChecksum(artifactDetails));
169                 assertEquals("Check response code after adding interface artifact", 200,
170                                 addArtifactResponse.getErrorCode().intValue());
171
172                 Map<String, String> authorizationHeaders = new HashMap<String, String>();
173                 RestResponse restResponse = ArtifactRestUtils.downloadServiceArtifact(serviceDetails, artifactDetails,
174                                 sdncUserDetails, authorizationHeaders);
175                 assertEquals("Check response code after download resource failure", 401,
176                                 restResponse.getErrorCode().intValue());
177
178                 String downloadUrl = ArtifactRestUtils.getPartialUrlByArtifactName(serviceDetails, serviceDetails.getVersion(),
179                                 artifactDetails.getArtifactName()).substring(6);
180                 ExpectedAuthenticationAudit expectedAuthenticationAudit = new ExpectedAuthenticationAudit(downloadUrl, "",
181                                 AuditingActionEnum.AUTH_REQUEST.getName(), AUTH_REQUIRED);
182                 AuditValidationUtils.validateAuthenticationAudit(expectedAuthenticationAudit);
183
184         }
185
186 }