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 static org.testng.AssertJUnit.assertEquals;
25 import java.io.IOException;
26 import java.util.HashMap;
27 import java.util.List;
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;
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;
79 public AuthanticationTests() {
80 super(name, AuthanticationTests.class.getName());
84 private final Object[][] getServiceDepArtType() throws IOException, Exception {
85 return new Object[][] { { ArtifactTypeEnum.YANG_XML.getType() }, { ArtifactTypeEnum.OTHER.getType() } };
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);
96 consumerDataDefinition = createConsumer();
97 RestResponse deleteResponse = ConsumerRestUtils.deleteConsumer(consumerDataDefinition, sdncAdminUserDetails);
98 BaseRestUtils.checkStatusCode(deleteResponse, "delete operation filed", false, 404, 200);
101 RestResponse createResponse = ConsumerRestUtils.createConsumer(consumerDataDefinition, sdncAdminUserDetails);
102 BaseRestUtils.checkCreateResponse(createResponse);
107 public void tearDown() throws Exception {
108 RestResponse deleteResponse = ConsumerRestUtils.deleteConsumer(consumerDataDefinition, sdncAdminUserDetails);
109 BaseRestUtils.checkStatusCode(deleteResponse, "delete operation filed", false, 404, 200);
114 protected ConsumerDataDefinition createConsumer() {
115 ConsumerDataDefinition consumer = new ConsumerDataDefinition();
116 consumer.setConsumerName(USER);
117 consumer.setConsumerSalt(SALT);
118 consumer.setConsumerPassword(HASHED_PASSWORD);
123 protected void createComponents() throws Exception {
124 RestResponse response = ServiceRestUtils.createService(serviceDetails, sdncUserDetails);
125 ServiceRestUtils.checkCreateResponse(response);
128 @Test(dataProvider = "getServiceDepArtType", description = "mumu")
129 public void downloadServiceArtifactSuccessWithAutantication(String serviceDepArtType) throws Exception {
130 String serviceUniqueId = serviceDetails.getUniqueId();
132 ArtifactReqDetails artifactDetails = ElementFactory.getDefaultDeploymentArtifactForType(serviceDepArtType);
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());
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());
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));
153 String downloadUrl = ArtifactRestUtils
154 .getPartialUrlByArtifactName(serviceDetails, serviceDetails.getVersion(), artifactName).substring(6);
156 ExpectedAuthenticationAudit expectedAuthenticationAudit = new ExpectedAuthenticationAudit(downloadUrl, USER,
157 AuditingActionEnum.AUTH_REQUEST.getName(), AUTH_SUCCESS);
158 AuditValidationUtils.validateAuthenticationAudit(expectedAuthenticationAudit);
161 @Test(dataProvider = "getServiceDepArtType")
162 public void downloadServiceArtifactWithOutAutantication(String serviceDepArtType) throws Exception {
163 String serviceUniqueId = serviceDetails.getUniqueId();
165 ArtifactReqDetails artifactDetails = ElementFactory.getDefaultDeploymentArtifactForType(serviceDepArtType);
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());
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());
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);