Error handling if public ips are missing
All checks were successful
ci/woodpecker/tag/push-image Pipeline was successful
ci/woodpecker/push/build Pipeline was successful

This commit is contained in:
Ryan Harg 2024-12-03 09:43:59 +01:00
parent 523936efb4
commit 5a0e87be54
2 changed files with 23 additions and 11 deletions

View file

@ -53,6 +53,10 @@ public class Updater {
Addresses publicIps = publicIpLookup.get(); Addresses publicIps = publicIpLookup.get();
log.debugf("Public ips - v4: %s, v6: %s", publicIps.v4(), publicIps.v6()); log.debugf("Public ips - v4: %s, v6: %s", publicIps.v4(), publicIps.v6());
if (publicIps.v4().isEmpty() && publicIps.v6().isEmpty()) {
log.error("No public ips present, stopping");
return;
}
config.forEach(cfg -> { config.forEach(cfg -> {

View file

@ -17,6 +17,7 @@ import org.mockito.junit.jupiter.MockitoExtension;
import java.time.Duration; import java.time.Duration;
import java.util.List; import java.util.List;
import java.util.Optional;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.*; import static org.mockito.Mockito.*;
@ -40,6 +41,7 @@ class UpdaterTest {
@Test @Test
void should_throw_exception_if_config_is_empty() { void should_throw_exception_if_config_is_empty() {
Config config = new Config(); Config config = new Config();
PublicIpLookup publicIpLookup = mock(PublicIpLookup.class);
Updater updater = new Updater(dyndnsProviderRegistry, publicIpLookup, dnsResolver, config, backoff); Updater updater = new Updater(dyndnsProviderRegistry, publicIpLookup, dnsResolver, config, backoff);
Assertions.assertThrows(IllegalStateException.class, updater::run); Assertions.assertThrows(IllegalStateException.class, updater::run);
} }
@ -47,7 +49,6 @@ class UpdaterTest {
@Test @Test
void should_process_all_config_entries() { void should_process_all_config_entries() {
Addresses ips = new Addresses("ipv4", "ipv6"); Addresses ips = new Addresses("ipv4", "ipv6");
when(publicIpLookup.get()).thenReturn(ips); when(publicIpLookup.get()).thenReturn(ips);
when(dnsResolver.resolve(any())).thenReturn(ips); when(dnsResolver.resolve(any())).thenReturn(ips);
@ -89,17 +90,27 @@ class UpdaterTest {
when(dyndnsProviderRegistry.get("ddnss")).thenReturn(ddnss); when(dyndnsProviderRegistry.get("ddnss")).thenReturn(ddnss);
Addresses publicIps = new Addresses("ipv4", "ipv6"); Addresses publicIps = new Addresses("ipv4", "ipv6");
when(publicIpLookup.get()).thenReturn(publicIps); when(publicIpLookup.get()).thenReturn(publicIps);
when(dnsResolver.resolve("example.org")).thenReturn(new Addresses("registered_ipv4", "registered_ipv6")); when(dnsResolver.resolve("example.org")).thenReturn(new Addresses("registered_ipv4", "registered_ipv6"));
Updater updater = new Updater(dyndnsProviderRegistry, publicIpLookup, dnsResolver, ddnssConfig, backoff); Updater updater = new Updater(dyndnsProviderRegistry, publicIpLookup, dnsResolver, ddnssConfig, backoff);
updater.run(); updater.run();
verify(ddnss).update( verify(ddnss).update("example.org", publicIps, new DyndnsAuth(null, null, "token"));
"example.org", }
publicIps,
new DyndnsAuth(null, null, "token") @Test
); void should_not_trigger_dyndns_update_if_public_ips_are_empty() {
Addresses publicIps = new Addresses(Optional.empty(), Optional.empty());
when(publicIpLookup.get()).thenReturn(publicIps);
Updater updater = new Updater(dyndnsProviderRegistry, publicIpLookup, dnsResolver, ddnssConfig, backoff);
updater.run();
verify(dyndnsProviderRegistry, never()).get(any());
} }
@Test @Test
@ -110,6 +121,7 @@ class UpdaterTest {
when(dyndnsProviderRegistry.get("ddnss")).thenReturn(ddnss); when(dyndnsProviderRegistry.get("ddnss")).thenReturn(ddnss);
Addresses publicIps = new Addresses("ipv4", "ipv6"); Addresses publicIps = new Addresses("ipv4", "ipv6");
when(publicIpLookup.get()).thenReturn(publicIps); when(publicIpLookup.get()).thenReturn(publicIps);
when(dnsResolver.resolve("example.org")).thenReturn(new Addresses("registered_ipv4", "registered_ipv6")); when(dnsResolver.resolve("example.org")).thenReturn(new Addresses("registered_ipv4", "registered_ipv6"));
@ -118,11 +130,7 @@ class UpdaterTest {
updater.run(); updater.run();
verify(ddnss, times(1)).update( verify(ddnss, times(1)).update("example.org", publicIps, new DyndnsAuth(null, null, "token"));
"example.org",
publicIps,
new DyndnsAuth(null, null, "token")
);
} }
} }