[tor-commits] [onionoo/release] Add test for exit policy reset.

karsten at torproject.org karsten at torproject.org
Thu Aug 31 15:02:37 UTC 2017


commit 6473fdc8dcee245370cc5efa411c177bd1d8cfb2
Author: iwakeh <iwakeh at torproject.org>
Date:   Tue Aug 8 08:50:44 2017 +0000

    Add test for exit policy reset.
    
    Test part of task-22030.
---
 .../onionoo/docs/DummyDocumentStore.java           |   2 +-
 .../updater/NodeDetailsStatusUpdaterTest.java      | 142 +++++++++++++++++++++
 2 files changed, 143 insertions(+), 1 deletion(-)

diff --git a/src/test/java/org/torproject/onionoo/docs/DummyDocumentStore.java b/src/test/java/org/torproject/onionoo/docs/DummyDocumentStore.java
index 4904044..2f8063e 100644
--- a/src/test/java/org/torproject/onionoo/docs/DummyDocumentStore.java
+++ b/src/test/java/org/torproject/onionoo/docs/DummyDocumentStore.java
@@ -12,7 +12,7 @@ import java.util.TreeSet;
 
 public class DummyDocumentStore extends DocumentStore {
 
-  private Map<Class<? extends Document>, SortedMap<String, Document>>
+  public Map<Class<? extends Document>, SortedMap<String, Document>>
       storedDocuments = new HashMap<>();
 
   private static final String FINGERPRINT_NULL = "";
diff --git a/src/test/java/org/torproject/onionoo/updater/NodeDetailsStatusUpdaterTest.java b/src/test/java/org/torproject/onionoo/updater/NodeDetailsStatusUpdaterTest.java
new file mode 100644
index 0000000..84c1fa6
--- /dev/null
+++ b/src/test/java/org/torproject/onionoo/updater/NodeDetailsStatusUpdaterTest.java
@@ -0,0 +1,142 @@
+/* Copyright 2014--2017 The Tor Project
+ * See LICENSE for licensing information */
+
+package org.torproject.onionoo.updater;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import org.torproject.descriptor.Descriptor;
+import org.torproject.descriptor.DescriptorParser;
+import org.torproject.descriptor.DescriptorSourceFactory;
+import org.torproject.descriptor.ServerDescriptor;
+import org.torproject.onionoo.docs.DetailsStatus;
+import org.torproject.onionoo.docs.DocumentStoreFactory;
+import org.torproject.onionoo.docs.DummyDocumentStore;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import java.io.File;
+import java.util.List;
+
+public class NodeDetailsStatusUpdaterTest {
+
+  private DummyDocumentStore docStore;
+
+  @Before
+  public void createDummyDocumentStore() {
+    this.docStore = new DummyDocumentStore();
+    DocumentStoreFactory.setDocumentStore(this.docStore);
+  }
+
+  @Test
+  public void testExitReset() throws Exception {
+    NodeDetailsStatusUpdater ndsu = new NodeDetailsStatusUpdater(null, null);
+    DescriptorParser dp = DescriptorSourceFactory.createDescriptorParser();
+    String descString = RELAY1 + PUB1 + RELAY2 + POLICY1 + RELAY3;
+    for (Descriptor desc : dp.parseDescriptors(descString.getBytes(),
+        new File("dummy"), "dummy")) {
+      assertTrue(desc.getClass().getName(), desc instanceof ServerDescriptor);
+      ndsu.processDescriptor(desc, true);
+    }
+    assertEquals(1, this.docStore.getPerformedStoreOperations());
+    assertEquals(1, this.docStore.storedDocuments.size());
+    DetailsStatus dd = this.docStore.getDocument(DetailsStatus.class, FP);
+    assertNotNull("docs: " + this.docStore.storedDocuments, dd);
+    assertEquals("Found: " + dd.getExitPolicy(), 1, dd.getExitPolicy().size());
+    assertEquals("Found: " + dd.getExitPolicy().get(0),
+        "reject *:25", dd.getExitPolicy().get(0));
+    List<String> acc = dd.getExitPolicyV6Summary().get("accept");
+    List<String> rej = dd.getExitPolicyV6Summary().get("reject");
+    assertNull(rej);
+    assertEquals("Found: " + dd.getExitPolicyV6Summary(), "23", acc.get(0));
+    assertEquals("Found: " + dd.getExitPolicyV6Summary(), "42", acc.get(1));
+
+    descString = RELAY1 + PUB2 + RELAY2 + POLICY2 + RELAY3;
+    for (Descriptor desc : dp.parseDescriptors(descString.getBytes(),
+        new File("dummy"), "dummy")) {
+      assertTrue(desc.getClass().getName(), desc instanceof ServerDescriptor);
+      ndsu.processDescriptor(desc, true);
+    }
+    assertEquals(2, this.docStore.getPerformedStoreOperations());
+    assertEquals(1, this.docStore.storedDocuments.size());
+    dd = this.docStore.getDocument(DetailsStatus.class, FP);
+    assertNotNull("docs: " + this.docStore.storedDocuments, dd);
+    assertEquals("Found: " + dd.getExitPolicy(), 1, dd.getExitPolicy().size());
+    assertEquals("Found: " + dd.getExitPolicy().get(0),
+        "reject *:*", dd.getExitPolicy().get(0));
+    assertNull(dd.getExitPolicyV6Summary());
+  }
+
+  private static final String FP = "42CAF9C0588BBADDD338025E8F2D3CCF35CEEC25";
+
+  private static final String RELAY1 = "@type server-descriptor 1.0\n"
+      + "router impedance 84.201.150.89 443 0 0\n"
+      + "identity-ed25519\n"
+      + "-----BEGIN ED25519 CERT-----\n"
+      + "AQQABkIAAS889JQwk/Acb0kWwkX1lolsL72YAGUvNgrLjz8fxczJAQAgBACw4otT\n"
+      + "Ajr+/0iRTRaCbdHs7BHSZ5qA3c4DG6a71zMzM0ismH/bVLbTuIsRrOuBfpOux+Cs\n"
+      + "ONO0fGuk5uazrY0iGcKJtZckyW4W7RYLkeGdNnYJ6BpshTEP0Rd61roeBQs=\n"
+      + "-----END ED25519 CERT-----\n"
+      + "master-key-ed25519 sOKLUwI6/v9IkU0Wgm3R7OwR0meagN3OAxumu9czMzM\n"
+      + "platform Tor 0.2.7.6 on Linux\n"
+      + "protocols Link 1 2 Circuit 1\n";
+
+  private static final String PUB1 = "published 2016-10-02 15:01:09\n";
+
+  private static final String PUB2 = "published 2016-10-03 15:01:09\n";
+
+  private static final String RELAY2
+      = "fingerprint 42CA F9C0 588B BADD D338 025E 8F2D 3CCF 35CE EC25\n"
+      + "uptime 329888\n"
+      + "bandwidth 10240000 10240000 167976\n"
+      + "extra-info-digest 43A1C5D7EBA550CEC7465E20E3027772D5C552DD "
+      + "O3s96zE6cCXRrv3+KKpHm20GATS1s/9jyxbEv91v9mk\n"
+      + "onion-key\n"
+      + "-----BEGIN RSA PUBLIC KEY-----\n"
+      + "MIGJAoGBAMyCYbuR3p6mQDGSjkeO37/BUsGEPiFtKsd7e3m59cXB5oXmEqz0n2dp\n"
+      + "6qQAfyjPLP7Q1VZvvHxhD9n/qVXOmJRJGdlzhNBx1kIfvFhqKPop68cbwkcOlJ8r\n"
+      + "c3RjwDiv24q2kVAAq+NsYEhVECeshodf1A0off3J/cNsP6zXHn2HAgMBAAE=\n"
+      + "-----END RSA PUBLIC KEY-----\n"
+      + "signing-key\n"
+      + "-----BEGIN RSA PUBLIC KEY-----\n"
+      + "MIGJAoGBAMl++uLczhgkVvFLWuPON5Ynk820A/5W4Sm/tAg5klhRj1fvn5SxnSIZ\n"
+      + "l4VvAHSCZvojqEDCQvWwJUDEfEgT7tSlkq0Xjfsr7IhipnOkqhJFceLVCCdPHkkn\n"
+      + "L4maXPKcJ+JjhRQABEUM/+HOhBJHWyJ2V1Dc2C/8VISH+bG6BE/1AgMBAAE=\n"
+      + "-----END RSA PUBLIC KEY-----\n"
+      + "onion-key-crosscert\n"
+      + "-----BEGIN CROSSCERT-----\n"
+      + "AY2c8r2+VIHDo5ga+vSCfOt327496XcMSMJp/9DNQrWiXk+Xwr9z4cTTvcHun7Tc\n"
+      + "A17/Gjyo2yXDJABOQyZFbbKlCNUaoddOJc/s9hLCnkB//pxkO3sz7BwF+eOxqr9z\n"
+      + "u4TV8c2yOPqPybsm5ctmNmmP6eecUcNFmBA4uX7QSMs=\n"
+      + "-----END CROSSCERT-----\n"
+      + "ntor-onion-key-crosscert 0\n"
+      + "-----BEGIN ED25519 CERT-----\n"
+      + "AQoABkGYAbDii1MCOv7/SJFNFoJt0ezsEdJnmoDdzgMbprvXMzMzAAN9vMECBiJ2\n"
+      + "4Gbu9L3oZ983R5LwaE92TObml1anqe7W5uQDSskkIpEauL8tt029rS+xzQ7pCpdy\n"
+      + "EgyktjqXGQM=\n"
+      + "-----END ED25519 CERT-----\n"
+      + "hidden-service-dir\n"
+      + "contact dimanne dimanne at ya.ru\n"
+      + "ntor-onion-key DpZv/Br0X2JgxtohD5Kr7A7NgAK4HjBgTbTB+uVSolE=\n";
+
+  private static final String POLICY1
+      = "reject *:25\nipv6-policy accept 23,42\n";
+
+  private static final String POLICY2 = "reject *:*\n";
+
+  private static final String RELAY3
+      = "router-sig-ed25519 8pfPgYjlpwDoyESOZJHQwMwpmoyWCFg9dcswb8RTra4FT5jgol"
+      + "HTgkX51h/yUXBx7jUibs2EVaRTOPm9TuiVDA\n"
+      + "router-signature\n"
+      + "-----BEGIN SIGNATURE-----\n"
+      + "el2XtigqzbiSbUW11POx+l4kThP7c12JMyLlMPJXDncEYEa4F0+M0dQQF0BOeEIT\n"
+      + "D0lj1h4iWT4R+uO5/7umXyAhZidfbhLoQsWa/dGs5BfO4ROgvVLc8o4Za6PYcPE9\n"
+      + "DXd4yh+SZ86zaAWLUbr1VhRvSLWbFJwNn/aAQdAu70M=\n"
+      + "-----END SIGNATURE-----\n";
+
+}
+





More information about the tor-commits mailing list