36 lines
1.8 KiB
Python
36 lines
1.8 KiB
Python
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')
|