use crate::phoenix_request::{
PRequestParam,
PResponseParam,
PhoenixRequestStream,
PhoenixRequestMockStream,
PhoenixRequestServer,
PhoenixRequestMockServer
};
pub struct PEmptyRequestStream;
impl PhoenixRequestStream for PEmptyRequestStream{
fn recv_request(&mut self, _request: &mut PRequestParam) -> bool {
return false;
}
fn send_response(&mut self, _response: &PResponseParam){
}
}
impl PhoenixRequestMockStream for PEmptyRequestStream {
fn set_is_record(&mut self, _is_mock_record: bool){}
fn set_prefix(&mut self, _prefix: &String){}
}
pub struct PEmptyRequestServer;
impl PhoenixRequestServer for PEmptyRequestServer {
type Stream = PEmptyRequestStream;
fn new(_hostname: &String, _port: u16) -> Self{
PEmptyRequestServer{}
}
fn accept(&self) -> Self::Stream{
PEmptyRequestStream{}
}
}
impl PhoenixRequestMockServer for PEmptyRequestServer {
fn set_is_record(&mut self, _is_mock_record: bool){}
fn set_prefix(&mut self, _prefix: &String){}
}
#[cfg(test)]
mod tests {
use super::*;
use crate::pmimetype::PMimeType;
use crate::phoenix_generic_request_server::{
PRequestMode,
PGenericRequestStream,
PGenericRequestServer,
};
#[test]
fn test_empty_generic_request(){
let mut server: PGenericRequestServer<PEmptyRequestServer, PEmptyRequestServer> = PGenericRequestServer::new(&String::from("127.0.0.1"), 8080, PRequestMode::NoMock);
assert_eq!(server.get_mode(), PRequestMode::NoMock);
server.set_mode(PRequestMode::Mock);
assert_eq!(server.get_mode(), PRequestMode::Mock);
server.set_prefix(&String::from("some_mock_prefix_"));
let mut stream: PGenericRequestStream<PEmptyRequestStream, PEmptyRequestStream> = server.accept();
let mut request: PRequestParam = Default::default();
assert_eq!(stream.recv_request(&mut request), false);
assert_eq!(stream.get_mode(), PRequestMode::Mock);
stream.set_mode(PRequestMode::NoMock);
assert_eq!(stream.get_mode(), PRequestMode::NoMock);
let response = PResponseParam::new(String::from("HTTP/1.1 200 OK"), PMimeType::TextPlain, &String::from("some html page"));
stream.send_response(&response);
}
}