def main():

    # Test 1 for marketdata - valid market id
    success, details = marketdata.get_mkt_book(appkey, sesstoken, ['1.178793070','1.170182528'])
    print(details)
    if success and type(details) == dict:
        print("Test 1 for getting market book successful")
    else:
        print("Test 1 for getting market book failed, success:{0}, details:{1}".format(success, details))

    # Test 2 for marketdata - invalid market id
    success, details = marketdata.get_mkt_book(appkey, sesstoken, 9999)

    if success == False and type(details) == str:
        print("Test 2 for getting market book successful")
    else:
        print("Test 2 for getting market data failed, success:{0}, details:{1}".format(success, "dictionary returned"))

    # Test 3 for market data - invaid authentication
    success, details = marketdata.get_mkt_book(appkey, sesstoken+"a", 9999)

    if success == False and type(details) == str:
        print("Test 3 for getting market book successful")
    else:
        print("Test 3 for getting market data failed, success:{0}, details:{1}".format(success, "dictionary returned"))

    sessions.logout(sesstoken, appkey)
def logout_test():
    success, output = sessions.get_sess_token(certpath, keypath, uname, pw)
    print(output)

    if success == False:
        print("Failed to generate a session token, cannot perform tests")
    else:

        #Test 1 should be a success
        success, response = sessions.logout(output, appkey)
        if success:
            print("Test 1 passed for logging out")
        else:
            print("Test 1 failed for extending session")
            print("Success returned {0}, output returned {1}".format(
                success, response))

        # Test 1 should be a success
        success, response = sessions.logout(output + "x", appkey)
        if success == False and "NO_SESSION" in response:
            print("Test 2 passed for logging out")
        else:
            print("Test 2 failed for extending session")
            print("Success returned {0}, output returned {1}".format(
                success, response))
def sess_token_test():
    ##should be successful
    ##Test 1
    success, output = sessions.get_sess_token(certpath, keypath, uname, pw)
    if success == True and type(output) == str:
        print("Session Token Test 1 passed")
    else:
        print("***TEST FAILED: Session Token request, test 4.")

        ##Test 2
    success, output = sessions.get_sess_token(certpath, keypath, uname + "a",
                                              pw)
    if success == False and "Invalid Login" in output:
        print("Session Token Test 2 passed")
    else:
        print("***TEST FAILED: Session Token request, test 2.")

    ##Test 3
    success, output = sessions.get_sess_token(certpath, keypath, uname,
                                              pw + "a")
    if success == False and "Invalid Login" in output:
        print("Session Token Test 3 passed")
    else:
        print("***TEST FAILED: Session Token request, test 3.")

    sessions.logout(output, appkey)
示例#4
0
async def apiUserSessionRevoke(request: Request):
    ip = request.client.host
    form = await request.form()
    conn = newconn()
    cur = conn.cursor()
    if not "userId" in form.keys() or not "token" in form.keys(
    ) or "userId" in form.keys() and (not form["userId"].isdigit()
                                      or int(form["userId"]) < 0):
        raise HTTPException(status_code=401)

    userId = int(form["userId"])
    token = form["token"]
    if not validateToken(userId, token):
        raise HTTPException(status_code=401)

    session = form["sessionToken"]

    cur.execute(
        f"SELECT loginTime FROM ActiveUserLogin WHERE userId = {userId} AND token = '{token}'"
    )
    t = cur.fetchall()
    if len(t) == 0:
        raise HTTPException(status_code=401)
    curLoginTime = t[0][0]

    cur.execute(
        f"SELECT token, loginTime FROM ActiveUserLogin WHERE userId = {userId} AND token LIKE '%{session}%'"
    )
    t = cur.fetchall()
    if len(t) == 0:
        return {"success": False, "msg": "Session not found!"}
    sFullToken = t[0][0]
    sLoginTime = t[0][1]

    if sFullToken == token:
        return {
            "success": False,
            "msg": f"You cannot revoke your current session!"
        }

    if sLoginTime < curLoginTime and time.time() - curLoginTime < 1800:
        return {
            "success":
            False,
            "msg":
            "Your current session is not old enough to revoke an older session. Try again later..."
        }

    sessions.logout(userId, sFullToken)

    return {"success": True, "msg": f"Session revoked!"}
示例#5
0
async def apiLogout(request: Request):
    ip = request.client.host
    form = await request.form()
    if not "userId" in form.keys() or not "token" in form.keys(
    ) or "userId" in form.keys() and (not form["userId"].isdigit()
                                      or int(form["userId"]) < 0):
        return {"success": True}

    userId = int(form["userId"])
    token = form["token"]
    ret = sessions.logout(userId, token)

    return {"success": ret}
示例#6
0
        markettype="WIN",
        marketprojection="MARKET_START_TIME")
    if success and type(details) == pd.DataFrame:
        print("Test 22 for getting market catalogue success.")
    else:
        print(
            "Test 21 for getting market catalogue failed, success:{0}, details:{1}"
            .format(success, details))

    # Test 23 for market catalogue should be success
    success, details = staticdata.get_market_catalogue(
        appkey,
        sesstoken,
        marketid="1.179523469",
        marketprojection="MARKET_START_TIME")

    print(details)
    if success and type(details) == pd.DataFrame:
        print("Test 22 for getting market catalogue success.")
    else:
        print(
            "Test 22 for getting market catalogue failed, success:{0}, details:{1}"
            .format(success, details))


if success == False:
    print("Failed to generate a session token, cannot perform tests")
else:
    main()
    sessions.logout(sesstoken, appkey)
示例#7
0
async def apiDeleteAccount(request: Request,
                           background_tasks: BackgroundTasks):
    ip = request.client.host
    form = await request.form()
    conn = newconn()
    cur = conn.cursor()
    token = form['token']

    cur.execute(
        f"DELETE FROM EmailVerification WHERE operation = 'delete_account' AND expire <= {int(time.time()) - 600}"
    )
    conn.commit()

    token = form["token"]
    token = token

    if token == "" or not token.replace("-", "").replace("_", "").isalnum():
        return {
            "success": False,
            "msg": "Invalid or expired verification token!"
        }

    cur.execute(
        f"SELECT userId FROM EmailVerification WHERE operation = 'delete_account' AND token = '{token}'"
    )
    t = cur.fetchall()
    if len(t) == 0:
        return {
            "success": False,
            "msg": "Invalid or expired verification token!"
        }

    userId = t[0][0]

    email = ""
    username = ""
    cur.execute(
        f"SELECT email, username FROM UserInfo WHERE userId = {userId}")
    t = cur.fetchall()
    if len(t) > 0:
        email = decode(t[0][0])
        username = decode(t[0][1])

    sessions.markDeletion(userId)

    cur.execute(
        f"INSERT INTO UserEvent VALUES ({userId}, 'delete_account', {int(time.time())}, '{encode(f'Account marked for deletion by {ip}')}')"
    )
    sessions.logout(userId, token)
    conn.commit()

    if validators.email(email) == True:
        background_tasks.add_task(
            sendNormal, email, username, "Account marked for deletion",
            f"Your account has been marked for deletion. It will be deleted after 14 days.<br>\n\
            If you have changed your mind, login again to recover your account."
        )

    return {
        "success": True,
        "msg": "Your account has been marked for deletion!"
    }