mirror of
https://github.com/actix/actix-extras.git
synced 2025-06-25 18:09:22 +02:00
fix stream flushing
This commit is contained in:
@ -1094,3 +1094,35 @@ fn test_slow_request() {
|
||||
|
||||
sys.stop();
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_malformed_request() {
|
||||
use actix::System;
|
||||
use std::net;
|
||||
use std::sync::mpsc;
|
||||
let (tx, rx) = mpsc::channel();
|
||||
|
||||
let addr = test::TestServer::unused_addr();
|
||||
thread::spawn(move || {
|
||||
System::run(move || {
|
||||
let srv = server::new(|| {
|
||||
vec![App::new().resource("/", |r| {
|
||||
r.method(http::Method::GET).f(|_| HttpResponse::Ok())
|
||||
})]
|
||||
});
|
||||
|
||||
let _ = srv.bind(addr).unwrap().start();
|
||||
let _ = tx.send(System::current());
|
||||
});
|
||||
});
|
||||
let sys = rx.recv().unwrap();
|
||||
thread::sleep(time::Duration::from_millis(200));
|
||||
|
||||
let mut stream = net::TcpStream::connect(addr).unwrap();
|
||||
let _ = stream.write_all(b"GET /test/tests/test HTTP1.1\r\n");
|
||||
let mut data = String::new();
|
||||
let _ = stream.read_to_string(&mut data);
|
||||
assert!(data.starts_with("HTTP/1.1 400 Bad Request"));
|
||||
|
||||
sys.stop();
|
||||
}
|
||||
|
@ -7,7 +7,7 @@ extern crate rand;
|
||||
|
||||
use std::sync::atomic::{AtomicUsize, Ordering};
|
||||
use std::sync::Arc;
|
||||
use std::thread;
|
||||
use std::{thread, time};
|
||||
|
||||
use bytes::Bytes;
|
||||
use futures::Stream;
|
||||
@ -380,17 +380,17 @@ fn test_ws_stopped() {
|
||||
let num = Arc::new(AtomicUsize::new(0));
|
||||
let num2 = num.clone();
|
||||
|
||||
let _ = thread::spawn(move || {
|
||||
let mut srv = test::TestServer::new(move |app| {
|
||||
let num3 = num2.clone();
|
||||
let mut srv = test::TestServer::new(move |app| {
|
||||
let num4 = num3.clone();
|
||||
app.handler(move |req| ws::start(req, WsStopped(num4.clone())))
|
||||
});
|
||||
app.handler(move |req| ws::start(req, WsStopped(num3.clone())))
|
||||
});
|
||||
{
|
||||
let (reader, mut writer) = srv.ws().unwrap();
|
||||
writer.text("text");
|
||||
let (item, _) = srv.execute(reader.into_future()).unwrap();
|
||||
assert_eq!(item, Some(ws::Message::Text("text".to_owned())));
|
||||
}).join();
|
||||
}
|
||||
thread::sleep(time::Duration::from_millis(1000));
|
||||
|
||||
assert_eq!(num.load(Ordering::Relaxed), 1);
|
||||
}
|
||||
|
Reference in New Issue
Block a user