【发布时间】:2021-07-12 02:07:33
【问题描述】:
您好,我正在编写一个开源 Springboot 微服务来从 SonarQube 获取问题
我使用 SonarQube 安装在 Docker 容器中
从我登录后成功调用的浏览器:
http://localhost:9001/api/issues/search?componentKeys=za.co.nico:RabbitMqPoc
我正在对一个 Java 类进行单元测试,我可以调用相同的 URL 并获得 401 在我需要它工作的地方验证失败
package za.co.nico.poc.services;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.sonarqube.ws.client.GetRequest;
import org.sonarqube.ws.client.HttpConnector;
import org.sonarqube.ws.client.WsClient;
import org.sonarqube.ws.client.WsClientFactories;
import org.sonarqube.ws.client.WsResponse;
import org.springframework.stereotype.Service;
/**
*
* https://www.baeldung.com/java-http-request
*
*/
@Service
public class SonarServiceImpl implements SonarService {
private static final Logger log = LoggerFactory.getLogger(SonarServiceImpl.class);
private final String TOKEN="2ce06b3585c34141beeeb4005235337ba2bd135d";
/**
* https://programtalk.com/java-api-usage-examples/org.sonarqube.ws.client.WsClient/
*/
@Override
public String getData(String restUrl,String sonarEndPoint) {
log.debug(" restUrl : "+restUrl+" sonarEndPoint : "+sonarEndPoint); // restUrl : http://localhost:9001/ sonarEndPoint : api/components/search_projects
String login="admin";
String password="admin";
WsClient wsClient = WsClientFactories.getDefault().newClient(HttpConnector.newBuilder().url(restUrl).credentials(login, password).build());
WsResponse response = wsClient.wsConnector().call(new GetRequest("api/authentication/validate"));
String content = response.content();
log.debug(""+response.isSuccessful());
log.debug(""+response.code()); //200
response = wsClient.wsConnector().call(new GetRequest("api/components/search_projects"));
log.debug(""+response.isSuccessful());
content = response.content();
log.debug(""+response.code()); //401
wsClient = WsClientFactories.getDefault().newClient(HttpConnector.newBuilder().url(restUrl).credentials("admin", "admin").build());
response = wsClient.wsConnector().call(new GetRequest("local_ws_call/require_permission"));
log.debug(""+response.isSuccessful());
log.debug(""+response.code()); // 200
wsClient = WsClientFactories.getDefault().newClient(HttpConnector.newBuilder().url(restUrl).credentials(login, password).build());
response = wsClient.wsConnector().call(new GetRequest("api/rules/search"));
log.debug(""+response.isSuccessful());
log.debug(""+response.code()); // 401
return "";
}
}
请告知如何解决此问题
【问题讨论】: