Add script to hammer API with test requests

This commit is contained in:
Tanner Collin 2020-01-23 22:32:49 +00:00
parent 3f293f2cea
commit 273e514ee3

View File

@ -0,0 +1,126 @@
import django, sys, os
sys.path.append("..")
os.environ['DJANGO_SETTINGS_MODULE'] = 'apiserver.settings'
django.setup()
import random
import string
import datetime
from uuid import uuid4
import requests
from apiserver.api import models
API_URL = 'http://localhost:8002'
if len(sys.argv) == 2:
token = sys.argv[1]
else:
raise('Please provide a login token in the command line')
members = models.Member.objects.all()
member_ids = list(members.values_list('id', flat=True))
courses = models.Course.objects.all()
course_ids = list(courses.values_list('id', flat=True))
randstr = lambda: str(uuid4()).split('-')[-1]
build_user = lambda: dict(
first_name='test',
last_name='tester',
username=randstr()+'.tester',
password1='protospace',
password2='protospace',
email=randstr()+'@domain.com',
existing_member='false',
)
change_member = lambda: dict(
street_address=randstr(),
city=randstr(),
postal_code=randstr(),
first_name=randstr(),
)
build_transaction = lambda member_id: dict(
member_id=member_id,
date='2020-02-02',
amount=0,
account_type='Clearing',
info_source='DB Edit',
memo='Test transaction, ignore'
)
build_card = lambda member_id: dict(
member_id=member_id,
card_number=randstr(),
active_status='card_active',
notes='qot',
)
build_search = lambda: dict(
q=random.choice(string.ascii_lowercase),
seq=123,
)
build_session = lambda: dict(
datetime=datetime.datetime.now(),
course=random.choice(course_ids),
cost=0,
)
def poster(headers, payload, route):
r = requests.post(API_URL + route, data=payload, headers=headers, timeout=5)
if r.status_code < 300:
print(r.text.strip())
else:
print(r.text)
raise Exception('Bad response code ' + str(r.status_code))
def patcher(headers, payload, route):
r = requests.patch(API_URL + route, data=payload, headers=headers, timeout=5)
if r.status_code < 300:
print(r.text.strip())
else:
print(r.text)
raise Exception('Bad response code ' + str(r.status_code))
def register_member():
payload = build_user()
poster({}, payload, '/registration/')
def edit_member():
payload = change_member()
headers = {'Authorization': 'Token ' + token}
patcher(headers, payload, '/members/'+str(random.choice(member_ids))+'/')
def create_transaction():
headers = {'Authorization': 'Token ' + token}
payload = build_transaction(random.choice(member_ids))
poster(headers, payload, '/transactions/')
def create_card():
headers = {'Authorization': 'Token ' + token}
payload = build_card(random.choice(member_ids))
poster(headers, payload, '/cards/')
def perform_search():
headers = {'Authorization': 'Token ' + token}
payload = build_search()
poster(headers, payload, '/search/')
def create_session():
headers = {'Authorization': 'Token ' + token}
payload = build_session()
poster(headers, payload, '/sessions/')
while True:
register_member()
edit_member()
perform_search()
create_transaction()
create_card()
create_session()