Files
nats.swift/Tests/JetStreamTests/Integration/RequestTests.swift
wenzuhuai d7bdb4f378
Some checks failed
ci / macos (push) Has been cancelled
ci / ios (push) Has been cancelled
ci / check-linter (push) Has been cancelled
init
2026-01-12 18:29:52 +08:00

70 lines
1.7 KiB
Swift

//
// File.swift
//
//
// Created by Piotr Piotrowski on 05/06/2024.
//
import Logging
import NIO
import Nats
import NatsServer
import XCTest
@testable import JetStream
class RequestTests: XCTestCase {
static var allTests = [
("testRequest", testRequest)
]
var natsServer = NatsServer()
override func tearDown() {
super.tearDown()
natsServer.stop()
}
func testRequest() async throws {
let bundle = Bundle.module
natsServer.start(
cfg: bundle.url(forResource: "jetstream", withExtension: "conf")!.relativePath)
logger.logLevel = .critical
let client = NatsClientOptions().url(URL(string: natsServer.clientURL)!).build()
try await client.connect()
let ctx = JetStreamContext(client: client)
let stream = """
{
"name": "FOO",
"subjects": ["foo"]
}
"""
let data = stream.data(using: .utf8)!
_ = try await client.request(data, subject: "$JS.API.STREAM.CREATE.FOO")
let info: Response<AccountInfo> = try await ctx.request("INFO", message: Data())
guard case .success(let info) = info else {
XCTFail("request should be successful")
return
}
XCTAssertEqual(info.streams, 1)
let badInfo: Response<AccountInfo> = try await ctx.request(
"STREAM.INFO.BAD", message: Data())
guard case .error(let jetStreamAPIResponse) = badInfo else {
XCTFail("should get error")
return
}
XCTAssertEqual(ErrorCode.streamNotFound, jetStreamAPIResponse.error.errorCode)
}
}