import requests import string import random # Helper function for the TTime API testing suite # For style guide, see: # https://peps.python.org/pep-0008/#function-and-variable-names # https://google.github.io/styleguide/pyguide.html#316-naming ################## ## Static Paths ## ################## base_url = "http://localhost:8080" registerPath = base_url + "/api/register" loginPath = base_url + "/api/login" addProjectPath = base_url + "/api/project" submitReportPath = base_url + "/api/submitWeeklyReport" getWeeklyReportPath = base_url + "/api/getWeeklyReport" getProjectPath = base_url + "/api/project" signReportPath = base_url + "/api/signReport" addUserToProjectPath = base_url + "/api/addUserToProject" promoteToAdminPath = base_url + "/api/promoteToAdmin" getUserProjectsPath = base_url + "/api/getUserProjects" getWeeklyReportsUserPath = base_url + "/api/getWeeklyReportsUser" checkIfProjectManagerPath = base_url + "/api/checkIfProjectManager" ProjectRoleChangePath = base_url + "/api/ProjectRoleChange" getUsersProjectPath = base_url + "/api/getUsersProject" getUnsignedReportsPath = base_url + "/api/getUnsignedReports" getChangeUserNamePath = base_url + "/api/changeUserName" getUpdateWeeklyReportPath = base_url + "/api/updateWeeklyReport" removeProjectPath = base_url + "/api/removeProject" promoteToPmPath = base_url + "/api/promoteToPm" debug_output = False def gprint(*args, **kwargs): print("\033[92m", *args, "\033[00m", **kwargs) def dprint(*args, **kwargs): if debug_output: print(*args, **kwargs) 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)) ############ ############ ############ ############ ############ # Posts the username and password to the register endpoint def register(username: string, password: string): dprint("Registering with username: ", username, " and password: ", password) response = requests.post( registerPath, json={"username": username, "password": password} ) dprint(response.text) return response # Posts the username and password to the login endpoint def login(username: string, password: string): dprint("Logging in with username: ", username, " and password: ", password) response = requests.post( loginPath, json={"username": username, "password": password} ) dprint(response.text) return response # Register a user and return the token def register_and_login(username: string, password: string) -> string: register(username, password) response = login(username, password) return response.json()["token"] def create_project(token: string, project_name: string, description: string = "Test description"): dprint("Creating project with name: ", project_name) response = requests.post( addProjectPath, headers={"Authorization": "Bearer " + token}, json={"name": project_name, "description": description}, ) dprint(response.text) return response # Add a user to a project, requires the user withing the token to be a project manager of said project def addToProject(token: string, username: string, project_name: string): dprint("Adding user with username: ", username, " to project: ", project_name) response = requests.put( addUserToProjectPath + "/" + project_name, headers={"Authorization": "Bearer " + token}, params={"userName": username}, ) dprint(response.text) return response def promoteToManager(token: string, username: string, project_name: string): dprint( "Promoting user with username: ", username, " to project manager of project: ", project_name, ) response = requests.put( promoteToPmPath + "/" + project_name, headers={"Authorization": "Bearer " + token}, params={"userName": username}, ) dprint(response.text) return response