Browse Source

SONAR-18397 add ITs for permanent users de-provisioning triggered by Azure (SCIM)

tags/10.0.0.68432
Aurelien Poscia 1 year ago
parent
commit
d8f977b4a4

+ 2
- 1
sonar-scanner-engine/src/main/java/org/sonar/scanner/report/ReportPublisher.java View File

@@ -55,6 +55,7 @@ import org.sonarqube.ws.Ce;
import org.sonarqube.ws.MediaTypes;
import org.sonarqube.ws.client.HttpException;
import org.sonarqube.ws.client.PostRequest;
import org.sonarqube.ws.client.RequestWithPayload.Part;
import org.sonarqube.ws.client.WsResponse;

import static java.net.URLEncoder.encode;
@@ -201,7 +202,7 @@ public class ReportPublisher implements Startable {
String upload(File report) {
LOG.debug("Upload report");
long startTime = System.currentTimeMillis();
PostRequest.Part filePart = new PostRequest.Part(MediaTypes.ZIP, report);
Part filePart = new Part(MediaTypes.ZIP, report);
PostRequest post = new PostRequest("api/ce/submit")
.setMediaType(MediaTypes.PROTOBUF)
.setParam("projectKey", moduleHierarchy.root().key())

+ 42
- 0
sonar-ws/src/main/java/org/sonarqube/ws/client/DeleteRequest.java View File

@@ -0,0 +1,42 @@
/*
* SonarQube
* Copyright (C) 2009-2023 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package org.sonarqube.ws.client;

import java.util.function.Function;
import okhttp3.Request;

/**
* @since 5.3
*/
public class DeleteRequest extends RequestWithoutPayload<DeleteRequest> {
public DeleteRequest(String path) {
super(path);
}

@Override
public Method getMethod() {
return Method.DELETE;
}

@Override
Function<Request.Builder, Request.Builder> addVerbToBuilder() {
return Request.Builder::delete;
}
}

+ 9
- 1
sonar-ws/src/main/java/org/sonarqube/ws/client/GetRequest.java View File

@@ -19,10 +19,13 @@
*/
package org.sonarqube.ws.client;

import java.util.function.Function;
import okhttp3.Request;

/**
* @since 5.3
*/
public class GetRequest extends BaseRequest<GetRequest> {
public class GetRequest extends RequestWithoutPayload<GetRequest> {
public GetRequest(String path) {
super(path);
}
@@ -31,4 +34,9 @@ public class GetRequest extends BaseRequest<GetRequest> {
public Method getMethod() {
return Method.GET;
}

@Override
Function<Request.Builder, Request.Builder> addVerbToBuilder() {
return Request.Builder::get;
}
}

+ 8
- 7
sonar-ws/src/main/java/org/sonarqube/ws/client/HttpConnector.java View File

@@ -109,8 +109,8 @@ public class HttpConnector implements WsConnector {

@Override
public WsResponse call(WsRequest httpRequest) {
if (httpRequest instanceof GetRequest) {
return get((GetRequest) httpRequest);
if (httpRequest instanceof RequestWithoutPayload) {
return executeRequest((RequestWithoutPayload) httpRequest);
}
if (httpRequest instanceof RequestWithPayload) {
return executeRequest((RequestWithPayload) httpRequest);
@@ -118,12 +118,13 @@ public class HttpConnector implements WsConnector {
throw new IllegalArgumentException(format("Unsupported implementation: %s", httpRequest.getClass()));
}

private WsResponse get(GetRequest getRequest) {
HttpUrl.Builder urlBuilder = prepareUrlBuilder(getRequest);
completeUrlQueryParameters(getRequest, urlBuilder);
private WsResponse executeRequest(RequestWithoutPayload<?> request) {
HttpUrl.Builder urlBuilder = prepareUrlBuilder(request);
completeUrlQueryParameters(request, urlBuilder);

Request.Builder okRequestBuilder = prepareOkRequestBuilder(getRequest, urlBuilder).get();
return new OkHttpResponse(doCall(prepareOkHttpClient(okHttpClient, getRequest), okRequestBuilder.build()));
Request.Builder okRequestBuilder = prepareOkRequestBuilder(request, urlBuilder);
okRequestBuilder = request.addVerbToBuilder().apply(okRequestBuilder);
return new OkHttpResponse(doCall(prepareOkHttpClient(okHttpClient, request), okRequestBuilder.build()));
}

private WsResponse executeRequest(RequestWithPayload<?> request) {

+ 36
- 0
sonar-ws/src/main/java/org/sonarqube/ws/client/RequestWithoutPayload.java View File

@@ -0,0 +1,36 @@
/*
* SonarQube
* Copyright (C) 2009-2023 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package org.sonarqube.ws.client;

import java.util.function.Function;
import okhttp3.Request;

/**
* @since 5.3
*/
public abstract class RequestWithoutPayload<T extends BaseRequest<RequestWithoutPayload<T>>> extends BaseRequest<RequestWithoutPayload<T>> {

protected RequestWithoutPayload(String path) {
super(path);
}

abstract Function<Request.Builder, Request.Builder> addVerbToBuilder();

}

+ 1
- 1
sonar-ws/src/main/java/org/sonarqube/ws/client/WsRequest.java View File

@@ -51,6 +51,6 @@ public interface WsRequest {
Headers getHeaders();

enum Method {
GET, POST, PATCH
GET, POST, PATCH, DELETE
}
}

+ 40
- 0
sonar-ws/src/test/java/org/sonarqube/ws/client/DeleteRequestTest.java View File

@@ -0,0 +1,40 @@
/*
* SonarQube
* Copyright (C) 2009-2023 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package org.sonarqube.ws.client;

import org.junit.Test;

import static org.assertj.core.api.Assertions.assertThat;

public class DeleteRequestTest {

private DeleteRequest deleteRequest = new DeleteRequest("path");

@Test
public void getMethod_shouldReturnDelete() {
assertThat(deleteRequest.getMethod()).isEqualTo(WsRequest.Method.DELETE);
}


@Test
public void addVerbToBuilder_shouldReturnNonNullResult() {
assertThat(deleteRequest.addVerbToBuilder()).isNotNull();
}
}

+ 40
- 0
sonar-ws/src/test/java/org/sonarqube/ws/client/GetRequestTest.java View File

@@ -0,0 +1,40 @@
/*
* SonarQube
* Copyright (C) 2009-2023 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package org.sonarqube.ws.client;

import org.junit.Test;

import static org.assertj.core.api.Assertions.assertThat;

public class GetRequestTest {

private GetRequest getRequest = new GetRequest("path");

@Test
public void getMethod_shouldReturnGet() {
assertThat(getRequest.getMethod()).isEqualTo(WsRequest.Method.GET);
}

@Test
public void addVerbToBuilder_shouldReturnNonNullResult() {
assertThat(getRequest.addVerbToBuilder()).isNotNull();
}

}

+ 3
- 3
sonar-ws/src/test/java/org/sonarqube/ws/client/ServiceTester.java View File

@@ -140,10 +140,10 @@ public class ServiceTester<T extends BaseService> extends ExternalResource {
@CheckForNull
public GetRequest getGetRequest() {
assertSingleGetCall();
return getCalls.iterator().next().getRequest();
return (GetRequest) getCalls.iterator().next().getRequest();
}

public RequestAssert<GetRequest> assertThat(GetRequest getRequest) {
public RequestAssert<?> assertThat(GetRequest getRequest) {
return new RequestAssert<>(getRequest);
}

@@ -189,7 +189,7 @@ public class ServiceTester<T extends BaseService> extends ExternalResource {
}

@Immutable
public static final class GetCall extends CallWithParser<GetRequest> {
public static final class GetCall extends CallWithParser<RequestWithoutPayload<GetRequest>> {

public GetCall(GetRequest getRequest, @Nullable Parser<?> parser) {
super(getRequest, parser);

Loading…
Cancel
Save