Watch
1
0
Fork
You've already forked pkg-proxy
1
mirror of https://github.com/git-pkgs/proxy.git synced 2026-11-09 15:49:16 -05:00
pkg-proxy/internal/server/projects_prune_test.go

48 lines
1.1 KiB
Go
Raw Permalink Normal View History

package server
import (
"context"
"testing"
"time"
"github.com/git-pkgs/proxy/internal/config"
)
func TestProjectPruningRemovesStaleProjects(t *testing.T) {
ts := newProjectsTestServer(t)
ts.server.cfg.Projects = config.ProjectsConfig{Enabled: true, Token: testProjectsToken, MaxAge: "30d"}
if err := ts.server.cfg.Projects.Validate(); err != nil {
t.Fatal(err)
}
if err := ts.db.SaveProject("acme/old", "", "", time.Now().Add(-31*24*time.Hour), nil); err != nil {
t.Fatal(err)
}
if err := ts.db.SaveProject("acme/new", "", "", time.Now(), nil); err != nil {
t.Fatal(err)
}
ctx, cancel := context.WithCancel(context.Background())
ts.server.startProjectPruning(ctx)
defer func() {
cancel()
ts.server.background.Wait()
}()
deadline := time.Now().Add(5 * time.Second)
for {
old, err := ts.db.GetProject("acme/old")
if err != nil {
t.Fatal(err)
}
if old == nil {
break
}
if time.Now().After(deadline) {
t.Fatal("acme/old was not pruned")
}
time.Sleep(10 * time.Millisecond)
}
if current, err := ts.db.GetProject("acme/new"); err != nil || current == nil {
t.Errorf("acme/new was pruned: %v, %v", current, err)
}
}