aboutsummaryrefslogtreecommitdiff
path: root/test.rs
diff options
context:
space:
mode:
authorSteven Fackler <[email protected]>2013-11-09 17:27:17 -0800
committerSteven Fackler <[email protected]>2013-11-09 17:32:33 -0800
commit2e168ab820384c543faaa4eabf4004dfc1670851 (patch)
treeaa2e7cb1a524977735ca4acc855889d7902c674b /test.rs
parentSsl errors may return a stack (diff)
downloadrust-openssl-2e168ab820384c543faaa4eabf4004dfc1670851.tar.xz
rust-openssl-2e168ab820384c543faaa4eabf4004dfc1670851.zip
Update for latest master and fix segfault
Diffstat (limited to 'test.rs')
-rw-r--r--test.rs124
1 files changed, 124 insertions, 0 deletions
diff --git a/test.rs b/test.rs
new file mode 100644
index 00000000..dbcb19db
--- /dev/null
+++ b/test.rs
@@ -0,0 +1,124 @@
+#[feature(struct_variant)];
+
+use std::rt::io::Writer;
+use std::rt::io::net::tcp::TcpStream;
+use std::str;
+
+use lib::{Sslv23, SslContext, SslStream, SslVerifyPeer};
+
+mod lib;
+
+#[test]
+fn test_new_ctx() {
+ SslContext::new(Sslv23);
+}
+
+#[test]
+fn test_new_sslstream() {
+ let stream = TcpStream::connect(FromStr::from_str("127.0.0.1:15418").unwrap()).unwrap();
+ SslStream::new(&SslContext::new(Sslv23), stream);
+}
+
+#[test]
+fn test_verify_untrusted() {
+ let stream = TcpStream::connect(FromStr::from_str("127.0.0.1:15418").unwrap()).unwrap();
+ let mut ctx = SslContext::new(Sslv23);
+ ctx.set_verify(SslVerifyPeer, None);
+ match SslStream::try_new(&ctx, stream) {
+ Ok(_) => fail!("expected failure"),
+ Err(err) => println!("error {:?}", err)
+ }
+}
+
+#[test]
+fn test_verify_trusted() {
+ let stream = TcpStream::connect(FromStr::from_str("127.0.0.1:15418").unwrap()).unwrap();
+ let mut ctx = SslContext::new(Sslv23);
+ ctx.set_verify(SslVerifyPeer, None);
+ match ctx.set_CA_file("test/cert.pem") {
+ None => {}
+ Some(err) => fail!("Unexpected error {:?}", err)
+ }
+ match SslStream::try_new(&ctx, stream) {
+ Ok(_) => (),
+ Err(err) => fail!("Expected success, got {:?}", err)
+ }
+}
+
+#[test]
+fn test_verify_untrusted_callback_override_ok() {
+ fn callback(_preverify_ok: bool) -> bool {
+ true
+ }
+ let stream = TcpStream::connect(FromStr::from_str("127.0.0.1:15418").unwrap()).unwrap();
+ let mut ctx = SslContext::new(Sslv23);
+ ctx.set_verify(SslVerifyPeer, Some(callback));
+ match SslStream::try_new(&ctx, stream) {
+ Ok(_) => (),
+ Err(err) => fail!("Expected success, got {:?}", err)
+ }
+}
+
+#[test]
+fn test_verify_untrusted_callback_override_bad() {
+ fn callback(_preverify_ok: bool) -> bool {
+ false
+ }
+ let stream = TcpStream::connect(FromStr::from_str("127.0.0.1:15418").unwrap()).unwrap();
+ let mut ctx = SslContext::new(Sslv23);
+ ctx.set_verify(SslVerifyPeer, Some(callback));
+ assert!(SslStream::try_new(&ctx, stream).is_err());
+}
+
+#[test]
+fn test_verify_trusted_callback_override_ok() {
+ fn callback(_preverify_ok: bool) -> bool {
+ true
+ }
+ let stream = TcpStream::connect(FromStr::from_str("127.0.0.1:15418").unwrap()).unwrap();
+ let mut ctx = SslContext::new(Sslv23);
+ ctx.set_verify(SslVerifyPeer, Some(callback));
+ match ctx.set_CA_file("test/cert.pem") {
+ None => {}
+ Some(err) => fail!("Unexpected error {:?}", err)
+ }
+ match SslStream::try_new(&ctx, stream) {
+ Ok(_) => (),
+ Err(err) => fail!("Expected success, got {:?}", err)
+ }
+}
+
+#[test]
+fn test_verify_trusted_callback_override_bad() {
+ fn callback(_preverify_ok: bool) -> bool {
+ false
+ }
+ let stream = TcpStream::connect(FromStr::from_str("127.0.0.1:15418").unwrap()).unwrap();
+ let mut ctx = SslContext::new(Sslv23);
+ ctx.set_verify(SslVerifyPeer, Some(callback));
+ match ctx.set_CA_file("test/cert.pem") {
+ None => {}
+ Some(err) => fail!("Unexpected error {:?}", err)
+ }
+ assert!(SslStream::try_new(&ctx, stream).is_err());
+}
+
+#[test]
+fn test_write() {
+ let stream = TcpStream::connect(FromStr::from_str("127.0.0.1:15418").unwrap()).unwrap();
+ let mut stream = SslStream::new(&SslContext::new(Sslv23), stream);
+ stream.write("hello".as_bytes());
+ stream.flush();
+ stream.write(" there".as_bytes());
+ stream.flush();
+}
+
+#[test]
+fn test_read() {
+ let stream = TcpStream::connect(FromStr::from_str("127.0.0.1:15418").unwrap()).unwrap();
+ let mut stream = SslStream::new(&SslContext::new(Sslv23), stream);
+ stream.write("GET /\r\n\r\n".as_bytes());
+ stream.flush();
+ let buf = stream.read_to_end();
+ print!("{}", str::from_utf8(buf));
+}