summaryrefslogtreecommitdiffhomepage
path: root/ios/MullvadVPNTests/IPAddressRangeTests.swift
blob: 37dc3415a2504a46c8a7a93864bac3c1633fa074 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
//
//  IPAddressRangeTests.swift
//  MullvadVPNTests
//
//  Created by pronebird on 08/09/2020.
//  Copyright © 2020 Mullvad VPN AB. All rights reserved.
//

import XCTest

class IPAddressRangeTests: XCTestCase {

    func testParsingValidIPv4AddressRange() throws {
        let addr = try IPAddressRange(string: "127.0.0.1/32")
        XCTAssertEqual("\(addr)", "127.0.0.1/32")
    }

    func testParsingValidIPv6AddressRange() throws {
        let addr = try IPAddressRange(string: "::1/128")
        XCTAssertEqual("\(addr)", "::1/128")
    }

    func testParsingIPv4AddressWithoutNetworkPrefix() throws {
        let addr = try IPAddressRange(string: "127.0.0.1")
        XCTAssertEqual("\(addr)", "127.0.0.1/32")
    }

    func testParsingIPv6AddressWithoutNetworkPrefix() throws {
        let addr = try IPAddressRange(string: "::1")
        XCTAssertEqual("\(addr)", "::1/128")
    }

    func testParsingInvalidIPv4AddressNetworkPrefix() throws {
        let addr = try IPAddressRange(string: "127.0.0.1/33")
        XCTAssertEqual("\(addr)", "127.0.0.1/32")
    }

    func testParsingInvalidIPv6AddressNetworkPrefix() throws {
        let addr = try IPAddressRange(string: "::1/129")
        XCTAssertEqual("\(addr)", "::1/128")
    }

    func testParsingInvalidIPAddress() throws {
        XCTAssertThrowsError(try IPAddressRange(string: "1.2.3.4.5/32")) { (error) in
            XCTAssertEqual(error as? IPAddressRangeParseError, IPAddressRangeParseError.parseAddress("1.2.3.4.5"))
        }
    }

    func testParsingEmptyNetworkPrefix() throws {
        XCTAssertThrowsError(try IPAddressRange(string: "::1/")) { (error) in
            XCTAssertEqual(error as? IPAddressRangeParseError, IPAddressRangeParseError.parsePrefix(""))
        }
    }
}