From e66b356f900bc9899a5506378163ffaadd4a32b5 Mon Sep 17 00:00:00 2001 From: Folker Bernitt Date: Wed, 27 Jan 2016 13:56:41 +0100 Subject: Add a login multi user functional test - Issue #576 - Extended AppTestClient with multi user support --- service/pixelated/application.py | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) (limited to 'service/pixelated/application.py') diff --git a/service/pixelated/application.py b/service/pixelated/application.py index e273612d..c7833367 100644 --- a/service/pixelated/application.py +++ b/service/pixelated/application.py @@ -30,7 +30,7 @@ from pixelated.adapter.welcome_mail import add_welcome_mail from pixelated.config import arguments from pixelated.config import logger from pixelated.config.leap import initialize_leap_single_user, init_monkeypatches, initialize_leap_provider -from pixelated.config.services import Services +from pixelated.config import services from pixelated.config.site import PixelatedSite from pixelated.resources.auth import LeapPasswordChecker, PixelatedRealm, PixelatedAuthSessionWrapper, SessionChecker from pixelated.resources.login_resource import LoginResource @@ -49,6 +49,7 @@ class ServicesFactory(object): return user_id in self._services_by_user def services(self, user_id): + print self._services_by_user.keys() return self._services_by_user[user_id] def log_out_user(self, user_id): @@ -60,6 +61,13 @@ class ServicesFactory(object): def add_session(self, user_id, services): self._services_by_user[user_id] = services + @defer.inlineCallbacks + def create_services_from(self, leap_session): + _services = services.Services(leap_session) + yield _services.setup() + + self._services_by_user[leap_session.user_auth.uuid] = _services + class SingleUserServicesFactory(object): def __init__(self, mode): @@ -82,13 +90,13 @@ class UserAgentMode(object): def start_user_agent_in_single_user_mode(root_resource, services_factory, leap_home, leap_session): log.info('Bootstrap done, loading services for user %s' % leap_session.user_auth.username) - services = Services(leap_session) - yield services.setup() + _services = services.Services(leap_session) + yield _services.setup() if leap_session.fresh_account: yield add_welcome_mail(leap_session.mail_store) - services_factory.add_session(leap_session.user_auth.uuid, services) + services_factory.add_session(leap_session.user_auth.uuid, _services) root_resource.initialize() @@ -166,8 +174,9 @@ def _start_in_multi_user_mode(args, root_resource, services_factory): return defer.succeed(None) -def set_up_protected_resources(root_resource, provider, services_factory): - checker = LeapPasswordChecker(provider) +def set_up_protected_resources(root_resource, provider, services_factory, checker=None): + if not checker: + checker = LeapPasswordChecker(provider) session_checker = SessionChecker() anonymous_resource = LoginResource(services_factory) -- cgit v1.2.3