Removing lxml/httplib2 depends
These depends are compat only. They dont need to be listed as deps. Change-Id: Ia5718865100148d149e9c7657ace78cb08cacbac
This commit is contained in:
		| @@ -1,10 +1,7 @@ | |||||||
| pbr>=0.5.21,<1.0 | pbr>=0.5.21,<1.0 | ||||||
| argparse | argparse | ||||||
| lxml>=2.3 |  | ||||||
| PrettyTable>=0.6,<0.8 | PrettyTable>=0.6,<0.8 | ||||||
| requests>=1.1 | requests>=1.1 | ||||||
| simplejson>=2.0.9 | simplejson>=2.0.9 | ||||||
| Babel>=1.3 | Babel>=1.3 | ||||||
| six>=1.4.1 | six>=1.4.1 | ||||||
| # Compat |  | ||||||
| httplib2 |  | ||||||
|   | |||||||
| @@ -20,7 +20,6 @@ import pickle | |||||||
| import sys | import sys | ||||||
|  |  | ||||||
| from troveclient import client | from troveclient import client | ||||||
| #from troveclient.xml import TroveXmlClient |  | ||||||
| from troveclient import exceptions | from troveclient import exceptions | ||||||
|  |  | ||||||
| from urllib import quote | from urllib import quote | ||||||
|   | |||||||
							
								
								
									
										375
									
								
								troveclient/compat/tests/test_common.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										375
									
								
								troveclient/compat/tests/test_common.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,375 @@ | |||||||
|  | import sys | ||||||
|  | import optparse | ||||||
|  | import json | ||||||
|  | import collections | ||||||
|  |  | ||||||
|  | from testtools import TestCase | ||||||
|  | from mock import Mock | ||||||
|  |  | ||||||
|  | from troveclient.compat import common | ||||||
|  | from troveclient import client | ||||||
|  |  | ||||||
|  | """ | ||||||
|  |  unit tests for common.py | ||||||
|  | """ | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class CommonTest(TestCase): | ||||||
|  |  | ||||||
|  |     def setUp(self): | ||||||
|  |         super(CommonTest, self).setUp() | ||||||
|  |         self.orig_sys_exit = sys.exit | ||||||
|  |         sys.exit = Mock(return_value=None) | ||||||
|  |  | ||||||
|  |     def tearDown(self): | ||||||
|  |         super(CommonTest, self).tearDown() | ||||||
|  |         sys.exit = self.orig_sys_exit | ||||||
|  |  | ||||||
|  |     def test_methods_of(self): | ||||||
|  |         class DummyClass: | ||||||
|  |             def dummyMethod(self): | ||||||
|  |                 print("just for test") | ||||||
|  |  | ||||||
|  |         obj = DummyClass() | ||||||
|  |         result = common.methods_of(obj) | ||||||
|  |         self.assertEqual(1, len(result)) | ||||||
|  |         method = result['dummyMethod'] | ||||||
|  |         self.assertIsNotNone(method) | ||||||
|  |  | ||||||
|  |     def test_check_for_exceptions(self): | ||||||
|  |         status = [400, 422, 500] | ||||||
|  |         for s in status: | ||||||
|  |             resp = Mock() | ||||||
|  |             #compat still uses status | ||||||
|  |             resp.status = s | ||||||
|  |             self.assertRaises(Exception, | ||||||
|  |                               common.check_for_exceptions, resp, "body") | ||||||
|  |  | ||||||
|  |         # a no-exception case | ||||||
|  |         resp = Mock() | ||||||
|  |         resp.status_code = 200 | ||||||
|  |         common.check_for_exceptions(resp, "body") | ||||||
|  |  | ||||||
|  |     def test_print_actions(self): | ||||||
|  |         cmd = "test-cmd" | ||||||
|  |         actions = {"test": "test action", "help": "help action"} | ||||||
|  |         common.print_actions(cmd, actions) | ||||||
|  |         pass | ||||||
|  |  | ||||||
|  |     def test_print_commands(self): | ||||||
|  |         commands = {"cmd-1": "cmd 1", "cmd-2": "cmd 2"} | ||||||
|  |         common.print_commands(commands) | ||||||
|  |         pass | ||||||
|  |  | ||||||
|  |     def test_limit_url(self): | ||||||
|  |         url_ = "test-url" | ||||||
|  |         limit_ = None | ||||||
|  |         marker_ = None | ||||||
|  |         self.assertEqual(url_, common.limit_url(url_)) | ||||||
|  |  | ||||||
|  |         limit_ = "test-limit" | ||||||
|  |         marker_ = "test-marker" | ||||||
|  |         expected = "test-url?marker=test-marker&limit=test-limit" | ||||||
|  |         self.assertEqual(expected, | ||||||
|  |                          common.limit_url(url_, limit=limit_, marker=marker_)) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class CliOptionsTest(TestCase): | ||||||
|  |  | ||||||
|  |     def check_default_options(self, co): | ||||||
|  |         self.assertEqual(None, co.username) | ||||||
|  |         self.assertEqual(None, co.apikey) | ||||||
|  |         self.assertEqual(None, co.tenant_id) | ||||||
|  |         self.assertEqual(None, co.auth_url) | ||||||
|  |         self.assertEqual('keystone', co.auth_type) | ||||||
|  |         self.assertEqual('database', co.service_type) | ||||||
|  |         self.assertEqual('RegionOne', co.region) | ||||||
|  |         self.assertEqual(None, co.service_url) | ||||||
|  |         self.assertFalse(co.insecure) | ||||||
|  |         self.assertFalse(co.verbose) | ||||||
|  |         self.assertFalse(co.debug) | ||||||
|  |         self.assertEqual(None, co.token) | ||||||
|  |         self.assertEqual(None, co.xml) | ||||||
|  |  | ||||||
|  |     def check_option(self, oparser, option_name): | ||||||
|  |         option = oparser.get_option("--%s" % option_name) | ||||||
|  |         self.assertNotEqual(None, option) | ||||||
|  |         if option_name in common.CliOptions.DEFAULT_VALUES: | ||||||
|  |             self.assertEqual(common.CliOptions.DEFAULT_VALUES[option_name], | ||||||
|  |                              option.default) | ||||||
|  |  | ||||||
|  |     def test___init__(self): | ||||||
|  |         co = common.CliOptions() | ||||||
|  |         self.check_default_options(co) | ||||||
|  |  | ||||||
|  |     def test_deafult(self): | ||||||
|  |         co = common.CliOptions.default() | ||||||
|  |         self.check_default_options(co) | ||||||
|  |  | ||||||
|  |     def test_load_from_file(self): | ||||||
|  |         co = common.CliOptions.load_from_file() | ||||||
|  |         self.check_default_options(co) | ||||||
|  |  | ||||||
|  |     def test_create_optparser(self): | ||||||
|  |         option_names = ["verbose", "debug", "auth_url", "username", "apikey", | ||||||
|  |                         "tenant_id", "auth_type", "service_type", | ||||||
|  |                         "service_name", "service_type", "service_name", | ||||||
|  |                         "service_url", "region", "insecure", "token", | ||||||
|  |                         "xml", "secure", "json", "terse", "hide-debug"] | ||||||
|  |  | ||||||
|  |         oparser = common.CliOptions.create_optparser(True) | ||||||
|  |         for option_name in option_names: | ||||||
|  |             self.check_option(oparser, option_name) | ||||||
|  |  | ||||||
|  |         oparser = common.CliOptions.create_optparser(False) | ||||||
|  |         for option_name in option_names: | ||||||
|  |             self.check_option(oparser, option_name) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class ArgumentRequiredTest(TestCase): | ||||||
|  |  | ||||||
|  |     def setUp(self): | ||||||
|  |         super(ArgumentRequiredTest, self).setUp() | ||||||
|  |         self.param = "test-param" | ||||||
|  |         self.arg_req = common.ArgumentRequired(self.param) | ||||||
|  |  | ||||||
|  |     def test___init__(self): | ||||||
|  |         self.assertEqual(self.param, self.arg_req.param) | ||||||
|  |  | ||||||
|  |     def test___str__(self): | ||||||
|  |         expected = 'Argument "--%s" required.' % self.param | ||||||
|  |         self.assertEqual(expected, self.arg_req.__str__()) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class CommandsBaseTest(TestCase): | ||||||
|  |  | ||||||
|  |     def setUp(self): | ||||||
|  |         super(CommandsBaseTest, self).setUp() | ||||||
|  |         self.orig_sys_exit = sys.exit | ||||||
|  |         sys.exit = Mock(return_value=None) | ||||||
|  |         parser = common.CliOptions().create_optparser(False) | ||||||
|  |         self.cmd_base = common.CommandsBase(parser) | ||||||
|  |  | ||||||
|  |     def tearDown(self): | ||||||
|  |         super(CommandsBaseTest, self).tearDown() | ||||||
|  |         sys.exit = self.orig_sys_exit | ||||||
|  |  | ||||||
|  |     def test___init__(self): | ||||||
|  |         self.assertNotEqual(None, self.cmd_base) | ||||||
|  |  | ||||||
|  |     def test__safe_exec(self): | ||||||
|  |         func = Mock(return_value="test") | ||||||
|  |         self.cmd_base.debug = True | ||||||
|  |         r = self.cmd_base._safe_exec(func) | ||||||
|  |         self.assertEqual("test", r) | ||||||
|  |  | ||||||
|  |         self.cmd_base.debug = False | ||||||
|  |         r = self.cmd_base._safe_exec(func) | ||||||
|  |         self.assertEqual("test", r) | ||||||
|  |  | ||||||
|  |         func = Mock(side_effect=ValueError)  # an arbitrary exception | ||||||
|  |         r = self.cmd_base._safe_exec(func) | ||||||
|  |         self.assertEqual(None, r) | ||||||
|  |  | ||||||
|  |     def test__prepare_parser(self): | ||||||
|  |         parser = optparse.OptionParser() | ||||||
|  |         common.CommandsBase.params = ["test_1", "test_2"] | ||||||
|  |         self.cmd_base._prepare_parser(parser) | ||||||
|  |         option = parser.get_option("--%s" % "test_1") | ||||||
|  |         self.assertNotEqual(None, option) | ||||||
|  |         option = parser.get_option("--%s" % "test_2") | ||||||
|  |         self.assertNotEqual(None, option) | ||||||
|  |  | ||||||
|  |     def test__parse_options(self): | ||||||
|  |         parser = optparse.OptionParser() | ||||||
|  |         parser.add_option("--%s" % "test_1", default="test_1v") | ||||||
|  |         parser.add_option("--%s" % "test_2", default="test_2v") | ||||||
|  |         self.cmd_base._parse_options(parser) | ||||||
|  |         self.assertEqual("test_1v", self.cmd_base.test_1) | ||||||
|  |         self.assertEqual("test_2v", self.cmd_base.test_2) | ||||||
|  |  | ||||||
|  |     def test__require(self): | ||||||
|  |         self.assertRaises(common.ArgumentRequired, | ||||||
|  |                           self.cmd_base._require, "attr_1") | ||||||
|  |         self.cmd_base.attr_1 = None | ||||||
|  |         self.assertRaises(common.ArgumentRequired, | ||||||
|  |                           self.cmd_base._require, "attr_1") | ||||||
|  |         self.cmd_base.attr_1 = "attr_v1" | ||||||
|  |         self.cmd_base._require("attr_1") | ||||||
|  |  | ||||||
|  |     def test__make_list(self): | ||||||
|  |         self.assertRaises(AttributeError, self.cmd_base._make_list, "attr1") | ||||||
|  |         self.cmd_base.attr1 = "v1,v2" | ||||||
|  |         self.cmd_base._make_list("attr1") | ||||||
|  |         self.assertEqual(["v1", "v2"], self.cmd_base.attr1) | ||||||
|  |         self.cmd_base.attr1 = ["v3"] | ||||||
|  |         self.cmd_base._make_list("attr1") | ||||||
|  |         self.assertEqual(["v3"], self.cmd_base.attr1) | ||||||
|  |  | ||||||
|  |     def test__pretty_print(self): | ||||||
|  |         func = Mock(return_value=None) | ||||||
|  |         self.cmd_base.verbose = True | ||||||
|  |         self.assertEqual(None, self.cmd_base._pretty_print(func)) | ||||||
|  |         self.cmd_base.verbose = False | ||||||
|  |         self.assertEqual(None, self.cmd_base._pretty_print(func)) | ||||||
|  |  | ||||||
|  |     def test__dumps(self): | ||||||
|  |         json.dumps = Mock(return_value="test-dump") | ||||||
|  |         self.assertEqual("test-dump", self.cmd_base._dumps("item")) | ||||||
|  |  | ||||||
|  |     def test__pretty_list(self): | ||||||
|  |         func = Mock(return_value=None) | ||||||
|  |         self.cmd_base.verbose = True | ||||||
|  |         self.assertEqual(None, self.cmd_base._pretty_list(func)) | ||||||
|  |         self.cmd_base.verbose = False | ||||||
|  |         self.assertEqual(None, self.cmd_base._pretty_list(func)) | ||||||
|  |         item = Mock(return_value="test") | ||||||
|  |         item._info = "info" | ||||||
|  |         func = Mock(return_value=[item]) | ||||||
|  |         self.assertEqual(None, self.cmd_base._pretty_list(func)) | ||||||
|  |  | ||||||
|  |     def test__pretty_paged(self): | ||||||
|  |         self.cmd_base.limit = "5" | ||||||
|  |         func = Mock(return_value=None) | ||||||
|  |         self.cmd_base.verbose = True | ||||||
|  |         self.assertEqual(None, self.cmd_base._pretty_paged(func)) | ||||||
|  |  | ||||||
|  |         self.cmd_base.verbose = False | ||||||
|  |  | ||||||
|  |         class MockIterable(collections.Iterable): | ||||||
|  |             links = ["item"] | ||||||
|  |             count = 1 | ||||||
|  |  | ||||||
|  |             def __iter__(self): | ||||||
|  |                 return ["item1"] | ||||||
|  |  | ||||||
|  |             def __len__(self): | ||||||
|  |                 return count | ||||||
|  |  | ||||||
|  |         ret = MockIterable() | ||||||
|  |         func = Mock(return_value=ret) | ||||||
|  |         self.assertEqual(None, self.cmd_base._pretty_paged(func)) | ||||||
|  |  | ||||||
|  |         ret.count = 0 | ||||||
|  |         self.assertEqual(None, self.cmd_base._pretty_paged(func)) | ||||||
|  |  | ||||||
|  |         func = Mock(side_effect=ValueError) | ||||||
|  |         self.assertEqual(None, self.cmd_base._pretty_paged(func)) | ||||||
|  |         self.cmd_base.debug = True | ||||||
|  |         self.cmd_base.marker = Mock() | ||||||
|  |         self.assertRaises(ValueError, self.cmd_base._pretty_paged, func) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class AuthTest(TestCase): | ||||||
|  |  | ||||||
|  |     def setUp(self): | ||||||
|  |         super(AuthTest, self).setUp() | ||||||
|  |         self.orig_sys_exit = sys.exit | ||||||
|  |         sys.exit = Mock(return_value=None) | ||||||
|  |         self.parser = common.CliOptions().create_optparser(False) | ||||||
|  |         self.auth = common.Auth(self.parser) | ||||||
|  |  | ||||||
|  |     def tearDown(self): | ||||||
|  |         super(AuthTest, self).tearDown() | ||||||
|  |         sys.exit = self.orig_sys_exit | ||||||
|  |  | ||||||
|  |     def test___init__(self): | ||||||
|  |         self.assertEqual(None, self.auth.dbaas) | ||||||
|  |         self.assertEqual(None, self.auth.apikey) | ||||||
|  |  | ||||||
|  |     def test_login(self): | ||||||
|  |         self.auth.username = "username" | ||||||
|  |         self.auth.apikey = "apikey" | ||||||
|  |         self.auth.tenant_id = "tenant_id" | ||||||
|  |         self.auth.auth_url = "auth_url" | ||||||
|  |         dbaas = Mock() | ||||||
|  |         dbaas.authenticate = Mock(return_value=None) | ||||||
|  |         dbaas.client = Mock() | ||||||
|  |         dbaas.client.auth_token = Mock() | ||||||
|  |         dbaas.client.service_url = Mock() | ||||||
|  |         self.auth._get_client = Mock(return_value=dbaas) | ||||||
|  |         self.auth.login() | ||||||
|  |  | ||||||
|  |         self.auth.debug = True | ||||||
|  |         self.auth._get_client = Mock(side_effect=ValueError) | ||||||
|  |         self.assertRaises(ValueError, self.auth.login) | ||||||
|  |  | ||||||
|  |         self.auth.debug = False | ||||||
|  |         self.auth.login() | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class AuthedCommandsBaseTest(TestCase): | ||||||
|  |  | ||||||
|  |     def setUp(self): | ||||||
|  |         super(AuthedCommandsBaseTest, self).setUp() | ||||||
|  |         self.orig_sys_exit = sys.exit | ||||||
|  |         sys.exit = Mock(return_value=None) | ||||||
|  |  | ||||||
|  |     def tearDown(self): | ||||||
|  |         super(AuthedCommandsBaseTest, self).tearDown() | ||||||
|  |         sys.exit = self.orig_sys_exit | ||||||
|  |  | ||||||
|  |     def test___init__(self): | ||||||
|  |         parser = common.CliOptions().create_optparser(False) | ||||||
|  |         common.AuthedCommandsBase.debug = True | ||||||
|  |         dbaas = Mock() | ||||||
|  |         dbaas.authenticate = Mock(return_value=None) | ||||||
|  |         dbaas.client = Mock() | ||||||
|  |         dbaas.client.auth_token = Mock() | ||||||
|  |         dbaas.client.service_url = Mock() | ||||||
|  |         dbaas.client.authenticate_with_token = Mock() | ||||||
|  |         common.AuthedCommandsBase._get_client = Mock(return_value=dbaas) | ||||||
|  |         authed_cmd = common.AuthedCommandsBase(parser) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class PaginatedTest(TestCase): | ||||||
|  |  | ||||||
|  |     def setUp(self): | ||||||
|  |         super(PaginatedTest, self).setUp() | ||||||
|  |         self.items_ = ["item1", "item2"] | ||||||
|  |         self.next_marker_ = "next-marker" | ||||||
|  |         self.links_ = ["link1", "link2"] | ||||||
|  |         self.pgn = common.Paginated(self.items_, self.next_marker_, | ||||||
|  |                                     self.links_) | ||||||
|  |  | ||||||
|  |     def tearDown(self): | ||||||
|  |         super(PaginatedTest, self).tearDown() | ||||||
|  |  | ||||||
|  |     def test___init__(self): | ||||||
|  |         self.assertEqual(self.items_, self.pgn.items) | ||||||
|  |         self.assertEqual(self.next_marker_, self.pgn.next) | ||||||
|  |         self.assertEqual(self.links_, self.pgn.links) | ||||||
|  |  | ||||||
|  |     def test___len__(self): | ||||||
|  |         self.assertEqual(len(self.items_), self.pgn.__len__()) | ||||||
|  |  | ||||||
|  |     def test___iter__(self): | ||||||
|  |         itr_expected = self.items_.__iter__() | ||||||
|  |         itr = self.pgn.__iter__() | ||||||
|  |         self.assertEqual(itr_expected.next(), itr.next()) | ||||||
|  |         self.assertEqual(itr_expected.next(), itr.next()) | ||||||
|  |         self.assertRaises(StopIteration, itr_expected.next) | ||||||
|  |         self.assertRaises(StopIteration, itr.next) | ||||||
|  |  | ||||||
|  |     def test___getitem__(self): | ||||||
|  |         self.assertEqual(self.items_[0], self.pgn.__getitem__(0)) | ||||||
|  |  | ||||||
|  |     def test___setitem__(self): | ||||||
|  |         self.pgn.__setitem__(0, "new-item") | ||||||
|  |         self.assertEqual("new-item", self.pgn.items[0]) | ||||||
|  |  | ||||||
|  |     def test___delitem(self): | ||||||
|  |         del self.pgn[0] | ||||||
|  |         self.assertEqual(1, self.pgn.__len__()) | ||||||
|  |  | ||||||
|  |     def test___reversed__(self): | ||||||
|  |         itr = self.pgn.__reversed__() | ||||||
|  |         expected = ["item2", "item1"] | ||||||
|  |         self.assertEqual("item2", itr.next()) | ||||||
|  |         self.assertEqual("item1", itr.next()) | ||||||
|  |         self.assertRaises(StopIteration, itr.next) | ||||||
|  |  | ||||||
|  |     def test___contains__(self): | ||||||
|  |         self.assertTrue(self.pgn.__contains__("item1")) | ||||||
|  |         self.assertTrue(self.pgn.__contains__("item2")) | ||||||
|  |         self.assertFalse(self.pgn.__contains__("item3")) | ||||||
| @@ -1,66 +1,19 @@ | |||||||
| import sys |  | ||||||
| import optparse |  | ||||||
| import json |  | ||||||
| import collections |  | ||||||
|  |  | ||||||
| from testtools import TestCase | from testtools import TestCase | ||||||
| from mock import Mock | from mock import Mock | ||||||
|  |  | ||||||
| from troveclient.compat import common | from troveclient import common | ||||||
| from troveclient import client |  | ||||||
|  |  | ||||||
| """ |  | ||||||
|  unit tests for common.py |  | ||||||
| """ |  | ||||||
|  |  | ||||||
|  |  | ||||||
| class CommonTest(TestCase): | class CommonTest(TestCase): | ||||||
|  |  | ||||||
|     def setUp(self): |  | ||||||
|         super(CommonTest, self).setUp() |  | ||||||
|         self.orig_sys_exit = sys.exit |  | ||||||
|         sys.exit = Mock(return_value=None) |  | ||||||
|  |  | ||||||
|     def tearDown(self): |  | ||||||
|         super(CommonTest, self).tearDown() |  | ||||||
|         sys.exit = self.orig_sys_exit |  | ||||||
|  |  | ||||||
|     def test_methods_of(self): |  | ||||||
|         class DummyClass: |  | ||||||
|             def dummyMethod(self): |  | ||||||
|                 print("just for test") |  | ||||||
|  |  | ||||||
|         obj = DummyClass() |  | ||||||
|         result = common.methods_of(obj) |  | ||||||
|         self.assertEqual(1, len(result)) |  | ||||||
|         method = result['dummyMethod'] |  | ||||||
|         self.assertIsNotNone(method) |  | ||||||
|  |  | ||||||
|     def test_check_for_exceptions(self): |     def test_check_for_exceptions(self): | ||||||
|         status = [400, 422, 500] |         status = [400, 422, 500] | ||||||
|         for s in status: |         for s in status: | ||||||
|             resp = Mock() |             resp = Mock() | ||||||
|             #compat still uses status |             resp.status_code = s | ||||||
|             resp.status = s |  | ||||||
|             self.assertRaises(Exception, |             self.assertRaises(Exception, | ||||||
|                               common.check_for_exceptions, resp, "body") |                               common.check_for_exceptions, resp, "body") | ||||||
|  |  | ||||||
|         # a no-exception case |  | ||||||
|         resp = Mock() |  | ||||||
|         resp.status_code = 200 |  | ||||||
|         common.check_for_exceptions(resp, "body") |  | ||||||
|  |  | ||||||
|     def test_print_actions(self): |  | ||||||
|         cmd = "test-cmd" |  | ||||||
|         actions = {"test": "test action", "help": "help action"} |  | ||||||
|         common.print_actions(cmd, actions) |  | ||||||
|         pass |  | ||||||
|  |  | ||||||
|     def test_print_commands(self): |  | ||||||
|         commands = {"cmd-1": "cmd 1", "cmd-2": "cmd 2"} |  | ||||||
|         common.print_commands(commands) |  | ||||||
|         pass |  | ||||||
|  |  | ||||||
|     def test_limit_url(self): |     def test_limit_url(self): | ||||||
|         url_ = "test-url" |         url_ = "test-url" | ||||||
|         limit_ = None |         limit_ = None | ||||||
| @@ -74,254 +27,6 @@ class CommonTest(TestCase): | |||||||
|                          common.limit_url(url_, limit=limit_, marker=marker_)) |                          common.limit_url(url_, limit=limit_, marker=marker_)) | ||||||
|  |  | ||||||
|  |  | ||||||
| class CliOptionsTest(TestCase): |  | ||||||
|  |  | ||||||
|     def check_default_options(self, co): |  | ||||||
|         self.assertEqual(None, co.username) |  | ||||||
|         self.assertEqual(None, co.apikey) |  | ||||||
|         self.assertEqual(None, co.tenant_id) |  | ||||||
|         self.assertEqual(None, co.auth_url) |  | ||||||
|         self.assertEqual('keystone', co.auth_type) |  | ||||||
|         self.assertEqual('database', co.service_type) |  | ||||||
|         self.assertEqual('RegionOne', co.region) |  | ||||||
|         self.assertEqual(None, co.service_url) |  | ||||||
|         self.assertFalse(co.insecure) |  | ||||||
|         self.assertFalse(co.verbose) |  | ||||||
|         self.assertFalse(co.debug) |  | ||||||
|         self.assertEqual(None, co.token) |  | ||||||
|         self.assertEqual(None, co.xml) |  | ||||||
|  |  | ||||||
|     def check_option(self, oparser, option_name): |  | ||||||
|         option = oparser.get_option("--%s" % option_name) |  | ||||||
|         self.assertNotEqual(None, option) |  | ||||||
|         if option_name in common.CliOptions.DEFAULT_VALUES: |  | ||||||
|             self.assertEqual(common.CliOptions.DEFAULT_VALUES[option_name], |  | ||||||
|                              option.default) |  | ||||||
|  |  | ||||||
|     def test___init__(self): |  | ||||||
|         co = common.CliOptions() |  | ||||||
|         self.check_default_options(co) |  | ||||||
|  |  | ||||||
|     def test_deafult(self): |  | ||||||
|         co = common.CliOptions.default() |  | ||||||
|         self.check_default_options(co) |  | ||||||
|  |  | ||||||
|     def test_load_from_file(self): |  | ||||||
|         co = common.CliOptions.load_from_file() |  | ||||||
|         self.check_default_options(co) |  | ||||||
|  |  | ||||||
|     def test_create_optparser(self): |  | ||||||
|         option_names = ["verbose", "debug", "auth_url", "username", "apikey", |  | ||||||
|                         "tenant_id", "auth_type", "service_type", |  | ||||||
|                         "service_name", "service_type", "service_name", |  | ||||||
|                         "service_url", "region", "insecure", "token", |  | ||||||
|                         "xml", "secure", "json", "terse", "hide-debug"] |  | ||||||
|  |  | ||||||
|         oparser = common.CliOptions.create_optparser(True) |  | ||||||
|         for option_name in option_names: |  | ||||||
|             self.check_option(oparser, option_name) |  | ||||||
|  |  | ||||||
|         oparser = common.CliOptions.create_optparser(False) |  | ||||||
|         for option_name in option_names: |  | ||||||
|             self.check_option(oparser, option_name) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| class ArgumentRequiredTest(TestCase): |  | ||||||
|  |  | ||||||
|     def setUp(self): |  | ||||||
|         super(ArgumentRequiredTest, self).setUp() |  | ||||||
|         self.param = "test-param" |  | ||||||
|         self.arg_req = common.ArgumentRequired(self.param) |  | ||||||
|  |  | ||||||
|     def test___init__(self): |  | ||||||
|         self.assertEqual(self.param, self.arg_req.param) |  | ||||||
|  |  | ||||||
|     def test___str__(self): |  | ||||||
|         expected = 'Argument "--%s" required.' % self.param |  | ||||||
|         self.assertEqual(expected, self.arg_req.__str__()) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| class CommandsBaseTest(TestCase): |  | ||||||
|  |  | ||||||
|     def setUp(self): |  | ||||||
|         super(CommandsBaseTest, self).setUp() |  | ||||||
|         self.orig_sys_exit = sys.exit |  | ||||||
|         sys.exit = Mock(return_value=None) |  | ||||||
|         parser = common.CliOptions().create_optparser(False) |  | ||||||
|         self.cmd_base = common.CommandsBase(parser) |  | ||||||
|  |  | ||||||
|     def tearDown(self): |  | ||||||
|         super(CommandsBaseTest, self).tearDown() |  | ||||||
|         sys.exit = self.orig_sys_exit |  | ||||||
|  |  | ||||||
|     def test___init__(self): |  | ||||||
|         self.assertNotEqual(None, self.cmd_base) |  | ||||||
|  |  | ||||||
|     def test__safe_exec(self): |  | ||||||
|         func = Mock(return_value="test") |  | ||||||
|         self.cmd_base.debug = True |  | ||||||
|         r = self.cmd_base._safe_exec(func) |  | ||||||
|         self.assertEqual("test", r) |  | ||||||
|  |  | ||||||
|         self.cmd_base.debug = False |  | ||||||
|         r = self.cmd_base._safe_exec(func) |  | ||||||
|         self.assertEqual("test", r) |  | ||||||
|  |  | ||||||
|         func = Mock(side_effect=ValueError)  # an arbitrary exception |  | ||||||
|         r = self.cmd_base._safe_exec(func) |  | ||||||
|         self.assertEqual(None, r) |  | ||||||
|  |  | ||||||
|     def test__prepare_parser(self): |  | ||||||
|         parser = optparse.OptionParser() |  | ||||||
|         common.CommandsBase.params = ["test_1", "test_2"] |  | ||||||
|         self.cmd_base._prepare_parser(parser) |  | ||||||
|         option = parser.get_option("--%s" % "test_1") |  | ||||||
|         self.assertNotEqual(None, option) |  | ||||||
|         option = parser.get_option("--%s" % "test_2") |  | ||||||
|         self.assertNotEqual(None, option) |  | ||||||
|  |  | ||||||
|     def test__parse_options(self): |  | ||||||
|         parser = optparse.OptionParser() |  | ||||||
|         parser.add_option("--%s" % "test_1", default="test_1v") |  | ||||||
|         parser.add_option("--%s" % "test_2", default="test_2v") |  | ||||||
|         self.cmd_base._parse_options(parser) |  | ||||||
|         self.assertEqual("test_1v", self.cmd_base.test_1) |  | ||||||
|         self.assertEqual("test_2v", self.cmd_base.test_2) |  | ||||||
|  |  | ||||||
|     def test__require(self): |  | ||||||
|         self.assertRaises(common.ArgumentRequired, |  | ||||||
|                           self.cmd_base._require, "attr_1") |  | ||||||
|         self.cmd_base.attr_1 = None |  | ||||||
|         self.assertRaises(common.ArgumentRequired, |  | ||||||
|                           self.cmd_base._require, "attr_1") |  | ||||||
|         self.cmd_base.attr_1 = "attr_v1" |  | ||||||
|         self.cmd_base._require("attr_1") |  | ||||||
|  |  | ||||||
|     def test__make_list(self): |  | ||||||
|         self.assertRaises(AttributeError, self.cmd_base._make_list, "attr1") |  | ||||||
|         self.cmd_base.attr1 = "v1,v2" |  | ||||||
|         self.cmd_base._make_list("attr1") |  | ||||||
|         self.assertEqual(["v1", "v2"], self.cmd_base.attr1) |  | ||||||
|         self.cmd_base.attr1 = ["v3"] |  | ||||||
|         self.cmd_base._make_list("attr1") |  | ||||||
|         self.assertEqual(["v3"], self.cmd_base.attr1) |  | ||||||
|  |  | ||||||
|     def test__pretty_print(self): |  | ||||||
|         func = Mock(return_value=None) |  | ||||||
|         self.cmd_base.verbose = True |  | ||||||
|         self.assertEqual(None, self.cmd_base._pretty_print(func)) |  | ||||||
|         self.cmd_base.verbose = False |  | ||||||
|         self.assertEqual(None, self.cmd_base._pretty_print(func)) |  | ||||||
|  |  | ||||||
|     def test__dumps(self): |  | ||||||
|         json.dumps = Mock(return_value="test-dump") |  | ||||||
|         self.assertEqual("test-dump", self.cmd_base._dumps("item")) |  | ||||||
|  |  | ||||||
|     def test__pretty_list(self): |  | ||||||
|         func = Mock(return_value=None) |  | ||||||
|         self.cmd_base.verbose = True |  | ||||||
|         self.assertEqual(None, self.cmd_base._pretty_list(func)) |  | ||||||
|         self.cmd_base.verbose = False |  | ||||||
|         self.assertEqual(None, self.cmd_base._pretty_list(func)) |  | ||||||
|         item = Mock(return_value="test") |  | ||||||
|         item._info = "info" |  | ||||||
|         func = Mock(return_value=[item]) |  | ||||||
|         self.assertEqual(None, self.cmd_base._pretty_list(func)) |  | ||||||
|  |  | ||||||
|     def test__pretty_paged(self): |  | ||||||
|         self.cmd_base.limit = "5" |  | ||||||
|         func = Mock(return_value=None) |  | ||||||
|         self.cmd_base.verbose = True |  | ||||||
|         self.assertEqual(None, self.cmd_base._pretty_paged(func)) |  | ||||||
|  |  | ||||||
|         self.cmd_base.verbose = False |  | ||||||
|  |  | ||||||
|         class MockIterable(collections.Iterable): |  | ||||||
|             links = ["item"] |  | ||||||
|             count = 1 |  | ||||||
|  |  | ||||||
|             def __iter__(self): |  | ||||||
|                 return ["item1"] |  | ||||||
|  |  | ||||||
|             def __len__(self): |  | ||||||
|                 return count |  | ||||||
|  |  | ||||||
|         ret = MockIterable() |  | ||||||
|         func = Mock(return_value=ret) |  | ||||||
|         self.assertEqual(None, self.cmd_base._pretty_paged(func)) |  | ||||||
|  |  | ||||||
|         ret.count = 0 |  | ||||||
|         self.assertEqual(None, self.cmd_base._pretty_paged(func)) |  | ||||||
|  |  | ||||||
|         func = Mock(side_effect=ValueError) |  | ||||||
|         self.assertEqual(None, self.cmd_base._pretty_paged(func)) |  | ||||||
|         self.cmd_base.debug = True |  | ||||||
|         self.cmd_base.marker = Mock() |  | ||||||
|         self.assertRaises(ValueError, self.cmd_base._pretty_paged, func) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| class AuthTest(TestCase): |  | ||||||
|  |  | ||||||
|     def setUp(self): |  | ||||||
|         super(AuthTest, self).setUp() |  | ||||||
|         self.orig_sys_exit = sys.exit |  | ||||||
|         sys.exit = Mock(return_value=None) |  | ||||||
|         self.parser = common.CliOptions().create_optparser(False) |  | ||||||
|         self.auth = common.Auth(self.parser) |  | ||||||
|  |  | ||||||
|     def tearDown(self): |  | ||||||
|         super(AuthTest, self).tearDown() |  | ||||||
|         sys.exit = self.orig_sys_exit |  | ||||||
|  |  | ||||||
|     def test___init__(self): |  | ||||||
|         self.assertEqual(None, self.auth.dbaas) |  | ||||||
|         self.assertEqual(None, self.auth.apikey) |  | ||||||
|  |  | ||||||
|     def test_login(self): |  | ||||||
|         self.auth.username = "username" |  | ||||||
|         self.auth.apikey = "apikey" |  | ||||||
|         self.auth.tenant_id = "tenant_id" |  | ||||||
|         self.auth.auth_url = "auth_url" |  | ||||||
|         dbaas = Mock() |  | ||||||
|         dbaas.authenticate = Mock(return_value=None) |  | ||||||
|         dbaas.client = Mock() |  | ||||||
|         dbaas.client.auth_token = Mock() |  | ||||||
|         dbaas.client.service_url = Mock() |  | ||||||
|         self.auth._get_client = Mock(return_value=dbaas) |  | ||||||
|         self.auth.login() |  | ||||||
|  |  | ||||||
|         self.auth.debug = True |  | ||||||
|         self.auth._get_client = Mock(side_effect=ValueError) |  | ||||||
|         self.assertRaises(ValueError, self.auth.login) |  | ||||||
|  |  | ||||||
|         self.auth.debug = False |  | ||||||
|         self.auth.login() |  | ||||||
|  |  | ||||||
|  |  | ||||||
| class AuthedCommandsBaseTest(TestCase): |  | ||||||
|  |  | ||||||
|     def setUp(self): |  | ||||||
|         super(AuthedCommandsBaseTest, self).setUp() |  | ||||||
|         self.orig_sys_exit = sys.exit |  | ||||||
|         sys.exit = Mock(return_value=None) |  | ||||||
|  |  | ||||||
|     def tearDown(self): |  | ||||||
|         super(AuthedCommandsBaseTest, self).tearDown() |  | ||||||
|         sys.exit = self.orig_sys_exit |  | ||||||
|  |  | ||||||
|     def test___init__(self): |  | ||||||
|         parser = common.CliOptions().create_optparser(False) |  | ||||||
|         common.AuthedCommandsBase.debug = True |  | ||||||
|         dbaas = Mock() |  | ||||||
|         dbaas.authenticate = Mock(return_value=None) |  | ||||||
|         dbaas.client = Mock() |  | ||||||
|         dbaas.client.auth_token = Mock() |  | ||||||
|         dbaas.client.service_url = Mock() |  | ||||||
|         dbaas.client.authenticate_with_token = Mock() |  | ||||||
|         common.AuthedCommandsBase._get_client = Mock(return_value=dbaas) |  | ||||||
|         authed_cmd = common.AuthedCommandsBase(parser) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| class PaginatedTest(TestCase): | class PaginatedTest(TestCase): | ||||||
|  |  | ||||||
|     def setUp(self): |     def setUp(self): | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Michael Basnight
					Michael Basnight