RedFlag/installer/windows/test_build_inputs.py
Source publisher ffdccba10f source: advance the checked projection
Source-Sha: 194a59adfd6c901635da7a9c18253bb2210e2426
Policy-Sha: b9b0be0ee74e55f561a803b8aef6be3c2134f5a83b46816a069a372f2eb04f4d
Tree-Digest: 4697f2e281c1c6ecafff17cf6eeb391a0a1ac0fa6e5fc429f5b473f4579c252c
2026-09-21 14:39:08 +00:00

50 lines
2.5 KiB
Python

import importlib.util
import pathlib
import unittest
from msi_version import product_version
spec = importlib.util.spec_from_file_location("render_license", pathlib.Path(__file__).with_name("render-license.py"))
license_module = importlib.util.module_from_spec(spec)
spec.loader.exec_module(license_module)
class BuildInputs(unittest.TestCase):
def test_helper_task_is_fixed_and_separates_agent_input(self):
script = pathlib.Path(__file__).with_name("provision-helper.ps1").read_text()
self.assertIn("$serviceAccount = 'NT SERVICE\\RedFlagAgent'", script)
self.assertIn("$requestPath = Join-Path $helperState 'requests'", script)
self.assertIn("-Execute $helperPath -Argument 'run-request'", script)
self.assertIn("$agentService.StartName -ne $serviceAccount", script)
self.assertIn("[switch]$MigrateAgentService", script)
self.assertIn("Refusing to replace operator-owned Agent service identity", script)
self.assertIn("'sidtype', 'RedFlagAgent', 'unrestricted'", script)
self.assertIn("'config', 'RedFlagAgent', 'obj=', $serviceAccount", script)
self.assertIn("'config', 'RedFlagAgent', 'obj=', 'LocalSystem'", script)
self.assertIn("Set-RedFlagDirectoryAcl -Path $requestPath -AgentAccess Modify", script)
self.assertIn("Set-RedFlagDirectoryAcl -Path $resultPath -AgentAccess Read", script)
self.assertNotIn("$(Arg", script)
def test_revision_upgrades_are_distinct_and_ordered(self):
releases = ["0.2.9.5", "0.2.9.6", "0.2.10", "0.3.0", "1.0.0"]
versions = [tuple(map(int, product_version(v).split("."))) for v in releases]
self.assertEqual(versions, sorted(set(versions)))
self.assertGreater(versions[0], (0, 2, 9)) # Previous MSI scheme.
self.assertEqual(product_version("0.2.9.6"), "0.2.906")
def test_three_part_release_equals_revision_zero(self):
self.assertEqual(product_version("0.3.1"), product_version("0.3.1.0"))
def test_out_of_range_or_nonrelease_versions_are_rejected(self):
for version in ["0.2.9.100", "256.1.0", "1.256.0", "1.0.656", "1.0.655.36", "0.2.9-rc1", "dev", "1.2", "1.2.3.4.5"]:
with self.subTest(version=version), self.assertRaises(ValueError):
product_version(version)
def test_license_escapes_rtf_syntax_without_losing_text(self):
rendered = license_module.render("{license}\\path\nsecond line")
self.assertIn(r"\{license\}\\path\par", rendered)
self.assertIn("second line", rendered)
if __name__ == "__main__":
unittest.main()