summaryrefslogtreecommitdiff
path: root/homematic/xmlrpc_test.go
diff options
context:
space:
mode:
authorxengineering <me@xengineering.eu>2025-12-09 21:05:08 +0100
committerxengineering <me@xengineering.eu>2025-12-09 21:05:08 +0100
commit26c1040ffbd5ed10d5114d06d635cd1d882758f8 (patch)
tree7ee216f8f624ea377b3d3ada49f066af713bd9e3 /homematic/xmlrpc_test.go
parent38740e3674eb9783074cadc9d794bacc94a9f766 (diff)
downloadhomematic-go-26c1040ffbd5ed10d5114d06d635cd1d882758f8.tar
homematic-go-26c1040ffbd5ed10d5114d06d635cd1d882758f8.tar.zst
homematic-go-26c1040ffbd5ed10d5114d06d635cd1d882758f8.zip
homematic: Add initial state of library
Diffstat (limited to 'homematic/xmlrpc_test.go')
-rw-r--r--homematic/xmlrpc_test.go44
1 files changed, 44 insertions, 0 deletions
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())
+ }
+}