Fixed error in redis, that prevented saving file requests, added tests

This commit is contained in:
Marc Ole Bulling
2026-01-26 19:22:23 +01:00
parent d52ea3f3cc
commit f9ab0c01ca
3 changed files with 157 additions and 1 deletions

View File

@@ -353,6 +353,88 @@ func TestHotlink(t *testing.T) {
test.IsEqualInt(t, len(hotlinks), 3)
}
func TestFileRequest(t *testing.T) {
instance, err := New(config)
test.IsNil(t, err)
dbInstance = instance
newUser := models.User{
Id: 45564,
Name: "test user",
}
dbInstance.SaveUser(newUser, false)
// Create first file request
req1 := models.FileRequest{
Id: "req1",
Name: "New file request",
UserId: 45564,
CreationDate: time.Now().Unix(),
}
dbInstance.SaveFileRequest(req1)
// Get existing file request
request, ok := dbInstance.GetFileRequest("req1")
test.IsEqualBool(t, ok, true)
test.IsEqualString(t, request.Id, "req1")
test.IsEqualString(t, request.Name, "New file request")
// Get invalid file request
_, ok = dbInstance.GetFileRequest("invalid")
test.IsEqualBool(t, ok, false)
// Empty ID should return false
_, ok = dbInstance.GetFileRequest("")
test.IsEqualBool(t, ok, false)
// Delete invalid request (should not panic or affect data)
dbInstance.DeleteFileRequest(models.FileRequest{Id: "invalid"})
_, ok = dbInstance.GetFileRequest("req1")
test.IsEqualBool(t, ok, true)
// Delete valid request
dbInstance.DeleteFileRequest(req1)
_, ok = dbInstance.GetFileRequest("req1")
test.IsEqualBool(t, ok, false)
// Create multiple file requests to test GetAllFileRequests
req2 := models.FileRequest{
Id: "req2",
Name: "file2.txt",
UserId: 45564,
CreationDate: time.Now().Add(time.Minute).Unix(),
}
req3 := models.FileRequest{
Id: "req3",
Name: "file3.txt",
UserId: 45564,
CreationDate: time.Now().Add(2 * time.Minute).Unix(),
}
dbInstance.SaveFileRequest(req1)
dbInstance.SaveFileRequest(req2)
dbInstance.SaveFileRequest(req3)
requests := dbInstance.GetAllFileRequests()
test.IsEqualInt(t, len(requests), 3)
ids := []string{
requests[0].Id,
requests[1].Id,
requests[2].Id,
}
test.IsEqualBool(t, slices.Contains(ids, "req1"), true)
test.IsEqualBool(t, slices.Contains(ids, "req2"), true)
test.IsEqualBool(t, slices.Contains(ids, "req3"), true)
// Ensure sorting by CreationDate DESC
test.IsEqualBool(t, requests[0].CreationDate >= requests[1].CreationDate, true)
test.IsEqualBool(t, requests[1].CreationDate >= requests[2].CreationDate, true)
dbInstance.DeleteUser(45564)
}
func TestSession(t *testing.T) {
renewAt := time.Now().Add(1 * time.Hour).Unix()
dbInstance.SaveSession("newsession", models.Session{

View File

@@ -60,7 +60,7 @@ func sortFilerequests(users []models.FileRequest) []models.FileRequest {
// SaveFileRequest stores the file request associated with the file in the database
func (p DatabaseProvider) SaveFileRequest(request models.FileRequest) {
p.setHashMap(p.buildArgs(prefixUsers + request.Id).AddFlat(request))
p.setHashMap(p.buildArgs(prefixFileRequests + request.Id).AddFlat(request))
}
// DeleteFileRequest deletes a file request with the given ID

View File

@@ -327,6 +327,80 @@ func TestSession(t *testing.T) {
test.IsEqualBool(t, ok, true)
}
func TestFileRequest(t *testing.T) {
// Create first file request
req1 := models.FileRequest{
Id: "req1",
Name: "New file request",
UserId: 45564,
ApiKey: "123",
CreationDate: time.Now().Unix(),
}
dbInstance.SaveFileRequest(req1)
// Get existing file request
request, ok := dbInstance.GetFileRequest("req1")
test.IsEqualBool(t, ok, true)
test.IsEqualString(t, request.Id, "req1")
test.IsEqualString(t, request.Name, "New file request")
// Get invalid file request
_, ok = dbInstance.GetFileRequest("invalid")
test.IsEqualBool(t, ok, false)
// Empty ID should return false
_, ok = dbInstance.GetFileRequest("")
test.IsEqualBool(t, ok, false)
// Delete invalid request (should not panic or affect data)
dbInstance.DeleteFileRequest(models.FileRequest{Id: "invalid"})
_, ok = dbInstance.GetFileRequest("req1")
test.IsEqualBool(t, ok, true)
// Delete valid request
dbInstance.DeleteFileRequest(req1)
_, ok = dbInstance.GetFileRequest("req1")
test.IsEqualBool(t, ok, false)
// Create multiple file requests to test GetAllFileRequests
req2 := models.FileRequest{
Id: "req2",
UserId: 45564,
Name: "file2.txt",
ApiKey: "456",
CreationDate: time.Now().Add(-time.Minute).Unix(),
}
req3 := models.FileRequest{
Id: "req3",
Name: "file3.txt",
UserId: 45564,
ApiKey: "789",
CreationDate: time.Now().Add(-2 * time.Minute).Unix(),
}
dbInstance.SaveFileRequest(req1)
dbInstance.SaveFileRequest(req2)
dbInstance.SaveFileRequest(req3)
requests := dbInstance.GetAllFileRequests()
test.IsEqualInt(t, len(requests), 3)
ids := []string{
requests[0].Id,
requests[1].Id,
requests[2].Id,
}
test.IsEqualBool(t, slices.Contains(ids, "req1"), true)
test.IsEqualBool(t, slices.Contains(ids, "req2"), true)
test.IsEqualBool(t, slices.Contains(ids, "req3"), true)
// Ensure sorting by CreationDate DESC
test.IsEqualBool(t, requests[0].CreationDate >= requests[1].CreationDate, true)
test.IsEqualBool(t, requests[1].CreationDate >= requests[2].CreationDate, true)
}
func TestGarbageCollectionSessions(t *testing.T) {
dbInstance.SaveSession("todelete1", models.Session{
RenewAt: time.Now().Add(-10 * time.Second).Unix(),