Test apicontroiler

This commit is contained in:
Tim Bentley 2016-06-11 22:13:48 +01:00
parent 7558395b54
commit 6a81063fe7
6 changed files with 71 additions and 17 deletions

View File

@ -51,7 +51,7 @@ def register_endpoint(end_point):
from .endpoint import Endpoint
from .apitab import ApiTab
from .poll import OpenLPPoll
from .wsserver import OpenWSServer
from .wsserver import OpenLPWSServer
from .httpserver import OpenLPHttpServer
from .apicontroller import ApiController

View File

@ -21,7 +21,7 @@
###############################################################################
import logging
from openlp.core.api import OpenWSServer, OpenLPPoll, OpenLPHttpServer
from openlp.core.api import OpenLPWSServer, OpenLPPoll, OpenLPHttpServer
from openlp.core.common import OpenLPMixin, Registry, RegistryMixin, RegistryProperties
# These are here to load the endpoints
@ -33,15 +33,9 @@ log = logging.getLogger(__name__)
class ApiController(RegistryMixin, OpenLPMixin, RegistryProperties):
"""
The implementation of the Media Controller. The Media Controller adds an own class for every Player.
Currently these are QtWebkit, Phonon and Vlc. display_controllers are an array of controllers keyed on the
slidecontroller or plugin which built them.
ControllerType is the class containing the key values.
media_players are an array of media players keyed on player name.
current_media_players is an array of player instances keyed on ControllerType.
The APIController handles the starting of the API middleware.
The HTTP and Websocket servers are started
The core endpoints are generated (just by their declaration).
"""
def __init__(self, parent=None):
@ -49,13 +43,12 @@ class ApiController(RegistryMixin, OpenLPMixin, RegistryProperties):
Constructor
"""
super(ApiController, self).__init__(parent)
print("apic")
def bootstrap_post_set_up(self):
"""
process the bootstrap post setup request
Register the poll return service and start the servers.
"""
self.poll = OpenLPPoll()
Registry().register('OpenLPPoll', self.poll)
self.wsserver = OpenWSServer()
self.wsserver = OpenLPWSServer()
self.httpserver = OpenLPHttpServer()

View File

@ -60,7 +60,7 @@ class WSThread(QtCore.QObject):
self.ws_server.stop = True
class OpenWSServer(RegistryProperties, OpenLPMixin):
class OpenLPWSServer(RegistryProperties, OpenLPMixin):
"""
Wrapper round a server instance
"""
@ -68,7 +68,7 @@ class OpenWSServer(RegistryProperties, OpenLPMixin):
"""
Initialise the http server, and start the server of the correct type http / https
"""
super(OpenWSServer, self).__init__()
super(OpenLPWSServer, self).__init__()
self.settings_section = 'remotes'
self.thread = QtCore.QThread()
self.worker = WSThread(self)

View File

@ -0,0 +1,55 @@
# -*- coding: utf-8 -*-
# vim: autoindent shiftwidth=4 expandtab textwidth=120 tabstop=4 softtabstop=4
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2016 OpenLP Developers #
# --------------------------------------------------------------------------- #
# This program is free software; you can redistribute it and/or modify it #
# under the terms of the GNU General Public License as published by the Free #
# Software Foundation; version 2 of the License. #
# #
# This program is distributed in the hope that it will be useful, but WITHOUT #
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or #
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for #
# more details. #
# #
# You should have received a copy of the GNU General Public License along #
# with this program; if not, write to the Free Software Foundation, Inc., 59 #
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
###############################################################################
"""
Functional tests to test the API Error Class.
"""
from unittest import TestCase
from openlp.core.api import ApiController
from openlp.core.common import Registry
from tests.functional import patch
class TestApiController(TestCase):
"""
A test suite to test out the Error in the API code
"""
@patch('openlp.core.api.apicontroller.OpenLPPoll')
@patch('openlp.core.api.apicontroller.OpenLPWSServer')
@patch('openlp.core.api.apicontroller.OpenLPHttpServer')
def test_bootstrap(self, mock_http, mock_ws, mock_poll):
"""
Test the Not Found error displays the correct information
"""
# GIVEN: A controller
Registry.create()
apicontroller = ApiController()
# WHEN: I call the bootstrap
apicontroller.bootstrap_post_set_up()
# THEN: the api environment should have been created
self.assertEquals(1, mock_http.call_count, 'The Http server should have been called once')
self.assertEquals(1, mock_ws.call_count, 'The WS server should have been called once')
self.assertEquals(1, mock_poll.call_count, 'The OpenLPPoll should have been called once')

View File

@ -36,9 +36,12 @@ class TestApiError(TestCase):
"""
Test the Not Found error displays the correct information
"""
# GIVEN:
# WHEN: I raise an exception
with self.assertRaises(Exception) as context:
raise NotFound()
# THEN: we get an error and a status
self.assertEquals('Not Found', context.exception.message, 'A Not Found exception should be thrown')
self.assertEquals(404, context.exception.status, 'A 404 status should be thrown')
@ -46,8 +49,11 @@ class TestApiError(TestCase):
"""
Test the server error displays the correct information
"""
# GIVEN:
# WHEN: I raise an exception
with self.assertRaises(Exception) as context:
raise ServerError()
# THEN: we get an error and a status
self.assertEquals('Server Error', context.exception.message, 'A Not Found exception should be thrown')
self.assertEquals(500, context.exception.status, 'A 500 status should be thrown')

View File

@ -26,7 +26,7 @@ import os
import urllib.request
from unittest import TestCase
from openlp.core.api.api import OpenLPPoll
from openlp.core.api.poll import OpenLPPoll
from openlp.core.common import Settings, Registry
from openlp.core.ui import ServiceManager
from openlp.plugins.remotes.lib.httpserver import HttpRouter