Skip to content

Commit c8d0e8a

Browse files
committed
feat: KubernetesMockServer creates default expectation for /version
1 parent 306434c commit c8d0e8a

File tree

5 files changed

+85
-19
lines changed

5 files changed

+85
-19
lines changed

kubernetes-server-mock/src/main/java/io/fabric8/kubernetes/client/server/mock/KubernetesMockServer.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,13 @@
2020
import io.fabric8.kubernetes.client.ConfigBuilder;
2121
import io.fabric8.kubernetes.client.DefaultKubernetesClient;
2222
import io.fabric8.kubernetes.client.NamespacedKubernetesClient;
23+
import io.fabric8.kubernetes.client.VersionInfo;
2324
import io.fabric8.kubernetes.client.utils.Serialization;
2425
import io.fabric8.mockwebserver.Context;
2526
import io.fabric8.mockwebserver.DefaultMockServer;
2627
import io.fabric8.mockwebserver.ServerRequest;
2728
import io.fabric8.mockwebserver.ServerResponse;
29+
import io.fabric8.mockwebserver.internal.MockDispatcher;
2830
import okhttp3.mockwebserver.Dispatcher;
2931
import okhttp3.mockwebserver.MockWebServer;
3032

@@ -40,6 +42,8 @@ public class KubernetesMockServer extends DefaultMockServer {
4042

4143
private static final Context context = new Context(Serialization.jsonMapper());
4244

45+
private final VersionInfo versionInfo;
46+
4347
public KubernetesMockServer() {
4448
this(true);
4549
}
@@ -53,16 +57,23 @@ public KubernetesMockServer(MockWebServer server, Map<ServerRequest, Queue<Serve
5357
}
5458

5559
public KubernetesMockServer(Context context, MockWebServer server, Map<ServerRequest, Queue<ServerResponse>> responses, boolean useHttps) {
56-
super(context, server, responses, useHttps);
60+
this(context, server, responses, new MockDispatcher(responses), useHttps);
5761
}
5862

5963
public KubernetesMockServer(Context context, MockWebServer server, Map<ServerRequest, Queue<ServerResponse>> responses, Dispatcher dispatcher, boolean useHttps) {
64+
this(context, server, responses, dispatcher, useHttps,
65+
new VersionInfo.Builder().withMajor("0").withMinor("0").build());
66+
}
67+
68+
public KubernetesMockServer(Context context, MockWebServer server, Map<ServerRequest, Queue<ServerResponse>> responses, Dispatcher dispatcher, boolean useHttps, VersionInfo versionInfo) {
6069
super(context, server, responses, dispatcher, useHttps);
70+
this.versionInfo = versionInfo;
6171
}
6272

6373
@Override
6474
public void onStart() {
6575
expect().get().withPath("/").andReturn(200, new RootPathsBuilder().addToPaths(getRootPaths()).build()).always();
76+
expect().get().withPath("/version").andReturn(200, versionInfo).always();
6677
}
6778

6879
public void init() {

kubernetes-server-mock/src/test/java/io/fabric8/kubernetes/client/server/mock/KubernetesMockServerExtensionStaticTests.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,15 @@
2121
import org.junit.jupiter.api.Test;
2222

2323
@EnableKubernetesMockClient(crud = true)
24-
public class KubernetesMockServerExtensionStaticTests {
24+
class KubernetesMockServerExtensionStaticTests {
2525

26-
static KubernetesClient client;
26+
static KubernetesClient client;
2727

28-
@Test
29-
void testExample() {
30-
Assertions.assertNotNull(client);
28+
@Test
29+
void testExample() {
30+
Assertions.assertNotNull(client);
3131
Assertions.assertNull(client.getConfiguration().getOauthToken());
3232
Assertions.assertNull(client.getConfiguration().getCurrentContext());
3333
Assertions.assertTrue(client.getConfiguration().getContexts().isEmpty());
34-
}
34+
}
3535
}

kubernetes-server-mock/src/test/java/io/fabric8/kubernetes/client/server/mock/KubernetesMockServerExtensionTests.java

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,19 +17,34 @@
1717
package io.fabric8.kubernetes.client.server.mock;
1818

1919
import io.fabric8.kubernetes.client.KubernetesClient;
20+
import io.fabric8.kubernetes.client.VersionInfo;
2021
import org.junit.jupiter.api.Assertions;
22+
import org.junit.jupiter.api.DisplayName;
2123
import org.junit.jupiter.api.Test;
2224

25+
import static org.assertj.core.api.Assertions.assertThat;
26+
2327
@EnableKubernetesMockClient(crud = true)
24-
public class KubernetesMockServerExtensionTests {
28+
class KubernetesMockServerExtensionTests {
2529

26-
KubernetesClient client;
30+
KubernetesClient client;
2731

28-
@Test
29-
void testExample() {
30-
Assertions.assertNotNull(client);
32+
@Test
33+
void testExample() {
34+
Assertions.assertNotNull(client);
3135
Assertions.assertNull(client.getConfiguration().getOauthToken());
3236
Assertions.assertNull(client.getConfiguration().getCurrentContext());
3337
Assertions.assertTrue(client.getConfiguration().getContexts().isEmpty());
34-
}
38+
}
39+
40+
@Test
41+
@DisplayName("KubernetesMockServerExtension uses KubernetesMixedDispatcher and provides expectation for GET /version")
42+
void testGetKubernetesVersion() {
43+
// When
44+
final VersionInfo result = client.getKubernetesVersion();
45+
// Then
46+
assertThat(result)
47+
.hasFieldOrPropertyWithValue("major", "0")
48+
.hasFieldOrPropertyWithValue("minor", "0");
49+
}
3550
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package io.fabric8.kubernetes.client.server.mock;
2+
3+
import io.fabric8.kubernetes.client.KubernetesClient;
4+
import io.fabric8.kubernetes.client.VersionInfo;
5+
import org.junit.jupiter.api.AfterEach;
6+
import org.junit.jupiter.api.BeforeEach;
7+
import org.junit.jupiter.api.DisplayName;
8+
import org.junit.jupiter.api.Test;
9+
10+
import static org.assertj.core.api.Assertions.assertThat;
11+
import static org.junit.jupiter.api.Assertions.*;
12+
13+
class KubernetesMockServerTest {
14+
15+
private KubernetesMockServer server;
16+
private KubernetesClient client;
17+
18+
@BeforeEach
19+
void setUp() {
20+
server = new KubernetesMockServer();
21+
server.start();
22+
client = server.createClient();
23+
}
24+
25+
@AfterEach
26+
void tearDown() {
27+
client.close();
28+
server.shutdown();
29+
}
30+
31+
@Test
32+
@DisplayName("onStart, generates version endpoint")
33+
void onStartVersionInfo() {
34+
// When
35+
final VersionInfo result = client.getKubernetesVersion();
36+
// Then
37+
assertThat(result)
38+
.hasFieldOrPropertyWithValue("major", "0")
39+
.hasFieldOrPropertyWithValue("minor", "0");
40+
}
41+
}

kubernetes-server-mock/src/test/java/io/fabric8/kubernetes/client/server/mock/MasterProtocolTest.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,20 +22,19 @@
2222
import org.junit.jupiter.api.Test;
2323
import static org.junit.jupiter.api.Assertions.assertTrue;
2424

25-
import java.io.IOException;
2625
import java.util.Locale;
2726

2827
import static okhttp3.TlsVersion.TLS_1_2;
2928

30-
public class MasterProtocolTest {
29+
class MasterProtocolTest {
3130

3231
@Test
33-
public void testWithSSL() throws IOException {
32+
void testWithSSL() {
3433
KubernetesMockServer sslServer = new KubernetesMockServer();
3534
sslServer.init();
3635

3736
String host = sslServer.getHostName();
38-
Integer port = sslServer.getPort();
37+
int port = sslServer.getPort();
3938
Config config = new ConfigBuilder()
4039
.withMasterUrl(host + ":" +port)
4140
.withTlsVersions(TLS_1_2)
@@ -47,11 +46,11 @@ public void testWithSSL() throws IOException {
4746
}
4847

4948
@Test
50-
public void testWithoutSSL() throws IOException {
49+
void testWithoutSSL() {
5150
KubernetesMockServer plainServer = new KubernetesMockServer(false);
5251
plainServer.init();
5352
String host = plainServer.getHostName();
54-
Integer port = plainServer.getPort();
53+
int port = plainServer.getPort();
5554
Config config = new ConfigBuilder()
5655
.withMasterUrl(host + ":" +port)
5756
.build();

0 commit comments

Comments
 (0)