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.distribution;
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;
50 import java.io.IOException;
51 import java.util.HashMap;
52 import java.util.List;
55 import static org.testng.AssertJUnit.assertEquals;
57 public class AuthanticationTests extends ComponentBaseTest {
60 public static TestName name = new TestName();
61 protected ResourceReqDetails resourceDetails;
62 protected ServiceReqDetails serviceDetails;
63 protected User sdncUserDetails;
65 protected static final String AUTH_SUCCESS = "AUTH_SUCCESS";
67 protected static final String AUTH_REQUIRED = "AUTH_REQUIRED";
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;
80 private final Object[][] getServiceDepArtType() throws IOException, Exception {
81 return new Object[][] { { ArtifactTypeEnum.YANG_XML.getType() }, { ArtifactTypeEnum.OTHER.getType() } };
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);
92 consumerDataDefinition = createConsumer();
93 RestResponse deleteResponse = ConsumerRestUtils.deleteConsumer(consumerDataDefinition, sdncAdminUserDetails);
94 BaseRestUtils.checkStatusCode(deleteResponse, "delete operation filed", false, 404, 200);
97 RestResponse createResponse = ConsumerRestUtils.createConsumer(consumerDataDefinition, sdncAdminUserDetails);
98 BaseRestUtils.checkCreateResponse(createResponse);
103 public void tearDown() throws Exception {
104 RestResponse deleteResponse = ConsumerRestUtils.deleteConsumer(consumerDataDefinition, sdncAdminUserDetails);
105 BaseRestUtils.checkStatusCode(deleteResponse, "delete operation filed", false, 404, 200);
110 protected ConsumerDataDefinition createConsumer() {
111 ConsumerDataDefinition consumer = new ConsumerDataDefinition();
112 consumer.setConsumerName(USER);
113 consumer.setConsumerSalt(SALT);
114 consumer.setConsumerPassword(HASHED_PASSWORD);
119 protected void createComponents() throws Exception {
120 RestResponse response = ServiceRestUtils.createService(serviceDetails, sdncUserDetails);
121 ServiceRestUtils.checkCreateResponse(response);
124 @Test(dataProvider = "getServiceDepArtType", description = "mumu")
125 public void downloadServiceArtifactSuccessWithAutantication(String serviceDepArtType) throws Exception {
126 String serviceUniqueId = serviceDetails.getUniqueId();
128 ArtifactReqDetails artifactDetails = ElementFactory.getDefaultDeploymentArtifactForType(serviceDepArtType);
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());
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());
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));
149 String downloadUrl = ArtifactRestUtils
150 .getPartialUrlByArtifactName(serviceDetails, serviceDetails.getVersion(), artifactName).substring(6);
152 ExpectedAuthenticationAudit expectedAuthenticationAudit = new ExpectedAuthenticationAudit(downloadUrl, USER,
153 AuditingActionEnum.AUTH_REQUEST.getName(), AUTH_SUCCESS);
154 AuditValidationUtils.validateAuthenticationAudit(expectedAuthenticationAudit);
157 @Test(dataProvider = "getServiceDepArtType")
158 public void downloadServiceArtifactWithOutAutantication(String serviceDepArtType) throws Exception {
159 String serviceUniqueId = serviceDetails.getUniqueId();
161 ArtifactReqDetails artifactDetails = ElementFactory.getDefaultDeploymentArtifactForType(serviceDepArtType);
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());
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());
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);