Make sure health endpoint is available with no contributor

This commit makes sure that the health endpoint returns a default health
status when no contributors are available. Previously, it was returning
`null` which leads to a 404 when exposed via HTTP.

Closes gh-18676
This commit is contained in:
Stephane Nicoll
2019-11-06 10:07:25 +01:00
parent f57baa71e0
commit 86a1c96224
7 changed files with 48 additions and 3 deletions

View File

@@ -16,6 +16,7 @@
package org.springframework.boot.actuate.health;
import java.util.Collections;
import java.util.Map;
import org.junit.jupiter.api.Test;
@@ -51,6 +52,15 @@ class HealthEndpointTests
assertThat(health).isInstanceOf(SystemHealth.class);
}
@Test
void healthWithNoContributorReturnsUp() {
assertThat(this.registry).isEmpty();
HealthComponent health = create(this.registry,
HealthEndpointGroups.of(mock(HealthEndpointGroup.class), Collections.emptyMap())).health();
assertThat(health.getStatus()).isEqualTo(Status.UP);
assertThat(health).isInstanceOf(Health.class);
}
@Test
void healthWhenPathDoesNotExistReturnsNull() {
this.registry.registerContributor("test", createContributor(this.up));

View File

@@ -16,6 +16,7 @@
package org.springframework.boot.actuate.health;
import java.util.Collections;
import java.util.Map;
import org.junit.jupiter.api.Test;
@@ -58,6 +59,18 @@ class HealthEndpointWebExtensionTests
assertThat(response.getStatus()).isEqualTo(200);
}
@Test
void healthWithNoContributorReturnsUp() {
assertThat(this.registry).isEmpty();
WebEndpointResponse<HealthComponent> response = create(this.registry,
HealthEndpointGroups.of(mock(HealthEndpointGroup.class), Collections.emptyMap()))
.health(ApiVersion.LATEST, SecurityContext.NONE);
assertThat(response.getStatus()).isEqualTo(200);
HealthComponent health = response.getBody();
assertThat(health.getStatus()).isEqualTo(Status.UP);
assertThat(health).isInstanceOf(Health.class);
}
@Test
void healthWhenPathDoesNotExistReturnsHttp404() {
this.registry.registerContributor("test", createContributor(this.up));

View File

@@ -16,6 +16,7 @@
package org.springframework.boot.actuate.health;
import java.util.Collections;
import java.util.Map;
import org.junit.jupiter.api.Test;
@@ -60,6 +61,18 @@ class ReactiveHealthEndpointWebExtensionTests extends
assertThat(response.getStatus()).isEqualTo(200);
}
@Test
void healthWithNoContributorReturnsUp() {
assertThat(this.registry).isEmpty();
WebEndpointResponse<? extends HealthComponent> response = create(this.registry,
HealthEndpointGroups.of(mock(HealthEndpointGroup.class), Collections.emptyMap()))
.health(ApiVersion.LATEST, SecurityContext.NONE).block();
assertThat(response.getStatus()).isEqualTo(200);
HealthComponent health = response.getBody();
assertThat(health.getStatus()).isEqualTo(Status.UP);
assertThat(health).isInstanceOf(Health.class);
}
@Test
void healthWhenPathDoesNotExistReturnsHttp404() {
this.registry.registerContributor("test", createContributor(this.up));