Реализация на отдельных двух машинах с протестированным взаимодействием по проверке сообщений
This commit is contained in:
@@ -20,16 +20,12 @@ def runtime_values() -> dict[str, str]:
|
||||
{
|
||||
"DATABASE_URL": f"postgresql+asyncpg://han_app:password@pg:5433/han_chat{pg_tail}",
|
||||
"BITRIX_DATABASE_URL": f"postgresql://bitrix:password@pg:5433/han_chat{pg_tail}",
|
||||
"BITRIX_SYNC_DATABASE_URL": f"postgresql://sync:password@pg:5433/han_chat{pg_tail}",
|
||||
"MESSAGE_SAFETY_DATABASE_URL": f"postgresql://safety:password@pg:5433/han_chat{pg_tail}",
|
||||
"SMS_DATABASE_URL": f"postgresql+asyncpg://sms:password@pg:5433/han_chat{pg_tail}",
|
||||
"KEYCLOAK_DB_URL": f"jdbc:postgresql://pg:5433/han_chat{pg_tail}",
|
||||
"REDIS_API_PASSWORD": "r" * 32,
|
||||
"REDIS_SAFETY_PASSWORD": "s" * 32,
|
||||
"REDIS_HEALTH_PASSWORD": "h" * 32,
|
||||
"REDIS_URL": f"redis://api_backend:{'r' * 32}@redis:6379/0",
|
||||
"REDIS_REALTIME_URL": f"redis://api_backend:{'r' * 32}@redis:6379/1",
|
||||
"MESSAGE_SAFETY_REDIS_URL": f"redis://message_safety:{'s' * 32}@redis:6379/2",
|
||||
"BITRIX_LOCAL_APP_INTERNAL_TOKEN": "b" * 32,
|
||||
"BITRIX_INTERNAL_API_TOKEN": "b" * 32,
|
||||
"BITRIX_API_FORWARD_TOKEN": "f" * 32,
|
||||
@@ -121,6 +117,41 @@ class SecretHygieneTests(unittest.TestCase):
|
||||
self.assertEqual(result.returncode, 0, result.stderr)
|
||||
self.assertNotIn(secret_canary, result.stdout + result.stderr)
|
||||
|
||||
def test_validator_enforces_remote_safety_tls_contract(self) -> None:
|
||||
example = (ROOT / ".env.example").read_text(encoding="utf-8")
|
||||
cases = (
|
||||
(
|
||||
"MESSAGE_SAFETY_URL=https://processing.internal:8443",
|
||||
"MESSAGE_SAFETY_URL=http://message-safety:8080",
|
||||
"remote TLS endpoint",
|
||||
),
|
||||
(
|
||||
"MESSAGE_SAFETY_CA_HOST_PATH=/etc/han/ca/vm2-internal-ca.pem",
|
||||
"MESSAGE_SAFETY_CA_HOST_PATH=",
|
||||
"MESSAGE_SAFETY_CA_HOST_PATH",
|
||||
),
|
||||
(
|
||||
"MESSAGE_SAFETY_EXTRA_HOST=processing.internal=192.168.0.4",
|
||||
"MESSAGE_SAFETY_EXTRA_HOST=processing.internal=8.8.8.8",
|
||||
"MESSAGE_SAFETY_EXTRA_HOST",
|
||||
),
|
||||
(
|
||||
"MESSAGE_SAFETY_API_PREFIX=/internal/safety/v2",
|
||||
"MESSAGE_SAFETY_API_PREFIX=/internal/safety/v1",
|
||||
"MESSAGE_SAFETY_API_PREFIX",
|
||||
),
|
||||
)
|
||||
for original, replacement, expected_error in cases:
|
||||
with self.subTest(replacement=replacement), tempfile.TemporaryDirectory() as directory:
|
||||
config = Path(directory) / ".env"
|
||||
config.write_text(
|
||||
example.replace(original, replacement),
|
||||
encoding="utf-8",
|
||||
)
|
||||
result = self.run_validator(config)
|
||||
self.assertNotEqual(result.returncode, 0)
|
||||
self.assertIn(expected_error, result.stderr)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
||||
Reference in New Issue
Block a user