forked from openlp/openlp
Add tests for new registry function
This commit is contained in:
parent
05be4e606c
commit
fad8b35660
@ -24,6 +24,7 @@ Provide Registry Services
|
|||||||
"""
|
"""
|
||||||
import logging
|
import logging
|
||||||
import sys
|
import sys
|
||||||
|
import re
|
||||||
|
|
||||||
from openlp.core.common import trace_error_handler
|
from openlp.core.common import trace_error_handler
|
||||||
|
|
||||||
@ -56,6 +57,7 @@ class Registry(object):
|
|||||||
registry.service_list = {}
|
registry.service_list = {}
|
||||||
registry.functions_list = {}
|
registry.functions_list = {}
|
||||||
registry.working_flags = {}
|
registry.working_flags = {}
|
||||||
|
registry.remote_apis = {}
|
||||||
# Allow the tests to remove Registry entries but not the live system
|
# Allow the tests to remove Registry entries but not the live system
|
||||||
registry.running_under_test = 'nose' in sys.argv[0]
|
registry.running_under_test = 'nose' in sys.argv[0]
|
||||||
registry.initialising = True
|
registry.initialising = True
|
||||||
@ -176,3 +178,29 @@ class Registry(object):
|
|||||||
"""
|
"""
|
||||||
if key in self.working_flags:
|
if key in self.working_flags:
|
||||||
del self.working_flags[key]
|
del self.working_flags[key]
|
||||||
|
|
||||||
|
def remote_api(self, path, function, secure=False):
|
||||||
|
"""
|
||||||
|
Sets a working_flag based on the key passed in.
|
||||||
|
|
||||||
|
:param path: The working_flag to be created this is usually a major class like "renderer" or "main_window" .
|
||||||
|
:param function: The data to be saved.
|
||||||
|
:param secure: The data to be saved.
|
||||||
|
"""
|
||||||
|
self.remote_apis[path] = {'function': function, 'secure': secure}
|
||||||
|
|
||||||
|
def remote_execute(self, url_path):
|
||||||
|
"""
|
||||||
|
Execute all the handlers associated with the event and return an array of results.
|
||||||
|
|
||||||
|
:param url_path: The url path to be found
|
||||||
|
"""
|
||||||
|
for url, funcs in self.remote_apis.items():
|
||||||
|
a = url
|
||||||
|
match = re.match(url, url_path)
|
||||||
|
if match:
|
||||||
|
log.debug('Route "{route}" matched "{path}"'.format(route=url_path, path=url_path))
|
||||||
|
args = []
|
||||||
|
for param in match.groups():
|
||||||
|
args.append(param)
|
||||||
|
return funcs, args
|
||||||
|
@ -25,8 +25,6 @@ The :mod:`http` module contains the API web server. This is a lightweight web se
|
|||||||
with OpenLP. It uses JSON to communicate with the remotes.
|
with OpenLP. It uses JSON to communicate with the remotes.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import ssl
|
|
||||||
import socket
|
|
||||||
import logging
|
import logging
|
||||||
import time
|
import time
|
||||||
|
|
||||||
|
@ -149,3 +149,24 @@ class TestRegistry(TestCase):
|
|||||||
|
|
||||||
def dummy_function_2(self):
|
def dummy_function_2(self):
|
||||||
return "function_2"
|
return "function_2"
|
||||||
|
|
||||||
|
def test_registry_remote_apis(self):
|
||||||
|
"""
|
||||||
|
Test the registry working flags creation and its usage
|
||||||
|
"""
|
||||||
|
# GIVEN: A new registry
|
||||||
|
Registry.create()
|
||||||
|
|
||||||
|
# WHEN: I register a API to function
|
||||||
|
func = MagicMock()
|
||||||
|
func1 = MagicMock()
|
||||||
|
Registry().remote_api(r'^/api/poll$', func)
|
||||||
|
Registry().remote_api(r'^/main/poll$', func1, True)
|
||||||
|
|
||||||
|
# THEN: When I look to a function
|
||||||
|
call_structure, args = Registry().remote_execute('/api/poll')
|
||||||
|
self.assertEqual(call_structure['function'], func, 'Calling function should match')
|
||||||
|
self.assertEqual(call_structure['secure'], False, 'Calling function should not require security')
|
||||||
|
call_structure, args = Registry().remote_execute('/main/poll')
|
||||||
|
self.assertEqual(call_structure['function'], func1, 'Calling function should match')
|
||||||
|
self.assertEqual(call_structure['secure'], True, 'Calling function should not require security')
|
||||||
|
Loading…
Reference in New Issue
Block a user