feat: Adds MQTTConnectionServiceTests

This commit is contained in:
2024-11-09 09:42:03 -05:00
parent 90c5b7c77f
commit 6c5115dcde
3 changed files with 70 additions and 2 deletions

View File

@@ -19,6 +19,7 @@ let package = Package(
.library(name: "Models", targets: ["Models"]),
.library(name: "Client", targets: ["Client"]),
.library(name: "ClientLive", targets: ["ClientLive"]),
.library(name: "MQTTConnectionService", targets: ["MQTTConnectionService"]),
.library(name: "SensorsService", targets: ["SensorsService"])
],
dependencies: [
@@ -112,6 +113,13 @@ let package = Package(
],
swiftSettings: swiftSettings
),
.testTarget(
name: "MQTTConnectionServiceTests",
dependencies: [
"MQTTConnectionService",
.product(name: "ServiceLifecycleTestKit", package: "swift-service-lifecycle")
]
),
.target(
name: "SensorsService",
dependencies: [

View File

@@ -0,0 +1,60 @@
import EnvVars
import Logging
import MQTTConnectionService
import MQTTNIO
import NIO
import ServiceLifecycleTestKit
import XCTest
final class MQTTConnectionServiceTests: XCTestCase {
static let hostname = ProcessInfo.processInfo.environment["MOSQUITTO_SERVER"] ?? "localhost"
static let logger: Logger = {
var logger = Logger(label: "AsyncClientTests")
logger.logLevel = .debug
return logger
}()
func testGracefulShutdownWorks() async throws {
let client = createClient(identifier: "testGracefulShutdown")
try await testGracefulShutdown { trigger in
let service = MQTTConnectionService(client: client)
try await service.run()
trigger.triggerGracefulShutdown()
}
try await Task.sleep(for: .seconds(1))
XCTAssertFalse(client.isActive())
}
func createClient(identifier: String) -> MQTTClient {
let envVars = EnvVars(
appEnv: .testing,
host: Self.hostname,
port: "1883",
identifier: identifier,
userName: nil,
password: nil
)
let config = MQTTClient.Configuration(
version: .v3_1_1,
userName: envVars.userName,
password: envVars.password,
useSSL: false,
useWebSockets: false,
tlsConfiguration: nil,
webSocketURLPath: nil
)
return .init(
host: Self.hostname,
identifier: identifier,
eventLoopGroupProvider: .shared(MultiThreadedEventLoopGroup(numberOfThreads: 1)),
logger: Self.logger,
configuration: config
)
}
}

View File

@@ -39,7 +39,7 @@ final class SensorsClientTests: XCTestCase {
func testSensorService() async throws {
let client = createClient(identifier: "testSensorService")
let mqtt = await client.client
let sensor = TemperatureAndHumiditySensor(location: .mixedAir, units: .metric)
let sensor = TemperatureAndHumiditySensor(location: .mixedAir)
let publishInfo = PublishInfoContainer(topicFilters: [
sensor.topics.dewPoint,
sensor.topics.enthalpy
@@ -99,7 +99,7 @@ final class SensorsClientTests: XCTestCase {
func testSensorCapturesPublishedState() async throws {
let client = createClient(identifier: "testSensorCapturesPublishedState")
let mqtt = await client.client
let sensor = TemperatureAndHumiditySensor(location: .mixedAir, units: .metric)
let sensor = TemperatureAndHumiditySensor(location: .mixedAir)
let publishInfo = PublishInfoContainer(topicFilters: [
sensor.topics.dewPoint,
sensor.topics.enthalpy