package homematic import ( "fmt" "io" "net" "net/http" "testing" "github.com/beevik/etree" ) func TestRequesterResponder(t *testing.T) { ip := net.ParseIP("127.0.0.1") resp := NewResponder(ip, 0, func(w http.ResponseWriter, r *http.Request) { io.Copy(w, r.Body) }) cancel, port, err := resp.Start() if err != nil { t.Fatalf("Could not start responder: %v", err) } defer cancel() req := NewRequester(fmt.Sprintf("http://%s:%d", ip, port)) doc := etree.NewDocument() doc.CreateElement("foo").CreateText("bar") response, err := req.Request(*doc) if err != nil { t.Fatalf("Failed to execute request: %v", err) } element := response.FindElement("/foo") if element == nil { t.Fatal("Could not find `foo` element.") } if element.Text() != `bar` { t.Fatalf("Expected text `bar` in element `foo` but got `%s`.", element.Text()) } }