Properly handle absolute URLs when parsing UPnP service control URLs

Fixes #1187
This commit is contained in:
Caleb Callaway
2015-01-07 21:23:20 -08:00
parent 7d39d1a925
commit af96f7a0cd
2 changed files with 42 additions and 11 deletions

View File

@@ -17,6 +17,7 @@ package upnp
import (
"encoding/xml"
"net/url"
"testing"
)
@@ -40,3 +41,25 @@ func TestExternalIPParsing(t *testing.T) {
t.Error("Parse of SOAP request failed.")
}
}
func TestControlURLParsing(t *testing.T) {
rootURL := "http://192.168.243.1:80/igd.xml"
u, _ := url.Parse(rootURL)
subject := "/upnp?control=WANCommonIFC1"
expected := "http://192.168.243.1:80/upnp?control=WANCommonIFC1"
replaceRawPath(u, subject)
if u.String() != expected {
t.Error("URL normalization of", subject, "failed; expected", expected, "got", u.String())
}
u, _ = url.Parse(rootURL)
subject = "http://192.168.243.1:80/upnp?control=WANCommonIFC1"
expected = "http://192.168.243.1:80/upnp?control=WANCommonIFC1"
replaceRawPath(u, subject)
if u.String() != expected {
t.Error("URL normalization of", subject, "failed; expected", expected, "got", u.String())
}
}