64 lines
3.1 KiB
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")
|
|
}
|
|
}
|