import unittest from samsara.analyzers.summary import summarize from samsara.analyzers.assessment import assess from samsara.collectors.demo import collect_demo, LINUX_DEMO_HOST, DEMO_HOST class SummaryTests(unittest.TestCase): def test_os_version_workload_and_schedule_evidence(self): for host, version in [(LINUX_DEMO_HOST, '9.4'), (DEMO_HOST, '2022')]: data = collect_demo(host) summary = summarize(data, assess(data)) self.assertEqual(summary['version'], version) self.assertTrue(summary['software']) self.assertTrue(summary['jobs']) self.assertEqual(summary['risk_score'], assess(data)['score']) self.assertTrue(all('evidence' in row for row in summary['software'])) def test_unknown_version_not_kernel_and_disabled_jobs_not_active(self): data = collect_demo(LINUX_DEMO_HOST) data['server']['operating_system'] = 'Enterprise Linux' data['server']['os_build'] = '5.14.0' data['inventory']['tasks'] = [{'name': 'disabled', 'enabled': False}] data['inventory']['software'] = [{'name': 'libsqlite3'}, {'name': 'nginx-doc'}] data['inventory']['services'] = [] summary = summarize(data, assess(data)) self.assertEqual(summary['version'], 'Not collected') self.assertEqual(summary['jobs'], []) self.assertEqual(summary['software'], []) def test_explicit_version_and_missing_schedule(self): data = collect_demo(LINUX_DEMO_HOST) data['server']['os_version'] = '9.5' data['inventory']['tasks'] = [{'name': 'backup', 'enabled': True}] summary = summarize(data, assess(data)) self.assertEqual(summary['version'], '9.5') self.assertEqual(summary['jobs'][0]['schedule'], 'Schedule not collected')