mecha10-core 0.6.2

Mecha10 core runtime and foundational types
Documentation
// Tests for mecha10_core::auth

use mecha10_core::auth::*;

#[test]
fn test_matches_pattern() {
    assert!(matches_pattern("*", "/anything"));
    assert!(matches_pattern("/sensors/*", "/sensors/camera"));
    assert!(matches_pattern("/sensors/*/rgb", "/sensors/camera/rgb"));
    assert!(!matches_pattern("/sensors/*", "/control/motor"));
    assert!(!matches_pattern("/sensors/camera", "/sensors/lidar"));
}

#[test]
fn test_policy_allows() {
    let policy = Policy::new("test")
        .allow_publish("/sensors/*")
        .allow_subscribe("/control/*");

    assert!(policy.allows(Permission::Publish, "/sensors/camera"));
    assert!(policy.allows(Permission::Subscribe, "/control/motor"));
    assert!(!policy.allows(Permission::Publish, "/control/motor"));
    assert!(!policy.allows(Permission::Subscribe, "/sensors/camera"));
}