gpt4 book ai didi

spring-boot - 测试用 https 保护的 Spring 支架 Controller

转载 作者:行者123 更新时间:2023-12-02 12:09:24 26 4
gpt4 key购买 nike

任何人都可以为我提供一个代码示例来为使用 HTTPS 保护的 Controller 编写集成测试吗?使用 HTTP,我可以编写,但使用 HTTPS,我收到认证错误。

Controller

@RestController
@RequestMapping("/rest/otm/v1")
public class LoginController {

@Autowired
UserAuthenticationService userAuthService;

@ExceptionHandler({ AuthenticationFailedException.class})
@RequestMapping(value = "/login", method = RequestMethod.POST)
@ResponseBody
public void login(HttpServletRequest request,HttpServletResponse response) throws AuthenticationDeniedException {

//some code
}

}

测试类

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Application.class)
@WebAppConfiguration
@IntegrationTest("server.port:0")
public class IdentityControllerTest {

@Value("${local.server.port}")
int port;

@Test
public void test_Login_Controller() {

SimpleClientHttpRequestFactory clientHttpRequestFactory = new SimpleClientHttpRequestFactory();

Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("some-proxy", 8080));
clientHttpRequestFactory.setProxy(proxy);

RestTemplate restTemplate = new RestTemplate(clientHttpRequestFactory);

HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.set("credential", "pratap");
requestHeaders.set("deviceid", "xyz123");

HttpHeaders response = restTemplate.postForObject("https://localhost:"+port+"/rest/otm/v1/login", requestHeaders, HttpHeaders.class);

}

}

错误

org.springframework.web.client.ResourceAccessException: I/O error on POST request for "https://localhost:51184/rest/otm/v1/login":sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target; nested exception is javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:607)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:557)
at org.springframework.web.client.RestTemplate.postForObject(RestTemplate.java:357)
at com.bosch.inl.otm.controller.IdentityControllerTest.test_Login_Controller(IdentityControllerTest.java:45)

提前致谢

最佳答案

使用自签名证书时通常会报告此错误。默认情况下,Java 不信任它,因此您必须禁用证书验证或将证书添加到信任存储区。两种解决方案均已描述 here .

关于spring-boot - 测试用 https 保护的 Spring 支架 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34408713/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com