import logging
import sys
-from . import exceptions
+from . import exceptions as server_ex
from . import constants
+from pgwui_common import exceptions as common_ex
from pgwui_common import plugin
# Constants
component_checkers[component](settings.get(key, {})))
else:
if key[6:] not in SETTINGS:
- errors.append(exceptions.UnknownSettingKeyError(key))
+ errors.append(common_ex.UnknownSettingKeyError(key))
def require_setting(errors, setting, settings):
if setting not in settings:
- errors.append(exceptions.MissingSettingError(setting))
+ errors.append(common_ex.MissingSettingError(setting))
def boolean_setting(errors, setting, settings):
val = None
if (val is not True
and val is not False):
- errors.append(exceptions.NotBooleanSettingError(
+ errors.append(common_ex.NotBooleanSettingError(
setting, settings[setting]))
return
if 'session.secret' not in settings:
- errors.append(exceptions.NoHMACError())
+ errors.append(server_ex.NoHMACError())
return
if len(settings['session.secret']) != constants.HMAC_LEN:
- errors.append(exceptions.HMACLengthError())
+ errors.append(server_ex.HMACLengthError())
return
if value is None:
return
if value not in ('on', 'off', 'ask'):
- errors.append(exceptions.BadLiteralColumnHeadingsError(value))
+ errors.append(server_ex.BadLiteralColumnHeadingsError(value))
def parse_assignments(lines):
'''Report errors and exit
'''
tagged = [(logging.ERROR, error) for error in errors]
- tagged.append((logging.CRITICAL, exceptions.BadSettingsAbort()))
+ tagged.append((logging.CRITICAL, server_ex.BadSettingsAbort()))
for (level, error) in tagged:
log.log(level, error)
return []
if 'pyramid.include' in settings:
- log.info(exceptions.AutoconfigureConflict())
+ log.info(server_ex.AutoconfigureConflict())
return components
'''Exceptions for PGWUI_Server
'''
+from pgwui_common import exceptions
from . import constants
-class Error(Exception):
- '''Base error class for module
- '''
+class ServerError(exceptions.Error):
pass
-class AutoconfigureConflict(Error):
+class AutoconfigureConflict(ServerError):
def __init__(self):
super().__init__(
'Autoconfigure is True and there is a pyramid.include setting')
-class BadSettingsAbort(Error):
+class BadSettingsAbort(ServerError):
def __init__(self):
super().__init__('Aborting due to bad setting(s)')
-class UnknownSettingKeyError(Error):
- def __init__(self, key):
- super().__init__('Unknown PGWUI setting: {}'.format(key))
-
-
-class MissingSettingError(Error):
- def __init__(self, key):
- super().__init__('Missing PGWUI setting: {}'.format(key))
-
-
-class NotBooleanSettingError(Error):
- def __init__(self, key, value):
- super().__init__(
- 'The "{}" PGWUI setting must be "True" or "False"'
- .format(key))
-
-
-class BadLiteralColumnHeadingsError(Error):
+class BadLiteralColumnHeadingsError(ServerError):
def __init__(self, value):
super().__init__(
'The "pgwui.literal_column_headings" PGWUI setting must be'
'"on", "off", "ask", or not present')
-class BadHMACError(Error):
+class BadHMACError(ServerError):
pass
import pyramid.testing
+import pgwui_common.exceptions as common_ex
import pgwui_common.plugin
# Use as a regular module, not a plugin, so lint checks work
from pgwui_testing import testing
import pgwui_server.constants as constants
-import pgwui_server.exceptions as ex
+import pgwui_server.exceptions as server_ex
import pgwui_server.__init__ as pgwui_server_init
errors, {}, {}, 'pgwui.foo', {})
assert errors
- assert isinstance(errors[0], ex.UnknownSettingKeyError)
+ assert isinstance(errors[0], common_ex.UnknownSettingKeyError)
def test_abort_on_bad_setting_good():
pgwui_server_init.require_setting(errors, 'key', {})
assert errors
- assert isinstance(errors[0], ex.MissingSettingError)
+ assert isinstance(errors[0], common_ex.MissingSettingError)
def test_require_setting_present():
pgwui_server_init.boolean_setting(errors, 'key', {'key': '0'})
assert errors
- assert isinstance(errors[0], ex.NotBooleanSettingError)
+ assert isinstance(errors[0], common_ex.NotBooleanSettingError)
def test_boolean_setting_notparsable():
pgwui_server_init.boolean_setting(errors, 'key', {'key': 'a'})
assert errors
- assert isinstance(errors[0], ex.NotBooleanSettingError)
+ assert isinstance(errors[0], common_ex.NotBooleanSettingError)
mock_boolean_setting = testing.make_mock_fixture(
pgwui_server_init.validate_hmac(errors, {})
assert errors
- assert isinstance(errors[0], ex.NoHMACError)
+ assert isinstance(errors[0], server_ex.NoHMACError)
def test_validate_hmac_length(mock_do_validate_hmac):
pgwui_server_init.validate_hmac(errors, {'session.secret': ''})
assert errors
- assert isinstance(errors[0], ex.HMACLengthError)
+ assert isinstance(errors[0], server_ex.HMACLengthError)
mock_validate_hmac = testing.make_mock_fixture(
assert errors
assert isinstance(
- errors[0], ex.BadLiteralColumnHeadingsError)
+ errors[0], server_ex.BadLiteralColumnHeadingsError)
mock_validate_literal_column_headings = testing.make_mock_fixture(
def test_main_integrated():
'''Does not raise errors or warnings'''
pgwui_server_init.main({}, **TEST_SETTINGS)
-
-
-# Functional tests
-
-def test_unknownsettingkeyerror():
- '''Takes an argument'''
- assert isinstance(ex.UnknownSettingKeyError('key'),
- ex.Error)
-
-
-def test_missingsettingerror():
- '''Takes an argument'''
- assert isinstance(ex.MissingSettingError('key'),
- ex.Error)
-
-
-def test_notbooleansettingerror():
- '''Takes two arguments'''
- assert isinstance(ex.NotBooleanSettingError('key', 'val'),
- ex.Error)