mirror of
https://github.com/aljazceru/lnd-manageJ.git
synced 2026-01-26 09:24:41 +01:00
identify node by pubkey
This commit is contained in:
@@ -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<Channel> getOpenChannelsWith(Node node) {
|
||||
public Set<Channel> getOpenChannelsWith(Pubkey peer) {
|
||||
Node peerNode = Node.forPubkey(peer);
|
||||
return getOpenChannelsWith(peerNode);
|
||||
}
|
||||
|
||||
public Set<Channel> getOpenChannelsWith(Node peer) {
|
||||
return grpcChannels.getChannels().stream()
|
||||
.filter(c -> c.getNodes().contains(node))
|
||||
.filter(c -> c.getNodes().contains(peer))
|
||||
.collect(Collectors.toSet());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -40,9 +40,8 @@ public class NodeService {
|
||||
.build(loader);
|
||||
}
|
||||
|
||||
public List<ChannelId> getOpenChannelIds(Pubkey pubkey) {
|
||||
Node node = getNode(pubkey);
|
||||
return channelService.getOpenChannelsWith(node).stream()
|
||||
public List<ChannelId> getOpenChannelIds(Pubkey peer) {
|
||||
return channelService.getOpenChannelsWith(peer).stream()
|
||||
.map(Channel::getId)
|
||||
.sorted()
|
||||
.collect(Collectors.toList());
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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()
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user