From 7af92d9e652e20cd4b2a85616075b656f146bc04 Mon Sep 17 00:00:00 2001 From: fonfon Date: Sun, 3 May 2015 17:53:56 +0200 Subject: [PATCH] Updated unit- and doctests --- actions/pagekite_util.py | 31 ++++++++++++++++++- plinth/modules/__init__.py | 0 plinth/modules/pagekite/util.py | 16 ++++++++-- ...t_pagekite_actions.py => test_pagekite.py} | 18 +---------- 4 files changed, 44 insertions(+), 21 deletions(-) create mode 100644 plinth/modules/__init__.py rename plinth/tests/{test_pagekite_actions.py => test_pagekite.py} (76%) diff --git a/actions/pagekite_util.py b/actions/pagekite_util.py index b96786fe4..c41f5b052 100644 --- a/actions/pagekite_util.py +++ b/actions/pagekite_util.py @@ -95,7 +95,31 @@ def convert_service_to_string(service): def get_augeas_servicefile_path(protocol): - """Get the augeas path where a service for a protocol should be stored""" + """Get the augeas path where a service for a protocol should be stored + + TODO: Use doctests instead of unittests until we can use python3. + + >>> get_augeas_servicefile_path('http') + '/files/etc/pagekite.d/80_http.rc/service_on' + + >>> get_augeas_servicefile_path('https') + '/files/etc/pagekite.d/443_https.rc/service_on' + + >>> get_augeas_servicefile_path('http/80') + '/files/etc/pagekite.d/80_http.rc/service_on' + + >>> get_augeas_servicefile_path('http/8080') + '/files/etc/pagekite.d/8080_http.rc/service_on' + + >>> get_augeas_servicefile_path('raw/22') + '/files/etc/pagekite.d/22_raw.rc/service_on' + + >>> get_augeas_servicefile_path('xmpp') + Traceback (most recent call last): + ... + ValueError: Unsupported protocol: xmpp + + """ if not protocol.startswith(("http", "https", "raw")): raise ValueError('Unsupported protocol: %s' % protocol) @@ -112,3 +136,8 @@ def get_augeas_servicefile_path(protocol): relpath = '%s_%s.rc' % (port, _protocol) return os.path.join(CONF_PATH, relpath, 'service_on') + + +if __name__ == "__main__": + import doctest + doctest.testmod() diff --git a/plinth/modules/__init__.py b/plinth/modules/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/plinth/modules/pagekite/util.py b/plinth/modules/pagekite/util.py index d6c52b7dd..d5d79983e 100644 --- a/plinth/modules/pagekite/util.py +++ b/plinth/modules/pagekite/util.py @@ -73,9 +73,14 @@ PREDEFINED_SERVICES = { def convert_to_service(service_string): """ Convert a service string into a service parameter dictionary - >>> convert_to_service('https/443:@kitename:localhost:443:@kitesecret') - {'kitename': '@kitename', 'backend_host': 'localhost', \ -'secret': '@kitesecret', 'protocol': 'https/443', 'backend_port': '443'} + >>> input = 'https/443:@kitename:localhost:443:@kitesecret' + >>> output = convert_to_service(input) + >>> expected_output = {'secret': '@kitesecret', + ... 'backend_host': 'localhost', 'kitename': '@kitename', + ... 'backend_port': '443', 'protocol': 'https/443'} + ... + >>> output == expected_output + True """ # The actions.py uses shlex.quote() to escape/quote malicious user input. # That affects '*.@kitename', so the params string gets quoted. @@ -193,3 +198,8 @@ def _run(arguments, superuser=True): return actions.superuser_run(command, arguments) else: return actions.run(command, arguments) + + +if __name__ == "__main__": + import doctest + doctest.testmod() diff --git a/plinth/tests/test_pagekite_actions.py b/plinth/tests/test_pagekite.py similarity index 76% rename from plinth/tests/test_pagekite_actions.py rename to plinth/tests/test_pagekite.py index c5904383e..2fc04f597 100644 --- a/plinth/tests/test_pagekite_actions.py +++ b/plinth/tests/test_pagekite.py @@ -1,3 +1,4 @@ +#!/usr/bin/python3 # # This file is part of Plinth. # @@ -15,10 +16,8 @@ # along with this program. If not, see . # -import os import unittest -from actions.pagekite_util import get_augeas_servicefile_path, CONF_PATH from plinth.modules.pagekite.util import convert_to_service, \ convert_service_to_string @@ -50,21 +49,6 @@ class TestPagekiteActions(unittest.TestCase): }, ] - def test_get_augeas_servicefile_path(self): - """ Test the generation of augeas-paths for pagekite services """ - tests = (('http', '80_http.rc'), - ('https', '443_https.rc'), - ('http/80', '80_http.rc'), - ('http/8080', '8080_http.rc'), - ('raw/22', '22_raw.rc')) - for protocol, filename in tests: - expected_path = os.path.join(CONF_PATH, filename, 'service_on') - returned_path = get_augeas_servicefile_path(protocol) - self.assertEqual(expected_path, returned_path) - - with self.assertRaises(ValueError): - get_augeas_servicefile_path('xmpp') - def test_convert_service_to_string(self): """ Test deconstructing parameter dictionaries into strings """ for test in self._tests: