Add automated tests for TLS (#183)

* Auto start with TLS

* Add automated tests for SSL

* Add cert generation script

* Use script to generate SSL cert
next
Sayan 3 years ago committed by GitHub
parent 864c6d461f
commit 2d7b9d7667
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

8
Cargo.lock generated

@ -668,9 +668,9 @@ dependencies = [
[[package]]
name = "pin-project-lite"
version = "0.2.6"
version = "0.2.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dc0e1f259c92177c30a4c9d177246edd0a3568b25756a977d0632cf8fa37e905"
checksum = "8d31d11c69a6b52a174b42bdc0c30e5e11670f90788b2c471c31c1d17d449443"
[[package]]
name = "pin-utils"
@ -993,8 +993,8 @@ dependencies = [
[[package]]
name = "skytable"
version = "0.3.1-alpha.1"
source = "git+https://github.com/skytable/client-rust?branch=next#3376554ddcda455d2558ee9f94dc4e39b6f7deb7"
version = "0.4.0"
source = "git+https://github.com/skytable/client-rust?branch=next#e5e7496746ad74813ea227867b834e739820c1d8"
dependencies = [
"bytes",
"openssl",

@ -59,12 +59,12 @@ START_COMMAND_RELEASE =
START_COMMAND_RELEASE += ${START_COMMAND}
START_COMMAND_RELEASE += --release
START_COMMAND += -- --noart --nosave
START_COMMAND += --sslchain cert.pem --sslkey key.pem
START_COMMAND_RELEASE += -- --noart --nosave
ifneq ($(OS),Windows_NT)
START_COMMAND += &
START_COMMAND_RELEASE += &
endif
# (DEF) Prepare release bundle commands
BUNDLE=
ifeq ($(origin TARGET),undefined)
@ -118,16 +118,18 @@ test: .build-server
@echo "===================================================================="
@echo "Starting database server in background"
@echo "===================================================================="
@chmod +x ci/ssl.sh && bash ci/ssl.sh
@${START_COMMAND}
# sleep for 5s to let the server start up
@sleep 5
@echo "===================================================================="
@echo "Running all tests"
@echo "===================================================================="
@cp cert.pem server/
cargo test $(TARGET_ARG) -- --test-threads=1
@$(STOP_SERVER)
@sleep 2
rm -f .sky_pid
@rm -f .sky_pid cert.pem key.pem
stress: .release-server
@echo "===================================================================="
@echo "Starting database server in background"
@ -140,7 +142,7 @@ stress: .release-server
@echo "Stress testing (all)"
@echo "===================================================================="
@$(STOP_SERVER)
rm -f .sky_pid
@rm -f .sky_pid cert.pem key.pem server/cert.pem
bundle: release
@echo "===================================================================="
@echo "Creating bundle for platform"

@ -0,0 +1,8 @@
function gen_sub() {
local result="${1}"
case $OSTYPE in
msys | win32) result="//XX=x${result}" ;;
esac
echo "$result"
}
openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 -subj $(gen_sub '/C=US/CN=example.com') -keyout key.pem -out cert.pem

@ -40,7 +40,7 @@ cc = "1.0.68"
[dev-dependencies]
# internal deps
sky_macros = { path="../sky-macros" }
skytable = { git="https://github.com/skytable/client-rust", features=["async"], default-features=false, branch="next" }
skytable = { git="https://github.com/skytable/client-rust", features=["async","aio-ssl"], default-features=false, branch="next" }
# external deps
tokio = { version="1.6.1", features=["test-util"] }

@ -94,3 +94,19 @@ mod bgsave {
fs::remove_file(BGSAVE_DIRECTORY_TESTING_LOC).unwrap();
}
}
mod ssl {
use skytable::aio::TlsConnection;
use skytable::{Element, Query, Response};
#[tokio::test]
async fn test_ssl() {
let mut con = TlsConnection::new("127.0.0.1", 2004, "cert.pem")
.await
.unwrap();
let q = Query::from("heya");
assert_eq!(
con.run_simple_query(&q).await.unwrap(),
Response::Item(Element::String("HEY!".to_owned()))
);
}
}

Loading…
Cancel
Save