diff options
Diffstat (limited to 'adapters/mso-vfc-adapter/src')
6 files changed, 173 insertions, 50 deletions
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/WebSecurityConfigImpl.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/WebSecurityConfigImpl.java index 4270be4897..e94e34d87c 100644 --- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/WebSecurityConfigImpl.java +++ b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/WebSecurityConfigImpl.java @@ -4,6 +4,8 @@ * ================================================================================ * Copyright (C) 2017 - 2018 AT&T Intellectual Property. All rights reserved. * ================================================================================ + * Modifications Copyright (c) 2019 Samsung + * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -34,8 +36,8 @@ public class WebSecurityConfigImpl extends WebSecurityConfig { @Override protected void configure(HttpSecurity http) throws Exception { http.csrf().disable().authorizeRequests().antMatchers("/manage/health", "/manage/info", "/services").permitAll() - .antMatchers("/**").hasAnyRole(StringUtils.collectionToDelimitedString(getRoles(), ",").toString()) - .and().httpBasic(); + .antMatchers("/**").hasAnyRole(StringUtils.collectionToDelimitedString(getRoles(), ",")).and() + .httpBasic(); } @Override diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/rest/HealthCheckHandler.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/rest/HealthCheckHandler.java index cff36061b1..2dcdf11316 100644 --- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/rest/HealthCheckHandler.java +++ b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/rest/HealthCheckHandler.java @@ -28,8 +28,6 @@ import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.core.Response; import org.apache.http.HttpStatus; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; /** @@ -44,8 +42,6 @@ import org.springframework.stereotype.Component; @Component public class HealthCheckHandler { - private static Logger logger = LoggerFactory.getLogger(HealthCheckHandler.class); - private static final String CHECK_HTML = "<!DOCTYPE html><html><head><meta charset=\"ISO-8859-1\"><title>Health Check</title></head><body>Application ready</body></html>"; diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/util/JsonUtil.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/util/JsonUtil.java index cefaadbb63..e8b4cfd997 100644 --- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/util/JsonUtil.java +++ b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/util/JsonUtil.java @@ -24,6 +24,7 @@ package org.onap.so.adapters.vfc.util; import java.io.IOException; +import org.onap.so.logger.LoggingAnchor; import org.onap.so.adapters.vfc.constant.HttpCode; import org.onap.so.adapters.vfc.exceptions.ApplicationException; import org.onap.so.logger.ErrorCode; @@ -83,8 +84,8 @@ public class JsonUtil { try { return MAPPER.readValue(jsonstr, type); } catch (IOException e) { - logger.error("{} {} {}", MessageEnum.RA_NS_EXC.toString(), ErrorCode.BusinessProcesssError.getValue(), - UNMARSHAL_FAIL_MSG, e); + logger.error(LoggingAnchor.THREE, MessageEnum.RA_NS_EXC.toString(), + ErrorCode.BusinessProcesssError.getValue(), UNMARSHAL_FAIL_MSG, e); throw new ApplicationException(HttpCode.BAD_REQUEST, UNMARSHAL_FAIL_MSG); } } @@ -101,8 +102,8 @@ public class JsonUtil { try { return MAPPER.readValue(jsonstr, type); } catch (IOException e) { - logger.error("{} {} {}", MessageEnum.RA_NS_EXC.toString(), ErrorCode.BusinessProcesssError.getValue(), - UNMARSHAL_FAIL_MSG, e); + logger.error(LoggingAnchor.THREE, MessageEnum.RA_NS_EXC.toString(), + ErrorCode.BusinessProcesssError.getValue(), UNMARSHAL_FAIL_MSG, e); throw new ApplicationException(HttpCode.BAD_REQUEST, UNMARSHAL_FAIL_MSG); } } @@ -118,8 +119,8 @@ public class JsonUtil { try { return MAPPER.writeValueAsString(srcObj); } catch (IOException e) { - logger.error("{} {} {}", MessageEnum.RA_NS_EXC.toString(), ErrorCode.BusinessProcesssError.getValue(), - "fail to marshal json", e); + logger.error(LoggingAnchor.THREE, MessageEnum.RA_NS_EXC.toString(), + ErrorCode.BusinessProcesssError.getValue(), "fail to marshal json", e); throw new ApplicationException(HttpCode.BAD_REQUEST, "srcObj marshal failed!"); } } diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/util/RestfulUtil.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/util/RestfulUtil.java index 3419e6d20c..647fcafa66 100644 --- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/util/RestfulUtil.java +++ b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/util/RestfulUtil.java @@ -27,6 +27,7 @@ package org.onap.so.adapters.vfc.util; import java.net.HttpURLConnection; import java.net.SocketTimeoutException; import javax.ws.rs.core.UriBuilder; +import org.onap.so.logger.LoggingAnchor; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.config.RequestConfig; @@ -79,6 +80,9 @@ public class RestfulUtil { @Autowired private Environment env; + @Autowired + private HttpClient client; + public String getMsbHost() { // MSB_IP will be set as ONAP_IP environment parameter in install flow. String msbIp = System.getenv().get(ONAP_IP); @@ -111,8 +115,6 @@ public class RestfulUtil { RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(timeout).setConnectTimeout(timeout) .setConnectionRequestTimeout(timeout).build(); - HttpClient client = HttpClientBuilder.create().build(); - if ("POST".equalsIgnoreCase(methodType)) { HttpPost httpPost = new HttpPost(msbUrl); httpPost.setConfig(requestConfig); @@ -193,12 +195,12 @@ public class RestfulUtil { } private static void logError(String errMsg, Throwable t) { - logger.error("{} {} {} {}", MessageEnum.RA_NS_EXC.toString(), VFC_ADAPTER, + logger.error(LoggingAnchor.FOUR, MessageEnum.RA_NS_EXC.toString(), VFC_ADAPTER, ErrorCode.AvailabilityError.getValue(), errMsg, t); } private static void logError(String errMsg) { - logger.error("{} {} {} {}", MessageEnum.RA_NS_EXC.toString(), VFC_ADAPTER, + logger.error(LoggingAnchor.FOUR, MessageEnum.RA_NS_EXC.toString(), VFC_ADAPTER, ErrorCode.AvailabilityError.toString(), errMsg); } diff --git a/adapters/mso-vfc-adapter/src/main/resources/application-local.yaml b/adapters/mso-vfc-adapter/src/main/resources/application-local.yaml deleted file mode 100644 index 414dabb0a1..0000000000 --- a/adapters/mso-vfc-adapter/src/main/resources/application-local.yaml +++ /dev/null @@ -1,34 +0,0 @@ -server: - port: 8091 - tomcat: - max-threads: 50 -ssl-enable: false -mso: - logPath: logs - site-name: localSite -spring: - datasource: - jdbc-url: jdbc:mariadb://localhost:3306/requestdb - username: mso - password: mso123 - driver-class-name: org.mariadb.jdbc.Driver - initialize: true - initialization-mode: never - jpa: - generate-ddl: false - show-sql: false - hibernate: - ddl-auto: validate - naming-strategy: org.hibernate.cfg.ImprovedNamingStrategy - enable-lazy-load-no-trans: true - database-platform: org.hibernate.dialect.MySQL5InnoDBDialect - security: - usercredentials: - - - username: bpel - password: '$2a$12$1xyutEZNfjGewIZRfKaE8eZE99f5sYFUmmM80BobI65KNjmcK0JuO' - role: BPEL-Client - - - username: mso_admin - password: '$2a$12$tidKuu.h88E2nuL95pTVY.ZOYMN/1dp29A9b1o.0GFDsVVSYlMkHa' - role: ACTUATOR diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/util/RestfulUtilTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/util/RestfulUtilTest.java new file mode 100644 index 0000000000..c388016ab4 --- /dev/null +++ b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/util/RestfulUtilTest.java @@ -0,0 +1,156 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (c) 2019 Samsung. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.so.adapters.vfc.util; + +import org.apache.http.HttpEntity; +import org.apache.http.HttpResponse; +import org.apache.http.StatusLine; +import org.apache.http.client.HttpClient; +import org.apache.http.client.methods.HttpDelete; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.client.methods.HttpPut; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Spy; +import org.mockito.junit.MockitoJUnitRunner; +import org.onap.so.adapters.vfc.model.RestfulResponse; +import org.springframework.http.HttpStatus; +import javax.ws.rs.HttpMethod; +import java.io.ByteArrayInputStream; +import java.io.IOException; +import static org.junit.Assert.assertEquals; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +@RunWith(MockitoJUnitRunner.class) +public class RestfulUtilTest { + + @InjectMocks + @Spy + private RestfulUtil restfulUtil; + + @Mock + private HttpClient client; + + private HttpEntity httpEntity; + private HttpResponse httpResponse; + private StatusLine statusLine; + + @Before + public void setUp() { + httpEntity = mock(HttpEntity.class); + httpResponse = mock(HttpResponse.class); + statusLine = mock(StatusLine.class); + } + + private void sendInit() throws IOException { + + doReturn("https://testHost/").when(restfulUtil).getMsbHost(); + + when(statusLine.getStatusCode()).thenReturn(HttpStatus.OK.value()); + when(httpResponse.getStatusLine()).thenReturn(statusLine); + when(httpResponse.getEntity()).thenReturn(httpEntity); + } + + @Test + public void sendGet() throws Exception { + + sendInit(); + + ByteArrayInputStream responseStream = new ByteArrayInputStream(new String("GET").getBytes()); + when(client.execute(any(HttpGet.class))).thenReturn(httpResponse); + when(httpEntity.getContent()).thenReturn(responseStream); + + RestfulResponse restfulResponse = restfulUtil.send("test", HttpMethod.GET, "some request content"); + + assertEquals(HttpStatus.OK.value(), restfulResponse.getStatus()); + assertEquals("GET", restfulResponse.getResponseContent()); + + } + + @Test + public void sendPost() throws Exception { + + sendInit(); + + + ByteArrayInputStream responseStream = new ByteArrayInputStream(new String("POST").getBytes()); + when(client.execute(any(HttpPost.class))).thenReturn(httpResponse); + when(httpEntity.getContent()).thenReturn(responseStream); + + RestfulResponse restfulResponse = restfulUtil.send("test", HttpMethod.POST, "some request content"); + + assertEquals(HttpStatus.OK.value(), restfulResponse.getStatus()); + assertEquals("POST", restfulResponse.getResponseContent()); + + } + + @Test + public void sendPut() throws Exception { + + sendInit(); + + ByteArrayInputStream responseStream = new ByteArrayInputStream(new String("PUT").getBytes()); + when(client.execute(any(HttpPut.class))).thenReturn(httpResponse); + when(httpEntity.getContent()).thenReturn(responseStream); + + RestfulResponse restfulResponse = restfulUtil.send("test", HttpMethod.PUT, "some request content"); + + assertEquals(HttpStatus.OK.value(), restfulResponse.getStatus()); + assertEquals("PUT", restfulResponse.getResponseContent()); + + } + + @Test + public void sendDelete() throws Exception { + + sendInit(); + + ByteArrayInputStream responseStream = new ByteArrayInputStream(new String("DELETE").getBytes()); + when(client.execute(any(HttpDelete.class))).thenReturn(httpResponse); + when(httpEntity.getContent()).thenReturn(responseStream); + + RestfulResponse restfulResponse = restfulUtil.send("test", HttpMethod.DELETE, "some request content"); + + assertEquals(HttpStatus.OK.value(), restfulResponse.getStatus()); + assertEquals("DELETE", restfulResponse.getResponseContent()); + + } + + @Test + public void sendOptions() throws Exception { + + doReturn("https://testHost/").when(restfulUtil).getMsbHost(); + + RestfulResponse restfulResponse = restfulUtil.send("test", HttpMethod.OPTIONS, "some request content"); + + assertEquals(HttpStatus.INTERNAL_SERVER_ERROR.value(), restfulResponse.getStatus()); + assertEquals("Error processing request to VFC", restfulResponse.getResponseContent()); + + } + +} |