import pathlib import poetry_dev import pytest import subprocess from typer.testing import CliRunner from poetry_dev import app runner = CliRunner() def test_path(tmp_path: pathlib.Path, monkeypatch): bar_pyproject_toml = tmp_path / "bar_pyproject_toml" bar_pyproject_toml.write_text("""[tool.poetry] name = "bar" version = "0.2.0" [tool.poetry.dependencies] python = "^3.7" foo = "0.1.0" [build-system] requires = ["poetry>=0.12"] build-backend = "poetry.masonry.api" """) foo_pyproject_toml = tmp_path / "foo_pyproject_toml" foo_pyproject_toml.write_text("""[tool.poetry]
def test_build(runner: CliRunner): with runner.isolated_filesystem() as path: result = runner.invoke(app, "build") assert result.exit_code == 0 index = Path(path) / "dist" / "index.html" assert index.exists()
def test_serve(runner: CliRunner): with mock.patch("main.serve") as mock_serve: result = runner.invoke(app, "serve") assert result.exit_code == 0 mock_serve.assert_called_once_with()
def runner(): yield CliRunner()
def test_version(runner: CliRunner): with runner.isolated_filesystem(): result = runner.invoke(app, "version") assert result.exit_code == 0 assert result.stdout == "Version: 0.1.0\n"
def test_start_click_cli() -> None: runner = CliRunner() result = runner.invoke(app, ["hilfe"]) assert "Hilfe!" in result.stdout assert result.exit_code == 0
def test_command_line_interface(): """Test the CLI.""" runner = CliRunner() result = runner.invoke(tools.APP, ["--help"]) assert result.exit_code == 0 assert "toolcraft" in result.output
def setUpClass(cls) -> None: cls.runner = CliRunner()
def runner(): return CliRunner(mix_stderr=False)
def test_refuse_overwrite(tmp_path): (tmp_path / ".nbautoexport").touch() runner = CliRunner() result = runner.invoke(app, ["configure", str(tmp_path)]) assert result.exit_code == 1 assert "Detected existing autoexport configuration at" in result.output
def test_cli_version(self): runner = CliRunner() res = runner.invoke(cli.app, ["version"]) assert res.exit_code == 0 assert res.output == f"hue-api version: {__version__}\n"
def test_configure_no_directory_error(): result = CliRunner().invoke(app, ["configure"]) assert result.exit_code == 2 assert "Error: Missing argument 'DIRECTORY'." in result.stdout
def test_configure_no_jupyter_config_warning(tmp_path, monkeypatch): monkeypatch.setenv("JUPYTER_CONFIG_DIR", str(tmp_path)) result = CliRunner().invoke(app, ["configure", str(tmp_path)]) assert result.exit_code == 0 assert "Warning: nbautoexport is not properly installed with Jupyter." in result.output
class TestGenerateToken(TestCase): mock_config_patcher = None mock_cobald_config_loader_patcher = None @classmethod def setUpClass(cls) -> None: cls.mock_config_patcher = patch("tardis.rest.app.security.Configuration") cls.mock_config = cls.mock_config_patcher.start() cls.mock_cobald_config_loader_patcher = patch( "tardis.rest.token_generator.generate_token.load" ) cls.mock_cobald_config_loader = cls.mock_cobald_config_loader_patcher.start() @classmethod def tearDownClass(cls) -> None: cls.mock_config_patcher.stop() cls.mock_cobald_config_loader_patcher.stop() def setUp(self) -> None: self.app = Typer() self.app.command()(generate_token) self.runner = CliRunner() config = self.mock_config.return_value config.Services.restapi.secret_key = ( "752e003f636f402cc23728e185ce8c9eef27b7e02cf509b3015f7757e625b8e4" ) config.Services.restapi.algorithm = "HS256" @staticmethod def clear_lru_cache(): get_algorithm.cache_clear() get_secret_key.cache_clear() def test_generate_token(self): result = self.runner.invoke(self.app) self.assertNotEqual(result.exit_code, 0) self.assertTrue("Missing option '--user-name'" in result.stdout) result = self.runner.invoke(self.app, ["--user-name=test"]) self.assertEqual(result.exit_code, 1) self.assertTrue( "Either a config-file or a secret-key and algorithm needs to be specified!" in result.stdout ) expected_token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ0ZXN0Iiwic2NvcGVzIjpbInJlc291cmNlczpnZXQiXX0.JtjroDVX2FlHI-DFO3XErRutDjvcZwbZF4Bqx736JTc" # noqa: B950 result = self.runner.invoke( self.app, [ "--user-name=test", "--algorithm=HS256", "--secret-key=752e003f636f402cc23728e185ce8c9eef27b7e02cf509b3015f7757e625b8e4", # noqa: B950 ], ) self.assertEqual(result.exit_code, 0) self.assertEqual(result.stdout.strip(), expected_token) self.clear_lru_cache() result = self.runner.invoke( self.app, ["--user-name=test", "--config-file=test.yml"] ) self.mock_cobald_config_loader.assert_called_once_with("test.yml") self.assertEqual(result.exit_code, 0) self.assertEqual(result.stdout.strip(), expected_token)
""" Regenerate golden-master """ import shutil from pathlib import Path from typer.testing import CliRunner from openapi_python_client.cli import app if __name__ == "__main__": runner = CliRunner() openapi_path = Path(__file__).parent / "fastapi_app" / "openapi.json" gm_path = Path(__file__).parent / "golden-master" shutil.rmtree(gm_path, ignore_errors=True) output_path = Path.cwd() / "my-test-api-client" shutil.rmtree(output_path, ignore_errors=True) config_path = Path(__file__).parent / "config.yml" result = runner.invoke( app, [f"--config={config_path}", "generate", f"--path={openapi_path}"]) if result.stdout: print(result.stdout) if result.exception: raise result.exception output_path.rename(gm_path)
from pathlib import Path from typer.testing import CliRunner from pipenv_poetry_migrate import __version__ from pipenv_poetry_migrate.cli import app runner = CliRunner(mix_stderr=False) def test_main(pipfile: Path, pyproject_toml: Path): argv = ["-f", str(pipfile), "-t", str(pyproject_toml), "-n"] result = runner.invoke(app, argv) assert result.exit_code == 0 assert result.stdout != "" def test_main_show_version(): argv = ["-v"] result = runner.invoke(app, argv) assert result.exit_code == 0 assert __version__ in result.stdout assert result.stderr == "" def test_main_raise_pipfile_not_found_error(pyproject_toml: Path): argv = ["-f", "not_found.toml", "-t", str(pyproject_toml), "-n"] result = runner.invoke(app, argv)