Skip to content

Commit e9b4b7c

Browse files
committed
Increase test coverage
1 parent b68bb1a commit e9b4b7c

File tree

4 files changed

+60
-5
lines changed

4 files changed

+60
-5
lines changed

errors.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,5 @@ type ResponseError struct {
1010

1111
// Error returns a string representation
1212
func (err *ResponseError) Error() string {
13-
return fmt.Sprintf("Unexpected status code %d for %s", err.StatusCode, err.URI)
13+
return fmt.Sprintf("unexpected status code %d for %s", err.StatusCode, err.URI)
1414
}

errors_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,5 @@ func TestResponseError(t *testing.T) {
1010
assert.EqualError(t, &ResponseError{
1111
URI: "http://",
1212
StatusCode: 500,
13-
}, "Unexpected status code 500 for http://")
13+
}, "unexpected status code 500 for http://")
1414
}

fritzbox.go

-2
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@ func (c *Client) request(rType requestType) (root *xmlpath.Node, err error) {
4747
uri,
4848
bytes.NewBufferString(`<?xml version='1.0' encoding='utf-8'?><s:Envelope s:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' xmlns:s='http://schemas.xmlsoap.org/soap/envelope/'><s:Body>`+rType.soapBody+`</s:Body></s:Envelope>`),
4949
)
50-
5150
if err != nil {
5251
return
5352
}
@@ -64,7 +63,6 @@ func (c *Client) request(rType requestType) (root *xmlpath.Node, err error) {
6463
// Send request
6564
client := &http.Client{Timeout: timeout}
6665
resp, err := client.Do(req)
67-
6866
// Request failed?
6967
if err != nil {
7068
return

fritzbox_test.go

+58-1
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,23 @@
11
package fritzbox
22

33
import (
4+
"context"
45
"errors"
56
"fmt"
7+
"log"
8+
"net"
9+
"net/http"
610
"os"
711
"testing"
812

913
"gopkg.in/xmlpath.v2"
1014

1115
"github.com/stretchr/testify/assert"
16+
"github.com/stretchr/testify/require"
1217
)
1318

1419
func testfile(name string) *xmlpath.Node {
1520
file, err := os.Open(fmt.Sprintf("testdata/%s.xml", name))
16-
1721
if err != nil {
1822
panic(err)
1923
}
@@ -39,3 +43,56 @@ func checkFault(root *xmlpath.Node) error {
3943
}
4044
return nil
4145
}
46+
47+
func TestClient(t *testing.T) {
48+
assert := assert.New(t)
49+
require := require.New(t)
50+
51+
listener, err := net.Listen("tcp", "127.0.0.1:0")
52+
require.NoError(err)
53+
defer listener.Close()
54+
55+
mux := http.NewServeMux()
56+
mux.HandleFunc("/igdupnp/control/WANCommonIFC1", func(w http.ResponseWriter, r *http.Request) {
57+
http.ServeFile(w, r, "testdata/linkspeed/valid.xml")
58+
})
59+
60+
srv := &http.Server{Handler: mux}
61+
go func() {
62+
if e := srv.Serve(listener); !errors.Is(e, http.ErrServerClosed) {
63+
log.Printf("unexpected HTTP server shutdown: %v", e)
64+
}
65+
}()
66+
defer srv.Close()
67+
68+
client := Client{
69+
Endpoint: listener.Addr().String(),
70+
Context: context.Background(),
71+
}
72+
73+
// should succeed
74+
linkSpeed, err := client.GetLinkspeed()
75+
assert.NoError(err)
76+
if assert.NotNil(linkSpeed) {
77+
assert.Equal(51392000, linkSpeed.DownlinkBitRate)
78+
}
79+
80+
// should fail (no handler)
81+
_, err = client.GetPublicAddress()
82+
if assert.Error(err) {
83+
assert.Contains(err.Error(), "unexpected status code 404 for http://127")
84+
}
85+
}
86+
87+
func TestClientInvalidAddress(t *testing.T) {
88+
assert := assert.New(t)
89+
client := NewClientFromIP(net.IP{127, 0, 0, 2})
90+
91+
assert.Equal("127.0.0.2:49000", client.Endpoint)
92+
93+
// should succeed
94+
_, err := client.GetLinkspeed()
95+
if assert.Error(err) {
96+
assert.Contains(err.Error(), "dial tcp 127.0.0.2:49000: connect: connection refused")
97+
}
98+
}

0 commit comments

Comments
 (0)