Files
software-station/internal/stats/stats_test.go
2025-12-27 02:57:25 -06:00

55 lines
1.3 KiB
Go

package stats
import (
"encoding/json"
"net/http"
"net/http/httptest"
"os"
"software-station/internal/models"
"testing"
)
func TestStats(t *testing.T) {
tempFile := "test_hashes.json"
defer os.Remove(tempFile)
service := NewService(tempFile)
// Test SaveHashes
service.KnownHashes.Lock()
service.KnownHashes.Data["test"] = &models.FingerprintData{Known: true, TotalBytes: 100}
service.KnownHashes.Unlock()
service.FlushHashes()
if _, err := os.Stat(tempFile); os.IsNotExist(err) {
t.Error("SaveHashes did not create file")
}
// Test LoadHashes
service.KnownHashes.Lock()
delete(service.KnownHashes.Data, "test")
service.KnownHashes.Unlock()
service.LoadHashes()
service.KnownHashes.RLock()
if data, ok := service.KnownHashes.Data["test"]; !ok || data.TotalBytes != 100 {
t.Errorf("LoadHashes did not restore data correctly: %+v", data)
}
service.KnownHashes.RUnlock()
// Test APIStatsHandler
req := httptest.NewRequest("GET", "/api/stats", nil)
rr := httptest.NewRecorder()
service.APIStatsHandler(rr, req)
if rr.Code != http.StatusOK {
t.Errorf("expected 200, got %d", rr.Code)
}
var stats map[string]interface{}
json.Unmarshal(rr.Body.Bytes(), &stats)
if stats["status"] != "healthy" {
t.Errorf("expected healthy status, got %v", stats["status"])
}
}