extern crate actix_web;
extern crate actix_web_sql_identity;
extern crate dotenv;
mod common;
use actix_web::http::StatusCode;
use actix_web::test::TestServer;
use common::SqlVariant;
fn get_index(mut srv: TestServer) {
common::index(&mut srv, None);
}
#[test]
#[cfg(feature = "sqlite")]
fn sqlite_get_index() {
let srv = common::build_test_server_from_env(SqlVariant::Sqlite);
get_index(srv);
}
#[test]
#[cfg(feature = "mysql")]
fn mysql_get_index() {
let srv = common::build_test_server_from_env(SqlVariant::MySql);
get_index(srv);
}
#[test]
#[cfg(feature = "postgres")]
fn pg_get_index() {
let srv = common::build_test_server_from_env(SqlVariant::Postgres);
get_index(srv);
}
fn no_identity(mut srv: TestServer) {
common::profile(&mut srv, None, StatusCode::UNAUTHORIZED);
}
#[test]
#[cfg(feature = "sqlite")]
fn sqlite_no_identity() {
let srv = common::build_test_server_from_env(SqlVariant::Sqlite);
no_identity(srv);
}
#[test]
#[cfg(feature = "mysql")]
fn mysql_no_identity() {
let srv = common::build_test_server_from_env(SqlVariant::MySql);
no_identity(srv);
}
#[test]
#[cfg(feature = "postgres")]
fn pg_no_identity() {
let srv = common::build_test_server_from_env(SqlVariant::Postgres);
no_identity(srv);
}
fn invalid_token(mut srv: TestServer) {
common::profile(&mut srv, Some("invalidtoken"), StatusCode::UNAUTHORIZED);
}
#[test]
#[cfg(feature = "sqlite")]
fn sqlite_invalid_token() {
let srv = common::build_test_server_from_env(SqlVariant::Sqlite);
invalid_token(srv);
}
#[test]
#[cfg(feature = "mysql")]
fn mysql_invalid_token() {
let srv = common::build_test_server_from_env(SqlVariant::MySql);
invalid_token(srv);
}
#[test]
#[cfg(feature = "postgres")]
fn pg_invalid_token() {
let srv = common::build_test_server_from_env(SqlVariant::Postgres);
invalid_token(srv);
}
fn valid_token(mut srv: TestServer) {
common::profile(
&mut srv,
Some("g8mlRUwF1AKx7/ZRvReQ+dRhGpoDAzIC"),
StatusCode::OK,
);
}
#[test]
#[cfg(feature = "sqlite")]
fn sqlite_valid_token() {
let srv = common::build_test_server_from_env(SqlVariant::Sqlite);
valid_token(srv);
}
#[test]
#[cfg(feature = "mysql")]
fn mysql_valid_token() {
let srv = common::build_test_server_from_env(SqlVariant::MySql);
valid_token(srv);
}
#[test]
#[cfg(feature = "postgres")]
fn pg_valid_token() {
let srv = common::build_test_server_from_env(SqlVariant::Postgres);
valid_token(srv);
}
fn login_logout(mut srv: TestServer) {
println!("######### INDEX #########");
common::index(&mut srv, None);
println!("######### PROFILE #1 #########");
common::profile(&mut srv, None, StatusCode::UNAUTHORIZED);
println!("######### LOGIN #########");
let token = match common::login(&mut srv, "mike") {
Some(t) => t,
None => panic!("Token not found! Login Failed"),
};
println!("######### PROFILE #2 #########");
common::profile(&mut srv, None, StatusCode::UNAUTHORIZED);
println!("######### PROFILE #3 #########");
common::profile(&mut srv, Some(&token), StatusCode::OK);
println!("######### LOGOUT #1 #########");
common::logout(&mut srv, None, StatusCode::BAD_REQUEST);
println!("######### LOGOUT #2 #########");
common::logout(&mut srv, Some(&token), StatusCode::OK);
println!("######### PROFILE #4 #########");
common::profile(&mut srv, Some(&token), StatusCode::UNAUTHORIZED);
}
#[test]
#[cfg(feature = "sqlite")]
fn sqlite_login_logout() {
dotenv::from_filename("tests/test.env").ok();
let uri = format!(
"{}/{}",
dotenv::var("SQLITE_PATH").unwrap(),
dotenv::var("SQLITE_DB2").unwrap(),
);
let srv = common::build_test_server(uri);
login_logout(srv);
}
#[test]
#[cfg(feature = "mysql")]
fn mysql_login_logout() {
let srv = common::build_test_server_from_env(SqlVariant::MySql);
login_logout(srv);
}
#[test]
#[cfg(feature = "postgres")]
fn pg_login_logout() {
let srv = common::build_test_server_from_env(SqlVariant::Postgres);
login_logout(srv);
}
fn multiple_logout(mut srv: TestServer) {
let token_1 = common::login(&mut srv, "george");
let token_2 = common::login(&mut srv, "george");
let token_1 = match token_1 {
Some(t) => t,
None => panic!("Token 1 not found!"),
};
let token_2 = match token_2 {
Some(t) => t,
None => panic!("Token 1 not found!"),
};
common::profile(&mut srv, Some(&token_1), StatusCode::OK);
common::profile(&mut srv, Some(&token_2), StatusCode::OK);
common::logout(&mut srv, Some(&token_2), StatusCode::OK);
common::profile(&mut srv, Some(&token_1), StatusCode::OK);
common::profile(&mut srv, Some(&token_2), StatusCode::UNAUTHORIZED);
common::logout(&mut srv, Some(&token_1), StatusCode::OK);
common::profile(&mut srv, Some(&token_1), StatusCode::UNAUTHORIZED);
common::profile(&mut srv, Some(&token_2), StatusCode::UNAUTHORIZED);
}
#[test]
#[cfg(feature = "sqlite")]
fn sqlite_multiple_logout() {
dotenv::from_filename("tests/test.env").ok();
let uri = format!(
"{}/{}",
dotenv::var("SQLITE_PATH").unwrap(),
dotenv::var("SQLITE_DB3").unwrap(),
);
let srv = common::build_test_server(uri);
multiple_logout(srv);
}
#[test]
#[cfg(feature = "mysql")]
fn mysql_multiple_logout() {
let srv = common::build_test_server_from_env(SqlVariant::MySql);
multiple_logout(srv);
}
#[test]
#[cfg(feature = "postgres")]
fn pg_multiple_logout() {
let srv = common::build_test_server_from_env(SqlVariant::Postgres);
multiple_logout(srv);
}