charm-ceilometer/unit_tests/test_ceilometer_contexts.py

90 lines
3.2 KiB
Python

from mock import patch
import ceilometer_contexts as contexts
from test_utils import CharmTestCase, mock_open
TO_PATCH = [
'relation_get',
'relation_ids',
'related_units',
'config'
]
class CeilometerContextsTest(CharmTestCase):
def setUp(self):
super(CeilometerContextsTest, self).setUp(contexts, TO_PATCH)
self.config.side_effect = self.test_config.get
self.relation_get.side_effect = self.test_relation.get
def tearDown(self):
super(CeilometerContextsTest, self).tearDown()
def test_logging_context(self):
self.test_config.set('debug', False)
self.test_config.set('verbose', False)
self.assertEquals(contexts.LoggingConfigContext()(),
{'debug': False, 'verbose': False})
self.test_config.set('debug', True)
self.test_config.set('verbose', False)
self.assertEquals(contexts.LoggingConfigContext()(),
{'debug': True, 'verbose': False})
self.test_config.set('debug', True)
self.test_config.set('verbose', True)
self.assertEquals(contexts.LoggingConfigContext()(),
{'debug': True, 'verbose': True})
def test_mongodb_context_not_related(self):
self.relation_ids.return_value = []
self.assertEquals(contexts.MongoDBContext()(), {})
def test_mongodb_context_related(self):
self.relation_ids.return_value = ['shared-db:0']
self.related_units.return_value = ['mongodb/0']
data = {
'hostname': 'mongodb',
'port': 8090
}
self.test_relation.set(data)
self.assertEquals(contexts.MongoDBContext()(),
{'db_host': 'mongodb', 'db_port': 8090,
'db_name': 'ceilometer'})
@patch.object(contexts, 'get_shared_secret')
def test_ceilometer_context(self, secret):
secret.return_value = 'mysecret'
self.assertEquals(contexts.CeilometerContext()(),
{'port': 8777, 'metering_secret': 'mysecret'})
def test_ceilometer_service_context(self):
self.relation_ids.return_value = ['ceilometer-service:0']
self.related_units.return_value = ['ceilometer/0']
data = {
'metering_secret': 'mysecret',
'keystone_host': 'test'
}
self.test_relation.set(data)
self.assertEquals(contexts.CeilometerServiceContext()(), data)
def test_ceilometer_service_context_not_related(self):
self.relation_ids.return_value = []
self.assertEquals(contexts.CeilometerServiceContext()(), {})
@patch('os.path.exists')
def test_get_shared_secret_existing(self, exists):
exists.return_value = True
with mock_open(contexts.SHARED_SECRET, u'mysecret'):
self.assertEquals(contexts.get_shared_secret(),
'mysecret')
@patch('uuid.uuid4')
@patch('os.path.exists')
def test_get_shared_secret_new(self, exists, uuid4):
exists.return_value = False
uuid4.return_value = 'newsecret'
with patch('__builtin__.open'):
self.assertEquals(contexts.get_shared_secret(),
'newsecret')