-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest.py
More file actions
executable file
·126 lines (95 loc) · 4.24 KB
/
Copy pathtest.py
File metadata and controls
executable file
·126 lines (95 loc) · 4.24 KB
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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#!/usr/bin/env python
import unittest
from mock import patch, Mock
from cloud_cam import CloudCamClient
def return_code(code):
xml = """
<?xml version="1.0" encoding="UTF-8"?>
<ResponseStatus version="1.0" xmlns="urn:psialliance-org">
<requestURL>/PSIA/PTZ/channels/1/continuous</requestURL>
<statusCode>%s</statusCode>
<statusString>OK</statusString>
</ResponseStatus>
"""
resp = xml % code
return resp.strip()
def make_standard_assertions(req):
assert req.get_full_url()=='http://cloudcam_host/PSIA/PTZ/channels/1/continuous'
assert len(req.headers)==1 and req.headers['Authorization'].startswith('Basic')
assert req.get_method()=='PUT'
class CloudCamTest(unittest.TestCase):
def setUp(self):
self.client = CloudCamClient("cloudcam_host", "uza", "pwd")
self.mock_opener = Mock()
self.mock_opened_request = Mock()
self.mock_opener.open.return_value = self.mock_opened_request
@patch('urllib2.build_opener')
def testZoomIn(self, mock_build_opener):
mock_build_opener.return_value = self.mock_opener
self.mock_opened_request.read.return_value = return_code(1)
self.client.zoom_in()
req = self.mock_opener.open.call_args[0][0]
make_standard_assertions(req)
assert req.data=='<?xml version:"1.0" encoding="UTF-8"?><PTZData><zoom>2</zoom></PTZData>'
@patch('urllib2.build_opener')
def testZoomOut(self, mock_build_opener):
mock_build_opener.return_value = self.mock_opener
self.mock_opened_request.read.return_value = return_code(1)
self.client.zoom_out()
req = self.mock_opener.open.call_args[0][0]
make_standard_assertions(req)
assert req.data=='<?xml version:"1.0" encoding="UTF-8"?><PTZData><zoom>-2</zoom></PTZData>'
@patch('urllib2.build_opener')
def testTiltUp(self, mock_build_opener):
mock_build_opener.return_value = self.mock_opener
self.mock_opened_request.read.return_value = return_code(1)
self.client.tilt_up()
req = self.mock_opener.open.call_args[0][0]
make_standard_assertions(req)
assert req.data=='<?xml version:"1.0" encoding="UTF-8"?><PTZData><tilt>2</tilt></PTZData>'
@patch('urllib2.build_opener')
def testTiltDown(self, mock_build_opener):
mock_build_opener.return_value = self.mock_opener
self.mock_opened_request.read.return_value = return_code(1)
self.client.tilt_down()
req = self.mock_opener.open.call_args[0][0]
make_standard_assertions(req)
assert req.data=='<?xml version:"1.0" encoding="UTF-8"?><PTZData><tilt>-2</tilt></PTZData>'
@patch('urllib2.build_opener')
def testPanLeft(self, mock_build_opener):
mock_build_opener.return_value = self.mock_opener
self.mock_opened_request.read.return_value = return_code(1)
self.client.pan_left()
req = self.mock_opener.open.call_args[0][0]
make_standard_assertions(req)
assert req.data=='<?xml version:"1.0" encoding="UTF-8"?><PTZData><pan>2</pan></PTZData>'
@patch('urllib2.build_opener')
def testPanRight(self, mock_build_opener):
mock_build_opener.return_value = self.mock_opener
self.mock_opened_request.read.return_value = return_code(1)
self.client.pan_right()
req = self.mock_opener.open.call_args[0][0]
make_standard_assertions(req)
assert req.data=='<?xml version:"1.0" encoding="UTF-8"?><PTZData><pan>-2</pan></PTZData>'
@patch('urllib2.build_opener')
def testFreeze(self, mock_build_opener):
mock_build_opener.return_value = self.mock_opener
self.mock_opened_request.read.return_value = return_code(1)
self.client.freeze()
req = self.mock_opener.open.call_args[0][0]
make_standard_assertions(req)
assert req.data=='<?xml version:"1.0" encoding="UTF-8"?><PTZData><pan>0</pan><tilt>0</tilt><zoom>0</zoom></PTZData>'
@patch('urllib2.build_opener')
def testZoomError(self, mock_build_opener):
mock_build_opener.return_value = self.mock_opener
self.mock_opened_request.read.return_value = return_code(2)
try:
self.client.zoom_in()
raise Exception("Expected to fail but didn't.")
except AssertionError:
pass
req = self.mock_opener.open.call_args[0][0]
make_standard_assertions(req)
assert req.data=='<?xml version:"1.0" encoding="UTF-8"?><PTZData><zoom>2</zoom></PTZData>'
if __name__ == '__main__':
unittest.main()