| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- 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 = "[email protected]"
- 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)
- }
- }
|