ServerUrlPolicyTest.swift
59 lignes · 2401 octets
import XCTest @testable import Card2vcf /// TDD (Android) : HTTPS required unless the « autoriser HTTP clair » option is on. final class ServerUrlPolicyTest: XCTestCase { func testHttpsUrlIsAllowedByDefault() { XCTAssertNil(ServerUrlPolicy.validate("https://api.example.com", allowCleartext: false)) XCTAssertNil(ServerUrlPolicy.validate("HTTPS://API.EXAMPLE.COM/v1", allowCleartext: false)) } func testHttpUrlRejectedWhenCleartextDisallowed() { let err = ServerUrlPolicy.validate("http://192.168.1.10:3000", allowCleartext: false) XCTAssertEqual(ServerUrlPolicy.ERROR_HTTPS_REQUIRED, err) } func testHttpUrlAllowedWhenCleartextEnabled() { XCTAssertNil(ServerUrlPolicy.validate("http://192.168.1.10:3000", allowCleartext: true)) XCTAssertNil(ServerUrlPolicy.validate("http://localhost:3000", allowCleartext: true)) } func testBlankOrMissingSchemeRejected() { XCTAssertEqual(ServerUrlPolicy.ERROR_INVALID_URL, ServerUrlPolicy.validate(" ", allowCleartext: true)) XCTAssertEqual( ServerUrlPolicy.ERROR_INVALID_URL, ServerUrlPolicy.validate("api.example.com", allowCleartext: false) ) XCTAssertEqual( ServerUrlPolicy.ERROR_INVALID_URL, ServerUrlPolicy.validate("ftp://api.example.com", allowCleartext: true) ) } func testIsHttpsHelper() { XCTAssertTrue(ServerUrlPolicy.isHttps("https://x")) XCTAssertFalse(ServerUrlPolicy.isHttps("http://x")) XCTAssertFalse(ServerUrlPolicy.isHttps("x")) } func testLanHttpsWithoutPortRejected() { let err = ServerUrlPolicy.validate("https://192.168.1.35", allowCleartext: false) XCTAssertEqual(ServerUrlPolicy.ERROR_LAN_HTTPS_NO_PORT, err) } func testLanHttpWithoutPortRejectedEvenWhenCleartext() { let err = ServerUrlPolicy.validate("http://192.168.1.35", allowCleartext: true) XCTAssertEqual(ServerUrlPolicy.ERROR_LAN_HTTP_NO_PORT, err) } func testNormalizeBaseUrlStripsVersionPath() { XCTAssertEqual( "http://192.168.1.35:3000", ServerUrlPolicy.normalizeBaseUrl("http://192.168.1.35:3000/version/") ) } func testPublicHttpsWithoutPortStillAllowed() { XCTAssertNil(ServerUrlPolicy.validate("https://api.example.com", allowCleartext: false)) } }
GitRust