Add regression test suite

This commit is contained in:
Joseph Birr-Pixton 2016-06-05 19:23:41 +01:00
parent 23e9da1dc6
commit ffd183c202
3 changed files with 38 additions and 14 deletions

18
tests/bugs.rs Normal file
View File

@ -0,0 +1,18 @@
#[allow(dead_code)]
mod common;
use common::OpenSSLServer;
/* Test where the server gives certificates A -> B where the
* validation path is A -> B -> C where C is a trust root
* but B is not. */
#[test]
fn partial_chain() {
let mut server = OpenSSLServer::new_rsa(8100);
server.partial_chain();
server.run();
server.client()
.verbose()
.expect("Ciphers common between both SSL end points:")
.go();
server.kill();
}

View File

@ -133,6 +133,7 @@ pub struct OpenSSLServer {
pub key: String,
pub cert: String,
pub chain: String,
pub intermediate: String,
pub cacert: String,
pub extra_args: Vec<&'static str>,
pub child: Option<process::Child>
@ -157,6 +158,7 @@ impl OpenSSLServer {
cert: format!("test-ca/{}/end.cert", keytype),
chain: format!("test-ca/{}/end.chain", keytype),
cacert: format!("test-ca/{}/ca.cert", keytype),
intermediate: format!("test-ca/{}/inter.cert", keytype),
extra_args: Vec::new(),
child: None
}
@ -170,6 +172,11 @@ impl OpenSSLServer {
OpenSSLServer::new("ecdsa", start_port)
}
pub fn partial_chain(&mut self) -> &mut Self {
self.chain = self.intermediate.clone();
self
}
pub fn arg(&mut self, arg: &'static str) -> &mut Self {
self.extra_args.push(arg);
self
@ -182,18 +189,17 @@ impl OpenSSLServer {
extra_args.push("-www");
}
println!("args = {:?}", extra_args);
let mut subp = process::Command::new("openssl");
subp.arg("s_server")
.arg("-accept").arg(self.port.to_string())
.arg("-key").arg(&self.key)
.arg("-cert").arg(&self.cert)
.arg("-CAfile").arg(&self.chain)
.args(&extra_args)
.stdout(process::Stdio::null())
.stderr(process::Stdio::null());
let child = process::Command::new("openssl")
.arg("s_server")
.arg("-accept").arg(self.port.to_string())
.arg("-key").arg(&self.key)
.arg("-cert").arg(&self.cert)
.arg("-CAfile").arg(&self.chain)
.args(&extra_args)
.stdout(process::Stdio::null())
.stderr(process::Stdio::null())
.spawn()
let child = subp.spawn()
.expect("cannot run openssl server");
self.wait_for_port().expect("server did not come up");

View File

@ -64,8 +64,8 @@ fn wikipedia() {
}
#[test]
fn letsencrypt() {
connect("letsencrypt.org")
fn hello_letsencrypt() {
connect("helloworld.letsencrypt.org")
.expect("HTTP/1.1 200 OK")
.go()
.unwrap();
@ -98,7 +98,7 @@ fn baidu() {
#[test]
fn netflix() {
connect("www.netflix.com")
.expect("HTTP/1.1 200 OK")
.expect("HTTP/1.1 ")
.go()
.unwrap();
}