Skip to content

Commit 237d191

Browse files
authored
refactor: separate error case tests from sample (#40)
1 parent 0d2e40b commit 237d191

File tree

9 files changed

+241
-164
lines changed

9 files changed

+241
-164
lines changed

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

Lines changed: 0 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -11,22 +11,15 @@
1111
import io.javaoperatorsdk.webhook.admission.AsyncAdmissionController;
1212
import io.javaoperatorsdk.webhook.admission.NotAllowedException;
1313
import io.javaoperatorsdk.webhook.admission.mutation.AsyncMutator;
14-
import io.javaoperatorsdk.webhook.admission.mutation.Mutator;
15-
import io.javaoperatorsdk.webhook.admission.validation.Validator;
1614

1715
public class AdmissionControllerConfig {
1816

1917
public static final String APP_NAME_LABEL_KEY = "app.kubernetes.io/name";
2018

2119
public static final String MUTATING_CONTROLLER = "mutatingController";
2220
public static final String VALIDATING_CONTROLLER = "validatingController";
23-
public static final String ERROR_MUTATING_CONTROLLER = "errorMutatingController";
24-
public static final String ERROR_VALIDATING_CONTROLLER = "errorValidatingController";
2521
public static final String ASYNC_MUTATING_CONTROLLER = "asyncMutatingController";
2622
public static final String ASYNC_VALIDATING_CONTROLLER = "asyncValidatingController";
27-
public static final String ERROR_ASYNC_MUTATING_CONTROLLER = "errorAsyncMutatingController";
28-
public static final String ERROR_ASYNC_VALIDATING_CONTROLLER = "errorAsyncValidatingController";
29-
public static final String ERROR_MESSAGE = "Some error happened";
3023

3124
@Singleton
3225
@Named(MUTATING_CONTROLLER)
@@ -76,37 +69,4 @@ public AsyncAdmissionController<Pod> asyncValidatingController() {
7669
}
7770
});
7871
}
79-
80-
@Singleton
81-
@Named(ERROR_MUTATING_CONTROLLER)
82-
public AdmissionController<Pod> errorMutatingController() {
83-
return new AdmissionController<>((Validator<Pod>) (resource, operation) -> {
84-
throw new IllegalStateException(ERROR_MESSAGE);
85-
});
86-
}
87-
88-
@Singleton
89-
@Named(ERROR_VALIDATING_CONTROLLER)
90-
public AdmissionController<Pod> errorValidatingController() {
91-
return new AdmissionController<>((Mutator<Pod>) (resource, operation) -> {
92-
throw new IllegalStateException(ERROR_MESSAGE);
93-
});
94-
}
95-
96-
@Singleton
97-
@Named(ERROR_ASYNC_MUTATING_CONTROLLER)
98-
public AsyncAdmissionController<Pod> errorAsyncMutatingController() {
99-
return new AsyncAdmissionController<>((AsyncMutator<Pod>) (resource, operation) -> {
100-
throw new IllegalStateException(ERROR_MESSAGE);
101-
});
102-
}
103-
104-
@Singleton
105-
@Named(ERROR_ASYNC_VALIDATING_CONTROLLER)
106-
public AsyncAdmissionController<Pod> errorAsyncValidatingController() {
107-
return new AsyncAdmissionController<>((Validator<Pod>) (resource, operation) -> {
108-
throw new IllegalStateException(ERROR_MESSAGE);
109-
});
110-
}
111-
11272
}

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

Lines changed: 1 addition & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -25,31 +25,19 @@ public class AdmissionEndpoint {
2525

2626
private final AdmissionController<Pod> mutationController;
2727
private final AdmissionController<Pod> validationController;
28-
private final AdmissionController<Pod> errorMutationController;
29-
private final AdmissionController<Pod> errorValidationController;
3028
private final AsyncAdmissionController<Pod> asyncMutationController;
3129
private final AsyncAdmissionController<Pod> asyncValidationController;
32-
private final AsyncAdmissionController<Pod> errorAsyncMutationController;
33-
private final AsyncAdmissionController<Pod> errorAsyncValidationController;
3430

3531
@Inject
3632
public AdmissionEndpoint(
3733
@Named(AdmissionControllerConfig.MUTATING_CONTROLLER) AdmissionController<Pod> mutationController,
3834
@Named(AdmissionControllerConfig.VALIDATING_CONTROLLER) AdmissionController<Pod> validationController,
39-
@Named(AdmissionControllerConfig.ERROR_MUTATING_CONTROLLER) AdmissionController<Pod> errorMutationController,
40-
@Named(AdmissionControllerConfig.ERROR_VALIDATING_CONTROLLER) AdmissionController<Pod> errorValidationController,
4135
@Named(AdmissionControllerConfig.ASYNC_MUTATING_CONTROLLER) AsyncAdmissionController<Pod> asyncMutationController,
42-
@Named(AdmissionControllerConfig.ASYNC_VALIDATING_CONTROLLER) AsyncAdmissionController<Pod> asyncValidationController,
43-
@Named(AdmissionControllerConfig.ERROR_ASYNC_MUTATING_CONTROLLER) AsyncAdmissionController<Pod> errorAsyncMutationController,
44-
@Named(AdmissionControllerConfig.ERROR_ASYNC_VALIDATING_CONTROLLER) AsyncAdmissionController<Pod> errorAsyncValidationController) {
36+
@Named(AdmissionControllerConfig.ASYNC_VALIDATING_CONTROLLER) AsyncAdmissionController<Pod> asyncValidationController) {
4537
this.mutationController = mutationController;
4638
this.validationController = validationController;
47-
this.errorMutationController = errorMutationController;
48-
this.errorValidationController = errorValidationController;
4939
this.asyncMutationController = asyncMutationController;
5040
this.asyncValidationController = asyncValidationController;
51-
this.errorAsyncMutationController = errorAsyncMutationController;
52-
this.errorAsyncValidationController = errorAsyncValidationController;
5341
}
5442

5543
@POST
@@ -85,39 +73,4 @@ public Uni<AdmissionReview> asyncValidate(AdmissionReview admissionReview) {
8573
return Uni.createFrom()
8674
.completionStage(() -> this.asyncValidationController.handle(admissionReview));
8775
}
88-
89-
@POST
90-
@Path(ERROR_ASYNC_MUTATE_PATH)
91-
@Consumes(MediaType.APPLICATION_JSON)
92-
@Produces(MediaType.APPLICATION_JSON)
93-
public Uni<AdmissionReview> errorAsyncMutate(AdmissionReview admissionReview) {
94-
return Uni.createFrom()
95-
.completionStage(() -> this.errorAsyncMutationController.handle(admissionReview));
96-
}
97-
98-
@POST
99-
@Path(ERROR_ASYNC_VALIDATE_PATH)
100-
@Consumes(MediaType.APPLICATION_JSON)
101-
@Produces(MediaType.APPLICATION_JSON)
102-
public Uni<AdmissionReview> errorAsyncValidate(AdmissionReview admissionReview) {
103-
return Uni.createFrom()
104-
.completionStage(() -> this.errorAsyncValidationController.handle(admissionReview));
105-
}
106-
107-
@POST
108-
@Path(ERROR_MUTATE_PATH)
109-
@Consumes(MediaType.APPLICATION_JSON)
110-
@Produces(MediaType.APPLICATION_JSON)
111-
public AdmissionReview errorMutate(AdmissionReview admissionReview) {
112-
return errorMutationController.handle(admissionReview);
113-
}
114-
115-
@POST
116-
@Path(ERROR_VALIDATE_PATH)
117-
@Consumes(MediaType.APPLICATION_JSON)
118-
@Produces(MediaType.APPLICATION_JSON)
119-
public AdmissionReview errorValidate(AdmissionReview admissionReview) {
120-
return errorValidationController.handle(admissionReview);
121-
}
122-
12376
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package io.javaoperatorsdk.webhook.admission.sample.quarkus.admission;
2+
3+
import javax.inject.Named;
4+
import javax.inject.Singleton;
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.mutation.AsyncMutator;
10+
import io.javaoperatorsdk.webhook.admission.mutation.Mutator;
11+
import io.javaoperatorsdk.webhook.admission.validation.Validator;
12+
13+
public class AdditionalAdmissionConfig {
14+
15+
public static final String ERROR_MUTATING_CONTROLLER = "errorMutatingController";
16+
public static final String ERROR_VALIDATING_CONTROLLER = "errorValidatingController";
17+
public static final String ERROR_ASYNC_MUTATING_CONTROLLER = "errorAsyncMutatingController";
18+
public static final String ERROR_ASYNC_VALIDATING_CONTROLLER = "errorAsyncValidatingController";
19+
public static final String ERROR_MESSAGE = "Some error happened";
20+
21+
@Singleton
22+
@Named(ERROR_MUTATING_CONTROLLER)
23+
public AdmissionController<Pod> errorMutatingController() {
24+
return new AdmissionController<>((Validator<Pod>) (resource, operation) -> {
25+
throw new IllegalStateException(ERROR_MESSAGE);
26+
});
27+
}
28+
29+
@Singleton
30+
@Named(ERROR_VALIDATING_CONTROLLER)
31+
public AdmissionController<Pod> errorValidatingController() {
32+
return new AdmissionController<>((Mutator<Pod>) (resource, operation) -> {
33+
throw new IllegalStateException(ERROR_MESSAGE);
34+
});
35+
}
36+
37+
@Singleton
38+
@Named(ERROR_ASYNC_MUTATING_CONTROLLER)
39+
public AsyncAdmissionController<Pod> errorAsyncMutatingController() {
40+
return new AsyncAdmissionController<>((AsyncMutator<Pod>) (resource, operation) -> {
41+
throw new IllegalStateException(ERROR_MESSAGE);
42+
});
43+
}
44+
45+
@Singleton
46+
@Named(ERROR_ASYNC_VALIDATING_CONTROLLER)
47+
public AsyncAdmissionController<Pod> errorAsyncValidatingController() {
48+
return new AsyncAdmissionController<>((Validator<Pod>) (resource, operation) -> {
49+
throw new IllegalStateException(ERROR_MESSAGE);
50+
});
51+
}
52+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
package io.javaoperatorsdk.webhook.admission.sample.quarkus.admission;
2+
3+
import javax.inject.Inject;
4+
import javax.inject.Named;
5+
import javax.ws.rs.Consumes;
6+
import javax.ws.rs.POST;
7+
import javax.ws.rs.Path;
8+
import javax.ws.rs.Produces;
9+
import javax.ws.rs.core.MediaType;
10+
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+
19+
@Path("/")
20+
public class AdmissionAdditionalTestEndpoint {
21+
22+
private final AdmissionController<Pod> errorMutationController;
23+
private final AdmissionController<Pod> errorValidationController;
24+
private final AsyncAdmissionController<Pod> errorAsyncMutationController;
25+
private final AsyncAdmissionController<Pod> errorAsyncValidationController;
26+
27+
28+
@Inject
29+
public AdmissionAdditionalTestEndpoint(
30+
@Named(AdditionalAdmissionConfig.ERROR_MUTATING_CONTROLLER) AdmissionController<Pod> errorMutationController,
31+
@Named(AdditionalAdmissionConfig.ERROR_VALIDATING_CONTROLLER) AdmissionController<Pod> errorValidationController,
32+
@Named(AdditionalAdmissionConfig.ERROR_ASYNC_MUTATING_CONTROLLER) AsyncAdmissionController<Pod> errorAsyncMutationController,
33+
@Named(AdditionalAdmissionConfig.ERROR_ASYNC_VALIDATING_CONTROLLER) AsyncAdmissionController<Pod> errorAsyncValidationController) {
34+
this.errorMutationController = errorMutationController;
35+
this.errorValidationController = errorValidationController;
36+
this.errorAsyncMutationController = errorAsyncMutationController;
37+
this.errorAsyncValidationController = errorAsyncValidationController;
38+
}
39+
40+
@POST
41+
@Path(ERROR_ASYNC_MUTATE_PATH)
42+
@Consumes(MediaType.APPLICATION_JSON)
43+
@Produces(MediaType.APPLICATION_JSON)
44+
public Uni<AdmissionReview> errorAsyncMutate(AdmissionReview admissionReview) {
45+
return Uni.createFrom()
46+
.completionStage(() -> this.errorAsyncMutationController.handle(admissionReview));
47+
}
48+
49+
@POST
50+
@Path(ERROR_ASYNC_VALIDATE_PATH)
51+
@Consumes(MediaType.APPLICATION_JSON)
52+
@Produces(MediaType.APPLICATION_JSON)
53+
public Uni<AdmissionReview> errorAsyncValidate(AdmissionReview admissionReview) {
54+
return Uni.createFrom()
55+
.completionStage(() -> this.errorAsyncValidationController.handle(admissionReview));
56+
}
57+
58+
@POST
59+
@Path(ERROR_MUTATE_PATH)
60+
@Consumes(MediaType.APPLICATION_JSON)
61+
@Produces(MediaType.APPLICATION_JSON)
62+
public AdmissionReview errorMutate(AdmissionReview admissionReview) {
63+
return errorMutationController.handle(admissionReview);
64+
}
65+
66+
@POST
67+
@Path(ERROR_VALIDATE_PATH)
68+
@Consumes(MediaType.APPLICATION_JSON)
69+
@Produces(MediaType.APPLICATION_JSON)
70+
public AdmissionReview errorValidate(AdmissionReview admissionReview) {
71+
return errorValidationController.handle(admissionReview);
72+
}
73+
}

samples/spring-boot/src/main/java/io/javaoperatorsdk/webhook/sample/springboot/admission/AdmissionConfig.java

Lines changed: 0 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -11,22 +11,18 @@
1111
import io.javaoperatorsdk.webhook.admission.AsyncAdmissionController;
1212
import io.javaoperatorsdk.webhook.admission.NotAllowedException;
1313
import io.javaoperatorsdk.webhook.admission.mutation.AsyncMutator;
14-
import io.javaoperatorsdk.webhook.admission.mutation.Mutator;
15-
import io.javaoperatorsdk.webhook.admission.validation.Validator;
1614

1715
@Configuration
1816
public class AdmissionConfig {
1917

2018
public static final String APP_NAME_LABEL_KEY = "app.kubernetes.io/name";
21-
public static final String ERROR_MESSAGE = "Some error happened";
2219

2320
@Bean
2421
public AdmissionController<Pod> mutatingController() {
2522
return new AdmissionController<>((resource, operation) -> {
2623
if (resource.getMetadata().getLabels() == null) {
2724
resource.getMetadata().setLabels(new HashMap<>());
2825
}
29-
3026
resource.getMetadata().getLabels().putIfAbsent(APP_NAME_LABEL_KEY, "mutation-test");
3127
return resource;
3228
});
@@ -42,19 +38,6 @@ public AdmissionController<Pod> validatingController() {
4238
});
4339
}
4440

45-
@Bean
46-
public AdmissionController<Pod> errorMutatingController() {
47-
return new AdmissionController<>((Validator<Pod>) (resource, operation) -> {
48-
throw new IllegalStateException(ERROR_MESSAGE);
49-
});
50-
}
51-
52-
@Bean
53-
public AdmissionController<Pod> errorValidatingController() {
54-
return new AdmissionController<>((Mutator<Pod>) (resource, operation) -> {
55-
throw new IllegalStateException(ERROR_MESSAGE);
56-
});
57-
}
5841

5942
@Bean
6043
public AsyncAdmissionController<Pod> asyncMutatingController() {
@@ -78,20 +61,4 @@ public AsyncAdmissionController<Pod> asyncValidatingController() {
7861
}
7962
});
8063
}
81-
82-
@Bean
83-
public AsyncAdmissionController<Pod> errorAsyncMutatingController() {
84-
return new AsyncAdmissionController<>((AsyncMutator<Pod>) (resource, operation) -> {
85-
throw new IllegalStateException(ERROR_MESSAGE);
86-
});
87-
}
88-
89-
@Bean
90-
public AsyncAdmissionController<Pod> errorAsyncValidatingController() {
91-
return new AsyncAdmissionController<>((Validator<Pod>) (resource, operation) -> {
92-
throw new IllegalStateException(ERROR_MESSAGE);
93-
});
94-
}
95-
96-
9764
}

0 commit comments

Comments
 (0)