| Current File : /home/jvzmxxx/wiki/extensions/EventLogging/server/tests/test_utils.py |
# -*- coding: utf-8 -*-
"""
eventlogging unit tests
~~~~~~~~~~~~~~~~~~~~~~~
This module contains tests for :module:`eventlogging.utils`.
"""
from __future__ import unicode_literals
import unittest
import eventlogging
class FlattenUnflattenTestCase(unittest.TestCase):
"""Test cases for :func:`eventlogging.utils.flatten` and
:func:`eventlogging.utils.unflatten`."""
deep = {'k1': 'v1', 'k2': 'v2', 'k3': {'k3a': {'k3b': 'v3b'}}}
flat = {'k1': 'v1', 'k2': 'v2', 'k3_k3a_k3b': 'v3b'}
def test_flatten(self):
"""``flatten`` flattens a dictionary with nested dictionary values."""
flattened = eventlogging.utils.flatten(self.deep)
self.assertEqual(flattened, self.flat)
def test_unflatten(self):
"""``unflatten`` makes a flattened dictionary deep again."""
unflattened = eventlogging.utils.unflatten(self.flat)
self.assertEqual(unflattened, self.deep)
def test_flatten_unflatten_inverses(self):
"""``flatten`` and ``unflatten`` are inverse functions."""
self.assertEqual(eventlogging.utils.flatten(
eventlogging.utils.unflatten(self.flat)), self.flat)
self.assertEqual(eventlogging.utils.unflatten(
eventlogging.utils.flatten(self.deep)), self.deep)
class UtilsTestCase(unittest.TestCase):
"""Test case for :module:`eventlogging.utils`."""
def test_uri_delete_query_item(self):
"""``uri_delete_query_item`` deletes a query item from a URL."""
uri = 'http://www.com?aa=aa&bb=bb&cc=cc'
test_data = (
('aa', 'http://www.com?bb=bb&cc=cc'),
('bb', 'http://www.com?aa=aa&cc=cc'),
('cc', 'http://www.com?aa=aa&bb=bb'),
)
for key, expected_uri in test_data:
actual_uri = eventlogging.uri_delete_query_item(uri, key)
self.assertEqual(actual_uri, expected_uri)
def test_update_recursive(self):
"""``update_recursive`` updates a dictionary recursively."""
target = {'k1': {'k2': {'k3': 'v3'}}}
source = {'k1': {'k2': {'k4': 'v4'}}}
result = {'k1': {'k2': {'k3': 'v3', 'k4': 'v4'}}}
eventlogging.utils.update_recursive(target, source)
self.assertEqual(target, result)
def test_is_subset_dict(self):
"""``is_subset_dict`` can tell whether a dictionary is a subset
of another dictionary."""
map = {'k1': {'k2': 'v2', 'k3': 'v3'}, 'k4': 'v4'}
subset = {'k1': {'k3': 'v3'}}
not_subset = {'k1': {'k4': 'v4'}}
self.assertTrue(eventlogging.utils.is_subset_dict(subset, map))
self.assertFalse(eventlogging.utils.is_subset_dict(not_subset, map))
def test_parse_etcd_uri(self):
"""`parse_etcd_uri` returns proper kwargs from uri"""
etcd_uri = 'https://hostA:123,hostB:234?' \
'cert=/path/to/cert&allow_redirect=True'
print("URI %s" % etcd_uri)
etcd_kwargs = eventlogging.utils.parse_etcd_uri(etcd_uri)
expected_kwargs = {
'protocol': 'https',
'host': (('hostA', 123), ('hostB', 234)),
'cert': '/path/to/cert',
'allow_redirect': True
}
for key in expected_kwargs.keys():
self.assertEqual(etcd_kwargs[key], expected_kwargs[key])