1
0
mirror of git://jb55.com/damus synced 2024-09-29 08:20:45 +00:00
damus/damusTests/RelayPoolTests.swift
kernelkind 34e32bc930 handle extra slashes for relay url
Closes: https://github.com/damus-io/damus/issues/1766

Signed-off-by: kernelkind <kernelkind@gmail.com>
Reviewed-by: William Casarin <jb55@jb55.com>
Signed-off-by: William Casarin <jb55@jb55.com>
2023-12-16 17:43:00 -08:00

83 lines
2.2 KiB
Swift

//
// RelayPoolTests.swift
// damusTests
//
// Created by kernelkind on 12/16/23.
//
import Foundation
import XCTest
@testable import damus
final class RelayPoolTests: XCTestCase {
override func setUpWithError() throws {
}
override func tearDownWithError() throws {
}
func testAddRelay_ValidRelayURL_NoErrors() {
testAddRelays(urls: [
"wss://relay.damus.io"
])
}
func testAddRelay_TwoSameURLs_ThrowsRelayAlreadyExists() {
testAddRelays(urls: [
"wss://relay.damus.io",
"wss://relay.damus.io"
], expectedError: .RelayAlreadyExists)
}
func testAddRelay_OneExtraneousSlashURL_ThrowsRelayAlreadyExists() {
testAddRelays(urls: [
"wss://relay.damus.io",
"wss://relay.damus.io/"
], expectedError: .RelayAlreadyExists)
}
func testAddRelay_MultipleExtraneousSlashURL_ThrowsRelayAlreadyExists() {
testAddRelays(urls: [
"wss://relay.damus.io",
"wss://relay.damus.io///"
], expectedError: .RelayAlreadyExists)
}
func testAddRelay_ExtraSlashURLFirst_ThrowsRelayAlreadyExists() {
testAddRelays(urls: [
"wss://relay.damus.io///",
"wss://relay.damus.io"
], expectedError: .RelayAlreadyExists)
}
}
func testAddRelays(urls: [String], expectedError: RelayError? = nil) {
let ndb = Ndb()!
let relayPool = RelayPool(ndb: ndb)
let info = RelayInfo(read: true, write: true)
do {
for relay in urls {
guard let url = RelayURL(relay) else {
XCTFail("Invalid URL encountered: \(relay)")
return
}
let descriptor = RelayDescriptor(url: url, info: info)
try relayPool.add_relay(descriptor)
}
if expectedError != nil {
XCTFail("Expected \(expectedError!) error, but no error was thrown.")
}
} catch let error as RelayError where expectedError == .RelayAlreadyExists {
XCTAssertEqual(error, expectedError!, "Expected RelayAlreadyExists error, got \(error)")
} catch {
XCTFail("An unexpected error was thrown: \(error)")
}
}