[tor-commits] [stem/master] Add unit tests for Controller.get_network_status()
atagar at torproject.org
atagar at torproject.org
Sun Jan 6 23:09:08 UTC 2013
commit 37fd201683180377ae7dfe0e908c199433166b12
Author: Sean Robinson <seankrobinson at gmail.com>
Date: Sat Jan 5 14:23:45 2013 -0700
Add unit tests for Controller.get_network_status()
Signed-off-by: Sean Robinson <seankrobinson at gmail.com>
---
test/unit/control/controller.py | 36 ++++++++++++++++++++++++++++++++++++
1 files changed, 36 insertions(+), 0 deletions(-)
diff --git a/test/unit/control/controller.py b/test/unit/control/controller.py
index b06dfbf..af6df3b 100644
--- a/test/unit/control/controller.py
+++ b/test/unit/control/controller.py
@@ -5,6 +5,7 @@ integ tests, but a few bits lend themselves to unit testing.
import unittest
+import stem.descriptor.router_status_entry
import stem.socket
import stem.version
@@ -180,6 +181,41 @@ class TestControl(unittest.TestCase):
# No default value, accept the error.
self.assertRaises(ProtocolError, self.controller.get_protocolinfo)
+ def test_get_network_status(self):
+ """
+ Exercises the get_network_status() method.
+ """
+
+ # Build a single router status entry.
+ nickname = "Beaver"
+ fingerprint = "/96bKo4soysolMgKn5Hex2nyFSY"
+ desc = "r %s %s u5lTXJKGsLKufRLnSyVqT7TdGYw 2012-12-30 22:02:49 77.223.43.54 9001 0\ns Fast Named Running Stable Valid\nw Bandwidth=75" % (nickname, fingerprint)
+ router = stem.descriptor.router_status_entry.RouterStatusEntryV2(desc)
+
+ # Always return the same router status entry.
+ mocking.mock_method(Controller, "get_info", mocking.return_value(desc))
+
+ # Pretend to get the router status entry with its name.
+ self.assertEqual(router, self.controller.get_network_status(nickname))
+
+ # Pretend to get the router status entry with its fingerprint.
+ hex_fingerprint = stem.descriptor.router_status_entry._decode_fingerprint(fingerprint, False)
+ self.assertEqual(router, self.controller.get_network_status(hex_fingerprint))
+
+ # Mangle hex fingerprint and try again.
+ hex_fingerprint = hex_fingerprint[2:]
+ self.assertRaises(ValueError, self.controller.get_network_status, hex_fingerprint)
+
+ # Raise an exception in the get_info() call.
+ mocking.mock_method(Controller, "get_info", mocking.raise_exception(InvalidArguments))
+
+ # Get a default value when the call fails.
+ self.assertEqual("default returned",
+ self.controller.get_network_status(nickname, default = "default returned"))
+
+ # No default value, accept the error.
+ self.assertRaises(InvalidArguments, self.controller.get_network_status, nickname)
+
def test_event_listening(self):
"""
Exercises the add_event_listener and remove_event_listener methods.
More information about the tor-commits
mailing list