FieldIdentityImportFailureUITestProbe.swift (2182B)
1 #if DEBUG 2 import Foundation 3 4 enum FieldIdentityImportFailureUITestProbe { 5 private static let enabledKey = "RADROOTS_FIELD_IOS_UI_TEST_IDENTITY_IMPORT_FAILURE_PROBE" 6 private static let candidateSecretKey = "RADROOTS_FIELD_IOS_UI_TEST_IDENTITY_IMPORT_FAILURE_SECRET" 7 private static let defaultCandidateSecret = "0000000000000000000000000000000000000000000000000000000000000002" 8 9 static var isRequested: Bool { 10 FieldUITestHarness.string(enabledKey) == "true" 11 } 12 13 static func value( 14 secureStore: FieldSecureIdentityStore, 15 service: FieldRuntimeService 16 ) async -> String? { 17 guard isRequested else { 18 return nil 19 } 20 let previousSecret = try? secureStore.loadSelectedSecretHex() 21 let candidateSecret = FieldUITestHarness.string(candidateSecretKey) ?? defaultCandidateSecret 22 var importFailed = false 23 var errorContainsForcedRestore = false 24 25 do { 26 _ = try await secureStore.importSecret( 27 candidateSecret, 28 label: "UI Test Import Failure", 29 using: service 30 ) 31 } catch { 32 importFailed = true 33 errorContainsForcedRestore = error.localizedDescription.contains("Forced identity import restore failure") 34 } 35 36 let selectedSecretAfterImport = try? secureStore.loadSelectedSecretHex() 37 var runtimePreviousRestored = false 38 if previousSecret != nil, 39 let restored = try? await secureStore.restoreStoredIdentity( 40 label: "Radroots Field", 41 using: service 42 ) { 43 runtimePreviousRestored = restored.isSelected 44 } 45 46 return [ 47 "previous_secret_present=\(previousSecret != nil)", 48 "import_failed=\(importFailed)", 49 "error_contains_forced_restore=\(errorContainsForcedRestore)", 50 "selected_secret_preserved=\(selectedSecretAfterImport == previousSecret)", 51 "candidate_secret_selected=\(selectedSecretAfterImport == candidateSecret)", 52 "runtime_previous_restored=\(runtimePreviousRestored)" 53 ].joined(separator: ";") 54 } 55 } 56 #endif