cubicweb/devtools/testlib.py
changeset 12039 7514626e1dc5
parent 12038 3c60180481ac
child 12043 b8d2e6b9f548
equal deleted inserted replaced
12038:3c60180481ac 12039:7514626e1dc5
   307             'Let CubicWebTC.setUpClass instantiate it and modify it afterwards.' % cls)
   307             'Let CubicWebTC.setUpClass instantiate it and modify it afterwards.' % cls)
   308         cls.config = cls.configcls(cls.appid, test_module_file)
   308         cls.config = cls.configcls(cls.appid, test_module_file)
   309         cls.config.mode = 'test'
   309         cls.config.mode = 'test'
   310 
   310 
   311     def __init__(self, *args, **kwargs):
   311     def __init__(self, *args, **kwargs):
   312         self._admin_session = None
       
   313         self.repo = None
   312         self.repo = None
   314         self._open_access = set()
   313         self._open_access = set()
   315         super(CubicWebTC, self).__init__(*args, **kwargs)
   314         super(CubicWebTC, self).__init__(*args, **kwargs)
   316 
   315 
   317     def run(self, *args, **kwds):
   316     def run(self, *args, **kwds):
   337         while self._open_access:
   336         while self._open_access:
   338             try:
   337             try:
   339                 self._open_access.pop()
   338                 self._open_access.pop()
   340             except BadConnectionId:
   339             except BadConnectionId:
   341                 continue  # already closed
   340                 continue  # already closed
   342 
       
   343     @property
       
   344     def session(self):
       
   345         """return admin session"""
       
   346         return self._admin_session
       
   347 
   341 
   348     def _init_repo(self):
   342     def _init_repo(self):
   349         """init the repository and connection to it.
   343         """init the repository and connection to it.
   350         """
   344         """
   351         # get or restore and working db.
   345         # get or restore and working db.
   354         db_handler.restore_database(self.test_db_id)
   348         db_handler.restore_database(self.test_db_id)
   355         self.repo = db_handler.get_repo(startup=True)
   349         self.repo = db_handler.get_repo(startup=True)
   356         # get an admin session (without actual login)
   350         # get an admin session (without actual login)
   357         login = text_type(db_handler.config.default_admin_config['login'])
   351         login = text_type(db_handler.config.default_admin_config['login'])
   358         self.admin_access = self.new_access(login)
   352         self.admin_access = self.new_access(login)
   359         self._admin_session = self.admin_access._session
       
   360 
   353 
   361     # config management ########################################################
   354     # config management ########################################################
   362 
   355 
   363     @classmethod  # XXX could be turned into a regular method
   356     @classmethod  # XXX could be turned into a regular method
   364     def init_config(cls, config):
   357     def init_config(cls, config):
   430         self.config.set_anonymous_allowed(self.anonymous_allowed)
   423         self.config.set_anonymous_allowed(self.anonymous_allowed)
   431         self.setup_database()
   424         self.setup_database()
   432         MAILBOX[:] = []  # reset mailbox
   425         MAILBOX[:] = []  # reset mailbox
   433 
   426 
   434     def tearDown(self):
   427     def tearDown(self):
   435         # XXX hack until logilab.common.testlib is fixed
       
   436         if self._admin_session is not None:
       
   437             self._admin_session = None
       
   438         while self._cleanups:
   428         while self._cleanups:
   439             cleanup, args, kwargs = self._cleanups.pop(-1)
   429             cleanup, args, kwargs = self._cleanups.pop(-1)
   440             cleanup(*args, **kwargs)
   430             cleanup(*args, **kwargs)
   441         self.repo.turn_repo_off()
   431         self.repo.turn_repo_off()
   442 
   432