package ws import ( "testing" ) func TestPrepareURL(t *testing.T) { tests := []struct { name string input string want string wantErr bool }{ { name: "rel scheme with non-standard port", input: "rel://test-domain-2:45678", want: "ws://test-domain-2:45678/relay", }, { name: "rels scheme with non-standard port", input: "rels://test-domain-2:45678", want: "wss://test-domain-2:45678/relay", }, { name: "rel scheme without port", input: "rel://test-domain-2", want: "ws://test-domain-2/relay", }, { name: "rels scheme without port", input: "rels://test-domain-2", want: "wss://test-domain-2/relay", }, { name: "rel scheme with IP and port", input: "rel://1.2.3.4:45678", want: "ws://1.2.3.4:45678/relay", }, { name: "rel scheme with hostname starting with rel", input: "rel://relay.example.com:45678", want: "ws://relay.example.com:45678/relay", }, { name: "rel scheme with IPv6 and port", input: "rel://[2001:db8::1]:45678", want: "ws://[2001:db8::1]:45678/relay", }, { name: "rels scheme with IPv6 loopback and port", input: "rels://[::1]:45678", want: "wss://[::1]:45678/relay", }, { name: "unsupported scheme", input: "http://test-domain-2:45678", wantErr: true, }, { name: "no scheme", input: "test-domain-2:45678", wantErr: true, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { got, err := prepareURL(tt.input) if (err != nil) != tt.wantErr { t.Fatalf("prepareURL(%q) err = %v, wantErr %v", tt.input, err, tt.wantErr) } if got != tt.want { t.Errorf("prepareURL(%q) = %q, want %q", tt.input, got, tt.want) } }) } }