You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shenyu.apache.org by ty...@apache.org on 2021/10/10 13:35:14 UTC
[incubator-shenyu] branch master updated: fix: add
ShenyuClientRegisterSpringMVCServiceImplTest (#2206)
This is an automated email from the ASF dual-hosted git repository.
tydhot pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-shenyu.git
The following commit(s) were added to refs/heads/master by this push:
new 8acc142 fix: add ShenyuClientRegisterSpringMVCServiceImplTest (#2206)
8acc142 is described below
commit 8acc142c7dea84489da336db56e2bbe769cacf3a
Author: qurenneng <31...@users.noreply.github.com>
AuthorDate: Sun Oct 10 21:34:06 2021 +0800
fix: add ShenyuClientRegisterSpringMVCServiceImplTest (#2206)
* fix: add ShenyuClientRegisterSpringMVCServiceImplTest
* fix: ShenyuClientRegisterSpringMVCServiceImplTest
* fix: add ShenyuClientRegisterSpringMVCServiceImpl
* fix: add ShenyuClientRegisterSpringMVCServiceImplTest
* add valid license header
---
...enyuClientRegisterSpringMVCServiceImplTest.java | 164 +++++++++++++++++++++
1 file changed, 164 insertions(+)
diff --git a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/register/ShenyuClientRegisterSpringMVCServiceImplTest.java b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/register/ShenyuClientRegisterSpringMVCServiceImplTest.java
new file mode 100644
index 0000000..18227bd
--- /dev/null
+++ b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/register/ShenyuClientRegisterSpringMVCServiceImplTest.java
@@ -0,0 +1,164 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apache.shenyu.admin.service.register;
+
+import org.apache.shenyu.admin.model.dto.RuleDTO;
+import org.apache.shenyu.admin.model.dto.SelectorDTO;
+import org.apache.shenyu.admin.model.entity.MetaDataDO;
+import org.apache.shenyu.admin.service.MetaDataService;
+import org.apache.shenyu.admin.service.PluginService;
+import org.apache.shenyu.admin.service.RuleService;
+import org.apache.shenyu.admin.service.SelectorService;
+import org.apache.shenyu.admin.service.impl.MetaDataServiceImpl;
+import org.apache.shenyu.admin.utils.ShenyuResultMessage;
+import org.apache.shenyu.common.enums.OperatorEnum;
+import org.apache.shenyu.common.enums.PluginEnum;
+import org.apache.shenyu.common.enums.RpcTypeEnum;
+import org.apache.shenyu.common.utils.UUIDUtils;
+import org.apache.shenyu.register.common.dto.MetaDataRegisterDTO;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.junit.MockitoJUnitRunner;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.springframework.context.ApplicationEventPublisher;
+
+import java.util.UUID;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.BDDMockito.given;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.anyString;
+import static org.mockito.Mockito.anyBoolean;
+
+/**
+ * ShenyuClientRegisterSpringMVCServiceImplTest.
+ */
+@PrepareForTest(MetaDataServiceImpl.class)
+@RunWith(MockitoJUnitRunner.Silent.class)
+public class ShenyuClientRegisterSpringMVCServiceImplTest {
+
+ @Mock
+ private ApplicationEventPublisher eventPublisher;
+
+ @Mock
+ private SelectorService selectorService;
+
+ @Mock
+ private RuleService ruleService;
+
+ @Mock
+ private MetaDataService metaDataService;
+
+ @Mock
+ private PluginService pluginService;
+
+ private ShenyuClientRegisterSpringMVCServiceImpl shenyuClientRegisterSpringMVCService;
+
+ @Before
+ public void setUp() {
+ shenyuClientRegisterSpringMVCService = new ShenyuClientRegisterSpringMVCServiceImpl(metaDataService, eventPublisher, selectorService, ruleService, pluginService);
+ }
+
+ @Test
+ public void testSaveOrUpdateMetaData() {
+ MetaDataDO metaDataDO = buildMetaDataDO();
+ MetaDataRegisterDTO metaDataRegisterDTO = buildScMetaDataRegisterDTO();
+ shenyuClientRegisterSpringMVCService.saveOrUpdateMetaData(metaDataDO, metaDataRegisterDTO);
+ verify(eventPublisher, times(1)).publishEvent(any());
+ }
+
+ @Test
+ public void testHandlerSelector() {
+ String selectorId = UUID.randomUUID().toString();
+ MetaDataRegisterDTO dubboMetaDataRegisterDTO = buildScMetaDataRegisterDTO();
+ given(selectorService.handlerSelectorNeedUpstreamCheck(any(), eq(PluginEnum.DIVIDE.getName()))).willReturn(selectorId);
+ Assert.assertEquals(shenyuClientRegisterSpringMVCService.handlerSelector(dubboMetaDataRegisterDTO), selectorId);
+ }
+
+ @Test
+ public void testHandlerRule() {
+ String selectorId = UUID.randomUUID().toString();
+ MetaDataDO metaDataDO = buildMetaDataDO();
+ MetaDataRegisterDTO metaDataRegisterDTO = buildScMetaDataRegisterDTO();
+ given(ruleService.register(any(), anyString(), anyBoolean())).willReturn(UUIDUtils.getInstance().generateShortUuid());
+ shenyuClientRegisterSpringMVCService.handlerRule(selectorId, metaDataRegisterDTO, metaDataDO);
+ }
+
+ @Test
+ public void testRegisterRule() {
+ String selectorId = UUID.randomUUID().toString();
+ final MetaDataRegisterDTO metaDataRegisterDTO = buildScMetaDataRegisterDTO();
+ metaDataRegisterDTO.setPath("path*");
+ RuleDTO result = shenyuClientRegisterSpringMVCService.registerRule(selectorId, metaDataRegisterDTO, PluginEnum.SPRING_CLOUD.getName());
+ Assert.assertNotNull(result);
+ Assert.assertEquals(result.getSelectorId(), selectorId);
+ Assert.assertEquals(result.getName(), metaDataRegisterDTO.getRuleName());
+ Assert.assertNotNull(result.getRuleConditions());
+ Assert.assertEquals(result.getRuleConditions().size(), 1);
+ Assert.assertEquals(result.getRuleConditions().get(0).getOperator(), OperatorEnum.MATCH.getAlias());
+
+ metaDataRegisterDTO.setPath("path");
+ result = shenyuClientRegisterSpringMVCService.registerRule(selectorId, metaDataRegisterDTO, PluginEnum.SPRING_CLOUD.getName());
+ Assert.assertEquals(result.getRuleConditions().get(0).getOperator(), OperatorEnum.EQ.getAlias());
+ }
+
+ @Test
+ public void testRegister() {
+ String selectorId = UUID.randomUUID().toString();
+ final MetaDataRegisterDTO metaDataRegisterDTO = buildScMetaDataRegisterDTO();
+ MetaDataDO metaDataDO = buildMetaDataDO();
+ given(metaDataService.findByPath(any())).willReturn(metaDataDO);
+ given(selectorService.register(SelectorDTO.builder().build())).willReturn(selectorId);
+ given(selectorService.handlerSelectorNeedUpstreamCheck(any(), eq(PluginEnum.SPRING_CLOUD.getName()))).willReturn(selectorId);
+ Assert.assertEquals(ShenyuResultMessage.SUCCESS, shenyuClientRegisterSpringMVCService.register(metaDataRegisterDTO));
+ }
+
+ private MetaDataRegisterDTO buildScMetaDataRegisterDTO() {
+ MetaDataRegisterDTO springMvcRegisterDTO = new MetaDataRegisterDTO();
+ springMvcRegisterDTO.setAppName("appName1");
+ springMvcRegisterDTO.setContextPath("content1");
+ springMvcRegisterDTO.setPath("path1");
+ springMvcRegisterDTO.setPathDesc("pathDesc1");
+ springMvcRegisterDTO.setRpcType(RpcTypeEnum.HTTP.getName());
+ springMvcRegisterDTO.setHost("localhost1");
+ springMvcRegisterDTO.setPort(1234);
+ springMvcRegisterDTO.setRuleName("ruleName1");
+ springMvcRegisterDTO.setEnabled(true);
+ springMvcRegisterDTO.setRegisterMetaData(false);
+ return springMvcRegisterDTO;
+ }
+
+ private MetaDataDO buildMetaDataDO() {
+ return MetaDataDO.builder()
+ .appName("appNameMetaData")
+ .path("pathMetaData")
+ .pathDesc("pathDescMetaData")
+ .rpcType("rpcTypeMetaData")
+ .serviceName("serviceName3")
+ .methodName("methodName3")
+ .parameterTypes("parameterTypesMetaData")
+ .rpcExt("rpcExtMetaData")
+ .enabled(true)
+ .build();
+ }
+}