Add tests to servercertdb
This commit is contained in:
@@ -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")]
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user