Fix camera onboarding and consolidate device management for v0.1.33

This commit is contained in:
Codex
2026-10-05 18:23:25 +08:00
parent eef46f6ec0
commit 675d31c01f
11 changed files with 136 additions and 14 deletions
+22
View File
@@ -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