Add tests for MoonrakerSocketManager, some UI changes in front-end

This commit is contained in:
Madeline Pace
2023-05-24 13:35:51 -04:00
parent 0f0d0c0628
commit e04a6bc31f
8 changed files with 146 additions and 75 deletions

View File

@@ -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)
// }
}

View 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)
}
}