]> git.giacomolli.uk - onehouse/blobdiff - driver/alamo/http_client_test.go
Poll and command shared Alamo thermostats
[onehouse] / driver / alamo / http_client_test.go
index 7ee0e36675e8bb71bba2d8d8236a2b97a1c6b5d3..1c8f8a01b5a1e4495e1f2d7f2ea7f40a6198abbc 100644 (file)
@@ -15,8 +15,6 @@ import (
        "github.com/stretchr/testify/require"
 )
 
        "github.com/stretchr/testify/require"
 )
 
-const validRecord = `{"mac":"FC610E7F98AA","power":0,"stemp":20,"temp":19.5,"sensor":23,"ativo":0,"bloqueio":1}`
-
 func TestHTTPClientReadsAllRecordsAndOrderedActionFields(t *testing.T) {
        var requests []*http.Request
 
 func TestHTTPClientReadsAllRecordsAndOrderedActionFields(t *testing.T) {
        var requests []*http.Request
 
@@ -251,6 +249,18 @@ func TestHTTPClientDoesNotFollowRedirects(t *testing.T) {
        require.Equal(t, 1, calls)
 }
 
        require.Equal(t, 1, calls)
 }
 
+func TestHTTPClientKeepsIndependentFailureAlongsideCancellation(t *testing.T) {
+       client, err := NewHTTPClient("http://example.com", &http.Client{Transport: roundTripFunc(func(_ *http.Request) (*http.Response, error) {
+               return nil, errors.Join(context.Canceled, errors.New("secret"))
+       })})
+       require.NoError(t, err)
+
+       _, err = client.Status(t.Context())
+       require.ErrorIs(t, err, context.Canceled)
+       require.ErrorContains(t, err, "gateway transport failed")
+       require.NotContains(t, err.Error(), "secret")
+}
+
 type roundTripFunc func(*http.Request) (*http.Response, error)
 
 func (f roundTripFunc) RoundTrip(request *http.Request) (*http.Response, error) {
 type roundTripFunc func(*http.Request) (*http.Response, error)
 
 func (f roundTripFunc) RoundTrip(request *http.Request) (*http.Response, error) {