Add `auth` syntax checks

next
Sayan Nandan 3 years ago
parent 58b3f0dda7
commit f7a4281ed5
No known key found for this signature in database
GPG Key ID: 8BC07A0A4D41DD52

@ -84,7 +84,7 @@ action! {
con.write_response(groups::OKAY).await?;
Ok(())
}
_ => util::err(groups::ACTION_ERR),
_ => util::err(groups::UNKNOWN_ACTION),
}
}
fn _auth_claim(con: &mut T, auth: &mut AuthProviderHandle<'_, T, Strm>, iter: &mut ActionIter<'_>) {

@ -170,3 +170,86 @@ async fn auth_deluser_okay_because_root() {
);
assert_okay!(con, query!("auth", "deluser", "supercooluser"))
}
mod syntax_checks {
use crate::auth::provider::testsuite_data::{
TESTSUITE_ROOT_TOKEN as ROOT_PASS, TESTSUITE_ROOT_USER as ROOT_USER,
TESTSUITE_TEST_TOKEN as PASS, TESTSUITE_TEST_USER as USER,
};
use skytable::{query, Element, RespCode};
const ONLYAUTH: u8 = 0;
const NOAUTH: u8 = 1;
const ONLYROOT: u8 = 2;
const NOROOT: u8 = 3;
macro_rules! assert_authn_aerr {
($con:expr, $query:expr, $username:expr, $password:expr) => {{
runeq!(
$con,
::skytable::query!("auth", "login", $username, $password),
::skytable::Element::RespCode(::skytable::RespCode::Okay)
);
assert_aerr!($con, $query)
}};
($con:expr, $query:expr) => {{
assert_authn_aerr!($con, $query, NOAUTH)
}};
($con:expr, $query:expr, $authnd:ident) => {{
match $authnd {
ONLYAUTH => {
assert_authn_aerr!($con, $query, ROOT_USER, ROOT_PASS);
assert_authn_aerr!($con, $query, USER, PASS);
}
NOAUTH => {
assert_aerr!($con, $query);
assert_authn_aerr!($con, $query, ROOT_USER, ROOT_PASS);
assert_authn_aerr!($con, $query, USER, PASS);
}
ONLYROOT => {
assert_authn_aerr!($con, $query, ROOT_USER, ROOT_PASS);
}
NOROOT => {
assert_authn_aerr!($con, $query, USER, PASS);
}
_ => panic!("Unknown authnd state"),
}
}};
}
#[sky_macros::dbtest_func(port = 2005, norun = true)]
async fn login_aerr() {
assert_authn_aerr!(con, query!("auth", "login", "lesserdata"));
assert_authn_aerr!(con, query!("auth", "login", "user", "password", "extra"));
}
#[sky_macros::dbtest_func(port = 2005, norun = true)]
async fn claim_aerr() {
assert_authn_aerr!(con, query!("auth", "claim"));
assert_authn_aerr!(con, query!("auth", "claim", "origin key", "but more data"));
}
#[sky_macros::dbtest_func(port = 2005, norun = true)]
async fn adduser_aerr() {
assert_authn_aerr!(
con,
query!("auth", "adduser", "user", "butextradata"),
ONLYAUTH
);
}
#[sky_macros::dbtest_func(port = 2005, norun = true)]
async fn logout_aerr() {
assert_authn_aerr!(con, query!("auth", "logout", "butextradata"), ONLYAUTH);
}
#[sky_macros::dbtest_func(port = 2005, norun = true)]
async fn deluser_aerr() {
assert_authn_aerr!(
con,
query!("auth", "deluser", "someuser", "butextradata"),
ONLYAUTH
);
}
#[sky_macros::dbtest_func(port = 2005, norun = true)]
async fn unknown_auth_action() {
runeq!(
con,
query!("auth", "raspberry"),
Element::RespCode(RespCode::ErrorString("unknown-action".to_owned()))
)
}
}

@ -64,11 +64,13 @@ macro_rules! runmatch {
macro_rules! assert_okay {
($con:expr, $query:expr) => {
runeq!(
$con,
$query,
::skytable::Element::RespCode(::skytable::RespCode::Okay)
)
assert_respcode!($con, $query, ::skytable::RespCode::Okay)
};
}
macro_rules! assert_aerr {
($con:expr, $query:expr) => {
assert_respcode!($con, $query, ::skytable::RespCode::ActionError)
};
}
@ -96,3 +98,9 @@ macro_rules! assert_skyhash_arrayeq {
)
};
}
macro_rules! assert_respcode {
($con:expr, $query:expr, $code:expr) => {
runeq!($con, $query, ::skytable::Element::RespCode($code))
};
}

Loading…
Cancel
Save