def test_three_cores_one_dead_and_round_robin(): start_st() start_st('localhost', 3568) Querier.init_instance( 'http://localhost:3567;http://localhost:3568/;http://localhost:3569', None) querier = Querier.get_instance() assert querier.send_get_request(HELLO, []) == 'Hello\n' assert querier.send_get_request(HELLO, []) == 'Hello\n' assert len(querier.get_hosts_alive_for_testing()) == 2 assert querier.send_delete_request(HELLO, []) == 'Hello\n' assert len(querier.get_hosts_alive_for_testing()) == 2 assert 'http://localhost:3567' in querier.get_hosts_alive_for_testing() assert 'http://localhost:3568' in querier.get_hosts_alive_for_testing() assert 'http://localhost:3569' not in querier.get_hosts_alive_for_testing()
def test_core_not_available(): try: querier = Querier.get_instance() querier.send_get_request('/', []) assert False except SuperTokensGeneralError: assert True
def get_instance(): if HandshakeInfo.__instance is None: with HandshakeInfo.__lock: if HandshakeInfo.__instance is None: response = Querier.get_instance().send_post_request( HANDSHAKE, {}) HandshakeInfo.__instance = HandshakeInfo(response) return HandshakeInfo.__instance
def test_get_api_version(): try: Querier.get_instance().get_api_version() assert False except SuperTokensGeneralError: assert True start_st() cv = API_VERSION_TEST_SINGLE_SUPPORTED_CV sv = API_VERSION_TEST_SINGLE_SUPPORTED_SV assert find_max_version(cv, sv) == API_VERSION_TEST_SINGLE_SUPPORTED_RESULT cv = API_VERSION_TEST_MULTIPLE_SUPPORTED_CV sv = API_VERSION_TEST_MULTIPLE_SUPPORTED_SV assert find_max_version(cv, sv) == API_VERSION_TEST_MULTIPLE_SUPPORTED_RESULT cv = API_VERSION_TEST_NON_SUPPORTED_CV sv = API_VERSION_TEST_NON_SUPPORTED_SV assert find_max_version(cv, sv) is None
def test_token_theft_detection_with_api_key(): set_key_value_in_config("api_keys", "asckjsbdalvkjbasdlvjbalskdjvbaldkj") start_st() Querier.init_instance(None, "asckjsbdalvkjbasdlvjbalskdjvbaldkj") session = create_new_session('userId', {}, {}) refreshed_session = refresh_session(session['refreshToken']['token'], session['antiCsrfToken']) get_session(refreshed_session['accessToken']['token'], refreshed_session['antiCsrfToken'], True) try: refresh_session(session['refreshToken']['token'], session['antiCsrfToken']) assert False except SuperTokensTokenTheftError as e: assert e.user_id == 'userId' assert e.session_handle == session['session']['handle'] assert True
def test_driver_info_check_without_frontend_sdk(): start_st() response = Querier.get_instance().send_post_request( SESSION, {'userId': 'abc'}, True) assert response['userId'] == 'abc' assert 'deviceDriverInfo' in response assert response['deviceDriverInfo'] == { 'driver': { 'name': 'flask', 'version': VERSION }, 'frontendSDK': [] } response = Querier.get_instance().send_post_request( HELLO, {'userId': 'pqr'}, True) assert response['userId'] == 'pqr' assert 'deviceDriverInfo' not in response
def test_query_without_api_key(): set_key_value_in_config("api_keys", "asckjsbdalvkjbasdlvjbalskdjvbaldkj") start_st() try: version = Querier.get_instance().get_api_version() if version != "2.0" and "com-" in environ['SUPERTOKENS_PATH']: assert False except SuperTokensGeneralError as e: assert "Invalid API key" in str(e)
def update_jwt_payload(self, new_jwt_payload): result = Querier.get_instance().send_post_request( SESSION_REGENERATE, { 'accessToken': self.__access_token, 'userDataInJWT': new_jwt_payload }) if result['status'] == 'UNAUTHORISED': self.__clear_cookies() raise_unauthorised_exception(result['message']) self.__jwt_payload = result['session']['userDataInJWT'] if 'accessToken' in result and result['accessToken'] is not None: self.__access_token = result['accessToken']['token'] if self.__response is None: self.new_access_token_info = result['accessToken'] else: attach_access_token_to_cookie( self.__response, result['access_token']['token'], result['access_token']['expiry'], result['access_token']['domain'], result['access_token']['cookiePath'], result['access_token']['cookieSecure'], result['access_token']['sameSite'])
def reset(): __stop_st() HandshakeInfo.reset() DeviceInfo.reset() Querier.reset() CookieConfig.reset()