aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-ws
diff options
context:
space:
mode:
authorAurelien Poscia <aurelien.poscia@sonarsource.com>2023-02-10 10:47:32 +0100
committersonartech <sonartech@sonarsource.com>2023-02-10 20:02:45 +0000
commitd8f977b4a4d2b3e3e6ab2316b8c6dec02c1c55dc (patch)
tree70ed4c6f6d092afebded9fe7ed2d1660e095475c /sonar-ws
parent0def12a0a76202cf026a4c33f8c2b5c82986bb7c (diff)
downloadsonarqube-d8f977b4a4d2b3e3e6ab2316b8c6dec02c1c55dc.tar.gz
sonarqube-d8f977b4a4d2b3e3e6ab2316b8c6dec02c1c55dc.zip
SONAR-18397 add ITs for permanent users de-provisioning triggered by Azure (SCIM)
Diffstat (limited to 'sonar-ws')
-rw-r--r--sonar-ws/src/main/java/org/sonarqube/ws/client/DeleteRequest.java42
-rw-r--r--sonar-ws/src/main/java/org/sonarqube/ws/client/GetRequest.java10
-rw-r--r--sonar-ws/src/main/java/org/sonarqube/ws/client/HttpConnector.java15
-rw-r--r--sonar-ws/src/main/java/org/sonarqube/ws/client/RequestWithoutPayload.java36
-rw-r--r--sonar-ws/src/main/java/org/sonarqube/ws/client/WsRequest.java2
-rw-r--r--sonar-ws/src/test/java/org/sonarqube/ws/client/DeleteRequestTest.java40
-rw-r--r--sonar-ws/src/test/java/org/sonarqube/ws/client/GetRequestTest.java40
-rw-r--r--sonar-ws/src/test/java/org/sonarqube/ws/client/ServiceTester.java6
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);