diff options
| author | xengineering <me@xengineering.eu> | 2025-12-09 21:05:08 +0100 |
|---|---|---|
| committer | xengineering <me@xengineering.eu> | 2025-12-09 21:05:08 +0100 |
| commit | 26c1040ffbd5ed10d5114d06d635cd1d882758f8 (patch) | |
| tree | 7ee216f8f624ea377b3d3ada49f066af713bd9e3 /homematic/xmlrpc_test.go | |
| parent | 38740e3674eb9783074cadc9d794bacc94a9f766 (diff) | |
| download | homematic-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.go | 44 |
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()) + } +} |
