98 lines
2.2 KiB
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")
|
|
}
|
|
}
|