Skip to content

Commit 8afa94e

Browse files
committed
additional unit tests
Signed-off-by: Attila Mészáros <[email protected]>
1 parent 8a8a353 commit 8afa94e

File tree

2 files changed

+89
-1
lines changed

2 files changed

+89
-1
lines changed

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/ReconcileUtils.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -467,7 +467,13 @@ public static <P extends HasMetadata> P removeFinalizer(
467467
r.removeFinalizer(finalizerName);
468468
return r;
469469
},
470-
r -> r != null && r.hasFinalizer(finalizerName));
470+
r -> {
471+
if (r == null) {
472+
log.warn("Cannot remove finalizer since resource not exists.");
473+
return false;
474+
}
475+
return r.hasFinalizer(finalizerName);
476+
});
471477
}
472478

473479
/**

operator-framework-core/src/test/java/io/javaoperatorsdk/operator/api/reconciler/ReconcileUtilsTest.java

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)