feat(测试计划): 补充接口分享密码校验接口

--story=1016179 --user=宋昌昌 【接口测试】接口文档 https://www.tapd.cn/55049933/s/1589978
This commit is contained in:
song-cc-rock 2024-10-12 14:16:49 +08:00 committed by Craftsman
parent 387e1ef46e
commit 2bc3c7161b
5 changed files with 79 additions and 0 deletions

View File

@ -4,6 +4,7 @@ import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import io.metersphere.api.domain.ApiDocShare;
import io.metersphere.api.dto.definition.ApiDocShareDTO;
import io.metersphere.api.dto.definition.request.ApiDocShareCheckRequest;
import io.metersphere.api.dto.definition.request.ApiDocShareEditRequest;
import io.metersphere.api.dto.definition.request.ApiDocSharePageRequest;
import io.metersphere.api.service.definition.ApiDocShareLogService;
@ -78,4 +79,9 @@ public class ApiDocShareController {
apiDocShareService.delete(id);
}
@PostMapping("/check")
@Operation(summary = "接口测试-接口管理-校验分享密码")
public Boolean delete(@Validated @RequestBody ApiDocShareCheckRequest request) {
return apiDocShareService.check(request);
}
}

View File

@ -0,0 +1,19 @@
package io.metersphere.api.dto.definition.request;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
/**
* @author song-cc-rock
*/
@Data
public class ApiDocShareCheckRequest implements Serializable {
@Schema(description = "分享ID", requiredMode = Schema.RequiredMode.REQUIRED)
private String docShareId;
@Schema(description = "密码", requiredMode = Schema.RequiredMode.REQUIRED)
private String password;
}

View File

@ -10,6 +10,10 @@ import lombok.Data;
import java.io.Serializable;
/**
* @author song-cc-rock
*/
@Data
public class ApiDocShareEditRequest implements Serializable {

View File

@ -2,6 +2,7 @@ package io.metersphere.api.service.definition;
import io.metersphere.api.domain.ApiDocShare;
import io.metersphere.api.dto.definition.ApiDocShareDTO;
import io.metersphere.api.dto.definition.request.ApiDocShareCheckRequest;
import io.metersphere.api.dto.definition.request.ApiDocShareEditRequest;
import io.metersphere.api.dto.definition.request.ApiDocSharePageRequest;
import io.metersphere.api.mapper.ApiDocShareMapper;
@ -19,6 +20,10 @@ import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* @author song-cc-rock
*/
@Service
@Transactional(rollbackFor = Exception.class)
public class ApiDocShareService {
@ -32,11 +37,22 @@ public class ApiDocShareService {
public static final String RANGE_ALL = "ALL";
/**
* 分页获取分享列表
* @param request 分页请求参数
* @return 分享列表
*/
public List<ApiDocShareDTO> list(ApiDocSharePageRequest request) {
List<ApiDocShareDTO> list = extApiDocShareMapper.list(request);
return buildApiShareExtra(list);
}
/**
* 创建分享
* @param request 请求参数
* @param currentUser 当前用户
* @return 分享
*/
public ApiDocShare create(ApiDocShareEditRequest request, String currentUser) {
ApiDocShare docShare = new ApiDocShare();
BeanUtils.copyBean(docShare, request);
@ -47,6 +63,11 @@ public class ApiDocShareService {
return docShare;
}
/**
* 更新分享
* @param request 请求参数
* @return 分享
*/
public ApiDocShare update(ApiDocShareEditRequest request) {
checkExit(request.getId());
ApiDocShare docShare = new ApiDocShare();
@ -55,11 +76,29 @@ public class ApiDocShareService {
return docShare;
}
/**
* 删除分享
* @param id 分享ID
*/
public void delete(String id) {
checkExit(id);
apiDocShareMapper.deleteByPrimaryKey(id);
}
/**
* 检查分享密码
* @param request 校验请求参数
* @return 是否正确
*/
public Boolean check(ApiDocShareCheckRequest request) {
checkExit(request.getDocShareId());
ApiDocShare docShare = apiDocShareMapper.selectByPrimaryKey(request.getDocShareId());
if (StringUtils.isBlank(docShare.getPassword())) {
return true;
}
return StringUtils.equals(docShare.getPassword(), request.getPassword());
}
/**
* 构建分享额外信息
* @param docShares 分享列表

View File

@ -1,11 +1,13 @@
package io.metersphere.api.controller;
import io.metersphere.api.domain.ApiDocShare;
import io.metersphere.api.dto.definition.request.ApiDocShareCheckRequest;
import io.metersphere.api.dto.definition.request.ApiDocShareEditRequest;
import io.metersphere.api.dto.definition.request.ApiDocSharePageRequest;
import io.metersphere.sdk.util.JSON;
import io.metersphere.system.base.BaseTest;
import io.metersphere.system.controller.handler.ResultHolder;
import org.apache.commons.lang3.StringUtils;
import org.junit.jupiter.api.MethodOrderer;
import org.junit.jupiter.api.Order;
import org.junit.jupiter.api.Test;
@ -28,6 +30,7 @@ public class ApiDocShareControllerTests extends BaseTest {
private final static String UPDATE = BASE_PATH + "update";
private final static String DELETE = BASE_PATH + "delete/";
private final static String PAGE = BASE_PATH + "page";
private final static String CHECK = BASE_PATH + "check";
@Order(1)
@Test
@ -37,18 +40,26 @@ public class ApiDocShareControllerTests extends BaseTest {
request.setProjectId(DEFAULT_PROJECT_ID);
request.setApiRange("ALL");
request.setIsPublic(false);
request.setPassword("123456");
request.setAllowExport(false);
MvcResult mvcResult = this.requestPostWithOk(ADD, request).andReturn();
String returnData = mvcResult.getResponse().getContentAsString(StandardCharsets.UTF_8);
ResultHolder resultHolder = JSON.parseObject(returnData, ResultHolder.class);
ApiDocShare docShare = JSON.parseObject(JSON.toJSONString(resultHolder.getData()), ApiDocShare.class);
// check pwd
ApiDocShareCheckRequest checkRequest = new ApiDocShareCheckRequest();
checkRequest.setDocShareId(docShare.getId());
checkRequest.setPassword("123456");
this.requestPostWithOk(CHECK, checkRequest);
request.setId(docShare.getId());
request.setName("share-2");
request.setPassword(StringUtils.EMPTY);
request.setApiRange("MODULE");
request.setRangeMatchVal("module-1");
request.setInvalidTime(1);
request.setInvalidUnit("HOUR");
this.requestPostWithOk(UPDATE, request);
this.requestPostWithOk(CHECK, checkRequest);
this.requestGetWithOk(DELETE + docShare.getId());
// 不存在的ID
this.requestGet(DELETE + "not-exist-id").andExpect(status().is5xxServerError());