dialtone_sqlx 0.1.0

Dialtone SQLx Back-End
Documentation
use dialtone_common::rest::users::web_user::UserStatus;
use dialtone_sqlx::control::user::authn::authn_user;
use dialtone_sqlx::control::user::change_auth::change_user_auth;
use dialtone_sqlx::db::user_principal::change_status::change_user_status;
use dialtone_sqlx::db::user_principal::create_user;
use dialtone_test_util::{test_action, test_pg};
use sqlx::types::chrono::Utc;

#[tokio::test]
async fn change_user_auth_test() {
    test_pg::test_pg(move |pool| async move {
        let acct = "test@example.com";
        let password = "secretpassword";
        let new_password = "new_password";
        create_user(&pool, &acct, password).await.unwrap();

        // Users must be active to authenticate
        change_user_status(&pool, acct, &UserStatus::Active)
            .await
            .unwrap();

        let action = authn_user(&pool, acct, password, "127.0.0.1", Utc::now())
            .await
            .unwrap();
        assert!(action);

        let action = change_user_auth(&pool, acct, new_password).await;
        test_action!(action);
        assert!(action.unwrap());

        let action = authn_user(&pool, acct, new_password, "127.0.0.1", Utc::now())
            .await
            .unwrap();
        assert!(action);
    })
    .await;
}

#[tokio::test]
async fn change_no_user_auth_test() {
    test_pg::test_pg(move |pool| async move {
        let acct = "test@example.com";
        let password = "secretpassword";

        let action = change_user_auth(&pool, acct, password).await;
        test_action!(action);
        assert!(!action.unwrap());
    })
    .await;
}