refactor: harden audit filtering and management UI

This commit is contained in:
thakares committed 2026-07-24 17:36:14 +05:30
1 parent a969f9c571
commit 3d14061795
38 files changed
+507 -440

No files matched your search

+52
View File
@@ -224,3 +224,55 @@ fn test_rfc4180_csv_escaping_rules() {
assert_eq!(esc("with \"quotes\""), "\"with \"\"quotes\"\"\"");
assert_eq!(esc("multi\nline"), "\"multi\nline\"");
}
#[tokio::test]
async fn test_exact_resource_id_filter_excludes_generic_text_matches() {
let (provider, db_path) = setup_test_provider().await;
let tenant_id = "tenant-exact";
provider
.audit()
.insert(
&uuid::Uuid::new_v4().to_string(),
None,
None,
"tenant.updated",
"tenant",
Some(tenant_id),
"info",
None,
None,
Some("{}"),
)
.await
.unwrap();
provider
.audit()
.insert(
&uuid::Uuid::new_v4().to_string(),
None,
None,
"tenant.updated",
"tenant",
Some("other-tenant"),
"info",
None,
None,
Some(&format!("{{\"mentioned\":\"{tenant_id}\"}}")),
)
.await
.unwrap();
let filter = nx9_auth::db::models::AuditFilter {
resource_type: Some("tenant".into()),
resource_id: Some(tenant_id.into()),
limit: 50,
..Default::default()
};
assert_eq!(provider.audit().count_filtered(&filter).await.unwrap(), 1);
let entries = provider.audit().list_filtered(&filter).await.unwrap();
assert_eq!(entries.len(), 1);
assert_eq!(entries[0].resource_id.as_deref(), Some(tenant_id));
teardown_test_db(db_path).await;
}
+2 -2
View File
@@ -57,7 +57,7 @@ async fn test_tenant_user_listing_and_assignment() {
// Reassign user to Acme Org
provider
.users()
.update_user_tenant(&user.id, &tenant_id)
.reassign_user_tenant_with_audit(&user.id, &tenant_id, None, None, None)
.await
.expect("Tenant assignment should succeed");
@@ -251,7 +251,7 @@ async fn test_session_identity_immediately_reflects_tenant_reassignment() {
// 4. Reassign user to Tenant B
provider
.users()
.update_user_tenant(&user.id, &tenant_b)
.reassign_user_tenant_with_audit(&user.id, &tenant_b, None, None, None)
.await
.unwrap();