podman-compose/tests/integration/secrets/test_podman_compose_secrets.py
Monika Kairaityte 838957b902 test/integration: Automate manual 'secrets' test
Signed-off-by: Monika Kairaityte <monika@kibit.lt>
2025-02-19 21:42:52 +02:00

85 lines
3.0 KiB
Python

# SPDX-License-Identifier: GPL-2.0
import os
import unittest
from subprocess import PIPE
from subprocess import Popen
from tests.integration.test_utils import RunSubprocessMixin
from tests.integration.test_utils import podman_compose_path
from tests.integration.test_utils import test_path
def compose_yaml_path():
return os.path.join(os.path.join(test_path(), "secrets"), "docker-compose.yaml")
class TestComposeNoSecrets(unittest.TestCase, RunSubprocessMixin):
created_secrets = [
"podman_compose_test_secret",
"podman_compose_test_secret_2",
"podman_compose_test_secret_3",
"podman_compose_test_secret_custom_name",
]
def setUp(self):
for secret in self.created_secrets:
p = Popen(["podman", "secret", "create", secret, "-"], stdin=PIPE)
p.communicate(secret.encode('utf-8'))
def tearDown(self):
for secret in self.created_secrets:
self.run_subprocess_assert_returncode([
"podman",
"secret",
"rm",
f"{secret}",
])
# test if secrets are saved and available in respective files of a container
def test_secrets(self):
try:
_, error, _ = self.run_subprocess(
[
podman_compose_path(),
"-f",
compose_yaml_path(),
"up",
"test",
],
)
self.assertIn(
b'WARNING: Service "test" uses target: "podman_compose_test_secret_3" '
+ b'for secret: "podman_compose_test_secret_3". That is un-supported and '
+ b'a no-op and is ignored.',
error,
)
self.assertIn(
b'WARNING: Service test uses secret unused_params_warning with uid, '
+ b'gid, or mode. These fields are not supported by this implementation '
+ b'of the Compose file',
error,
)
output, _ = self.run_subprocess_assert_returncode(["podman", "logs", "secrets_test_1"])
expected_output = (
b'/run/secrets/custom_name:important-secret-is-important\n'
+ b'/run/secrets/file_secret:important-secret-is-important\n'
+ b'/run/secrets/podman_compose_test_secret:podman_compose_test_secret\n'
+ b'/run/secrets/podman_compose_test_secret_3:podman_compose_test_secret_3\n'
+ b'/run/secrets/unused_params_warning:important-secret-is-important\n'
+ b'important-secret-is-important\n'
+ b'podman_compose_test_secret\n'
)
self.assertEqual(expected_output, output)
finally:
self.run_subprocess_assert_returncode([
podman_compose_path(),
"-f",
compose_yaml_path(),
"down",
"-t",
"0",
])