-# Copyright (C) 2018 The Meme Factory, Inc. http://www.meme.com/
+# Copyright (C) 2018, 2019 The Meme Factory, Inc. http://www.karlpinc.com/
# This file is part of PGWUI_Server.
#
# <http://www.gnu.org/licenses/>.
#
-# Karl O. Pinc <kop@meme.com>
+# Karl O. Pinc <kop@karlpinc.com>
'''Provide a way to configure PGWUI.
'''
from ast import literal_eval
from pyramid.config import Configurator
+import logging
+import sys
# Constants
HMAC_LEN = 40
+# Logging
+log = logging.getLogger(__name__)
+
+
# Exceptions
class Error(Exception):
'''Base error class for module
validate_hmac(settings)
+def exit_on_invalid_settings(settings):
+ '''Exit when settings don't validate
+ '''
+ try:
+ validate_settings(settings)
+ except Error as ex:
+ log.critical(ex)
+ sys.exit(1)
+
+
def parse_assignments(lines):
'''Return a list of key/value tuples from the lines of a setting
'''
def pgwui_server_config(settings):
'''Configure pyramid
'''
- validate_settings(settings)
+ exit_on_invalid_settings(settings)
rp = settings.get('pgwui.route_prefix')
with Configurator(settings=settings, route_prefix=rp) as config:
# Karl O. Pinc <kop@meme.com>
+import logging
import pytest
+import sys
+
import pgwui_server.__init__ as pgwui_server_init
assert count == len(settings)
+# exit_on_invalid_settings()
+
+def test_exit_on_invalid_settings_exits(monkeypatch, caplog):
+ '''Logs critical and exits with 1 when a setting is invalid'''
+ caplog.set_level(logging.CRITICAL)
+
+ exit1_called = False
+
+ def mock_exit(status):
+ nonlocal exit1_called
+ exit1_called = status == 1
+
+ def mock_validate_settings(settings):
+ raise pgwui_server_init.Error()
+
+ monkeypatch.setattr(pgwui_server_init, 'validate_settings',
+ mock_validate_settings)
+ monkeypatch.setattr(sys, 'exit', mock_exit)
+
+ pgwui_server_init.exit_on_invalid_settings({})
+
+ assert exit1_called
+ assert len(caplog.record_tuples) == 1
+
+
+def test_exit_on_invalid_settings_valid(monkeypatch, caplog):
+ '''Returns without logging when all settings are valid'''
+ caplog.set_level(logging.INFO)
+
+ def mock_validate_settings(settings):
+ pass
+
+ monkeypatch.setattr(pgwui_server_init, 'validate_settings',
+ mock_validate_settings)
+
+ pgwui_server_init.exit_on_invalid_settings({})
+
+ assert len(caplog.record_tuples) == 0
+
+
# parse_assignments()
def test_parse_assignments_str():