dioxus-clerk 0.6.0

Clerk integration for Dioxus: components, hooks, and SSR initial state for web and fullstack apps
Documentation
use dioxus_clerk::core::{
    AuthRequirement, AuthState, ClerkAuth, ClerkError, Session, User, VerificationOutcome,
};
use dioxus_clerk::ssr::InitialState;

#[test]
fn core_module_exposes_shared_auth_types() {
    let mut auth = ClerkAuth::new("user_2abc", 9_999_999_999);
    auth.session_id = Some("sess_2def".into());
    auth.org_id = Some("org_2ghi".into());
    auth.org_slug = Some("acme".into());
    auth.org_role = Some("admin".into());
    auth.org_permissions = vec!["org:read".into()];

    let outcome = VerificationOutcome::Valid(auth.clone());
    let state = InitialState::from_outcome(Some(&outcome), Some("pk_test_state"));

    assert!(state.auth.is_signed_in());
    assert_eq!(state.auth.user_id.as_deref(), Some("user_2abc"));
    assert!(state.script_html().contains("__clerk_initial_state"));

    let auth_state = AuthState::from(&auth);
    assert!(auth_state.is_signed_in());
    assert!(auth_state.has(&AuthRequirement::permission("org:read")));

    let user = User::new("user_2abc");
    let session = Session::new("sess_2def", "active");
    assert_eq!(user.id, "user_2abc");
    assert_eq!(session.id, "sess_2def");
    assert!(session.is_active());

    let error = ClerkError::Unauthenticated;
    assert_eq!(error.to_string(), "unauthenticated");
}