Skip to content

Commit 92bba26

Browse files
authored
fix: shating more code between tests (#42)
1 parent 41b00bd commit 92bba26

File tree

19 files changed

+166
-364
lines changed

19 files changed

+166
-364
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
package io.javaoperatorsdk.webhook.sample.commons;
2+
3+
import java.util.HashMap;
4+
import java.util.concurrent.CompletableFuture;
5+
6+
import io.fabric8.kubernetes.api.model.Pod;
7+
import io.javaoperatorsdk.webhook.admission.AdmissionController;
8+
import io.javaoperatorsdk.webhook.admission.AsyncAdmissionController;
9+
import io.javaoperatorsdk.webhook.admission.NotAllowedException;
10+
import io.javaoperatorsdk.webhook.admission.mutation.AsyncMutator;
11+
import io.javaoperatorsdk.webhook.admission.mutation.Mutator;
12+
import io.javaoperatorsdk.webhook.admission.validation.Validator;
13+
14+
public class AdmissionControllers {
15+
16+
public static final String ERROR_MESSAGE = "Some error happened";
17+
public static final String APP_NAME_LABEL_KEY = "app.kubernetes.io/name";
18+
19+
public static AdmissionController<Pod> mutatingController() {
20+
return new AdmissionController<>((resource, operation) -> {
21+
if (resource.getMetadata().getLabels() == null) {
22+
resource.getMetadata().setLabels(new HashMap<>());
23+
}
24+
25+
resource.getMetadata().getLabels().putIfAbsent(APP_NAME_LABEL_KEY, "mutation-test");
26+
return resource;
27+
});
28+
}
29+
30+
public static AdmissionController<Pod> validatingController() {
31+
return new AdmissionController<>((resource, operation) -> {
32+
if (resource.getMetadata().getLabels() == null
33+
|| resource.getMetadata().getLabels().get(APP_NAME_LABEL_KEY) == null) {
34+
throw new NotAllowedException("Missing label: " + APP_NAME_LABEL_KEY);
35+
}
36+
});
37+
}
38+
39+
public static AsyncAdmissionController<Pod> asyncMutatingController() {
40+
return new AsyncAdmissionController<>(
41+
(AsyncMutator<Pod>) (resource, operation) -> CompletableFuture.supplyAsync(() -> {
42+
if (resource.getMetadata().getLabels() == null) {
43+
resource.getMetadata().setLabels(new HashMap<>());
44+
}
45+
resource.getMetadata().getLabels().putIfAbsent(APP_NAME_LABEL_KEY, "mutation-test");
46+
return resource;
47+
}));
48+
}
49+
50+
public static AsyncAdmissionController<Pod> asyncValidatingController() {
51+
return new AsyncAdmissionController<>((resource, operation) -> {
52+
if (resource.getMetadata().getLabels() == null
53+
|| resource.getMetadata().getLabels().get(APP_NAME_LABEL_KEY) == null) {
54+
throw new NotAllowedException("Missing label: " + APP_NAME_LABEL_KEY);
55+
}
56+
});
57+
}
58+
59+
60+
public static AdmissionController<Pod> errorMutatingController() {
61+
return new AdmissionController<>((Validator<Pod>) (resource, operation) -> {
62+
throw new IllegalStateException(ERROR_MESSAGE);
63+
});
64+
}
65+
66+
public static AdmissionController<Pod> errorValidatingController() {
67+
return new AdmissionController<>((Mutator<Pod>) (resource, operation) -> {
68+
throw new IllegalStateException(ERROR_MESSAGE);
69+
});
70+
}
71+
72+
public static AsyncAdmissionController<Pod> errorAsyncMutatingController() {
73+
return new AsyncAdmissionController<>((AsyncMutator<Pod>) (resource, operation) -> {
74+
throw new IllegalStateException(ERROR_MESSAGE);
75+
});
76+
}
77+
78+
public static AsyncAdmissionController<Pod> errorAsyncValidatingController() {
79+
return new AsyncAdmissionController<>((Validator<Pod>) (resource, operation) -> {
80+
throw new IllegalStateException(ERROR_MESSAGE);
81+
});
82+
}
83+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package io.javaoperatorsdk.webhook.sample.commons;
2+
3+
import io.javaoperatorsdk.webhook.conversion.AsyncConversionController;
4+
import io.javaoperatorsdk.webhook.conversion.ConversionController;
5+
import io.javaoperatorsdk.webhook.sample.commons.mapper.AsyncV1Mapper;
6+
import io.javaoperatorsdk.webhook.sample.commons.mapper.AsyncV2Mapper;
7+
import io.javaoperatorsdk.webhook.sample.commons.mapper.V1Mapper;
8+
import io.javaoperatorsdk.webhook.sample.commons.mapper.V2Mapper;
9+
10+
public class ConversionControllers {
11+
12+
public static ConversionController conversionController() {
13+
var controller = new ConversionController();
14+
controller.registerMapper(new V1Mapper());
15+
controller.registerMapper(new V2Mapper());
16+
return controller;
17+
}
18+
19+
20+
public static AsyncConversionController asyncConversionController() {
21+
var controller = new AsyncConversionController();
22+
controller.registerMapper(new AsyncV1Mapper());
23+
controller.registerMapper(new AsyncV2Mapper());
24+
return controller;
25+
}
26+
27+
}
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,15 @@
11
package io.javaoperatorsdk.webhook.admission.sample.quarkus.admission;
22

3-
import java.util.HashMap;
4-
import java.util.concurrent.CompletableFuture;
5-
63
import javax.inject.Named;
74
import javax.inject.Singleton;
85

96
import io.fabric8.kubernetes.api.model.Pod;
107
import io.javaoperatorsdk.webhook.admission.AdmissionController;
118
import io.javaoperatorsdk.webhook.admission.AsyncAdmissionController;
12-
import io.javaoperatorsdk.webhook.admission.NotAllowedException;
13-
import io.javaoperatorsdk.webhook.admission.mutation.AsyncMutator;
9+
import io.javaoperatorsdk.webhook.sample.commons.AdmissionControllers;
1410

1511
public class AdmissionControllerConfig {
1612

17-
public static final String APP_NAME_LABEL_KEY = "app.kubernetes.io/name";
18-
1913
public static final String MUTATING_CONTROLLER = "mutatingController";
2014
public static final String VALIDATING_CONTROLLER = "validatingController";
2115
public static final String ASYNC_MUTATING_CONTROLLER = "asyncMutatingController";
@@ -24,49 +18,24 @@ public class AdmissionControllerConfig {
2418
@Singleton
2519
@Named(MUTATING_CONTROLLER)
2620
public AdmissionController<Pod> mutatingController() {
27-
return new AdmissionController<>((resource, operation) -> {
28-
if (resource.getMetadata().getLabels() == null) {
29-
resource.getMetadata().setLabels(new HashMap<>());
30-
}
31-
32-
resource.getMetadata().getLabels().putIfAbsent(APP_NAME_LABEL_KEY, "mutation-test");
33-
return resource;
34-
});
21+
return AdmissionControllers.mutatingController();
3522
}
3623

3724
@Singleton
3825
@Named(VALIDATING_CONTROLLER)
3926
public AdmissionController<Pod> validatingController() {
40-
return new AdmissionController<>((resource, operation) -> {
41-
if (resource.getMetadata().getLabels() == null
42-
|| resource.getMetadata().getLabels().get(APP_NAME_LABEL_KEY) == null) {
43-
throw new NotAllowedException("Missing label: " + APP_NAME_LABEL_KEY);
44-
}
45-
});
27+
return AdmissionControllers.validatingController();
4628
}
4729

4830
@Singleton
4931
@Named(ASYNC_MUTATING_CONTROLLER)
5032
public AsyncAdmissionController<Pod> asyncMutatingController() {
51-
return new AsyncAdmissionController<>(
52-
(AsyncMutator<Pod>) (resource, operation) -> CompletableFuture.supplyAsync(() -> {
53-
if (resource.getMetadata().getLabels() == null) {
54-
resource.getMetadata().setLabels(new HashMap<>());
55-
}
56-
57-
resource.getMetadata().getLabels().putIfAbsent(APP_NAME_LABEL_KEY, "mutation-test");
58-
return resource;
59-
}));
33+
return AdmissionControllers.asyncMutatingController();
6034
}
6135

6236
@Singleton
6337
@Named(ASYNC_VALIDATING_CONTROLLER)
6438
public AsyncAdmissionController<Pod> asyncValidatingController() {
65-
return new AsyncAdmissionController<>((resource, operation) -> {
66-
if (resource.getMetadata().getLabels() == null
67-
|| resource.getMetadata().getLabels().get(APP_NAME_LABEL_KEY) == null) {
68-
throw new NotAllowedException("Missing label: " + APP_NAME_LABEL_KEY);
69-
}
70-
});
39+
return AdmissionControllers.asyncValidatingController();
7140
}
7241
}

samples/quarkus/src/main/java/io/javaoperatorsdk/webhook/admission/sample/quarkus/admission/AdmissionEndpoint.java

-4
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,8 @@ public class AdmissionEndpoint {
1616

1717
public static final String MUTATE_PATH = "mutate";
1818
public static final String VALIDATE_PATH = "validate";
19-
public static final String ERROR_MUTATE_PATH = "error-mutate";
20-
public static final String ERROR_VALIDATE_PATH = "error-validate";
2119
public static final String ASYNC_MUTATE_PATH = "async-mutate";
2220
public static final String ASYNC_VALIDATE_PATH = "async-validate";
23-
public static final String ERROR_ASYNC_MUTATE_PATH = "error-async-mutate";
24-
public static final String ERROR_ASYNC_VALIDATE_PATH = "error-async-validate";
2521

2622
private final AdmissionController<Pod> mutationController;
2723
private final AdmissionController<Pod> validationController;

samples/quarkus/src/main/java/io/javaoperatorsdk/webhook/admission/sample/quarkus/conversion/ConversionControllerConfig.java

+3-13
Original file line numberDiff line numberDiff line change
@@ -4,28 +4,18 @@
44

55
import io.javaoperatorsdk.webhook.conversion.AsyncConversionController;
66
import io.javaoperatorsdk.webhook.conversion.ConversionController;
7-
import io.javaoperatorsdk.webhook.sample.commons.mapper.AsyncV1Mapper;
8-
import io.javaoperatorsdk.webhook.sample.commons.mapper.AsyncV2Mapper;
9-
import io.javaoperatorsdk.webhook.sample.commons.mapper.V1Mapper;
10-
import io.javaoperatorsdk.webhook.sample.commons.mapper.V2Mapper;
7+
import io.javaoperatorsdk.webhook.sample.commons.ConversionControllers;
118

129
public class ConversionControllerConfig {
1310

14-
1511
@Singleton
1612
public ConversionController conversionController() {
17-
var controller = new ConversionController();
18-
controller.registerMapper(new V1Mapper());
19-
controller.registerMapper(new V2Mapper());
20-
return controller;
13+
return ConversionControllers.conversionController();
2114
}
2215

2316
@Singleton
2417
public AsyncConversionController asyncConversionController() {
25-
var controller = new AsyncConversionController();
26-
controller.registerMapper(new AsyncV1Mapper());
27-
controller.registerMapper(new AsyncV2Mapper());
28-
return controller;
18+
return ConversionControllers.asyncConversionController();
2919
}
3020

3121
}

samples/quarkus/src/test/java/io/javaoperatorsdk/webhook/admission/sample/quarkus/admission/AdditionalAdmissionConfig.java

+5-16
Original file line numberDiff line numberDiff line change
@@ -6,47 +6,36 @@
66
import io.fabric8.kubernetes.api.model.Pod;
77
import io.javaoperatorsdk.webhook.admission.AdmissionController;
88
import io.javaoperatorsdk.webhook.admission.AsyncAdmissionController;
9-
import io.javaoperatorsdk.webhook.admission.mutation.AsyncMutator;
10-
import io.javaoperatorsdk.webhook.admission.mutation.Mutator;
11-
import io.javaoperatorsdk.webhook.admission.validation.Validator;
9+
import io.javaoperatorsdk.webhook.sample.commons.AdmissionControllers;
1210

1311
public class AdditionalAdmissionConfig {
1412

1513
public static final String ERROR_MUTATING_CONTROLLER = "errorMutatingController";
1614
public static final String ERROR_VALIDATING_CONTROLLER = "errorValidatingController";
1715
public static final String ERROR_ASYNC_MUTATING_CONTROLLER = "errorAsyncMutatingController";
1816
public static final String ERROR_ASYNC_VALIDATING_CONTROLLER = "errorAsyncValidatingController";
19-
public static final String ERROR_MESSAGE = "Some error happened";
2017

2118
@Singleton
2219
@Named(ERROR_MUTATING_CONTROLLER)
2320
public AdmissionController<Pod> errorMutatingController() {
24-
return new AdmissionController<>((Validator<Pod>) (resource, operation) -> {
25-
throw new IllegalStateException(ERROR_MESSAGE);
26-
});
21+
return AdmissionControllers.errorMutatingController();
2722
}
2823

2924
@Singleton
3025
@Named(ERROR_VALIDATING_CONTROLLER)
3126
public AdmissionController<Pod> errorValidatingController() {
32-
return new AdmissionController<>((Mutator<Pod>) (resource, operation) -> {
33-
throw new IllegalStateException(ERROR_MESSAGE);
34-
});
27+
return AdmissionControllers.errorValidatingController();
3528
}
3629

3730
@Singleton
3831
@Named(ERROR_ASYNC_MUTATING_CONTROLLER)
3932
public AsyncAdmissionController<Pod> errorAsyncMutatingController() {
40-
return new AsyncAdmissionController<>((AsyncMutator<Pod>) (resource, operation) -> {
41-
throw new IllegalStateException(ERROR_MESSAGE);
42-
});
33+
return AdmissionControllers.errorAsyncMutatingController();
4334
}
4435

4536
@Singleton
4637
@Named(ERROR_ASYNC_VALIDATING_CONTROLLER)
4738
public AsyncAdmissionController<Pod> errorAsyncValidatingController() {
48-
return new AsyncAdmissionController<>((Validator<Pod>) (resource, operation) -> {
49-
throw new IllegalStateException(ERROR_MESSAGE);
50-
});
39+
return AdmissionControllers.errorAsyncValidatingController();
5140
}
5241
}

samples/quarkus/src/test/java/io/javaoperatorsdk/webhook/admission/sample/quarkus/admission/AdmissionAdditionalTestEndpoint.java

+11-9
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
package io.javaoperatorsdk.webhook.admission.sample.quarkus.admission;
22

3+
import io.fabric8.kubernetes.api.model.Pod;
4+
import io.fabric8.kubernetes.api.model.admission.v1.AdmissionReview;
5+
import io.javaoperatorsdk.webhook.admission.AdmissionController;
6+
import io.javaoperatorsdk.webhook.admission.AsyncAdmissionController;
7+
import io.smallrye.mutiny.Uni;
8+
39
import javax.inject.Inject;
410
import javax.inject.Named;
511
import javax.ws.rs.Consumes;
@@ -8,23 +14,19 @@
814
import javax.ws.rs.Produces;
915
import javax.ws.rs.core.MediaType;
1016

11-
import io.fabric8.kubernetes.api.model.Pod;
12-
import io.fabric8.kubernetes.api.model.admission.v1.AdmissionReview;
13-
import io.javaoperatorsdk.webhook.admission.AdmissionController;
14-
import io.javaoperatorsdk.webhook.admission.AsyncAdmissionController;
15-
import io.smallrye.mutiny.Uni;
16-
17-
import static io.javaoperatorsdk.webhook.admission.sample.quarkus.admission.AdmissionEndpoint.*;
18-
1917
@Path("/")
2018
public class AdmissionAdditionalTestEndpoint {
2119

20+
public static final String ERROR_ASYNC_MUTATE_PATH = "error-async-mutate";
21+
public static final String ERROR_ASYNC_VALIDATE_PATH = "error-async-validate";
22+
public static final String ERROR_MUTATE_PATH = "error-mutate";
23+
public static final String ERROR_VALIDATE_PATH = "error-validate";
24+
2225
private final AdmissionController<Pod> errorMutationController;
2326
private final AdmissionController<Pod> errorValidationController;
2427
private final AsyncAdmissionController<Pod> errorAsyncMutationController;
2528
private final AsyncAdmissionController<Pod> errorAsyncValidationController;
2629

27-
2830
@Inject
2931
public AdmissionAdditionalTestEndpoint(
3032
@Named(AdditionalAdmissionConfig.ERROR_MUTATING_CONTROLLER) AdmissionController<Pod> errorMutationController,

samples/quarkus/src/test/java/io/javaoperatorsdk/webhook/admission/sample/quarkus/admission/AdmissionEndpointTest.java

+5-4
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import io.quarkus.test.junit.QuarkusTest;
1111
import io.restassured.http.ContentType;
1212

13+
import static io.javaoperatorsdk.webhook.admission.sample.quarkus.admission.AdmissionAdditionalTestEndpoint.*;
1314
import static io.restassured.RestAssured.given;
1415
import static org.hamcrest.CoreMatchers.is;
1516

@@ -33,12 +34,12 @@ void validates() {
3334

3435
@Test
3536
void errorMutates() {
36-
testServerErrorOnPath(AdmissionEndpoint.ERROR_MUTATE_PATH);
37+
testServerErrorOnPath(ERROR_MUTATE_PATH);
3738
}
3839

3940
@Test
4041
void errorValidates() {
41-
testServerErrorOnPath(AdmissionEndpoint.ERROR_VALIDATE_PATH);
42+
testServerErrorOnPath(ERROR_VALIDATE_PATH);
4243
}
4344

4445
@Test
@@ -53,12 +54,12 @@ void asyncValidates() {
5354

5455
@Test
5556
void errorAsyncValidation() {
56-
testServerErrorOnPath(AdmissionEndpoint.ERROR_ASYNC_VALIDATE_PATH);
57+
testServerErrorOnPath(ERROR_ASYNC_VALIDATE_PATH);
5758
}
5859

5960
@Test
6061
void errorAsyncMutation() {
61-
testServerErrorOnPath(AdmissionEndpoint.ERROR_ASYNC_MUTATE_PATH);
62+
testServerErrorOnPath(ERROR_ASYNC_MUTATE_PATH);
6263
}
6364

6465
private void testServerErrorOnPath(String path) {

0 commit comments

Comments
 (0)