/
ups.py
246 lines (184 loc) · 6.69 KB
/
ups.py
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
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
#!/usr/bin/env python3.6
# License: BSD
import pytest
import os
import sys
apifolder = os.getcwd()
sys.path.append(apifolder)
from functions import GET, PUT, POST
ups_dc_list = list(GET('/ups/driver_choices/').json().keys())
first_ups_list = [
'rmonitor',
'emailnotify',
'mode',
'shutdown',
'port',
'remotehost',
'identifier',
'driver'
]
second_ups_list = [
'rmonitor',
'emailnotify',
'mode',
'shutdown',
'port',
'identifier'
]
def test_01_get_ups_service_id():
global ups_id
results = GET('/service/?service=ups')
assert results.status_code == 200, results.text
assert results.json()[0]['state'] == 'STOPPED', results.text
assert results.json()[0]['enable'] is False, results.text
ups_id = results.json()[0]['id']
def test_02_Enabling_UPS_Service_at_boot():
results = PUT('/service/id/ups/', {'enable': True})
assert results.status_code == 200, results.text
def test_03_look_if_UPS_service_is_enable():
results = GET(f'/service/id/{ups_id}/')
assert results.status_code == 200, results.text
assert results.json()['enable'] is True, results.text
def test_04_Set_UPS_options():
global payload, results
payload = {
'rmonitor': True,
'emailnotify': True,
'mode': 'MASTER',
'shutdown': 'BATT',
'port': '655',
'remotehost': '127.0.0.1',
'identifier': 'ups',
'driver': 'usbhid-ups$PROTECT NAS'
}
results = PUT('/ups/', payload)
assert results.status_code == 200, results.text
@pytest.mark.parametrize('data', first_ups_list)
def test_05_look_at_UPS_options_output_of_(data):
assert payload[data] == results.json()[data], results.text
def test_06_starting_ups_service():
payload = {
"service": "ups",
"service-control": {
"onetime": True,
}
}
results = POST('/service/start/', payload)
assert results.status_code == 200, results.text
def test_07_look_UPS_service_status_is_running():
results = GET(f'/service/id/{ups_id}/')
assert results.status_code == 200, results.text
assert results.json()['state'] == 'RUNNING', results.text
def test_08_get_API_reports_UPS_configuration_as_saved():
global results
results = GET('/ups/')
assert results.status_code == 200, results.text
@pytest.mark.parametrize('data', first_ups_list)
def test_09_look_API_reports_UPS_configuration_of_(data):
assert payload[data] == results.json()[data], results.text
def test_10_change_UPS_options_while_service_is_running():
global payload, results
payload = {
'port': '65545',
'identifier': 'boo'
}
results = PUT('/ups/', payload)
assert results.status_code == 200, results.text
@pytest.mark.parametrize('data', ['port', 'identifier'])
def test_11_look_at_UPS_options_output_of_(data):
assert payload[data] == results.json()[data], results.text
def test_12_get_API_reports_UPS_configuration_as_saved():
global results
results = GET('/ups/')
assert results.status_code == 200, results.text
@pytest.mark.parametrize('data', ['port', 'identifier'])
def test_13_look_API_reports_UPS_configuration_of_(data):
assert payload[data] == results.json()[data], results.text
def test_14_look_if_UPS_service_status_is_still_running():
results = GET(f'/service/id/{ups_id}/')
assert results.status_code == 200, results.text
assert results.json()['state'] == 'RUNNING', results.text
def test_15_stop_ups_service():
payload = {
"service": "ups",
"service-control": {
"onetime": True,
}
}
results = POST('/service/stop/', payload)
assert results.status_code == 200, results.text
def test_16_look_UPS_service_status_is_stopped():
results = GET(f'/service/id/{ups_id}/')
assert results.status_code == 200, results.text
assert results.json()['state'] == 'STOPPED', results.text
def test_17_Change_UPS_options():
global payload, results
payload = {
'rmonitor': False,
'emailnotify': False,
'mode': 'SLAVE',
'shutdown': 'LOWBATT',
'port': '65535',
'identifier': 'foo'
}
results = PUT('/ups/', payload)
assert results.status_code == 200, results.text
@pytest.mark.parametrize('data', second_ups_list)
def test_18_look_at_change_UPS_options_output_of_(data):
assert payload[data] == results.json()[data], results.text
def test_19_starting_ups_service():
payload = {
"service": "ups",
"service-control": {
"onetime": True,
}
}
results = POST('/service/start/', payload)
assert results.status_code == 200, results.text
def test_20_look_UPS_service_status_is_running():
results = GET(f'/service/id/{ups_id}/')
assert results.status_code == 200, results.text
assert results.json()['state'] == 'RUNNING', results.text
def test_21_get_API_reports_UPS_configuration_as_changed():
global results
results = GET('/ups/')
assert results.status_code == 200, results.text
@pytest.mark.parametrize('data', second_ups_list)
def test_22_look_API_reports_UPS_configuration_of_(data):
assert payload[data] == results.json()[data], results.text
def test_23_get_ups_driver_choice():
results = GET('/ups/driver_choices/')
assert results.status_code == 200, results.text
assert isinstance(results.json(), dict) is True, results.text
global ups_dc
ups_dc = results
@pytest.mark.parametrize('dkey', ups_dc_list)
def test_24_check_ups_driver_choice_info_(dkey):
driver_choice = dkey.partition('$')[2]
assert isinstance(ups_dc.json()[dkey], str) is True, ups_dc.text
assert driver_choice in ups_dc.json()[dkey], ups_dc.text
def test_25_get_ups_driver_choice():
results = GET('/ups/port_choices/')
assert results.status_code == 200, results.text
assert isinstance(results.json(), list) is True, results.text
assert isinstance(results.json()[0], str) is True, results.text
def test_26_Disabling_UPS_Service():
results = PUT('/service/id/ups/', {'enable': False})
assert results.status_code == 200, results.text
def test_27_Disabling_UPS_Service_at_boot():
results = GET(f'/service/id/{ups_id}/')
assert results.status_code == 200, results.text
assert results.json()['enable'] is False, results.text
def test_28_stop_ups_service():
payload = {
"service": "ups",
"service-control": {
"onetime": True,
}
}
results = POST('/service/stop/', payload)
assert results.status_code == 200, results.text
def test_29_look_UPS_service_status_is_stopped():
results = GET(f'/service/id/{ups_id}/')
assert results.status_code == 200, results.text
assert results.json()['state'] == 'STOPPED', results.text