import requests import string import random def randomString(len=10): """Generate a random string of fixed length""" letters = string.ascii_lowercase return "".join(random.choice(letters) for i in range(len)) # Defined once per test run username = randomString() projectName = randomString() # The base URL of the API base_url = "http://localhost:8080" # Endpoint to test registerPath = base_url + "/api/register" loginPath = base_url + "/api/login" addProjectPath = base_url + "/api/project" submitReportPath = base_url + "/api/submitReport" getWeeklyReportPath = base_url + "/api/getWeeklyReport" # Posts the username and password to the register endpoint def register(username: string, password: string): print("Registering with username: ", username, " and password: ", password) response = requests.post( registerPath, json={"username": username, "password": password} ) print(response.text) return response # Posts the username and password to the login endpoint def login(username: string, password: string): print("Logging in with username: ", username, " and password: ", password) response = requests.post( loginPath, json={"username": username, "password": password} ) print(response.text) return response def test_login(): response = login(username, "always_same") assert response.status_code == 200, "Login failed" print("Login successful") return response.json()["token"] def test_create_user(): response = register(username, "always_same") assert response.status_code == 200, "Registration failed" print("Registration successful") def test_add_project(): loginResponse = login(username, "always_same") token = loginResponse.json()["token"] response = requests.post( addProjectPath, json={"name": projectName, "description": "This is a project"}, headers={"Authorization": "Bearer " + token}, ) print(response.text) assert response.status_code == 200, "Add project failed" print("Add project successful") def test_submit_report(): token = login(username, "always_same").json()["token"] response = requests.post( submitReportPath, json={ "projectName": "report1", "week": 1, "developmentTime": 10, "meetingTime": 5, "adminTime": 5, "ownWorkTime": 10, "studyTime": 10, "testingTime": 10, }, headers={"Authorization": "Bearer " + token}, ) print(response.text) assert response.status_code == 200, "Submit report failed" print("Submit report successful") def test_get_weekly_report(): token = login(username, "always_same").json()["token"] response = requests.get( getWeeklyReportPath, headers={"Authorization": "Bearer " + token}, params={"username": username, "projectName": "report1", "week": 1} ) print(response.text) if __name__ == "__main__": test_create_user() test_login() test_add_project() test_submit_report() test_get_weekly_report()