3x-ui/sub/subService_userinfo_test.go

57 lines
1.4 KiB
Go
Raw Normal View History

package sub
import (
"path/filepath"
"testing"
"github.com/mhsanaei/3x-ui/v3/database"
"github.com/mhsanaei/3x-ui/v3/database/model"
"github.com/mhsanaei/3x-ui/v3/xray"
)
func TestAggregateTrafficByEmails_FallsBackToClientLimits(t *testing.T) {
dbDir := t.TempDir()
t.Setenv("XUI_DB_FOLDER", dbDir)
if err := database.InitDB(filepath.Join(dbDir, "x-ui.db")); err != nil {
t.Fatalf("InitDB: %v", err)
}
t.Cleanup(func() { _ = database.CloseDB() })
const email = "node-client@example.com"
const totalBytes = int64(300) * 1024 * 1024 * 1024
const expiry = int64(1893456000000)
db := database.GetDB()
if err := db.Create(&model.ClientRecord{
Email: email,
TotalGB: totalBytes,
ExpiryTime: expiry,
Enable: true,
}).Error; err != nil {
t.Fatalf("seed client record: %v", err)
}
if err := db.Create(&xray.ClientTraffic{
Email: email,
Up: 111,
Down: 222,
Total: 0,
ExpiryTime: 0,
Enable: true,
}).Error; err != nil {
t.Fatalf("seed client traffic: %v", err)
}
var s SubService
agg, _ := s.AggregateTrafficByEmails([]string{email})
if agg.Up != 111 || agg.Down != 222 {
t.Errorf("usage = up %d/down %d, want 111/222", agg.Up, agg.Down)
}
if agg.Total != totalBytes {
t.Errorf("total = %d, want %d (fallback to clients table)", agg.Total, totalBytes)
}
if agg.ExpiryTime != expiry {
t.Errorf("expiry = %d, want %d (fallback to clients table)", agg.ExpiryTime, expiry)
}
}