forked from FeNoMeNa/cwmp-proxy
-
Notifications
You must be signed in to change notification settings - Fork 0
/
cwmp_test.go
111 lines (92 loc) · 2.53 KB
/
cwmp_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
package main
import (
"bytes"
"io"
"io/ioutil"
"net/http"
"testing"
)
func TestReplaceConnectionUrl(t *testing.T) {
cases := []struct {
in, want io.Reader
}{
{
bytes.NewReader([]byte(
`
<ParameterValueStruct>
<Name>InternetGatewayDevice.ManagementServer.ConnectionRequestURL</Name>
<Value xsi:type="xsd:string">http://8.8.8.8:7547</Value>
</ParameterValueStruct>
`,
)),
bytes.NewReader([]byte(
`
<ParameterValueStruct>
<Name>InternetGatewayDevice.ManagementServer.ConnectionRequestURL</Name>
<Value xsi:type="xsd:string">http://localhost:8085/client?origin=http://8.8.8.8:7547</Value>
</ParameterValueStruct>
`,
)),
},
{
bytes.NewReader([]byte(`<EventStruct><EventCode>0 BOOTSTRAP</EventCode><CommandKey/></EventStruct>`)),
bytes.NewReader([]byte(`<EventStruct><EventCode>0 BOOTSTRAP</EventCode><CommandKey/></EventStruct>`)),
},
}
for _, c := range cases {
got, _ := http.NewRequest("POST", "http://github.com/", c.in)
want, _ := http.NewRequest("POST", "http://github.com/", c.want)
cwmp := newCwmpMessage(got)
cwmp.replaceConnectionUrl("localhost:8085")
compareRequests(t, want, got)
}
}
func TestGetConnectionUrl(t *testing.T) {
cases := []struct {
in, want string
}{
{
`
<ParameterValueStruct>
<Name>InternetGatewayDevice.ManagementServer.ConnectionRequestURL</Name>
<Value xsi:type="xsd:string">http://8.8.8.8:7547</Value>
</ParameterValueStruct>
`,
`http://8.8.8.8:7547`,
},
{
`
<ParameterValueStruct>
<Name>Device.ManagementServer.ConnectionRequestURL</Name>
<Value xsi:type="xsd:string">http://7.7.7.7:7547</Value>
</ParameterValueStruct>
`,
`http://7.7.7.7:7547`,
},
}
for _, c := range cases {
got, _ := getConnectionUrl(c.in)
if got != c.want {
t.Errorf("expected %v", c.want)
t.Errorf(" got %v", got)
}
}
}
func TestMissingConnectionUrl(t *testing.T) {
in := `<EventStruct><EventCode>0 BOOTSTRAP</EventCode><CommandKey/></EventStruct>`
_, ok := getConnectionUrl(in)
if ok {
t.Fatalf("getConnectionUrl: error expected, none found")
}
}
func compareRequests(t *testing.T, want *http.Request, got *http.Request) {
gotBuffer, _ := ioutil.ReadAll(got.Body)
wantBuffer, _ := ioutil.ReadAll(want.Body)
if !bytes.Equal(gotBuffer, wantBuffer) {
t.Errorf("expected %s", wantBuffer)
t.Errorf(" got %s", gotBuffer)
}
if want.ContentLength != got.ContentLength {
t.Errorf("got length (%d) != (%d) expected length", got.ContentLength, want.ContentLength)
}
}