From c4b5c5a107179c4f7c779c83806491be7c9754f7 Mon Sep 17 00:00:00 2001 From: Mike McLean Date: May 09 2023 07:24:34 +0000 Subject: fakehub --exclusive option --- diff --git a/devtools/fakehub b/devtools/fakehub index 07eefb1..4e7920d 100755 --- a/devtools/fakehub +++ b/devtools/fakehub @@ -38,7 +38,7 @@ def handle_rpc(self, environ): # Fake session for authenticated calls class FakeSession(auth.Session): - def __init__(self, user): + def __init__(self, user, exclusive=False): user = kojihub.get_user(user, strict=True) self.logged_in = True self.id = 1 @@ -48,7 +48,7 @@ class FakeSession(auth.Session): self.master = None self.callnum = 1 self.message = 'THIS IS A FAKE SESSION' - self.exclusive = False + self.exclusive = exclusive self.user_data = user self.session_data = {'msg': 'this is a fake session'} self._perms = None @@ -62,7 +62,8 @@ original_check_session = kojixmlrpc.ModXMLRPCRequestHandler.check_session # alternate check_session, used to emulate auth def check_session(self): if 'KOJI_FAKEHUB_USER' in context.environ: - context.session = FakeSession(context.environ['KOJI_FAKEHUB_USER']) + context.session = FakeSession(context.environ['KOJI_FAKEHUB_USER'], + context.environ.get('KOJI_FAKEHUB_EXCLUSIVE', False)) else: original_check_session(self) @@ -101,6 +102,8 @@ def get_options(): parser.add_option('--pdb', action='store_true', help='drop into pdb on error') parser.add_option('--user', '-u', help='execute as user') + parser.add_option('--exclusive', '-x', action='store_true', + help='emulate an exclusive session') opts, args = parser.parse_args() # parse request from args @@ -161,6 +164,8 @@ def main(): if options.user: environ['KOJI_FAKEHUB_USER'] = options.user kojixmlrpc.ModXMLRPCRequestHandler.check_session = check_session + if options.exclusive: + environ['KOJI_FAKEHUB_EXCLUSIVE'] = True set_config(environ) print('RESULT:')