36 lines
1.5 KiB
Go
36 lines
1.5 KiB
Go
package awg
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestParseUserVPNLink(t *testing.T) {
|
|
raw := `vpn://W0ludGVyZmFjZV0KQWRkcmVzcyA9IDEwLjguMS4xMy8zMgpETlMgPSAxNzIuMjkuMTcyLjI1NCwgMS4wLjAuMQpQcml2YXRlS2V5ID0gYUpKUmFBRWNUYnVnSWIwdnphSXFuTEJGSUNHajZUZHF6NUQvODlNd09IWT0KTVRVID0gMTI4MApKYyA9IDYKSm1pbiA9IDEwCkptYXggPSA1MApTMSA9IDc0ClMyID0gNDcKUzMgPSA1NgpTNCA9IDMKSDEgPSA1OTA2OTcyNzktMTg4ODc3NDc4NApIMiA9IDIxMDk1MTkwNDctMjEyNDM5NTA2OQpIMyA9IDIxMzY3MjM2NDAtMjE0MTI1MTI4MwpINCA9IDIxNDcyNDg5MzYtMjE0NzM5ODY2MQoKW1BlZXJdClB1YmxpY0tleSA9IE5ROEkxWk9xS3FaaEZReXFxcG5qRFZzWmhZemRSTXVCb21VcHM1Zk9NM3M9ClByZXNoYXJlZEtleSA9IGxTVS9vd1hoNHIvU09UVndTaU5FM1BCZGVPbDdBUUpreUZlTGdMc1Q4ekk9CkFsbG93ZWRJUHMgPSAwLjAuMC4wLzAsIDo6LzAKRW5kcG9pbnQgPSBydS5kZTRpbWEudWs6NDE0MjEKUGVyc2lzdGVudEtlZXBhbGl2ZSA9IDI1`
|
|
c, err := Parse(raw)
|
|
if err != nil {
|
|
t.Fatalf("Parse: %v", err)
|
|
}
|
|
if c.Endpoint != "ru.de4ima.uk:41421" {
|
|
t.Fatalf("endpoint %q", c.Endpoint)
|
|
}
|
|
if !strings.Contains(c.H1, "-") {
|
|
t.Fatalf("expected range H1, got %q", c.H1)
|
|
}
|
|
u, rem, err := NormalizeShareLink(raw)
|
|
if err != nil {
|
|
t.Fatalf("Normalize: %v", err)
|
|
}
|
|
t.Logf("remark=%q normalized_len=%d h1=%q", rem, len(u), c.H1)
|
|
|
|
// invisible unicode wrappers often come from mobile share / chat paste
|
|
dirty := "\u2068" + raw + "\u2069\u2005"
|
|
if !Detect(dirty) {
|
|
t.Fatal("Detect should accept dirty bidi-wrapped vpn://")
|
|
}
|
|
_, _, err = NormalizeShareLink(dirty)
|
|
if err != nil {
|
|
t.Fatalf("dirty NormalizeShareLink: %v", err)
|
|
}
|
|
}
|