mirror of https://github.com/XTLS/Xray-core
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
117 lines
2.6 KiB
117 lines
2.6 KiB
package grpc |
|
|
|
import ( |
|
"testing" |
|
|
|
"github.com/stretchr/testify/assert" |
|
) |
|
|
|
func TestConfig_GetServiceName(t *testing.T) { |
|
tests := []struct { |
|
TestName string |
|
ServiceName string |
|
Expected string |
|
}{ |
|
{ |
|
TestName: "simple no absolute path", |
|
ServiceName: "hello", |
|
Expected: "hello", |
|
}, |
|
{ |
|
TestName: "escape no absolute path", |
|
ServiceName: "hello/world!", |
|
Expected: "hello%2Fworld%21", |
|
}, |
|
{ |
|
TestName: "absolute path", |
|
ServiceName: "/my/sample/path/a|b", |
|
Expected: "my/sample/path", |
|
}, |
|
{ |
|
TestName: "escape absolute path", |
|
ServiceName: "/hello /world!/a|b", |
|
Expected: "hello%20/world%21", |
|
}, |
|
{ |
|
TestName: "path with only one '/'", |
|
ServiceName: "/foo", |
|
Expected: "", |
|
}, |
|
} |
|
for _, test := range tests { |
|
t.Run(test.TestName, func(t *testing.T) { |
|
config := Config{ServiceName: test.ServiceName} |
|
assert.Equal(t, test.Expected, config.getServiceName()) |
|
}) |
|
} |
|
} |
|
|
|
func TestConfig_GetTunStreamName(t *testing.T) { |
|
tests := []struct { |
|
TestName string |
|
ServiceName string |
|
Expected string |
|
}{ |
|
{ |
|
TestName: "no absolute path", |
|
ServiceName: "hello", |
|
Expected: "Tun", |
|
}, |
|
{ |
|
TestName: "absolute path server", |
|
ServiceName: "/my/sample/path/tun_service|multi_service", |
|
Expected: "tun_service", |
|
}, |
|
{ |
|
TestName: "absolute path client", |
|
ServiceName: "/my/sample/path/tun_service", |
|
Expected: "tun_service", |
|
}, |
|
{ |
|
TestName: "escape absolute path client", |
|
ServiceName: "/m y/sa !mple/pa\\th/tun\\_serv!ice", |
|
Expected: "tun%5C_serv%21ice", |
|
}, |
|
} |
|
for _, test := range tests { |
|
t.Run(test.TestName, func(t *testing.T) { |
|
config := Config{ServiceName: test.ServiceName} |
|
assert.Equal(t, test.Expected, config.getTunStreamName()) |
|
}) |
|
} |
|
} |
|
|
|
func TestConfig_GetTunMultiStreamName(t *testing.T) { |
|
tests := []struct { |
|
TestName string |
|
ServiceName string |
|
Expected string |
|
}{ |
|
{ |
|
TestName: "no absolute path", |
|
ServiceName: "hello", |
|
Expected: "TunMulti", |
|
}, |
|
{ |
|
TestName: "absolute path server", |
|
ServiceName: "/my/sample/path/tun_service|multi_service", |
|
Expected: "multi_service", |
|
}, |
|
{ |
|
TestName: "absolute path client", |
|
ServiceName: "/my/sample/path/multi_service", |
|
Expected: "multi_service", |
|
}, |
|
{ |
|
TestName: "escape absolute path client", |
|
ServiceName: "/m y/sa !mple/pa\\th/mu%lti\\_serv!ice", |
|
Expected: "mu%25lti%5C_serv%21ice", |
|
}, |
|
} |
|
for _, test := range tests { |
|
t.Run(test.TestName, func(t *testing.T) { |
|
config := Config{ServiceName: test.ServiceName} |
|
assert.Equal(t, test.Expected, config.getTunMultiStreamName()) |
|
}) |
|
} |
|
}
|
|
|