35
35
<trID><svTRID>1618435120843</svTRID></trID></response></epp>'''
36
36
37
37
38
+ sample_unknown_command_response = b'''<?xml version="1.0" encoding="UTF-8"?>
39
+ <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
40
+ xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd"><response><result code="2000">
41
+ <msg>Unknown command</msg></result>
42
+ <trID><svTRID>1618663648910</svTRID></trID></response></epp>'''
43
+
44
+
38
45
def conn ():
39
46
logging .getLogger ('epp.client' ).setLevel (logging .DEBUG )
40
47
return client .EPPConnection (
@@ -47,6 +54,10 @@ def conn():
47
54
)
48
55
49
56
57
+ def fake_response (xml_response ):
58
+ return client .int_to_net (len (xml_response ) + 4 , client .get_format_32 ()) + xml_response
59
+
60
+
50
61
class TestEPPConnection (object ):
51
62
52
63
def test_init (self ):
@@ -94,8 +105,8 @@ def test_greeting_failed(self, mock_wrap_socket, mock_socket_connect):
94
105
def test_login_failed (self , mock_wrap_socket , mock_socket_connect ):
95
106
mock_socket_connect .return_value = True
96
107
fake_stream = io .BytesIO (
97
- client . int_to_net ( len ( sample_greeting ) + 4 , client . get_format_32 ()) + sample_greeting +
98
- client . int_to_net ( 18 + 4 , client . get_format_32 ()) + b'bad login response' )
108
+ fake_response ( sample_greeting ) +
109
+ fake_response ( b'bad login response' ) )
99
110
setattr (fake_stream , 'send' , lambda _ : True )
100
111
mock_wrap_socket .return_value = fake_stream
101
112
with pytest .raises (AttributeError ):
@@ -106,8 +117,8 @@ def test_login_failed(self, mock_wrap_socket, mock_socket_connect):
106
117
def test_open_success (self , mock_wrap_socket , mock_socket_connect ):
107
118
mock_socket_connect .return_value = True
108
119
fake_stream = io .BytesIO (
109
- client . int_to_net ( len ( sample_greeting ) + 4 , client . get_format_32 ()) + sample_greeting +
110
- client . int_to_net ( len ( sample_login_response ) + 4 , client . get_format_32 ()) + sample_login_response )
120
+ fake_response ( sample_greeting ) +
121
+ fake_response ( sample_login_response ))
111
122
setattr (fake_stream , 'send' , lambda _ : True )
112
123
mock_wrap_socket .return_value = fake_stream
113
124
assert conn ().open () is True
@@ -117,9 +128,9 @@ def test_open_success(self, mock_wrap_socket, mock_socket_connect):
117
128
def test_close_failed (self , mock_wrap_socket , mock_socket_connect ):
118
129
mock_socket_connect .return_value = True
119
130
fake_stream = io .BytesIO (
120
- client . int_to_net ( len ( sample_greeting ) + 4 , client . get_format_32 ()) + sample_greeting +
121
- client . int_to_net ( len ( sample_login_response ) + 4 , client . get_format_32 ()) + sample_login_response +
122
- client . int_to_net ( 19 + 4 , client . get_format_32 ()) + b'bad logout response' )
131
+ fake_response ( sample_greeting ) +
132
+ fake_response ( sample_login_response ) +
133
+ fake_response ( b'bad logout response' ) )
123
134
setattr (fake_stream , 'send' , lambda _ : True )
124
135
mock_wrap_socket .return_value = fake_stream
125
136
c = conn ()
@@ -132,9 +143,9 @@ def test_close_failed(self, mock_wrap_socket, mock_socket_connect):
132
143
def test_close_success (self , mock_wrap_socket , mock_socket_connect ):
133
144
mock_socket_connect .return_value = True
134
145
fake_stream = io .BytesIO (
135
- client . int_to_net ( len ( sample_greeting ) + 4 , client . get_format_32 ()) + sample_greeting +
136
- client . int_to_net ( len ( sample_login_response ) + 4 , client . get_format_32 ()) + sample_login_response +
137
- client . int_to_net ( len ( sample_logout_response ) + 4 , client . get_format_32 ()) + sample_logout_response )
146
+ fake_response ( sample_greeting ) +
147
+ fake_response ( sample_login_response ) +
148
+ fake_response ( sample_logout_response ))
138
149
setattr (fake_stream , 'send' , lambda _ : True )
139
150
mock_wrap_socket .return_value = fake_stream
140
151
c = conn ()
@@ -146,12 +157,34 @@ def test_close_success(self, mock_wrap_socket, mock_socket_connect):
146
157
def test_call (self , mock_wrap_socket , mock_socket_connect ):
147
158
mock_socket_connect .return_value = True
148
159
fake_stream = io .BytesIO (
149
- client .int_to_net (len (sample_greeting ) + 4 , client .get_format_32 ()) + sample_greeting +
150
- client .int_to_net (len (sample_login_response ) + 4 , client .get_format_32 ()) + sample_login_response +
151
- client .int_to_net (len (sample_logout_response ) + 4 , client .get_format_32 ()) + sample_logout_response )
160
+ fake_response (sample_greeting ) +
161
+ fake_response (sample_login_response ) +
162
+ fake_response (sample_unknown_command_response ) +
163
+ fake_response (sample_logout_response ))
152
164
setattr (fake_stream , 'send' , lambda _ : True )
153
165
mock_wrap_socket .return_value = fake_stream
154
166
c = conn ()
155
167
assert c .open () is True
156
- c .call (cmd = '<?xml version="1.0" encoding="UTF-8"?><test></test>' )
168
+ assert c .call (cmd = '<?xml version="1.0" encoding="UTF-8"?><test></test>' ) == sample_unknown_command_response
169
+ assert c .close () is True
157
170
171
+ @mock .patch ('socket.socket.connect' )
172
+ @mock .patch ('ssl.wrap_socket' )
173
+ def test_call_with_soup (self , mock_wrap_socket , mock_socket_connect ):
174
+ mock_socket_connect .return_value = True
175
+ fake_stream = io .BytesIO (
176
+ fake_response (sample_greeting ) +
177
+ fake_response (sample_login_response ) +
178
+ fake_response (sample_unknown_command_response ) +
179
+ fake_response (sample_logout_response ))
180
+ setattr (fake_stream , 'send' , lambda _ : True )
181
+ mock_wrap_socket .return_value = fake_stream
182
+ c = conn ()
183
+ assert c .open () is True
184
+ resp = c .call (
185
+ cmd = '<?xml version="1.0" encoding="UTF-8"?><test></test>' ,
186
+ soup = True ,
187
+ )
188
+ assert resp .find ('result' ).get ('code' ) == '2000'
189
+ assert resp .find ('msg' ).text == 'Unknown command'
190
+ assert c .close () is True
0 commit comments