use crate::protocol::*; use server_framework::{Decode, Encode}; #[test] fn request_capability_roundtrip() { let req = PermissionRequest::RequestCapability { process: 5, kind: CapabilityKind::Camera }; assert_eq!(PermissionRequest::decode(req.encode()), Some(req)); } #[test] fn revoke_capability_roundtrip() { let req = PermissionRequest::RevokeCapability { process: 3, kind: CapabilityKind::Network }; assert_eq!(PermissionRequest::decode(req.encode()), Some(req)); } #[test] fn check_capability_roundtrip() { let req = PermissionRequest::CheckCapability { process: 1, kind: CapabilityKind::Storage }; assert_eq!(PermissionRequest::decode(req.encode()), Some(req)); } #[test] fn list_granted_roundtrip() { let req = PermissionRequest::ListGranted { process: 7 }; assert_eq!(PermissionRequest::decode(req.encode()), Some(req)); } #[test] fn all_kinds_roundtrip() { let kinds = [ CapabilityKind::Display, CapabilityKind::Input, CapabilityKind::AudioPlayback, CapabilityKind::AudioCapture, CapabilityKind::Camera, CapabilityKind::Storage, CapabilityKind::Network, CapabilityKind::Gps, CapabilityKind::Bluetooth, ]; for kind in kinds { let req = PermissionRequest::RequestCapability { process: 0, kind }; assert_eq!(PermissionRequest::decode(req.encode()), Some(req)); } } #[test] fn response_roundtrips() { let responses = [ PermissionResponse::Granted, PermissionResponse::Denied, PermissionResponse::Revoked, PermissionResponse::HasCapability(true), PermissionResponse::HasCapability(false), PermissionResponse::GrantedList(0b101), ]; for resp in responses { assert_eq!(PermissionResponse::decode(resp.encode()), Some(resp)); } } #[test] fn invalid_request_returns_none() { assert!(PermissionRequest::decode([99, 0, 0, 0]).is_none()); }