Files
Termind/FrameworkTests/SSHKeyReplacementDraftTests.swift

64 lines
3.1 KiB
Swift

// SPDX-FileCopyrightText: 2026 Kaede Akino
// SPDX-License-Identifier: GPL-3.0-only
import TermindApplication
import Testing
@Suite @MainActor
struct SSHKeyReplacementDraftTests {
@Test func restoringOriginalPrivateKeyRestoresOnlyAutomaticallyClearedFields() {
var draft = SSHKeyReplacementDraft()
var publicKey = "original-public"
var passphrase = "original-passphrase"
for _ in 0..<2 {
draft.privateKeyChanged(
from: "original", to: "replacement", originalPrivateKey: "original",
originalPublicKey: "original-public", originalPassphrase: "original-passphrase",
publicKey: &publicKey, passphrase: &passphrase)
#expect(publicKey.isEmpty && passphrase.isEmpty)
draft.privateKeyChanged(
from: "replacement", to: "another-replacement", originalPrivateKey: "original",
originalPublicKey: "original-public", originalPassphrase: "original-passphrase",
publicKey: &publicKey, passphrase: &passphrase)
#expect(publicKey.isEmpty && passphrase.isEmpty)
draft.privateKeyChanged(
from: "another-replacement", to: "original", originalPrivateKey: "original",
originalPublicKey: "original-public", originalPassphrase: "original-passphrase",
publicKey: &publicKey, passphrase: &passphrase)
#expect(publicKey == "original-public" && passphrase == "original-passphrase")
}
}
@Test func revertingPrivateKeyPreservesPreviouslyRemovedFields() {
var draft = SSHKeyReplacementDraft()
var publicKey = ""
var passphrase = ""
draft.privateKeyChanged(
from: "original", to: "replacement", originalPrivateKey: "original",
originalPublicKey: "original-public", originalPassphrase: "original-passphrase",
publicKey: &publicKey, passphrase: &passphrase)
draft.privateKeyChanged(
from: "replacement", to: "original", originalPrivateKey: "original",
originalPublicKey: "original-public", originalPassphrase: "original-passphrase",
publicKey: &publicKey, passphrase: &passphrase)
#expect(publicKey.isEmpty && passphrase.isEmpty)
}
@Test func revertingPrivateKeyDoesNotOverwriteNewlyEnteredFields() {
var draft = SSHKeyReplacementDraft()
var publicKey = "original-public"
var passphrase = "original-passphrase"
draft.privateKeyChanged(
from: "original", to: "replacement", originalPrivateKey: "original",
originalPublicKey: "original-public", originalPassphrase: "original-passphrase",
publicKey: &publicKey, passphrase: &passphrase)
publicKey = "edited-public"
passphrase = "edited-passphrase"
draft.privateKeyChanged(
from: "replacement", to: "original", originalPrivateKey: "original",
originalPublicKey: "original-public", originalPassphrase: "original-passphrase",
publicKey: &publicKey, passphrase: &passphrase)
#expect(publicKey == "edited-public" && passphrase == "edited-passphrase")
}
}