Wanaku Assertions Library
Wanaku provides domain-specific assertion helpers designed to keep tests concise and to surface clear, actionable failure messages.
Core Assertions
Locationcore/core-util/src/test/java/ai/wanaku/test/assertions/WanakuAssertions.java
This class is shared across modules via the core-util test-jar (classifier tests).
It provides assertions for:
- HTTP responses (status, success/error)
- Wanaku responses (success/error)
- Tools, Resources, Forwards (registration, equality)
- Containers (running, healthy)
- Namespaces
Operator Assertions (Kubernetes-specific)
Locationapps/wanaku-operator/src/test/java/ai/wanaku/operator/assertions/OperatorAssertions.java
This class provides Kubernetes-specific assertions for testing operator functionality:
assertCondition(Condition, String, String, Long)- Verify Kubernetes condition stateassertServiceLabel(Service, String, String)- Verify service has expected labelassertServicePort(Service, int)- Verify service exposes expected portassertMetadataLabel(HasMetadata, String, String)- Verify resource has expected labelassertEndpointTarget(Endpoints, String, int)- Verify endpoint points to expected host/port
These assertions are specifically for the operator module and use fabric8 Kubernetes client types.
Usage
Core Assertions
Add a static import in your test:
import static ai.wanaku.test.assertions.WanakuAssertions.assertHttpStatus;
import static ai.wanaku.test.assertions.WanakuAssertions.assertNamespaceExists;
import static ai.wanaku.test.assertions.WanakuAssertions.assertSuccessResponse;Operator Assertions (Kubernetes-specific)
For operator tests, use the operator-specific assertions:
import static ai.wanaku.operator.assertions.OperatorAssertions.assertCondition;
import static ai.wanaku.operator.assertions.OperatorAssertions.assertEndpointTarget;
import static ai.wanaku.operator.assertions.OperatorAssertions.assertServiceLabel;
import static ai.wanaku.operator.assertions.OperatorAssertions.assertServicePort;Available helpers
Core Assertions (WanakuAssertions):
assertSuccessResponse(WanakuResponse<?>)assertErrorResponse(WanakuResponse<?>)assertErrorResponse(WanakuResponse<?>, String)assertHttpStatus(Response, int)assertHttpSuccess(Response)assertHttpError(Response)assertToolRegistered(String, List<ToolReference>)assertToolNotRegistered(String, List<ToolReference>)assertToolEquals(ToolReference, ToolReference)assertResourceRegistered(String, List<ResourceReference>)assertResourceNotRegistered(String, List<ResourceReference>)assertResourceEquals(ResourceReference, ResourceReference)assertForwardRegistered(String, List<ForwardReference>)assertForwardEquals(ForwardReference, ForwardReference)assertContainerRunning(GenericContainer<?>)assertContainerHealthy(GenericContainer<?>)assertNamespaceExists(String, List<Namespace>)
Operator Assertions (OperatorAssertions):
assertCondition(Condition, String, String, Long)- Verify Kubernetes conditionassertServiceLabel(Service, String, String)- Verify service labelassertServicePort(Service, int)- Verify service portassertMetadataLabel(HasMetadata, String, String)- Verify resource labelassertEndpointTarget(Endpoints, String, int)- Verify endpoint target
Common patterns
WanakuResponse<ToolReference> response = toolsService.getByName("my-tool");
assertSuccessResponse(response);assertNamespaceExists("default", namespaces);assertHttpStatus(restAssuredResponse, 200);Examples in the Codebase
These tests demonstrate the custom assertions:
cli/src/test/java/ai/wanaku/cli/main/commands/tools/ToolsLabelAddTest.javacli/src/test/java/ai/wanaku/cli/main/commands/tools/ToolsLabelRemoveTest.javawanaku-router/wanaku-barn-backend/src/test/java/ai/wanaku/backend/api/v1/namespaces/NamespacesBeanTest.javawanaku-router/wanaku-barn-backend/src/test/java/ai/wanaku/backend/api/v1/tools/ToolsResourceTest.javawanaku-router/wanaku-barn-backend/src/test/java/ai/wanaku/backend/api/v1/resources/ResourcesResourceTest.javaapps/wanaku-barn-backend/src/test/java/ai/wanaku/backend/api/v1/namespaces/NamespacesBeanTest.javaapps/wanaku-barn-backend/src/test/java/ai/wanaku/backend/api/v1/tools/ToolsResourceTest.javaapps/wanaku-barn-backend/src/test/java/ai/wanaku/backend/api/v1/resources/ResourcesResourceTest.javaapps/wanaku-barn-backend/src/test/java/ai/wanaku/backend/api/v1/prompts/PromptsResourceTest.java
Migration Guide
- Identify repeated assertion patterns (success response, tool/resource presence, namespace existence, HTTP status).
- Replace AssertJ/JUnit assertions with the closest
WanakuAssertionsmethod. - Keep any test-specific assertions (e.g., label map updates) alongside the custom assertions.
- When asserting
WanakuResponse, useassertSuccessResponseorassertErrorResponsesince the response is a record with theerror()accessor (noisSuccess()).
Quick replacements
assertThat(response.error()).isNull()
->assertSuccessResponse(response)assertThat(namespaces).extracting(Namespace::getName).contains("default")
->assertNamespaceExists("default", namespaces)response.then().statusCode(200)
->assertHttpStatus(response, 200)