[tor-commits] [stem/master] Passing unit tests

atagar at torproject.org atagar at torproject.org
Sun Oct 6 02:07:34 UTC 2019


commit 419a2938c1d313491401b48de2697a5a8ca5c5a4
Author: Damian Johnson <atagar at torproject.org>
Date:   Thu Sep 5 12:42:39 2019 -0700

    Passing unit tests
    
    Fix remaining test failures so unit tests once again pass. Stylistic checks
    still report issues so that's next.
---
 stem/descriptor/hidden_service.py         | 12 ++++++------
 test/unit/descriptor/__init__.py          |  8 +++++++-
 test/unit/descriptor/hidden_service_v3.py |  7 ++++++-
 3 files changed, 19 insertions(+), 8 deletions(-)

diff --git a/stem/descriptor/hidden_service.py b/stem/descriptor/hidden_service.py
index 1c51b7b2..9e6de0d9 100644
--- a/stem/descriptor/hidden_service.py
+++ b/stem/descriptor/hidden_service.py
@@ -554,12 +554,6 @@ class HiddenServiceDescriptorV3(BaseHiddenServiceDescriptor):
     else:
       self._entries = entries
 
-    # ATAGAR XXX need to do this cert extraction in the parsing handler
-    assert(self.signing_cert)
-    cert_lines = self.signing_cert.split('\n')
-    assert(cert_lines[0] == '-----BEGIN ED25519 CERT-----' and cert_lines[-1] == '-----END ED25519 CERT-----')
-    desc_signing_cert = stem.descriptor.certificate.Ed25519Certificate.parse(''.join(cert_lines[1:-1]))
-
     # crypto validation (check skip_crypto_validation)
     # ASN XXX need to verify descriptor signing certificate (for now we trust Tor to do it)
     # ASN XXX need to verify descriptor signature (for now we trust Tor to do it)
@@ -568,6 +562,12 @@ class HiddenServiceDescriptorV3(BaseHiddenServiceDescriptor):
       if self.onion_address is None:
         raise ValueError("Onion address is required to decrypt v3 hidden service descriptors")
 
+      # ATAGAR XXX need to do this cert extraction in the parsing handler
+      assert(self.signing_cert)
+      cert_lines = self.signing_cert.split('\n')
+      assert(cert_lines[0] == '-----BEGIN ED25519 CERT-----' and cert_lines[-1] == '-----END ED25519 CERT-----')
+
+      desc_signing_cert = stem.descriptor.certificate.Ed25519Certificate.parse(''.join(cert_lines[1:-1]))
       plaintext = self.decrypt_descriptor(desc_signing_cert)
 
   def decrypt_descriptor(self, desc_signing_cert):
diff --git a/test/unit/descriptor/__init__.py b/test/unit/descriptor/__init__.py
index 867ed0a4..268e61e4 100644
--- a/test/unit/descriptor/__init__.py
+++ b/test/unit/descriptor/__init__.py
@@ -4,6 +4,8 @@ Unit tests for stem.descriptor.
 
 import os
 
+import stem.descriptor.hidden_service
+
 __all__ = [
   'bandwidth_file',
   'collector',
@@ -49,7 +51,11 @@ def base_expect_invalid_attr_for_text(cls, default_attr, default_prefix, test, d
   """
 
   test.assertRaises(ValueError, cls, desc_text, True)
-  desc = cls(desc_text, validate = False)
+
+  if cls == stem.descriptor.hidden_service.HiddenServiceDescriptorV3:
+    desc = cls(desc_text, validate = False, skip_crypto_validation = True)
+  else:
+    desc = cls(desc_text, validate = False)
 
   if attr:
     # check that the invalid attribute matches the expected value when
diff --git a/test/unit/descriptor/hidden_service_v3.py b/test/unit/descriptor/hidden_service_v3.py
index 97763a39..f4c42008 100644
--- a/test/unit/descriptor/hidden_service_v3.py
+++ b/test/unit/descriptor/hidden_service_v3.py
@@ -6,6 +6,7 @@ import functools
 import unittest
 
 import stem.descriptor
+import stem.prereq
 
 from stem.descriptor.hidden_service import (
   REQUIRED_V3_FIELDS,
@@ -38,6 +39,10 @@ class TestHiddenServiceDescriptorV3(unittest.TestCase):
       sltib6sxkuxh2scmtuvd5w2g7pahnzkovefxpo4e4ptnkzl5kkq5h2ad.onion
     """
 
+    if not stem.prereq.is_crypto_available(ed25519 = True):
+      self.skipTest('(requires cryptography ed25519 support)')  # TODO: note version here
+      return
+
     with open(get_resource('hidden_service_v3_test'), 'rb') as descriptor_file:
       desc = next(stem.descriptor.parse_file(descriptor_file, 'hidden-service-descriptor-3 1.0', validate = True,
                   onion_address="sltib6sxkuxh2scmtuvd5w2g7pahnzkovefxpo4e4ptnkzl5kkq5h2ad.onion"))
@@ -54,7 +59,7 @@ class TestHiddenServiceDescriptorV3(unittest.TestCase):
     """
 
     with open(get_resource('hidden_service_v3'), 'rb') as descriptor_file:
-      desc = next(stem.descriptor.parse_file(descriptor_file, 'hidden-service-descriptor-3 1.0', validate = True))
+      desc = next(stem.descriptor.parse_file(descriptor_file, 'hidden-service-descriptor-3 1.0', validate = True, skip_crypto_validation = True))
 
     self.assertEqual(3, desc.version)
     self.assertEqual(180, desc.lifetime)





More information about the tor-commits mailing list