示例#1
0
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()
示例#2
0
def test_core_not_available():
    try:
        querier = Querier.get_instance()
        querier.send_get_request('/', [])
        assert False
    except SuperTokensGeneralError:
        assert True
示例#3
0
 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
示例#4
0
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
示例#5
0
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
示例#6
0
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
示例#7
0
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)
示例#8
0
 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()