[tor-commits] [metrics-lib/release] Added simple tests for DescriptorImpl.
karsten at torproject.org
karsten at torproject.org
Wed Jun 7 07:06:31 UTC 2017
commit a3f4168467fc1823aab68ac587a60a2968388850
Author: iwakeh <iwakeh at torproject.org>
Date: Sun Jun 4 20:58:32 2017 +0000
Added simple tests for DescriptorImpl.
---
.../descriptor/impl/DescriptorImplTest.java | 147 +++++++++++++++++++++
1 file changed, 147 insertions(+)
diff --git a/src/test/java/org/torproject/descriptor/impl/DescriptorImplTest.java b/src/test/java/org/torproject/descriptor/impl/DescriptorImplTest.java
new file mode 100644
index 0000000..cbe57ff
--- /dev/null
+++ b/src/test/java/org/torproject/descriptor/impl/DescriptorImplTest.java
@@ -0,0 +1,147 @@
+/* Copyright 2017 The Tor Project
+ * See LICENSE for licensing information */
+
+package org.torproject.descriptor.impl;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+
+import java.util.List;
+
+/* Test parsing of descriptors. */
+public class DescriptorImplTest {
+
+ @Rule
+ public ExpectedException thrown = ExpectedException.none();
+
+ private static final String DESC = Key.CRYPTO_BEGIN.keyword
+ + "\ncryptostuff\ncryptique\n" + Key.CRYPTO_END.keyword;
+ private static final String KW = "dummy-kw";
+ private static final String NL = "\n";
+ private static final byte[] DESCBYTES1 = DESC.getBytes();
+ private static final byte[] DESCBYTES2 = (DESC + "\n" + DESC).getBytes();
+ private static final byte[] DESCBYTES3
+ = (KW + NL + DESC + KW + NL + DESC + KW + NL).getBytes();
+
+ @Test
+ public void testSplitByKey() throws Exception {
+ TestDescriptor des = makeTestDesc(DESCBYTES2);
+ List<int[]> res = des.splitByKey(Key.CRYPTO_BEGIN, 0, DESCBYTES2.length,
+ false);
+ int count = 0;
+ for (int[] i : res) {
+ assertEquals("Offset.", count * 42, i[0]);
+ assertEquals("Length.", 42 - count++, i[1]);
+ }
+ }
+
+ @Test
+ public void testDigestsSha256Base64() throws Exception {
+ TestDescriptor des = makeTestDesc(DESCBYTES3);
+ des.calculateDigestSha256Base64(KW);
+ assertEquals("1bEECw9nT5KRzPG8dAzEFJgSI4OBQfyWn+wjREb8oa8",
+ des.getDigestSha256Base64());
+ assertNull(des.getDigestSha1Hex());
+ }
+
+ private TestDescriptor makeTestDesc(byte[] bytes) throws Exception {
+ return new TestDescriptor(bytes, new int[]{0, bytes.length}, false, false);
+ }
+
+ @Test
+ public void testDigestsSha256Base64EndToken() throws Exception {
+ TestDescriptor des = this.makeTestDesc(DESCBYTES3);
+ des.calculateDigestSha256Base64(KW, KW);
+ assertEquals("MHFj9sNLRXdDo/O62uJgNujuNnNbCtpUZiGwthfLH9E",
+ des.getDigestSha256Base64());
+ assertNull(des.getDigestSha1Hex());
+ }
+
+ @Test
+ public void testDigestsSha1Hex() throws Exception {
+ TestDescriptor des = makeTestDesc(DESCBYTES3);
+ des.calculateDigestSha1Hex(KW, KW);
+ assertEquals("2fc934e9523937c07cb9f4b395827a11c7b18c9d",
+ des.getDigestSha1Hex());
+ assertNull(des.getDigestSha256Base64());
+ }
+
+ @Test
+ public void testDigestsSha1HexNoToken() throws Exception {
+ TestDescriptor des = makeTestDesc(DESCBYTES1);
+ this.thrown.expect(DescriptorParseException.class);
+ this.thrown.expectMessage("Could not calculate descriptor digest.");
+ des.calculateDigestSha1Hex(KW, KW);
+ }
+
+ @Test
+ public void testNoAnnotation() throws Exception {
+ this.thrown.expect(DescriptorParseException.class);
+ this.thrown.expectMessage("Annotation line does not contain a newline.");
+ TestDescriptor des = makeTestDesc("@@@".getBytes());
+ }
+
+ @Test
+ public void testDescriptorEmpty() throws Exception {
+ this.thrown.expect(DescriptorParseException.class);
+ this.thrown.expectMessage("Descriptor is empty.");
+ TestDescriptor des = makeTestDesc("".getBytes());
+ }
+
+ @Test
+ public void testDescriptorBlankLine() throws Exception {
+ this.thrown.expect(DescriptorParseException.class);
+ this.thrown.expectMessage("Blank lines are not allowed.");
+ TestDescriptor des = makeTestDesc("\n\n".getBytes());
+ }
+
+ @Test
+ public void testDigestsNothing() throws Exception {
+ TestDescriptor des = makeTestDesc("\n".getBytes());
+ des.checkFirstKey(Key.EMPTY);
+ des.checkLastKey(Key.EMPTY);
+ }
+
+ @Test
+ public void testDigestsOnlyAnnotations() throws Exception {
+ TestDescriptor des = makeTestDesc("@a at b\n".getBytes());
+ des.checkFirstKey(Key.EMPTY);
+ des.checkLastKey(Key.EMPTY);
+ }
+
+ @Test
+ public void testDigestsSha256Base64NoToken() throws Exception {
+ TestDescriptor des = makeTestDesc(DESCBYTES1);
+ this.thrown.expect(DescriptorParseException.class);
+ this.thrown.expectMessage("Could not calculate descriptor digest.");
+ des.calculateDigestSha256Base64(KW);
+ }
+
+ @Test
+ public void testDigestsSha256Base64NoReCalculation() throws Exception {
+ TestDescriptor des = makeTestDesc(DESCBYTES3);
+ des.calculateDigestSha256Base64(KW);
+ String digest = des.getDigestSha256Base64();
+ assertEquals("1bEECw9nT5KRzPG8dAzEFJgSI4OBQfyWn+wjREb8oa8", digest);
+ des.calculateDigestSha256Base64(Key.CRYPTO_END.keyword);
+ digest = des.getDigestSha256Base64();
+ assertEquals("1bEECw9nT5KRzPG8dAzEFJgSI4OBQfyWn+wjREb8oa8", digest);
+ }
+
+ class TestDescriptor extends DescriptorImpl {
+
+ protected TestDescriptor(byte[] rawDescriptorBytes, int[] offsetAndLength,
+ boolean failUnrecognizedDescriptorLines, boolean blankLinesAllowed)
+ throws DescriptorParseException {
+ super(rawDescriptorBytes, offsetAndLength,
+ failUnrecognizedDescriptorLines, blankLinesAllowed);
+ }
+ }
+
+}
+
+
More information about the tor-commits
mailing list