"""Test passsword readers.""" from typing import override import unittest from io import StringIO from unittest.mock import patch from dotenv import load_dotenv from sshecret.password_readers import InputPasswordReader, EnvironmentPasswordReader class TestInputPasswordReader(unittest.TestCase): """Test input password reader.""" def test_reader(self) -> None: """Test reader.""" input_password = "testpassword" with patch("getpass.getpass", return_value=input_password): received_password = InputPasswordReader.get_password("test_password") self.assertEqual(received_password, "testpassword") class TestEnvPasswordReader(unittest.TestCase): """Test environment password reader.""" @override def setUp(self) -> None: """Set up environment.""" env = StringIO("SSHECRET_test=secretthing") load_dotenv(stream=env) def test_env_loader(self) -> None: """Test environment loading.""" password = EnvironmentPasswordReader.get_password("test") self.assertEqual(password, "secretthing") if __name__ == "__main__": unittest.main()