コード例 #1
0
ファイル: test_servicemanager.py プロジェクト: simhnna/openlp
 def test_single_click_timeout_single(self, mocked_make_preview):
     """
     Test that when a single click has been registered, the item is sent to preview
     """
     # GIVEN: A service manager.
     service_manager = ServiceManager(None)
     # WHEN: on_single_click_preview() is called
     service_manager.on_single_click_preview_timeout()
     # THEN: make_preview() should have been called
     assert mocked_make_preview.call_count == 1, 'ServiceManager.make_preview() should have been called once'
コード例 #2
0
 def setUp(self):
     """
     Create the UI
     """
     Registry.create()
     self.setup_application()
     self.build_settings()
     Settings().extend_default_settings(__default_settings__)
     self.service_manager = ServiceManager()
     self.router = HttpRouter()
コード例 #3
0
 def test_single_click_timeout_double(self, mocked_make_live, mocked_make_preview):
     """
     Test that when a double click has been registered, the item does not goes to preview
     """
     # GIVEN: A service manager.
     service_manager = ServiceManager(None)
     # WHEN: on_single_click_preview() is called after a double click
     service_manager.on_double_click_live()
     service_manager.on_single_click_preview_timeout()
     # THEN: make_preview() should not have been called
     self.assertEqual(mocked_make_preview.call_count, 0, 'ServiceManager.make_preview() should not be called')
コード例 #4
0
 def test_single_click_timeout_single(self, mocked_make_preview):
     """
     Test that when a single click has been registered, the item is sent to preview
     """
     # GIVEN: A service manager.
     service_manager = ServiceManager(None)
     # WHEN: on_single_click_preview() is called
     service_manager.on_single_click_preview_timeout()
     # THEN: make_preview() should have been called
     self.assertEqual(mocked_make_preview.call_count, 1,
                      'ServiceManager.make_preview() should have been called once')
コード例 #5
0
 def test_single_click_preview_false(self, mocked_singleShot, MockedSettings):
     """
     Test that when "Preview items when clicked in Service Manager" disabled the preview timer doesn't start
     """
     # GIVEN: A setting to enable "Preview items when clicked in Service Manager" and a service manager.
     mocked_settings = MagicMock()
     mocked_settings.value.return_value = False
     MockedSettings.return_value = mocked_settings
     service_manager = ServiceManager(None)
     # WHEN: on_single_click_preview() is called
     service_manager.on_single_click_preview()
     # THEN: timer should not be started
     self.assertEqual(mocked_singleShot.call_count, 0, 'Should not be called')
コード例 #6
0
 def supported_suffixes_test(self):
     """
     Test the create basic service array
     """
     # GIVEN: A new service manager instance.
     service_manager = ServiceManager(None)
     # WHEN: a suffix is added as an individual or a list.
     service_manager.supported_suffixes('txt')
     service_manager.supported_suffixes(['pptx', 'ppt'])
     # THEN: The suffixes should be available to test.
     self.assertEqual('txt' in service_manager.suffixes, True, 'The suffix txt should be in the list')
     self.assertEqual('ppt' in service_manager.suffixes, True, 'The suffix ppt should be in the list')
     self.assertEqual('pptx' in service_manager.suffixes, True, 'The suffix pptx should be in the list')
コード例 #7
0
 def create_basic_service_test(self):
     """
     Test the create basic service array
     """
     # GIVEN: A new service manager instance.
     service_manager = ServiceManager(None)
     # WHEN: when the basic service array is created.
     service_manager._save_lite = False
     service_manager.service_theme = 'test_theme'
     service = service_manager.create_basic_service()[0]
     # THEN: The controller should be registered in the registry.
     self.assertNotEqual(service, None, 'The base service should be created')
     self.assertEqual(service['openlp_core']['service-theme'], 'test_theme', 'The test theme should be saved')
     self.assertEqual(service['openlp_core']['lite-service'], False, 'The lite service should be saved')
コード例 #8
0
ファイル: test_servicemanager.py プロジェクト: simhnna/openlp
 def test_single_click_preview_false(self, mocked_singleShot,
                                     MockedSettings):
     """
     Test that when "Preview items when clicked in Service Manager" disabled the preview timer doesn't start
     """
     # GIVEN: A setting to enable "Preview items when clicked in Service Manager" and a service manager.
     mocked_settings = MagicMock()
     mocked_settings.value.return_value = False
     MockedSettings.return_value = mocked_settings
     service_manager = ServiceManager(None)
     # WHEN: on_single_click_preview() is called
     service_manager.on_single_click_preview()
     # THEN: timer should not be started
     assert mocked_singleShot.call_count == 0, 'Should not be called'
コード例 #9
0
ファイル: test_servicemanager.py プロジェクト: simhnna/openlp
    def test_save_file_raises_permission_error(self, mocked_os,
                                               mocked_save_file_as,
                                               mocked_zipfile):
        """
        Test that when a PermissionError is raised when trying to save a file, it is handled correctly
        """
        # GIVEN: A service manager, a service to save
        mocked_main_window = MagicMock()
        mocked_main_window.service_manager_settings_section = 'servicemanager'
        Registry().register('main_window', mocked_main_window)
        Registry().register('application', MagicMock())
        service_manager = ServiceManager(None)
        service_manager._service_path = MagicMock()
        service_manager._save_lite = False
        service_manager.service_items = []
        service_manager.service_theme = 'Default'
        service_manager.service_manager_list = MagicMock()
        mocked_save_file_as.return_value = True
        mocked_zipfile.ZipFile.return_value = MagicMock()
        mocked_os.link.side_effect = PermissionError

        # WHEN: The service is saved and a PermissionError is raised
        result = service_manager.save_file()

        # THEN: The "save_as" method is called to save the service
        assert result is True
        mocked_save_file_as.assert_called_with()
コード例 #10
0
 def test_single_click_preview_true(self, mocked_singleShot, MockedSettings):
     """
     Test that when "Preview items when clicked in Service Manager" enabled the preview timer starts
     """
     # GIVEN: A setting to enable "Preview items when clicked in Service Manager" and a service manager.
     mocked_settings = MagicMock()
     mocked_settings.value.return_value = True
     MockedSettings.return_value = mocked_settings
     service_manager = ServiceManager(None)
     # WHEN: on_single_click_preview() is called
     service_manager.on_single_click_preview()
     # THEN: timer should have been started
     mocked_singleShot.assert_called_with(PyQt5.QtWidgets.QApplication.instance().doubleClickInterval(),
                                          service_manager.on_single_click_preview_timeout)
コード例 #11
0
 def test_single_click_preview_double(self, mocked_make_live, mocked_singleShot, MockedSettings):
     """
     Test that when a double click has registered the preview timer doesn't start
     """
     # GIVEN: A setting to enable "Preview items when clicked in Service Manager" and a service manager.
     mocked_settings = MagicMock()
     mocked_settings.value.return_value = True
     MockedSettings.return_value = mocked_settings
     service_manager = ServiceManager(None)
     # WHEN: on_single_click_preview() is called following a double click
     service_manager.on_double_click_live()
     service_manager.on_single_click_preview()
     # THEN: timer should not be started
     mocked_make_live.assert_called_with()
     self.assertEqual(mocked_singleShot.call_count, 0, 'Should not be called')
コード例 #12
0
ファイル: test_servicemanager.py プロジェクト: simhnna/openlp
 def test_single_click_preview_true(self, mocked_singleShot,
                                    MockedSettings):
     """
     Test that when "Preview items when clicked in Service Manager" enabled the preview timer starts
     """
     # GIVEN: A setting to enable "Preview items when clicked in Service Manager" and a service manager.
     mocked_settings = MagicMock()
     mocked_settings.value.return_value = True
     MockedSettings.return_value = mocked_settings
     service_manager = ServiceManager(None)
     # WHEN: on_single_click_preview() is called
     service_manager.on_single_click_preview()
     # THEN: timer should have been started
     mocked_singleShot.assert_called_with(
         PyQt5.QtWidgets.QApplication.instance().doubleClickInterval(),
         service_manager.on_single_click_preview_timeout)
コード例 #13
0
    def test_save_file_raises_permission_error(self, mocked_save_file_as, mocked_zipfile, mocked_shutil_copy):
        """
        Test that when a PermissionError is raised when trying to save a file, it is handled correctly
        """
        # GIVEN: A service manager, a service to save
        mocked_main_window = MagicMock()
        mocked_main_window.service_manager_settings_section = 'servicemanager'
        Registry().register('main_window', mocked_main_window)
        Registry().register('application', MagicMock())
        service_manager = ServiceManager(None)
        service_manager._file_name = os.path.join('temp', 'filename.osz')
        service_manager._save_lite = False
        service_manager.service_items = []
        service_manager.service_theme = 'Default'
        service_manager.service_manager_list = MagicMock()
        mocked_save_file_as.return_value = True
        mocked_zipfile.ZipFile.return_value = MagicMock()
        mocked_shutil_copy.side_effect = PermissionError

        # WHEN: The service is saved and a PermissionError is thrown
        result = service_manager.save_file()

        # THEN: The "save_as" method is called to save the service
        self.assertTrue(result)
        mocked_save_file_as.assert_called_with()
コード例 #14
0
    def test_save_local_file_raises_permission_error(self, mocked_save_file_as,
                                                     mocked_zipfile,
                                                     mocked_shutil_copy):
        """
        Test that when a PermissionError is raised when trying to save a local file, it is handled correctly
        """
        # GIVEN: A service manager, a service to save
        mocked_main_window = MagicMock()
        mocked_main_window.service_manager_settings_section = 'servicemanager'
        Registry().register('main_window', mocked_main_window)
        Registry().register('application', MagicMock())
        service_manager = ServiceManager(None)
        service_manager._file_name = os.path.join('temp', 'filename.osz')
        service_manager._save_lite = False
        service_manager.service_items = []
        service_manager.service_theme = 'Default'
        mocked_save_file_as.return_value = True
        mocked_zipfile.ZipFile.return_value = MagicMock()
        mocked_shutil_copy.side_effect = PermissionError

        # WHEN: The service is saved and a PermissionError is thrown
        result = service_manager.save_local_file()

        # THEN: The "save_as" method is called to save the service
        self.assertTrue(result)
        mocked_save_file_as.assert_called_with()
コード例 #15
0
 def initial_service_manager_test(self):
     """
     Test the initial of service manager.
     """
     # GIVEN: A new service manager instance.
     ServiceManager(None)
     # WHEN: the default service manager is built.
     # THEN: The the controller should be registered in the registry.
     self.assertNotEqual(Registry().get('service_manager'), None, 'The base service manager should be registered')
コード例 #16
0
ファイル: test_router.py プロジェクト: crossroadchurch/paul
 def setUp(self):
     """
     Create the UI
     """
     Registry.create()
     self.setup_application()
     self.build_settings()
     Settings().extend_default_settings(__default_settings__)
     self.service_manager = ServiceManager()
     self.router = HttpRouter()
コード例 #17
0
    def test_theme_change_song(self, mocked_regenerate_service_items):
        """
        Test that when a Toolbar theme combobox displays correctly when the theme is set to Song
        """
        # GIVEN: A service manager, a service to display with a theme level in the renderer
        mocked_renderer = MagicMock()
        service_manager = ServiceManager(None)
        Registry().register('renderer', mocked_renderer)
        service_manager.toolbar = OpenLPToolbar(None)
        service_manager.toolbar.add_toolbar_action('theme_combo_box', triggers=MagicMock())
        service_manager.toolbar.add_toolbar_action('theme_label', triggers=MagicMock())

        # WHEN: The service manager has a Song theme
        mocked_renderer.theme_level = ThemeLevel.Song
        result = service_manager.theme_change()

        # THEN: The the theme toolbar should  be visible
        self.assertTrue(service_manager.toolbar.actions['theme_combo_box'].isVisible(),
                        'The visibility should be True')
コード例 #18
0
ファイル: test_servicemanager.py プロジェクト: simhnna/openlp
    def test_theme_change_song(self, mocked_regenerate_service_items):
        """
        Test that when a Toolbar theme combobox displays correctly when the theme is set to Song
        """
        # GIVEN: A service manager, a service to display with a theme level in the renderer
        mocked_renderer = MagicMock()
        service_manager = ServiceManager(None)
        Registry().register('renderer', mocked_renderer)
        service_manager.toolbar = OpenLPToolbar(None)
        service_manager.toolbar.add_toolbar_action('theme_combo_box',
                                                   triggers=MagicMock())
        service_manager.toolbar.add_toolbar_action('theme_label',
                                                   triggers=MagicMock())

        # WHEN: The service manager has a Song theme
        mocked_renderer.theme_level = ThemeLevel.Song
        service_manager.theme_change()

        # THEN: The the theme toolbar should  be visible
        assert service_manager.toolbar.actions['theme_combo_box'].isVisible() is True, \
            'The visibility should be True'
コード例 #19
0
ファイル: test_servicemanager.py プロジェクト: simhnna/openlp
 def test_single_click_timeout_double(self, mocked_make_live,
                                      mocked_make_preview):
     """
     Test that when a double click has been registered, the item does not goes to preview
     """
     # GIVEN: A service manager.
     service_manager = ServiceManager(None)
     # WHEN: on_single_click_preview() is called after a double click
     service_manager.on_double_click_live()
     service_manager.on_single_click_preview_timeout()
     # THEN: make_preview() should not have been called
     assert mocked_make_preview.call_count == 0, 'ServiceManager.make_preview() should not be called'
コード例 #20
0
ファイル: test_servicemanager.py プロジェクト: simhnna/openlp
 def test_supported_suffixes(self):
     """
     Test the create basic service array
     """
     # GIVEN: A new service manager instance.
     service_manager = ServiceManager(None)
     # WHEN: a suffix is added as an individual or a list.
     service_manager.supported_suffixes('txt')
     service_manager.supported_suffixes(['pptx', 'ppt'])
     # THEN: The suffixes should be available to test.
     assert 'txt' in service_manager.suffixes, 'The suffix txt should be in the list'
     assert 'ppt' in service_manager.suffixes, 'The suffix ppt should be in the list'
     assert 'pptx' in service_manager.suffixes, 'The suffix pptx should be in the list'
コード例 #21
0
ファイル: test_servicemanager.py プロジェクト: simhnna/openlp
 def test_single_click_preview_double(self, mocked_make_live,
                                      mocked_singleShot, MockedSettings):
     """
     Test that when a double click has registered the preview timer doesn't start
     """
     # GIVEN: A setting to enable "Preview items when clicked in Service Manager" and a service manager.
     mocked_settings = MagicMock()
     mocked_settings.value.return_value = True
     MockedSettings.return_value = mocked_settings
     service_manager = ServiceManager(None)
     # WHEN: on_single_click_preview() is called following a double click
     service_manager.on_double_click_live()
     service_manager.on_single_click_preview()
     # THEN: timer should not be started
     mocked_make_live.assert_called_with()
     assert mocked_singleShot.call_count == 0, 'Should not be called'
コード例 #22
0
ファイル: test_servicemanager.py プロジェクト: simhnna/openlp
 def test_build_media_context_menu(self):
     """
     Test the creation of a context menu from service item of type Command from Media.
     """
     # GIVEN: A new service manager instance and a default service item.
     Registry().register('plugin_manager', MagicMock())
     Registry().register('renderer', MagicMock())
     service_manager = ServiceManager(None)
     item = MagicMock()
     item.parent.return_value = False
     item.data.return_value = 0
     service_manager.service_manager_list = MagicMock()
     service_manager.service_manager_list.itemAt.return_value = item
     service_item = ServiceItem(None)
     service_item.add_capability(ItemCapabilities.CanAutoStartForLive)
     service_item.add_capability(ItemCapabilities.CanEditTitle)
     service_item.add_capability(ItemCapabilities.RequiresMedia)
     service_item.service_item_type = ServiceItemType.Command
     service_item.edit_id = 1
     service_item._raw_frames.append(MagicMock())
     service_manager.service_items.insert(1, {'service_item': service_item})
     service_manager.edit_action = MagicMock()
     service_manager.rename_action = MagicMock()
     service_manager.create_custom_action = MagicMock()
     service_manager.maintain_action = MagicMock()
     service_manager.notes_action = MagicMock()
     service_manager.time_action = MagicMock()
     service_manager.auto_start_action = MagicMock()
     service_manager.auto_play_slides_menu = MagicMock()
     service_manager.auto_play_slides_once = MagicMock()
     service_manager.auto_play_slides_loop = MagicMock()
     service_manager.timed_slide_interval = MagicMock()
     service_manager.theme_menu = MagicMock()
     service_manager.menu = MagicMock()
     # WHEN I define a context menu
     service_manager.context_menu(1)
     # THEN the following calls should have occurred.
     assert service_manager.edit_action.setVisible.call_count == 1, 'Should have be called once'
     assert service_manager.rename_action.setVisible.call_count == 2, 'Should have be called twice'
     assert service_manager.create_custom_action.setVisible.call_count == 1, 'Should have be called once'
     assert service_manager.maintain_action.setVisible.call_count == 1, 'Should have be called once'
     assert service_manager.notes_action.setVisible.call_count == 1, 'Should have be called once'
     assert service_manager.time_action.setVisible.call_count == 1, 'Should have be called once'
     assert service_manager.auto_start_action.setVisible.call_count == 2, 'Should have be called twice'
     assert service_manager.auto_play_slides_menu.menuAction().setVisible.call_count == 1, \
         'Should have be called once'
     assert service_manager.auto_play_slides_once.setChecked.call_count == 0, 'Should not be called'
     assert service_manager.auto_play_slides_loop.setChecked.call_count == 0, 'Should not be called'
     assert service_manager.timed_slide_interval.setChecked.call_count == 0, 'Should not be called'
     assert service_manager.theme_menu.menuAction().setVisible.call_count == 1, \
         'Should have be called once'
     # THEN I change the length of the media and regenerate the menu.
     service_item.set_media_length(5)
     service_manager.context_menu(1)
     # THEN the following additional calls should have occurred.
     assert service_manager.time_action.setVisible.call_count == 3, 'Should have be called three times'
コード例 #23
0
class TestRouter(TestCase, TestMixin):
    """
    Test the functions in the :mod:`lib` module.
    """
    def setUp(self):
        """
        Create the UI
        """
        Registry.create()
        self.setup_application()
        self.build_settings()
        Settings().extend_default_settings(__default_settings__)
        self.service_manager = ServiceManager()
        self.router = HttpRouter()

    def tearDown(self):
        """
        Delete all the C++ objects at the end so that we don't have a segfault
        """
        self.destroy_settings()

    def test_password_encrypter(self):
        """
        Test hash userid and password function
        """
        # GIVEN: A default configuration
        Settings().setValue('remotes/user id', 'openlp')
        Settings().setValue('remotes/password', 'password')

        # WHEN: called with the defined userid
        router = HttpRouter()
        router.initialise()
        test_value = 'b3BlbmxwOnBhc3N3b3Jk'

        # THEN: the function should return the correct password
        self.assertEqual(
            router.auth, test_value,
            'The result for make_sha_hash should return the correct encrypted password'
        )

    def test_process_http_request(self):
        """
        Test the router control functionality
        """
        # GIVEN: A testing set of Routes
        mocked_function = MagicMock()
        test_route = [
            (r'^/stage/api/poll$', {
                'function': mocked_function,
                'secure': False
            }),
        ]
        self.router.routes = test_route
        self.router.command = 'GET'

        # WHEN: called with a poll route
        function, args = self.router.process_http_request(
            '/stage/api/poll', None)

        # THEN: the function should have been called only once
        self.assertEqual(mocked_function, function['function'],
                         'The mocked function should match defined value.')
        self.assertFalse(
            function['secure'],
            'The mocked function should not require any security.')

    def test_process_secure_http_request(self):
        """
        Test the router control functionality
        """
        # GIVEN: A testing set of Routes
        mocked_function = MagicMock()
        test_route = [
            (r'^/stage/api/poll$', {
                'function': mocked_function,
                'secure': True
            }),
        ]
        self.router.routes = test_route
        self.router.settings_section = 'remotes'
        Settings().setValue('remotes/authentication enabled', True)
        self.router.path = '/stage/api/poll'
        self.router.auth = ''
        self.router.headers = {'Authorization': None}
        self.router.send_response = MagicMock()
        self.router.send_header = MagicMock()
        self.router.end_headers = MagicMock()
        self.router.wfile = MagicMock()
        self.router.command = 'GET'

        # WHEN: called with a poll route
        self.router.do_post_processor()

        # THEN: the function should have been called only once
        self.router.send_response.assert_called_once_with(401)
        self.assertEqual(self.router.send_header.call_count, 5,
                         'The header should have been called five times.')

    def test_get_content_type(self):
        """
        Test the get_content_type logic
        """
        # GIVEN: a set of files and their corresponding types
        headers = [['test.html', 'text/html'], ['test.css', 'text/css'],
                   ['test.js', 'application/javascript'],
                   ['test.jpg', 'image/jpeg'], ['test.gif', 'image/gif'],
                   ['test.ico', 'image/x-icon'], ['test.png', 'image/png'],
                   ['test.whatever', 'text/plain'], ['test', 'text/plain'],
                   ['', 'text/plain'],
                   [os.path.join(TEST_PATH, 'test.html'), 'text/html']]

        # WHEN: calling each file type
        for header in headers:
            ext, content_type = self.router.get_content_type(header[0])

            # THEN: all types should match
            self.assertEqual(content_type, header[1],
                             'Mismatch of content type')

    def test_main_poll(self):
        """
        Test the main poll logic
        """
        # GIVEN: a defined router with two slides
        Registry.create()
        Registry().register('live_controller', MagicMock)
        router = HttpRouter()
        router.send_response = MagicMock()
        router.send_header = MagicMock()
        router.end_headers = MagicMock()
        router.live_controller.slide_count = 2

        # WHEN: main poll called
        results = router.main_poll()

        # THEN: the correct response should be returned
        self.assertEqual(results.decode('utf-8'),
                         '{"results": {"slide_count": 2}}',
                         'The resulting json strings should match')

    def test_serve_file_without_params(self):
        """
        Test the serve_file method without params
        """
        # GIVEN: mocked environment
        self.router.send_response = MagicMock()
        self.router.send_header = MagicMock()
        self.router.end_headers = MagicMock()
        self.router.wfile = MagicMock()
        self.router.html_dir = os.path.normpath('test/dir')
        self.router.template_vars = MagicMock()

        # WHEN: call serve_file with no file_name
        self.router.serve_file()

        # THEN: it should return a 404
        self.router.send_response.assert_called_once_with(404)
        self.assertEqual(self.router.end_headers.call_count, 1,
                         'end_headers called once')

    def test_serve_file_with_valid_params(self):
        """
        Test the serve_file method with an existing file
        """
        # GIVEN: mocked environment
        self.router.send_response = MagicMock()
        self.router.send_header = MagicMock()
        self.router.end_headers = MagicMock()
        self.router.wfile = MagicMock()
        self.router.html_dir = os.path.normpath('test/dir')
        self.router.template_vars = MagicMock()
        with patch('openlp.core.lib.os.path.exists') as mocked_exists, \
                patch('builtins.open', mock_open(read_data='123')):
            mocked_exists.return_value = True

            # WHEN: call serve_file with an existing html file
            self.router.serve_file(os.path.normpath('test/dir/test.html'))

            # THEN: it should return a 200 and the file
            self.router.send_response.assert_called_once_with(200)
            self.router.send_header.assert_called_once_with(
                'Content-type', 'text/html')
            self.assertEqual(self.router.end_headers.call_count, 1,
                             'end_headers called once')

    def test_serve_file_with_partial_params(self):
        """
        Test the serve_file method with an existing file
        """
        # GIVEN: mocked environment
        self.router.send_response = MagicMock()
        self.router.send_header = MagicMock()
        self.router.end_headers = MagicMock()
        self.router.wfile = MagicMock()
        self.router.html_dir = os.path.normpath('test/dir')
        self.router.template_vars = MagicMock()
        with patch('openlp.core.lib.os.path.exists') as mocked_exists, \
                patch('builtins.open', mock_open(read_data='123')):
            mocked_exists.return_value = True

            # WHEN: call serve_file with an existing html file
            self.router.serve_file(os.path.normpath('test/dir/test'))

            # THEN: it should return a 200 and the file
            self.router.send_response.assert_called_once_with(200)
            self.router.send_header.assert_called_once_with(
                'Content-type', 'text/html')
            self.assertEqual(self.router.end_headers.call_count, 1,
                             'end_headers called once')

    def test_serve_thumbnail_without_params(self):
        """
        Test the serve_thumbnail routine without params
        """
        # GIVEN: mocked environment
        self.router.send_response = MagicMock()
        self.router.send_header = MagicMock()
        self.router.end_headers = MagicMock()
        self.router.wfile = MagicMock()

        # WHEN: I request a thumbnail
        self.router.serve_thumbnail()

        # THEN: The headers should be set correctly
        self.router.send_response.assert_called_once_with(404)
        self.assertEqual(self.router.send_response.call_count, 1,
                         'Send response should be called once')
        self.assertEqual(self.router.end_headers.call_count, 1,
                         'end_headers should be called once')

    def test_serve_thumbnail_with_invalid_params(self):
        """
        Test the serve_thumbnail routine with invalid params
        """
        # GIVEN: Mocked send_header, send_response, end_headers and wfile
        self.router.send_response = MagicMock()
        self.router.send_header = MagicMock()
        self.router.end_headers = MagicMock()
        self.router.wfile = MagicMock()

        # WHEN: pass a bad controller
        self.router.serve_thumbnail('badcontroller',
                                    'tecnologia 1.pptx/slide1.png')

        # THEN: a 404 should be returned
        self.assertEqual(len(self.router.send_header.mock_calls), 4,
                         'header should be called 4 times')
        self.assertEqual(len(self.router.send_response.mock_calls), 1,
                         'One response')
        self.assertEqual(len(self.router.wfile.mock_calls), 1,
                         'Once call to write to the socket')
        self.router.send_response.assert_called_once_with(404)

        # WHEN: pass a bad filename
        self.router.send_response.reset_mock()
        self.router.serve_thumbnail('presentations',
                                    'tecnologia 1.pptx/badfilename.png')

        # THEN: return a 404
        self.router.send_response.assert_called_once_with(404)

        # WHEN: a dangerous URL is passed
        self.router.send_response.reset_mock()
        self.router.serve_thumbnail('presentations',
                                    '../tecnologia 1.pptx/slide1.png')

        # THEN: return a 404
        self.router.send_response.assert_called_once_with(404)

    def test_serve_thumbnail_with_valid_params(self):
        """
        Test the serve_thumbnail routine with valid params
        """
        # GIVEN: Mocked send_header, send_response, end_headers and wfile
        self.router.send_response = MagicMock()
        self.router.send_header = MagicMock()
        self.router.end_headers = MagicMock()
        self.router.wfile = MagicMock()
        mocked_image_manager = MagicMock()
        Registry().register('image_manager', mocked_image_manager)
        file_name = 'another%20test/slide1.png'
        full_path = os.path.normpath(os.path.join('thumbnails', file_name))
        width = 120
        height = 90
        with patch('openlp.core.lib.os.path.exists') as mocked_exists, \
                patch('builtins.open', mock_open(read_data='123')), \
                patch('openlp.plugins.remotes.lib.httprouter.AppLocation') as mocked_location, \
                patch('openlp.plugins.remotes.lib.httprouter.image_to_byte') as mocked_image_to_byte:
            mocked_exists.return_value = True
            mocked_image_to_byte.return_value = '123'
            mocked_location.get_section_data_path.return_value = ''

            # WHEN: pass good controller and filename
            self.router.serve_thumbnail('presentations',
                                        '{0}x{1}'.format(width,
                                                         height), file_name)

            # THEN: a file should be returned
            self.assertEqual(self.router.send_header.call_count, 1,
                             'One header')
            self.assertEqual(self.router.send_response.call_count, 1,
                             'Send response called once')
            self.assertEqual(self.router.end_headers.call_count, 1,
                             'end_headers called once')
            mocked_exists.assert_called_with(urllib.parse.unquote(full_path))
            self.assertEqual(mocked_image_to_byte.call_count, 1, 'Called once')
            mocked_image_manager.add_image.assert_any_call(
                os.path.normpath(
                    os.path.join('thumbnails', 'another test', 'slide1.png')),
                'slide1.png', None, width, height)
            mocked_image_manager.get_image.assert_any_call(
                os.path.normpath(
                    os.path.join('thumbnails', 'another test', 'slide1.png')),
                'slide1.png', width, height)

    def test_remote_next(self):
        """
        Test service manager receives remote next click properly (bug 1407445)
        """
        # GIVEN: initial setup and mocks
        self.router.routes = [(r'^/api/service/(.*)$', {
            'function': self.router.service,
            'secure': False
        })]
        self.router.request_data = False
        mocked_next_item = MagicMock()
        self.service_manager.next_item = mocked_next_item
        with patch.object(self.service_manager, 'setup_ui'), \
                patch.object(self.router, 'do_json_header'):
            self.service_manager.bootstrap_initialise()
            self.app.processEvents()

            # WHEN: Remote next is received
            self.router.service(action='next')
            self.app.processEvents()

            # THEN: service_manager.next_item() should have been called
            self.assertTrue(
                mocked_next_item.called,
                'next_item() should have been called in service_manager')

    def test_remote_previous(self):
        """
        Test service manager receives remote previous click properly (bug 1407445)
        """
        # GIVEN: initial setup and mocks
        self.router.routes = [(r'^/api/service/(.*)$', {
            'function': self.router.service,
            'secure': False
        })]
        self.router.request_data = False
        mocked_previous_item = MagicMock()
        self.service_manager.previous_item = mocked_previous_item
        with patch.object(self.service_manager, 'setup_ui'), \
                patch.object(self.router, 'do_json_header'):
            self.service_manager.bootstrap_initialise()
            self.app.processEvents()

            # WHEN: Remote next is received
            self.router.service(action='previous')
            self.app.processEvents()

            # THEN: service_manager.next_item() should have been called
            self.assertTrue(
                mocked_previous_item.called,
                'previous_item() should have been called in service_manager')

    def test_remote_stage_personal_html(self):
        """
        Test the stage url with a parameter after loaded a url/stage.html file
        """
        # GIVEN: initial route
        self.router.config_dir = ''
        self.router.send_response = MagicMock()
        self.router.send_header = MagicMock()
        self.router.end_headers = MagicMock()
        self.router.wfile = MagicMock()
        self.router._process_file = MagicMock()

        # WHEN: I call stage with a suffix
        self.router.stages('stages', 'trb')

        # THEN: we should use the specific stage file instance
        self.router._process_file.assert_called_with(
            os.path.join('trb', 'stage.html'))

    def test_remote_stage_personal_css(self):
        """
        Test the html with reference stages/trb/trb.css then loaded a stages/trb/trb.css file
        """
        # GIVEN: initial route
        self.router.config_dir = ''
        self.router.send_response = MagicMock()
        self.router.send_header = MagicMock()
        self.router.end_headers = MagicMock()
        self.router.wfile = MagicMock()
        self.router._process_file = MagicMock()

        # WHEN: I call stage with a suffix
        self.router.stages('stages', 'stages/trb/trb.css')

        # THEN: we should use the specific stage file instance
        self.router._process_file.assert_called_with(
            os.path.join('trb', 'trb.css'))
コード例 #24
0
ファイル: test_servicemanager.py プロジェクト: simhnna/openlp
 def test_build_context_menu(self):
     """
     Test the creation of a context menu from a null service item.
     """
     # GIVEN: A new service manager instance and a default service item.
     service_manager = ServiceManager(None)
     item = MagicMock()
     item.parent.return_value = False
     item.data.return_value = 0
     service_manager.service_manager_list = MagicMock()
     service_manager.service_manager_list.itemAt.return_value = item
     service_item = ServiceItem(None)
     service_manager.service_items.insert(1, {'service_item': service_item})
     service_manager.edit_action = MagicMock()
     service_manager.rename_action = MagicMock()
     service_manager.create_custom_action = MagicMock()
     service_manager.maintain_action = MagicMock()
     service_manager.notes_action = MagicMock()
     service_manager.time_action = MagicMock()
     service_manager.auto_start_action = MagicMock()
     service_manager.auto_play_slides_menu = MagicMock()
     service_manager.auto_play_slides_once = MagicMock()
     service_manager.auto_play_slides_loop = MagicMock()
     service_manager.timed_slide_interval = MagicMock()
     service_manager.theme_menu = MagicMock()
     service_manager.menu = MagicMock()
     # WHEN I define a context menu
     service_manager.context_menu(1)
     # THEN the following calls should have occurred.
     assert service_manager.edit_action.setVisible.call_count == 1, 'Should have been called once'
     assert service_manager.rename_action.setVisible.call_count == 1, 'Should have been called once'
     assert service_manager.create_custom_action.setVisible.call_count == 1, 'Should have been called once'
     assert service_manager.maintain_action.setVisible.call_count == 1, 'Should have been called once'
     assert service_manager.notes_action.setVisible.call_count == 1, 'Should have been called once'
     assert service_manager.time_action.setVisible.call_count == 1, 'Should have been called once'
     assert service_manager.auto_start_action.setVisible.call_count == 1, 'Should have been called once'
     assert service_manager.auto_play_slides_menu.menuAction().setVisible.call_count == 1, \
         'Should have been called once'
     assert service_manager.auto_play_slides_once.setChecked.call_count == 0, 'Should not be called'
     assert service_manager.auto_play_slides_loop.setChecked.call_count == 0, 'Should not be called'
     assert service_manager.timed_slide_interval.setChecked.call_count == 0, 'Should not be called'
     assert service_manager.theme_menu.menuAction().setVisible.call_count == 1, \
         'Should have been called once'
コード例 #25
0
ファイル: test_router.py プロジェクト: crossroadchurch/paul
class TestRouter(TestCase, TestMixin):
    """
    Test the functions in the :mod:`lib` module.
    """

    def setUp(self):
        """
        Create the UI
        """
        Registry.create()
        self.setup_application()
        self.build_settings()
        Settings().extend_default_settings(__default_settings__)
        self.service_manager = ServiceManager()
        self.router = HttpRouter()

    def tearDown(self):
        """
        Delete all the C++ objects at the end so that we don't have a segfault
        """
        self.destroy_settings()

    def password_encrypter_test(self):
        """
        Test hash userid and password function
        """
        # GIVEN: A default configuration
        Settings().setValue("remotes/user id", "openlp")
        Settings().setValue("remotes/password", "password")

        # WHEN: called with the defined userid
        router = HttpRouter()
        router.initialise()
        test_value = "b3BlbmxwOnBhc3N3b3Jk"

        # THEN: the function should return the correct password
        self.assertEqual(
            router.auth, test_value, "The result for make_sha_hash should return the correct encrypted password"
        )

    def process_http_request_test(self):
        """
        Test the router control functionality
        """
        # GIVEN: A testing set of Routes
        mocked_function = MagicMock()
        test_route = [(r"^/stage/api/poll$", {"function": mocked_function, "secure": False})]
        self.router.routes = test_route

        # WHEN: called with a poll route
        function, args = self.router.process_http_request("/stage/api/poll", None)

        # THEN: the function should have been called only once
        self.assertEqual(mocked_function, function["function"], "The mocked function should match defined value.")
        self.assertFalse(function["secure"], "The mocked function should not require any security.")

    def process_secure_http_request_test(self):
        """
        Test the router control functionality
        """
        # GIVEN: A testing set of Routes
        mocked_function = MagicMock()
        test_route = [(r"^/stage/api/poll$", {"function": mocked_function, "secure": True})]
        self.router.routes = test_route
        self.router.settings_section = "remotes"
        Settings().setValue("remotes/authentication enabled", True)
        self.router.path = "/stage/api/poll"
        self.router.auth = ""
        self.router.headers = {"Authorization": None}
        self.router.send_response = MagicMock()
        self.router.send_header = MagicMock()
        self.router.end_headers = MagicMock()
        self.router.wfile = MagicMock()

        # WHEN: called with a poll route
        self.router.do_post_processor()

        # THEN: the function should have been called only once
        self.router.send_response.assert_called_once_with(401)
        self.assertEqual(self.router.send_header.call_count, 5, "The header should have been called five times.")

    def get_content_type_test(self):
        """
        Test the get_content_type logic
        """
        # GIVEN: a set of files and their corresponding types
        headers = [
            ["test.html", "text/html"],
            ["test.css", "text/css"],
            ["test.js", "application/javascript"],
            ["test.jpg", "image/jpeg"],
            ["test.gif", "image/gif"],
            ["test.ico", "image/x-icon"],
            ["test.png", "image/png"],
            ["test.whatever", "text/plain"],
            ["test", "text/plain"],
            ["", "text/plain"],
            [os.path.join(TEST_PATH, "test.html"), "text/html"],
        ]

        # WHEN: calling each file type
        for header in headers:
            ext, content_type = self.router.get_content_type(header[0])

            # THEN: all types should match
            self.assertEqual(content_type, header[1], "Mismatch of content type")

    def main_poll_test(self):
        """
        Test the main poll logic
        """
        # GIVEN: a defined router with two slides
        Registry.create()
        Registry().register("live_controller", MagicMock)
        router = HttpRouter()
        router.send_response = MagicMock()
        router.send_header = MagicMock()
        router.end_headers = MagicMock()
        router.live_controller.slide_count = 2

        # WHEN: main poll called
        results = router.main_poll()

        # THEN: the correct response should be returned
        self.assertEqual(
            results.decode("utf-8"), '{"results": {"slide_count": 2}}', "The resulting json strings should match"
        )

    def serve_file_without_params_test(self):
        """
        Test the serve_file method without params
        """
        # GIVEN: mocked environment
        self.router.send_response = MagicMock()
        self.router.send_header = MagicMock()
        self.router.end_headers = MagicMock()
        self.router.wfile = MagicMock()
        self.router.html_dir = os.path.normpath("test/dir")
        self.router.template_vars = MagicMock()

        # WHEN: call serve_file with no file_name
        self.router.serve_file()

        # THEN: it should return a 404
        self.router.send_response.assert_called_once_with(404)
        self.assertEqual(self.router.end_headers.call_count, 1, "end_headers called once")

    def serve_file_with_valid_params_test(self):
        """
        Test the serve_file method with an existing file
        """
        # GIVEN: mocked environment
        self.router.send_response = MagicMock()
        self.router.send_header = MagicMock()
        self.router.end_headers = MagicMock()
        self.router.wfile = MagicMock()
        self.router.html_dir = os.path.normpath("test/dir")
        self.router.template_vars = MagicMock()
        with patch("openlp.core.lib.os.path.exists") as mocked_exists, patch(
            "builtins.open", mock_open(read_data="123")
        ):
            mocked_exists.return_value = True

            # WHEN: call serve_file with an existing html file
            self.router.serve_file(os.path.normpath("test/dir/test.html"))

            # THEN: it should return a 200 and the file
            self.router.send_response.assert_called_once_with(200)
            self.router.send_header.assert_called_once_with("Content-type", "text/html")
            self.assertEqual(self.router.end_headers.call_count, 1, "end_headers called once")

    def serve_thumbnail_without_params_test(self):
        """
        Test the serve_thumbnail routine without params
        """
        # GIVEN: mocked environment
        self.router.send_response = MagicMock()
        self.router.send_header = MagicMock()
        self.router.end_headers = MagicMock()
        self.router.wfile = MagicMock()

        # WHEN: I request a thumbnail
        self.router.serve_thumbnail()

        # THEN: The headers should be set correctly
        self.router.send_response.assert_called_once_with(404)
        self.assertEqual(self.router.send_response.call_count, 1, "Send response should be called once")
        self.assertEqual(self.router.end_headers.call_count, 1, "end_headers should be called once")

    def serve_thumbnail_with_invalid_params_test(self):
        """
        Test the serve_thumbnail routine with invalid params
        """
        # GIVEN: Mocked send_header, send_response, end_headers and wfile
        self.router.send_response = MagicMock()
        self.router.send_header = MagicMock()
        self.router.end_headers = MagicMock()
        self.router.wfile = MagicMock()

        # WHEN: pass a bad controller
        self.router.serve_thumbnail("badcontroller", "tecnologia 1.pptx/slide1.png")

        # THEN: a 404 should be returned
        self.assertEqual(len(self.router.send_header.mock_calls), 4, "header should be called 4 times")
        self.assertEqual(len(self.router.send_response.mock_calls), 1, "One response")
        self.assertEqual(len(self.router.wfile.mock_calls), 1, "Once call to write to the socket")
        self.router.send_response.assert_called_once_with(404)

        # WHEN: pass a bad filename
        self.router.send_response.reset_mock()
        self.router.serve_thumbnail("presentations", "tecnologia 1.pptx/badfilename.png")

        # THEN: return a 404
        self.router.send_response.assert_called_once_with(404)

        # WHEN: a dangerous URL is passed
        self.router.send_response.reset_mock()
        self.router.serve_thumbnail("presentations", "../tecnologia 1.pptx/slide1.png")

        # THEN: return a 404
        self.router.send_response.assert_called_once_with(404)

    def serve_thumbnail_with_valid_params_test(self):
        """
        Test the serve_thumbnail routine with valid params
        """
        # GIVEN: Mocked send_header, send_response, end_headers and wfile
        self.router.send_response = MagicMock()
        self.router.send_header = MagicMock()
        self.router.end_headers = MagicMock()
        self.router.wfile = MagicMock()
        mocked_image_manager = MagicMock()
        Registry.create()
        Registry().register("image_manager", mocked_image_manager)
        file_name = "another%20test/slide1.png"
        full_path = os.path.normpath(os.path.join("thumbnails", file_name))
        width = 120
        height = 90
        with patch("openlp.core.lib.os.path.exists") as mocked_exists, patch(
            "builtins.open", mock_open(read_data="123")
        ), patch("openlp.plugins.remotes.lib.httprouter.AppLocation") as mocked_location, patch(
            "openlp.plugins.remotes.lib.httprouter.image_to_byte"
        ) as mocked_image_to_byte:
            mocked_exists.return_value = True
            mocked_image_to_byte.return_value = "123"
            mocked_location.get_section_data_path.return_value = ""

            # WHEN: pass good controller and filename
            self.router.serve_thumbnail("presentations", "{0}x{1}".format(width, height), file_name)

            # THEN: a file should be returned
            self.assertEqual(self.router.send_header.call_count, 1, "One header")
            self.assertEqual(self.router.send_response.call_count, 1, "Send response called once")
            self.assertEqual(self.router.end_headers.call_count, 1, "end_headers called once")
            mocked_exists.assert_called_with(urllib.parse.unquote(full_path))
            self.assertEqual(mocked_image_to_byte.call_count, 1, "Called once")
            mocked_image_manager.assert_called_any(
                os.path.normpath("thumbnails\\another test"), "slide1.png", None, "120x90"
            )
            mocked_image_manager.assert_called_any(os.path.normpath("thumbnails\\another test"), "slide1.png", "120x90")

    def remote_next_test(self):
        """
        Test service manager receives remote next click properly (bug 1407445)
        """
        # GIVEN: initial setup and mocks
        self.router.routes = [(r"^/api/service/(.*)$", {"function": self.router.service, "secure": False})]
        self.router.request_data = False
        mocked_next_item = MagicMock()
        self.service_manager.next_item = mocked_next_item
        with patch.object(self.service_manager, "setup_ui"), patch.object(self.router, "do_json_header"):
            self.service_manager.bootstrap_initialise()
            self.app.processEvents()

            # WHEN: Remote next is received
            self.router.service(action="next")
            self.app.processEvents()

            # THEN: service_manager.next_item() should have been called
            self.assertTrue(mocked_next_item.called, "next_item() should have been called in service_manager")

    def remote_previous_test(self):
        """
        Test service manager receives remote previous click properly (bug 1407445)
        """
        # GIVEN: initial setup and mocks
        self.router.routes = [(r"^/api/service/(.*)$", {"function": self.router.service, "secure": False})]
        self.router.request_data = False
        mocked_previous_item = MagicMock()
        self.service_manager.previous_item = mocked_previous_item
        with patch.object(self.service_manager, "setup_ui"), patch.object(self.router, "do_json_header"):
            self.service_manager.bootstrap_initialise()
            self.app.processEvents()

            # WHEN: Remote next is received
            self.router.service(action="previous")
            self.app.processEvents()

            # THEN: service_manager.next_item() should have been called
            self.assertTrue(mocked_previous_item.called, "previous_item() should have been called in service_manager")
コード例 #26
0
 def build_custom_context_menu_test(self):
     """
     Test the creation of a context menu from service item of type text from Custom.
     """
     # GIVEN: A new service manager instance and a default service item.
     mocked_renderer = MagicMock()
     mocked_renderer.theme_level = ThemeLevel.Song
     Registry().register('plugin_manager', MagicMock())
     Registry().register('renderer', mocked_renderer)
     service_manager = ServiceManager(None)
     item = MagicMock()
     item.parent.return_value = False
     item.data.return_value = 0
     service_manager.service_manager_list = MagicMock()
     service_manager.service_manager_list.itemAt.return_value = item
     service_item = ServiceItem(None)
     service_item.add_capability(ItemCapabilities.CanEdit)
     service_item.add_capability(ItemCapabilities.CanPreview)
     service_item.add_capability(ItemCapabilities.CanLoop)
     service_item.add_capability(ItemCapabilities.CanSoftBreak)
     service_item.add_capability(ItemCapabilities.OnLoadUpdate)
     service_item.service_item_type = ServiceItemType.Text
     service_item.edit_id = 1
     service_item._display_frames.append(MagicMock())
     service_manager.service_items.insert(1, {'service_item': service_item})
     service_manager.edit_action = MagicMock()
     service_manager.rename_action = MagicMock()
     service_manager.create_custom_action = MagicMock()
     service_manager.maintain_action = MagicMock()
     service_manager.notes_action = MagicMock()
     service_manager.time_action = MagicMock()
     service_manager.auto_start_action = MagicMock()
     service_manager.auto_play_slides_menu = MagicMock()
     service_manager.auto_play_slides_once = MagicMock()
     service_manager.auto_play_slides_loop = MagicMock()
     service_manager.timed_slide_interval = MagicMock()
     service_manager.theme_menu = MagicMock()
     service_manager.menu = MagicMock()
     # WHEN I define a context menu
     service_manager.context_menu(1)
     # THEN the following calls should have occurred.
     self.assertEquals(service_manager.edit_action.setVisible.call_count, 2, 'Should have be called twice')
     self.assertEquals(service_manager.rename_action.setVisible.call_count, 1, 'Should have be called once')
     self.assertEquals(service_manager.create_custom_action.setVisible.call_count, 1, 'Should have be called once')
     self.assertEquals(service_manager.maintain_action.setVisible.call_count, 1, 'Should have be called once')
     self.assertEquals(service_manager.notes_action.setVisible.call_count, 1, 'Should have be called once')
     self.assertEquals(service_manager.time_action.setVisible.call_count, 1, 'Should have be called once')
     self.assertEquals(service_manager.auto_start_action.setVisible.call_count, 1, 'Should have be called once')
     self.assertEquals(service_manager.auto_play_slides_menu.menuAction().setVisible.call_count, 1,
                       'Should have be called once')
     self.assertEquals(service_manager.auto_play_slides_once.setChecked.call_count, 0, 'Should not be called')
     self.assertEquals(service_manager.auto_play_slides_loop.setChecked.call_count, 0, 'Should not be called')
     self.assertEquals(service_manager.timed_slide_interval.setChecked.call_count, 0, 'Should not be called')
     self.assertEquals(service_manager.theme_menu.menuAction().setVisible.call_count, 2,
                       'Should have be called twice')
     # THEN we add a 2nd display frame
     service_item._display_frames.append(MagicMock())
     service_manager.context_menu(1)
     # THEN the following additional calls should have occurred.
     self.assertEquals(service_manager.auto_play_slides_menu.menuAction().setVisible.call_count, 2,
                       'Should have be called twice')
     self.assertEquals(service_manager.auto_play_slides_once.setChecked.call_count, 1, 'Should have be called once')
     self.assertEquals(service_manager.auto_play_slides_loop.setChecked.call_count, 1, 'Should have be called once')
     self.assertEquals(service_manager.timed_slide_interval.setChecked.call_count, 1, 'Should have be called once')
コード例 #27
0
 def build_media_context_menu_test(self):
     """
     Test the creation of a context menu from service item of type Command from Media.
     """
     # GIVEN: A new service manager instance and a default service item.
     Registry().register('plugin_manager', MagicMock())
     Registry().register('renderer', MagicMock())
     service_manager = ServiceManager(None)
     item = MagicMock()
     item.parent.return_value = False
     item.data.return_value = 0
     service_manager.service_manager_list = MagicMock()
     service_manager.service_manager_list.itemAt.return_value = item
     service_item = ServiceItem(None)
     service_item.add_capability(ItemCapabilities.CanAutoStartForLive)
     service_item.add_capability(ItemCapabilities.CanEditTitle)
     service_item.add_capability(ItemCapabilities.RequiresMedia)
     service_item.service_item_type = ServiceItemType.Command
     service_item.edit_id = 1
     service_item._raw_frames.append(MagicMock())
     service_manager.service_items.insert(1, {'service_item': service_item})
     service_manager.edit_action = MagicMock()
     service_manager.rename_action = MagicMock()
     service_manager.create_custom_action = MagicMock()
     service_manager.maintain_action = MagicMock()
     service_manager.notes_action = MagicMock()
     service_manager.time_action = MagicMock()
     service_manager.auto_start_action = MagicMock()
     service_manager.auto_play_slides_menu = MagicMock()
     service_manager.auto_play_slides_once = MagicMock()
     service_manager.auto_play_slides_loop = MagicMock()
     service_manager.timed_slide_interval = MagicMock()
     service_manager.theme_menu = MagicMock()
     service_manager.menu = MagicMock()
     # WHEN I define a context menu
     service_manager.context_menu(1)
     # THEN the following calls should have occurred.
     self.assertEquals(service_manager.edit_action.setVisible.call_count, 1, 'Should have be called once')
     self.assertEquals(service_manager.rename_action.setVisible.call_count, 2, 'Should have be called twice')
     self.assertEquals(service_manager.create_custom_action.setVisible.call_count, 1, 'Should have be called once')
     self.assertEquals(service_manager.maintain_action.setVisible.call_count, 1, 'Should have be called once')
     self.assertEquals(service_manager.notes_action.setVisible.call_count, 1, 'Should have be called once')
     self.assertEquals(service_manager.time_action.setVisible.call_count, 1, 'Should have be called once')
     self.assertEquals(service_manager.auto_start_action.setVisible.call_count, 2, 'Should have be called twice')
     self.assertEquals(service_manager.auto_play_slides_menu.menuAction().setVisible.call_count, 1,
                       'Should have be called once')
     self.assertEquals(service_manager.auto_play_slides_once.setChecked.call_count, 0, 'Should not be called')
     self.assertEquals(service_manager.auto_play_slides_loop.setChecked.call_count, 0, 'Should not be called')
     self.assertEquals(service_manager.timed_slide_interval.setChecked.call_count, 0, 'Should not be called')
     self.assertEquals(service_manager.theme_menu.menuAction().setVisible.call_count, 1,
                       'Should have be called once')
     # THEN I change the length of the media and regenerate the menu.
     service_item.set_media_length(5)
     service_manager.context_menu(1)
     # THEN the following additional calls should have occurred.
     self.assertEquals(service_manager.time_action.setVisible.call_count, 3, 'Should have be called three times')
コード例 #28
0
 def build_image_context_menu_test(self):
     """
     Test the creation of a context menu from service item of type Image from Image.
     """
     # GIVEN: A new service manager instance and a default service item.
     Registry().register('plugin_manager', MagicMock())
     Registry().register('renderer', MagicMock())
     service_manager = ServiceManager(None)
     item = MagicMock()
     item.parent.return_value = False
     item.data.return_value = 0
     service_manager.service_manager_list = MagicMock()
     service_manager.service_manager_list.itemAt.return_value = item
     service_item = ServiceItem(None)
     service_item.add_capability(ItemCapabilities.CanMaintain)
     service_item.add_capability(ItemCapabilities.CanPreview)
     service_item.add_capability(ItemCapabilities.CanLoop)
     service_item.add_capability(ItemCapabilities.CanAppend)
     service_item.add_capability(ItemCapabilities.CanEditTitle)
     service_item.service_item_type = ServiceItemType.Image
     service_item.edit_id = 1
     service_item._raw_frames.append(MagicMock())
     service_manager.service_items.insert(1, {'service_item': service_item})
     service_manager.edit_action = MagicMock()
     service_manager.rename_action = MagicMock()
     service_manager.create_custom_action = MagicMock()
     service_manager.maintain_action = MagicMock()
     service_manager.notes_action = MagicMock()
     service_manager.time_action = MagicMock()
     service_manager.auto_start_action = MagicMock()
     service_manager.auto_play_slides_menu = MagicMock()
     service_manager.auto_play_slides_once = MagicMock()
     service_manager.auto_play_slides_loop = MagicMock()
     service_manager.timed_slide_interval = MagicMock()
     service_manager.theme_menu = MagicMock()
     service_manager.menu = MagicMock()
     # WHEN I define a context menu
     service_manager.context_menu(1)
     # THEN the following calls should have occurred.
     self.assertEquals(service_manager.edit_action.setVisible.call_count, 1, 'Should have be called once')
     self.assertEquals(service_manager.rename_action.setVisible.call_count, 2, 'Should have be called twice')
     self.assertEquals(service_manager.create_custom_action.setVisible.call_count, 1, 'Should have be called once')
     self.assertEquals(service_manager.maintain_action.setVisible.call_count, 2, 'Should have be called twice')
     self.assertEquals(service_manager.notes_action.setVisible.call_count, 1, 'Should have be called once')
     self.assertEquals(service_manager.time_action.setVisible.call_count, 1, 'Should have be called once')
     self.assertEquals(service_manager.auto_start_action.setVisible.call_count, 1, 'Should have be called once')
     self.assertEquals(service_manager.auto_play_slides_menu.menuAction().setVisible.call_count, 1,
                       'Should have be called once')
     self.assertEquals(service_manager.auto_play_slides_once.setChecked.call_count, 0, 'Should not be called')
     self.assertEquals(service_manager.auto_play_slides_loop.setChecked.call_count, 0, 'Should not be called')
     self.assertEquals(service_manager.timed_slide_interval.setChecked.call_count, 0, 'Should not be called')
     self.assertEquals(service_manager.theme_menu.menuAction().setVisible.call_count, 1,
                       'Should have be called once')
     # THEN we add a 2nd display frame and regenerate the menu.
     service_item._raw_frames.append(MagicMock())
     service_manager.context_menu(1)
     # THEN the following additional calls should have occurred.
     self.assertEquals(service_manager.auto_play_slides_menu.menuAction().setVisible.call_count, 2,
                       'Should have be called twice')
     self.assertEquals(service_manager.auto_play_slides_once.setChecked.call_count, 1, 'Should have be called once')
     self.assertEquals(service_manager.auto_play_slides_loop.setChecked.call_count, 1, 'Should have be called once')
     self.assertEquals(service_manager.timed_slide_interval.setChecked.call_count, 1, 'Should have be called once')
コード例 #29
0
ファイル: test_servicemanager.py プロジェクト: simhnna/openlp
 def test_build_presentation_non_pdf_context_menu(self):
     """
     Test the creation of a context menu from service item of type Command with Impress from Presentation.
     """
     # GIVEN: A new service manager instance and a default service item.
     Registry().register('plugin_manager', MagicMock())
     Registry().register('renderer', MagicMock())
     service_manager = ServiceManager(None)
     item = MagicMock()
     item.parent.return_value = False
     item.data.return_value = 0
     service_manager.service_manager_list = MagicMock()
     service_manager.service_manager_list.itemAt.return_value = item
     service_item = ServiceItem(None)
     service_item.add_capability(ItemCapabilities.ProvidesOwnDisplay)
     service_item.service_item_type = ServiceItemType.Command
     service_item.edit_id = 1
     service_item._raw_frames.append(MagicMock())
     service_manager.service_items.insert(1, {'service_item': service_item})
     service_manager.edit_action = MagicMock()
     service_manager.rename_action = MagicMock()
     service_manager.create_custom_action = MagicMock()
     service_manager.maintain_action = MagicMock()
     service_manager.notes_action = MagicMock()
     service_manager.time_action = MagicMock()
     service_manager.auto_start_action = MagicMock()
     service_manager.auto_play_slides_menu = MagicMock()
     service_manager.auto_play_slides_once = MagicMock()
     service_manager.auto_play_slides_loop = MagicMock()
     service_manager.timed_slide_interval = MagicMock()
     service_manager.theme_menu = MagicMock()
     service_manager.menu = MagicMock()
     # WHEN I define a context menu
     service_manager.context_menu(1)
     # THEN the following calls should have occurred.
     assert service_manager.edit_action.setVisible.call_count == 1, 'Should have be called once'
     assert service_manager.rename_action.setVisible.call_count == 1, 'Should have be called once'
     assert service_manager.create_custom_action.setVisible.call_count == 1, 'Should have be called once'
     assert service_manager.maintain_action.setVisible.call_count == 1, 'Should have be called once'
     assert service_manager.notes_action.setVisible.call_count == 1, 'Should have be called once'
     assert service_manager.time_action.setVisible.call_count == 1, 'Should have be called once'
     assert service_manager.auto_start_action.setVisible.call_count == 1, 'Should have be called once'
     assert service_manager.auto_play_slides_menu.menuAction().setVisible.call_count == 1, \
         'Should have be called once'
     assert service_manager.auto_play_slides_once.setChecked.call_count == 0, 'Should not be called'
     assert service_manager.auto_play_slides_loop.setChecked.call_count == 0, 'Should not be called'
     assert service_manager.timed_slide_interval.setChecked.call_count == 0, 'Should not be called'
     assert service_manager.theme_menu.menuAction().setVisible.call_count == 1, \
         'Should have be called once'
コード例 #30
0
ファイル: test_router.py プロジェクト: imkernel/openlp
class TestRouter(TestCase, TestMixin):
    """
    Test the functions in the :mod:`lib` module.
    """
    def setUp(self):
        """
        Create the UI
        """
        Registry.create()
        self.setup_application()
        self.build_settings()
        Settings().extend_default_settings(__default_settings__)
        self.service_manager = ServiceManager()
        self.router = HttpRouter()

    def tearDown(self):
        """
        Delete all the C++ objects at the end so that we don't have a segfault
        """
        self.destroy_settings()

    def test_password_encrypter(self):
        """
        Test hash userid and password function
        """
        # GIVEN: A default configuration
        Settings().setValue('remotes/user id', 'openlp')
        Settings().setValue('remotes/password', 'password')

        # WHEN: called with the defined userid
        router = HttpRouter()
        router.initialise()
        test_value = 'b3BlbmxwOnBhc3N3b3Jk'

        # THEN: the function should return the correct password
        self.assertEqual(router.auth, test_value,
                         'The result for make_sha_hash should return the correct encrypted password')

    def test_process_http_request(self):
        """
        Test the router control functionality
        """
        # GIVEN: A testing set of Routes
        mocked_function = MagicMock()
        test_route = [
            (r'^/stage/api/poll$', {'function': mocked_function, 'secure': False}),
        ]
        self.router.routes = test_route
        self.router.command = 'GET'

        # WHEN: called with a poll route
        function, args = self.router.process_http_request('/stage/api/poll', None)

        # THEN: the function should have been called only once
        self.assertEqual(mocked_function, function['function'], 'The mocked function should match defined value.')
        self.assertFalse(function['secure'], 'The mocked function should not require any security.')

    def test_process_secure_http_request(self):
        """
        Test the router control functionality
        """
        # GIVEN: A testing set of Routes
        mocked_function = MagicMock()
        test_route = [
            (r'^/stage/api/poll$', {'function': mocked_function, 'secure': True}),
        ]
        self.router.routes = test_route
        self.router.settings_section = 'remotes'
        Settings().setValue('remotes/authentication enabled', True)
        self.router.path = '/stage/api/poll'
        self.router.auth = ''
        self.router.headers = {'Authorization': None}
        self.router.send_response = MagicMock()
        self.router.send_header = MagicMock()
        self.router.end_headers = MagicMock()
        self.router.wfile = MagicMock()
        self.router.command = 'GET'

        # WHEN: called with a poll route
        self.router.do_post_processor()

        # THEN: the function should have been called only once
        self.router.send_response.assert_called_once_with(401)
        self.assertEqual(self.router.send_header.call_count, 5, 'The header should have been called five times.')

    def test_get_content_type(self):
        """
        Test the get_content_type logic
        """
        # GIVEN: a set of files and their corresponding types
        headers = [
            ['test.html', 'text/html'], ['test.css', 'text/css'],
            ['test.js', 'application/javascript'], ['test.jpg', 'image/jpeg'],
            ['test.gif', 'image/gif'], ['test.ico', 'image/x-icon'],
            ['test.png', 'image/png'], ['test.whatever', 'text/plain'],
            ['test', 'text/plain'], ['', 'text/plain'],
            [os.path.join(TEST_PATH, 'test.html'), 'text/html']]

        # WHEN: calling each file type
        for header in headers:
            ext, content_type = self.router.get_content_type(header[0])

            # THEN: all types should match
            self.assertEqual(content_type, header[1], 'Mismatch of content type')

    def test_main_poll(self):
        """
        Test the main poll logic
        """
        # GIVEN: a defined router with two slides
        Registry.create()
        Registry().register('live_controller', MagicMock)
        router = HttpRouter()
        router.send_response = MagicMock()
        router.send_header = MagicMock()
        router.end_headers = MagicMock()
        router.live_controller.slide_count = 2

        # WHEN: main poll called
        results = router.main_poll()

        # THEN: the correct response should be returned
        self.assertEqual(results.decode('utf-8'), '{"results": {"slide_count": 2}}',
                         'The resulting json strings should match')

    def test_serve_file_without_params(self):
        """
        Test the serve_file method without params
        """
        # GIVEN: mocked environment
        self.router.send_response = MagicMock()
        self.router.send_header = MagicMock()
        self.router.end_headers = MagicMock()
        self.router.wfile = MagicMock()
        self.router.html_dir = os.path.normpath('test/dir')
        self.router.template_vars = MagicMock()

        # WHEN: call serve_file with no file_name
        self.router.serve_file()

        # THEN: it should return a 404
        self.router.send_response.assert_called_once_with(404)
        self.assertEqual(self.router.end_headers.call_count, 1, 'end_headers called once')

    def test_serve_file_with_valid_params(self):
        """
        Test the serve_file method with an existing file
        """
        # GIVEN: mocked environment
        self.router.send_response = MagicMock()
        self.router.send_header = MagicMock()
        self.router.end_headers = MagicMock()
        self.router.wfile = MagicMock()
        self.router.html_dir = os.path.normpath('test/dir')
        self.router.template_vars = MagicMock()
        with patch('openlp.core.lib.os.path.exists') as mocked_exists, \
                patch('builtins.open', mock_open(read_data='123')):
            mocked_exists.return_value = True

            # WHEN: call serve_file with an existing html file
            self.router.serve_file(os.path.normpath('test/dir/test.html'))

            # THEN: it should return a 200 and the file
            self.router.send_response.assert_called_once_with(200)
            self.router.send_header.assert_called_once_with('Content-type', 'text/html')
            self.assertEqual(self.router.end_headers.call_count, 1, 'end_headers called once')

    def test_serve_file_with_partial_params(self):
        """
        Test the serve_file method with an existing file
        """
        # GIVEN: mocked environment
        self.router.send_response = MagicMock()
        self.router.send_header = MagicMock()
        self.router.end_headers = MagicMock()
        self.router.wfile = MagicMock()
        self.router.html_dir = os.path.normpath('test/dir')
        self.router.template_vars = MagicMock()
        with patch('openlp.core.lib.os.path.exists') as mocked_exists, \
                patch('builtins.open', mock_open(read_data='123')):
            mocked_exists.return_value = True

            # WHEN: call serve_file with an existing html file
            self.router.serve_file(os.path.normpath('test/dir/test'))

            # THEN: it should return a 200 and the file
            self.router.send_response.assert_called_once_with(200)
            self.router.send_header.assert_called_once_with('Content-type', 'text/html')
            self.assertEqual(self.router.end_headers.call_count, 1, 'end_headers called once')

    def test_serve_thumbnail_without_params(self):
        """
        Test the serve_thumbnail routine without params
        """
        # GIVEN: mocked environment
        self.router.send_response = MagicMock()
        self.router.send_header = MagicMock()
        self.router.end_headers = MagicMock()
        self.router.wfile = MagicMock()

        # WHEN: I request a thumbnail
        self.router.serve_thumbnail()

        # THEN: The headers should be set correctly
        self.router.send_response.assert_called_once_with(404)
        self.assertEqual(self.router.send_response.call_count, 1, 'Send response should be called once')
        self.assertEqual(self.router.end_headers.call_count, 1, 'end_headers should be called once')

    def test_serve_thumbnail_with_invalid_params(self):
        """
        Test the serve_thumbnail routine with invalid params
        """
        # GIVEN: Mocked send_header, send_response, end_headers and wfile
        self.router.send_response = MagicMock()
        self.router.send_header = MagicMock()
        self.router.end_headers = MagicMock()
        self.router.wfile = MagicMock()

        # WHEN: pass a bad controller
        self.router.serve_thumbnail('badcontroller', 'tecnologia 1.pptx/slide1.png')

        # THEN: a 404 should be returned
        self.assertEqual(len(self.router.send_header.mock_calls), 4, 'header should be called 4 times')
        self.assertEqual(len(self.router.send_response.mock_calls), 1, 'One response')
        self.assertEqual(len(self.router.wfile.mock_calls), 1, 'Once call to write to the socket')
        self.router.send_response.assert_called_once_with(404)

        # WHEN: pass a bad filename
        self.router.send_response.reset_mock()
        self.router.serve_thumbnail('presentations', 'tecnologia 1.pptx/badfilename.png')

        # THEN: return a 404
        self.router.send_response.assert_called_once_with(404)

        # WHEN: a dangerous URL is passed
        self.router.send_response.reset_mock()
        self.router.serve_thumbnail('presentations', '../tecnologia 1.pptx/slide1.png')

        # THEN: return a 404
        self.router.send_response.assert_called_once_with(404)

    def test_serve_thumbnail_with_valid_params(self):
        """
        Test the serve_thumbnail routine with valid params
        """
        # GIVEN: Mocked send_header, send_response, end_headers and wfile
        self.router.send_response = MagicMock()
        self.router.send_header = MagicMock()
        self.router.end_headers = MagicMock()
        self.router.wfile = MagicMock()
        mocked_image_manager = MagicMock()
        Registry().register('image_manager', mocked_image_manager)
        file_name = 'another%20test/slide1.png'
        full_path = os.path.normpath(os.path.join('thumbnails', file_name))
        width = 120
        height = 90
        with patch('openlp.core.lib.os.path.exists') as mocked_exists, \
                patch('builtins.open', mock_open(read_data='123')), \
                patch('openlp.plugins.remotes.lib.httprouter.AppLocation') as mocked_location, \
                patch('openlp.plugins.remotes.lib.httprouter.image_to_byte') as mocked_image_to_byte:
            mocked_exists.return_value = True
            mocked_image_to_byte.return_value = '123'
            mocked_location.get_section_data_path.return_value = ''

            # WHEN: pass good controller and filename
            self.router.serve_thumbnail('presentations', '{0}x{1}'.format(width, height), file_name)

            # THEN: a file should be returned
            self.assertEqual(self.router.send_header.call_count, 1, 'One header')
            self.assertEqual(self.router.send_response.call_count, 1, 'Send response called once')
            self.assertEqual(self.router.end_headers.call_count, 1, 'end_headers called once')
            mocked_exists.assert_called_with(urllib.parse.unquote(full_path))
            self.assertEqual(mocked_image_to_byte.call_count, 1, 'Called once')
            mocked_image_manager.add_image.assert_any_call(os.path.normpath(os.path.join('thumbnails', 'another test',
                                                                                         'slide1.png')),
                                                           'slide1.png', None, width, height)
            mocked_image_manager.get_image.assert_any_call(os.path.normpath(os.path.join('thumbnails', 'another test',
                                                                                         'slide1.png')),
                                                           'slide1.png', width, height)

    def test_remote_next(self):
        """
        Test service manager receives remote next click properly (bug 1407445)
        """
        # GIVEN: initial setup and mocks
        self.router.routes = [(r'^/api/service/(.*)$', {'function': self.router.service, 'secure': False})]
        self.router.request_data = False
        mocked_next_item = MagicMock()
        self.service_manager.next_item = mocked_next_item
        with patch.object(self.service_manager, 'setup_ui'), \
                patch.object(self.router, 'do_json_header'):
            self.service_manager.bootstrap_initialise()
            self.app.processEvents()

            # WHEN: Remote next is received
            self.router.service(action='next')
            self.app.processEvents()

            # THEN: service_manager.next_item() should have been called
            self.assertTrue(mocked_next_item.called, 'next_item() should have been called in service_manager')

    def test_remote_previous(self):
        """
        Test service manager receives remote previous click properly (bug 1407445)
        """
        # GIVEN: initial setup and mocks
        self.router.routes = [(r'^/api/service/(.*)$', {'function': self.router.service, 'secure': False})]
        self.router.request_data = False
        mocked_previous_item = MagicMock()
        self.service_manager.previous_item = mocked_previous_item
        with patch.object(self.service_manager, 'setup_ui'), \
                patch.object(self.router, 'do_json_header'):
            self.service_manager.bootstrap_initialise()
            self.app.processEvents()

            # WHEN: Remote next is received
            self.router.service(action='previous')
            self.app.processEvents()

            # THEN: service_manager.next_item() should have been called
            self.assertTrue(mocked_previous_item.called, 'previous_item() should have been called in service_manager')

    def test_remote_stage_personal_html(self):
        """
        Test the stage url with a parameter after loaded a url/stage.html file
        """
        # GIVEN: initial route
        self.router.config_dir = ''
        self.router.send_response = MagicMock()
        self.router.send_header = MagicMock()
        self.router.end_headers = MagicMock()
        self.router.wfile = MagicMock()
        self.router._process_file = MagicMock()

        # WHEN: I call stage with a suffix
        self.router.stages('stages', 'trb')

        # THEN: we should use the specific stage file instance
        self.router._process_file.assert_called_with(os.path.join('trb', 'stage.html'))

    def test_remote_stage_personal_css(self):
        """
        Test the html with reference stages/trb/trb.css then loaded a stages/trb/trb.css file
        """
        # GIVEN: initial route
        self.router.config_dir = ''
        self.router.send_response = MagicMock()
        self.router.send_header = MagicMock()
        self.router.end_headers = MagicMock()
        self.router.wfile = MagicMock()
        self.router._process_file = MagicMock()

        # WHEN: I call stage with a suffix
        self.router.stages('stages', 'stages/trb/trb.css')

        # THEN: we should use the specific stage file instance
        self.router._process_file.assert_called_with(os.path.join('trb', 'trb.css'))
コード例 #31
0
ファイル: test_servicemanager.py プロジェクト: simhnna/openlp
 def test_build_custom_context_menu(self):
     """
     Test the creation of a context menu from service item of type text from Custom.
     """
     # GIVEN: A new service manager instance and a default service item.
     mocked_renderer = MagicMock()
     mocked_renderer.theme_level = ThemeLevel.Song
     Registry().register('plugin_manager', MagicMock())
     Registry().register('renderer', mocked_renderer)
     service_manager = ServiceManager(None)
     item = MagicMock()
     item.parent.return_value = False
     item.data.return_value = 0
     service_manager.service_manager_list = MagicMock()
     service_manager.service_manager_list.itemAt.return_value = item
     service_item = ServiceItem(None)
     service_item.add_capability(ItemCapabilities.CanEdit)
     service_item.add_capability(ItemCapabilities.CanPreview)
     service_item.add_capability(ItemCapabilities.CanLoop)
     service_item.add_capability(ItemCapabilities.CanSoftBreak)
     service_item.add_capability(ItemCapabilities.OnLoadUpdate)
     service_item.service_item_type = ServiceItemType.Text
     service_item.edit_id = 1
     service_item._display_frames.append(MagicMock())
     service_manager.service_items.insert(1, {'service_item': service_item})
     service_manager.edit_action = MagicMock()
     service_manager.rename_action = MagicMock()
     service_manager.create_custom_action = MagicMock()
     service_manager.maintain_action = MagicMock()
     service_manager.notes_action = MagicMock()
     service_manager.time_action = MagicMock()
     service_manager.auto_start_action = MagicMock()
     service_manager.auto_play_slides_menu = MagicMock()
     service_manager.auto_play_slides_once = MagicMock()
     service_manager.auto_play_slides_loop = MagicMock()
     service_manager.timed_slide_interval = MagicMock()
     service_manager.theme_menu = MagicMock()
     service_manager.menu = MagicMock()
     # WHEN I define a context menu
     service_manager.context_menu(1)
     # THEN the following calls should have occurred.
     assert service_manager.edit_action.setVisible.call_count == 2, 'Should have be called twice'
     assert service_manager.rename_action.setVisible.call_count == 1, 'Should have be called once'
     assert service_manager.create_custom_action.setVisible.call_count == 1, 'Should have be called once'
     assert service_manager.maintain_action.setVisible.call_count == 1, 'Should have be called once'
     assert service_manager.notes_action.setVisible.call_count == 1, 'Should have be called once'
     assert service_manager.time_action.setVisible.call_count == 1, 'Should have be called once'
     assert service_manager.auto_start_action.setVisible.call_count == 1, 'Should have be called once'
     assert service_manager.auto_play_slides_menu.menuAction().setVisible.call_count == 1, \
         'Should have be called once'
     assert service_manager.auto_play_slides_once.setChecked.call_count == 0, 'Should not be called'
     assert service_manager.auto_play_slides_loop.setChecked.call_count == 0, 'Should not be called'
     assert service_manager.timed_slide_interval.setChecked.call_count == 0, 'Should not be called'
     assert service_manager.theme_menu.menuAction().setVisible.call_count == 2, \
         'Should have be called twice'
     # THEN we add a 2nd display frame
     service_item._display_frames.append(MagicMock())
     service_manager.context_menu(1)
     # THEN the following additional calls should have occurred.
     assert service_manager.auto_play_slides_menu.menuAction().setVisible.call_count == 2, \
         'Should have be called twice'
     assert service_manager.auto_play_slides_once.setChecked.call_count == 1, 'Should have be called once'
     assert service_manager.auto_play_slides_loop.setChecked.call_count == 1, 'Should have be called once'
     assert service_manager.timed_slide_interval.setChecked.call_count == 1, 'Should have be called once'
コード例 #32
0
 def build_context_menu_test(self):
     """
     Test the creation of a context menu from a null service item.
     """
     # GIVEN: A new service manager instance and a default service item.
     service_manager = ServiceManager(None)
     item = MagicMock()
     item.parent.return_value = False
     item.data.return_value = 0
     service_manager.service_manager_list = MagicMock()
     service_manager.service_manager_list.itemAt.return_value = item
     service_item = ServiceItem(None)
     service_manager.service_items.insert(1, {'service_item': service_item})
     service_manager.edit_action = MagicMock()
     service_manager.rename_action = MagicMock()
     service_manager.create_custom_action = MagicMock()
     service_manager.maintain_action = MagicMock()
     service_manager.notes_action = MagicMock()
     service_manager.time_action = MagicMock()
     service_manager.auto_start_action = MagicMock()
     service_manager.auto_play_slides_menu = MagicMock()
     service_manager.auto_play_slides_once = MagicMock()
     service_manager.auto_play_slides_loop = MagicMock()
     service_manager.timed_slide_interval = MagicMock()
     service_manager.theme_menu = MagicMock()
     service_manager.menu = MagicMock()
     # WHEN I define a context menu
     service_manager.context_menu(1)
     # THEN the following calls should have occurred.
     self.assertEquals(service_manager.edit_action.setVisible.call_count, 1, 'Should have been called once')
     self.assertEquals(service_manager.rename_action.setVisible.call_count, 1, 'Should have been called once')
     self.assertEquals(service_manager.create_custom_action.setVisible.call_count, 1, 'Should have been called once')
     self.assertEquals(service_manager.maintain_action.setVisible.call_count, 1, 'Should have been called once')
     self.assertEquals(service_manager.notes_action.setVisible.call_count, 1, 'Should have been called once')
     self.assertEquals(service_manager.time_action.setVisible.call_count, 1, 'Should have been called once')
     self.assertEquals(service_manager.auto_start_action.setVisible.call_count, 1, 'Should have been called once')
     self.assertEquals(service_manager.auto_play_slides_menu.menuAction().setVisible.call_count, 1,
                       'Should have been called once')
     self.assertEquals(service_manager.auto_play_slides_once.setChecked.call_count, 0, 'Should not be called')
     self.assertEquals(service_manager.auto_play_slides_loop.setChecked.call_count, 0, 'Should not be called')
     self.assertEquals(service_manager.timed_slide_interval.setChecked.call_count, 0, 'Should not be called')
     self.assertEquals(service_manager.theme_menu.menuAction().setVisible.call_count, 1,
                       'Should have been called once')
コード例 #33
0
 def build_presentation_non_pdf_context_menu_test(self):
     """
     Test the creation of a context menu from service item of type Command with Impress from Presentation.
     """
     # GIVEN: A new service manager instance and a default service item.
     Registry().register('plugin_manager', MagicMock())
     Registry().register('renderer', MagicMock())
     service_manager = ServiceManager(None)
     item = MagicMock()
     item.parent.return_value = False
     item.data.return_value = 0
     service_manager.service_manager_list = MagicMock()
     service_manager.service_manager_list.itemAt.return_value = item
     service_item = ServiceItem(None)
     service_item.add_capability(ItemCapabilities.ProvidesOwnDisplay)
     service_item.service_item_type = ServiceItemType.Command
     service_item.edit_id = 1
     service_item._raw_frames.append(MagicMock())
     service_manager.service_items.insert(1, {'service_item': service_item})
     service_manager.edit_action = MagicMock()
     service_manager.rename_action = MagicMock()
     service_manager.create_custom_action = MagicMock()
     service_manager.maintain_action = MagicMock()
     service_manager.notes_action = MagicMock()
     service_manager.time_action = MagicMock()
     service_manager.auto_start_action = MagicMock()
     service_manager.auto_play_slides_menu = MagicMock()
     service_manager.auto_play_slides_once = MagicMock()
     service_manager.auto_play_slides_loop = MagicMock()
     service_manager.timed_slide_interval = MagicMock()
     service_manager.theme_menu = MagicMock()
     service_manager.menu = MagicMock()
     # WHEN I define a context menu
     service_manager.context_menu(1)
     # THEN the following calls should have occurred.
     self.assertEquals(service_manager.edit_action.setVisible.call_count, 1, 'Should have be called once')
     self.assertEquals(service_manager.rename_action.setVisible.call_count, 1, 'Should have be called once')
     self.assertEquals(service_manager.create_custom_action.setVisible.call_count, 1, 'Should have be called once')
     self.assertEquals(service_manager.maintain_action.setVisible.call_count, 1, 'Should have be called once')
     self.assertEquals(service_manager.notes_action.setVisible.call_count, 1, 'Should have be called once')
     self.assertEquals(service_manager.time_action.setVisible.call_count, 1, 'Should have be called once')
     self.assertEquals(service_manager.auto_start_action.setVisible.call_count, 1, 'Should have be called once')
     self.assertEquals(service_manager.auto_play_slides_menu.menuAction().setVisible.call_count, 1,
                       'Should have be called once')
     self.assertEquals(service_manager.auto_play_slides_once.setChecked.call_count, 0, 'Should not be called')
     self.assertEquals(service_manager.auto_play_slides_loop.setChecked.call_count, 0, 'Should not be called')
     self.assertEquals(service_manager.timed_slide_interval.setChecked.call_count, 0, 'Should not be called')
     self.assertEquals(service_manager.theme_menu.menuAction().setVisible.call_count, 1,
                       'Should have be called once')