From 26c1040ffbd5ed10d5114d06d635cd1d882758f8 Mon Sep 17 00:00:00 2001 From: xengineering Date: Tue, 9 Dec 2025 21:05:08 +0100 Subject: homematic: Add initial state of library --- homematic/xmlrpc_test.go | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 homematic/xmlrpc_test.go (limited to 'homematic/xmlrpc_test.go') diff --git a/homematic/xmlrpc_test.go b/homematic/xmlrpc_test.go new file mode 100644 index 0000000..732f6f8 --- /dev/null +++ b/homematic/xmlrpc_test.go @@ -0,0 +1,44 @@ +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()) + } +} -- cgit v1.2.3-70-g09d2