|
3 | 3 | import org.junit.jupiter.api.Test;
|
4 | 4 | import org.junit.jupiter.api.extension.RegisterExtension;
|
5 | 5 |
|
| 6 | +import io.fabric8.kubernetes.api.model.ConfigMap; |
| 7 | +import io.fabric8.kubernetes.api.model.ObjectMetaBuilder; |
6 | 8 | import io.javaoperatorsdk.operator.junit.LocallyRunOperatorExtension;
|
| 9 | +import io.javaoperatorsdk.operator.sample.externalstate.ExternalStateCustomResource; |
7 | 10 | import io.javaoperatorsdk.operator.sample.externalstate.ExternalStateReconciler;
|
| 11 | +import io.javaoperatorsdk.operator.sample.externalstate.ExternalStateSpec; |
| 12 | +import io.javaoperatorsdk.operator.support.ExternalIDGenServiceMock; |
| 13 | + |
| 14 | +import static io.javaoperatorsdk.operator.sample.externalstate.ExternalStateReconciler.ID_KEY; |
| 15 | +import static org.assertj.core.api.Assertions.assertThat; |
| 16 | +import static org.awaitility.Awaitility.await; |
8 | 17 |
|
9 | 18 | class ExternalStateIT {
|
10 | 19 |
|
| 20 | + private static final String TEST_RESOURCE_NAME = "test1"; |
| 21 | + |
| 22 | + public static final String INITIAL_TEST_DATA = "initialTestData"; |
| 23 | + public static final String UPDATED_DATA = "updatedData"; |
| 24 | + |
| 25 | + private ExternalIDGenServiceMock externalService = ExternalIDGenServiceMock.getInstance(); |
| 26 | + |
11 | 27 | @RegisterExtension
|
12 | 28 | LocallyRunOperatorExtension operator =
|
13 | 29 | LocallyRunOperatorExtension.builder().withReconciler(ExternalStateReconciler.class)
|
14 | 30 | .build();
|
15 | 31 |
|
16 | 32 | @Test
|
17 | 33 | public void reconcilesResourceWithPersistentState() {
|
| 34 | + var resource = operator.create(testResource()); |
| 35 | + assertResourcesCreated(resource, INITIAL_TEST_DATA); |
| 36 | + |
| 37 | + resource.getSpec().setData(UPDATED_DATA); |
| 38 | + operator.replace(resource); |
| 39 | + assertResourcesCreated(resource, UPDATED_DATA); |
18 | 40 |
|
| 41 | + operator.delete(resource); |
| 42 | + assertResourcesDeleted(resource); |
19 | 43 | }
|
20 | 44 |
|
| 45 | + private void assertResourcesDeleted(ExternalStateCustomResource resource) { |
| 46 | + await().untilAsserted(() -> { |
| 47 | + var cm = operator.get(ConfigMap.class, resource.getMetadata().getName()); |
| 48 | + var resources = externalService.listResources(); |
| 49 | + assertThat(cm).isNull(); |
| 50 | + assertThat(resources).isEmpty(); |
| 51 | + }); |
| 52 | + } |
| 53 | + |
| 54 | + private void assertResourcesCreated(ExternalStateCustomResource resource, |
| 55 | + String initialTestData) { |
| 56 | + await().untilAsserted(() -> { |
| 57 | + var cm = operator.get(ConfigMap.class, resource.getMetadata().getName()); |
| 58 | + var resources = externalService.listResources(); |
| 59 | + assertThat(resources).hasSize(1); |
| 60 | + var extRes = externalService.listResources().get(0); |
| 61 | + assertThat(extRes.getData()).isEqualTo(initialTestData); |
| 62 | + assertThat(cm).isNotNull(); |
| 63 | + assertThat(cm.getData().get(ID_KEY)).isEqualTo(extRes.getId()); |
| 64 | + }); |
| 65 | + } |
| 66 | + |
| 67 | + private ExternalStateCustomResource testResource() { |
| 68 | + var res = new ExternalStateCustomResource(); |
| 69 | + res.setMetadata(new ObjectMetaBuilder() |
| 70 | + .withName(TEST_RESOURCE_NAME) |
| 71 | + .build()); |
| 72 | + |
| 73 | + res.setSpec(new ExternalStateSpec()); |
| 74 | + res.getSpec().setData(INITIAL_TEST_DATA); |
| 75 | + return res; |
| 76 | + } |
21 | 77 | }
|
0 commit comments