diff options
author | Andreu Botella <andreu@andreubotella.com> | 2023-01-17 16:18:24 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-01-18 01:18:24 +0100 |
commit | 69ec45eac76c63ea973c68479ea4f0bbf58b29e9 (patch) | |
tree | 6e58f2eecc903f91981c695430dc64dca98fe7b6 /cli/tests/integration/cert_tests.rs | |
parent | 1a792f8805d835257302baf538505451b149d84c (diff) |
refactor(cli): Integrate standalone mode cert handling into `Flags` (#17419)
The way the standalone mode handles the `--cert` flag is different to
all other modes. This is because `--cert` takes a path to the
certificate file, which is directly added to the root cert store; except
for compile mode, where its byte contents are stored in the standalone
metadata, and they are added to the root cert store after the
`ProcState` is created.
This change instead changes `Flags::ca_file` (an `Option<String>`) into
`Flags::ca_data`, which can represent a `String` file path or a
`Vec<u8>` with the certificate contents. That way, standalone mode can
create a `ProcState` whose root cert store alreay contains the
certificate.
This change also adds a tests for certificates in standalone mode, since
there weren't any before.
This refactor will help with implementing web workers in standalone mode
in the future.
Diffstat (limited to 'cli/tests/integration/cert_tests.rs')
-rw-r--r-- | cli/tests/integration/cert_tests.rs | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/cli/tests/integration/cert_tests.rs b/cli/tests/integration/cert_tests.rs index 0a403c39a..9e0e810b0 100644 --- a/cli/tests/integration/cert_tests.rs +++ b/cli/tests/integration/cert_tests.rs @@ -112,6 +112,40 @@ fn cafile_fetch() { assert_eq!(out, ""); } +#[test] +fn cafile_compile() { + let _g = util::http_server(); + let dir = TempDir::new(); + let exe = if cfg!(windows) { + dir.path().join("cert.exe") + } else { + dir.path().join("cert") + }; + let output = util::deno_cmd() + .current_dir(util::testdata_path()) + .arg("compile") + .arg("--cert") + .arg("./tls/RootCA.pem") + .arg("--allow-net") + .arg("--output") + .arg(&exe) + .arg("./cert/cafile_ts_fetch.ts") + .stdout(std::process::Stdio::piped()) + .spawn() + .unwrap() + .wait_with_output() + .unwrap(); + assert!(output.status.success()); + let output = Command::new(exe) + .stdout(std::process::Stdio::piped()) + .spawn() + .unwrap() + .wait_with_output() + .unwrap(); + assert!(output.status.success()); + assert_eq!(output.stdout, b"[WILDCARD]\nHello\n") +} + #[flaky_test::flaky_test] fn cafile_install_remote_module() { let _g = util::http_server(); |