mirror of
https://github.com/bestnite/sub2clash.git
synced 2025-06-17 04:33:18 +08:00
113 lines
2.7 KiB
Go
113 lines
2.7 KiB
Go
package test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/bestnite/sub2clash/model/proxy"
|
|
"github.com/bestnite/sub2clash/parser"
|
|
)
|
|
|
|
func TestShadowsocksR_Basic_SimpleLink(t *testing.T) {
|
|
p := &parser.ShadowsocksRParser{}
|
|
input := "ssr://MTI3LjAuMC4xOjQ0MzpvcmlnaW46YWVzLTE5Mi1jZmI6cGxhaW46TVRJek1USXovP2dyb3VwPVpHVm1ZWFZzZEEmcmVtYXJrcz1TRUZJUVE"
|
|
|
|
expected := proxy.Proxy{
|
|
Type: "ssr",
|
|
Name: "HAHA",
|
|
ShadowSocksR: proxy.ShadowSocksR{
|
|
Server: "127.0.0.1",
|
|
Port: 443,
|
|
Cipher: "aes-192-cfb",
|
|
Password: "123123",
|
|
ObfsParam: "",
|
|
Obfs: "plain",
|
|
Protocol: "origin",
|
|
ProtocolParam: "",
|
|
},
|
|
}
|
|
|
|
result, err := p.Parse(input)
|
|
if err != nil {
|
|
t.Errorf("Unexpected error: %v", err)
|
|
return
|
|
}
|
|
|
|
validateResult(t, expected, result)
|
|
}
|
|
|
|
func TestShadowsocksR_Basic_WithParams(t *testing.T) {
|
|
p := &parser.ShadowsocksRParser{}
|
|
input := "ssr://MTI3LjAuMC4xOjQ0MzpvcmlnaW46YWVzLTE5Mi1jZmI6dGxzMS4wX3Nlc3Npb25fYXV0aDpNVEl6TVRJei8/b2Jmc3BhcmFtPWIySm1jeTF3WVhKaGJXVjBaWEkmcHJvdG9wYXJhbT1jSEp2ZEc5allXd3RjR0Z5WVcxbGRHVnkmZ3JvdXA9WkdWbVlYVnNkQSZyZW1hcmtzPVNFRklRUQ"
|
|
|
|
expected := proxy.Proxy{
|
|
Type: "ssr",
|
|
Name: "HAHA",
|
|
ShadowSocksR: proxy.ShadowSocksR{
|
|
Server: "127.0.0.1",
|
|
Port: 443,
|
|
Cipher: "aes-192-cfb",
|
|
Password: "123123",
|
|
ObfsParam: "obfs-parameter",
|
|
Obfs: "tls1.0_session_auth",
|
|
Protocol: "origin",
|
|
ProtocolParam: "protocal-parameter",
|
|
},
|
|
}
|
|
|
|
result, err := p.Parse(input)
|
|
if err != nil {
|
|
t.Errorf("Unexpected error: %v", err)
|
|
return
|
|
}
|
|
|
|
validateResult(t, expected, result)
|
|
}
|
|
|
|
func TestShadowsocksR_Basic_IPv6Address(t *testing.T) {
|
|
p := &parser.ShadowsocksRParser{}
|
|
input := "ssr://WzIwMDE6MGRiODo4NWEzOjAwMDA6MDAwMDo4YTJlOjAzNzA6NzMzNF06NDQzOm9yaWdpbjphZXMtMTkyLWNmYjpwbGFpbjpNVEl6TVRJei8/Z3JvdXA9WkdWbVlYVnNkQSZyZW1hcmtzPVNFRklRUQ"
|
|
|
|
expected := proxy.Proxy{
|
|
Type: "ssr",
|
|
Name: "HAHA",
|
|
ShadowSocksR: proxy.ShadowSocksR{
|
|
Server: "[2001:0db8:85a3:0000:0000:8a2e:0370:7334]",
|
|
Port: 443,
|
|
Cipher: "aes-192-cfb",
|
|
Password: "123123",
|
|
ObfsParam: "",
|
|
Obfs: "plain",
|
|
Protocol: "origin",
|
|
ProtocolParam: "",
|
|
},
|
|
}
|
|
|
|
result, err := p.Parse(input)
|
|
if err != nil {
|
|
t.Errorf("Unexpected error: %v", err)
|
|
return
|
|
}
|
|
|
|
validateResult(t, expected, result)
|
|
}
|
|
|
|
func TestShadowsocksR_Error_InvalidBase64(t *testing.T) {
|
|
p := &parser.ShadowsocksRParser{}
|
|
input := "ssr://invalid_base64"
|
|
|
|
_, err := p.Parse(input)
|
|
if err == nil {
|
|
t.Errorf("Expected error but got none")
|
|
}
|
|
}
|
|
|
|
func TestShadowsocksR_Error_InvalidProtocol(t *testing.T) {
|
|
p := &parser.ShadowsocksRParser{}
|
|
input := "ss://example.com:8080"
|
|
|
|
_, err := p.Parse(input)
|
|
if err == nil {
|
|
t.Errorf("Expected error but got none")
|
|
}
|
|
}
|