unit client app
This commit is contained in:
@@ -8,26 +8,37 @@ use nkode_protocol::server::repository::in_memory::in_memory_opaque_session::InM
|
||||
use nkode_protocol::server::repository::in_memory::in_memory_transport::{InMemoryCodeServer, InMemoryKeyServer, InMemoryServerTransport};
|
||||
use nkode_protocol::server::repository::in_memory::in_memory_user_db::InMemoryUserDB;
|
||||
use nkode_protocol::shared::email::Email;
|
||||
use nkode_protocol::shared::models::app::IconID;
|
||||
use nkode_protocol::shared::models::app::{Icon, IconID, ICON_ID_SIZE};
|
||||
use nkode_protocol::shared::opaque::{NKodeServerSetup, UserSecretKey};
|
||||
use nkode_protocol::shared::user_api::IconPoolAPI;
|
||||
|
||||
#[tokio::test]
|
||||
async fn in_memory_client_app() {
|
||||
|
||||
let mut rng = OsRng;
|
||||
let server_setup = NKodeServerSetup::new(&mut rng);
|
||||
let user_db = InMemoryUserDB::new();
|
||||
let n: usize = 200;
|
||||
let mut new_icons: Vec<Icon> = Vec::with_capacity(n);
|
||||
for i in 0u8..(n as u8) {
|
||||
let id = IconID([i; ICON_ID_SIZE]); // [0; 32], [1; 32], ... [199; 32]
|
||||
new_icons.push(Icon {
|
||||
id,
|
||||
data: vec![i], // dummy payload; adjust as needed
|
||||
});
|
||||
}
|
||||
user_db.add_icons(new_icons).await.unwrap();
|
||||
let server = ServerApp::new(
|
||||
server_setup,
|
||||
InMemoryOpaqueDB::new(),
|
||||
InMemoryOpaqueSession::new(),
|
||||
InMemoryUserDB::new()
|
||||
user_db,
|
||||
);
|
||||
let key_transport: InMemoryKeyServer = InMemoryServerTransport::new(&server);
|
||||
let code_transport: InMemoryCodeServer = InMemoryServerTransport::new(&server);
|
||||
let user_db = InMemoryUserDB::new();
|
||||
let client_auth = ClientAuth::new(&key_transport, &code_transport, user_db);
|
||||
let client_auth = ClientAuth::new(&key_transport, &code_transport, &server.user_db);
|
||||
let client_repo = InMemoryClientRepo::new();
|
||||
let client_app_new_user: ClientApp<
|
||||
let new_user: ClientApp<
|
||||
'_,
|
||||
'_,
|
||||
'_,
|
||||
NewUserRegisterKey,
|
||||
@@ -38,12 +49,15 @@ async fn in_memory_client_app() {
|
||||
> = ClientApp::new(client_auth, client_repo);
|
||||
let user_email = Email::new("a@b.com").unwrap();
|
||||
let user_secret_key = UserSecretKey::new();
|
||||
let client_app_register_code = client_app_new_user.new_user(user_email, user_secret_key).await.unwrap();
|
||||
let _: Vec<IconID> = client_app_register_code
|
||||
.get_new_user_icons().await.unwrap()
|
||||
.iter()
|
||||
.map(
|
||||
|el| el.id().clone()
|
||||
).collect();
|
||||
// let client_app_user_login = client_app_register_code.new_user_register_code(icons[0..4].to_vec()).await.unwrap();
|
||||
let register_code = new_user.new_user(user_email, user_secret_key).await.unwrap();
|
||||
let icons: Vec<Icon> = register_code.get_new_user_icons().await.unwrap();
|
||||
let icon_ids:Vec<IconID> = icons.iter().map(|el| el.id.clone()).collect();
|
||||
let selected_icons = icon_ids[0..4].to_vec();
|
||||
let code_login = register_code.new_user_register_code(selected_icons.clone()).await.unwrap();
|
||||
let display_keypad = code_login.get_keypad().unwrap();
|
||||
let icon_idxs: Vec<usize> = selected_icons.iter().map(|x| {
|
||||
display_keypad.sorted_icons.iter().position(|x1| {x1.id == *x}).unwrap()
|
||||
}).collect();
|
||||
let selected_keys = display_keypad.keypad.select_keys(&icon_idxs).unwrap();
|
||||
code_login.login(&selected_keys).await.unwrap();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user