diff options
| author | mo khan <mo@mokhan.ca> | 2025-06-25 14:20:33 -0600 |
|---|---|---|
| committer | mo khan <mo@mokhan.ca> | 2025-06-25 14:20:33 -0600 |
| commit | d099e77eaa8e51eef14cd775234bfd4b12098a4c (patch) | |
| tree | 5e85093c5730908ddc30a4ea003feac71346a111 | |
| parent | 654b31287617c56f8e148faabc63916e316f56c6 (diff) | |
test: move cedar_authorizer tests to integration test suite
| -rw-r--r-- | src/authorization/cedar_authorizer.rs | 88 | ||||
| -rw-r--r-- | tests/authorization/cedar_authorizer_test.rs | 78 | ||||
| -rw-r--r-- | tests/authorization/mod.rs | 1 | ||||
| -rw-r--r-- | tests/integration_tests.rs | 1 |
4 files changed, 80 insertions, 88 deletions
diff --git a/src/authorization/cedar_authorizer.rs b/src/authorization/cedar_authorizer.rs index 19886222..fb85012e 100644 --- a/src/authorization/cedar_authorizer.rs +++ b/src/authorization/cedar_authorizer.rs @@ -113,91 +113,3 @@ impl CedarAuthorizer { .map_err(|e| Box::new(e) as Box<dyn std::error::Error>) } } - -#[cfg(test)] -mod tests { - use super::*; - 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; - - 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))); - })); - })); - }) - } - - #[test] - fn test_cedar_authorizer_allows_valid_token() { - let authorizer = CedarAuthorizer::new(); - let mut headers = HashMap::new(); - headers.insert( - "authorization".to_string(), - "Bearer valid-token".to_string(), - ); - let request = create_request(|item: &mut HttpRequest| { - item.headers = headers; - }); - - let result = authorizer.authorize(request); - assert!(result); - } - - #[test] - fn test_cedar_authorizer_denies_invalid_token() { - let authorizer = CedarAuthorizer::new(); - let mut headers = HashMap::new(); - headers.insert( - "authorization".to_string(), - "Bearer invalid-token".to_string(), - ); - let request = create_request(|item: &mut HttpRequest| { - item.headers = headers; - }); - - let result = authorizer.authorize(request); - assert!(!result); - } - - #[test] - fn test_cedar_authorizer_denies_missing_header() { - let authorizer = CedarAuthorizer::new(); - let headers = HashMap::new(); - let request = create_request(|item: &mut HttpRequest| { - item.headers = headers; - }); - - let result = authorizer.authorize(request); - assert!(!result); - } - - #[test] - fn test_cedar_authorizer_allows_static_assets() { - let authorizer = CedarAuthorizer::new(); - let mut headers = HashMap::new(); - headers.insert(":path".to_string(), "/public/style.css".to_string()); - let request = create_request(|item: &mut HttpRequest| { - item.headers = headers; - }); - - let result = authorizer.authorize(request); - assert!(result); - } - - #[test] - fn test_cedar_authorizer_allows_js_assets() { - let authorizer = CedarAuthorizer::new(); - let mut headers = HashMap::new(); - headers.insert(":path".to_string(), "/app.js".to_string()); - let request = create_request(|item: &mut HttpRequest| { - item.headers = headers; - }); - - let result = authorizer.authorize(request); - assert!(result); - } -} diff --git a/tests/authorization/cedar_authorizer_test.rs b/tests/authorization/cedar_authorizer_test.rs new file mode 100644 index 00000000..2ed3dd68 --- /dev/null +++ b/tests/authorization/cedar_authorizer_test.rs @@ -0,0 +1,78 @@ +#[cfg(test)] +mod tests { + use crate::common::create_request; + use authzd::Authorizer; + use authzd::CedarAuthorizer; + use envoy_types::pb::envoy::service::auth::v3::attribute_context::HttpRequest; + use std::collections::HashMap; + + #[test] + fn test_cedar_authorizer_allows_valid_token() { + let authorizer = CedarAuthorizer::new(); + let mut headers = HashMap::new(); + headers.insert( + "authorization".to_string(), + "Bearer valid-token".to_string(), + ); + let request = create_request(|item: &mut HttpRequest| { + item.headers = headers; + }); + + let result = authorizer.authorize(request); + assert!(result); + } + + #[test] + fn test_cedar_authorizer_denies_invalid_token() { + let authorizer = CedarAuthorizer::new(); + let mut headers = HashMap::new(); + headers.insert( + "authorization".to_string(), + "Bearer invalid-token".to_string(), + ); + let request = create_request(|item: &mut HttpRequest| { + item.headers = headers; + }); + + let result = authorizer.authorize(request); + assert!(!result); + } + + #[test] + fn test_cedar_authorizer_denies_missing_header() { + let authorizer = CedarAuthorizer::new(); + let headers = HashMap::new(); + let request = create_request(|item: &mut HttpRequest| { + item.headers = headers; + }); + + let result = authorizer.authorize(request); + assert!(!result); + } + + #[test] + fn test_cedar_authorizer_allows_static_assets() { + let authorizer = CedarAuthorizer::new(); + let mut headers = HashMap::new(); + headers.insert(":path".to_string(), "/public/style.css".to_string()); + let request = create_request(|item: &mut HttpRequest| { + item.headers = headers; + }); + + let result = authorizer.authorize(request); + assert!(result); + } + + #[test] + fn test_cedar_authorizer_allows_js_assets() { + let authorizer = CedarAuthorizer::new(); + let mut headers = HashMap::new(); + headers.insert(":path".to_string(), "/app.js".to_string()); + let request = create_request(|item: &mut HttpRequest| { + item.headers = headers; + }); + + let result = authorizer.authorize(request); + assert!(result); + } +} diff --git a/tests/authorization/mod.rs b/tests/authorization/mod.rs new file mode 100644 index 00000000..a8aab73a --- /dev/null +++ b/tests/authorization/mod.rs @@ -0,0 +1 @@ +mod cedar_authorizer_test; diff --git a/tests/integration_tests.rs b/tests/integration_tests.rs index 9bbeaea5..2269c7f7 100644 --- a/tests/integration_tests.rs +++ b/tests/integration_tests.rs @@ -2,6 +2,7 @@ use authzd::{CedarAuthorizer, CheckService}; use envoy_types::ext_authz::v3::pb::Authorization; use std::sync::Arc; +mod authorization; mod common; #[tokio::test] |
