import XCTest @testable import iPX final class ServerTests: XCTestCase { func testABareHostGetsHTTPS() { XCTAssertEqual(Server.normalise(" ipodderx.sdf1.net ")?.absoluteString, "https://ipodderx.sdf1.net") } func testPlainHTTPOnlyOnYourOwnNetwork() { XCTAssertNotNil(Server.normalise("http://192.168.1.130:8099")) XCTAssertNotNil(Server.normalise("http://tower.local:8099")) XCTAssertNotNil(Server.normalise("http://172.20.0.5")) XCTAssertNil(Server.normalise("http://ipodderx.sdf1.net"), "ATS would refuse it later") XCTAssertNil(Server.normalise("http://172.32.0.5")) XCTAssertNil(Server.normalise("ftp://192.168.1.130")) XCTAssertNil(Server.normalise("")) } func testThePagesPathsResolveAgainstTheServer() { UserDefaults.standard.set("https://ipodderx.sdf1.net", forKey: "ipx.server") XCTAssertEqual(Server.resolve("/media/42/deadair.m3u8?traceparent=x")?.absoluteString, "https://ipodderx.sdf1.net/media/42/deadair.m3u8?traceparent=x") } func testThePlayerGoesToItsOwnAddressOnlyWithAToken() { UserDefaults.standard.set("https://ipodderx.sdf1.net", forKey: "ipx.server") UserDefaults.standard.set("https://ipxapi.sdf1.net", forKey: "ipx.api") Credentials.apiToken = nil XCTAssertEqual(Server.resolveForPlayer("/media/1")?.host, "ipodderx.sdf1.net") Credentials.apiToken = "t" XCTAssertEqual(Server.resolveForPlayer("/media/1")?.host, "ipxapi.sdf1.net") XCTAssertEqual(Credentials.headers["Authorization"], "Bearer t") Credentials.apiToken = nil UserDefaults.standard.removeObject(forKey: "ipx.api") } func testThePlayerAddressIsNeverPlainHTTP() { UserDefaults.standard.set("http://192.168.1.130:8099", forKey: "ipx.api") XCTAssertNil(Server.apiURL) UserDefaults.standard.removeObject(forKey: "ipx.api") } }