summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authormo khan <mo@mokhan.ca>2025-06-24 16:41:03 -0600
committermo khan <mo@mokhan.ca>2025-06-24 16:41:03 -0600
commitd4e3bb8f30c4b9edeb392881bd7b4a6baf79d415 (patch)
tree442976b24367cffd0563ed13929a72b6a96c8c1d /src
parent85490a4cfa7f3836d3d2f1e7cbfe48b668aa484b (diff)
refactor: copy duplicate test helper method
Diffstat (limited to 'src')
-rw-r--r--src/authorization/check_service.rs59
-rw-r--r--src/lib.rs1
-rw-r--r--src/main.rs13
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;
diff --git a/src/lib.rs b/src/lib.rs
index c24db79b..210699b5 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -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))