package database_test // refresh_token_cleanup_test.go — Tests for background token cleanup. // // F-B1-10 FIXED: Background goroutine added to main.go that calls // CleanupExpiredTokens every 24 hours. import ( "os" "path/filepath" "strings" "testing" ) func TestNoBackgroundRefreshTokenCleanup(t *testing.T) { // POST-FIX: background cleanup now exists in main.go mainPath := filepath.Join("..", "..", "cmd", "server", "main.go") content, err := os.ReadFile(mainPath) if err != nil { t.Fatalf("failed to read main.go: %v", err) } src := strings.ToLower(string(content)) if !strings.Contains(src, "cleanupexpiredtokens") { t.Error("[ERROR] [server] [database] F-B1-10 NOT FIXED: no CleanupExpiredTokens call in main.go") return } // Check it's in a goroutine context idx := strings.Index(src, "cleanupexpiredtokens") start := idx - 300 if start < 0 { start = 0 } context := src[start:idx] if !strings.Contains(context, "go func") && !strings.Contains(context, "ticker") { t.Error("[ERROR] [server] [database] CleanupExpiredTokens exists but not in background context") return } t.Log("[INFO] [server] [database] F-B1-10 FIXED: background refresh token cleanup exists") } func TestBackgroundRefreshTokenCleanupExists(t *testing.T) { mainPath := filepath.Join("..", "..", "cmd", "server", "main.go") content, err := os.ReadFile(mainPath) if err != nil { t.Fatalf("failed to read main.go: %v", err) } src := strings.ToLower(string(content)) if !strings.Contains(src, "refresh_token_cleanup") { t.Errorf("[ERROR] [server] [database] no background refresh token cleanup found.\n" + "F-B1-10: must periodically call CleanupExpiredTokens.") return } t.Log("[INFO] [server] [database] F-B1-10 FIXED: background cleanup goroutine found") }