Michael Basnight fd43cbd73b Massive refactoring to the troveclient
The new client adheres to the standards of the other clients
now. It prints out tables, uses ENVVAR's for auth, no longer
stores pickled json in a login token, uses openstack common,
and moves the cli operations into a v1 module for the future
of trove when it has a v2 api.

Please note for compatibility, the troveclient.compat module
has the old cli. In order to deploy it, amend the setup.cfg
to include the compat module.

implements blueprint cli-compliance-upgrade

Change-Id: Ie69d9dbc75ce90496da316244c97acca1877a327
2013-10-09 19:21:08 -07:00

85 lines
2.8 KiB
Python

from testtools import TestCase
from mock import Mock
from troveclient.v1 import accounts
from troveclient import base
"""
Unit tests for accounts.py
"""
class AccountTest(TestCase):
def setUp(self):
super(AccountTest, self).setUp()
self.orig__init = accounts.Account.__init__
accounts.Account.__init__ = Mock(return_value=None)
self.account = accounts.Account()
def tearDown(self):
super(AccountTest, self).tearDown()
accounts.Account.__init__ = self.orig__init
def test___repr__(self):
self.account.name = "account-1"
self.assertEqual('<Account: account-1>', self.account.__repr__())
class AccountsTest(TestCase):
def setUp(self):
super(AccountsTest, self).setUp()
self.orig__init = accounts.Accounts.__init__
accounts.Accounts.__init__ = Mock(return_value=None)
self.accounts = accounts.Accounts()
self.accounts.api = Mock()
self.accounts.api.client = Mock()
def tearDown(self):
super(AccountsTest, self).tearDown()
accounts.Accounts.__init__ = self.orig__init
def test__list(self):
def side_effect_func(self, val):
return val
self.accounts.resource_class = Mock(side_effect=side_effect_func)
key_ = 'key'
body_ = {key_: "test-value"}
self.accounts.api.client.get = Mock(return_value=('resp', body_))
self.assertEqual("test-value", self.accounts._list('url', key_))
self.accounts.api.client.get = Mock(return_value=('resp', None))
self.assertRaises(Exception, self.accounts._list, 'url', None)
def test_index(self):
resp = Mock()
resp.status_code = 400
body = {"Accounts": {}}
self.accounts.api.client.get = Mock(return_value=(resp, body))
self.assertRaises(Exception, self.accounts.index)
resp.status_code = 200
self.assertTrue(isinstance(self.accounts.index(), base.Resource))
self.accounts.api.client.get = Mock(return_value=(resp, None))
self.assertRaises(Exception, self.accounts.index)
def test_show(self):
def side_effect_func(acct_name, acct):
return acct_name, acct
account_ = Mock()
account_.name = "test-account"
self.accounts._list = Mock(side_effect=side_effect_func)
self.assertEqual(('/mgmt/accounts/test-account', 'account'),
self.accounts.show(account_))
def test__get_account_name(self):
account_ = 'account with no name'
self.assertEqual(account_,
accounts.Accounts._get_account_name(account_))
account_ = Mock()
account_.name = "account-name"
self.assertEqual("account-name",
accounts.Accounts._get_account_name(account_))