From d4e3bb8f30c4b9edeb392881bd7b4a6baf79d415 Mon Sep 17 00:00:00 2001 From: mo khan Date: Tue, 24 Jun 2025 16:41:03 -0600 Subject: refactor: copy duplicate test helper method --- src/authorization/check_service.rs | 59 ++++++++++++++++---------------------- 1 file changed, 24 insertions(+), 35 deletions(-) (limited to 'src/authorization') diff --git a/src/authorization/check_service.rs b/src/authorization/check_service.rs index a4d0ec7b..c0a05e21 100644 --- a/src/authorization/check_service.rs +++ b/src/authorization/check_service.rs @@ -36,51 +36,38 @@ impl envoy_types::ext_authz::v3::pb::Authorization for CheckService { #[cfg(test)] mod tests { - use super::*; use super::super::cedar_authorizer::CedarAuthorizer; + use super::*; use envoy_types::ext_authz::v3::pb::{Authorization, CheckRequest}; - use envoy_types::pb::envoy::service::auth::v3::{AttributeContext, attribute_context}; + use envoy_types::pb::envoy::service::auth::v3::AttributeContext; + use envoy_types::pb::envoy::service::auth::v3::attribute_context::{HttpRequest, Request}; use std::collections::HashMap; use std::sync::Arc; - use tonic::Request; - - fn create_test_request_with_headers(headers: HashMap) -> Request { - let http_request = attribute_context::HttpRequest { - headers, - ..Default::default() - }; - - let request_context = attribute_context::Request { - http: Some(http_request), - ..Default::default() - }; - - let attributes = AttributeContext { - request: Some(request_context), - ..Default::default() - }; - - let check_request = CheckRequest { - attributes: Some(attributes), - ..Default::default() - }; - Request::new(check_request) + pub fn create_request(f: impl std::ops::FnOnce(&mut HttpRequest)) -> CheckRequest { + please::build_with(|item: &mut CheckRequest| { + item.attributes = Some(please::build_with(|item: &mut AttributeContext| { + item.request = Some(please::build_with(|item: &mut Request| { + item.http = Some(please::build_with(|item: &mut HttpRequest| f(item))); + })); + })); + }) } - fn create_headers_with_auth(auth_value: &str) -> HashMap { - let mut headers = HashMap::new(); - headers.insert("authorization".to_string(), auth_value.to_string()); - headers + pub fn create_token() -> String { + return String::from("valid-token"); } #[tokio::test] async fn test_check_allows_valid_bearer_token() { - let token = String::from("valid-token"); - let authorizer = Arc::new(CedarAuthorizer::new()); - let server = CheckService::new(authorizer); - let headers = create_headers_with_auth(&format!("Bearer {}", token)); - let request = create_test_request_with_headers(headers); + let token = create_token(); + let server = CheckService::new(Arc::new(CedarAuthorizer::new())); + + let mut headers = HashMap::new(); + headers.insert("authorization".to_string(), format!("Bearer {}", token)); + let request = tonic::Request::new(create_request(|item: &mut HttpRequest| { + item.headers = headers; + })); let response = server.check(request).await; @@ -95,7 +82,9 @@ mod tests { async fn test_check_denies_invalid_bearer_token() { let authorizer = Arc::new(CedarAuthorizer::new()); let server = CheckService::new(authorizer); - let request = create_test_request_with_headers(HashMap::new()); + let request = tonic::Request::new(create_request(|item: &mut HttpRequest| { + item.headers = HashMap::new(); + })); let response = server.check(request).await; -- cgit v1.2.3