This is an automated email from the ASF dual-hosted git repository.
hefengen pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shenyu.git
The following commit(s) were added to refs/heads/master by this push:
new 265107cc61 New API: supports batch modification of selector/rule
status (#5499)
265107cc61 is described below
commit 265107cc61a73a5579cb8fdb2e8b18168017b2ab
Author: Kerwin Bryant <[email protected]>
AuthorDate: Tue Mar 19 15:02:07 2024 +0800
New API: supports batch modification of selector/rule status (#5499)
---
.../shenyu/admin/controller/RuleController.java | 31 +++++++++++----
.../admin/controller/SelectorController.java | 31 +++++++++++----
.../org/apache/shenyu/admin/mapper/RuleMapper.java | 46 +++++++++++++---------
.../apache/shenyu/admin/mapper/SelectorMapper.java | 9 +++++
.../apache/shenyu/admin/service/RuleService.java | 11 +++++-
.../shenyu/admin/service/SelectorService.java | 9 +++++
.../shenyu/admin/service/impl/RuleServiceImpl.java | 15 +++++++
.../admin/service/impl/SelectorServiceImpl.java | 15 +++++++
.../src/main/resources/mappers/rule-sqlmap.xml | 4 ++
.../src/main/resources/mappers/selector-sqlmap.xml | 4 ++
.../admin/controller/RuleControllerTest.java | 39 ++++++++++++++++--
.../admin/controller/SelectorControllerTest.java | 38 ++++++++++++++++--
12 files changed, 210 insertions(+), 42 deletions(-)
diff --git
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/RuleController.java
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/RuleController.java
index 49be6a1069..307671f0c5 100644
---
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/RuleController.java
+++
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/RuleController.java
@@ -19,6 +19,7 @@ package org.apache.shenyu.admin.controller;
import org.apache.shenyu.admin.aspect.annotation.RestApi;
import org.apache.shenyu.admin.mapper.RuleMapper;
+import org.apache.shenyu.admin.model.dto.BatchCommonDTO;
import org.apache.shenyu.admin.model.dto.RuleDTO;
import org.apache.shenyu.admin.model.page.CommonPager;
import org.apache.shenyu.admin.model.page.PageCondition;
@@ -51,13 +52,13 @@ import java.util.List;
*/
@RestApi("/rule")
public class RuleController implements PagedController<RuleQueryCondition,
RuleVO> {
-
+
private final RuleService ruleService;
-
+
public RuleController(final RuleService ruleService) {
this.ruleService = ruleService;
}
-
+
/**
* query rules.
*
@@ -77,7 +78,7 @@ public class RuleController implements
PagedController<RuleQueryCondition, RuleV
condition.setKeyword(name);
return searchAdaptor(new PageCondition<>(currentPage, pageSize,
condition));
}
-
+
/**
* detail rule.
*
@@ -91,7 +92,7 @@ public class RuleController implements
PagedController<RuleQueryCondition, RuleV
RuleVO ruleVO = ruleService.findById(id);
return ShenyuAdminResult.success(ShenyuResultMessage.DETAIL_SUCCESS,
ruleVO);
}
-
+
/**
* create rule.
*
@@ -103,7 +104,7 @@ public class RuleController implements
PagedController<RuleQueryCondition, RuleV
Integer createCount = ruleService.createOrUpdate(ruleDTO);
return ShenyuAdminResult.success(ShenyuResultMessage.CREATE_SUCCESS,
createCount);
}
-
+
/**
* update rule.
*
@@ -120,7 +121,21 @@ public class RuleController implements
PagedController<RuleQueryCondition, RuleV
Integer updateCount = ruleService.createOrUpdate(ruleDTO);
return ShenyuAdminResult.success(ShenyuResultMessage.UPDATE_SUCCESS,
updateCount);
}
-
+
+ /**
+ * Batch enabled rule.
+ *
+ * @param batchCommonDTO the batch common dto
+ * @return the shenyu result
+ */
+ @PostMapping("/batchEnabled")
+ public ShenyuAdminResult batchEnabled(@Valid @RequestBody final
BatchCommonDTO batchCommonDTO) {
+ if (!ruleService.enabled(batchCommonDTO.getIds(),
batchCommonDTO.getEnabled())) {
+ return
ShenyuAdminResult.error(ShenyuResultMessage.NOT_FOUND_EXCEPTION);
+ }
+ return ShenyuAdminResult.success(ShenyuResultMessage.ENABLE_SUCCESS);
+ }
+
/**
* delete rules.
*
@@ -132,7 +147,7 @@ public class RuleController implements
PagedController<RuleQueryCondition, RuleV
Integer deleteCount = ruleService.delete(ids);
return ShenyuAdminResult.success(ShenyuResultMessage.DELETE_SUCCESS,
deleteCount);
}
-
+
@Override
public PageService<RuleQueryCondition, RuleVO> pageService() {
return ruleService;
diff --git
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/SelectorController.java
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/SelectorController.java
index 4a14c24b95..891c1c770c 100644
---
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/SelectorController.java
+++
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/SelectorController.java
@@ -19,6 +19,7 @@ package org.apache.shenyu.admin.controller;
import org.apache.shenyu.admin.aspect.annotation.RestApi;
import org.apache.shenyu.admin.mapper.SelectorMapper;
+import org.apache.shenyu.admin.model.dto.BatchCommonDTO;
import org.apache.shenyu.admin.model.dto.SelectorDTO;
import org.apache.shenyu.admin.model.page.CommonPager;
import org.apache.shenyu.admin.model.page.PageCondition;
@@ -51,13 +52,13 @@ import java.util.List;
*/
@RestApi("/selector")
public class SelectorController implements
PagedController<SelectorQueryCondition, SelectorVO> {
-
+
private final SelectorService selectorService;
-
+
public SelectorController(final SelectorService selectorService) {
this.selectorService = selectorService;
}
-
+
/**
* query Selectors.
*
@@ -77,7 +78,7 @@ public class SelectorController implements
PagedController<SelectorQueryConditio
condition.setKeyword(name);
return searchAdaptor(new PageCondition<>(currentPage, pageSize,
condition));
}
-
+
/**
* detail selector.
*
@@ -91,7 +92,7 @@ public class SelectorController implements
PagedController<SelectorQueryConditio
SelectorVO selectorVO = selectorService.findById(id);
return ShenyuAdminResult.success(ShenyuResultMessage.DETAIL_SUCCESS,
selectorVO);
}
-
+
/**
* create selector.
*
@@ -103,7 +104,7 @@ public class SelectorController implements
PagedController<SelectorQueryConditio
selectorService.createOrUpdate(selectorDTO);
return ShenyuAdminResult.success(ShenyuResultMessage.CREATE_SUCCESS,
selectorDTO.getId());
}
-
+
/**
* update Selector.
*
@@ -120,7 +121,21 @@ public class SelectorController implements
PagedController<SelectorQueryConditio
Integer updateCount = selectorService.createOrUpdate(selectorDTO);
return ShenyuAdminResult.success(ShenyuResultMessage.UPDATE_SUCCESS,
updateCount);
}
-
+
+ /**
+ * Batch enabled selector.
+ *
+ * @param batchCommonDTO the batch common dto
+ * @return the shenyu result
+ */
+ @PostMapping("/batchEnabled")
+ public ShenyuAdminResult batchEnabled(@Valid @RequestBody final
BatchCommonDTO batchCommonDTO) {
+ if (!selectorService.enabled(batchCommonDTO.getIds(),
batchCommonDTO.getEnabled())) {
+ return
ShenyuAdminResult.error(ShenyuResultMessage.NOT_FOUND_EXCEPTION);
+ }
+ return ShenyuAdminResult.success(ShenyuResultMessage.ENABLE_SUCCESS);
+ }
+
/**
* delete Selectors.
*
@@ -132,7 +147,7 @@ public class SelectorController implements
PagedController<SelectorQueryConditio
Integer deleteCount = selectorService.delete(ids);
return ShenyuAdminResult.success(ShenyuResultMessage.DELETE_SUCCESS,
deleteCount);
}
-
+
@Override
public PageService<SelectorQueryCondition, SelectorVO> pageService() {
return selectorService;
diff --git
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/mapper/RuleMapper.java
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/mapper/RuleMapper.java
index c6322561e5..a8490fa065 100644
--- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/mapper/RuleMapper.java
+++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/mapper/RuleMapper.java
@@ -33,7 +33,7 @@ import java.util.List;
*/
@Mapper
public interface RuleMapper extends ExistProvider {
-
+
/**
* rule existed.
*
@@ -42,7 +42,7 @@ public interface RuleMapper extends ExistProvider {
*/
@Override
Boolean existed(@Param("id") Serializable id);
-
+
/**
* select rule by id.
*
@@ -50,7 +50,7 @@ public interface RuleMapper extends ExistProvider {
* @return {@linkplain RuleDO}
*/
RuleDO selectById(String id);
-
+
/**
* select rule by query.
*
@@ -58,7 +58,7 @@ public interface RuleMapper extends ExistProvider {
* @return {@linkplain List}
*/
List<RuleDO> selectByQuery(RuleQuery ruleQuery);
-
+
/**
* Find by selector id list.
*
@@ -66,7 +66,7 @@ public interface RuleMapper extends ExistProvider {
* @return the list
*/
List<RuleDO> findBySelectorId(String selectorId);
-
+
/**
* Find by selector id list.
*
@@ -74,7 +74,7 @@ public interface RuleMapper extends ExistProvider {
* @return the list
*/
List<RuleDO> findBySelectorIds(List<String> selectorIds);
-
+
/**
* select rule by name.
*
@@ -82,7 +82,7 @@ public interface RuleMapper extends ExistProvider {
* @return rule do
*/
RuleDO findByName(String name);
-
+
/**
* Find by selector id and name rule do.
*
@@ -91,7 +91,7 @@ public interface RuleMapper extends ExistProvider {
* @return the rule do
*/
RuleDO findBySelectorIdAndName(@Param("selectorId") String selectorId,
@Param("name") String name);
-
+
/**
* count rule by query.
*
@@ -99,7 +99,7 @@ public interface RuleMapper extends ExistProvider {
* @return {@linkplain Integer}
*/
Integer countByQuery(RuleQuery ruleQuery);
-
+
/**
* insert rule.
*
@@ -107,7 +107,7 @@ public interface RuleMapper extends ExistProvider {
* @return rows int
*/
int insert(RuleDO ruleDO);
-
+
/**
* insert selective rule.
*
@@ -115,7 +115,7 @@ public interface RuleMapper extends ExistProvider {
* @return rows int
*/
int insertSelective(RuleDO ruleDO);
-
+
/**
* update rule.
*
@@ -123,7 +123,7 @@ public interface RuleMapper extends ExistProvider {
* @return rows int
*/
int update(RuleDO ruleDO);
-
+
/**
* update selective rule.
*
@@ -131,7 +131,7 @@ public interface RuleMapper extends ExistProvider {
* @return rows int
*/
int updateSelective(RuleDO ruleDO);
-
+
/**
* delete rule.
*
@@ -139,7 +139,7 @@ public interface RuleMapper extends ExistProvider {
* @return rows int
*/
int delete(String id);
-
+
/**
* delete rule.
*
@@ -147,14 +147,14 @@ public interface RuleMapper extends ExistProvider {
* @return rows int
*/
int deleteByIds(List<String> ids);
-
+
/**
* list all.
*
* @return {@linkplain List}
*/
List<RuleDO> selectAll();
-
+
/**
* search by condition.
*
@@ -162,7 +162,7 @@ public interface RuleMapper extends ExistProvider {
* @return list
*/
List<RuleVO> selectByCondition(@Param("condition") RuleQueryCondition
condition);
-
+
/**
* get plugin name by selectorId.
*
@@ -170,7 +170,7 @@ public interface RuleMapper extends ExistProvider {
* @return plugin name
*/
String getPluginNameBySelectorId(@Param("selectorId") String selectorId);
-
+
/**
* select by rule ids.
*
@@ -178,5 +178,13 @@ public interface RuleMapper extends ExistProvider {
* @return rules
*/
List<RuleDO> selectByIds(@Param("ids") List<String> ids);
-
+
+ /**
+ * update status.
+ *
+ * @param id id
+ * @param enabled enabled
+ * @return result
+ */
+ int updateEnable(@Param("id") String id, @Param("enabled") Boolean
enabled);
}
diff --git
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/mapper/SelectorMapper.java
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/mapper/SelectorMapper.java
index e2e0320921..871972c079 100644
---
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/mapper/SelectorMapper.java
+++
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/mapper/SelectorMapper.java
@@ -195,4 +195,13 @@ public interface SelectorMapper extends ExistProvider {
* @return SelectorDOs
*/
List<SelectorDO> selectByDiscoveryId(@Param("discoveryId") String
discoveryId);
+
+ /**
+ * update status.
+ *
+ * @param id id
+ * @param enabled enabled
+ * @return result
+ */
+ int updateEnable(@Param("id") String id, @Param("enabled") Boolean
enabled);
}
diff --git
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/RuleService.java
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/RuleService.java
index 1323ad82e2..c903a42d06 100644
---
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/RuleService.java
+++
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/RuleService.java
@@ -148,7 +148,7 @@ public interface RuleService extends
PageService<RuleQueryCondition, RuleVO> {
* @return {@link RuleDO}
*/
RuleDO findByName(String name);
-
+
/**
* Find by selector id and name rule do.
*
@@ -164,4 +164,13 @@ public interface RuleService extends
PageService<RuleQueryCondition, RuleVO> {
* @return config import result
*/
ConfigImportResult importData(List<RuleDTO> ruleList);
+
+ /**
+ * Enabled string.
+ *
+ * @param ids the ids
+ * @param enabled the enable
+ * @return the result
+ */
+ Boolean enabled(List<String> ids, Boolean enabled);
}
diff --git
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/SelectorService.java
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/SelectorService.java
index 66dc68efb7..8e4e9a7f01 100644
---
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/SelectorService.java
+++
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/SelectorService.java
@@ -227,4 +227,13 @@ public interface SelectorService extends
PageService<SelectorQueryCondition, Sel
* @return config import result
*/
ConfigImportResult importData(List<SelectorDTO> selectorList);
+
+ /**
+ * Enabled string.
+ *
+ * @param ids the ids
+ * @param enabled the enable
+ * @return the result
+ */
+ Boolean enabled(List<String> ids, Boolean enabled);
}
diff --git
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/RuleServiceImpl.java
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/RuleServiceImpl.java
index b170450c21..f724c79c20 100644
---
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/RuleServiceImpl.java
+++
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/RuleServiceImpl.java
@@ -50,6 +50,7 @@ import org.apache.shenyu.common.constant.AdminConstants;
import org.apache.shenyu.common.dto.ConditionData;
import org.apache.shenyu.common.dto.RuleData;
import org.apache.shenyu.common.enums.MatchModeEnum;
+import org.apache.shenyu.common.utils.JsonUtils;
import org.apache.shenyu.common.utils.ListUtil;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Service;
@@ -289,6 +290,20 @@ public class RuleServiceImpl implements RuleService {
return ConfigImportResult.success(successCount);
}
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public Boolean enabled(final List<String> ids, final Boolean enabled) {
+ ids.forEach(id -> {
+ RuleDO ruleDO = ruleMapper.selectById(id);
+ RuleDO before = JsonUtils.jsonToObject(JsonUtils.toJson(ruleDO),
RuleDO.class);
+ ruleDO.setEnabled(enabled);
+ if (ruleMapper.updateEnable(id, enabled) > 0) {
+ ruleEventPublisher.onUpdated(ruleDO, before);
+ }
+ });
+ return Boolean.TRUE;
+ }
+
/**
* delete rules.
*
diff --git
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/SelectorServiceImpl.java
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/SelectorServiceImpl.java
index 0cc09ecca3..4483c5a807 100644
---
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/SelectorServiceImpl.java
+++
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/SelectorServiceImpl.java
@@ -70,6 +70,7 @@ import org.apache.shenyu.common.enums.DataEventTypeEnum;
import org.apache.shenyu.common.enums.MatchModeEnum;
import org.apache.shenyu.common.enums.SelectorTypeEnum;
import org.apache.shenyu.common.utils.ContextPathUtils;
+import org.apache.shenyu.common.utils.JsonUtils;
import org.apache.shenyu.common.utils.ListUtil;
import org.apache.shenyu.register.common.dto.MetaDataRegisterDTO;
import org.slf4j.Logger;
@@ -473,6 +474,20 @@ public class SelectorServiceImpl implements
SelectorService {
return ConfigImportResult.success(successCount);
}
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public Boolean enabled(final List<String> ids, final Boolean enabled) {
+ ids.forEach(id -> {
+ SelectorDO selectorDO = selectorMapper.selectById(id);
+ SelectorDO before =
JsonUtils.jsonToObject(JsonUtils.toJson(selectorDO), SelectorDO.class);
+ selectorDO.setEnabled(enabled);
+ if (selectorMapper.updateEnable(id, enabled) > 0) {
+ selectorEventPublisher.onUpdated(selectorDO, before);
+ }
+ });
+ return Boolean.TRUE;
+ }
+
/**
* the plugin delete, synchronously delete selectors.
*
diff --git a/shenyu-admin/src/main/resources/mappers/rule-sqlmap.xml
b/shenyu-admin/src/main/resources/mappers/rule-sqlmap.xml
index b932786033..9e3cf0714a 100644
--- a/shenyu-admin/src/main/resources/mappers/rule-sqlmap.xml
+++ b/shenyu-admin/src/main/resources/mappers/rule-sqlmap.xml
@@ -335,6 +335,10 @@
WHERE id = #{id, jdbcType=VARCHAR}
</update>
+ <update id="updateEnable">
+ UPDATE rule SET enabled = #{enabled, jdbcType=TINYINT} WHERE id =
#{id, jdbcType=VARCHAR}
+ </update>
+
<delete id="delete" parameterType="java.lang.String">
DELETE FROM rule
WHERE id = #{id, jdbcType=VARCHAR}
diff --git a/shenyu-admin/src/main/resources/mappers/selector-sqlmap.xml
b/shenyu-admin/src/main/resources/mappers/selector-sqlmap.xml
index d77447a83a..4e0f3d2592 100644
--- a/shenyu-admin/src/main/resources/mappers/selector-sqlmap.xml
+++ b/shenyu-admin/src/main/resources/mappers/selector-sqlmap.xml
@@ -403,6 +403,10 @@
WHERE id = #{id, jdbcType=VARCHAR}
</update>
+ <update id="updateEnable">
+ UPDATE selector SET enabled = #{enabled, jdbcType=TINYINT} WHERE id =
#{id, jdbcType=VARCHAR}
+ </update>
+
<delete id="delete" parameterType="java.lang.String">
DELETE FROM selector
WHERE id = #{id, jdbcType=VARCHAR}
diff --git
a/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/RuleControllerTest.java
b/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/RuleControllerTest.java
index 1381255645..4c6db890d8 100644
---
a/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/RuleControllerTest.java
+++
b/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/RuleControllerTest.java
@@ -21,6 +21,7 @@ import org.apache.shenyu.admin.exception.ExceptionHandlers;
import org.apache.shenyu.admin.mapper.RuleMapper;
import org.apache.shenyu.admin.mapper.SelectorMapper;
import org.apache.shenyu.admin.model.custom.UserInfo;
+import org.apache.shenyu.admin.model.dto.BatchCommonDTO;
import org.apache.shenyu.admin.model.dto.RuleConditionDTO;
import org.apache.shenyu.admin.model.dto.RuleDTO;
import org.apache.shenyu.admin.model.page.CommonPager;
@@ -49,6 +50,7 @@ import
org.springframework.test.web.servlet.setup.MockMvcBuilders;
import java.time.LocalDateTime;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collections;
import java.util.List;
@@ -74,10 +76,10 @@ public final class RuleControllerTest {
@Mock
private RuleService ruleService;
-
+
@Mock
private RuleMapper ruleMapper;
-
+
@Mock
private SelectorMapper selectorMapper;
@@ -89,7 +91,7 @@ public final class RuleControllerTest {
private final RuleVO ruleVO = new RuleVO("666", "168", 0, "zero mode",
"/http/test/**", true, true, 1,
"{\"loadBalance\":\"random\",\"retry\":0,\"timeout\":3000}", false,
rcList, DateUtils.localDateTimeToString(LocalDateTime.now()),
DateUtils.localDateTimeToString(LocalDateTime.now()));
-
+
private final CommonPager<RuleVO> commonPager = new CommonPager<>(new
PageParameter(), Collections.singletonList(ruleVO));
@BeforeEach
@@ -219,4 +221,35 @@ public final class RuleControllerTest {
.andReturn();
}
+ @Test
+ public void testEnableRule() throws Exception {
+ RuleDTO ruleDTO = RuleDTO.builder()
+ .id("666")
+ .selectorId("168")
+ .matchMode(0)
+ .name("/http/order/update")
+ .enabled(true)
+ .loged(true)
+ .matchRestful(false)
+ .sort(1)
+
.handle("{\"loadBalance\":\"random\",\"retry\":0,\"timeout\":3000}")
+ .build();
+
SpringBeanUtils.getInstance().setApplicationContext(mock(ConfigurableApplicationContext.class));
+
when(SpringBeanUtils.getInstance().getBean(RuleMapper.class)).thenReturn(ruleMapper);
+ when(ruleMapper.existed(ruleDTO.getId())).thenReturn(true);
+
when(SpringBeanUtils.getInstance().getBean(SelectorMapper.class)).thenReturn(selectorMapper);
+ when(selectorMapper.existed(ruleDTO.getSelectorId())).thenReturn(true);
+ given(this.ruleService.enabled(Arrays.asList(ruleDTO.getId()),
false)).willReturn(true);
+ BatchCommonDTO batchCommonDTO = new BatchCommonDTO();
+ batchCommonDTO.setIds(Arrays.asList(ruleDTO.getId()));
+ batchCommonDTO.setEnabled(false);
+ this.mockMvc.perform(MockMvcRequestBuilders.post("/rule/batchEnabled")
+ .contentType(MediaType.APPLICATION_JSON)
+ .content(GsonUtils.getInstance().toJson(batchCommonDTO))
+ )
+ .andExpect(status().isOk())
+ .andExpect(jsonPath("$.message",
is(ShenyuResultMessage.ENABLE_SUCCESS)))
+ .andReturn();
+ }
+
}
diff --git
a/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/SelectorControllerTest.java
b/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/SelectorControllerTest.java
index d9b1b79dd6..99a3468481 100644
---
a/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/SelectorControllerTest.java
+++
b/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/SelectorControllerTest.java
@@ -21,6 +21,7 @@ import org.apache.shenyu.admin.exception.ExceptionHandlers;
import org.apache.shenyu.admin.mapper.PluginMapper;
import org.apache.shenyu.admin.mapper.SelectorMapper;
import org.apache.shenyu.admin.model.custom.UserInfo;
+import org.apache.shenyu.admin.model.dto.BatchCommonDTO;
import org.apache.shenyu.admin.model.dto.SelectorDTO;
import org.apache.shenyu.admin.model.page.CommonPager;
import org.apache.shenyu.admin.model.page.PageParameter;
@@ -48,6 +49,7 @@ import
org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import java.time.LocalDateTime;
+import java.util.Arrays;
import java.util.Collections;
import static org.hamcrest.core.Is.is;
@@ -72,13 +74,13 @@ public final class SelectorControllerTest {
@Mock
private SelectorService selectorService;
-
+
@Mock
private SelectorMapper selectorMapper;
-
+
@Mock
private PluginMapper pluginMapper;
-
+
private final SelectorVO selectorVO = new SelectorVO("1", "2",
"selector-1", MatchModeEnum.AND.getCode(),
MatchModeEnum.AND.getName(), SelectorTypeEnum.FULL_FLOW.getCode(),
SelectorTypeEnum.FULL_FLOW.getName(),
1, true, true, true, false, "handle", Collections.emptyList(),
@@ -183,4 +185,34 @@ public final class SelectorControllerTest {
.andExpect(jsonPath("$.data.id", is(selectorVO.getId())))
.andReturn();
}
+
+ @Test
+ public void enableSelector() throws Exception {
+ SelectorDTO selectorDTO = SelectorDTO.builder()
+ .id("123")
+ .name("test123")
+ .continued(true)
+ .type(1)
+ .loged(true)
+ .enabled(true)
+ .matchRestful(false)
+ .pluginId("2")
+ .sort(1)
+ .build();
+
SpringBeanUtils.getInstance().setApplicationContext(mock(ConfigurableApplicationContext.class));
+
when(SpringBeanUtils.getInstance().getBean(SelectorMapper.class)).thenReturn(selectorMapper);
+ when(selectorMapper.existed(selectorDTO.getId())).thenReturn(true);
+
when(SpringBeanUtils.getInstance().getBean(PluginMapper.class)).thenReturn(pluginMapper);
+ when(pluginMapper.existed(selectorDTO.getPluginId())).thenReturn(true);
+ given(this.selectorService.enabled(Arrays.asList(selectorDTO.getId()),
false)).willReturn(true);
+ BatchCommonDTO batchCommonDTO = new BatchCommonDTO();
+ batchCommonDTO.setIds(Arrays.asList(selectorDTO.getId()));
+ batchCommonDTO.setEnabled(false);
+
this.mockMvc.perform(MockMvcRequestBuilders.post("/selector/batchEnabled")
+ .contentType(MediaType.APPLICATION_JSON)
+ .content(GsonUtils.getInstance().toJson(batchCommonDTO)))
+ .andExpect(status().isOk())
+ .andExpect(jsonPath("$.message",
is(ShenyuResultMessage.ENABLE_SUCCESS)))
+ .andReturn();
+ }
}