diff options
author | Colin Watson <cjwatson@debian.org> | 2017-10-31 10:34:41 +0000 |
---|---|---|
committer | Colin Watson <cjwatson@debian.org> | 2017-10-31 10:34:41 +0000 |
commit | 79ff2842fa477ee0693ea167c0a74cd7cf080d27 (patch) | |
tree | d0eb436672c1a73088fce42f939bdf4cf6f4427b /macaroonbakery/tests/test_namespace.py |
Import py-macaroon-bakery_0.0.3.orig.tar.gz
Diffstat (limited to 'macaroonbakery/tests/test_namespace.py')
-rw-r--r-- | macaroonbakery/tests/test_namespace.py | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/macaroonbakery/tests/test_namespace.py b/macaroonbakery/tests/test_namespace.py new file mode 100644 index 0000000..24eda29 --- /dev/null +++ b/macaroonbakery/tests/test_namespace.py @@ -0,0 +1,58 @@ +# Copyright 2017 Canonical Ltd. +# Licensed under the LGPLv3, see LICENCE file for details. + +from unittest import TestCase + +from macaroonbakery import namespace + + +class TestNamespace(TestCase): + def test_serialize(self): + tests = [ + ('empty namespace', None, b''), + ('standard namespace', {'std': ''}, b'std:'), + ('several elements', { + 'std': '', + 'http://blah.blah': 'blah', + 'one': 'two', + 'foo.com/x.v0.1': 'z', + }, b'foo.com/x.v0.1:z http://blah.blah:blah one:two std:'), + ('sort by URI not by field', { + 'a': 'one', + 'a1': 'two', + }, b'a:one a1:two') + ] + for test in tests: + ns = namespace.Namespace(test[1]) + data = ns.serialize() + self.assertEquals(data, test[2]) + self.assertEquals(str(ns), test[2].decode('utf-8')) + + # Check that it can be deserialize to the same thing: + ns1 = namespace.deserialize_namespace(data) + self.assertEquals(ns1, ns) + + def test_register(self): + ns = namespace.Namespace(None) + ns.register('testns', 't') + prefix = ns.resolve('testns') + self.assertEquals(prefix, 't') + + ns.register('other', 'o') + prefix = ns.resolve('other') + self.assertEquals(prefix, 'o') + + # If we re-register the same URL, it does nothing. + ns.register('other', 'p') + prefix = ns.resolve('other') + self.assertEquals(prefix, 'o') + + def test_register_bad_uri(self): + ns = namespace.Namespace(None) + with self.assertRaises(KeyError): + ns.register('', 'x') + + def test_register_bad_prefix(self): + ns = namespace.Namespace(None) + with self.assertRaises(ValueError): + ns.register('std', 'x:1') |