@@ -10,7 +10,7 @@
import stem .descriptor .server_descriptor
from stem .descriptor .server_descriptor import RelayDescriptor , BridgeDescriptor
import test .runner
from test .mocking import get_relay_server_descriptor , get_bridge_server_descriptor , CRYPTO_BLOB
from test .mocking import get_relay_server_descriptor , get_bridge_server_descriptor , CRYPTO_BLOB , sign_descriptor_content
class TestServerDescriptor (unittest .TestCase ):
def test_minimal_relay_descriptor (self ):
@@ -25,8 +25,6 @@ def test_minimal_relay_descriptor(self):
self .assertEquals ("71.35.133.197" , desc .address )
self .assertEquals (None , desc .fingerprint )
self .assertTrue (CRYPTO_BLOB in desc .onion_key )
self .assertTrue (CRYPTO_BLOB in desc .signing_key )
self .assertTrue (CRYPTO_BLOB in desc .signature )
def test_with_opt (self ):
"""
@@ -148,6 +146,7 @@ def test_published_leap_year(self):
self ._expect_invalid_attr (desc_text , "published" )
desc_text = get_relay_server_descriptor ({"published" : "2012-02-29 04:03:19" }, content = True )
desc_text = sign_descriptor_content (desc_text )
expected_published = datetime .datetime (2012 , 2 , 29 , 4 , 3 , 19 )
self .assertEquals (expected_published , RelayDescriptor (desc_text ).published )
@@ -200,6 +199,7 @@ def test_annotations(self):
desc_text = "@pepperjack very tasty\n @mushrooms not so much\n "
desc_text += get_relay_server_descriptor (content = True )
desc_text = sign_descriptor_content (desc_text )
desc_text += "\n trailing text that should be ignored, ho hum"
# running parse_file should provide an iterator with a single descriptor
@@ -243,29 +243,12 @@ def test_missing_required_attr(self):
self .assertEquals (None , desc .socks_port )
self .assertEquals (None , desc .dir_port )
def test_fingerprint_valid (self ):
"""
Checks that a fingerprint matching the hash of our signing key will validate.
"""
if not stem .prereq .is_rsa_available ():
test .runner .skip (self , "(rsa module unavailable)" )
return
fingerprint = "4F0C 867D F0EF 6816 0568 C826 838F 482C EA7C FE44"
desc = get_relay_server_descriptor ({"opt fingerprint" : fingerprint })
self .assertEquals (fingerprint .replace (" " , "" ), desc .fingerprint )
def test_fingerprint_invalid (self ):
"""
Checks that, with a correctly formed fingerprint, we'll fail validation if
it doesn't match the hash of our signing key.
"""
if not stem .prereq .is_rsa_available ():
test .runner .skip (self , "(rsa module unavailable)" )
return
fingerprint = "4F0C 867D F0EF 6816 0568 C826 838F 482C EA7C FE45"
desc_text = get_relay_server_descriptor ({"opt fingerprint" : fingerprint }, content = True )
self ._expect_invalid_attr (desc_text , "fingerprint" , fingerprint .replace (" " , "" ))