Fix camera onboarding and consolidate device management for v0.1.33
This commit is contained in:
+22
@@ -547,6 +547,28 @@ class WebTests(unittest.TestCase):
|
||||
self.assertEqual(current['username'], 'updated')
|
||||
self.assertTrue(current['passwordConfigured']);self.assertNotIn('password', current)
|
||||
|
||||
def test_onvif_port_persists_and_is_validated_separately_from_rtsp(self):
|
||||
site = app.save_site({'name': 'ONVIF port test'})
|
||||
asset = app.save_asset(dict(name='TP-Link fixture', siteId=site['id'], lensCount=1))
|
||||
with patch.object(app, 'write_media_config'):
|
||||
camera = app.save_camera(dict(name='Single source', assetId=asset['id'], host='192.168.8.160', port=554, onvifPort=2020))
|
||||
self.assertEqual(camera['onvifPort'], 2020)
|
||||
self.assertEqual(camera['port'], 554)
|
||||
legacy_edit = dict(camera)
|
||||
legacy_edit.pop('onvifPort')
|
||||
self.assertEqual(app.save_camera(legacy_edit)['onvifPort'], 2020)
|
||||
for invalid in (0, 65536, 'wrong'):
|
||||
with self.assertRaises(app.Problem):
|
||||
app.save_camera(dict(camera, onvifPort=invalid))
|
||||
|
||||
def test_onvif_auth_and_network_failures_have_different_errors(self):
|
||||
data = dict(host='192.168.8.160', port=2020, username='admin', password='fixture-only')
|
||||
for fault, status, text in [(PermissionError(), 422, '摄像机认证失败'), (TimeoutError(), 502, '服务器无法连接')]:
|
||||
with patch.object(app.onvif, 'inspect', side_effect=fault):
|
||||
code, _, body = self.request('/api/onvif', data=data)
|
||||
self.assertEqual(code, status)
|
||||
self.assertIn(text, json.loads(body)['error'])
|
||||
|
||||
def test_camera_settings_admin_only_and_errors_are_explicit(self):
|
||||
user = app.ACCOUNTS.save(dict(username='settings-member', password='settings-pass', siteIds=['test-site'] if app.get_object('sites','test-site') else []), self.admin)
|
||||
token = '3'*64
|
||||
|
||||
Reference in New Issue
Block a user