use miden_protocol::account::component::{AccountComponentCode, AccountComponentMetadata};
use miden_protocol::account::{AccountComponent, AccountComponentName};
use crate::account::account_component_code;
account_component_code!(NO_AUTH_CODE, "auth/no_auth.masl");
pub struct NoAuth;
impl NoAuth {
pub const NAME: &'static str = "miden::standards::components::auth::no_auth";
pub const fn name() -> AccountComponentName {
AccountComponentName::from_static_str(Self::NAME)
}
pub fn code() -> &'static AccountComponentCode {
&NO_AUTH_CODE
}
pub fn new() -> Self {
Self
}
pub fn component_metadata() -> AccountComponentMetadata {
AccountComponentMetadata::new(Self::NAME).with_description("No authentication component")
}
}
impl Default for NoAuth {
fn default() -> Self {
Self::new()
}
}
impl From<NoAuth> for AccountComponent {
fn from(_: NoAuth) -> Self {
let metadata = NoAuth::component_metadata();
AccountComponent::new(NoAuth::code().clone(), vec![], metadata)
.expect("NoAuth component should satisfy the requirements of a valid account component")
}
}
#[cfg(test)]
mod tests {
use miden_protocol::account::AccountBuilder;
use super::*;
use crate::account::wallets::BasicWallet;
#[test]
fn test_no_auth_component() {
let _account = AccountBuilder::new([0; 32])
.with_auth_component(NoAuth)
.with_component(BasicWallet)
.build()
.expect("account building failed");
}
}