Add tests for MoonrakerSocketManager, some UI changes in front-end
This commit is contained in:
@@ -1,60 +0,0 @@
|
||||
//
|
||||
// PrinterRequestsManagerTests.swift
|
||||
// SoyuzTests
|
||||
//
|
||||
// Created by maddiefuzz on 2/21/23.
|
||||
//
|
||||
|
||||
import XCTest
|
||||
import Starscream
|
||||
import Network
|
||||
@testable import Soyuz
|
||||
|
||||
class PrinterRequestManagerTests: XCTestCase {
|
||||
var socketManager: MoonrakerSocketManager?
|
||||
|
||||
// Server-side test variables
|
||||
let server = WebSocketServer()
|
||||
let address = "localhost"
|
||||
let port: UInt16 = 80
|
||||
|
||||
override func setUp() {
|
||||
let server = WebSocketServer()
|
||||
|
||||
let error = server.start(address: address, port: port)
|
||||
|
||||
if let err = error {
|
||||
print("Error starting WebSocket server: \(err)")
|
||||
}
|
||||
|
||||
socketManager = MoonrakerSocketManager()
|
||||
}
|
||||
|
||||
func testBlah() {
|
||||
guard let url = URL(string: "\(address):\(port)") else {
|
||||
return
|
||||
}
|
||||
print("Success")
|
||||
let endpoint = NWEndpoint.url(url)
|
||||
print(endpoint.debugDescription)
|
||||
socketManager?.connectToBonjourEndpoint(endpoint)
|
||||
return
|
||||
}
|
||||
|
||||
// override func setUp() {
|
||||
// printerRequestManager = PrinterRequestManager(browser: NWBrowser(for: .bonjour(type: "_http._tcp", domain: "local."), using: .tcp))
|
||||
//
|
||||
// // Set up test bonjour server
|
||||
// //let parameters = NWParameters(tls: .none, tcp: NWListener.)
|
||||
// do {
|
||||
// testBonjourListener = try NWListener(using: .tcp, on: .http)
|
||||
// testBonjourListener!.start(queue: DispatchQueue.main)
|
||||
// } catch {
|
||||
// print("Error: \(error)")
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// func testBonjourDiscoveredItemsNotNil() {
|
||||
// XCTAssertNotNil(printerRequestManager?.nwBrowserDiscoveredItems)
|
||||
// }
|
||||
}
|
87
SoyuzTests/MoonrakerSocketManagerTests.swift
Executable file
87
SoyuzTests/MoonrakerSocketManagerTests.swift
Executable file
@@ -0,0 +1,87 @@
|
||||
//
|
||||
// MoonrakerSocketManagerTests.swift
|
||||
// SoyuzTests
|
||||
//
|
||||
// Created by maddiefuzz on 2/21/23.
|
||||
//
|
||||
|
||||
import XCTest
|
||||
import Starscream
|
||||
import Combine
|
||||
import Network
|
||||
@testable import Soyuz
|
||||
|
||||
class DummyEngine: Engine {
|
||||
var delegate: Starscream.EngineDelegate?
|
||||
|
||||
@Published var startCalled = false
|
||||
|
||||
func register(delegate: Starscream.EngineDelegate) {
|
||||
self.delegate = delegate
|
||||
}
|
||||
|
||||
func start(request: URLRequest) {
|
||||
startCalled = true
|
||||
}
|
||||
|
||||
func stop(closeCode: UInt16) {
|
||||
return
|
||||
}
|
||||
|
||||
func forceStop() {
|
||||
return
|
||||
}
|
||||
|
||||
func write(data: Data, opcode: Starscream.FrameOpCode, completion: (() -> ())?) {
|
||||
return
|
||||
}
|
||||
|
||||
func write(string: String, completion: (() -> ())?) {
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
class MoonrakerSocketManagerTests: XCTestCase {
|
||||
var socketManager: MoonrakerSocketManager?
|
||||
var bonjourListener: NWListener?
|
||||
var engine: DummyEngine!
|
||||
var cancellable: AnyCancellable?
|
||||
|
||||
override func setUp() {
|
||||
engine = DummyEngine()
|
||||
socketManager = MoonrakerSocketManager(starscreamEngine: engine!)
|
||||
|
||||
do {
|
||||
bonjourListener = try NWListener(using: .tcp, on: .http)
|
||||
|
||||
bonjourListener!.newConnectionHandler = { newConnection in
|
||||
return
|
||||
}
|
||||
|
||||
bonjourListener!.start(queue: DispatchQueue.main)
|
||||
} catch {
|
||||
print("Error: \(error)")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
func testConnectToBonjourEndpoint() {
|
||||
let endpoint = NWEndpoint.hostPort(host: "localhost", port: .http)
|
||||
print("Trying to connect to bonjour endpoint \(endpoint)")
|
||||
|
||||
let expectation = XCTestExpectation(description: "MoonrakerSocketManager.connectToBonjourEndpoint opens Starscream socket")
|
||||
|
||||
cancellable = engine.$startCalled
|
||||
.sink(receiveValue: { newValue in
|
||||
if newValue == true {
|
||||
expectation.fulfill()
|
||||
}
|
||||
})
|
||||
|
||||
socketManager?.connectToBonjourEndpoint(endpoint)
|
||||
wait(for: [expectation], timeout: 2)
|
||||
XCTAssertTrue(engine.startCalled)
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user