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)
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!"}
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}
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)
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!" }