summaryrefslogtreecommitdiff
path: root/tests/util
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2024-05-23 22:26:23 +0100
committerGitHub <noreply@github.com>2024-05-23 23:26:23 +0200
commit959739f609dddacde3bbe9ecede2f409214fb34c (patch)
tree04d1776efbd3561205829f78288d26b6e14c3429 /tests/util
parent5de30c53239ac74843725d981afc0bb8c45bdf16 (diff)
FUTURE: initial support for .npmrc file (#23560)
This commit adds initial support for ".npmrc" files. Currently we only discover ".npmrc" files next to "package.json" files and discovering these files in user home dir is left for a follow up. This pass supports "_authToken" and "_auth" configuration for providing authentication. LSP support has been left for a follow up PR. Towards https://github.com/denoland/deno/issues/16105
Diffstat (limited to 'tests/util')
-rw-r--r--tests/util/server/src/lib.rs2
-rw-r--r--tests/util/server/src/npm.rs13
-rw-r--r--tests/util/server/src/servers/mod.rs4
-rw-r--r--tests/util/server/src/servers/npm_registry.rs40
4 files changed, 56 insertions, 3 deletions
diff --git a/tests/util/server/src/lib.rs b/tests/util/server/src/lib.rs
index ee5348049..a7f4fb447 100644
--- a/tests/util/server/src/lib.rs
+++ b/tests/util/server/src/lib.rs
@@ -307,7 +307,7 @@ async fn get_tcp_listener_stream(
futures::stream::select_all(listeners)
}
-pub const TEST_SERVERS_COUNT: usize = 28;
+pub const TEST_SERVERS_COUNT: usize = 30;
#[derive(Default)]
struct HttpServerCount {
diff --git a/tests/util/server/src/npm.rs b/tests/util/server/src/npm.rs
index 7cb6a04f2..363a45d7e 100644
--- a/tests/util/server/src/npm.rs
+++ b/tests/util/server/src/npm.rs
@@ -30,7 +30,6 @@ pub static PUBLIC_TEST_NPM_REGISTRY: Lazy<TestNpmRegistry> = Lazy::new(|| {
)
});
-// TODO: rewrite to use config
pub static PRIVATE_TEST_NPM_REGISTRY_1: Lazy<TestNpmRegistry> =
Lazy::new(|| {
TestNpmRegistry::new(
@@ -43,6 +42,18 @@ pub static PRIVATE_TEST_NPM_REGISTRY_1: Lazy<TestNpmRegistry> =
)
});
+pub static PRIVATE_TEST_NPM_REGISTRY_2: Lazy<TestNpmRegistry> =
+ Lazy::new(|| {
+ TestNpmRegistry::new(
+ NpmRegistryKind::Private,
+ &format!(
+ "http://localhost:{}",
+ crate::servers::PRIVATE_NPM_REGISTRY_2_PORT
+ ),
+ "npm-private2",
+ )
+ });
+
pub enum NpmRegistryKind {
Public,
Private,
diff --git a/tests/util/server/src/servers/mod.rs b/tests/util/server/src/servers/mod.rs
index 4c86eb451..1b6e2f71d 100644
--- a/tests/util/server/src/servers/mod.rs
+++ b/tests/util/server/src/servers/mod.rs
@@ -90,6 +90,7 @@ const JSR_REGISTRY_SERVER_PORT: u16 = 4250;
const PROVENANCE_MOCK_SERVER_PORT: u16 = 4251;
pub(crate) const PUBLIC_NPM_REGISTRY_PORT: u16 = 4260;
pub(crate) const PRIVATE_NPM_REGISTRY_1_PORT: u16 = 4261;
+pub(crate) const PRIVATE_NPM_REGISTRY_2_PORT: u16 = 4262;
// Use the single-threaded scheduler. The hyper server is used as a point of
// comparison for the (single-threaded!) benchmarks in cli/bench. We're not
@@ -140,6 +141,8 @@ pub async fn run_all_servers() {
npm_registry::public_npm_registry(PUBLIC_NPM_REGISTRY_PORT);
let private_npm_registry_1_server_futs =
npm_registry::private_npm_registry1(PRIVATE_NPM_REGISTRY_1_PORT);
+ let private_npm_registry_2_server_futs =
+ npm_registry::private_npm_registry2(PRIVATE_NPM_REGISTRY_2_PORT);
let mut futures = vec![
redirect_server_fut.boxed_local(),
@@ -169,6 +172,7 @@ pub async fn run_all_servers() {
];
futures.extend(npm_registry_server_futs);
futures.extend(private_npm_registry_1_server_futs);
+ futures.extend(private_npm_registry_2_server_futs);
assert_eq!(futures.len(), TEST_SERVERS_COUNT);
diff --git a/tests/util/server/src/servers/npm_registry.rs b/tests/util/server/src/servers/npm_registry.rs
index eadfafe02..7e5547b5b 100644
--- a/tests/util/server/src/servers/npm_registry.rs
+++ b/tests/util/server/src/servers/npm_registry.rs
@@ -33,6 +33,12 @@ pub fn public_npm_registry(port: u16) -> Vec<LocalBoxFuture<'static, ()>> {
}
const PRIVATE_NPM_REGISTRY_AUTH_TOKEN: &str = "private-reg-token";
+const PRIVATE_NPM_REGISTRY_2_AUTH_TOKEN: &str = "private-reg-token2";
+
+// `deno:land` encoded using base64
+const PRIVATE_NPM_REGISTRY_AUTH_BASE64: &str = "ZGVubzpsYW5k";
+// `deno:land2` encoded using base64
+const PRIVATE_NPM_REGISTRY_2_AUTH_BASE64: &str = "ZGVubzpsYW5kMg==";
pub fn private_npm_registry1(port: u16) -> Vec<LocalBoxFuture<'static, ()>> {
run_npm_server(
@@ -42,6 +48,14 @@ pub fn private_npm_registry1(port: u16) -> Vec<LocalBoxFuture<'static, ()>> {
)
}
+pub fn private_npm_registry2(port: u16) -> Vec<LocalBoxFuture<'static, ()>> {
+ run_npm_server(
+ port,
+ "npm private registry server error",
+ private_npm_registry2_handler,
+ )
+}
+
fn run_npm_server<F, S>(
port: u16,
error_msg: &'static str,
@@ -91,7 +105,9 @@ async fn private_npm_registry1_handler(
.get("authorization")
.and_then(|x| x.to_str().ok())
.unwrap_or_default();
- if auth != format!("Bearer {}", PRIVATE_NPM_REGISTRY_AUTH_TOKEN) {
+ if auth != format!("Bearer {}", PRIVATE_NPM_REGISTRY_AUTH_TOKEN)
+ && auth != format!("Basic {}", PRIVATE_NPM_REGISTRY_AUTH_BASE64)
+ {
return Ok(
Response::builder()
.status(StatusCode::UNAUTHORIZED)
@@ -103,6 +119,28 @@ async fn private_npm_registry1_handler(
handle_req_for_registry(req, &npm::PRIVATE_TEST_NPM_REGISTRY_1).await
}
+async fn private_npm_registry2_handler(
+ req: Request<hyper::body::Incoming>,
+) -> Result<Response<UnsyncBoxBody<Bytes, Infallible>>, anyhow::Error> {
+ let auth = req
+ .headers()
+ .get("authorization")
+ .and_then(|x| x.to_str().ok())
+ .unwrap_or_default();
+ if auth != format!("Bearer {}", PRIVATE_NPM_REGISTRY_2_AUTH_TOKEN)
+ && auth != format!("Basic {}", PRIVATE_NPM_REGISTRY_2_AUTH_BASE64)
+ {
+ return Ok(
+ Response::builder()
+ .status(StatusCode::UNAUTHORIZED)
+ .body(empty_body())
+ .unwrap(),
+ );
+ }
+
+ handle_req_for_registry(req, &npm::PRIVATE_TEST_NPM_REGISTRY_2).await
+}
+
async fn handle_req_for_registry(
req: Request<Incoming>,
test_npm_registry: &npm::TestNpmRegistry,