diff options
| author | mo khan <mo@mokhan.ca> | 2025-06-24 16:41:03 -0600 |
|---|---|---|
| committer | mo khan <mo@mokhan.ca> | 2025-06-24 16:41:03 -0600 |
| commit | d4e3bb8f30c4b9edeb392881bd7b4a6baf79d415 (patch) | |
| tree | 442976b24367cffd0563ed13929a72b6a96c8c1d | |
| parent | 85490a4cfa7f3836d3d2f1e7cbfe48b668aa484b (diff) | |
refactor: copy duplicate test helper method
| -rw-r--r-- | src/authorization/check_service.rs | 59 | ||||
| -rw-r--r-- | src/lib.rs | 1 | ||||
| -rw-r--r-- | src/main.rs | 13 |
3 files changed, 30 insertions, 43 deletions
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<String, String>) -> Request<CheckRequest> { - 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<String, String> { - 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; @@ -1,3 +1,2 @@ pub mod authorization; - pub use authorization::{Authorizer, CedarAuthorizer, CheckService}; diff --git a/src/main.rs b/src/main.rs index 8eb7b5ef..8fa32b33 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,18 +1,17 @@ -use envoy_types::ext_authz::v3::pb::AuthorizationServer; -use std::sync::Arc; -use tonic::transport::Server; - pub mod authorization; -use authorization::{CedarAuthorizer, CheckService}; #[tokio::main] async fn main() -> Result<(), Box<dyn std::error::Error>> { + use envoy_types::ext_authz::v3::pb::AuthorizationServer; + use std::sync::Arc; + use tonic::transport::Server; + let addr = "[::1]:50051".parse()?; let (_health_reporter, health_service) = tonic_health::server::health_reporter(); - let authorizer = Arc::new(CedarAuthorizer::new()); - let check_service = CheckService::new(authorizer); + let authorizer = Arc::new(authorization::CedarAuthorizer::new()); + let check_service = authorization::CheckService::new(authorizer); Server::builder() .add_service(AuthorizationServer::new(check_service)) |
