@@ -183,6 +183,88 @@ private HasMetadata createResourceWithVersion(String resourceVersion) {
183183 .build ();
184184 }
185185
186+ @ Test
187+ void addsFinalizer () {
188+ var resource = TestUtils .testCustomResource1 ();
189+ resource .getMetadata ().setResourceVersion ("1" );
190+
191+ when (context .getPrimaryResource ()).thenReturn (resource );
192+
193+ // Mock successful finalizer addition
194+ when (controllerEventSource .eventFilteringUpdateAndCacheResource (
195+ any (), any (UnaryOperator .class )))
196+ .thenAnswer (
197+ invocation -> {
198+ var res = TestUtils .testCustomResource1 ();
199+ res .getMetadata ().setResourceVersion ("2" );
200+ res .addFinalizer (FINALIZER_NAME );
201+ return res ;
202+ });
203+
204+ var result = ReconcileUtils .addFinalizer (context , FINALIZER_NAME );
205+
206+ assertThat (result ).isNotNull ();
207+ assertThat (result .hasFinalizer (FINALIZER_NAME )).isTrue ();
208+ assertThat (result .getMetadata ().getResourceVersion ()).isEqualTo ("2" );
209+ verify (controllerEventSource , times (1 ))
210+ .eventFilteringUpdateAndCacheResource (any (), any (UnaryOperator .class ));
211+ }
212+
213+ @ Test
214+ void addsFinalizerWithSSA () {
215+ var resource = TestUtils .testCustomResource1 ();
216+ resource .getMetadata ().setResourceVersion ("1" );
217+
218+ when (context .getPrimaryResource ()).thenReturn (resource );
219+
220+ // Mock successful SSA finalizer addition
221+ when (controllerEventSource .eventFilteringUpdateAndCacheResource (
222+ any (), any (UnaryOperator .class )))
223+ .thenAnswer (
224+ invocation -> {
225+ var res = TestUtils .testCustomResource1 ();
226+ res .getMetadata ().setResourceVersion ("2" );
227+ res .addFinalizer (FINALIZER_NAME );
228+ return res ;
229+ });
230+
231+ var result = ReconcileUtils .addFinalizerWithSSA (context , FINALIZER_NAME );
232+
233+ assertThat (result ).isNotNull ();
234+ assertThat (result .hasFinalizer (FINALIZER_NAME )).isTrue ();
235+ assertThat (result .getMetadata ().getResourceVersion ()).isEqualTo ("2" );
236+ verify (controllerEventSource , times (1 ))
237+ .eventFilteringUpdateAndCacheResource (any (), any (UnaryOperator .class ));
238+ }
239+
240+ @ Test
241+ void removesFinalizer () {
242+ var resource = TestUtils .testCustomResource1 ();
243+ resource .getMetadata ().setResourceVersion ("1" );
244+ resource .addFinalizer (FINALIZER_NAME );
245+
246+ when (context .getPrimaryResource ()).thenReturn (resource );
247+
248+ // Mock successful finalizer removal
249+ when (controllerEventSource .eventFilteringUpdateAndCacheResource (
250+ any (), any (UnaryOperator .class )))
251+ .thenAnswer (
252+ invocation -> {
253+ var res = TestUtils .testCustomResource1 ();
254+ res .getMetadata ().setResourceVersion ("2" );
255+ // finalizer is removed, so don't add it
256+ return res ;
257+ });
258+
259+ var result = ReconcileUtils .removeFinalizer (context , FINALIZER_NAME );
260+
261+ assertThat (result ).isNotNull ();
262+ assertThat (result .hasFinalizer (FINALIZER_NAME )).isFalse ();
263+ assertThat (result .getMetadata ().getResourceVersion ()).isEqualTo ("2" );
264+ verify (controllerEventSource , times (1 ))
265+ .eventFilteringUpdateAndCacheResource (any (), any (UnaryOperator .class ));
266+ }
267+
186268 @ Test
187269 void retriesAddingFinalizerWithoutSSA () {
188270 var resource = TestUtils .testCustomResource1 ();
0 commit comments