1
1
package io .javaoperatorsdk .admissioncontroller ;
2
2
3
+ import java .io .IOException ;
4
+ import java .io .InputStream ;
5
+ import java .util .Base64 ;
6
+ import java .util .UUID ;
7
+
8
+ import org .junit .jupiter .api .Test ;
9
+
3
10
import io .fabric8 .kubernetes .api .model .HasMetadata ;
4
11
import io .fabric8 .kubernetes .api .model .admission .v1 .AdmissionRequest ;
5
12
import io .fabric8 .kubernetes .api .model .admission .v1 .AdmissionReview ;
6
13
import io .fabric8 .kubernetes .api .model .apps .Deployment ;
7
14
import io .fabric8 .kubernetes .client .utils .Serialization ;
8
- import org .junit .jupiter .api .Test ;
9
-
10
- import java .io .IOException ;
11
- import java .io .InputStream ;
12
- import java .util .Base64 ;
13
- import java .util .UUID ;
14
15
15
16
import static org .assertj .core .api .Assertions .assertThat ;
16
- import static org .assertj .core .api .Assertions .in ;
17
17
18
18
class AdmissionControllerTest {
19
19
20
- public static final String MISSING_REQUIRED_LABEL = "Missing required label." ;
21
- public static final String LABEL_KEY = "app.kubernetes.io/name" ;
22
- public static final String LABEL_TEST_VALUE = "mutation-test" ;
20
+ public static final String MISSING_REQUIRED_LABEL = "Missing required label." ;
21
+ public static final String LABEL_KEY = "app.kubernetes.io/name" ;
22
+ public static final String LABEL_TEST_VALUE = "mutation-test" ;
23
23
24
- @ Test
25
- public void validatesResource () {
26
- AdmissionController <HasMetadata > admissionController = new AdmissionController <>((resource , operation ) -> {
27
- if (resource .getMetadata ().getLabels ().get (LABEL_KEY ) == null ) {
28
- throw new NotAllowedException (MISSING_REQUIRED_LABEL );
29
- }
24
+ @ Test
25
+ public void validatesResource () {
26
+ AdmissionController <HasMetadata > admissionController =
27
+ new AdmissionController <>((resource , operation ) -> {
28
+ if (resource .getMetadata ().getLabels ().get (LABEL_KEY ) == null ) {
29
+ throw new NotAllowedException (MISSING_REQUIRED_LABEL );
30
+ }
30
31
});
31
- var inputAdmissionReview = createTestAdmissionReview ();
32
+ var inputAdmissionReview = createTestAdmissionReview ();
32
33
33
- var response = admissionController .handle (inputAdmissionReview );
34
+ var response = admissionController .handle (inputAdmissionReview );
34
35
35
- assertThat (response .getResponse ().getUid ()).isEqualTo (inputAdmissionReview .getRequest ().getUid ());
36
- assertThat (response .getResponse ().getStatus ().getCode ()).isEqualTo (403 );
37
- assertThat (response .getResponse ().getStatus ().getMessage ()).isEqualTo (MISSING_REQUIRED_LABEL );
38
- assertThat (response .getResponse ().getAllowed ()).isFalse ();
39
- }
36
+ assertThat (response .getResponse ().getUid ())
37
+ .isEqualTo (inputAdmissionReview .getRequest ().getUid ());
38
+ assertThat (response .getResponse ().getStatus ().getCode ()).isEqualTo (403 );
39
+ assertThat (response .getResponse ().getStatus ().getMessage ()).isEqualTo (MISSING_REQUIRED_LABEL );
40
+ assertThat (response .getResponse ().getAllowed ()).isFalse ();
41
+ }
40
42
41
- @ Test
42
- public void mutatesResource () {
43
- AdmissionController <HasMetadata > admissionController = new AdmissionController <>((resource , operation ) -> {
44
- resource .getMetadata ().getLabels ().putIfAbsent (LABEL_KEY , LABEL_TEST_VALUE );
45
- return resource ;
43
+ @ Test
44
+ public void mutatesResource () {
45
+ AdmissionController <HasMetadata > admissionController =
46
+ new AdmissionController <>((resource , operation ) -> {
47
+ resource .getMetadata ().getLabels ().putIfAbsent (LABEL_KEY , LABEL_TEST_VALUE );
48
+ return resource ;
46
49
});
47
- var inputAdmissionReview = createTestAdmissionReview ();
50
+ var inputAdmissionReview = createTestAdmissionReview ();
48
51
49
- var response = admissionController .handle (inputAdmissionReview );
52
+ var response = admissionController .handle (inputAdmissionReview );
50
53
51
- assertThat (response .getResponse ().getAllowed ()).isTrue ();
52
- String patch = new String (Base64 .getDecoder ().decode (response .getResponse ().getPatch ()));
53
- assertThat (patch )
54
- .isEqualTo ("[{\" op\" :\" add\" ,\" path\" :\" /metadata/labels/app.kubernetes.io~1name\" ,\" value\" :\" mutation-test\" }]" );
55
- }
54
+ assertThat (response .getResponse ().getAllowed ()).isTrue ();
55
+ String patch = new String (Base64 .getDecoder ().decode (response .getResponse ().getPatch ()));
56
+ assertThat (patch )
57
+ .isEqualTo (
58
+ "[{\" op\" :\" add\" ,\" path\" :\" /metadata/labels/app.kubernetes.io~1name\" ,\" value\" :\" mutation-test\" }]" );
59
+ }
56
60
57
- private AdmissionReview createTestAdmissionReview () {
58
- AdmissionReview admissionReview = new AdmissionReview ();
59
- AdmissionRequest request = new AdmissionRequest ();
60
- admissionReview .setRequest (request );
61
- request .setOperation (Operation .CREATE .name ());
62
- request .setUid (UUID .randomUUID ().toString ());
63
- Deployment deployment = null ;
64
- try (InputStream is = getClass ().getResourceAsStream ("deployment.yaml" )) {
65
- deployment = Serialization .unmarshal (is , Deployment .class );
66
- request .setObject (deployment );
67
- } catch (IOException e ) {
68
- throw new IllegalStateException (e );
69
- }
70
- return admissionReview ;
61
+ private AdmissionReview createTestAdmissionReview () {
62
+ AdmissionReview admissionReview = new AdmissionReview ();
63
+ AdmissionRequest request = new AdmissionRequest ();
64
+ admissionReview .setRequest (request );
65
+ request .setOperation (Operation .CREATE .name ());
66
+ request .setUid (UUID .randomUUID ().toString ());
67
+ Deployment deployment = null ;
68
+ try (InputStream is = getClass ().getResourceAsStream ("deployment.yaml" )) {
69
+ deployment = Serialization .unmarshal (is , Deployment .class );
70
+ request .setObject (deployment );
71
+ } catch (IOException e ) {
72
+ throw new IllegalStateException (e );
71
73
}
74
+ return admissionReview ;
75
+ }
72
76
73
- }
77
+ }
0 commit comments