commit 125d1c065fce5f39107d6bd022444113212582c2 Author: Karsten Loesing karsten.loesing@gmx.net Date: Wed Sep 28 16:04:20 2016 +0200
Add tests for sanitizing IP addresses and TCP ports. --- .../bridgedescs/SanitizedBridgesWriterTest.java | 105 +++++++++++++++++++++ 1 file changed, 105 insertions(+)
diff --git a/src/test/java/org/torproject/collector/bridgedescs/SanitizedBridgesWriterTest.java b/src/test/java/org/torproject/collector/bridgedescs/SanitizedBridgesWriterTest.java index 3533faf..5bcbd0a 100644 --- a/src/test/java/org/torproject/collector/bridgedescs/SanitizedBridgesWriterTest.java +++ b/src/test/java/org/torproject/collector/bridgedescs/SanitizedBridgesWriterTest.java @@ -4,6 +4,7 @@ package org.torproject.collector.bridgedescs;
import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail;
@@ -230,6 +231,28 @@ public class SanitizedBridgesWriterTest { }
@Test + public void testServerDescriptorHashedIp() throws Exception { + this.configuration.setProperty(Key.ReplaceIpAddressesWithHashes.name(), + "true"); + this.configuration.setProperty(Key.BridgeDescriptorMappingsLimit.name(), + "30000"); + this.defaultServerDescriptorBuilder.insertBeforeLineStartingWith( + "platform ", Arrays.asList("or-address [2:5:2:5:2:5:2:5]:25")); + this.runTest(); + int foundLinesContainingHashedIps = 0; + for (String line : this.parsedServerDescriptors.get(0)) { + if (line.startsWith("router MeekGoogle 10.") + && line.endsWith(" 0 0")) { + foundLinesContainingHashedIps++; + } else if (line.startsWith("or-address [fd9f:2e19:3bcf::")) { + foundLinesContainingHashedIps++; + } + } + assertEquals("Expected 2 lines containing hashed IP addresses and TCP " + + "ports.", 2, foundLinesContainingHashedIps); + } + + @Test public void testServerDescriptorRouterLineTruncated() throws Exception { this.defaultServerDescriptorBuilder.replaceLineStartingWith("router ", Arrays.asList("router MeekGoogle")); @@ -551,5 +574,87 @@ public class SanitizedBridgesWriterTest { assertTrue("Continued despite not being able to read " + "parsed-bridge-directories.", this.parsedFiles.isEmpty()); } + + @Test + public void testBridgeIpSecretsWritten() throws Exception { + this.configuration.setProperty(Key.ReplaceIpAddressesWithHashes.name(), + "true"); + this.configuration.setProperty(Key.BridgeDescriptorMappingsLimit.name(), + "30000"); + this.runTest(); + File bridgeIpSecretsFile = new File(statsDirectory, + "bridge-ip-secrets"); + BufferedReader reader = new BufferedReader(new FileReader( + bridgeIpSecretsFile)); + String line; + while ((line = reader.readLine()) != null) { + assertTrue("Secrets line should start with month 2016-06.", + line.startsWith("2016-06,")); + assertEquals("Secrets line should have 7 + 1 + 166 = 174 chars.", + 174, line.length()); + } + reader.close(); + } + + @Test + public void testBridgeIpSecretsRead() throws Exception { + File bridgeIpSecretsFile = new File(statsDirectory, + "bridge-ip-secrets"); + BufferedWriter writer = new BufferedWriter(new FileWriter( + bridgeIpSecretsFile)); + String secretLine = "2016-06,8ad0d1410d64256bdaa3977427f6db012c5809082a464c" + + "658d651304e25654902ed0df551c8eed19913ab7aaf6243cb3adc0f4a4b93ee77991" + + "b8c572ea25ca2ea5cd311dabe2f8b72243837ec88bcb0c758657"; + writer.write(secretLine + "\n"); + writer.close(); + this.configuration.setProperty(Key.ReplaceIpAddressesWithHashes.name(), + "true"); + this.configuration.setProperty(Key.BridgeDescriptorMappingsLimit.name(), + "30000"); + this.runTest(); + assertEquals("Didn't sanitize descriptors.", 3, + this.parsedFiles.size()); + BufferedReader reader = new BufferedReader(new FileReader( + bridgeIpSecretsFile)); + String line; + while ((line = reader.readLine()) != null) { + assertEquals("Secrets line was changed.", secretLine, line); + } + reader.close(); + } + + @Test + public void testBridgeIpSecretsIsDirectory() throws Exception { + File bridgeIpSecretsFile = new File(statsDirectory, "bridge-ip-secrets"); + bridgeIpSecretsFile.mkdirs(); + this.runTest(); + assertTrue("Sanitized server descriptors without secrets.", + this.parsedServerDescriptors.isEmpty()); + assertFalse("Didn't sanitize extra-info descriptors.", + this.parsedExtraInfoDescriptors.isEmpty()); + assertTrue("Sanitized network statuses without secrets.", + this.parsedNetworkStatuses.isEmpty()); + } + + @Test + public void testBridgeIpSecretsTruncatedLine() throws Exception { + this.configuration.setProperty(Key.ReplaceIpAddressesWithHashes.name(), + "true"); + this.configuration.setProperty(Key.BridgeDescriptorMappingsLimit.name(), + "30000"); + File bridgeIpSecretsFile = new File(statsDirectory, + "bridge-ip-secrets"); + BufferedWriter writer = new BufferedWriter(new FileWriter( + bridgeIpSecretsFile)); + writer.write("2016-06,x"); + writer.close(); + this.runTest(); + assertTrue("Sanitized server descriptors without secrets.", + this.parsedServerDescriptors.isEmpty()); + assertFalse("Didn't sanitize extra-info descriptors.", + this.parsedExtraInfoDescriptors.isEmpty()); + assertTrue("Sanitized network statuses without secrets.", + this.parsedNetworkStatuses.isEmpty()); + } }
tor-commits@lists.torproject.org