Fix TUI field visibility and contrast

This commit is contained in:
2026-08-10 17:51:08 +02:00
parent 44e1b86f47
commit 7c64be3a45
4 changed files with 125 additions and 21 deletions

View File

@@ -69,7 +69,7 @@ fn complex_documents_round_trip_with_storage_owned_metadata() -> TestResult {
let repository = Repository::open(store.path())?;
let keys = KeyStore::load(fixture.path("keys"))?;
let mut secrets = FixtureSecrets::all(&fixture);
let plaintext = b"p\xc3\xa4ssw\xc3\xb6rd\r\nusername: alice\r\ncustom: one\r\ncustom: \r\notpauth://totp/Example:alice?secret=JBSWY3DPEHPK3PXP&issuer=Example\r\n\r\nfirst note\r\nsecond note\r\n\xe9\x8d\xb5: \xe5\x80\xbc\r\nunrecognized line";
let plaintext = b"p\xc3\xa4ssw\xc3\xb6rd\r\nusername: alice\r\nautoType_enabled: true\r\nicon: Internet\r\ncustom: one\r\ncustom: \r\notpauth://totp/Example:alice?secret=JBSWY3DPEHPK3PXP&issuer=Example\r\n\r\nfirst note\r\nsecond note\r\n\xe9\x8d\xb5: \xe5\x80\xbc\r\nunrecognized line";
write_plaintext(&repository, &keys, "documents/complex", plaintext)?;
let service = EntryDocumentService::new(&repository, &keys);
@@ -79,7 +79,7 @@ fn complex_documents_round_trip_with_storage_owned_metadata() -> TestResult {
document.password().expect("password").value(),
"pässwörd".as_bytes()
);
assert_eq!(document.fields().len(), 10);
assert_eq!(document.fields().len(), 12);
let kinds = document
.fields()
@@ -93,6 +93,8 @@ fn complex_documents_round_trip_with_storage_owned_metadata() -> TestResult {
EntryFieldKind::Username,
EntryFieldKind::Field,
EntryFieldKind::Field,
EntryFieldKind::Field,
EntryFieldKind::Field,
EntryFieldKind::OtpUri,
EntryFieldKind::Blank,
EntryFieldKind::Note,
@@ -106,18 +108,29 @@ fn complex_documents_round_trip_with_storage_owned_metadata() -> TestResult {
document.fields()[1].metadata().sensitivity(),
EntrySensitivity::Ordinary
);
assert_eq!(document.fields()[2].metadata().name(), Some("custom"));
assert_eq!(document.fields()[2].value(), b"one");
assert_eq!(document.fields()[3].metadata().name(), Some("custom"));
assert!(document.fields()[3].value().is_empty());
assert_ne!(document.fields()[2].id(), document.fields()[3].id());
assert_eq!(document.fields()[8].metadata().name(), Some(""));
assert_eq!(document.fields()[8].value(), "".as_bytes());
for (index, name, value) in [
(2, "autoType_enabled", b"true".as_slice()),
(3, "icon", b"Internet".as_slice()),
] {
assert_eq!(document.fields()[index].metadata().name(), Some(name));
assert_eq!(document.fields()[index].value(), value);
assert_eq!(
document.fields()[index].metadata().sensitivity(),
EntrySensitivity::Ordinary
);
}
assert_eq!(document.fields()[4].metadata().name(), Some("custom"));
assert_eq!(document.fields()[4].value(), b"one");
assert_eq!(document.fields()[5].metadata().name(), Some("custom"));
assert!(document.fields()[5].value().is_empty());
assert_ne!(document.fields()[4].id(), document.fields()[5].id());
assert_eq!(document.fields()[10].metadata().name(), Some(""));
assert_eq!(document.fields()[10].value(), "".as_bytes());
assert_eq!(
document.fields()[4].metadata().sensitivity(),
document.fields()[6].metadata().sensitivity(),
EntrySensitivity::Sensitive
);
let otp = document.fields()[4]
let otp = document.fields()[6]
.metadata()
.otp()
.expect("validated OTP metadata");
@@ -128,10 +141,10 @@ fn complex_documents_round_trip_with_storage_owned_metadata() -> TestResult {
assert_eq!(otp.digits(), 6);
assert_eq!(otp.period(), Some(30));
assert_eq!(otp.counter(), None);
let copied = document.copy_field_value(document.fields()[2].id())?;
let copied = document.copy_field_value(document.fields()[4].id())?;
assert_eq!(copied.expose(), b"one");
assert!(!format!("{document:?}").contains("pässwörd"));
assert!(!format!("{:?}", document.fields()[4]).contains("JBSWY3DPEHPK3PXP"));
assert!(!format!("{:?}", document.fields()[6]).contains("JBSWY3DPEHPK3PXP"));
Ok(())
}