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