import json import random import sys import requests HOST = sys.argv[1] PORT = 1337 BASE = f"http://{HOST}:{PORT}" def random_string(length=8): letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" return ''.join(random.choice(letters) for _ in range(length)) def register_teacher( first_name, last_name, password, username, education="Pony", middle_name="Автотестович", ): url = f"{BASE}/api/users" data = { "имя": first_name, "фамилия": last_name, "отчество": middle_name, "образование": education, "пароль": password, "повтор пароля": password, } response = requests.post(url, data=json.dumps(data, ensure_ascii=False)) if response.status_code != 201: print( f"Failed to register teacher: {response.status_code} " f"{response.text}" ) sys.exit(1) data = response.json() return (username, password, data["идентификатор"]) def register_random_teacher(): first_name = random_string() last_name = random_string() password = random_string() username = f"{first_name}.{last_name}" return register_teacher(first_name, last_name, password, username) def create_class(teacher_credentials): headers = get_auth_headers(teacher_credentials) url = f"{BASE}/api/classes" data = { "номер": 11, "буква": "Б", } response = requests.post( url, data=json.dumps(data, ensure_ascii=False), headers=headers ) if response.status_code != 201: print( f"Failed to create class: {response.status_code} {response.text}" ) sys.exit(1) class_info = response.json() return class_info["идентификатор"] def create_student(teacher_credentials): headers = get_auth_headers(teacher_credentials) password = random_string() url = f"{BASE}/api/students" data = { "имя": random_string(), "фамилия": random_string(), "отчество": "Автотестович", "снилс": random_string(), "паспорт": random_string(), "пароль": password, "повтор пароля": password, } response = requests.post( url, data=json.dumps(data, ensure_ascii=False), headers=headers ) if response.status_code != 201: print( f"Failed to create student: {response.status_code} {response.text}" ) sys.exit(1) class_info = response.json() return class_info["идентификатор"] def get_auth_headers(teacher_credentials): return { "Authorization": ( f"Basic {teacher_credentials[0]} {teacher_credentials[1]}" ) }