diff --git a/application/src/main/java/de/cotto/lndmanagej/service/ChannelService.java b/application/src/main/java/de/cotto/lndmanagej/service/ChannelService.java index 45774d5b..45be0444 100644 --- a/application/src/main/java/de/cotto/lndmanagej/service/ChannelService.java +++ b/application/src/main/java/de/cotto/lndmanagej/service/ChannelService.java @@ -3,6 +3,7 @@ package de.cotto.lndmanagej.service; import de.cotto.lndmanagej.grpc.GrpcChannels; import de.cotto.lndmanagej.model.Channel; import de.cotto.lndmanagej.model.Node; +import de.cotto.lndmanagej.model.Pubkey; import org.springframework.stereotype.Component; import java.util.Set; @@ -16,9 +17,14 @@ public class ChannelService { this.grpcChannels = grpcChannels; } - public Set getOpenChannelsWith(Node node) { + public Set getOpenChannelsWith(Pubkey peer) { + Node peerNode = Node.forPubkey(peer); + return getOpenChannelsWith(peerNode); + } + + public Set getOpenChannelsWith(Node peer) { return grpcChannels.getChannels().stream() - .filter(c -> c.getNodes().contains(node)) + .filter(c -> c.getNodes().contains(peer)) .collect(Collectors.toSet()); } } diff --git a/application/src/main/java/de/cotto/lndmanagej/service/NodeService.java b/application/src/main/java/de/cotto/lndmanagej/service/NodeService.java index dda7b97f..20044f42 100644 --- a/application/src/main/java/de/cotto/lndmanagej/service/NodeService.java +++ b/application/src/main/java/de/cotto/lndmanagej/service/NodeService.java @@ -40,9 +40,8 @@ public class NodeService { .build(loader); } - public List getOpenChannelIds(Pubkey pubkey) { - Node node = getNode(pubkey); - return channelService.getOpenChannelsWith(node).stream() + public List getOpenChannelIds(Pubkey peer) { + return channelService.getOpenChannelsWith(peer).stream() .map(Channel::getId) .sorted() .collect(Collectors.toList()); diff --git a/application/src/test/java/de/cotto/lndmanagej/service/ChannelServiceTest.java b/application/src/test/java/de/cotto/lndmanagej/service/ChannelServiceTest.java index e612ebf1..678d3bea 100644 --- a/application/src/test/java/de/cotto/lndmanagej/service/ChannelServiceTest.java +++ b/application/src/test/java/de/cotto/lndmanagej/service/ChannelServiceTest.java @@ -17,6 +17,7 @@ import static de.cotto.lndmanagej.model.ChannelIdFixtures.CHANNEL_ID_2; import static de.cotto.lndmanagej.model.NodeFixtures.NODE; import static de.cotto.lndmanagej.model.NodeFixtures.NODE_2; import static de.cotto.lndmanagej.model.NodeFixtures.NODE_3; +import static de.cotto.lndmanagej.model.PubkeyFixtures.PUBKEY_2; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.when; @@ -29,7 +30,13 @@ class ChannelServiceTest { private GrpcChannels grpcChannels; @Test - void getOpenChannelsWith() { + void getOpenChannelsWith_by_pubkey() { + when(grpcChannels.getChannels()).thenReturn(Set.of(CHANNEL, CHANNEL_3)); + assertThat(channelService.getOpenChannelsWith(PUBKEY_2)).containsExactlyInAnyOrder(CHANNEL, CHANNEL_3); + } + + @Test + void getOpenChannelsWith_by_node() { when(grpcChannels.getChannels()).thenReturn(Set.of(CHANNEL, CHANNEL_3)); assertThat(channelService.getOpenChannelsWith(NODE_2)).containsExactlyInAnyOrder(CHANNEL, CHANNEL_3); } diff --git a/application/src/test/java/de/cotto/lndmanagej/service/NodeServiceTest.java b/application/src/test/java/de/cotto/lndmanagej/service/NodeServiceTest.java index 76a83fd8..40f70a93 100644 --- a/application/src/test/java/de/cotto/lndmanagej/service/NodeServiceTest.java +++ b/application/src/test/java/de/cotto/lndmanagej/service/NodeServiceTest.java @@ -15,8 +15,8 @@ import static de.cotto.lndmanagej.model.ChannelIdFixtures.CHANNEL_ID; import static de.cotto.lndmanagej.model.ChannelIdFixtures.CHANNEL_ID_3; import static de.cotto.lndmanagej.model.NodeFixtures.ALIAS; import static de.cotto.lndmanagej.model.NodeFixtures.NODE; -import static de.cotto.lndmanagej.model.NodeFixtures.NODE_2; import static de.cotto.lndmanagej.model.PubkeyFixtures.PUBKEY; +import static de.cotto.lndmanagej.model.PubkeyFixtures.PUBKEY_2; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.when; @@ -39,15 +39,13 @@ class NodeServiceTest { @Test void getOpenChannelIds() { - when(grpcNodeInfo.getNode(PUBKEY)).thenReturn(NODE_2); - when(channelService.getOpenChannelsWith(NODE_2)).thenReturn(Set.of(CHANNEL, CHANNEL_3)); - assertThat(nodeService.getOpenChannelIds(PUBKEY)).containsExactly(CHANNEL_ID, CHANNEL_ID_3); + when(channelService.getOpenChannelsWith(PUBKEY_2)).thenReturn(Set.of(CHANNEL, CHANNEL_3)); + assertThat(nodeService.getOpenChannelIds(PUBKEY_2)).containsExactly(CHANNEL_ID, CHANNEL_ID_3); } @Test void getOpenChannelIds_ordered() { - when(grpcNodeInfo.getNode(PUBKEY)).thenReturn(NODE_2); - when(channelService.getOpenChannelsWith(NODE_2)).thenReturn(Set.of(CHANNEL_3, CHANNEL)); - assertThat(nodeService.getOpenChannelIds(PUBKEY)).containsExactly(CHANNEL_ID, CHANNEL_ID_3); + when(channelService.getOpenChannelsWith(PUBKEY_2)).thenReturn(Set.of(CHANNEL_3, CHANNEL)); + assertThat(nodeService.getOpenChannelIds(PUBKEY_2)).containsExactly(CHANNEL_ID, CHANNEL_ID_3); } } \ No newline at end of file diff --git a/grpc-adapter/src/main/java/de/cotto/lndmanagej/grpc/GrpcNodeInfo.java b/grpc-adapter/src/main/java/de/cotto/lndmanagej/grpc/GrpcNodeInfo.java index 9c1faf4f..1f6481e9 100644 --- a/grpc-adapter/src/main/java/de/cotto/lndmanagej/grpc/GrpcNodeInfo.java +++ b/grpc-adapter/src/main/java/de/cotto/lndmanagej/grpc/GrpcNodeInfo.java @@ -17,7 +17,7 @@ public class GrpcNodeInfo { public Node getNode(Pubkey pubkey) { NodeInfo nodeInfo = grpcService.getNodeInfo(pubkey).orElse(null); if (nodeInfo == null) { - return Node.builder().withPubkey(pubkey).build(); + return Node.forPubkey(pubkey); } LightningNode node = nodeInfo.getNode(); return Node.builder() diff --git a/model/src/main/java/de/cotto/lndmanagej/model/Node.java b/model/src/main/java/de/cotto/lndmanagej/model/Node.java index 7e818151..3fc09626 100644 --- a/model/src/main/java/de/cotto/lndmanagej/model/Node.java +++ b/model/src/main/java/de/cotto/lndmanagej/model/Node.java @@ -23,6 +23,10 @@ public record Node(@Nonnull String alias, int lastUpdate, @Nonnull Pubkey pubkey return new Builder(); } + public static Node forPubkey(Pubkey pubkey) { + return Node.builder().withPubkey(pubkey).build(); + } + @Override public String toString() { return alias; diff --git a/model/src/test/java/de/cotto/lndmanagej/model/NodeTest.java b/model/src/test/java/de/cotto/lndmanagej/model/NodeTest.java index bb1fd348..05713728 100644 --- a/model/src/test/java/de/cotto/lndmanagej/model/NodeTest.java +++ b/model/src/test/java/de/cotto/lndmanagej/model/NodeTest.java @@ -32,6 +32,11 @@ class NodeTest { assertThat(node.alias()).isEqualTo("BlueWallet"); } + @Test + void forPubkey() { + assertThat(Node.forPubkey(PUBKEY)).isEqualTo(Node.builder().withPubkey(PUBKEY).build()); + } + @Test void builder_without_arguments() { assertThatNullPointerException().isThrownBy( @@ -97,22 +102,22 @@ class NodeTest { @Test void compareTo_by_pubkey_same() { - Node node1 = forPubkey("aaa000aaa000abc000abc000abc000abc000abc000abc000abc000abc000abc000"); - Node node2 = forPubkey("aaa000aaa000abc000abc000abc000abc000abc000abc000abc000abc000abc000"); + Node node1 = createFor("aaa000aaa000abc000abc000abc000abc000abc000abc000abc000abc000abc000"); + Node node2 = createFor("aaa000aaa000abc000abc000abc000abc000abc000abc000abc000abc000abc000"); assertThat(node1.compareTo(node2)).isEqualTo(0); } @Test void compareTo_by_pubkey_smaller() { - Node node1 = forPubkey("aaa00abc000abc000abc000abc000abc000abc000abc000abc000abc000abc000a"); - Node node2 = forPubkey("fff00abc000abc000abc000abc000abc000abc000abc000abc000abc000abc000a"); + Node node1 = createFor("aaa00abc000abc000abc000abc000abc000abc000abc000abc000abc000abc000a"); + Node node2 = createFor("fff00abc000abc000abc000abc000abc000abc000abc000abc000abc000abc000a"); assertThat(node1.compareTo(node2)).isLessThan(0); } @Test void compareTo_by_pubkey_larger() { - Node node1 = forPubkey("0c123abc000abc000abc000abc000abc000abc000abc000abc000abc000abc000a"); - Node node2 = forPubkey("0b123abc000abc000abc000abc000abc000abc000abc000abc000abc000abc000a"); + Node node1 = createFor("0c123abc000abc000abc000abc000abc000abc000abc000abc000abc000abc000a"); + Node node2 = createFor("0b123abc000abc000abc000abc000abc000abc000abc000abc000abc000abc000a"); assertThat(node1.compareTo(node2)).isGreaterThan(0); } @@ -131,8 +136,8 @@ class NodeTest { assertThat(NODE.lastUpdate()).isEqualTo(LAST_UPDATE); } - private Node forPubkey(String pubkey) { - return Node.builder().withPubkey(Pubkey.create(pubkey)).withAlias(ALIAS).withLastUpdate(LAST_UPDATE).build(); + private Node createFor(String pubkey) { + return Node.forPubkey(Pubkey.create(pubkey)); } }