generated from quarkiverse/quarkiverse-template
-
Notifications
You must be signed in to change notification settings - Fork 49
/
ExposedAppReconcilerTest.java
83 lines (69 loc) · 3.33 KB
/
ExposedAppReconcilerTest.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
package io.halkyon;
import static org.awaitility.Awaitility.await;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;
import java.util.concurrent.TimeUnit;
import javax.inject.Inject;
import org.junit.jupiter.api.Test;
import io.fabric8.kubernetes.api.model.ObjectMetaBuilder;
import io.fabric8.kubernetes.client.server.mock.KubernetesServer;
import io.javaoperatorsdk.operator.Operator;
import io.quarkus.test.junit.QuarkusTest;
import io.quarkus.test.kubernetes.client.KubernetesTestServer;
import io.quarkus.test.kubernetes.client.WithKubernetesTestServer;
@WithKubernetesTestServer
@QuarkusTest
class ExposedAppReconcilerTest {
@KubernetesTestServer
KubernetesServer mockServer;
@Inject
Operator operator;
@Test
void reconcileShouldWork() {
operator.start();
final var app = new ExposedApp();
final var client = mockServer.getClient();
final String namespace = client.getNamespace();
final var metadata = new ObjectMetaBuilder()
.withName("test-app")
.withNamespace(namespace)
.build();
app.setMetadata(metadata);
app.getSpec().setImageRef("group/imageName:tag");
client.resource(app).inNamespace(namespace).create();
await().ignoreException(NullPointerException.class).atMost(10, TimeUnit.SECONDS).untilAsserted(() -> {
// check that we create the deployment
final var deployment = client.apps().deployments()
.inNamespace(metadata.getNamespace())
.withName(metadata.getName()).get();
final var maybeFirstContainer = deployment.getSpec().getTemplate().getSpec().getContainers()
.stream()
.findFirst();
assertThat(maybeFirstContainer.isPresent(), is(true));
final var firstContainer = maybeFirstContainer.get();
assertThat(firstContainer.getImage(), is(app.getSpec().getImageRef()));
// check that the service is created
final var service = client.services()
.inNamespace(metadata.getNamespace())
.withName(metadata.getName()).get();
final var port = service.getSpec().getPorts().get(0).getPort();
assertThat(port, is(8080));
// check that the ingress is created
final var ingress = client.network().v1().ingresses()
.inNamespace(metadata.getNamespace()).withName(metadata.getName()).get();
final var annotations = ingress.getMetadata().getAnnotations();
assertThat(annotations.size(), is(2));
assertThat(annotations.get("kubernetes.io/ingress.class"), is("nginx"));
final var rules = ingress.getSpec().getRules();
assertThat(rules.size(), is(1));
final var paths = rules.get(0).getHttp().getPaths();
assertThat(paths.size(), is(1));
final var path = paths.get(0);
assertThat(path.getPath(), is("/"));
assertThat(path.getPathType(), is("Prefix"));
final var serviceBackend = path.getBackend().getService();
assertThat(serviceBackend.getName(), is(service.getMetadata().getName()));
assertThat(serviceBackend.getPort().getNumber(), is(port));
});
}
}