From ea6753e321daa074142e2f89619ad6923ba9f2c6 Mon Sep 17 00:00:00 2001 From: Pierre Le Fevre Date: Fri, 21 Nov 2025 22:02:34 +0100 Subject: [PATCH] fix tests --- src/manifests.rs | 26 +++++++++++++++++++------- tests/common/mod.rs | 2 +- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/src/manifests.rs b/src/manifests.rs index 4728b8e..727e2b8 100644 --- a/src/manifests.rs +++ b/src/manifests.rs @@ -33,17 +33,29 @@ pub(crate) async fn get_manifest_by_reference( headers: HeaderMap, ) -> Response { let host = &state.args.host; + let repository = format!("{}/{}", org, repo); + let clean_reference = reference.strip_prefix("sha256:").unwrap_or(&reference); - if auth::get(State(state.clone()), headers.clone()) - .await - .status() - != StatusCode::OK + // Check permission (Pull for manifest retrieval, tag-specific) + match auth::check_permission( + &state, + &headers, + &repository, + Some(clean_reference), + permissions::Action::Pull, + ) + .await { - return response::unauthorized(host); + Ok(_) => {} + Err(_) => { + return if auth::authenticate_user(&state, &headers).await.is_ok() { + response::forbidden() + } else { + response::unauthorized(host) + }; + } } - let clean_reference = reference.strip_prefix("sha256:").unwrap_or(&reference); - log::info!( "manifests/get_manifest_by_reference: org: {}, repo: {}, reference: {}", org, diff --git a/tests/common/mod.rs b/tests/common/mod.rs index 16fa7e6..ba5c26c 100644 --- a/tests/common/mod.rs +++ b/tests/common/mod.rs @@ -217,7 +217,7 @@ pub fn default_test_users() -> serde_json::Value { { "repository": "myorg/myrepo", "tag": "v*", - "actions": ["pull"] + "actions": ["pull", "push"] } ] } -- 2.51.2