48 lines
2.3 KiB
Swift
48 lines
2.3 KiB
Swift
import Foundation
|
|||
|
|
import XCTest
|
||
|
|
@testable import QueueCubeShareCore
|
||
|
|
|
||
|
|
final class ServerTests: XCTestCase {
|
||
|
|
func testScopedIPv4FromNetworkFrameworkUsesResolvableHost() throws {
|
||
|
|
let server = try XCTUnwrap(Server(serviceName: nil, host: "192.168.1.153%en1", port: 18731))
|
||
|
|
XCTAssertEqual(server.baseURL.absoluteString, "http://192.168.1.153:18731/api")
|
||
|
|
XCTAssertEqual(server.baseURL.host, "192.168.1.153")
|
||
|
|
}
|
||
|
|
|
||
|
|
func testUnscopedIPv4AndHostnameKeepHostAndPort() throws {
|
||
|
|
for host in ["192.168.1.153", "queuecube.local"] {
|
||
|
|
let server = try XCTUnwrap(Server(serviceName: nil, host: host, port: 3000))
|
||
|
|
XCTAssertEqual(server.baseURL.absoluteString, "http://\(host):3000/api")
|
||
|
|
XCTAssertEqual(server.baseURL.host, host)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func testIPv6LiteralsAreBracketedAndPreserveEncodedScope() throws {
|
||
|
|
let cases = [
|
||
|
|
("2001:db8::1", "http://[2001:db8::1]:3000/api"),
|
||
|
|
("fe80::1%en1", "http://[fe80::1%25en1]:3000/api"),
|
||
|
|
("[2001:db8::1]", "http://[2001:db8::1]:3000/api"),
|
||
|
|
("[fe80::1%en1]", "http://[fe80::1%25en1]:3000/api")
|
||
|
|
]
|
||
|
|
for (host, expected) in cases {
|
||
|
|
let server = try XCTUnwrap(Server(serviceName: nil, host: host, port: 3000))
|
||
|
|
XCTAssertEqual(server.baseURL.absoluteString, expected)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func testHostnameUsesURLHostEncoding() throws {
|
||
|
|
let server = try XCTUnwrap(Server(serviceName: nil, host: "café.local", port: 3000))
|
||
|
|
XCTAssertEqual(server.baseURL.absoluteString, "http://xn--caf-dma.local:3000/api")
|
||
|
|
XCTAssertNil(Server(serviceName: nil, host: "queuecube.local/path", port: 3000))
|
||
|
|
}
|
||
|
|
|
||
|
|
func testPlayerDisplayNameUsesBonjourNameAndFallsBackToHost() throws {
|
||
|
|
let advertised = try XCTUnwrap(Server(serviceName: "QueueCube Media Server (Living Room)", host: "192.168.1.153%en1", port: 3000))
|
||
|
|
XCTAssertEqual(advertised.displayName, "Living Room")
|
||
|
|
let custom = try XCTUnwrap(Server(serviceName: "Kitchen", host: "queuecube.local", port: 3000))
|
||
|
|
XCTAssertEqual(custom.displayName, "Kitchen")
|
||
|
|
let unnamed = try XCTUnwrap(Server(serviceName: nil, host: "queuecube.local", port: 3000))
|
||
|
|
XCTAssertEqual(unnamed.displayName, "queuecube.local")
|
||
|
|
}
|
||
|
|
}
|