This is an automated email from the ASF dual-hosted git repository.

xiaoyu 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 5c1ff67  [ISSUE #2138]for ShenyuClientRegisterDubboServiceImpl test  
(#2156)
5c1ff67 is described below

commit 5c1ff679a8808409fc8f102cd62c255228aca880
Author: sunrui849 <[email protected]>
AuthorDate: Tue Sep 28 11:45:16 2021 +0800

    [ISSUE #2138]for ShenyuClientRegisterDubboServiceImpl test  (#2156)
    
    * for ShenyuClientRegisterDubboServiceImpl test
    
    * fix code format
    
    * add empty line
    
    Co-authored-by: sunrui62 <[email protected]>
---
 .../ShenyuClientRegisterDubboServiceImplTest.java  | 175 +++++++++++++++++++++
 1 file changed, 175 insertions(+)

diff --git 
a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/register/ShenyuClientRegisterDubboServiceImplTest.java
 
b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/register/ShenyuClientRegisterDubboServiceImplTest.java
new file mode 100644
index 0000000..3bd4468
--- /dev/null
+++ 
b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/register/ShenyuClientRegisterDubboServiceImplTest.java
@@ -0,0 +1,175 @@
+/*
+ * 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.mapper.MetaDataMapper;
+import org.apache.shenyu.admin.model.dto.RuleDTO;
+import org.apache.shenyu.admin.model.entity.MetaDataDO;
+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.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.junit.MockitoJUnitRunner;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.springframework.context.ApplicationEventPublisher;
+
+import java.util.Objects;
+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;
+
+/**
+ * Test cases for ShenyuClientRegisterDubboServiceImpl.
+ */
+@PrepareForTest(MetaDataServiceImpl.class)
+@RunWith(MockitoJUnitRunner.Silent.class)
+public final class ShenyuClientRegisterDubboServiceImplTest {
+
+    @Mock
+    private MetaDataMapper metaDataMapper;
+
+    @InjectMocks
+    private MetaDataServiceImpl metaDataService;
+
+    @Mock
+    private SelectorService selectorService;
+
+    @Mock
+    private PluginService pluginService;
+
+    @Mock
+    private RuleService ruleService;
+
+    @Mock
+    private ApplicationEventPublisher eventPublisher;
+
+    private ShenyuClientRegisterDubboServiceImpl 
shenyuClientRegisterDubboService;
+
+    @Before
+    public void setUp() {
+        shenyuClientRegisterDubboService = new 
ShenyuClientRegisterDubboServiceImpl(metaDataService, selectorService, 
ruleService, pluginService);
+    }
+
+    @Test
+    public void testSaveOrUpdateMetaData() {
+        MetaDataDO metaDataDO = buildMetaDataDO();
+        MetaDataRegisterDTO dubboMetaDataRegisterDTO = 
buildDubboMetaDataRegisterDTO(RpcTypeEnum.DUBBO);
+        shenyuClientRegisterDubboService.saveOrUpdateMetaData(metaDataDO, 
dubboMetaDataRegisterDTO);
+        verify(eventPublisher, times(1)).publishEvent(any());
+    }
+
+    @Test
+    public void testHandlerSelector() {
+        String selectorId = UUID.randomUUID().toString();
+        MetaDataRegisterDTO dubboMetaDataRegisterDTO = 
buildDubboMetaDataRegisterDTO(RpcTypeEnum.DUBBO);
+        given(selectorService.handlerSelectorNeedUpstreamCheck(any(), 
eq(PluginEnum.DUBBO.getName()))).willReturn(selectorId);
+        
Assert.assertEquals(shenyuClientRegisterDubboService.handlerSelector(dubboMetaDataRegisterDTO),
 selectorId);
+    }
+
+    @Test
+    public void testHandlerRule() {
+        String selectorId = UUID.randomUUID().toString();
+        MetaDataDO metaDataDO = buildMetaDataDO();
+        MetaDataRegisterDTO dubboMetaDataRegisterDTO = 
buildDubboMetaDataRegisterDTO(RpcTypeEnum.DUBBO);
+        given(ruleService.register(any(), anyString(), 
anyBoolean())).willReturn(UUIDUtils.getInstance().generateShortUuid());
+        shenyuClientRegisterDubboService.handlerRule(selectorId, 
dubboMetaDataRegisterDTO, metaDataDO);
+    }
+
+    @Test
+    public void testRegisterRule() {
+        String selectorId = UUID.randomUUID().toString();
+        MetaDataRegisterDTO dubboMetaDataRegisterDTO = 
buildDubboMetaDataRegisterDTO(RpcTypeEnum.DUBBO);
+        dubboMetaDataRegisterDTO.setPath("path*");
+        RuleDTO result = 
shenyuClientRegisterDubboService.registerRule(selectorId, 
dubboMetaDataRegisterDTO, PluginEnum.DUBBO.getName());
+        Assert.assertNotNull(result);
+        Assert.assertEquals(result.getSelectorId(), selectorId);
+        Assert.assertEquals(result.getName(), 
dubboMetaDataRegisterDTO.getRuleName());
+        Assert.assertNotNull(result.getRuleConditions());
+        Assert.assertEquals(result.getRuleConditions().size(), 1);
+        Assert.assertEquals(result.getRuleConditions().get(0).getOperator(), 
OperatorEnum.MATCH.getAlias());
+
+        dubboMetaDataRegisterDTO.setPath("path");
+        result = shenyuClientRegisterDubboService.registerRule(selectorId, 
dubboMetaDataRegisterDTO, PluginEnum.DUBBO.getName());
+        Assert.assertEquals(result.getRuleConditions().get(0).getOperator(), 
OperatorEnum.EQ.getAlias());
+    }
+
+    @Test
+    public void testRegister() {
+        String selectorId = UUID.randomUUID().toString();
+
+        MetaDataRegisterDTO dubboMetaDataRegisterDTO = 
buildDubboMetaDataRegisterDTO(RpcTypeEnum.DUBBO);
+        MetaDataDO metaDataDO = buildMetaDataDO();
+        given(metaDataService.findByPath(any())).willReturn(metaDataDO);
+        given(selectorService.handlerSelectorNeedUpstreamCheck(any(), 
eq(PluginEnum.DUBBO.getName()))).willReturn(selectorId);
+        Assert.assertEquals(ShenyuResultMessage.SUCCESS, 
shenyuClientRegisterDubboService.register(dubboMetaDataRegisterDTO));
+        verify(eventPublisher, times(1)).publishEvent(any());
+        verify(selectorService, 
times(1)).handlerSelectorNeedUpstreamCheck(any(), 
eq(PluginEnum.DUBBO.getName()));
+        verify(ruleService, times(1)).register(any(), anyString(), 
anyBoolean());
+    }
+
+    private MetaDataRegisterDTO buildDubboMetaDataRegisterDTO(final 
RpcTypeEnum rpcTypeEnum) {
+        MetaDataRegisterDTO springMvcRegisterDTO = new MetaDataRegisterDTO();
+        springMvcRegisterDTO.setAppName("appName1");
+        springMvcRegisterDTO.setContextPath("content1");
+        springMvcRegisterDTO.setPath("path1");
+        springMvcRegisterDTO.setPathDesc("pathDesc1");
+        if (Objects.isNull(rpcTypeEnum)) {
+            springMvcRegisterDTO.setRpcType("http");
+        } else {
+            springMvcRegisterDTO.setRpcType(rpcTypeEnum.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();
+    }
+}

Reply via email to