Esempio n. 1
0
 def reset_filesystem(self, users=(), applications=()):
     """
     Create in-memory DB that can be accessed by multiple threads.
     Set up auth requests, the rate limit bucket, and the request log.
     """
     self._db_engine = sqlalchemy.create_engine(
         'sqlite:///:memory:',
         connect_args={'check_same_thread': False},
         poolclass=StaticPool,
     )
     DbModel.metadata.create_all(self._db_engine)
     self._db_session_maker = sessionmaker(bind=self._db_engine,
                                           autoflush=True)
     self._db_session = self._db_session_maker()
     self._db_session.add(FolderModel(folder_id=0))
     self._db_session.commit()
     self._rate_limit_bucket = (self.RATE_LIMIT_THRESHOLD,
                                datetime.utcnow())
     self._request_log = []
     self._oauth_behavior = OAuth2Behavior(self._db_session)
     self._file_behavior = FileBehavior(self._db_session)
     self._folder_behavior = FolderBehavior(self._db_session)
     self._event_behavior = EventBehavior(self._db_session)
     self._user_behavior = UserBehavior(self._db_session)
     user_ids = []
     for user_info in users:
         user_name, user_login = user_info
         user_id = self.add_user(user_name, user_login)
         user_ids.append(user_id)
     for app_info in applications:
         client_id, client_secret, user_index = app_info
         self.add_application(client_id, client_secret,
                              user_ids[user_index])