server/pkg/adapter/surge/surge_test.go

98 lines
2.2 KiB
Go

package surge
import (
"strings"
"testing"
"time"
"github.com/perfect-panel/server/pkg/adapter/proxy"
)
func TestSurgeBuild(t *testing.T) {
adapter := proxy.Adapter{
Proxies: []proxy.Proxy{
{
Name: "test-shadowsocks",
Protocol: "shadowsocks",
Server: "1.2.3.4",
Port: 8388,
Option: proxy.Shadowsocks{
Method: "aes-256-gcm",
},
},
{
Name: "test-trojan",
Protocol: "trojan",
Server: "5.6.7.8",
Port: 443,
Option: proxy.Trojan{
SecurityConfig: proxy.SecurityConfig{
SNI: "example.com",
AllowInsecure: true,
},
},
},
{
Name: "test-hysteria",
Protocol: "hysteria2",
Server: "1.1.1.1",
Port: 443,
Option: proxy.Hysteria2{
HopPorts: "8080-8090",
HopInterval: 320,
SecurityConfig: proxy.SecurityConfig{
SNI: "example.com",
AllowInsecure: true,
},
},
},
},
Group: []proxy.Group{
{
Name: "test-group",
Type: proxy.GroupTypeSelect,
Proxies: []string{"test-shadowsocks", "test-trojan", "test-hysteria"},
},
{
Name: "手动选择",
Type: proxy.GroupTypeSelect,
Proxies: []string{"test-shadowsocks", "test-trojan", "test-hysteria"},
},
},
Rules: []string{
"DOMAIN-SUFFIX,example.com,DIRECT",
},
}
user := UserInfo{
UUID: "test-uuid",
Upload: 1024,
Download: 2048,
TotalTraffic: 4096,
ExpiredDate: time.Now().Add(24 * time.Hour),
SubscribeURL: "http://example.com/subscribe",
}
surge := NewSurge(adapter)
config := surge.Build("test-uuid", "TestSite", user)
if config == nil {
t.Fatal("Expected non-nil config")
}
configStr := string(config)
t.Logf("configStr: %v", configStr)
if !strings.Contains(configStr, "test-shadowsocks=ss") {
t.Errorf("Expected config to contain test-shadowsocks proxy")
}
if !strings.Contains(configStr, "test-trojan=trojan") {
t.Errorf("Expected config to contain test-trojan proxy")
}
if !strings.Contains(configStr, "test-group = select") {
t.Errorf("Expected config to contain test-group proxy group")
}
if !strings.Contains(configStr, "DOMAIN-SUFFIX,example.com,DIRECT") {
t.Errorf("Expected config to contain rule for example.com")
}
}