diff options
author | Aurelien Poscia <aurelien.poscia@sonarsource.com> | 2023-02-10 10:47:32 +0100 |
---|---|---|
committer | sonartech <sonartech@sonarsource.com> | 2023-02-10 20:02:45 +0000 |
commit | d8f977b4a4d2b3e3e6ab2316b8c6dec02c1c55dc (patch) | |
tree | 70ed4c6f6d092afebded9fe7ed2d1660e095475c /sonar-ws | |
parent | 0def12a0a76202cf026a4c33f8c2b5c82986bb7c (diff) | |
download | sonarqube-d8f977b4a4d2b3e3e6ab2316b8c6dec02c1c55dc.tar.gz sonarqube-d8f977b4a4d2b3e3e6ab2316b8c6dec02c1c55dc.zip |
SONAR-18397 add ITs for permanent users de-provisioning triggered by Azure (SCIM)
Diffstat (limited to 'sonar-ws')
8 files changed, 179 insertions, 12 deletions
diff --git a/sonar-ws/src/main/java/org/sonarqube/ws/client/DeleteRequest.java b/sonar-ws/src/main/java/org/sonarqube/ws/client/DeleteRequest.java new file mode 100644 index 00000000000..90f0e295f7c --- /dev/null +++ b/sonar-ws/src/main/java/org/sonarqube/ws/client/DeleteRequest.java @@ -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; + } +} diff --git a/sonar-ws/src/main/java/org/sonarqube/ws/client/GetRequest.java b/sonar-ws/src/main/java/org/sonarqube/ws/client/GetRequest.java index bc5a82d0e3c..e835346611d 100644 --- a/sonar-ws/src/main/java/org/sonarqube/ws/client/GetRequest.java +++ b/sonar-ws/src/main/java/org/sonarqube/ws/client/GetRequest.java @@ -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; + } } diff --git a/sonar-ws/src/main/java/org/sonarqube/ws/client/HttpConnector.java b/sonar-ws/src/main/java/org/sonarqube/ws/client/HttpConnector.java index 92739e636f2..a4fec2726a4 100644 --- a/sonar-ws/src/main/java/org/sonarqube/ws/client/HttpConnector.java +++ b/sonar-ws/src/main/java/org/sonarqube/ws/client/HttpConnector.java @@ -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) { diff --git a/sonar-ws/src/main/java/org/sonarqube/ws/client/RequestWithoutPayload.java b/sonar-ws/src/main/java/org/sonarqube/ws/client/RequestWithoutPayload.java new file mode 100644 index 00000000000..d3ea011eeca --- /dev/null +++ b/sonar-ws/src/main/java/org/sonarqube/ws/client/RequestWithoutPayload.java @@ -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(); + +} diff --git a/sonar-ws/src/main/java/org/sonarqube/ws/client/WsRequest.java b/sonar-ws/src/main/java/org/sonarqube/ws/client/WsRequest.java index c27274af5b2..2d4ab6d8438 100644 --- a/sonar-ws/src/main/java/org/sonarqube/ws/client/WsRequest.java +++ b/sonar-ws/src/main/java/org/sonarqube/ws/client/WsRequest.java @@ -51,6 +51,6 @@ public interface WsRequest { Headers getHeaders(); enum Method { - GET, POST, PATCH + GET, POST, PATCH, DELETE } } diff --git a/sonar-ws/src/test/java/org/sonarqube/ws/client/DeleteRequestTest.java b/sonar-ws/src/test/java/org/sonarqube/ws/client/DeleteRequestTest.java new file mode 100644 index 00000000000..24b3986bd65 --- /dev/null +++ b/sonar-ws/src/test/java/org/sonarqube/ws/client/DeleteRequestTest.java @@ -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(); + } +} diff --git a/sonar-ws/src/test/java/org/sonarqube/ws/client/GetRequestTest.java b/sonar-ws/src/test/java/org/sonarqube/ws/client/GetRequestTest.java new file mode 100644 index 00000000000..2f5c66059ce --- /dev/null +++ b/sonar-ws/src/test/java/org/sonarqube/ws/client/GetRequestTest.java @@ -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(); + } + +} diff --git a/sonar-ws/src/test/java/org/sonarqube/ws/client/ServiceTester.java b/sonar-ws/src/test/java/org/sonarqube/ws/client/ServiceTester.java index 6898c537894..bb6d9040f26 100644 --- a/sonar-ws/src/test/java/org/sonarqube/ws/client/ServiceTester.java +++ b/sonar-ws/src/test/java/org/sonarqube/ws/client/ServiceTester.java @@ -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); |