mirror of
https://github.com/bestnite/sub2clash.git
synced 2025-06-17 12:43:18 +08:00
add tests
This commit is contained in:
168
test/parser/socks_test.go
Normal file
168
test/parser/socks_test.go
Normal file
@ -0,0 +1,168 @@
|
||||
package test
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/bestnite/sub2clash/model/proxy"
|
||||
"github.com/bestnite/sub2clash/parser"
|
||||
)
|
||||
|
||||
func TestSocks_Basic_SimpleLink(t *testing.T) {
|
||||
p := &parser.SocksParser{}
|
||||
input := "socks://user:pass@127.0.0.1:1080#SOCKS%20Proxy"
|
||||
|
||||
expected := proxy.Proxy{
|
||||
Type: "socks5",
|
||||
Name: "SOCKS Proxy",
|
||||
Socks: proxy.Socks{
|
||||
Server: "127.0.0.1",
|
||||
Port: 1080,
|
||||
UserName: "user",
|
||||
Password: "pass",
|
||||
},
|
||||
}
|
||||
|
||||
result, err := p.Parse(input)
|
||||
if err != nil {
|
||||
t.Errorf("Unexpected error: %v", err)
|
||||
return
|
||||
}
|
||||
|
||||
validateResult(t, expected, result)
|
||||
}
|
||||
|
||||
func TestSocks_Basic_NoAuth(t *testing.T) {
|
||||
p := &parser.SocksParser{}
|
||||
input := "socks://127.0.0.1:1080#SOCKS%20No%20Auth"
|
||||
|
||||
expected := proxy.Proxy{
|
||||
Type: "socks5",
|
||||
Name: "SOCKS No Auth",
|
||||
Socks: proxy.Socks{
|
||||
Server: "127.0.0.1",
|
||||
Port: 1080,
|
||||
},
|
||||
}
|
||||
|
||||
result, err := p.Parse(input)
|
||||
if err != nil {
|
||||
t.Errorf("Unexpected error: %v", err)
|
||||
return
|
||||
}
|
||||
|
||||
validateResult(t, expected, result)
|
||||
}
|
||||
|
||||
func TestSocks_Basic_IPv6Address(t *testing.T) {
|
||||
p := &parser.SocksParser{}
|
||||
input := "socks://user:pass@[2001:db8::1]:1080#SOCKS%20IPv6"
|
||||
|
||||
expected := proxy.Proxy{
|
||||
Type: "socks5",
|
||||
Name: "SOCKS IPv6",
|
||||
Socks: proxy.Socks{
|
||||
Server: "2001:db8::1",
|
||||
Port: 1080,
|
||||
UserName: "user",
|
||||
Password: "pass",
|
||||
},
|
||||
}
|
||||
|
||||
result, err := p.Parse(input)
|
||||
if err != nil {
|
||||
t.Errorf("Unexpected error: %v", err)
|
||||
return
|
||||
}
|
||||
|
||||
validateResult(t, expected, result)
|
||||
}
|
||||
|
||||
func TestSocks_Basic_WithTLS(t *testing.T) {
|
||||
p := &parser.SocksParser{}
|
||||
input := "socks://user:pass@127.0.0.1:1080?tls=true&sni=example.com#SOCKS%20TLS"
|
||||
|
||||
expected := proxy.Proxy{
|
||||
Type: "socks5",
|
||||
Name: "SOCKS TLS",
|
||||
Socks: proxy.Socks{
|
||||
Server: "127.0.0.1",
|
||||
Port: 1080,
|
||||
UserName: "user",
|
||||
Password: "pass",
|
||||
TLS: true,
|
||||
},
|
||||
}
|
||||
|
||||
result, err := p.Parse(input)
|
||||
if err != nil {
|
||||
t.Errorf("Unexpected error: %v", err)
|
||||
return
|
||||
}
|
||||
|
||||
validateResult(t, expected, result)
|
||||
}
|
||||
|
||||
func TestSocks_Basic_WithUDP(t *testing.T) {
|
||||
p := &parser.SocksParser{}
|
||||
input := "socks://user:pass@127.0.0.1:1080?udp=true#SOCKS%20UDP"
|
||||
|
||||
expected := proxy.Proxy{
|
||||
Type: "socks5",
|
||||
Name: "SOCKS UDP",
|
||||
Socks: proxy.Socks{
|
||||
Server: "127.0.0.1",
|
||||
Port: 1080,
|
||||
UserName: "user",
|
||||
Password: "pass",
|
||||
UDP: true,
|
||||
},
|
||||
}
|
||||
|
||||
result, err := p.Parse(input)
|
||||
if err != nil {
|
||||
t.Errorf("Unexpected error: %v", err)
|
||||
return
|
||||
}
|
||||
|
||||
validateResult(t, expected, result)
|
||||
}
|
||||
|
||||
func TestSocks_Error_MissingServer(t *testing.T) {
|
||||
p := &parser.SocksParser{}
|
||||
input := "socks://user:pass@:1080"
|
||||
|
||||
_, err := p.Parse(input)
|
||||
if err == nil {
|
||||
t.Errorf("Expected error but got none")
|
||||
}
|
||||
}
|
||||
|
||||
func TestSocks_Error_MissingPort(t *testing.T) {
|
||||
p := &parser.SocksParser{}
|
||||
input := "socks://user:pass@127.0.0.1"
|
||||
|
||||
_, err := p.Parse(input)
|
||||
if err == nil {
|
||||
t.Errorf("Expected error but got none")
|
||||
}
|
||||
}
|
||||
|
||||
func TestSocks_Error_InvalidPort(t *testing.T) {
|
||||
p := &parser.SocksParser{}
|
||||
input := "socks://user:pass@127.0.0.1:99999"
|
||||
|
||||
_, err := p.Parse(input)
|
||||
if err == nil {
|
||||
t.Errorf("Expected error but got none")
|
||||
}
|
||||
}
|
||||
|
||||
func TestSocks_Error_InvalidProtocol(t *testing.T) {
|
||||
p := &parser.SocksParser{}
|
||||
input := "ss://example.com:8080"
|
||||
|
||||
_, err := p.Parse(input)
|
||||
if err == nil {
|
||||
t.Errorf("Expected error but got none")
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user