77
88import static org .junit .jupiter .api .Assertions .assertEquals ;
99import static org .junit .jupiter .api .Assertions .assertThrows ;
10- import static org .mockito .ArgumentMatchers .anyString ;
11- import static org .mockito .ArgumentMatchers .eq ;
12- import static org .mockito .Mockito .never ;
13- import static org .mockito .Mockito .verify ;
14- import static org .mockito .Mockito .when ;
15-
16- import java .util .Arrays ;
17- import java .util .Optional ;
18-
19- import io .stackgres .common .StackGresUtil ;
20- import io .stackgres .common .crd .sgbackup .BackupStatus ;
21- import io .stackgres .common .crd .sgbackup .StackGresBackupInformation ;
22- import io .stackgres .common .crd .sgcluster .StackGresCluster ;
23- import io .stackgres .common .crd .sgcluster .StackGresClusterBackupConfiguration ;
24- import io .stackgres .common .fixture .Fixtures ;
25- import io .stackgres .common .resource .CustomResourceFinder ;
10+
2611import io .stackgres .operator .common .StackGresBackupReview ;
2712import io .stackgres .operator .common .fixture .AdmissionReviewFixtures ;
2813import io .stackgres .operatorframework .admissionwebhook .Operation ;
2914import io .stackgres .operatorframework .admissionwebhook .validating .ValidationFailed ;
3015import org .junit .jupiter .api .BeforeEach ;
3116import org .junit .jupiter .api .Test ;
3217import org .junit .jupiter .api .extension .ExtendWith ;
33- import org .mockito .Mock ;
3418import org .mockito .junit .jupiter .MockitoExtension ;
3519
3620@ ExtendWith (MockitoExtension .class )
3721class ClusterReferenceValidatorTest {
3822
3923 private ClusterValidator validator ;
4024
41- @ Mock
42- private CustomResourceFinder <StackGresCluster > clusterFinder ;
43-
44- private StackGresCluster cluster ;
45-
46- private StackGresClusterBackupConfiguration backup ;
47-
4825 @ BeforeEach
4926 void setUp () throws Exception {
5027 validator = new ClusterValidator ();
51- cluster = Fixtures .cluster ().loadDefault ().get ();
52- backup = new StackGresClusterBackupConfiguration ();
53- }
54-
55- @ Test
56- void givenAClusterWithNoBackupConfigReferenceOnCreation_shouldFail () throws ValidationFailed {
57- final StackGresBackupReview review = AdmissionReviewFixtures .backup ().loadCreate ().get ();
58- review .getRequest ().getObject ().getStatus ().setSgBackupConfig (null );
59-
60- String clusterName =
61- review .getRequest ().getObject ().getSpec ().getSgCluster ();
62- String namespace = review .getRequest ().getObject ().getMetadata ().getNamespace ();
63-
64- cluster .getSpec ().getConfigurations ().setBackups (null );
65-
66- when (clusterFinder .findByNameAndNamespace (clusterName , namespace ))
67- .thenReturn (Optional .of (cluster ));
68-
69- ValidationFailed ex = assertThrows (ValidationFailed .class , () -> {
70- validator .validate (review );
71- });
72-
73- String resultMessage = ex .getMessage ();
74-
75- assertEquals ("SGCluster " + clusterName + " has no backup configuration" , resultMessage );
76- }
77-
78- @ Test
79- void givenValidStackGresReferenceOnCreation_shouldNotFail () throws ValidationFailed {
80- final StackGresBackupReview review = AdmissionReviewFixtures .backup ().loadCreate ().get ();
81- review .getRequest ().getObject ().getStatus ().setSgBackupConfig (null );
82-
83- String clusterName =
84- review .getRequest ().getObject ().getSpec ().getSgCluster ();
85- String namespace = review .getRequest ().getObject ().getMetadata ().getNamespace ();
86- cluster .getSpec ().getConfigurations ().setBackups (Arrays .asList (backup ));
87-
88- when (clusterFinder .findByNameAndNamespace (clusterName , namespace ))
89- .thenReturn (Optional .of (cluster ));
90-
91- validator .validate (review );
92-
93- verify (clusterFinder ).findByNameAndNamespace (eq (clusterName ), eq (namespace ));
94- }
95-
96- @ Test
97- void givenComposedStackGresReferenceOnCreationWithRequiredStatus_shouldNotFail ()
98- throws ValidationFailed {
99- final StackGresBackupReview review = AdmissionReviewFixtures .backup ().loadCreate ().get ();
100- review .getRequest ().getObject ().getSpec ().setSgCluster (
101- StackGresUtil .getRelativeId (
102- cluster .getMetadata ().getName (),
103- cluster .getMetadata ().getNamespace (),
104- review .getRequest ().getObject ().getMetadata ().getNamespace ()));
105- review .getRequest ().getObject ().getStatus ().getProcess ()
106- .setStatus (BackupStatus .COMPLETED .status ());
107- review .getRequest ().getObject ().getStatus ()
108- .setBackupInformation (new StackGresBackupInformation ());
109- review .getRequest ().getObject ().getStatus ()
110- .setInternalName ("test" );
111-
112- validator .validate (review );
113- }
114-
115- @ Test
116- void giveInvalidStackGresReferenceOnCreation_shouldFail () {
117- final StackGresBackupReview review = AdmissionReviewFixtures .backup ().loadCreate ().get ();
118- review .getRequest ().getObject ().getStatus ().setSgBackupConfig (null );
119-
120- String clusterName =
121- review .getRequest ().getObject ().getSpec ().getSgCluster ();
122- String namespace = review .getRequest ().getObject ().getMetadata ().getNamespace ();
123-
124- when (clusterFinder .findByNameAndNamespace (clusterName , namespace ))
125- .thenReturn (Optional .empty ());
126-
127- ValidationFailed ex = assertThrows (ValidationFailed .class , () -> {
128- validator .validate (review );
129- });
130-
131- String resultMessage = ex .getMessage ();
132-
133- assertEquals ("SGCluster " + clusterName + " not found" , resultMessage );
134-
135- verify (clusterFinder ).findByNameAndNamespace (anyString (), anyString ());
136- }
137-
138- @ Test
139- void giveInvalidStackGresReferenceOnCreationWithStatusBackupConfig_shouldNotFail ()
140- throws ValidationFailed {
141- final StackGresBackupReview review = AdmissionReviewFixtures .backup ().loadCreate ().get ();
142-
143- String clusterName =
144- review .getRequest ().getObject ().getSpec ().getSgCluster ();
145- String namespace = review .getRequest ().getObject ().getMetadata ().getNamespace ();
146-
147- validator .validate (review );
148-
149- verify (clusterFinder , never ()).findByNameAndNamespace (eq (clusterName ), eq (namespace ));
15028 }
15129
15230 @ Test
@@ -162,9 +40,7 @@ void giveAnAttemptToUpdateReferencedCluster_shouldFail() {
16240
16341 String resultMessage = ex .getMessage ();
16442
165- assertEquals ("Backup sgCluster can not be updated." , resultMessage );
166-
167- verify (clusterFinder , never ()).findByNameAndNamespace (anyString (), anyString ());
43+ assertEquals ("SGBackup sgCluster can not be updated." , resultMessage );
16844 }
16945
17046 @ Test
@@ -176,8 +52,6 @@ void giveAnAttemptToUpdateManagedLifecycle_shouldNotFail() throws ValidationFail
17652 !review .getRequest ().getObject ().getSpec ().getManagedLifecycle ());
17753
17854 validator .validate (review );
179-
180- verify (clusterFinder , never ()).findByNameAndNamespace (anyString (), anyString ());
18155 }
18256
18357 @ Test
@@ -186,8 +60,6 @@ void giveAnAttemptToDelete_shouldNotFail() throws ValidationFailed {
18660 review .getRequest ().setOperation (Operation .DELETE );
18761
18862 validator .validate (review );
189-
190- verify (clusterFinder , never ()).findByNameAndNamespace (anyString (), anyString ());
19163 }
19264
19365}
0 commit comments