50 lines
1.8 KiB
Swift
50 lines
1.8 KiB
Swift
// SPDX-FileCopyrightText: 2026 Kaede Akino
|
|
// SPDX-License-Identifier: GPL-3.0-only
|
|
|
|
import Foundation
|
|
import TermindApplication
|
|
import Testing
|
|
|
|
@testable import Termind
|
|
|
|
@Suite @MainActor
|
|
struct ExternalConnectionURLTests {
|
|
@Test func externalSSHOpensATemporaryWorkspaceWithoutSaving() throws {
|
|
let app = AppModel(hosts: HostLibraryModel())
|
|
let window = WindowModel()
|
|
defer { app.shutdownForTermination() }
|
|
|
|
app.openExternalConnection(
|
|
try #require(
|
|
URL(
|
|
string:
|
|
"ssh://deploy;fingerprint=ssh-rsa-00-11-22-33-44-55-66-77-88-99-aa-bb-cc-dd-ee-ff@example.invalid:2222"
|
|
)),
|
|
in: window)
|
|
|
|
let session = try #require(window.selectedWorkspace?.focusedPane.sshSession)
|
|
#expect(session.isExternalTemporaryConnection)
|
|
#expect(session.connectionRoute?.hosts.first?.host == "example.invalid")
|
|
#expect(session.connectionRoute?.hosts.first?.port == 2222)
|
|
#expect(session.connectionOrigin.hostKeyConstraints[session.hostID]?.legacyMD5.count == 16)
|
|
#expect(app.hostLibrary.hosts.isEmpty)
|
|
}
|
|
|
|
@Test func telnetPasswordRequiresConfirmationBeforeOpening() throws {
|
|
let app = AppModel(hosts: HostLibraryModel())
|
|
let window = WindowModel()
|
|
defer { app.shutdownForTermination() }
|
|
|
|
app.openExternalConnection(
|
|
try #require(URL(string: "telnet://operator:secret@example.invalid")),
|
|
in: window)
|
|
|
|
#expect(window.pendingExternalConnection?.advisoryPassword == "secret")
|
|
#expect(window.workspaces.isEmpty)
|
|
app.confirmExternalConnection(in: window)
|
|
#expect(window.pendingExternalConnection == nil)
|
|
#expect(window.selectedWorkspace?.focusedPane.telnetSession != nil)
|
|
#expect(app.hostLibrary.hosts.isEmpty)
|
|
}
|
|
}
|