Add tests to servercertdb

This commit is contained in:
2024-07-14 15:52:58 +02:00
parent 7c1e5122de
commit 4212e23680
2 changed files with 68 additions and 9 deletions

View File

@@ -1,12 +1,3 @@
use actix::prelude::*;
use futures::SinkExt;
use thiserror::Error;
use tracing::{error, info};
use uuid::Uuid;
use libbonknet::*;
use crate::dataconnmanager::{DataConnManager, StartDataBridge};
use crate::streamutils::*;
//! Pending Data Connect Database is where we store the Data Connection in creation.
//! Every row contains:
//! - The ServerConnID that the server will use (uuid)
@@ -17,6 +8,15 @@ use crate::streamutils::*;
//! When a row contains a valid ServerSocket and ClientSocket, then the row is removed and the
//! sockets moved to the Data Connection Manager
use actix::prelude::*;
use futures::SinkExt;
use thiserror::Error;
use tracing::{error, info};
use uuid::Uuid;
use libbonknet::*;
use crate::dataconnmanager::{DataConnManager, StartDataBridge};
use crate::streamutils::*;
#[derive(Error, Debug)]
pub enum PendingDataConnError {
#[error("Generic Failure")]

View File

@@ -88,4 +88,63 @@ impl Handler<UnregisterServer> for ServerCertDB {
fn handle(&mut self, msg: UnregisterServer, _ctx: &mut Self::Context) -> Self::Result {
self.db.remove(&msg.cert)
}
}
#[cfg(test)]
mod tests {
use super::*;
#[actix::test]
async fn emptydb_isnameregistered() {
let servercert_db = ServerCertDB::new().start();
assert!(!servercert_db.send(IsNameRegistered { name: "test".into() }).await.unwrap());
}
#[actix::test]
async fn emptyvec() {
let servercert_db = ServerCertDB::new().start();
assert!(servercert_db.send(RegisterServer { cert: vec![], name: "test".into() }).await.unwrap().is_ok());
assert!(servercert_db.send(IsNameRegistered { name: "test".into() }).await.unwrap());
assert_eq!(servercert_db.send(FetchName { cert: vec![] }).await.unwrap().unwrap(), "test");
assert_eq!(servercert_db.send(UnregisterServer { cert: vec![] }).await.unwrap().unwrap(), "test");
assert!(!servercert_db.send(IsNameRegistered { name: "test".into() }).await.unwrap());
assert!(servercert_db.send(FetchName { cert: vec![] }).await.unwrap().is_none());
assert!(servercert_db.send(UnregisterServer { cert: vec![] }).await.unwrap().is_none());
}
#[actix::test]
async fn normalcert() {
let servercert_db = ServerCertDB::new().start();
let cert = vec![112, 111, 114, 99, 111, 100, 105, 111];
assert!(servercert_db.send(RegisterServer { cert: cert.clone(), name: "test2".into() }).await.unwrap().is_ok());
assert!(servercert_db.send(IsNameRegistered { name: "test2".into() }).await.unwrap());
assert_eq!(servercert_db.send(FetchName { cert: cert.clone() }).await.unwrap().unwrap(), "test2");
assert_eq!(servercert_db.send(UnregisterServer { cert: cert.clone() }).await.unwrap().unwrap(), "test2");
assert!(!servercert_db.send(IsNameRegistered { name: "test2".into() }).await.unwrap());
assert!(servercert_db.send(FetchName { cert: cert.clone() }).await.unwrap().is_none());
assert!(servercert_db.send(UnregisterServer { cert: cert.clone() }).await.unwrap().is_none());
}
#[actix::test]
async fn cert2_remains_after_delete_cert1() {
let servercert_db = ServerCertDB::new().start();
let cert1 = vec![112, 111, 114, 99, 111, 100, 105, 111];
let cert2 = vec![67, 65, 78, 68, 69, 68, 73, 79];
assert!(servercert_db.send(RegisterServer { cert: cert1.clone(), name: "test3".into() }).await.unwrap().is_ok());
assert!(servercert_db.send(IsNameRegistered { name: "test3".into() }).await.unwrap());
assert_eq!(servercert_db.send(FetchName { cert: cert1.clone() }).await.unwrap().unwrap(), "test3");
assert!(servercert_db.send(RegisterServer { cert: cert2.clone(), name: "test4".into() }).await.unwrap().is_ok());
assert!(servercert_db.send(IsNameRegistered { name: "test4".into() }).await.unwrap());
assert_eq!(servercert_db.send(FetchName { cert: cert2.clone() }).await.unwrap().unwrap(), "test4");
assert_eq!(servercert_db.send(UnregisterServer { cert: cert1.clone() }).await.unwrap().unwrap(), "test3");
assert!(!servercert_db.send(IsNameRegistered { name: "test3".into() }).await.unwrap());
assert!(servercert_db.send(FetchName { cert: cert1.clone() }).await.unwrap().is_none());
assert!(servercert_db.send(UnregisterServer { cert: cert1.clone() }).await.unwrap().is_none());
assert!(servercert_db.send(RegisterServer { cert: cert2.clone(), name: "test4".into() }).await.unwrap().is_err());
assert!(servercert_db.send(IsNameRegistered { name: "test4".into() }).await.unwrap());
assert_eq!(servercert_db.send(FetchName { cert: cert2.clone() }).await.unwrap().unwrap(), "test4");
}
}