Browse Source

1. Refactor the unittest code for cmdctl. \n2. Fix code error commentted temply in r1991. \n3. Add a new unittest for cmdctl. (Skip review)

git-svn-id: svn://bind10.isc.org/svn/bind10/trunk@2011 e5f2f494-b856-4b98-b285-d166d9295462
Likun Zhang 15 years ago
parent
commit
409e9d7818
1 changed files with 37 additions and 22 deletions
  1. 37 22
      src/bin/cmdctl/tests/cmdctl_test.py

+ 37 - 22
src/bin/cmdctl/tests/cmdctl_test.py

@@ -65,6 +65,11 @@ class TestSecureHTTPRequestHandler(unittest.TestCase):
         self.handler.server.user_sessions = {}
         self.handler.server.user_infos = {}
         self.handler.headers = {}
+        self.handler.rfile = open("check.tmp", 'w+b')
+
+    def tearDown(self):
+        self.handler.rfile.close()
+        os.remove('check.tmp')
 
     def test_parse_request_path(self):
         self.handler.path = ''
@@ -144,7 +149,6 @@ class TestSecureHTTPRequestHandler(unittest.TestCase):
         self.assertEqual(msg, ['invalid username or password'])
 
     def test_check_user_name_and_pwd_1(self):
-        self.handler.rfile = open("check.tmp", 'w+b')
         user_info = {'username':'root', 'password':'abc123'}
         len = self.handler.rfile.write(json.dumps(user_info).encode())
         self.handler.headers['Content-Length'] = len
@@ -154,11 +158,8 @@ class TestSecureHTTPRequestHandler(unittest.TestCase):
         ret, msg = self.handler._check_user_name_and_pwd()
         self.assertTrue(ret == False)
         self.assertEqual(msg, ['password doesn\'t match'])
-        self.handler.rfile.close()
-        os.remove('check.tmp')
 
     def test_check_user_name_and_pwd_2(self):
-        self.handler.rfile = open("check.tmp", 'w+b')
         user_info = {'username':'root', 'password':'abc123'}
         len = self.handler.rfile.write(json.dumps(user_info).encode())
         self.handler.headers['Content-Length'] = len - 1
@@ -167,11 +168,8 @@ class TestSecureHTTPRequestHandler(unittest.TestCase):
         ret, msg = self.handler._check_user_name_and_pwd()
         self.assertTrue(ret == False)
         self.assertEqual(msg, ['invalid username or password'])
-        self.handler.rfile.close()
-        os.remove('check.tmp')
 
     def test_check_user_name_and_pwd_3(self):
-        self.handler.rfile = open("check.tmp", 'w+b')
         user_info = {'usernae':'root', 'password':'abc123'}
         len = self.handler.rfile.write(json.dumps(user_info).encode())
         self.handler.headers['Content-Length'] = len
@@ -180,11 +178,8 @@ class TestSecureHTTPRequestHandler(unittest.TestCase):
         ret, msg = self.handler._check_user_name_and_pwd()
         self.assertTrue(ret == False)
         self.assertEqual(msg, ['need user name'])
-        self.handler.rfile.close()
-        os.remove('check.tmp')
 
     def test_check_user_name_and_pwd_4(self):
-        self.handler.rfile = open("check.tmp", 'w+b')
         user_info = {'username':'root', 'pssword':'abc123'}
         len = self.handler.rfile.write(json.dumps(user_info).encode())
         self.handler.headers['Content-Length'] = len
@@ -194,11 +189,8 @@ class TestSecureHTTPRequestHandler(unittest.TestCase):
         ret, msg = self.handler._check_user_name_and_pwd()
         self.assertTrue(ret == False)
         self.assertEqual(msg, ['need password'])
-        self.handler.rfile.close()
-        os.remove('check.tmp')
 
     def test_check_user_name_and_pwd_5(self):
-        self.handler.rfile = open("check.tmp", 'w+b')
         user_info = {'username':'root', 'password':'abc123'}
         len = self.handler.rfile.write(json.dumps(user_info).encode())
         self.handler.headers['Content-Length'] = len
@@ -207,8 +199,6 @@ class TestSecureHTTPRequestHandler(unittest.TestCase):
         ret, msg = self.handler._check_user_name_and_pwd()
         self.assertTrue(ret == False)
         self.assertEqual(msg, ['user doesn\'t exist'])
-        self.handler.rfile.close()
-        os.remove('check.tmp')
 
     def test_do_POST(self):
         self.handler.headers = {}
@@ -234,20 +224,45 @@ class TestSecureHTTPRequestHandler(unittest.TestCase):
         rcode, reply = self.handler._handle_post_request()
         self.assertEqual(http.client.BAD_REQUEST, rcode)
 
+    def _gen_module_spec(self):
+        spec = { 'commands': [ 
+                  { 'command_name' :'command', 
+                    'command_args': [ {
+                            'item_name' : 'param1',
+                            'item_type' : 'integer',
+                            'item_optional' : False,
+                            'item_default' : 0
+                           } ],
+                    'command_description' : 'cmd description'
+                  }
+                ] 
+               }
+        
+        return spec
+
     def test_handle_post_request_2(self):
-        self.handler.rfile = open("check.tmp", 'w+b')
-        params = {123:'param data'}
+        params = {'param1':123}
         len = self.handler.rfile.write(json.dumps(params).encode())
         self.handler.headers['Content-Length'] = len
+
         self.handler.rfile.seek(0, 0)
-        self.handler.rfile.close()
-        os.remove('check.tmp')
+        self.handler.path = '/module/command'
+        self.handler.server.cmdctrl.module_spec = {}
+        self.handler.server.cmdctrl.module_spec['module'] = self._gen_module_spec()
+        rcode, reply = self.handler._handle_post_request()
+        self.assertEqual(http.client.OK, rcode)
+
+    def test_handle_post_request_3(self):
+        params = {'param1':'abc'}
+        len = self.handler.rfile.write(json.dumps(params).encode())
+        self.handler.headers['Content-Length'] = len
 
+        self.handler.rfile.seek(0, 0)
         self.handler.path = '/module/command'
         self.handler.server.cmdctrl.module_spec = {}
-        self.handler.server.cmdctrl.module_spec['module'] = { 'commands': [{'command_name':'command'}, {'command_name': ['data1']} ] }
-        #rcode, reply = self.handler._handle_post_request()
-        #self.assertEqual(http.client.OK, rcode)
+        self.handler.server.cmdctrl.module_spec['module'] = self._gen_module_spec()
+        rcode, reply = self.handler._handle_post_request()
+        self.assertEqual(http.client.BAD_REQUEST, rcode)
 
 if __name__== "__main__":
     unittest.main()