From ba89063217924ef7f33dfc8db20d226f97057a96 Mon Sep 17 00:00:00 2001 From: "Karl O. Pinc" Date: Sat, 29 Aug 2020 18:29:03 -0500 Subject: [PATCH] Move common exceptions into pgwui_common --- src/pgwui_server/__init__.py | 19 ++++++++--------- src/pgwui_server/exceptions.py | 30 ++++++--------------------- tests/test___init__.py | 37 +++++++++------------------------- 3 files changed, 25 insertions(+), 61 deletions(-) diff --git a/src/pgwui_server/__init__.py b/src/pgwui_server/__init__.py index 0c623a6..0b380b3 100644 --- a/src/pgwui_server/__init__.py +++ b/src/pgwui_server/__init__.py @@ -27,8 +27,9 @@ from pyramid.config import Configurator 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 @@ -65,12 +66,12 @@ def abort_on_bad_setting( 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): @@ -81,7 +82,7 @@ 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])) @@ -122,11 +123,11 @@ def validate_hmac(errors, settings): 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 @@ -137,7 +138,7 @@ def validate_literal_column_headings(errors, settings): 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): @@ -184,7 +185,7 @@ def exit_reporting_errors(errors): '''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) @@ -221,7 +222,7 @@ def autoconfigurable_components(settings, components): return [] if 'pyramid.include' in settings: - log.info(exceptions.AutoconfigureConflict()) + log.info(server_ex.AutoconfigureConflict()) return components diff --git a/src/pgwui_server/exceptions.py b/src/pgwui_server/exceptions.py index 6b45cd9..ef82da5 100644 --- a/src/pgwui_server/exceptions.py +++ b/src/pgwui_server/exceptions.py @@ -22,51 +22,33 @@ '''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 diff --git a/tests/test___init__.py b/tests/test___init__.py index 185bf21..f4cc6c1 100644 --- a/tests/test___init__.py +++ b/tests/test___init__.py @@ -28,12 +28,13 @@ import unittest.mock 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 @@ -93,7 +94,7 @@ def test_abort_on_bad_setting_bad(): 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(): @@ -149,7 +150,7 @@ def test_require_setting_missing(): 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(): @@ -196,7 +197,7 @@ def test_boolean_setting_notboolean(): 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(): @@ -207,7 +208,7 @@ 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( @@ -282,7 +283,7 @@ def test_validate_hmac_missing(mock_do_validate_hmac): 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): @@ -292,7 +293,7 @@ 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( @@ -344,7 +345,7 @@ def test_validate_literal_column_headings_bad(): assert errors assert isinstance( - errors[0], ex.BadLiteralColumnHeadingsError) + errors[0], server_ex.BadLiteralColumnHeadingsError) mock_validate_literal_column_headings = testing.make_mock_fixture( @@ -661,23 +662,3 @@ def test_main(monkeypatch): 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) -- 2.34.1