107 lines
No EOL
3.1 KiB
Python
107 lines
No EOL
3.1 KiB
Python
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() |