diff --git a/web/src/integrationTest/java/de/cotto/lndmanagej/controller/NodeControllerIT.java b/web/src/integrationTest/java/de/cotto/lndmanagej/controller/NodeControllerIT.java index a07bf60e..96cf072d 100644 --- a/web/src/integrationTest/java/de/cotto/lndmanagej/controller/NodeControllerIT.java +++ b/web/src/integrationTest/java/de/cotto/lndmanagej/controller/NodeControllerIT.java @@ -98,7 +98,7 @@ class NodeControllerIT { } @Test - void getOpenChannelIds_for_peer() throws Exception { + void getOpenChannelIds() throws Exception { when(channelService.getOpenChannelsWith(PUBKEY_2)).thenReturn(Set.of(LOCAL_OPEN_CHANNEL, LOCAL_OPEN_CHANNEL_3)); List channelIds = List.of(CHANNEL_ID.toString(), CHANNEL_ID_3.toString()); mockMvc.perform(get(NODE_PREFIX + "/open-channels")) @@ -106,4 +106,16 @@ class NodeControllerIT { .andExpect(jsonPath("$.channels", is(channelIds))); } + @Test + void getBalance() throws Exception { + when(balanceService.getBalanceInformation(PUBKEY_2)).thenReturn(BALANCE_INFORMATION); + mockMvc.perform(get(NODE_PREFIX + "/balance")) + .andExpect(jsonPath("$.localBalance", is("1000"))) + .andExpect(jsonPath("$.localReserve", is("100"))) + .andExpect(jsonPath("$.localAvailable", is("900"))) + .andExpect(jsonPath("$.remoteBalance", is("123"))) + .andExpect(jsonPath("$.remoteReserve", is("10"))) + .andExpect(jsonPath("$.remoteAvailable", is("113"))); + } + } \ No newline at end of file diff --git a/web/src/main/java/de/cotto/lndmanagej/controller/NodeController.java b/web/src/main/java/de/cotto/lndmanagej/controller/NodeController.java index edb0e5e4..89dff6bd 100644 --- a/web/src/main/java/de/cotto/lndmanagej/controller/NodeController.java +++ b/web/src/main/java/de/cotto/lndmanagej/controller/NodeController.java @@ -84,6 +84,12 @@ public class NodeController { return new ChannelsForNodeDto(pubkey, channels); } + @GetMapping("/balance") + public BalanceInformationDto getBalance(@PathVariable Pubkey pubkey) { + mark("getBalance"); + return BalanceInformationDto.createFrom(balanceService.getBalanceInformation(pubkey)); + } + private List toSortedList(Set channels) { return channels.stream() .map(Channel::getId) diff --git a/web/src/test/java/de/cotto/lndmanagej/controller/NodeControllerTest.java b/web/src/test/java/de/cotto/lndmanagej/controller/NodeControllerTest.java index f7ff447d..a9bb59da 100644 --- a/web/src/test/java/de/cotto/lndmanagej/controller/NodeControllerTest.java +++ b/web/src/test/java/de/cotto/lndmanagej/controller/NodeControllerTest.java @@ -127,7 +127,7 @@ class NodeControllerTest { } @Test - void getOpenChannelIds_for_peer() { + void getOpenChannelIds() { when(channelService.getOpenChannelsWith(PUBKEY)).thenReturn(Set.of(LOCAL_OPEN_CHANNEL, LOCAL_OPEN_CHANNEL_3)); assertThat(nodeController.getOpenChannelIdsForPubkey(PUBKEY)) .isEqualTo(new ChannelsForNodeDto(PUBKEY, List.of(CHANNEL_ID, CHANNEL_ID_3))); @@ -135,9 +135,16 @@ class NodeControllerTest { } @Test - void getOpenChannelIds_for_peer_ordered() { + void getOpenChannelIds_ordered() { when(channelService.getOpenChannelsWith(PUBKEY)).thenReturn(Set.of(LOCAL_OPEN_CHANNEL_2, LOCAL_OPEN_CHANNEL)); assertThat(nodeController.getOpenChannelIdsForPubkey(PUBKEY)) .isEqualTo(new ChannelsForNodeDto(PUBKEY, List.of(CHANNEL_ID, CHANNEL_ID_2))); } + + @Test + void getBalance() { + when(balanceService.getBalanceInformation(PUBKEY)).thenReturn(BALANCE_INFORMATION); + assertThat(nodeController.getBalance(PUBKEY)).isEqualTo(BalanceInformationDto.createFrom(BALANCE_INFORMATION)); + verify(metrics).mark(argThat(name -> name.endsWith(".getBalance"))); + } } \ No newline at end of file