feat(nono): add isolated evidence harness
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import os
|
||||
import stat
|
||||
import unittest
|
||||
|
||||
from .fixtures import isolated_environment
|
||||
|
||||
|
||||
class FixtureTests(unittest.TestCase):
|
||||
def test_fixture_uses_private_directories_and_separate_sessions(self) -> None:
|
||||
inherited = os.environ.copy()
|
||||
inherited.update(
|
||||
{
|
||||
"OPENAI_API_KEY": "must-not-cross-boundary",
|
||||
"GITHUB_TOKEN": "must-not-cross-boundary",
|
||||
"SSH_AUTH_SOCK": "/tmp/host-agent.sock",
|
||||
"CUSTOM_SECRET_VALUE": "must-not-cross-boundary",
|
||||
}
|
||||
)
|
||||
with isolated_environment() as fixture:
|
||||
# The fixture intentionally does not accept an inherited environment;
|
||||
# this test still checks that the resulting allowlist is safe.
|
||||
self.assertNotIn("OPENAI_API_KEY", fixture.env)
|
||||
self.assertNotIn("GITHUB_TOKEN", fixture.env)
|
||||
self.assertNotIn("SSH_AUTH_SOCK", fixture.env)
|
||||
self.assertNotIn("CUSTOM_SECRET_VALUE", fixture.env)
|
||||
session_environment = fixture.session("one").environment(inherited)
|
||||
self.assertNotIn("OPENAI_API_KEY", session_environment)
|
||||
self.assertNotIn("GITHUB_TOKEN", session_environment)
|
||||
self.assertNotIn("SSH_AUTH_SOCK", session_environment)
|
||||
self.assertNotIn("CUSTOM_SECRET_VALUE", session_environment)
|
||||
self.assertEqual(
|
||||
set(fixture.env),
|
||||
{
|
||||
"HOME",
|
||||
"XDG_CONFIG_HOME",
|
||||
"XDG_STATE_HOME",
|
||||
"XDG_CACHE_HOME",
|
||||
"XDG_RUNTIME_DIR",
|
||||
"TMPDIR",
|
||||
"PATH",
|
||||
"LANG",
|
||||
"LC_ALL",
|
||||
"PYTHONDONTWRITEBYTECODE",
|
||||
},
|
||||
)
|
||||
for path in (
|
||||
fixture.root,
|
||||
fixture.home,
|
||||
fixture.xdg_config_home,
|
||||
fixture.xdg_state_home,
|
||||
fixture.xdg_cache_home,
|
||||
fixture.xdg_runtime_dir,
|
||||
fixture.tmpdir,
|
||||
fixture.repos,
|
||||
fixture.sessions,
|
||||
fixture.stub_bin,
|
||||
):
|
||||
assert path is not None
|
||||
self.assertEqual(stat.S_IMODE(path.stat().st_mode), 0o700, path)
|
||||
first = fixture.session("one")
|
||||
second = fixture.session("two")
|
||||
self.assertNotEqual(first.tmp, second.tmp)
|
||||
self.assertNotEqual(first.state, second.state)
|
||||
self.assertEqual(stat.S_IMODE(first.tmp.stat().st_mode), 0o700)
|
||||
self.assertEqual(stat.S_IMODE(second.state.stat().st_mode), 0o700)
|
||||
|
||||
def test_session_environment_points_only_at_its_paths(self) -> None:
|
||||
with isolated_environment() as fixture:
|
||||
session = fixture.session("one")
|
||||
environment = session.environment(fixture.env)
|
||||
self.assertEqual(environment["HOME"], str(session.home))
|
||||
self.assertEqual(environment["XDG_STATE_HOME"], str(session.state))
|
||||
self.assertEqual(environment["XDG_RUNTIME_DIR"], str(session.runtime))
|
||||
self.assertEqual(environment["TMPDIR"], str(session.tmp))
|
||||
self.assertNotIn("GH_TOKEN", environment)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user