Files
kjv_api/tools/sanity_check.py
T

56 lines
2.0 KiB
Python

# Check if all the files needed by kjv-api (to write to) are also owned by the user running it.
# if this is not the same, writing to data/seq.db (and other undesirable behavior) is inevitable
# and will save a lot of headache in the future.
#Additionally, proper CHMOD value is 664 for the database
from os import stat, getuid
def check_sanity():
check_database_permissions()
def check_database_permissions():
dependancies = ['data/seq.db', "data/shortcodes.db"]
current_uid = getuid()
for dependancy in dependancies:
if stat(dependancy).st_uid != current_uid:
raise PermissionError(dependancy)
def check_queries(url=None):
try:
import requests
except ImportError:
raise ImportError("You must install the requests python3 module")
endpoints: list = 'show find search seq status votd random define'.split(" ")
viewarguments: list = 'rich plain json'.split(" ")
with open("tools/search_keywords.txt") as f:
keywords = f.read().splitlines()
log = []
baseurl = "http://localhost:1611"
if url:
baseurl = url
for endpoint in endpoints:
for viewargument in viewarguments:
for keyword in keywords:
testurl = f"{baseurl}/{endpoint}?view={viewargument}&kw={keyword}"
r = requests.get(testurl)
log.append([testurl, r.status_code])
with open("tools/sanity_results.txt", 'r+') as logfile:
for logged in log:
if logged[1] != 200:
logfile.write(f"{logged[1]} - {logged[0]}\n")
print(f"{logged[1]} - {logged[0]}\n")
if __name__ == "__main__":
import argparse
parser = argparse.ArgumentParser("Endpoint testing for your kjv api.")
parser.add_argument('url', type=str, nargs='?', help="like http://localhost:1611")
args = parser.parse_args()
if not args.url:
print("Trying default http://localhost:1611")
url = "http://localhost:1611"
check_queries(url=args.url)