use serde::Deserialize;
use crate::protocol::headset::HeadsetInfo;
#[derive(Debug, Clone, Deserialize)]
pub struct SessionInfo {
pub id: String,
pub status: String,
pub owner: String,
pub license: String,
#[serde(rename = "appId")]
pub app_id: String,
pub started: String,
pub stopped: Option<String>,
pub streams: Vec<String>,
#[serde(rename = "recordIds")]
pub record_ids: Vec<String>,
pub recording: bool,
pub headset: Option<HeadsetInfo>,
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_deserialize_session_info() {
let json = r#"{
"id": "session-uuid-456",
"status": "activated",
"owner": "user123",
"license": "license-abc",
"appId": "com.example.app",
"started": "2024-01-15T10:30:00Z",
"streams": ["eeg", "dev"],
"recordIds": [],
"recording": false
}"#;
let session: SessionInfo = serde_json::from_str(json).unwrap();
assert_eq!(session.id, "session-uuid-456");
assert_eq!(session.status, "activated");
assert_eq!(session.owner, "user123");
assert_eq!(session.license, "license-abc");
assert_eq!(session.streams, vec!["eeg", "dev"]);
assert!(!session.recording);
assert!(session.stopped.is_none());
assert!(session.headset.is_none());
}
}