From 37271770d4de9e60c2d50b68c4f44dd36dc17171 Mon Sep 17 00:00:00 2001 From: micbakos-rdx Date: Fri, 7 Feb 2025 16:23:21 +0200 Subject: [PATCH] Fix swift tests --- .../AccountOrPersona+Swiftified.swift | 6 +++++ .../Profile/Account/Account+Swiftified.swift | 4 ++++ .../Profile/Persona/Persona+Swiftified.swift | 4 ++++ .../Sargon/Protocols/EntityProtocol.swift | 24 +++++++++---------- apple/Tests/Utils/EntityProtocolTest.swift | 6 ++--- 5 files changed, 28 insertions(+), 16 deletions(-) diff --git a/apple/Sources/Sargon/Extensions/Swiftified/Profile+Supporting+Types/AccountOrPersona+Swiftified.swift b/apple/Sources/Sargon/Extensions/Swiftified/Profile+Supporting+Types/AccountOrPersona+Swiftified.swift index bda4e0554..d0ddb3f11 100644 --- a/apple/Sources/Sargon/Extensions/Swiftified/Profile+Supporting+Types/AccountOrPersona+Swiftified.swift +++ b/apple/Sources/Sargon/Extensions/Swiftified/Profile+Supporting+Types/AccountOrPersona+Swiftified.swift @@ -83,6 +83,12 @@ extension AccountOrPersona: EntityBaseProtocol { \.virtualHierarchicalDeterministicFactorInstances ) } + + public var unsecuredControllingFactorInstance: SargonUniFFI.HierarchicalDeterministicFactorInstance? { + property( + \.unsecuredControllingFactorInstance + ) + } } extension AccountOrPersona { diff --git a/apple/Sources/Sargon/Extensions/Swiftified/Profile/Account/Account+Swiftified.swift b/apple/Sources/Sargon/Extensions/Swiftified/Profile/Account/Account+Swiftified.swift index 531553ca1..188225f10 100644 --- a/apple/Sources/Sargon/Extensions/Swiftified/Profile/Account/Account+Swiftified.swift +++ b/apple/Sources/Sargon/Extensions/Swiftified/Profile/Account/Account+Swiftified.swift @@ -7,6 +7,10 @@ extension Account: EntityBaseProtocol { public var asGeneral: AccountOrPersona { .account(self) } + + public var unsecuredControllingFactorInstance: SargonUniFFI.HierarchicalDeterministicFactorInstance? { + accountUnsecuredControllingFactorInstance(account: self) + } } extension Account { diff --git a/apple/Sources/Sargon/Extensions/Swiftified/Profile/Persona/Persona+Swiftified.swift b/apple/Sources/Sargon/Extensions/Swiftified/Profile/Persona/Persona+Swiftified.swift index 40063b336..6ed03a13c 100644 --- a/apple/Sources/Sargon/Extensions/Swiftified/Profile/Persona/Persona+Swiftified.swift +++ b/apple/Sources/Sargon/Extensions/Swiftified/Profile/Persona/Persona+Swiftified.swift @@ -8,6 +8,10 @@ extension Persona: EntityBaseProtocol { public var asGeneral: AccountOrPersona { .persona(self) } + + public var unsecuredControllingFactorInstance: SargonUniFFI.HierarchicalDeterministicFactorInstance? { + personaUnsecuredControllingFactorInstance(persona: self) + } } // MARK: - Persona + EntityProtocol diff --git a/apple/Sources/Sargon/Protocols/EntityProtocol.swift b/apple/Sources/Sargon/Protocols/EntityProtocol.swift index 83e3ceb8a..7c878ce87 100644 --- a/apple/Sources/Sargon/Protocols/EntityProtocol.swift +++ b/apple/Sources/Sargon/Protocols/EntityProtocol.swift @@ -20,6 +20,7 @@ public protocol EntityBaseProtocol: BaseBaseEntityProtocol, CustomStringConverti var securityState: EntitySecurityState { get } var entityKind: EntityKind { get } var asGeneral: AccountOrPersona { get } + var unsecuredControllingFactorInstance: HierarchicalDeterministicFactorInstance? { get } #if DEBUG static var sampleMainnet: Self { get } @@ -47,30 +48,29 @@ extension EntityBaseProtocol { Set { var factorInstances = Set() - switch securityState { - case let .unsecured(unsecuredEntityControl): - factorInstances.insert(unsecuredEntityControl.transactionSigning) - return factorInstances + + if let unsecuredControllingFactorInstance { + factorInstances.insert(unsecuredControllingFactorInstance) } + + return factorInstances } public var hasAuthenticationSigningKey: Bool { switch securityState { case .unsecured: false + case .securified(value: _): + false } } public var deviceFactorSourceID: FactorSourceIDFromHash? { - switch self.securityState { - case let .unsecured(control): - let factorSourceID = control.transactionSigning.factorSourceID - guard factorSourceID.kind == .device else { - return nil - } - - return factorSourceID + guard let factorSourceId = unsecuredControllingFactorInstance?.factorSourceId, factorSourceId.kind == .device else { + return nil } + + return factorSourceId } } diff --git a/apple/Tests/Utils/EntityProtocolTest.swift b/apple/Tests/Utils/EntityProtocolTest.swift index 3d4ad0426..7af42e347 100644 --- a/apple/Tests/Utils/EntityProtocolTest.swift +++ b/apple/Tests/Utils/EntityProtocolTest.swift @@ -72,10 +72,8 @@ class EntityBaseTest: Test { case .ed25519: break // good case .secp256k1: XCTFail("Wrong key kind") } - // TODO: Handle - // case .securified(value: _): - // XCTFail("Wrong security state") - // } + case .securified(value: _): + XCTFail("Wrong security state") } } }