Compare commits
	
		
			4 commits
		
	
	
		
			2e44d14370
			...
			dbb2ff84e5
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
							 | 
						dbb2ff84e5 | ||
| 
							 | 
						0d053add5e | ||
| 
							 | 
						23dd22eab5 | ||
| 
							 | 
						b69f8d82ff | 
					 3 changed files with 42 additions and 12 deletions
				
			
		| 
						 | 
				
			
			@ -267,6 +267,14 @@ func (gs *GState) SubmitWeeklyReport(c *fiber.Ctx) 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 {
 | 
			
		||||
		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
 | 
			
		||||
type NewWeeklyReport struct {
 | 
			
		||||
	// The name of the project, as it appears in the database
 | 
			
		||||
	ProjectName string
 | 
			
		||||
	ProjectName string `json:"projectName"`
 | 
			
		||||
	// The week number
 | 
			
		||||
	Week int
 | 
			
		||||
	Week int `json:"week"`
 | 
			
		||||
	// Total time spent on development
 | 
			
		||||
	DevelopmentTime int
 | 
			
		||||
	DevelopmentTime int `json:"developmentTime"`
 | 
			
		||||
	// Total time spent in meetings
 | 
			
		||||
	MeetingTime int
 | 
			
		||||
	MeetingTime int `json:"meetingTime"`
 | 
			
		||||
	// Total time spent on administrative tasks
 | 
			
		||||
	AdminTime int
 | 
			
		||||
	AdminTime int `json:"adminTime"`
 | 
			
		||||
	// Total time spent on personal projects
 | 
			
		||||
	OwnWorkTime int
 | 
			
		||||
	OwnWorkTime int `json:"ownWorkTime"`
 | 
			
		||||
	// Total time spent on studying
 | 
			
		||||
	StudyTime int
 | 
			
		||||
	StudyTime int `json:"studyTime"`
 | 
			
		||||
	// Total time spent on testing
 | 
			
		||||
	TestingTime int
 | 
			
		||||
	TestingTime int `json:"testingTime"`
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										30
									
								
								testing.py
									
										
									
									
									
								
							
							
						
						
									
										30
									
								
								testing.py
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -11,7 +11,7 @@ def randomString(len=10):
 | 
			
		|||
 | 
			
		||||
# Defined once per test run
 | 
			
		||||
username = randomString()
 | 
			
		||||
token = None
 | 
			
		||||
projectName = randomString()
 | 
			
		||||
 | 
			
		||||
# The base URL of the API
 | 
			
		||||
base_url = "http://localhost:8080"
 | 
			
		||||
| 
						 | 
				
			
			@ -20,9 +20,10 @@ base_url = "http://localhost:8080"
 | 
			
		|||
registerPath = base_url + "/api/register"
 | 
			
		||||
loginPath = base_url + "/api/login"
 | 
			
		||||
addProjectPath = base_url + "/api/project"
 | 
			
		||||
submitReportPath = base_url + "/api/submitReport"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Define a function to prform POST request with data and return response
 | 
			
		||||
# 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(
 | 
			
		||||
| 
						 | 
				
			
			@ -32,6 +33,7 @@ def register(username: string, password: string):
 | 
			
		|||
    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(
 | 
			
		||||
| 
						 | 
				
			
			@ -48,7 +50,6 @@ def test_login():
 | 
			
		|||
    return response.json()["token"]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Define a function to test the POST request
 | 
			
		||||
def test_create_user():
 | 
			
		||||
    response = register(username, "always_same")
 | 
			
		||||
    assert response.status_code == 200, "Registration failed"
 | 
			
		||||
| 
						 | 
				
			
			@ -58,7 +59,6 @@ def test_create_user():
 | 
			
		|||
def test_add_project():
 | 
			
		||||
    loginResponse = login(username, "always_same")
 | 
			
		||||
    token = loginResponse.json()["token"]
 | 
			
		||||
    projectName = randomString()
 | 
			
		||||
    response = requests.post(
 | 
			
		||||
        addProjectPath,
 | 
			
		||||
        json={"name": projectName, "description": "This is a project"},
 | 
			
		||||
| 
						 | 
				
			
			@ -69,7 +69,29 @@ def test_add_project():
 | 
			
		|||
    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__":
 | 
			
		||||
    test_create_user()
 | 
			
		||||
    test_login()
 | 
			
		||||
    test_add_project()
 | 
			
		||||
    test_submit_report()
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue