def auth_base_view(wrapped):
'''Decorator for any view which includes auth_base.mk.
'''
- return base_view(wrapped)
+ def wrapper(request):
+ '''Add variables needed by auth_base.mk to the response.
+ '''
+ response = base_view(wrapped)(request)
+ pgwui = response['pgwui']
+ pgwui.setdefault('route.logout',
+ request.route_url('logout'))
+ return response
+ return wrapper
def includeme(config):
pytest_plugins = ("pgwui",)
+# Helper functions and constants
+
+CSS_URL = 'foo://bar/'
+
+
+def mock_view(request):
+ return {'pgwui': {'url.css': CSS_URL}}
+
+
+def check_base_view_results(request, pgwui):
+ assert pgwui['url.css'] == CSS_URL
+ url = (request.application_url
+ + pgwui_common_init.DEFAULT_HOME_ROUTE)
+ assert pgwui['route.home'] == url
+
+
# Unit tests
# base_view()
def test_base_view_default(pyramid_request_config):
'''The response retains the mock view's variables'''
- css_url = 'foo://bar/'
-
- def mock_view(request):
- return {'pgwui': {'url.css': css_url}}
-
pgwui_common_init.includeme(pyramid_request_config)
wrapper = pgwui_common_init.base_view(mock_view)
request = get_current_request()
response = wrapper(request)
pgwui = response['pgwui']
- assert pgwui['url.css'] == css_url
- url = (request.application_url
- + pgwui_common_init.DEFAULT_HOME_ROUTE)
- assert pgwui['route.home'] == url
+ check_base_view_results(request, pgwui)
# auth_base_view()
-def test_auth_base_view(monkeypatch):
- '''base_view() is called'''
- base_view_called = False
-
- def mock_base_view(wrapped):
- nonlocal base_view_called
- base_view_called = True
+def test_auth_base_view(pyramid_request_config):
+ '''The response contains base_view and auth_base_view variables'''
+ pgwui_common_init.includeme(pyramid_request_config)
- monkeypatch.setattr(pgwui_common_init, 'base_view', mock_base_view)
+ logout_route = '/logout'
+ pyramid_request_config.add_route('logout', logout_route)
+ wrapper = pgwui_common_init.auth_base_view(mock_view)
+ request = get_current_request()
- pgwui_common_init.auth_base_view(None)
- assert base_view_called is True
+ response = wrapper(request)
+ pgwui = response['pgwui']
+ check_base_view_results(request, pgwui)
+ assert pgwui['route.logout'] == request.application_url + logout_route
# includeme()