49 lines
2.0 KiB
Swift
49 lines
2.0 KiB
Swift
import CodexBarCore
|
|
import Foundation
|
|
import Testing
|
|
@testable import CodexBar
|
|
|
|
struct CodexAccountProviderIdentityReconciliationTests {
|
|
@Test
|
|
func `same provider account id with different email does not merge live and managed rows`() {
|
|
let stored = ManagedCodexAccount(
|
|
id: UUID(),
|
|
email: "mi.chaelfmk5542@gmail.com",
|
|
providerAccountID: "team-4107",
|
|
workspaceLabel: "4107",
|
|
workspaceAccountID: "team-4107",
|
|
managedHomePath: "/tmp/managed-a",
|
|
createdAt: 1,
|
|
updatedAt: 2,
|
|
lastAuthenticatedAt: 3)
|
|
let live = ObservedSystemCodexAccount(
|
|
email: "mich.aelfmk5542@gmail.com",
|
|
workspaceLabel: "4107",
|
|
workspaceAccountID: "team-4107",
|
|
codexHomePath: "/Users/test/.codex",
|
|
observedAt: Date(),
|
|
identity: .providerAccount(id: "team-4107"))
|
|
let snapshot = CodexAccountReconciliationSnapshot(
|
|
storedAccounts: [stored],
|
|
activeStoredAccount: stored,
|
|
liveSystemAccount: live,
|
|
matchingStoredAccountForLiveSystemAccount: nil,
|
|
activeSource: .managedAccount(id: stored.id),
|
|
hasUnreadableAddedAccountStore: false,
|
|
storedAccountRuntimeIdentities: [stored.id: .providerAccount(id: "team-4107")],
|
|
storedAccountRuntimeEmails: [stored.id: "mi.chaelfmk5542@gmail.com"])
|
|
|
|
let resolution = CodexActiveSourceResolver.resolve(from: snapshot)
|
|
let projection = CodexVisibleAccountProjection.make(from: snapshot)
|
|
|
|
#expect(resolution.resolvedSource == .managedAccount(id: stored.id))
|
|
#expect(projection.visibleAccounts.count == 2)
|
|
#expect(projection.visibleAccounts.map(\.email).sorted() == [
|
|
"mi.chaelfmk5542@gmail.com",
|
|
"mich.aelfmk5542@gmail.com",
|
|
])
|
|
#expect(projection.activeVisibleAccountID == "mi.chaelfmk5542@gmail.com")
|
|
#expect(projection.liveVisibleAccountID == "mich.aelfmk5542@gmail.com")
|
|
}
|
|
}
|