You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
126 lines
3.1 KiB
126 lines
3.1 KiB
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()
|
|
|