v0.2.5-pre.009
This commit is contained in:
@@ -1,18 +1,18 @@
|
||||
// file: crates/ksp-wallet-lib/unit_tests/wire.rs
|
||||
// version: 2
|
||||
// version: 3
|
||||
|
||||
const FIXTURE: &[u8] = include_bytes!("../tests/fixtures/kspwallet_v1_wire_only.json");
|
||||
|
||||
#[test]
|
||||
fn strict_v1_fixture_parses_and_round_trips_semantically() -> ksp_core_lib::Result<()> {
|
||||
let parsed = match super::KspWalletEnvelopeV1::parse_json(FIXTURE) {
|
||||
let parsed = match crate::KspWalletEnvelopeV1::parse_json(FIXTURE) {
|
||||
std::result::Result::Ok(parsed) => parsed,
|
||||
std::result::Result::Err(error) => return std::result::Result::Err(error),
|
||||
};
|
||||
assert_eq!(parsed.format_version(), crate::KSPWALLET_FORMAT_VERSION_V1);
|
||||
assert!(parsed.view_descriptor().enabled());
|
||||
assert_eq!(parsed.owner_slot().role(), super::WalletKeySlotRoleV1::Owner);
|
||||
assert_eq!(parsed.view_slot().map(super::WalletKeySlotV1::role), std::option::Option::Some(super::WalletKeySlotRoleV1::View));
|
||||
assert_eq!(parsed.owner_slot().role(), crate::WalletKeySlotRoleV1::Owner);
|
||||
assert_eq!(parsed.view_slot().map(crate::WalletKeySlotV1::role), std::option::Option::Some(crate::WalletKeySlotRoleV1::View));
|
||||
assert_eq!(parsed.owner_control().payload_version(), 1);
|
||||
assert_eq!(parsed.metadata().payload_version(), 1);
|
||||
assert_eq!(parsed.secret().payload_version(), 1);
|
||||
@@ -21,7 +21,7 @@ fn strict_v1_fixture_parses_and_round_trips_semantically() -> ksp_core_lib::Resu
|
||||
std::result::Result::Ok(serialized) => serialized,
|
||||
std::result::Result::Err(error) => return std::result::Result::Err(error),
|
||||
};
|
||||
let reparsed = match super::KspWalletEnvelopeV1::parse_json(serialized.as_slice()) {
|
||||
let reparsed = match crate::KspWalletEnvelopeV1::parse_json(serialized.as_slice()) {
|
||||
std::result::Result::Ok(reparsed) => reparsed,
|
||||
std::result::Result::Err(error) => return std::result::Result::Err(error),
|
||||
};
|
||||
@@ -32,7 +32,7 @@ fn strict_v1_fixture_parses_and_round_trips_semantically() -> ksp_core_lib::Resu
|
||||
#[test]
|
||||
fn unknown_format_version_is_rejected_before_v1_shape_validation() {
|
||||
let source = std::string::String::from_utf8_lossy(FIXTURE).replace("\"format_version\": 1", "\"format_version\": 2");
|
||||
let result = super::KspWalletEnvelopeV1::parse_json(source.as_bytes());
|
||||
let result = crate::KspWalletEnvelopeV1::parse_json(source.as_bytes());
|
||||
assert!(result.is_err());
|
||||
let error = match result {
|
||||
std::result::Result::Err(error) => error,
|
||||
@@ -44,7 +44,7 @@ fn unknown_format_version_is_rejected_before_v1_shape_validation() {
|
||||
#[test]
|
||||
fn unknown_top_level_field_is_rejected() {
|
||||
let source = std::string::String::from_utf8_lossy(FIXTURE).replacen("{", "{\n \"unexpected\": true,", 1);
|
||||
let result = super::KspWalletEnvelopeV1::parse_json(source.as_bytes());
|
||||
let result = crate::KspWalletEnvelopeV1::parse_json(source.as_bytes());
|
||||
assert!(result.is_err());
|
||||
let error = match result {
|
||||
std::result::Result::Err(error) => error,
|
||||
@@ -57,7 +57,7 @@ fn unknown_top_level_field_is_rejected() {
|
||||
fn padded_or_noncanonical_base64url_is_rejected() {
|
||||
let source = std::string::String::from_utf8_lossy(FIXTURE)
|
||||
.replace("AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8\"", "AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8=\"");
|
||||
let result = super::KspWalletEnvelopeV1::parse_json(source.as_bytes());
|
||||
let result = crate::KspWalletEnvelopeV1::parse_json(source.as_bytes());
|
||||
assert!(result.is_err());
|
||||
let error = match result {
|
||||
std::result::Result::Err(error) => error,
|
||||
@@ -70,7 +70,7 @@ fn padded_or_noncanonical_base64url_is_rejected() {
|
||||
fn enabled_view_descriptor_must_match_the_view_slot() {
|
||||
let source =
|
||||
std::string::String::from_utf8_lossy(FIXTURE).replacen("\"slot_id\": \"ICEiIyQlJicoKSorLC0uLw\"", "\"slot_id\": \"EBESExQVFhcYGRobHB0eHw\"", 1);
|
||||
let result = super::KspWalletEnvelopeV1::parse_json(source.as_bytes());
|
||||
let result = crate::KspWalletEnvelopeV1::parse_json(source.as_bytes());
|
||||
assert!(result.is_err());
|
||||
let error = match result {
|
||||
std::result::Result::Err(error) => error,
|
||||
@@ -82,7 +82,7 @@ fn enabled_view_descriptor_must_match_the_view_slot() {
|
||||
#[test]
|
||||
fn zero_or_pathological_kdf_parameters_are_rejected_before_crypto() {
|
||||
let zero_source = std::string::String::from_utf8_lossy(FIXTURE).replacen("\"memory_kib\": 65536", "\"memory_kib\": 0", 1);
|
||||
let zero_result = super::KspWalletEnvelopeV1::parse_json(zero_source.as_bytes());
|
||||
let zero_result = crate::KspWalletEnvelopeV1::parse_json(zero_source.as_bytes());
|
||||
assert!(zero_result.is_err());
|
||||
let zero_error = match zero_result {
|
||||
std::result::Result::Err(error) => error,
|
||||
@@ -91,7 +91,7 @@ fn zero_or_pathological_kdf_parameters_are_rejected_before_crypto() {
|
||||
assert_eq!(zero_error.code(), crate::ERROR_CODE_CRYPTO_PARAMETERS_INVALID);
|
||||
|
||||
let high_source = std::string::String::from_utf8_lossy(FIXTURE).replacen("\"memory_kib\": 65536", "\"memory_kib\": 1048577", 1);
|
||||
let high_result = super::KspWalletEnvelopeV1::parse_json(high_source.as_bytes());
|
||||
let high_result = crate::KspWalletEnvelopeV1::parse_json(high_source.as_bytes());
|
||||
assert!(high_result.is_err());
|
||||
let high_error = match high_result {
|
||||
std::result::Result::Err(error) => error,
|
||||
@@ -107,7 +107,7 @@ fn argon2_memory_must_cover_all_lanes_before_crypto() {
|
||||
"\"parallelism\": 2",
|
||||
1,
|
||||
);
|
||||
let result = super::KspWalletEnvelopeV1::parse_json(source.as_bytes());
|
||||
let result = crate::KspWalletEnvelopeV1::parse_json(source.as_bytes());
|
||||
assert!(result.is_err());
|
||||
let error = match result {
|
||||
std::result::Result::Err(error) => error,
|
||||
@@ -119,7 +119,7 @@ fn argon2_memory_must_cover_all_lanes_before_crypto() {
|
||||
#[test]
|
||||
fn oversized_document_is_rejected_before_json_or_crypto() {
|
||||
let oversized = std::vec![b' '; crate::KSPWALLET_MAX_FILE_BYTES + 1];
|
||||
let result = super::KspWalletEnvelopeV1::parse_json(oversized.as_slice());
|
||||
let result = crate::KspWalletEnvelopeV1::parse_json(oversized.as_slice());
|
||||
assert!(result.is_err());
|
||||
let error = match result {
|
||||
std::result::Result::Err(error) => error,
|
||||
@@ -130,7 +130,7 @@ fn oversized_document_is_rejected_before_json_or_crypto() {
|
||||
|
||||
#[test]
|
||||
fn envelope_debug_does_not_render_ciphertext_contents() -> ksp_core_lib::Result<()> {
|
||||
let parsed = match super::KspWalletEnvelopeV1::parse_json(FIXTURE) {
|
||||
let parsed = match crate::KspWalletEnvelopeV1::parse_json(FIXTURE) {
|
||||
std::result::Result::Ok(parsed) => parsed,
|
||||
std::result::Result::Err(error) => return std::result::Result::Err(error),
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user