[tor-commits] [stem/master] Expanding coverage of PROTOCOLINFO integ test

atagar at torproject.org atagar at torproject.org
Mon Nov 21 18:15:07 UTC 2011


commit 07fd7f7d23f5312d4b4ee4ef64d63fbe97a911ba
Author: Damian Johnson <atagar at torproject.org>
Date:   Mon Nov 21 04:29:10 2011 -0800

    Expanding coverage of PROTOCOLINFO integ test
    
    Providing the assertions for all connection configurations in the integ test.
---
 test/integ/connection/protocolinfo_response.py |   33 ++++++++++++++++-------
 test/runner.py                                 |   18 +++++++++++--
 2 files changed, 38 insertions(+), 13 deletions(-)

diff --git a/test/integ/connection/protocolinfo_response.py b/test/integ/connection/protocolinfo_response.py
index dfb5566..27b5f1f 100644
--- a/test/integ/connection/protocolinfo_response.py
+++ b/test/integ/connection/protocolinfo_response.py
@@ -21,8 +21,12 @@ class TestProtocolInfoResponse(unittest.TestCase):
     """
     
     runner = test.runner.get_runner()
+    connection_type = runner.get_connection_type()
+    
+    if connection_type == test.runner.TorConnection.NONE:
+      self.skipTest("(no connection)")
+    
     control_socket = runner.get_tor_socket(False)
-    if not control_socket: self.skipTest("(no control socket)")
     control_socket_file = control_socket.makefile()
     
     control_socket_file.write("PROTOCOLINFO\r\n")
@@ -38,15 +42,24 @@ class TestProtocolInfoResponse(unittest.TestCase):
     self.assertNotEqual(None, protocolinfo_response.tor_version)
     self.assertNotEqual(None, protocolinfo_response.auth_methods)
     
-    if runner.get_connection_type() != test.runner.TorConnection.NO_AUTH:
-      self.skipTest("(haven't yet implemented...)") # TODO: implement
-    
-    # TODO: The following is for the default integ test configuration. We
-    # should run tests that exercise all of tor's startup configs
-    # (password/cookie auth and control sockets)
-    
-    self.assertEqual((stem.connection.AuthMethod.NONE,), protocolinfo_response.auth_methods)
     self.assertEqual((), protocolinfo_response.unknown_auth_methods)
-    self.assertEqual(None, protocolinfo_response.cookie_file)
     self.assertEqual(None, protocolinfo_response.socket)
+    
+    if connection_type == test.runner.TorConnection.NO_AUTH:
+      self.assertEqual((stem.connection.AuthMethod.NONE,), protocolinfo_response.auth_methods)
+      self.assertEqual(None, protocolinfo_response.cookie_file)
+    elif connection_type == test.runner.TorConnection.PASSWORD:
+      self.assertEqual((stem.connection.AuthMethod.PASSWORD,), protocolinfo_response.auth_methods)
+      self.assertEqual(None, protocolinfo_response.cookie_file)
+    elif connection_type == test.runner.TorConnection.COOKIE:
+      self.assertEqual((stem.connection.AuthMethod.COOKIE,), protocolinfo_response.auth_methods)
+      self.assertEqual(runner.get_auth_cookie_path(), protocolinfo_response.cookie_file)
+    elif connection_type == test.runner.TorConnection.MULTIPLE:
+      self.assertEqual((stem.connection.AuthMethod.COOKIE, stem.connection.AuthMethod.PASSWORD), protocolinfo_response.auth_methods)
+      self.assertEqual(runner.get_auth_cookie_path(), protocolinfo_response.cookie_file)
+    elif connection_type == test.runner.TorConnection.SOCKET:
+      self.assertEqual((stem.connection.AuthMethod.NONE,), protocolinfo_response.auth_methods)
+      self.assertEqual(None, protocolinfo_response.cookie_file)
+    else:
+      self.fail("Unrecognized connection type: %s" % connection_type)
 
diff --git a/test/runner.py b/test/runner.py
index e39bd92..9d26deb 100644
--- a/test/runner.py
+++ b/test/runner.py
@@ -230,6 +230,20 @@ class Runner:
     test_dir = self._get("_test_dir")
     return os.path.join(test_dir, "torrc")
   
+  def get_auth_cookie_path(self):
+    """
+    Provides the absolute path for our authentication cookie if we have one.
+    
+    Returns:
+      str with our auth cookie path
+    
+    Raises:
+      RunnerStopped if we aren't running
+    """
+    
+    test_dir = self._get("_test_dir")
+    return os.path.join(test_dir, "control_auth_cookie")
+  
   def get_torrc_contents(self):
     """
     Provides the contents of our torrc.
@@ -282,7 +296,7 @@ class Runner:
     
     # TODO: replace with higher level connection functions when we have them
     
-    connection_type, test_dir = self.get_connection_type(), self._get("_test_dir")
+    connection_type, cookie_path = self.get_connection_type(), self.get_auth_cookie_path()
     if connection_type == None: return None
     
     conn_opts = CONNECTION_OPTS[connection_type]
@@ -299,8 +313,6 @@ class Runner:
       control_socket_file = control_socket.makefile()
       
       if OPT_COOKIE in conn_opts:
-        cookie_path = os.path.join(test_dir, "control_auth_cookie")
-        
         auth_cookie = open(cookie_path, "r")
         auth_cookie_contents = auth_cookie.read()
         auth_cookie.close()





More information about the tor-commits mailing list