Skip to main content

ares_types/
lib.rs

1pub mod models;
2pub mod types;
3pub use models::{
4    normalize_api_key_scope, ApiKey, QuotaExceeded, Tenant, TenantContext, TenantQuota, TenantTier,
5    API_KEY_MAX_TTL_DAYS, API_KEY_SCOPE_FULL, API_KEY_SCOPE_INGEST,
6};
7pub use types::{AppError, ErrorCode, Result};
8
9#[cfg(test)]
10mod tests {
11    use super::{
12        ApiKey, AppError, ErrorCode, QuotaExceeded, Result, Tenant, TenantContext, TenantQuota,
13        TenantTier,
14    };
15
16    #[test]
17    fn test_public_reexports_are_usable() {
18        let tier = TenantTier::Free;
19        let quota = TenantQuota::from_tier(&tier);
20        let tenant = Tenant::new("id".into(), "name".into(), tier);
21        let ctx = TenantContext::new(tenant.id.clone(), tier);
22        let _key = ApiKey::new(
23            "k".into(),
24            tenant.id,
25            "hash".into(),
26            "prefix".into(),
27            "key".into(),
28        );
29        let err = AppError::NotFound("missing".into());
30        assert!(matches!(err.code(), ErrorCode::NotFound));
31        let result: Result<()> = Err(err);
32        assert!(result.is_err());
33        assert_eq!(ctx.quota.requests_per_month, quota.requests_per_month);
34        assert_eq!(
35            QuotaExceeded::Monthly.message(),
36            "Monthly request quota exceeded"
37        );
38    }
39}