@Test public void onUpdateIgnoreKeysNotOwnedBySender() { String uri = "http: PublicKey key = mock(PublicKey.class); PublicKey key2 = mock(PublicKey.class); Recipient recipient = Recipient.of(key, uri); Recipient other = Recipient.of(key2, "http: List<Recipient> recipients = List.of(recipient, other); NodeInfo nodeInfo = NodeInfo.Builder.create() .withUrl(uri) .withRecipients(recipients) .withSupportedApiVersions(List.of("Two", "Fifty")) .build(); List<ActiveNode> storedNodes = new ArrayList<>(); doAnswer( invocation -> { storedNodes.add(invocation.getArgument(0)); return null; }) .when(networkStore) .store(any(ActiveNode.class)); discovery.onUpdate(nodeInfo); assertThat(storedNodes).hasSize(1); ActiveNode result = storedNodes.iterator().next(); assertThat(result.getUri()).isEqualTo(NodeUri.create(uri)); assertThat(result.getKeys()).containsExactly(key); assertThat(result.getSupportedVersions()).containsExactlyInAnyOrder("Two", "Fifty"); verify(networkStore).store(any(ActiveNode.class)); }
@Override public void onUpdate(NodeInfo nodeInfo) { if(!knownPeers.contains(NodeUri.create(nodeInfo.getUrl()))) { throw new AutoDiscoveryDisabledException(String.format("%s is not a known peer", nodeInfo.getUrl())); } final NodeUri callerNodeUri = NodeUri.create(nodeInfo.getUrl()); final Set<PublicKey> keys = nodeInfo.getRecipients().stream() .filter(r -> NodeUri.create(r.getUrl()).equals(callerNodeUri)) .map(Recipient::getKey) .collect(Collectors.toSet()); final ActiveNode activeNode = ActiveNode.Builder.create() .withUri(callerNodeUri) .withSupportedVersions(nodeInfo.supportedApiVersions()) .withKeys(keys) .build(); networkStore.store(activeNode); }
DisabledAutoDiscovery implements Discovery { @Override public void onUpdate(NodeInfo nodeInfo) { if(!knownPeers.contains(NodeUri.create(nodeInfo.getUrl()))) { throw new AutoDiscoveryDisabledException(String.format("%s is not a known peer", nodeInfo.getUrl())); } final NodeUri callerNodeUri = NodeUri.create(nodeInfo.getUrl()); final Set<PublicKey> keys = nodeInfo.getRecipients().stream() .filter(r -> NodeUri.create(r.getUrl()).equals(callerNodeUri)) .map(Recipient::getKey) .collect(Collectors.toSet()); final ActiveNode activeNode = ActiveNode.Builder.create() .withUri(callerNodeUri) .withSupportedVersions(nodeInfo.supportedApiVersions()) .withKeys(keys) .build(); networkStore.store(activeNode); } }
DisabledAutoDiscovery implements Discovery { @Override public void onUpdate(NodeInfo nodeInfo) { if(!knownPeers.contains(NodeUri.create(nodeInfo.getUrl()))) { throw new AutoDiscoveryDisabledException(String.format("%s is not a known peer", nodeInfo.getUrl())); } final NodeUri callerNodeUri = NodeUri.create(nodeInfo.getUrl()); final Set<PublicKey> keys = nodeInfo.getRecipients().stream() .filter(r -> NodeUri.create(r.getUrl()).equals(callerNodeUri)) .map(Recipient::getKey) .collect(Collectors.toSet()); final ActiveNode activeNode = ActiveNode.Builder.create() .withUri(callerNodeUri) .withSupportedVersions(nodeInfo.supportedApiVersions()) .withKeys(keys) .build(); networkStore.store(activeNode); } DisabledAutoDiscovery(NetworkStore networkStore,Set<NodeUri> knownPeers); }
DisabledAutoDiscovery implements Discovery { @Override public void onUpdate(NodeInfo nodeInfo) { if(!knownPeers.contains(NodeUri.create(nodeInfo.getUrl()))) { throw new AutoDiscoveryDisabledException(String.format("%s is not a known peer", nodeInfo.getUrl())); } final NodeUri callerNodeUri = NodeUri.create(nodeInfo.getUrl()); final Set<PublicKey> keys = nodeInfo.getRecipients().stream() .filter(r -> NodeUri.create(r.getUrl()).equals(callerNodeUri)) .map(Recipient::getKey) .collect(Collectors.toSet()); final ActiveNode activeNode = ActiveNode.Builder.create() .withUri(callerNodeUri) .withSupportedVersions(nodeInfo.supportedApiVersions()) .withKeys(keys) .build(); networkStore.store(activeNode); } DisabledAutoDiscovery(NetworkStore networkStore,Set<NodeUri> knownPeers); @Override void onUpdate(NodeInfo nodeInfo); @Override void onDisconnect(URI nodeUri); }
DisabledAutoDiscovery implements Discovery { @Override public void onUpdate(NodeInfo nodeInfo) { if(!knownPeers.contains(NodeUri.create(nodeInfo.getUrl()))) { throw new AutoDiscoveryDisabledException(String.format("%s is not a known peer", nodeInfo.getUrl())); } final NodeUri callerNodeUri = NodeUri.create(nodeInfo.getUrl()); final Set<PublicKey> keys = nodeInfo.getRecipients().stream() .filter(r -> NodeUri.create(r.getUrl()).equals(callerNodeUri)) .map(Recipient::getKey) .collect(Collectors.toSet()); final ActiveNode activeNode = ActiveNode.Builder.create() .withUri(callerNodeUri) .withSupportedVersions(nodeInfo.supportedApiVersions()) .withKeys(keys) .build(); networkStore.store(activeNode); } DisabledAutoDiscovery(NetworkStore networkStore,Set<NodeUri> knownPeers); @Override void onUpdate(NodeInfo nodeInfo); @Override void onDisconnect(URI nodeUri);  }