use base64::{Engine as _, engine::general_purpose::STANDARD as BASE64};
use duoload::duocards::deck::validate_deck_id;
use duoload::error::{DeckIdError, DuoloadError};
const TEST_DECK_ID: &str = "RGVjazo0NmYyYjllZC1hYmYzLTRiZDgtYTA1NC02OGRmYTRhNDIwM2U=";
#[test]
fn test_validate_deck_id() {
assert!(validate_deck_id(TEST_DECK_ID).is_ok());
let invalid_base64 = "not-base64!";
match validate_deck_id(invalid_base64) {
Err(DuoloadError::DeckId(DeckIdError::InvalidBase64(_))) => (),
_ => panic!("Expected InvalidBase64 error"),
}
let invalid_format = BASE64.encode("NotADeck:123");
match validate_deck_id(&invalid_format) {
Err(DuoloadError::DeckId(DeckIdError::InvalidFormat(_))) => (),
_ => panic!("Expected InvalidFormat error"),
}
let invalid_uuid = BASE64.encode("Deck:not-a-uuid");
match validate_deck_id(&invalid_uuid) {
Err(DuoloadError::DeckId(DeckIdError::InvalidUuid(_))) => (),
_ => panic!("Expected InvalidUuid error"),
}
let non_v4_uuid = BASE64.encode("Deck:00000000-0000-1000-8000-000000000000"); match validate_deck_id(&non_v4_uuid) {
Err(DuoloadError::DeckId(DeckIdError::NotUuidV4(_))) => (),
_ => panic!("Expected NotUuidV4 error"),
}
}