Skip to content

Commit 3c7856d

Browse files
authored
Merge pull request #4401 from kubernetes-client/copilot/refactor-url-equality-checks
Replace urlEqualTo with urlPathEqualTo in WireMock test stubs
2 parents ac26aa5 + fbc4602 commit 3c7856d

File tree

6 files changed

+35
-36
lines changed

6 files changed

+35
-36
lines changed

examples/examples-release-latest/src/test/java/io/kubernetes/client/examples/ExampleTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
1616
import static com.github.tomakehurst.wiremock.client.WireMock.get;
17-
import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;
17+
import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo;
1818
import static org.junit.jupiter.api.Assertions.assertEquals;
1919

2020
import com.github.tomakehurst.wiremock.core.WireMockConfiguration;
@@ -44,7 +44,7 @@ void exactUrlOnly() throws ApiException {
4444
V1Namespace ns1 = new V1Namespace().metadata(new V1ObjectMeta().name("name"));
4545

4646
apiServer.stubFor(
47-
get(urlEqualTo("/api/v1/namespaces/name"))
47+
get(urlPathEqualTo("/api/v1/namespaces/name"))
4848
.willReturn(
4949
aResponse()
5050
.withHeader("Content-Type", "application/json")

spring/src/test/java/io/kubernetes/client/spring/extended/manifests/KubernetesManifestTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ static void setupApiServer() throws Exception {
137137
apiServer.resetScenarios();
138138
apiServer.resetRequests();
139139
apiServer.stubFor(
140-
post(urlEqualTo("/api/v1/namespaces"))
140+
post(urlPathEqualTo("/api/v1/namespaces"))
141141
.willReturn(
142142
aResponse()
143143
.withHeader("Content-Type", "application/json")
@@ -146,7 +146,7 @@ static void setupApiServer() throws Exception {
146146
.getJSON()
147147
.serialize(returningCreatedNamespace))));
148148
apiServer.stubFor(
149-
post(urlEqualTo("/api/v1/namespaces/spring-boot-test-namespace/serviceaccounts"))
149+
post(urlPathEqualTo("/api/v1/namespaces/spring-boot-test-namespace/serviceaccounts"))
150150
.willReturn(
151151
aResponse()
152152
.withHeader("Content-Type", "application/json")

util/src/test/java/io/kubernetes/client/util/generic/GenericKubernetesApiForCoreApiTest.java

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
import static com.github.tomakehurst.wiremock.client.WireMock.postRequestedFor;
2727
import static com.github.tomakehurst.wiremock.client.WireMock.put;
2828
import static com.github.tomakehurst.wiremock.client.WireMock.putRequestedFor;
29-
import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;
3029
import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo;
3130
import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.wireMockConfig;
3231
import static org.assertj.core.api.Assertions.assertThat;
@@ -87,7 +86,7 @@ void setup() {
8786
void deleteNamespacedPodReturningStatus() {
8887
V1Status status = new V1Status().kind("Status").code(200).message("good!");
8988
apiServer.stubFor(
90-
delete(urlEqualTo("/api/v1/namespaces/default/pods/foo1"))
89+
delete(urlPathEqualTo("/api/v1/namespaces/default/pods/foo1"))
9190
.willReturn(aResponse().withStatus(200).withBody(json.serialize(status))));
9291

9392
KubernetesApiResponse<V1Pod> deletePodResp = podClient.delete("default", "foo1", null);
@@ -101,7 +100,7 @@ void deleteNamespacedPodReturningStatus() {
101100
void deleteNamespacedPodAsyncReturningStatus() throws InterruptedException {
102101
V1Status status = new V1Status().kind("Status").code(200).message("good!");
103102
apiServer.stubFor(
104-
delete(urlEqualTo("/api/v1/namespaces/default/pods/foo1"))
103+
delete(urlPathEqualTo("/api/v1/namespaces/default/pods/foo1"))
105104
.willReturn(aResponse().withStatus(200).withBody(json.serialize(status))));
106105
TestCallback<V1Pod> callback = new TestCallback<>(podClient.getApiClient());
107106

@@ -123,7 +122,7 @@ void deleteNamespacedPodReturningDeletedObject() {
123122
new V1Pod().kind("Pod").metadata(new V1ObjectMeta().namespace("default").name("foo1"));
124123

125124
apiServer.stubFor(
126-
delete(urlEqualTo("/api/v1/namespaces/default/pods/foo1"))
125+
delete(urlPathEqualTo("/api/v1/namespaces/default/pods/foo1"))
127126
.willReturn(aResponse().withStatus(200).withBody(json.serialize(foo1))));
128127

129128
KubernetesApiResponse<V1Pod> deletePodResp = podClient.delete("default", "foo1");
@@ -139,7 +138,7 @@ void deleteNamespacedPodAsyncReturningDeletedObject() throws InterruptedExceptio
139138
new V1Pod().kind("Pod").metadata(new V1ObjectMeta().namespace("default").name("foo1"));
140139

141140
apiServer.stubFor(
142-
delete(urlEqualTo("/api/v1/namespaces/default/pods/foo1"))
141+
delete(urlPathEqualTo("/api/v1/namespaces/default/pods/foo1"))
143142
.willReturn(aResponse().withStatus(200).withBody(json.serialize(foo1))));
144143
TestCallback<V1Pod> callback = new TestCallback<>(podClient.getApiClient());
145144

@@ -159,7 +158,7 @@ void deleteNamespacedPodReturningForbiddenStatus() {
159158
V1Status status = new V1Status().kind("Status").code(403).message("good!");
160159

161160
apiServer.stubFor(
162-
delete(urlEqualTo("/api/v1/namespaces/default/pods/foo1"))
161+
delete(urlPathEqualTo("/api/v1/namespaces/default/pods/foo1"))
163162
.willReturn(aResponse().withStatus(403).withBody(json.serialize(status))));
164163

165164
KubernetesApiResponse<V1Pod> deletePodResp = podClient.delete("default", "foo1");
@@ -174,7 +173,7 @@ void deleteNamespacedPodAsyncReturningForbiddenStatus() throws InterruptedExcept
174173
V1Status status = new V1Status().kind("Status").code(403).message("good!");
175174

176175
apiServer.stubFor(
177-
delete(urlEqualTo("/api/v1/namespaces/default/pods/foo1"))
176+
delete(urlPathEqualTo("/api/v1/namespaces/default/pods/foo1"))
178177
.willReturn(aResponse().withStatus(403).withBody(json.serialize(status))));
179178
TestCallback<V1Pod> callback = new TestCallback<>(podClient.getApiClient());
180179

@@ -316,7 +315,7 @@ void createNamespacedPodReturningObject() {
316315
new V1Pod().kind("Pod").metadata(new V1ObjectMeta().namespace("default").name("foo1"));
317316

318317
apiServer.stubFor(
319-
post(urlEqualTo("/api/v1/namespaces/default/pods"))
318+
post(urlPathEqualTo("/api/v1/namespaces/default/pods"))
320319
.willReturn(aResponse().withStatus(200).withBody(json.serialize(foo1))));
321320
KubernetesApiResponse<V1Pod> podListResp = podClient.create(foo1);
322321
assertThat(podListResp.isSuccess()).isTrue();
@@ -331,7 +330,7 @@ void createNamespacedPodAsyncReturningObject() throws InterruptedException {
331330
new V1Pod().kind("Pod").metadata(new V1ObjectMeta().namespace("default").name("foo1"));
332331

333332
apiServer.stubFor(
334-
post(urlEqualTo("/api/v1/namespaces/default/pods"))
333+
post(urlPathEqualTo("/api/v1/namespaces/default/pods"))
335334
.willReturn(aResponse().withStatus(200).withBody(json.serialize(foo1))));
336335
TestCallback<V1Pod> callback = new TestCallback<>(podClient.getApiClient());
337336

@@ -351,7 +350,7 @@ void updateNamespacedPodReturningObject() {
351350
new V1Pod().kind("Pod").metadata(new V1ObjectMeta().namespace("default").name("foo1"));
352351

353352
apiServer.stubFor(
354-
put(urlEqualTo("/api/v1/namespaces/default/pods/foo1"))
353+
put(urlPathEqualTo("/api/v1/namespaces/default/pods/foo1"))
355354
.willReturn(aResponse().withStatus(200).withBody(json.serialize(foo1))));
356355
KubernetesApiResponse<V1Pod> podListResp = podClient.update(foo1);
357356
assertThat(podListResp.isSuccess()).isTrue();
@@ -366,7 +365,7 @@ void updateNamespacedPodAsyncReturningObject() throws InterruptedException {
366365
new V1Pod().kind("Pod").metadata(new V1ObjectMeta().namespace("default").name("foo1"));
367366

368367
apiServer.stubFor(
369-
put(urlEqualTo("/api/v1/namespaces/default/pods/foo1"))
368+
put(urlPathEqualTo("/api/v1/namespaces/default/pods/foo1"))
370369
.willReturn(aResponse().withStatus(200).withBody(json.serialize(foo1))));
371370
TestCallback<V1Pod> callback = new TestCallback<>(podClient.getApiClient());
372371

@@ -386,7 +385,7 @@ void patchNamespacedPodReturningObject() {
386385
V1Pod foo1 =
387386
new V1Pod().kind("Pod").metadata(new V1ObjectMeta().namespace("default").name("foo1"));
388387
apiServer.stubFor(
389-
patch(urlEqualTo("/api/v1/namespaces/default/pods/foo1"))
388+
patch(urlPathEqualTo("/api/v1/namespaces/default/pods/foo1"))
390389
.withHeader("Content-Type", containing(V1Patch.PATCH_FORMAT_STRATEGIC_MERGE_PATCH))
391390
.willReturn(aResponse().withStatus(200).withBody(json.serialize(foo1))));
392391
KubernetesApiResponse<V1Pod> podPatchResp =
@@ -404,7 +403,7 @@ void patchNamespacedPodAsyncReturningObject() throws InterruptedException {
404403
V1Pod foo1 =
405404
new V1Pod().kind("Pod").metadata(new V1ObjectMeta().namespace("default").name("foo1"));
406405
apiServer.stubFor(
407-
patch(urlEqualTo("/api/v1/namespaces/default/pods/foo1"))
406+
patch(urlPathEqualTo("/api/v1/namespaces/default/pods/foo1"))
408407
.withHeader("Content-Type", containing(V1Patch.PATCH_FORMAT_STRATEGIC_MERGE_PATCH))
409408
.willReturn(aResponse().withStatus(200).withBody(json.serialize(foo1))));
410409
TestCallback<V1Pod> callback = new TestCallback<>(podClient.getApiClient());
@@ -430,7 +429,7 @@ void patchNamespacedPodWithApiPrefix() {
430429
// add api prefix
431430
String prefix = "/k8s/clusters/c-7q988";
432431
apiServer.stubFor(
433-
patch(urlEqualTo(prefix + "/api/v1/namespaces/default/pods/foo1"))
432+
patch(urlPathEqualTo(prefix + "/api/v1/namespaces/default/pods/foo1"))
434433
.withHeader("Content-Type", containing(V1Patch.PATCH_FORMAT_STRATEGIC_MERGE_PATCH))
435434
.willReturn(aResponse().withStatus(200).withBody(json.serialize(foo1))));
436435

@@ -462,7 +461,7 @@ void patchNamespacedPodAsyncWithApiPrefix() throws InterruptedException {
462461
// add api prefix
463462
String prefix = "/k8s/clusters/c-7q988";
464463
apiServer.stubFor(
465-
patch(urlEqualTo(prefix + "/api/v1/namespaces/default/pods/foo1"))
464+
patch(urlPathEqualTo(prefix + "/api/v1/namespaces/default/pods/foo1"))
466465
.withHeader("Content-Type", containing(V1Patch.PATCH_FORMAT_STRATEGIC_MERGE_PATCH))
467466
.willReturn(aResponse().withStatus(200).withBody(json.serialize(foo1))));
468467
TestCallback<V1Pod> callback = new TestCallback<>(podClient.getApiClient());
@@ -501,7 +500,7 @@ void readTimeoutShouldThrowException() {
501500
.readTimeout(1, TimeUnit.MILLISECONDS) // timeout everytime
502501
.build());
503502
apiServer.stubFor(
504-
get(urlEqualTo("/api/v1/namespaces/foo/pods/test"))
503+
get(urlPathEqualTo("/api/v1/namespaces/foo/pods/test"))
505504
.willReturn(aResponse().withFixedDelay(99999).withStatus(200).withBody("")));
506505
podClient =
507506
new GenericKubernetesApi<>(V1Pod.class, V1PodList.class, "", "v1", "pods", apiClient);

util/src/test/java/io/kubernetes/client/util/generic/GenericKubernetesApiTest.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ void setup() {
6060
void deleteNamespacedJobReturningStatus() {
6161
V1Status status = new V1Status().kind("Status").code(200).message("good!");
6262
apiServer.stubFor(
63-
delete(urlEqualTo("/apis/batch/v1/namespaces/default/jobs/foo1"))
63+
delete(urlPathEqualTo("/apis/batch/v1/namespaces/default/jobs/foo1"))
6464
.willReturn(aResponse().withStatus(200).withBody(json.serialize(status))));
6565

6666
KubernetesApiResponse<V1Job> deleteJobResp = jobClient.delete("default", "foo1", null);
@@ -76,7 +76,7 @@ void deleteNamespacedJobReturningDeletedObject() {
7676
new V1Job().kind("Job").metadata(new V1ObjectMeta().namespace("default").name("foo1"));
7777

7878
apiServer.stubFor(
79-
delete(urlEqualTo("/apis/batch/v1/namespaces/default/jobs/foo1"))
79+
delete(urlPathEqualTo("/apis/batch/v1/namespaces/default/jobs/foo1"))
8080
.willReturn(aResponse().withStatus(200).withBody(json.serialize(foo1))));
8181

8282
KubernetesApiResponse<V1Job> deleteJobResp = jobClient.delete("default", "foo1");
@@ -91,7 +91,7 @@ void deleteNamespacedJobReturningForbiddenStatus() {
9191
V1Status status = new V1Status().kind("Status").code(403).message("good!");
9292

9393
apiServer.stubFor(
94-
delete(urlEqualTo("/apis/batch/v1/namespaces/default/jobs/foo1"))
94+
delete(urlPathEqualTo("/apis/batch/v1/namespaces/default/jobs/foo1"))
9595
.willReturn(aResponse().withStatus(403).withBody(json.serialize(status))));
9696

9797
KubernetesApiResponse<V1Job> deleteJobResp = jobClient.delete("default", "foo1");
@@ -188,7 +188,7 @@ void createNamespacedJobReturningObject() {
188188
new V1Job().kind("Job").metadata(new V1ObjectMeta().namespace("default").name("foo1"));
189189

190190
apiServer.stubFor(
191-
post(urlEqualTo("/apis/batch/v1/namespaces/default/jobs"))
191+
post(urlPathEqualTo("/apis/batch/v1/namespaces/default/jobs"))
192192
.willReturn(aResponse().withStatus(200).withBody(json.serialize(foo1))));
193193
KubernetesApiResponse<V1Job> jobListResp = jobClient.create(foo1);
194194
assertThat(jobListResp.isSuccess()).isTrue();
@@ -203,7 +203,7 @@ void updateNamespacedJobReturningObject() {
203203
new V1Job().kind("Job").metadata(new V1ObjectMeta().namespace("default").name("foo1"));
204204

205205
apiServer.stubFor(
206-
put(urlEqualTo("/apis/batch/v1/namespaces/default/jobs/foo1"))
206+
put(urlPathEqualTo("/apis/batch/v1/namespaces/default/jobs/foo1"))
207207
.willReturn(aResponse().withStatus(200).withBody(json.serialize(foo1))));
208208
KubernetesApiResponse<V1Job> jobListResp = jobClient.update(foo1);
209209
assertThat(jobListResp.isSuccess()).isTrue();
@@ -219,7 +219,7 @@ void updateStatusNamespacedJobReturningObject() {
219219
foo1.setStatus(new V1JobStatus().failed(1));
220220

221221
apiServer.stubFor(
222-
patch(urlEqualTo("/apis/batch/v1/namespaces/default/jobs/foo1/status"))
222+
patch(urlPathEqualTo("/apis/batch/v1/namespaces/default/jobs/foo1/status"))
223223
.willReturn(aResponse().withStatus(200).withBody(new JSON().serialize(foo1))));
224224
KubernetesApiResponse<V1Job> jobListResp = jobClient.updateStatus(foo1, t -> t.getStatus());
225225
assertThat(jobListResp.isSuccess()).isTrue();
@@ -235,7 +235,7 @@ void patchNamespacedJobReturningObject() {
235235
V1Job foo1 =
236236
new V1Job().kind("Job").metadata(new V1ObjectMeta().namespace("default").name("foo1"));
237237
apiServer.stubFor(
238-
patch(urlEqualTo("/apis/batch/v1/namespaces/default/jobs/foo1"))
238+
patch(urlPathEqualTo("/apis/batch/v1/namespaces/default/jobs/foo1"))
239239
.withHeader("Content-Type", containing(V1Patch.PATCH_FORMAT_STRATEGIC_MERGE_PATCH))
240240
.willReturn(aResponse().withStatus(200).withBody(json.serialize(foo1))));
241241
KubernetesApiResponse<V1Job> jobPatchResp =
@@ -251,7 +251,7 @@ void patchNamespacedJobReturningObject() {
251251
void patchNamespacedJobReturningEmpty() {
252252
V1Patch v1Patch = new V1Patch("{}");
253253
apiServer.stubFor(
254-
patch(urlEqualTo("/apis/batch/v1/namespaces/default/jobs/foo1"))
254+
patch(urlPathEqualTo("/apis/batch/v1/namespaces/default/jobs/foo1"))
255255
.withHeader("Content-Type", containing(V1Patch.PATCH_FORMAT_STRATEGIC_MERGE_PATCH))
256256
.willReturn(aResponse().withStatus(200).withBody("")));
257257
KubernetesApiResponse<V1Job> jobPatchResp =
@@ -289,7 +289,7 @@ void readTimeoutShouldThrowException() {
289289
.readTimeout(1, TimeUnit.MILLISECONDS) // timeout everytime
290290
.build());
291291
apiServer.stubFor(
292-
get(urlEqualTo("/apis/batch/v1/namespaces/foo/jobs/test"))
292+
get(urlPathEqualTo("/apis/batch/v1/namespaces/foo/jobs/test"))
293293
.willReturn(aResponse().withFixedDelay(99999).withStatus(200).withBody("")));
294294
jobClient =
295295
new GenericKubernetesApi<>(V1Job.class, V1JobList.class, "batch", "v1", "jobs", apiClient);

util/src/test/java/io/kubernetes/client/util/generic/GenericKubernetesGetApiTest.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,10 +59,10 @@ void returningNormalObjectShouldWork() {
5959
FooCustomResource foo = new FooCustomResource();
6060

6161
apiServer.stubFor(
62-
get(urlEqualTo("/apis/batch/v1/namespaces/default/jobs/noxu"))
62+
get(urlPathEqualTo("/apis/batch/v1/namespaces/default/jobs/noxu"))
6363
.willReturn(aResponse().withStatus(200).withBody(JSON.serialize(job))));
6464
apiServer.stubFor(
65-
get(urlEqualTo("/apis/example.io/v1/namespaces/default/foos/noxu"))
65+
get(urlPathEqualTo("/apis/example.io/v1/namespaces/default/foos/noxu"))
6666
.willReturn(aResponse().withStatus(200).withBody(JSON.serialize(foo))));
6767

6868
KubernetesApiResponse<V1Job> jobResp = jobClient.get("default", "noxu");
@@ -79,10 +79,10 @@ void returningStatusShouldWork() {
7979
V1Status forbiddenStatus = new V1Status().kind("Status");
8080

8181
apiServer.stubFor(
82-
get(urlEqualTo("/apis/batch/v1/namespaces/default/jobs/noxu"))
82+
get(urlPathEqualTo("/apis/batch/v1/namespaces/default/jobs/noxu"))
8383
.willReturn(aResponse().withStatus(403).withBody(JSON.serialize(forbiddenStatus))));
8484
apiServer.stubFor(
85-
get(urlEqualTo("/apis/example.io/v1/namespaces/default/foos/noxu"))
85+
get(urlPathEqualTo("/apis/example.io/v1/namespaces/default/foos/noxu"))
8686
.willReturn(aResponse().withStatus(403).withBody(JSON.serialize(forbiddenStatus))));
8787

8888
KubernetesApiResponse<V1Job> jobResp = jobClient.get("default", "noxu");

util/src/test/java/io/kubernetes/client/util/generic/KubernetesApiResponseTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
1616
import static com.github.tomakehurst.wiremock.client.WireMock.delete;
1717
import static com.github.tomakehurst.wiremock.client.WireMock.get;
18-
import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;
18+
import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo;
1919
import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.wireMockConfig;
2020
import static org.assertj.core.api.Assertions.assertThat;
2121

@@ -51,7 +51,7 @@ void setup() {
5151
void errorStatusHandler() throws ApiException {
5252
V1Status forbiddenStatus = new V1Status().code(403).message("Forbidden");
5353
apiServer.stubFor(
54-
delete(urlEqualTo("/api/v1/namespaces/default/pods/foo"))
54+
delete(urlPathEqualTo("/api/v1/namespaces/default/pods/foo"))
5555
.willReturn(aResponse().withStatus(403).withBody(new Gson().toJson(forbiddenStatus))));
5656
AtomicBoolean catched = new AtomicBoolean(false);
5757
assertThat(
@@ -69,7 +69,7 @@ void errorStatusHandler() throws ApiException {
6969
void notDeserializableResponse() {
7070
String message = "-foobar";
7171
apiServer.stubFor(
72-
get(urlEqualTo("/api/v1/namespaces/default/pods/foo"))
72+
get(urlPathEqualTo("/api/v1/namespaces/default/pods/foo"))
7373
.willReturn(aResponse().withStatus(403).withBody(message)));
7474
KubernetesApiResponse response = podClient.get("default", "foo");
7575
assertThat(response.isSuccess()).isFalse();

0 commit comments

Comments
 (0)