Compare commits
No commits in common. "887f31dde001a477c1b0048064df618779762299" and "2e44d1437023411d7458b7ee2ad40dbe76db665d" have entirely different histories.
887f31dde0
...
2e44d14370
4 changed files with 12 additions and 130 deletions
|
@ -267,14 +267,6 @@ func (gs *GState) SubmitWeeklyReport(c *fiber.Ctx) error {
|
||||||
return c.Status(400).SendString(err.Error())
|
return c.Status(400).SendString(err.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
// Make sure all the fields of the report are valid
|
|
||||||
if report.Week < 1 || report.Week > 52 {
|
|
||||||
return c.Status(400).SendString("Invalid week number")
|
|
||||||
}
|
|
||||||
if report.DevelopmentTime < 0 || report.MeetingTime < 0 || report.AdminTime < 0 || report.OwnWorkTime < 0 || report.StudyTime < 0 || report.TestingTime < 0 {
|
|
||||||
return c.Status(400).SendString("Invalid time report")
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := gs.Db.AddWeeklyReport(report.ProjectName, username, report.Week, report.DevelopmentTime, report.MeetingTime, report.AdminTime, report.OwnWorkTime, report.StudyTime, report.TestingTime); err != nil {
|
if err := gs.Db.AddWeeklyReport(report.ProjectName, username, report.Week, report.DevelopmentTime, report.MeetingTime, report.AdminTime, report.OwnWorkTime, report.StudyTime, report.TestingTime); err != nil {
|
||||||
return c.Status(500).SendString(err.Error())
|
return c.Status(500).SendString(err.Error())
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,19 +3,19 @@ package types
|
||||||
// This is what should be submitted to the server, the username will be derived from the JWT token
|
// This is what should be submitted to the server, the username will be derived from the JWT token
|
||||||
type NewWeeklyReport struct {
|
type NewWeeklyReport struct {
|
||||||
// The name of the project, as it appears in the database
|
// The name of the project, as it appears in the database
|
||||||
ProjectName string `json:"projectName"`
|
ProjectName string
|
||||||
// The week number
|
// The week number
|
||||||
Week int `json:"week"`
|
Week int
|
||||||
// Total time spent on development
|
// Total time spent on development
|
||||||
DevelopmentTime int `json:"developmentTime"`
|
DevelopmentTime int
|
||||||
// Total time spent in meetings
|
// Total time spent in meetings
|
||||||
MeetingTime int `json:"meetingTime"`
|
MeetingTime int
|
||||||
// Total time spent on administrative tasks
|
// Total time spent on administrative tasks
|
||||||
AdminTime int `json:"adminTime"`
|
AdminTime int
|
||||||
// Total time spent on personal projects
|
// Total time spent on personal projects
|
||||||
OwnWorkTime int `json:"ownWorkTime"`
|
OwnWorkTime int
|
||||||
// Total time spent on studying
|
// Total time spent on studying
|
||||||
StudyTime int `json:"studyTime"`
|
StudyTime int
|
||||||
// Total time spent on testing
|
// Total time spent on testing
|
||||||
TestingTime int `json:"testingTime"`
|
TestingTime int
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,88 +0,0 @@
|
||||||
// Code generated by tygo. DO NOT EDIT.
|
|
||||||
|
|
||||||
//////////
|
|
||||||
// source: WeeklyReport.go
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This is what should be submitted to the server, the username will be derived from the JWT token
|
|
||||||
*/
|
|
||||||
export interface NewWeeklyReport {
|
|
||||||
/**
|
|
||||||
* The name of the project, as it appears in the database
|
|
||||||
*/
|
|
||||||
projectName: string;
|
|
||||||
/**
|
|
||||||
* The week number
|
|
||||||
*/
|
|
||||||
week: number /* int */;
|
|
||||||
/**
|
|
||||||
* Total time spent on development
|
|
||||||
*/
|
|
||||||
developmentTime: number /* int */;
|
|
||||||
/**
|
|
||||||
* Total time spent in meetings
|
|
||||||
*/
|
|
||||||
meetingTime: number /* int */;
|
|
||||||
/**
|
|
||||||
* Total time spent on administrative tasks
|
|
||||||
*/
|
|
||||||
adminTime: number /* int */;
|
|
||||||
/**
|
|
||||||
* Total time spent on personal projects
|
|
||||||
*/
|
|
||||||
ownWorkTime: number /* int */;
|
|
||||||
/**
|
|
||||||
* Total time spent on studying
|
|
||||||
*/
|
|
||||||
studyTime: number /* int */;
|
|
||||||
/**
|
|
||||||
* Total time spent on testing
|
|
||||||
*/
|
|
||||||
testingTime: number /* int */;
|
|
||||||
}
|
|
||||||
|
|
||||||
//////////
|
|
||||||
// source: project.go
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Project is a struct that holds the information about a project
|
|
||||||
*/
|
|
||||||
export interface Project {
|
|
||||||
id: number /* int */;
|
|
||||||
name: string;
|
|
||||||
description: string;
|
|
||||||
owner: string;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* As it arrives from the client, Owner is derived from the JWT token
|
|
||||||
*/
|
|
||||||
export interface NewProject {
|
|
||||||
name: string;
|
|
||||||
description: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
//////////
|
|
||||||
// source: users.go
|
|
||||||
|
|
||||||
/**
|
|
||||||
* User struct represents a user in the system
|
|
||||||
*/
|
|
||||||
export interface User {
|
|
||||||
userId: string;
|
|
||||||
username: string;
|
|
||||||
password: string;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Should be used when registering, for example
|
|
||||||
*/
|
|
||||||
export interface NewUser {
|
|
||||||
username: string;
|
|
||||||
password: string;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* PublicUser represents a user that is safe to send over the API (no password)
|
|
||||||
*/
|
|
||||||
export interface PublicUser {
|
|
||||||
userId: string;
|
|
||||||
username: string;
|
|
||||||
}
|
|
30
testing.py
30
testing.py
|
@ -11,7 +11,7 @@ def randomString(len=10):
|
||||||
|
|
||||||
# Defined once per test run
|
# Defined once per test run
|
||||||
username = randomString()
|
username = randomString()
|
||||||
projectName = randomString()
|
token = None
|
||||||
|
|
||||||
# The base URL of the API
|
# The base URL of the API
|
||||||
base_url = "http://localhost:8080"
|
base_url = "http://localhost:8080"
|
||||||
|
@ -20,10 +20,9 @@ base_url = "http://localhost:8080"
|
||||||
registerPath = base_url + "/api/register"
|
registerPath = base_url + "/api/register"
|
||||||
loginPath = base_url + "/api/login"
|
loginPath = base_url + "/api/login"
|
||||||
addProjectPath = base_url + "/api/project"
|
addProjectPath = base_url + "/api/project"
|
||||||
submitReportPath = base_url + "/api/submitReport"
|
|
||||||
|
|
||||||
|
|
||||||
# Posts the username and password to the register endpoint
|
# Define a function to prform POST request with data and return response
|
||||||
def register(username: string, password: string):
|
def register(username: string, password: string):
|
||||||
print("Registering with username: ", username, " and password: ", password)
|
print("Registering with username: ", username, " and password: ", password)
|
||||||
response = requests.post(
|
response = requests.post(
|
||||||
|
@ -33,7 +32,6 @@ def register(username: string, password: string):
|
||||||
return response
|
return response
|
||||||
|
|
||||||
|
|
||||||
# Posts the username and password to the login endpoint
|
|
||||||
def login(username: string, password: string):
|
def login(username: string, password: string):
|
||||||
print("Logging in with username: ", username, " and password: ", password)
|
print("Logging in with username: ", username, " and password: ", password)
|
||||||
response = requests.post(
|
response = requests.post(
|
||||||
|
@ -50,6 +48,7 @@ def test_login():
|
||||||
return response.json()["token"]
|
return response.json()["token"]
|
||||||
|
|
||||||
|
|
||||||
|
# Define a function to test the POST request
|
||||||
def test_create_user():
|
def test_create_user():
|
||||||
response = register(username, "always_same")
|
response = register(username, "always_same")
|
||||||
assert response.status_code == 200, "Registration failed"
|
assert response.status_code == 200, "Registration failed"
|
||||||
|
@ -59,6 +58,7 @@ def test_create_user():
|
||||||
def test_add_project():
|
def test_add_project():
|
||||||
loginResponse = login(username, "always_same")
|
loginResponse = login(username, "always_same")
|
||||||
token = loginResponse.json()["token"]
|
token = loginResponse.json()["token"]
|
||||||
|
projectName = randomString()
|
||||||
response = requests.post(
|
response = requests.post(
|
||||||
addProjectPath,
|
addProjectPath,
|
||||||
json={"name": projectName, "description": "This is a project"},
|
json={"name": projectName, "description": "This is a project"},
|
||||||
|
@ -69,29 +69,7 @@ def test_add_project():
|
||||||
print("Add project successful")
|
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")
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
test_create_user()
|
test_create_user()
|
||||||
test_login()
|
test_login()
|
||||||
test_add_project()
|
test_add_project()
|
||||||
test_submit_report()
|
|
||||||
|
|
Loading…
Reference in a new issue