Classify plugin permission risk

This commit is contained in:
2026-05-07 22:38:19 -04:00
parent cb3ac30b89
commit 9e6cd216b0
3 changed files with 61 additions and 3 deletions
+15 -1
View File
@@ -1,7 +1,7 @@
use std::{error::Error, io};
use ely_domain::{
DomainError, PluginContributionPoint, PluginManifest, PluginPermission,
DomainError, PluginContributionPoint, PluginManifest, PluginPermission, PluginPermissionRisk,
PluginSignatureAlgorithm,
};
@@ -33,6 +33,20 @@ fn parses_signed_plugin_manifest() -> Result<(), Box<dyn Error>> {
Ok(())
}
#[test]
fn classifies_plugin_permission_risk_for_separate_confirmation() -> Result<(), Box<dyn Error>> {
let manifest = PluginManifest::from_toml(valid_manifest().as_str())?;
let high_risk_permissions = manifest.high_risk_permissions().collect::<Vec<_>>();
assert!(high_risk_permissions.is_empty());
assert_eq!(PluginPermission::PageMetadata.risk(), PluginPermissionRisk::Standard);
assert_eq!(PluginPermission::UiCommand.risk(), PluginPermissionRisk::Standard);
assert_eq!(PluginPermission::HistoryRead.risk(), PluginPermissionRisk::High);
assert!(PluginPermission::PageScript.requires_separate_confirmation());
assert!(PluginPermission::FilesystemWrite.requires_separate_confirmation());
Ok(())
}
#[test]
fn rejects_unknown_plugin_permission() -> Result<(), Box<dyn Error>> {
let manifest = valid_manifest().replace("page:metadata", "tabs:admin");