| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- package sub
- import (
- "strings"
- "testing"
- "github.com/mhsanaei/3x-ui/v3/internal/database"
- "github.com/mhsanaei/3x-ui/v3/internal/database/model"
- )
- // inboundLinks (the "Export all inbound links" path) must render the remark
- // template's whole Client token group per client, name-only — the same engine
- // the client/QR pages use.
- func TestInboundLinks_RemarkTemplateClientTokens(t *testing.T) {
- seedSubDB(t)
- db := database.GetDB()
- settings := `{"clients":[{"id":"11111111-2222-4333-8444-000000000001","email":"john@e","subId":"subABC","comment":"vip","tgId":777,"enable":true}],"decryption":"none"}`
- ib := &model.Inbound{
- UserId: 1, Tag: "t", Enable: true, Listen: "203.0.113.5", Port: 4431,
- Protocol: model.VLESS, Remark: "Germany", Settings: settings,
- StreamSettings: `{"network":"ws","security":"tls","wsSettings":{"path":"/","host":""},"tlsSettings":{"serverName":"sni"}}`,
- }
- if err := db.Create(ib).Error; err != nil {
- t.Fatalf("seed inbound: %v", err)
- }
- svc := NewSubService("{{INBOUND}}-{{EMAIL}}-{{COMMENT}}-{{SUB_ID}}-{{TELEGRAM_ID}}-{{SHORT_ID}}|📊{{TRAFFIC_LEFT}}|⏳{{DAYS_LEFT}}D")
- svc.PrepareForRequest("req.example.com")
- links := svc.inboundLinks(ib)
- if len(links) != 1 {
- t.Fatalf("links = %d, want 1: %v", len(links), links)
- }
- frag := links[0]
- for _, want := range []string{"Germany-john", "vip", "subABC", "777", "11111111"} {
- if !strings.Contains(frag, want) {
- t.Fatalf("remark missing client token %q: %s", want, frag)
- }
- }
- if strings.Contains(frag, "GB") || strings.ContainsRune(frag, '⏳') {
- t.Fatalf("display mode must drop the traffic/expiry segments: %s", frag)
- }
- }
|