diff --git a/core/che-core-metrics-core/pom.xml b/core/che-core-metrics-core/pom.xml
index 108f721397..e34211738c 100644
--- a/core/che-core-metrics-core/pom.xml
+++ b/core/che-core-metrics-core/pom.xml
@@ -35,8 +35,8 @@
okhttp
- kotlin-stdlib-jdk8
- org.jetbrains.kotlin
+ okio
+ com.squareup.okio
diff --git a/infrastructures/kubernetes/pom.xml b/infrastructures/kubernetes/pom.xml
index bd423650e9..86fd7930b2 100644
--- a/infrastructures/kubernetes/pom.xml
+++ b/infrastructures/kubernetes/pom.xml
@@ -204,11 +204,6 @@
h2
test
-
- com.squareup.okhttp3
- mockwebserver
- test
-
io.fabric8
kubernetes-client
@@ -239,21 +234,6 @@
che-core-sql-schema
test
-
- org.eclipse.jetty
- jetty-security
- test
-
-
- org.eclipse.jetty
- jetty-servlet
- test
-
-
- org.eclipse.jetty
- jetty-util
- test
-
org.eclipse.persistence
org.eclipse.persistence.core
@@ -268,12 +248,6 @@
org.everrest
everrest-assured
test
-
-
- jetty-util
- org.eclipse.jetty
-
-
org.everrest
diff --git a/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/namespace/KubernetesDeploymentsTest.java b/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/namespace/KubernetesDeploymentsTest.java
index 759bf7f689..32b0ef16fb 100644
--- a/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/namespace/KubernetesDeploymentsTest.java
+++ b/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/namespace/KubernetesDeploymentsTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012-2023 Red Hat, Inc.
+ * Copyright (c) 2012-2025 Red Hat, Inc.
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
@@ -69,13 +69,21 @@
import io.fabric8.kubernetes.client.dsl.Resource;
import io.fabric8.kubernetes.client.dsl.RollableScalableResource;
import io.fabric8.kubernetes.client.dsl.V1APIGroupDSL;
-import io.fabric8.kubernetes.client.server.mock.KubernetesServer;
+import io.fabric8.kubernetes.client.server.mock.KubernetesMixedDispatcher;
+import io.fabric8.kubernetes.client.server.mock.KubernetesMockServer;
+import io.fabric8.mockwebserver.Context;
+import io.fabric8.mockwebserver.MockWebServer;
+import io.fabric8.mockwebserver.ServerRequest;
+import io.fabric8.mockwebserver.ServerResponse;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import java.util.Optional;
+import java.util.Queue;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Executor;
@@ -90,6 +98,7 @@
import org.mockito.Captor;
import org.mockito.Mock;
import org.mockito.testng.MockitoTestNGListener;
+import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Listeners;
import org.testng.annotations.Test;
@@ -146,7 +155,7 @@ public class KubernetesDeploymentsTest {
@Mock private V1APIGroupDSL v1APIGroupDSL;
private KubernetesDeployments kubernetesDeployments;
- private KubernetesServer serverMock;
+ private KubernetesMockServer kubernetesMockServer;
@BeforeMethod
public void setUp() throws Exception {
@@ -194,8 +203,20 @@ public void setUp() throws Exception {
kubernetesDeployments =
new KubernetesDeployments("namespace", "workspace123", clientFactory, executor);
- serverMock = new KubernetesServer(true, true);
- serverMock.before();
+ final Map> responses = new HashMap<>();
+ kubernetesMockServer =
+ new KubernetesMockServer(
+ new Context(),
+ new MockWebServer(),
+ responses,
+ new KubernetesMixedDispatcher(responses),
+ true);
+ kubernetesMockServer.init();
+ }
+
+ @AfterMethod
+ public void cleanUp() {
+ kubernetesMockServer.destroy();
}
@Test
@@ -696,7 +717,8 @@ public void shouldHandleEventWithEmptyLastTimestampAndFirstTimestamp() throws Ex
@Test
public void deploymentShouldHaveImagePullSecretsOfSAAndSelf() throws InfrastructureException {
- doReturn(serverMock.getClient()).when(clientFactory).create(anyString());
+ final var client = kubernetesMockServer.createClient();
+ doReturn(client).when(clientFactory).create(anyString());
final String serviceAccountName = "workspace-sa";
LocalObjectReference pullSecretOfSA =
@@ -715,11 +737,7 @@ public void deploymentShouldHaveImagePullSecretsOfSAAndSelf() throws Infrastruct
.build())
.withImagePullSecrets(pullSecretOfSA)
.build();
- serverMock
- .getClient()
- .serviceAccounts()
- .inNamespace(kubernetesDeployments.namespace)
- .create(serviceAccount);
+ client.serviceAccounts().inNamespace(kubernetesDeployments.namespace).create(serviceAccount);
ObjectMeta objectMeta =
new ObjectMetaBuilder()
@@ -756,7 +774,7 @@ public void deploymentShouldHaveImagePullSecretsOfSAAndSelf() throws Infrastruct
@Test
public void deploymentShouldHavePullSecretsOnlyOfSelfWithNonexistentSA()
throws InfrastructureException {
- doReturn(serverMock.getClient()).when(clientFactory).create(anyString());
+ doReturn(kubernetesMockServer.createClient()).when(clientFactory).create(anyString());
LocalObjectReference pullSecretOfPod =
new LocalObjectReferenceBuilder().withName("pullsecret-pod").build();
diff --git a/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/namespace/KubernetesNamespaceFactoryTest.java b/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/namespace/KubernetesNamespaceFactoryTest.java
index 689481e017..e7c540a5f9 100644
--- a/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/namespace/KubernetesNamespaceFactoryTest.java
+++ b/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/namespace/KubernetesNamespaceFactoryTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012-2023 Red Hat, Inc.
+ * Copyright (c) 2012-2025 Red Hat, Inc.
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
@@ -62,13 +62,19 @@
import io.fabric8.kubernetes.client.dsl.MixedOperation;
import io.fabric8.kubernetes.client.dsl.NonNamespaceOperation;
import io.fabric8.kubernetes.client.dsl.Resource;
-import io.fabric8.kubernetes.client.server.mock.KubernetesServer;
+import io.fabric8.kubernetes.client.server.mock.KubernetesMixedDispatcher;
+import io.fabric8.kubernetes.client.server.mock.KubernetesMockServer;
+import io.fabric8.mockwebserver.Context;
+import io.fabric8.mockwebserver.MockWebServer;
+import io.fabric8.mockwebserver.ServerRequest;
+import io.fabric8.mockwebserver.ServerResponse;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
+import java.util.Queue;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@@ -135,7 +141,7 @@ public class KubernetesNamespaceFactoryTest {
@Mock private Resource namespaceResource;
- private KubernetesServer serverMock;
+ private KubernetesMockServer kubernetesMockServer;
private KubernetesNamespaceFactory namespaceFactory;
@@ -147,9 +153,16 @@ public class KubernetesNamespaceFactoryTest {
@BeforeMethod
public void setUp() throws Exception {
- serverMock = new KubernetesServer(true, true);
- serverMock.before();
- k8sClient = spy(serverMock.getClient());
+ final Map> responses = new HashMap<>();
+ kubernetesMockServer =
+ new KubernetesMockServer(
+ new Context(),
+ new MockWebServer(),
+ responses,
+ new KubernetesMixedDispatcher(responses),
+ true);
+ kubernetesMockServer.init();
+ k8sClient = spy(kubernetesMockServer.createClient());
lenient().when(cheServerKubernetesClientFactory.create()).thenReturn(k8sClient);
lenient().when(k8sClient.namespaces()).thenReturn(namespaceOperation);
@@ -167,7 +180,7 @@ public void setUp() throws Exception {
@AfterMethod
public void tearDown() {
EnvironmentContext.reset();
- serverMock.after();
+ kubernetesMockServer.destroy();
}
@Test
diff --git a/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/namespace/KubernetesWorkspaceServiceAccountTest.java b/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/namespace/KubernetesWorkspaceServiceAccountTest.java
index 23c9916d5f..225517de31 100644
--- a/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/namespace/KubernetesWorkspaceServiceAccountTest.java
+++ b/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/namespace/KubernetesWorkspaceServiceAccountTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012-2021 Red Hat, Inc.
+ * Copyright (c) 2012-2025 Red Hat, Inc.
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
@@ -32,14 +32,23 @@
import io.fabric8.kubernetes.api.model.rbac.RoleBuilder;
import io.fabric8.kubernetes.api.model.rbac.RoleList;
import io.fabric8.kubernetes.client.KubernetesClient;
-import io.fabric8.kubernetes.client.server.mock.KubernetesServer;
+import io.fabric8.kubernetes.client.server.mock.KubernetesMixedDispatcher;
+import io.fabric8.kubernetes.client.server.mock.KubernetesMockServer;
+import io.fabric8.mockwebserver.Context;
+import io.fabric8.mockwebserver.MockWebServer;
+import io.fabric8.mockwebserver.ServerRequest;
+import io.fabric8.mockwebserver.ServerResponse;
import java.util.Arrays;
import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
import java.util.Optional;
+import java.util.Queue;
import java.util.Set;
import org.eclipse.che.workspace.infrastructure.kubernetes.KubernetesClientFactory;
import org.mockito.Mock;
import org.mockito.testng.MockitoTestNGListener;
+import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Listeners;
import org.testng.annotations.Test;
@@ -54,7 +63,7 @@ public class KubernetesWorkspaceServiceAccountTest {
@Mock private KubernetesClientFactory clientFactory;
private KubernetesClient k8sClient;
- private KubernetesServer serverMock;
+ private KubernetesMockServer kubernetesMockServer;
private KubernetesWorkspaceServiceAccount serviceAccount;
@BeforeMethod
@@ -63,13 +72,25 @@ public void setUp() throws Exception {
new KubernetesWorkspaceServiceAccount(
WORKSPACE_ID, NAMESPACE, SA_NAME, ROLE_NAMES, clientFactory);
- serverMock = new KubernetesServer(true, true);
- serverMock.before();
-
- k8sClient = serverMock.getClient();
+ final Map> responses = new HashMap<>();
+ kubernetesMockServer =
+ new KubernetesMockServer(
+ new Context(),
+ new MockWebServer(),
+ responses,
+ new KubernetesMixedDispatcher(responses),
+ true);
+ kubernetesMockServer.init();
+
+ k8sClient = kubernetesMockServer.createClient();
when(clientFactory.create(anyString())).thenReturn(k8sClient);
}
+ @AfterMethod
+ public void tearDown() {
+ kubernetesMockServer.destroy();
+ }
+
@Test
public void shouldProvisionSARolesEvenIfItAlreadyExists() throws Exception {
ServiceAccountBuilder serviceAccountBuilder =
@@ -100,7 +121,7 @@ public void shouldProvisionSARolesEvenIfItAlreadyExists() throws Exception {
@Test
public void shouldCreateMetricsRoleIfAPIEnabledOnServer() throws Exception {
- KubernetesClient localK8sClient = spy(serverMock.getClient());
+ KubernetesClient localK8sClient = spy(k8sClient);
when(localK8sClient.supportsApiPath(eq("/apis/metrics.k8s.io"))).thenReturn(true);
when(clientFactory.create(anyString())).thenReturn(localK8sClient);
@@ -121,7 +142,7 @@ public void shouldCreateMetricsRoleIfAPIEnabledOnServer() throws Exception {
@Test
public void shouldNotCreateMetricsRoleIfAPINotEnabledOnServer() throws Exception {
- KubernetesClient localK8sClient = spy(serverMock.getClient());
+ KubernetesClient localK8sClient = spy(k8sClient);
when(localK8sClient.supportsApiPath(eq("/apis/metrics.k8s.io"))).thenReturn(false);
when(clientFactory.create(anyString())).thenReturn(localK8sClient);
@@ -142,7 +163,7 @@ public void shouldNotCreateMetricsRoleIfAPINotEnabledOnServer() throws Exception
@Test
public void shouldCreateCredentialsSecretRole() throws Exception {
- KubernetesClient localK8sClient = spy(serverMock.getClient());
+ KubernetesClient localK8sClient = spy(k8sClient);
when(clientFactory.create(anyString())).thenReturn(localK8sClient);
// when
@@ -169,7 +190,7 @@ public void shouldCreateCredentialsSecretRole() throws Exception {
@Test
public void shouldCreatePreferencesConfigmapRole() throws Exception {
- KubernetesClient localK8sClient = spy(serverMock.getClient());
+ KubernetesClient localK8sClient = spy(k8sClient);
when(clientFactory.create(anyString())).thenReturn(localK8sClient);
// when
diff --git a/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/namespace/configurator/CredentialsSecretConfiguratorTest.java b/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/namespace/configurator/CredentialsSecretConfiguratorTest.java
index 00f0269eae..cda2d20c41 100644
--- a/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/namespace/configurator/CredentialsSecretConfiguratorTest.java
+++ b/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/namespace/configurator/CredentialsSecretConfiguratorTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012-2024 Red Hat, Inc.
+ * Copyright (c) 2012-2025 Red Hat, Inc.
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
@@ -21,15 +21,23 @@
import com.google.common.collect.ImmutableMap;
import io.fabric8.kubernetes.api.model.SecretBuilder;
import io.fabric8.kubernetes.client.KubernetesClient;
-import io.fabric8.kubernetes.client.server.mock.KubernetesServer;
+import io.fabric8.kubernetes.client.server.mock.KubernetesMixedDispatcher;
+import io.fabric8.kubernetes.client.server.mock.KubernetesMockServer;
+import io.fabric8.mockwebserver.Context;
+import io.fabric8.mockwebserver.MockWebServer;
+import io.fabric8.mockwebserver.ServerRequest;
+import io.fabric8.mockwebserver.ServerResponse;
import java.util.Base64;
+import java.util.HashMap;
import java.util.Map;
+import java.util.Queue;
import org.eclipse.che.api.factory.server.scm.PersonalAccessTokenManager;
import org.eclipse.che.api.workspace.server.spi.InfrastructureException;
import org.eclipse.che.api.workspace.server.spi.NamespaceResolutionContext;
import org.eclipse.che.workspace.infrastructure.kubernetes.CheServerKubernetesClientFactory;
import org.mockito.Mock;
import org.mockito.testng.MockitoTestNGListener;
+import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Listeners;
import org.testng.annotations.Test;
@@ -41,7 +49,8 @@ public class CredentialsSecretConfiguratorTest {
@Mock private CheServerKubernetesClientFactory cheServerKubernetesClientFactory;
@Mock private PersonalAccessTokenManager personalAccessTokenManager;
- private KubernetesServer serverMock;
+ private KubernetesMockServer kubernetesMockServer;
+ private KubernetesClient kubernetesClient;
private NamespaceResolutionContext namespaceResolutionContext;
private final String TEST_NAMESPACE_NAME = "namespace123";
@@ -62,21 +71,33 @@ public void setUp() throws InfrastructureException {
configurator =
new CredentialsSecretConfigurator(
cheServerKubernetesClientFactory, personalAccessTokenManager);
+ final Map> responses = new HashMap<>();
+ kubernetesMockServer =
+ new KubernetesMockServer(
+ new Context(),
+ new MockWebServer(),
+ responses,
+ new KubernetesMixedDispatcher(responses),
+ true);
+ kubernetesMockServer.init();
+ kubernetesClient = spy(kubernetesMockServer.createClient());
- serverMock = new KubernetesServer(true, true);
- serverMock.before();
- KubernetesClient client = spy(serverMock.getClient());
+ KubernetesClient client = spy(kubernetesClient);
when(cheServerKubernetesClientFactory.create()).thenReturn(client);
namespaceResolutionContext =
new NamespaceResolutionContext(TEST_WORKSPACE_ID, TEST_USER_ID, TEST_USERNAME);
}
+ @AfterMethod
+ public void cleanUp() {
+ kubernetesMockServer.destroy();
+ }
+
@Test
public void shouldStorePersonalAccessToken() throws Exception {
// given
- serverMock
- .getClient()
+ kubernetesClient
.secrets()
.inNamespace(TEST_NAMESPACE_NAME)
.create(
@@ -97,8 +118,7 @@ public void shouldStorePersonalAccessToken() throws Exception {
@Test
public void doNothingWhenSecretAlreadyStored() throws Exception {
// given
- serverMock
- .getClient()
+ kubernetesClient
.secrets()
.inNamespace(TEST_NAMESPACE_NAME)
.create(
@@ -111,8 +131,7 @@ public void doNothingWhenSecretAlreadyStored() throws Exception {
"credentials", Base64.getEncoder().encodeToString("test-token".getBytes())))
.build());
- serverMock
- .getClient()
+ kubernetesClient
.secrets()
.inNamespace(TEST_NAMESPACE_NAME)
.create(
diff --git a/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/namespace/configurator/GitconfigConfiguratorTest.java b/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/namespace/configurator/GitconfigConfiguratorTest.java
index c7850431ea..cee832dea1 100644
--- a/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/namespace/configurator/GitconfigConfiguratorTest.java
+++ b/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/namespace/configurator/GitconfigConfiguratorTest.java
@@ -19,10 +19,17 @@
import io.fabric8.kubernetes.api.model.ConfigMap;
import io.fabric8.kubernetes.api.model.ConfigMapBuilder;
import io.fabric8.kubernetes.client.KubernetesClient;
-import io.fabric8.kubernetes.client.server.mock.KubernetesServer;
+import io.fabric8.kubernetes.client.server.mock.KubernetesMixedDispatcher;
+import io.fabric8.kubernetes.client.server.mock.KubernetesMockServer;
+import io.fabric8.mockwebserver.Context;
+import io.fabric8.mockwebserver.MockWebServer;
+import io.fabric8.mockwebserver.ServerRequest;
+import io.fabric8.mockwebserver.ServerResponse;
import java.util.Collections;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Queue;
import java.util.Set;
import org.eclipse.che.api.factory.server.scm.GitUserData;
import org.eclipse.che.api.factory.server.scm.GitUserDataFetcher;
@@ -33,6 +40,7 @@
import org.mockito.Mock;
import org.mockito.testng.MockitoTestNGListener;
import org.testng.Assert;
+import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Listeners;
import org.testng.annotations.Test;
@@ -44,7 +52,8 @@ public class GitconfigConfiguratorTest {
@Mock private CheServerKubernetesClientFactory cheServerKubernetesClientFactory;
@Mock private GitUserDataFetcher gitUserDataFetcher;
- private KubernetesServer serverMock;
+ private KubernetesMockServer kubernetesMockServer;
+ private KubernetesClient kubernetesClient;
private NamespaceResolutionContext namespaceResolutionContext;
private final String TEST_NAMESPACE_NAME = "namespace123";
@@ -68,15 +77,28 @@ public void setUp()
configurator =
new GitconfigConfigurator(cheServerKubernetesClientFactory, Collections.emptySet());
- serverMock = new KubernetesServer(true, true);
- serverMock.before();
- KubernetesClient client = spy(serverMock.getClient());
- when(cheServerKubernetesClientFactory.create()).thenReturn(client);
+ final Map> responses = new HashMap<>();
+ kubernetesMockServer =
+ new KubernetesMockServer(
+ new Context(),
+ new MockWebServer(),
+ responses,
+ new KubernetesMixedDispatcher(responses),
+ true);
+ kubernetesMockServer.init();
+ kubernetesClient = spy(kubernetesMockServer.createClient());
+
+ when(cheServerKubernetesClientFactory.create()).thenReturn(kubernetesClient);
namespaceResolutionContext =
new NamespaceResolutionContext(TEST_WORKSPACE_ID, TEST_USER_ID, TEST_USERNAME);
}
+ @AfterMethod
+ public void cleanUp() {
+ kubernetesMockServer.destroy();
+ }
+
@Test
public void shouldCreateGitconfigConfigmapWithUserSection() throws Exception {
// given
@@ -87,9 +109,9 @@ public void shouldCreateGitconfigConfigmapWithUserSection() throws Exception {
// when
configurator.configure(namespaceResolutionContext, TEST_NAMESPACE_NAME);
// then
- Assert.assertEquals(serverMock.getLastRequest().getMethod(), "POST");
+ Assert.assertEquals(kubernetesMockServer.getLastRequest().getMethod(), "POST");
List configMaps =
- serverMock.getClient().configMaps().inNamespace(TEST_NAMESPACE_NAME).list().getItems();
+ kubernetesClient.configMaps().inNamespace(TEST_NAMESPACE_NAME).list().getItems();
Assert.assertEquals(configMaps.size(), 1);
String expected = "[user]\n\tname = username\n\temail = userEmail";
Assert.assertEquals(configMaps.get(0).getData().get("gitconfig"), expected);
@@ -100,9 +122,9 @@ public void shouldNotCreateGitconfigConfigmap() throws Exception {
// when
configurator.configure(namespaceResolutionContext, TEST_NAMESPACE_NAME);
// then
- Assert.assertEquals(serverMock.getLastRequest().getMethod(), "GET");
+ Assert.assertEquals(kubernetesMockServer.getLastRequest().getMethod(), "GET");
List configMaps =
- serverMock.getClient().configMaps().inNamespace(TEST_NAMESPACE_NAME).list().getItems();
+ kubernetesClient.configMaps().inNamespace(TEST_NAMESPACE_NAME).list().getItems();
Assert.assertEquals(configMaps.size(), 0);
}
@@ -122,7 +144,7 @@ public void shouldUpdateGitconfigConfigmapWithUserSection()
.build();
gitconfigConfigmap.setData(
Collections.singletonMap("gitconfig", "[user]\n\tname = \"\"\n\temail= \"\""));
- serverMock.getClient().configMaps().inNamespace(TEST_NAMESPACE_NAME).create(gitconfigConfigmap);
+ kubernetesClient.configMaps().inNamespace(TEST_NAMESPACE_NAME).create(gitconfigConfigmap);
configurator =
new GitconfigConfigurator(cheServerKubernetesClientFactory, Set.of(gitUserDataFetcher));
when(gitUserDataFetcher.fetchGitUserData(anyString()))
@@ -130,9 +152,9 @@ public void shouldUpdateGitconfigConfigmapWithUserSection()
// when
configurator.configure(namespaceResolutionContext, TEST_NAMESPACE_NAME);
// then
- Assert.assertEquals(serverMock.getLastRequest().getMethod(), "PUT");
+ Assert.assertEquals(kubernetesMockServer.getLastRequest().getMethod(), "PUT");
List configMaps =
- serverMock.getClient().configMaps().inNamespace(TEST_NAMESPACE_NAME).list().getItems();
+ kubernetesClient.configMaps().inNamespace(TEST_NAMESPACE_NAME).list().getItems();
Assert.assertEquals(configMaps.size(), 1);
String expected = "[user]\n\tname = username\n\temail = userEmail";
Assert.assertEquals(configMaps.get(0).getData().get("gitconfig"), expected);
@@ -156,7 +178,7 @@ public void shouldUpdateGitconfigConfigmapWithStoredSectionsWithUserSection()
Collections.singletonMap(
"gitconfig",
"[other]\n\tkey = value\n[other1]\n\tkey = value\n[user]\n\tname = \"\"\n\temail= \"\""));
- serverMock.getClient().configMaps().inNamespace(TEST_NAMESPACE_NAME).create(gitconfigConfigmap);
+ kubernetesClient.configMaps().inNamespace(TEST_NAMESPACE_NAME).create(gitconfigConfigmap);
configurator =
new GitconfigConfigurator(cheServerKubernetesClientFactory, Set.of(gitUserDataFetcher));
when(gitUserDataFetcher.fetchGitUserData(anyString()))
@@ -164,9 +186,9 @@ public void shouldUpdateGitconfigConfigmapWithStoredSectionsWithUserSection()
// when
configurator.configure(namespaceResolutionContext, TEST_NAMESPACE_NAME);
// then
- Assert.assertEquals(serverMock.getLastRequest().getMethod(), "PUT");
+ Assert.assertEquals(kubernetesMockServer.getLastRequest().getMethod(), "PUT");
List configMaps =
- serverMock.getClient().configMaps().inNamespace(TEST_NAMESPACE_NAME).list().getItems();
+ kubernetesClient.configMaps().inNamespace(TEST_NAMESPACE_NAME).list().getItems();
Assert.assertEquals(configMaps.size(), 1);
String expected =
"[user]\n\tname = username\n\temail = userEmail\n[other]\n\tkey = value\n[other1]\n\tkey = value";
@@ -190,7 +212,7 @@ public void shouldNotUpdateGitconfigConfigmapWithUserSection()
gitconfigConfigmap.setData(
Collections.singletonMap(
"gitconfig", "[user]\n\tname = gitconfig-username\n\temail = gitconfig-email"));
- serverMock.getClient().configMaps().inNamespace(TEST_NAMESPACE_NAME).create(gitconfigConfigmap);
+ kubernetesClient.configMaps().inNamespace(TEST_NAMESPACE_NAME).create(gitconfigConfigmap);
configurator =
new GitconfigConfigurator(cheServerKubernetesClientFactory, Set.of(gitUserDataFetcher));
when(gitUserDataFetcher.fetchGitUserData(anyString()))
@@ -198,9 +220,9 @@ public void shouldNotUpdateGitconfigConfigmapWithUserSection()
// when
configurator.configure(namespaceResolutionContext, TEST_NAMESPACE_NAME);
// then
- Assert.assertEquals(serverMock.getLastRequest().getMethod(), "GET");
+ Assert.assertEquals(kubernetesMockServer.getLastRequest().getMethod(), "GET");
List configMaps =
- serverMock.getClient().configMaps().inNamespace(TEST_NAMESPACE_NAME).list().getItems();
+ kubernetesClient.configMaps().inNamespace(TEST_NAMESPACE_NAME).list().getItems();
Assert.assertEquals(configMaps.size(), 1);
String expected = "[user]\n\tname = gitconfig-username\n\temail = gitconfig-email";
Assert.assertEquals(configMaps.get(0).getData().get("gitconfig"), expected);
diff --git a/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/namespace/configurator/PreferencesConfigMapConfiguratorTest.java b/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/namespace/configurator/PreferencesConfigMapConfiguratorTest.java
index 0e72cabb92..6e042931d4 100644
--- a/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/namespace/configurator/PreferencesConfigMapConfiguratorTest.java
+++ b/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/namespace/configurator/PreferencesConfigMapConfiguratorTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012-2023 Red Hat, Inc.
+ * Copyright (c) 2012-2025 Red Hat, Inc.
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
@@ -19,14 +19,22 @@
import io.fabric8.kubernetes.api.model.ConfigMapBuilder;
import io.fabric8.kubernetes.client.KubernetesClient;
-import io.fabric8.kubernetes.client.server.mock.KubernetesServer;
+import io.fabric8.kubernetes.client.server.mock.KubernetesMixedDispatcher;
+import io.fabric8.kubernetes.client.server.mock.KubernetesMockServer;
+import io.fabric8.mockwebserver.Context;
+import io.fabric8.mockwebserver.MockWebServer;
+import io.fabric8.mockwebserver.ServerRequest;
+import io.fabric8.mockwebserver.ServerResponse;
+import java.util.HashMap;
import java.util.Map;
+import java.util.Queue;
import org.eclipse.che.api.workspace.server.spi.InfrastructureException;
import org.eclipse.che.api.workspace.server.spi.NamespaceResolutionContext;
import org.eclipse.che.workspace.infrastructure.kubernetes.CheServerKubernetesClientFactory;
import org.mockito.Mock;
import org.mockito.testng.MockitoTestNGListener;
import org.testng.Assert;
+import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Listeners;
import org.testng.annotations.Test;
@@ -36,7 +44,8 @@ public class PreferencesConfigMapConfiguratorTest {
private NamespaceConfigurator configurator;
@Mock private CheServerKubernetesClientFactory cheServerKubernetesClientFactory;
- private KubernetesServer serverMock;
+ private KubernetesMockServer kubernetesMockServer;
+ private KubernetesClient kubernetesClient;
private NamespaceResolutionContext namespaceResolutionContext;
private final String TEST_NAMESPACE_NAME = "namespace123";
@@ -48,15 +57,27 @@ public class PreferencesConfigMapConfiguratorTest {
public void setUp() throws InfrastructureException {
configurator = new PreferencesConfigMapConfigurator(cheServerKubernetesClientFactory);
- serverMock = new KubernetesServer(true, true);
- serverMock.before();
- KubernetesClient client = spy(serverMock.getClient());
- when(cheServerKubernetesClientFactory.create()).thenReturn(client);
+ final Map> responses = new HashMap<>();
+ kubernetesMockServer =
+ new KubernetesMockServer(
+ new Context(),
+ new MockWebServer(),
+ responses,
+ new KubernetesMixedDispatcher(responses),
+ true);
+ kubernetesMockServer.init();
+ kubernetesClient = spy(kubernetesMockServer.createClient());
+ when(cheServerKubernetesClientFactory.create()).thenReturn(kubernetesClient);
namespaceResolutionContext =
new NamespaceResolutionContext(TEST_WORKSPACE_ID, TEST_USER_ID, TEST_USERNAME);
}
+ @AfterMethod
+ public void tearDown() {
+ kubernetesMockServer.destroy();
+ }
+
@Test
public void createConfigmapWhenDoesntExist()
throws InfrastructureException, InterruptedException {
@@ -66,10 +87,9 @@ public void createConfigmapWhenDoesntExist()
configurator.configure(namespaceResolutionContext, TEST_NAMESPACE_NAME);
// then configmap created
- Assert.assertEquals(serverMock.getLastRequest().getMethod(), "POST");
+ Assert.assertEquals(kubernetesMockServer.getLastRequest().getMethod(), "POST");
Assert.assertNotNull(
- serverMock
- .getClient()
+ kubernetesClient
.configMaps()
.inNamespace(TEST_NAMESPACE_NAME)
.withName(PREFERENCES_CONFIGMAP_NAME)
@@ -80,8 +100,7 @@ public void createConfigmapWhenDoesntExist()
@Test
public void doNothingWhenConfigmapExists() throws InfrastructureException, InterruptedException {
// given - configmap already exists
- serverMock
- .getClient()
+ kubernetesClient
.configMaps()
.inNamespace(TEST_NAMESPACE_NAME)
.create(
@@ -96,9 +115,9 @@ public void doNothingWhenConfigmapExists() throws InfrastructureException, Inter
configurator.configure(namespaceResolutionContext, TEST_NAMESPACE_NAME);
// then - don't create the configmap
- Assert.assertEquals(serverMock.getLastRequest().getMethod(), "GET");
+ Assert.assertEquals(kubernetesMockServer.getLastRequest().getMethod(), "GET");
var configmaps =
- serverMock.getClient().configMaps().inNamespace(TEST_NAMESPACE_NAME).list().getItems();
+ kubernetesClient.configMaps().inNamespace(TEST_NAMESPACE_NAME).list().getItems();
Assert.assertEquals(configmaps.size(), 1);
Assert.assertEquals(configmaps.get(0).getMetadata().getAnnotations().get("already"), "created");
}
diff --git a/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/namespace/configurator/SshKeysConfiguratorTest.java b/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/namespace/configurator/SshKeysConfiguratorTest.java
index 6b9a7081ac..15d9b17de6 100644
--- a/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/namespace/configurator/SshKeysConfiguratorTest.java
+++ b/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/namespace/configurator/SshKeysConfiguratorTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012-2023 Red Hat, Inc.
+ * Copyright (c) 2012-2025 Red Hat, Inc.
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
@@ -17,11 +17,19 @@
import static org.testng.Assert.assertEquals;
import io.fabric8.kubernetes.api.model.Secret;
-import io.fabric8.kubernetes.client.server.mock.KubernetesServer;
+import io.fabric8.kubernetes.client.KubernetesClient;
+import io.fabric8.kubernetes.client.server.mock.KubernetesMixedDispatcher;
+import io.fabric8.kubernetes.client.server.mock.KubernetesMockServer;
+import io.fabric8.mockwebserver.Context;
+import io.fabric8.mockwebserver.MockWebServer;
+import io.fabric8.mockwebserver.ServerRequest;
+import io.fabric8.mockwebserver.ServerResponse;
import java.util.Base64;
import java.util.Collections;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Queue;
import org.eclipse.che.api.core.NotFoundException;
import org.eclipse.che.api.core.ServerException;
import org.eclipse.che.api.ssh.server.SshManager;
@@ -48,8 +56,9 @@ public class SshKeysConfiguratorTest {
@Mock private SshManager sshManager;
@InjectMocks private SshKeysConfigurator sshKeysConfigurator;
+ private KubernetesMockServer kubernetesMockServer;
+ private KubernetesClient kubernetesClient;
- private KubernetesServer kubernetesServer;
private NamespaceResolutionContext context;
private final SshPairImpl sshPair =
@@ -58,25 +67,31 @@ public class SshKeysConfiguratorTest {
@BeforeMethod
public void setUp() throws InfrastructureException, NotFoundException, ServerException {
context = new NamespaceResolutionContext(null, USER_ID, USER_NAME);
- kubernetesServer = new KubernetesServer(true, true);
- kubernetesServer.before();
-
+ final Map> responses = new HashMap<>();
+ kubernetesMockServer =
+ new KubernetesMockServer(
+ new Context(),
+ new MockWebServer(),
+ responses,
+ new KubernetesMixedDispatcher(responses),
+ true);
+ kubernetesMockServer.init();
+ kubernetesClient = kubernetesMockServer.createClient();
when(sshManager.getPairs(USER_ID, "vcs")).thenReturn(Collections.singletonList(sshPair));
- when(cheServerKubernetesClientFactory.create()).thenReturn(kubernetesServer.getClient());
+ when(cheServerKubernetesClientFactory.create()).thenReturn(kubernetesClient);
}
@AfterMethod
public void cleanUp() {
- kubernetesServer.getClient().secrets().inNamespace(USER_NAMESPACE).delete();
- kubernetesServer.after();
+ kubernetesClient.secrets().inNamespace(USER_NAMESPACE).delete();
+ kubernetesMockServer.destroy();
}
@Test
public void shouldCreateSSHKeysSecret() throws InfrastructureException {
sshKeysConfigurator.configure(context, USER_NAMESPACE);
List secrets =
- kubernetesServer
- .getClient()
+ kubernetesClient
.secrets()
.inNamespace(USER_NAMESPACE)
.withLabels(
@@ -108,8 +123,7 @@ public void shouldNotCreateSSHKeysSecretFromBadSecret() throws Exception {
when(sshManager.getPairs(USER_ID, "vcs")).thenReturn(List.of(sshPairLocal));
sshKeysConfigurator.configure(context, USER_NAMESPACE);
List secrets =
- kubernetesServer
- .getClient()
+ kubernetesClient
.secrets()
.inNamespace(USER_NAMESPACE)
.withLabels(
diff --git a/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/namespace/configurator/UserPermissionConfiguratorTest.java b/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/namespace/configurator/UserPermissionConfiguratorTest.java
index 8e6ec82bca..25396b9d94 100644
--- a/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/namespace/configurator/UserPermissionConfiguratorTest.java
+++ b/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/namespace/configurator/UserPermissionConfiguratorTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012-2021 Red Hat, Inc.
+ * Copyright (c) 2012-2025 Red Hat, Inc.
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
@@ -20,13 +20,22 @@
import io.fabric8.kubernetes.api.model.rbac.RoleBindingBuilder;
import io.fabric8.kubernetes.api.model.rbac.Subject;
import io.fabric8.kubernetes.client.KubernetesClient;
-import io.fabric8.kubernetes.client.server.mock.KubernetesServer;
+import io.fabric8.kubernetes.client.server.mock.KubernetesMixedDispatcher;
+import io.fabric8.kubernetes.client.server.mock.KubernetesMockServer;
+import io.fabric8.mockwebserver.Context;
+import io.fabric8.mockwebserver.MockWebServer;
+import io.fabric8.mockwebserver.ServerRequest;
+import io.fabric8.mockwebserver.ServerResponse;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Queue;
import org.eclipse.che.api.workspace.server.spi.InfrastructureException;
import org.eclipse.che.api.workspace.server.spi.NamespaceResolutionContext;
import org.eclipse.che.workspace.infrastructure.kubernetes.CheServerKubernetesClientFactory;
import org.mockito.Mock;
import org.mockito.testng.MockitoTestNGListener;
import org.testng.Assert;
+import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Listeners;
import org.testng.annotations.Test;
@@ -38,7 +47,7 @@ public class UserPermissionConfiguratorTest {
@Mock private CheServerKubernetesClientFactory clientFactory;
private KubernetesClient client;
- private KubernetesServer serverMock;
+ private KubernetesMockServer kubernetesMockServer;
private NamespaceResolutionContext namespaceResolutionContext;
private final String TEST_NAMESPACE_NAME = "namespace123";
@@ -51,15 +60,27 @@ public class UserPermissionConfiguratorTest {
public void setUp() throws InfrastructureException {
configurator = new UserPermissionConfigurator(TEST_CLUSTER_ROLES, clientFactory);
- serverMock = new KubernetesServer(true, true);
- serverMock.before();
- client = spy(serverMock.getClient());
+ final Map> responses = new HashMap<>();
+ kubernetesMockServer =
+ new KubernetesMockServer(
+ new Context(),
+ new MockWebServer(),
+ responses,
+ new KubernetesMixedDispatcher(responses),
+ true);
+ kubernetesMockServer.init();
+ client = spy(kubernetesMockServer.createClient());
lenient().when(clientFactory.create()).thenReturn(client);
namespaceResolutionContext =
new NamespaceResolutionContext(TEST_WORKSPACE_ID, TEST_USER_ID, TEST_USERNAME);
}
+ @AfterMethod
+ public void tearDown() {
+ kubernetesMockServer.destroy();
+ }
+
@Test
public void doNothingWhenNoClusterRolesSet()
throws InfrastructureException, InterruptedException {
@@ -70,13 +91,12 @@ public void doNothingWhenNoClusterRolesSet()
configurator.configure(namespaceResolutionContext, TEST_NAMESPACE_NAME);
// then - do nothing
- Assert.assertNull(serverMock.getLastRequest());
+ Assert.assertNull(kubernetesMockServer.getLastRequest());
verify(clientFactory, never()).create();
}
@Test
- public void bindAllClusterRolesWhenEmptyEnv()
- throws InfrastructureException, InterruptedException {
+ public void bindAllClusterRolesWhenEmptyEnv() throws InfrastructureException {
// given - clean env
// when
@@ -84,7 +104,7 @@ public void bindAllClusterRolesWhenEmptyEnv()
// then - create all role bindings
var roleBindings =
- serverMock.getClient().rbac().roleBindings().inNamespace(TEST_NAMESPACE_NAME);
+ kubernetesMockServer.createClient().rbac().roleBindings().inNamespace(TEST_NAMESPACE_NAME);
Assert.assertEquals(roleBindings.list().getItems().size(), 2);
var cr1 = roleBindings.withName("cr1").get();
diff --git a/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/namespace/configurator/UserPreferencesConfiguratorTest.java b/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/namespace/configurator/UserPreferencesConfiguratorTest.java
index 28132df14f..be1cbafdab 100644
--- a/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/namespace/configurator/UserPreferencesConfiguratorTest.java
+++ b/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/namespace/configurator/UserPreferencesConfiguratorTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012-2023 Red Hat, Inc.
+ * Copyright (c) 2012-2025 Red Hat, Inc.
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
@@ -15,7 +15,6 @@
import static org.mockito.Mockito.lenient;
import static org.testng.Assert.assertEquals;
-import io.fabric8.kubernetes.client.server.mock.KubernetesServer;
import java.util.HashMap;
import java.util.Map;
import org.eclipse.che.api.core.NotFoundException;
@@ -27,7 +26,6 @@
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.testng.MockitoTestNGListener;
-import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Listeners;
import org.testng.annotations.Test;
@@ -50,14 +48,11 @@ public class UserPreferencesConfiguratorTest {
@InjectMocks private UserPreferencesConfigurator userPreferencesConfigurator;
- private KubernetesServer kubernetesServer;
private NamespaceResolutionContext context;
@BeforeMethod
public void setUp() throws InfrastructureException, NotFoundException, ServerException {
context = new NamespaceResolutionContext(null, USER_ID, USER_NAME);
- kubernetesServer = new KubernetesServer(true, true);
- kubernetesServer.before();
Map preferences = new HashMap<>();
preferences.put("preference-name", "preference");
@@ -66,11 +61,6 @@ public void setUp() throws InfrastructureException, NotFoundException, ServerExc
lenient().when(preferenceManager.find(USER_ID)).thenReturn(preferences);
}
- @AfterMethod
- public void cleanUp() {
- kubernetesServer.after();
- }
-
@Test
public void shouldNormalizePreferenceName() {
assertEquals(
diff --git a/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/namespace/configurator/WorkspaceServiceAccountConfiguratorTest.java b/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/namespace/configurator/WorkspaceServiceAccountConfiguratorTest.java
index 59888263ea..e5b49e77dd 100644
--- a/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/namespace/configurator/WorkspaceServiceAccountConfiguratorTest.java
+++ b/infrastructures/kubernetes/src/test/java/org/eclipse/che/workspace/infrastructure/kubernetes/namespace/configurator/WorkspaceServiceAccountConfiguratorTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012-2021 Red Hat, Inc.
+ * Copyright (c) 2012-2025 Red Hat, Inc.
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
@@ -19,13 +19,22 @@
import io.fabric8.kubernetes.api.model.rbac.ClusterRoleBuilder;
import io.fabric8.kubernetes.client.KubernetesClient;
-import io.fabric8.kubernetes.client.server.mock.KubernetesServer;
+import io.fabric8.kubernetes.client.server.mock.KubernetesMixedDispatcher;
+import io.fabric8.kubernetes.client.server.mock.KubernetesMockServer;
+import io.fabric8.mockwebserver.Context;
+import io.fabric8.mockwebserver.MockWebServer;
+import io.fabric8.mockwebserver.ServerRequest;
+import io.fabric8.mockwebserver.ServerResponse;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Queue;
import org.eclipse.che.api.workspace.server.spi.InfrastructureException;
import org.eclipse.che.api.workspace.server.spi.NamespaceResolutionContext;
import org.eclipse.che.workspace.infrastructure.kubernetes.CheServerKubernetesClientFactory;
import org.eclipse.che.workspace.infrastructure.kubernetes.namespace.KubernetesWorkspaceServiceAccount;
import org.mockito.Mock;
import org.mockito.testng.MockitoTestNGListener;
+import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Listeners;
import org.testng.annotations.Test;
@@ -37,7 +46,7 @@ public class WorkspaceServiceAccountConfiguratorTest {
@Mock private CheServerKubernetesClientFactory clientFactory;
private KubernetesClient client;
- private KubernetesServer serverMock;
+ private KubernetesMockServer kubernetesMockServer;
private NamespaceResolutionContext namespaceResolutionContext;
@Mock private KubernetesWorkspaceServiceAccount kubeWSA;
@@ -57,18 +66,29 @@ public void setUp() throws InfrastructureException {
// when(configurator.doCreateServiceAccount(TEST_WORKSPACE_ID,
// TEST_NAMESPACE_NAME)).thenReturn(kubeWSA);
- serverMock = new KubernetesServer(true, true);
- serverMock.before();
- client = spy(serverMock.getClient());
+ final Map> responses = new HashMap<>();
+ kubernetesMockServer =
+ new KubernetesMockServer(
+ new Context(),
+ new MockWebServer(),
+ responses,
+ new KubernetesMixedDispatcher(responses),
+ true);
+ kubernetesMockServer.init();
+ client = spy(kubernetesMockServer.createClient());
lenient().when(clientFactory.create(TEST_WORKSPACE_ID)).thenReturn(client);
namespaceResolutionContext =
new NamespaceResolutionContext(TEST_WORKSPACE_ID, TEST_USER_ID, TEST_USERNAME);
}
+ @AfterMethod
+ public void tearDown() {
+ kubernetesMockServer.destroy();
+ }
+
@Test
- public void createWorkspaceServiceAccountWithBindings()
- throws InfrastructureException, InterruptedException {
+ public void createWorkspaceServiceAccountWithBindings() throws InfrastructureException {
// given - cluster roles exists in cluster
configurator =
new WorkspaceServiceAccountConfigurator(
diff --git a/infrastructures/openshift/pom.xml b/infrastructures/openshift/pom.xml
index fd086c2ce3..f421de29f7 100644
--- a/infrastructures/openshift/pom.xml
+++ b/infrastructures/openshift/pom.xml
@@ -152,11 +152,6 @@
logback-classic
test
-
- com.squareup.okhttp3
- mockwebserver
- test
-
io.fabric8
kubernetes-server-mock
diff --git a/infrastructures/openshift/src/test/java/org/eclipse/che/workspace/infrastructure/openshift/authorization/OpenShiftAuthorizationCheckerTest.java b/infrastructures/openshift/src/test/java/org/eclipse/che/workspace/infrastructure/openshift/authorization/OpenShiftAuthorizationCheckerTest.java
index f826cf4002..11fdf866c6 100644
--- a/infrastructures/openshift/src/test/java/org/eclipse/che/workspace/infrastructure/openshift/authorization/OpenShiftAuthorizationCheckerTest.java
+++ b/infrastructures/openshift/src/test/java/org/eclipse/che/workspace/infrastructure/openshift/authorization/OpenShiftAuthorizationCheckerTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012-2023 Red Hat, Inc.
+ * Copyright (c) 2012-2025 Red Hat, Inc.
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
@@ -15,15 +15,24 @@
import io.fabric8.kubernetes.api.model.ObjectMetaBuilder;
import io.fabric8.kubernetes.client.KubernetesClient;
-import io.fabric8.kubernetes.client.server.mock.KubernetesServer;
+import io.fabric8.kubernetes.client.server.mock.KubernetesMixedDispatcher;
+import io.fabric8.kubernetes.client.server.mock.KubernetesMockServer;
+import io.fabric8.mockwebserver.Context;
+import io.fabric8.mockwebserver.MockWebServer;
+import io.fabric8.mockwebserver.ServerRequest;
+import io.fabric8.mockwebserver.ServerResponse;
import io.fabric8.openshift.api.model.Group;
import java.util.Collections;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
+import java.util.Queue;
import org.eclipse.che.api.workspace.server.spi.InfrastructureException;
import org.eclipse.che.workspace.infrastructure.kubernetes.CheServerKubernetesClientFactory;
import org.mockito.Mock;
import org.mockito.testng.MockitoTestNGListener;
import org.testng.Assert;
+import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Listeners;
@@ -34,16 +43,28 @@ public class OpenShiftAuthorizationCheckerTest {
@Mock private CheServerKubernetesClientFactory clientFactory;
private KubernetesClient client;
- private KubernetesServer serverMock;
+ private KubernetesMockServer kubernetesMockServer;
@BeforeMethod
public void setUp() throws InfrastructureException {
- serverMock = new KubernetesServer(true, true);
- serverMock.before();
- client = spy(serverMock.getClient());
+ final Map> responses = new HashMap<>();
+ kubernetesMockServer =
+ new KubernetesMockServer(
+ new Context(),
+ new MockWebServer(),
+ responses,
+ new KubernetesMixedDispatcher(responses),
+ true);
+ kubernetesMockServer.init();
+ client = spy(kubernetesMockServer.createClient());
lenient().when(clientFactory.create()).thenReturn(client);
}
+ @AfterMethod
+ public void tearDown() {
+ kubernetesMockServer.destroy();
+ }
+
@Test(dataProvider = "advancedAuthorizationData")
public void advancedAuthorization(
String testUserName,
diff --git a/pom.xml b/pom.xml
index 1a2dfe265d..541832d632 100644
--- a/pom.xml
+++ b/pom.xml
@@ -59,7 +59,7 @@
2.10.1
2.2.224
0.1.55
- 5.0.0-alpha.12
+ 4.12.0
3.6.0
1.5
2.14.0
@@ -273,7 +273,7 @@
com.squareup.okhttp3
- mockwebserver
+ okhttp
${com.squareup.okhttp3.version}
@@ -453,10 +453,6 @@
xml-path
io.rest-assured
-
- hamcrest
- org.hamcrest
-