-
Notifications
You must be signed in to change notification settings - Fork 18
/
Copy pathgreeting_test.go
109 lines (100 loc) · 2.96 KB
/
greeting_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
package epp
import (
"bytes"
"encoding/xml"
"net"
"testing"
"github.com/nbio/st"
)
func TestHello(t *testing.T) {
ls, err := newLocalServer()
st.Assert(t, err, nil)
defer ls.teardown()
ls.buildup(func(ls *localServer, ln net.Listener) {
conn, err := ls.Accept()
st.Assert(t, err, nil)
// Respond with greeting
err = writeDataUnit(conn, []byte(testXMLGreeting))
st.Assert(t, err, nil)
// Respond with greeting for <hello>
err = writeDataUnit(conn, []byte(testXMLGreeting))
st.Assert(t, err, nil)
})
nc, err := net.Dial(ls.Listener.Addr().Network(), ls.Listener.Addr().String())
st.Assert(t, err, nil)
c, err := NewConn(nc)
st.Assert(t, err, nil)
err = c.Hello()
st.Expect(t, err, nil)
st.Expect(t, c.Greeting.ServerName, "Example EPP server epp.example.com")
}
func TestGreetingSupportsObject(t *testing.T) {
g := Greeting{}
st.Expect(t, g.SupportsObject(ObjDomain), false)
st.Expect(t, g.SupportsObject(ObjHost), false)
g.Objects = testObjects
st.Expect(t, g.SupportsObject(ObjDomain), true)
st.Expect(t, g.SupportsObject(ObjHost), true)
}
func TestGreetingSupportsExtension(t *testing.T) {
g := Greeting{}
st.Expect(t, g.SupportsExtension(ExtCharge), false)
st.Expect(t, g.SupportsExtension(ExtIDN), false)
g.Extensions = testExtensions
st.Expect(t, g.SupportsExtension(ExtCharge), true)
st.Expect(t, g.SupportsExtension(ExtIDN), true)
}
func TestScanGreeting(t *testing.T) {
d := decoder(testXMLGreeting)
var res Response
err := IgnoreEOF(scanResponse.Scan(d, &res))
st.Expect(t, err, nil)
st.Expect(t, res.Greeting.ServerName, "Example EPP server epp.example.com")
st.Expect(t, res.Greeting.Objects[0], "urn:ietf:params:xml:ns:obj1")
st.Expect(t, res.Greeting.Objects[1], "urn:ietf:params:xml:ns:obj2")
st.Expect(t, res.Greeting.Objects[2], "urn:ietf:params:xml:ns:obj3")
st.Expect(t, res.Greeting.Extensions[0], "http://custom/obj1ext-1.0")
}
func BenchmarkScanGreeting(b *testing.B) {
b.StopTimer()
var buf bytes.Buffer
d := xml.NewDecoder(&buf)
saved := *d
b.StartTimer()
for i := 0; i < b.N; i++ {
b.StopTimer()
buf.Reset()
buf.WriteString(testXMLGreeting)
deleteBufferRange(&buf, []byte(`<dcp>`), []byte(`</dcp>`))
*d = saved
b.StartTimer()
var res Response
scanResponse.Scan(d, &res)
}
}
var testXMLGreeting = `<?xml version="1.0" encoding="utf-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<greeting>
<svID>Example EPP server epp.example.com</svID>
<svDate>2000-06-08T22:00:00.0Z</svDate>
<svcMenu>
<version>1.0</version>
<lang>en</lang>
<lang>fr</lang>
<objURI>urn:ietf:params:xml:ns:obj1</objURI>
<objURI>urn:ietf:params:xml:ns:obj2</objURI>
<objURI>urn:ietf:params:xml:ns:obj3</objURI>
<svcExtension>
<extURI>http://custom/obj1ext-1.0</extURI>
</svcExtension>
</svcMenu>
<dcp>
<access><all/></access>
<statement>
<purpose><admin/><prov/></purpose>
<recipient><ours/><public/></recipient>
<retention><stated/></retention>
</statement>
</dcp>
</greeting>
</epp>`