78 lines
3.5 KiB
Python
78 lines
3.5 KiB
Python
from .testlib import TestCase
|
|
|
|
import logging
|
|
import os.path
|
|
import re
|
|
import unittest
|
|
from resync.client_utils import init_logging, count_true_args, parse_links, parse_link, parse_capabilities, parse_capability_lists
|
|
from resync.client import ClientFatalError
|
|
|
|
|
|
class TestClientUtils(TestCase):
|
|
|
|
def test01_init_logging(self):
|
|
# to_file=False, logfile=None, default_logfile='/tmp/resync.log',
|
|
# human=True, verbose=False, eval_mode=False,
|
|
# default_logger='client', extra_loggers=None):
|
|
tmplog = os.path.join(self.tmpdir, 'tmp.log')
|
|
init_logging(to_file=True, default_logfile=tmplog,
|
|
extra_loggers=['x1', 'x2'])
|
|
# check x1 and x2 set, not x3 (can tell by level)
|
|
self.assertTrue(logging.getLogger('x1').level, logging.DEBUG)
|
|
self.assertTrue(logging.getLogger('x2').level, logging.DEBUG)
|
|
self.assertEqual(logging.getLogger('x3').level, 0)
|
|
# write something, check goes to file
|
|
log = logging.getLogger('resync')
|
|
log.warning('PIGS MIGHT FLY')
|
|
logtxt = open(tmplog, 'r').read()
|
|
self.assertTrue(re.search(r'WARNING \| PIGS MIGHT FLY', logtxt))
|
|
|
|
def test02_count_true_args(self):
|
|
self.assertEqual(count_true_args(), 0)
|
|
self.assertEqual(count_true_args(True), 1)
|
|
self.assertEqual(count_true_args(False), 0)
|
|
self.assertEqual(count_true_args(0, 1, 2, 3), 3)
|
|
|
|
def test03_parse_links(self):
|
|
self.assertEqual(parse_links([]), [])
|
|
self.assertEqual(parse_links(['u,h']), [{'href': 'h', 'rel': 'u'}])
|
|
self.assertEqual(parse_links(['u,h', 'v,i']), [
|
|
{'href': 'h', 'rel': 'u'}, {'href': 'i', 'rel': 'v'}])
|
|
self.assertRaises(ClientFatalError, parse_links, 'xx')
|
|
self.assertRaises(ClientFatalError, parse_links, ['u'])
|
|
self.assertRaises(ClientFatalError, parse_links, ['u,h', 'u'])
|
|
|
|
def test04_parse_link(self):
|
|
# Input string of the form: rel,href,att1=val1,att2=val2
|
|
self.assertEqual(parse_link('u,h'), {'href': 'h', 'rel': 'u'})
|
|
self.assertEqual(parse_link('u,h,a=b'), {
|
|
'a': 'b', 'href': 'h', 'rel': 'u'})
|
|
self.assertEqual(parse_link('u,h,a=b,c=d'), {
|
|
'a': 'b', 'c': 'd', 'href': 'h', 'rel': 'u'})
|
|
self.assertEqual(parse_link('u,h,a=b,a=d'), {
|
|
'a': 'd', 'href': 'h', 'rel': 'u'}) # desired??
|
|
self.assertRaises(ClientFatalError, parse_link, '')
|
|
self.assertRaises(ClientFatalError, parse_link, 'u')
|
|
self.assertRaises(ClientFatalError, parse_link, 'u,')
|
|
self.assertRaises(ClientFatalError, parse_link, 'u,h,,')
|
|
self.assertRaises(ClientFatalError, parse_link, 'u,h,a')
|
|
self.assertRaises(ClientFatalError, parse_link, 'u,h,a=')
|
|
self.assertRaises(ClientFatalError, parse_link, 'u,h,a=b,=c')
|
|
|
|
def test05_parse_capabilities(self):
|
|
# Input string of the form: cap_name=uri,cap_name=uri
|
|
# good
|
|
c = parse_capabilities('a=')
|
|
self.assertEqual(len(c), 1)
|
|
self.assertEqual(c['a'], '')
|
|
c = parse_capabilities('a=b,c=')
|
|
self.assertEqual(len(c), 2)
|
|
self.assertEqual(c['a'], 'b')
|
|
# bad
|
|
self.assertRaises(ClientFatalError, parse_capabilities, 'a')
|
|
self.assertRaises(ClientFatalError, parse_capabilities, 'a=b,')
|
|
|
|
def test06_parse_capability_lists(self):
|
|
# Input string of the form: uri,uri
|
|
self.assertEqual(parse_capability_lists('a,b'), ['a', 'b'])
|