def logout(): for key in ['auth_user_username', 'auth_user_id', 'auth_user_fullname', 'auth_user_access_token']: try: del session.data[key] except KeyError: pass Session.remove(Q('_id', 'eq', session._id)) return True
def logout(): for key in [ 'auth_user_username', 'auth_user_id', 'auth_user_fullname', 'auth_user_access_token' ]: try: del session.data[key] except KeyError: pass Session.remove(Q('_id', 'eq', session._id)) return True
def test_log_logged_in(self, mock_capture): user = UserFactory() session_record = Session() session_record.data['auth_user_id'] = user._id set_session(session_record) sentry.log_exception() mock_capture.assert_called_with(extra={ 'session': { 'auth_user_id': user._id, }, }, )
def test_log_logged_in(self, mock_capture): user = UserFactory() session_record = Session() session_record.data['auth_user_id'] = user._id set_session(session_record) sentry.log_exception() mock_capture.assert_called_with( extra={ 'session': { 'auth_user_id': user._id, }, }, )
def test_log_not_logged_in(self, mock_capture): session_record = Session() set_session(session_record) sentry.log_exception() mock_capture.assert_called_with(extra={ 'session': {}, }, )
def get_user_from_cookie(cookie): if not cookie: return None try: token = itsdangerous.Signer(settings.SECRET_KEY).unsign(cookie) except itsdangerous.BadSignature: raise HTTPError(httplib.UNAUTHORIZED) session = Session.load(token) if session is None: raise HTTPError(httplib.UNAUTHORIZED) return User.load(session.data['auth_user_id'])
def get_theme(session: Session) -> str: """ Loads and returns user's current theme from its session. Returns default theme if session is not provided. :param session: session ID :return: current theme """ theme = session.get("theme", DEFAULT_THEME) return theme
class HttpRequest(NamedTuple): method: str = "get" path: Optional[str] = "/" headers: Optional[Dict] = None GET: Optional[Dict] = None POST: Optional[Dict] = None content_type: Optional[str] = None session: Optional[Session] = None file_name: Optional[str] = None @classmethod def default(cls): return HttpRequest(headers={}, GET={}, POST={}, session=Session(), content_type="text/html") @classmethod def build( cls, /, url: str, method: Optional[str] = None, headers: Optional[Dict] = None, form_data: Optional[str] = None, ) -> "HttpRequest": if not url: return cls.default() components = urlsplit(url) normal, file_name = cls._url_to_normal_and_file_name(components) content_type = cls._guess_content_type(headers, file_name) session = Session.from_headers(headers) return HttpRequest( method=method or "get", path=normal, headers=headers or {}, GET=parse_qs(components.query or ""), POST=parse_qs(form_data or ""), content_type=content_type, session=session, file_name=file_name, )
def test_confirm_email(self, mock_mail): user = UnregUserFactory() auth.register_unconfirmed( username=user.username, password='******', fullname='Rosie', ) user.reload() token = user.get_confirmation_token(user.username) res = self.app.get('/confirm/{}/{}'.format(user._id, token), allow_redirects=False) res = res.follow() assert_equal(res.status_code, 302) assert_in('login?service=', res.location) user.reload() mock_mail.assert_called() assert_equal(len(mock_mail.call_args_list), 1) empty, kwargs = mock_mail.call_args kwargs['user'].reload() assert_equal(empty, ()) assert_equal( kwargs, { 'user': user, 'mimetype': 'html', 'mail': mails.WELCOME, 'to_addr': user.username, }) self.app.set_cookie(settings.COOKIE_NAME, user.get_or_create_cookie()) res = self.app.get('/confirm/{}/{}'.format(user._id, token)) res = res.follow() assert_equal(res.status_code, 302) assert_equal('/', urlparse.urlparse(res.location).path) assert_equal(len(mock_mail.call_args_list), 1) session = Session.find(Q('data.auth_user_id', 'eq', user._id)).sort('-date_modified').limit(1)[0] assert_equal(len(session.data['status']), 1)
def test_confirm_email(self, mock_mail): user = UnregUserFactory() auth.register_unconfirmed( username=user.username, password='******', fullname='Rosie', ) token = user.get_confirmation_token(user.username) res = self.app.get('/confirm/{}/{}'.format(user._id, token), allow_redirects=False) res = res.follow() assert_equal(res.status_code, 302) assert_in('login?service=', res.location) user.reload() assert_equal(len(mock_mail.call_args_list), 1) empty, kwargs = mock_mail.call_args kwargs['user'].reload() assert_equal(empty, ()) assert_equal(kwargs, { 'user': user, 'mimetype': 'html', 'mail': mails.WELCOME, 'to_addr': user.username, }) self.app.set_cookie(settings.COOKIE_NAME, user.get_or_create_cookie()) res = self.app.get('/confirm/{}/{}'.format(user._id, token)) res = res.follow() assert_equal(res.status_code, 302) assert_equal('/', urlparse.urlparse(res.location).path) assert_equal(len(mock_mail.call_args_list), 1) session = Session.find( Q('data.auth_user_id', 'eq', user._id) ).sort( '-date_modified' ).limit(1)[0] assert_equal(len(session.data['status']), 1)
def default(cls): return HttpRequest(headers={}, GET={}, POST={}, session=Session(), content_type="text/html")