43 lines
1.6 KiB
Python
43 lines
1.6 KiB
Python
"""配置历史实机探针必须真实提交变更,不能以空表存在代替验收。"""
|
|
|
|
from pathlib import Path
|
|
import sys
|
|
import unittest
|
|
from unittest.mock import MagicMock
|
|
|
|
|
|
sys.path.insert(0, str(Path(__file__).resolve().parents[1] / 'tools'))
|
|
from runtime_probe import verify_config_history
|
|
|
|
|
|
class RuntimeConfigTest(unittest.TestCase):
|
|
def client(self, final_generation=2, final_level='warn'):
|
|
client = MagicMock()
|
|
client.success.side_effect = [
|
|
{'available': True, 'activeGeneration': 1},
|
|
{'generation': 1, 'logLevel': 'info', 'databasePasswordStatus': {}},
|
|
{}, {'generation': 2, 'candidateId': 'candidate'}, {},
|
|
{'generation': final_generation, 'logLevel': final_level},
|
|
]
|
|
return client
|
|
|
|
def test_applies_real_change_and_verifies_generation(self):
|
|
client = self.client()
|
|
self.assertTrue(verify_config_history(client)['generation_advanced'])
|
|
calls = client.success.call_args_list
|
|
request = calls[2].args[1]
|
|
self.assertEqual(request['expectedGeneration'], 1)
|
|
self.assertNotIn('databasePasswordStatus', request['payload'])
|
|
self.assertEqual(calls[3].args[2], 'PUT')
|
|
self.assertEqual(calls[4].args[1]['candidateId'], 'candidate')
|
|
|
|
def test_rejects_unchanged_generation_or_unapplied_payload(self):
|
|
for generation, level in ((1, 'warn'), (2, 'info')):
|
|
with self.subTest(generation=generation, level=level):
|
|
with self.assertRaises(AssertionError):
|
|
verify_config_history(self.client(generation, level))
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|