模拟真实的HTTP请求,包括token的验证,请求头的包装,利用HttpEntiy封装请求体和请求头
package com.nesun.vulnchecker.controller.test;
import com.alibaba.fastjson.JSONObject;
import com.nesun.vulnchecker.config.QueryConfig;
import com.nesun.vulnchecker.model.bean.LoginRequest;
import mrRobot.UtilFunInter;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.web.client.TestRestTemplate;
import org.springframework.boot.web.client.RestTemplateBuilder;
import static org.junit.jupiter.api.Assertions.*;
import org.springframework.http.*;
import java.time.Duration;
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
public class ApplicationTests implements UtilFunInter {
RestTemplateBuilder builder = new RestTemplateBuilder().setReadTimeout(Duration.ofSeconds(5000));
TestRestTemplate restTemplate = new TestRestTemplate(builder);
QueryConfig queryConfig = new QueryConfig();
HttpHeaders headers = new HttpHeaders();
String URL = "http://127.0.0.1:2224";
HttpEntity request;
@BeforeEach
public void init() throws Exception {
System.out.println("开始测试-----------------");
//设置登录
LoginRequest loginRequest = new LoginRequest();
loginRequest.setUsername("admin");
loginRequest.setPassword("admin");
loginRequest.setTest(true);
HttpEntity<LoginRequest> requestHttpEntity = new HttpEntity<>(loginRequest,headers);
ResponseEntity<JSONObject> requestResult = restTemplate.postForEntity(URL+"/web/login/userLogin",requestHttpEntity,
JSONObject.class);
String headerValue = requestResult.getHeaders().get("Set-Cookie").toString().replace("[", "");//构建请求cookie
headerValue = headerValue.replace("]", "");
JSONObject object = requestResult.getBody();
if(object != null){
String token = (String) object.get("token");
assertNotNull(token);
System.out.println("token:"+token);
headers.add(HttpHeaders.COOKIE,headerValue);
headers.add("Authorization","Bearer "+token);
request = new HttpEntity<QueryConfig>(queryConfig,headers);
}
}
@AfterEach
public void after() {
System.out.println("测试结束-----------------");
}
@Test
void getDomainList(){
ResponseEntity<String> requestResult = restTemplate.postForEntity(URL+"/web/domain/getDomainList",request,
String.class);
assertEquals(HttpStatus.OK,requestResult.getStatusCode().OK);
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话