fix(hlcc): persist exact repository ACL sharing
This commit is contained in:
parent
bf5ebcdd0e
commit
ba6aca7f24
5 changed files with 173 additions and 27 deletions
|
|
@ -150,9 +150,19 @@ class SharedRepositoryTests(unittest.TestCase):
|
|||
"#!/bin/sh\nprintf '%s\\n' post_receive_permissions_reconciled\n",
|
||||
encoding="utf-8",
|
||||
)
|
||||
generated_hook = pathlib.Path(temporary) / "generated-post-receive"
|
||||
generated_hook.write_text(
|
||||
'#!/usr/bin/env bash\nif [ $(basename "${hook}") != "gitea" ]; then\n :\nfi\n',
|
||||
encoding="utf-8",
|
||||
)
|
||||
acl_commands = []
|
||||
|
||||
self.assertEqual(
|
||||
MODULE.configure_shared_channel_repository(repository),
|
||||
MODULE.configure_shared_channel_repository(
|
||||
repository,
|
||||
generated_hook,
|
||||
acl_commands.append,
|
||||
),
|
||||
"configured",
|
||||
)
|
||||
configured = subprocess.run(
|
||||
|
|
@ -164,12 +174,22 @@ class SharedRepositoryTests(unittest.TestCase):
|
|||
"--get",
|
||||
"core.sharedRepository",
|
||||
],
|
||||
check=True,
|
||||
capture_output=True,
|
||||
text=True,
|
||||
).stdout.strip()
|
||||
self.assertIn(configured, {"1", "group"})
|
||||
)
|
||||
self.assertNotEqual(configured.returncode, 0)
|
||||
self.assertTrue(
|
||||
any(
|
||||
"d:u:guanghu-authz:rwx" in argument
|
||||
for command in acl_commands
|
||||
for argument in command
|
||||
)
|
||||
)
|
||||
self.assertFalse(hook.exists())
|
||||
self.assertIn(
|
||||
'if [ "$(basename "${hook}")" != "gitea" ]; then',
|
||||
generated_hook.read_text(encoding="utf-8"),
|
||||
)
|
||||
|
||||
def test_refuses_unknown_hook_content(self) -> None:
|
||||
with tempfile.TemporaryDirectory() as temporary:
|
||||
|
|
@ -178,9 +198,18 @@ class SharedRepositoryTests(unittest.TestCase):
|
|||
hook = repository / "hooks" / "post-receive.d" / "guanghu-ice-heart-share"
|
||||
hook.parent.mkdir(parents=True)
|
||||
hook.write_text("#!/bin/sh\nexit 0\n", encoding="utf-8")
|
||||
generated_hook = pathlib.Path(temporary) / "generated-post-receive"
|
||||
generated_hook.write_text(
|
||||
'#!/usr/bin/env bash\nif [ $(basename "${hook}") != "gitea" ]; then\n :\nfi\n',
|
||||
encoding="utf-8",
|
||||
)
|
||||
|
||||
with self.assertRaisesRegex(RuntimeError, "identity mismatch"):
|
||||
MODULE.configure_shared_channel_repository(repository)
|
||||
MODULE.configure_shared_channel_repository(
|
||||
repository,
|
||||
generated_hook,
|
||||
lambda _command: None,
|
||||
)
|
||||
self.assertTrue(hook.exists())
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue