From c63412acfab7c50803bdd0dcf848b3a91b3f565f Mon Sep 17 00:00:00 2001 From: ChuanyuChen Date: Sat, 30 Jul 2022 09:39:36 +0800 Subject: Add unit test for intent analysis Add unit test for intent analysis Issue-ID: USECASEUI-692 Signed-off-by: ChuanyuChen Change-Id: If7c8a1ca56c1e8cc07e91729b3d2e38ddb2c855b --- intentanalysis/pom.xml | 71 +++++++++++++++++++++- .../intentanalysis/util/SpringContextUtil.java | 44 ++++++++++++++ .../test/IntentAnalysisApplicationTests.java | 53 ++++++++++++++++ .../test/service/IntentServiceTest.java | 56 +++++++++++++++++ intentanalysis/src/test/resources/application.yaml | 44 ++++++++++++++ .../src/test/resources/intentdb-test-data.sql | 22 +++++++ .../src/test/resources/intentdb-test-init.sql | 42 +++++++++++++ 7 files changed, 331 insertions(+), 1 deletion(-) create mode 100644 intentanalysis/src/main/java/org/onap/usecaseui/intentanalysis/util/SpringContextUtil.java create mode 100644 intentanalysis/src/test/java/org/onap/usecaseui/intentanalysis/test/IntentAnalysisApplicationTests.java create mode 100644 intentanalysis/src/test/java/org/onap/usecaseui/intentanalysis/test/service/IntentServiceTest.java create mode 100644 intentanalysis/src/test/resources/application.yaml create mode 100644 intentanalysis/src/test/resources/intentdb-test-data.sql create mode 100644 intentanalysis/src/test/resources/intentdb-test-init.sql diff --git a/intentanalysis/pom.xml b/intentanalysis/pom.xml index 03a4731..88c5de6 100644 --- a/intentanalysis/pom.xml +++ b/intentanalysis/pom.xml @@ -1,4 +1,19 @@ + 4.0.0 @@ -24,6 +39,8 @@ true ${project.version} reuseReports + 5.9.0-RC1 + 1.9.0-RC1 @@ -94,8 +111,60 @@ javax.persistence 2.1.0 + + junit + junit + 4.13 + test + + + org.junit.vintage + junit-vintage-engine + ${junit.vintage.version} + test + + + org.junit.platform + junit-platform-launcher + ${junit.platform.version} + test + + + org.junit.platform + junit-platform-commons + ${junit.platform.version} + test + + + org.junit.platform + junit-platform-engine + ${junit.platform.version} + test + + + org.jmockit + jmockit + 1.19 + test + + + org.jmockit + jmockit-coverage + 1.19 + test + + + org.mockito + mockito-core + 4.4.0 + + + com.h2database + h2 + 2.0.206 + test + - diff --git a/intentanalysis/src/main/java/org/onap/usecaseui/intentanalysis/util/SpringContextUtil.java b/intentanalysis/src/main/java/org/onap/usecaseui/intentanalysis/util/SpringContextUtil.java new file mode 100644 index 0000000..e504858 --- /dev/null +++ b/intentanalysis/src/main/java/org/onap/usecaseui/intentanalysis/util/SpringContextUtil.java @@ -0,0 +1,44 @@ +/* + * Copyright 2022 Huawei Technologies Co., Ltd. + * + * 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. + */ + +package org.onap.usecaseui.intentanalysis.util; + +import org.springframework.context.ApplicationContext; + +public class SpringContextUtil { + + private SpringContextUtil() { + throw new IllegalStateException("SpringContextUtil class"); + } + + private static ApplicationContext applicationContext; + + public static ApplicationContext getApplicationContext() { + return applicationContext; + } + + public static void setApplicationContext(ApplicationContext applicationContext) { + SpringContextUtil.applicationContext = applicationContext; + } + + public static Object getBean(String name) { + return applicationContext.getBean(name); + } + + public static Object getBean(Class requiredType) { + return applicationContext.getBean(requiredType); + } +} diff --git a/intentanalysis/src/test/java/org/onap/usecaseui/intentanalysis/test/IntentAnalysisApplicationTests.java b/intentanalysis/src/test/java/org/onap/usecaseui/intentanalysis/test/IntentAnalysisApplicationTests.java new file mode 100644 index 0000000..529f08d --- /dev/null +++ b/intentanalysis/src/test/java/org/onap/usecaseui/intentanalysis/test/IntentAnalysisApplicationTests.java @@ -0,0 +1,53 @@ +/* + * Copyright 2022 Huawei Technologies Co., Ltd. + * + * 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. + */ + +package org.onap.usecaseui.intentanalysis.test; + +import java.io.IOException; +import javax.servlet.FilterChain; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.mybatis.spring.annotation.MapperScan; +import org.onap.usecaseui.intentanalysis.util.SpringContextUtil; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration; +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.Bean; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.web.filter.OncePerRequestFilter; + +@SpringBootApplication(exclude = {SecurityAutoConfiguration.class}, scanBasePackages = "org.onap.usecaseui.intentanalysis") +@MapperScan(basePackages = {"org.onap.usecaseui.intentanalysis.mapper"}) +@EnableScheduling + +public class IntentAnalysisApplicationTests { + + public static void main(String[] args) throws Exception { + ApplicationContext applicationContext = SpringApplication.run(IntentAnalysisApplicationTests.class, args); + SpringContextUtil.setApplicationContext(applicationContext); + } + + @Bean + public OncePerRequestFilter accessTokenFilter() { + return new OncePerRequestFilter() { + @Override + protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, + FilterChain filterChain) throws ServletException, IOException { + filterChain.doFilter(request, response); + } + }; + } +} diff --git a/intentanalysis/src/test/java/org/onap/usecaseui/intentanalysis/test/service/IntentServiceTest.java b/intentanalysis/src/test/java/org/onap/usecaseui/intentanalysis/test/service/IntentServiceTest.java new file mode 100644 index 0000000..3a692c0 --- /dev/null +++ b/intentanalysis/src/test/java/org/onap/usecaseui/intentanalysis/test/service/IntentServiceTest.java @@ -0,0 +1,56 @@ +/* + * Copyright 2022 Huawei Technologies Co., Ltd. + * + * 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. + */ + +package org.onap.usecaseui.intentanalysis.test.service; + +import java.io.IOException; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.onap.usecaseui.intentanalysis.bean.models.Intent; +import org.onap.usecaseui.intentanalysis.service.IntentService; +import org.onap.usecaseui.intentanalysis.test.IntentAnalysisApplicationTests; +import org.onap.usecaseui.intentanalysis.util.SpringContextUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests; +import org.springframework.test.context.junit4.SpringRunner; + +@SpringBootTest(classes = IntentAnalysisApplicationTests.class) +@RunWith(SpringRunner.class) +public class IntentServiceTest extends AbstractJUnit4SpringContextTests { + + private static final Logger LOGGER = LoggerFactory.getLogger(IntentServiceTest.class); + + @Autowired + private IntentService intentService; + + @Before + public void setUp() { + SpringContextUtil.setApplicationContext(applicationContext); + } + + @Test + public void testCreateIntentSuccess() throws IOException { + Intent intent = new Intent(); + intent.setIntentId("testUUID"); + intent.setIntentName("testIntentName"); + //ToDo + //Intent intentTmp = intentService.createIntent(intent); + Assert.assertNotNull(intent); + } +} diff --git a/intentanalysis/src/test/resources/application.yaml b/intentanalysis/src/test/resources/application.yaml new file mode 100644 index 0000000..8ddc4d8 --- /dev/null +++ b/intentanalysis/src/test/resources/application.yaml @@ -0,0 +1,44 @@ +# +# Copyright 2022 Huawei Technologies Co., Ltd. +# +# 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. +# + +###pgsql config###### +server: + port: 8087 + ssl: + enabled: ${SSL_ENABLED:false} + key-store: ${SSL_KEY_STORE_PATH:} + key-store-password: ${SSL_KEY_STORE_PASSWORD:} + key-store-type: ${SSL_KEY_STORE_TYPE:} + key-alias: ${SSL_KEY_ALIAS:} +spring: + datasource: + url: jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;MODE=PostgreSQL + username: + password: + driver-class-name: org.h2.Driver + schema: classpath:intentdb-test-init.sql + data: classpath:intentdb-test-data.sql + main: + allow-bean-definition-overriding: true + +###mybtis#### +mybatis: + mapper-locations: classpath:mybatis/sql/*.xml +security: + oauth2: + resource: + jwt: + key-value: test diff --git a/intentanalysis/src/test/resources/intentdb-test-data.sql b/intentanalysis/src/test/resources/intentdb-test-data.sql new file mode 100644 index 0000000..14cbefc --- /dev/null +++ b/intentanalysis/src/test/resources/intentdb-test-data.sql @@ -0,0 +1,22 @@ +/* + Navicat Premium Data Transfer + + Source Server : 1 + Source Server Type : PostgreSQL + Source Server Version : 100011 + Source Host : localhost:5432 + Source Catalog : exampledb + Source Schema : mec + + Target Server Type : PostgreSQL + Target Server Version : 100011 + File Encoding : 65001 + + Date: 26/07/2022 10:12:23 +*/ + +-- ---------------------------- +MERGE INTO intent (intent_id, intent_name)KEY(intent_id)values ('1234','test-intent'); + + +MERGE INTO expectation (expectation_id, expectation_name, target_moi, intent_id)KEY(expectation_id)values ('2234','test-expectation',null, '1234'); diff --git a/intentanalysis/src/test/resources/intentdb-test-init.sql b/intentanalysis/src/test/resources/intentdb-test-init.sql new file mode 100644 index 0000000..b84f8e3 --- /dev/null +++ b/intentanalysis/src/test/resources/intentdb-test-init.sql @@ -0,0 +1,42 @@ +/* + Navicat Premium Data Transfer + + Source Server : 1 + Source Server Type : PostgreSQL + Source Server Version : 100011 + Source Host : localhost:5432 + Source Catalog : exampledb + Source Schema : mec + + Target Server Type : PostgreSQL + Target Server Version : 100011 + File Encoding : 65001 + + Date: 30/12/2019 14:40:23 +*/ +DROP TABLE IF EXISTS intent; +DROP TABLE IF EXISTS expectation; +DROP TABLE IF EXISTS state; + +CREATE TABLE if NOT EXISTS intent( + intent_id varchar(255), + intent_name varchar(255), + CONSTRAINT intent_test_task_pkey PRIMARY KEY (intent_id) +); + +create table if not exists expectation( + expectation_id varchar(255), + expectation_name varchar(255), + target_moi varchar(255), + intent_id varchar(255), + CONSTRAINT expectation_test_task_pkey PRIMARY KEY (expectation_id) +); + +create table if not exists state( + state_id varchar(255), + state_name varchar(255), + is_satisfied boolean, + condition varchar(255), + expectation_id varchar(255), + CONSTRAINT state_test_task_pkey PRIMARY KEY (state_id) +); -- cgit 1.2.3-korg