Skip to content
This repository has been archived by the owner on May 10, 2024. It is now read-only.

Commit

Permalink
Add unit tests to String versions of the API.
Browse files Browse the repository at this point in the history
  • Loading branch information
Brandon-T committed Apr 20, 2022
1 parent 0986384 commit b50ef96
Showing 1 changed file with 43 additions and 1 deletion.
44 changes: 43 additions & 1 deletion BraveSharedTests/NSURLExtensionsTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,29 @@ import UIKit
import XCTest
@testable import Shared

private extension String {
var isIPv6: Bool {
return self.contains(":") ?? false
}

var baseDomain: String? {
guard !NSURL.isHostIPAddress(from: self) else { return nil }

// If this is just a hostname and not a FQDN, use the entire hostname.
if !self.contains(".") {
return self
}

let registry = NSURL.domainAndRegistry(from: self)
return registry.isEmpty ? nil : registry
}

var publicSuffix: String? {
let registry = NSURL.registry(from: self)
return registry.isEmpty ? nil : registry
}
}

class NSURLExtensionsTests: XCTestCase {
func testRemovesHTTPFromURL() {
let url = URL(string: "http://google.com")
Expand Down Expand Up @@ -76,66 +99,78 @@ class NSURLExtensionsTests: XCTestCase {
let url = "http://a.bbc.co.uk".asURL!
let expected = url.publicSuffix!
XCTAssertEqual("co.uk", expected)
XCTAssertEqual("co.uk", url.host?.publicSuffix!)
}

func testBaseDomainWithTrailingDot() {
var url = URL(string: "https://test.domain.com")
XCTAssertEqual(url?.baseDomain, "domain.com")
XCTAssertEqual(url?.host?.baseDomain, "domain.com")

url = URL(string: "https://test.domain.com.")
XCTAssertEqual(url?.baseDomain, "domain.com.")
XCTAssertEqual(url?.host?.baseDomain, "domain.com.")

url = URL(string: "https://test.domain.com..")
XCTAssertEqual(url?.baseDomain, nil)
XCTAssertEqual(url?.host?.baseDomain, nil)

url = URL(string: "https://foo")
XCTAssertEqual(url?.baseDomain, "foo")
XCTAssertEqual(url?.host?.baseDomain, "foo")

url = URL(string: "https://foo.")
XCTAssertEqual(url?.baseDomain, nil)
XCTAssertEqual(url?.host?.baseDomain, nil)

url = URL(string: "https://.")
XCTAssertEqual(url?.baseDomain, nil)
XCTAssertEqual(url?.host?.baseDomain, nil)
}

func testCanadaComputers() {
let url = "http://m.canadacomputers.com".asURL!
let actual = url.baseDomain
XCTAssertEqual("canadacomputers.com", actual)
XCTAssertEqual("canadacomputers.com", url.host?.baseDomain)
}

func testMultipleSuffixesInsideURL() {
let url = "http://com:org@m.canadacomputers.co.uk".asURL!
let actual = url.baseDomain
XCTAssertEqual("canadacomputers.co.uk", actual)
XCTAssertEqual("canadacomputers.co.uk", url.host?.baseDomain)
}

func testNormalBaseDomainWithManySubdomains() {
// TLD Entry: co.uk
let url = "http://a.b.c.d.bbc.co.uk".asURL!
let expected = url.publicSuffix
XCTAssertEqual("co.uk", expected)
XCTAssertEqual("co.uk", url.host?.publicSuffix)
}

func testWildCardDomainWithSingleSubdomain() {
// TLD Entry: *.kawasaki.jp
let url = "http://a.kawasaki.jp".asURL!
let expected = url.publicSuffix
XCTAssertEqual(expected, nil)
XCTAssertEqual(url.host?.publicSuffix, nil)
}

func testWildCardDomainWithManySubdomains() {
// TLD Entry: *.kawasaki.jp
let url = "http://a.b.c.d.kawasaki.jp".asURL!
let expected = url.publicSuffix
XCTAssertEqual("d.kawasaki.jp", expected)
XCTAssertEqual("d.kawasaki.jp", url.host?.publicSuffix)
}

func testExceptionDomain() {
// TLD Entry: !city.kawasaki.jp
let url = "http://city.kawasaki.jp".asURL!
let expected = url.publicSuffix!
XCTAssertEqual("kawasaki.jp", expected)
XCTAssertEqual("kawasaki.jp", url.host?.publicSuffix)
}

//MARK: Base Domain
Expand All @@ -144,41 +179,47 @@ class NSURLExtensionsTests: XCTestCase {
let url = "http://bbc.co.uk".asURL!
let expected = url.baseDomain!
XCTAssertEqual("bbc.co.uk", expected)
XCTAssertEqual("bbc.co.uk", url.host?.baseDomain)
}

func testNormalBaseSubdomainWithAdditionalSubdomain() {
// TLD Entry: co.uk
let url = "http://a.bbc.co.uk".asURL!
let expected = url.baseDomain!
XCTAssertEqual("bbc.co.uk", expected)
XCTAssertEqual("bbc.co.uk", url.host?.baseDomain)
}

func testBaseDomainForWildcardDomain() {
// TLD Entry: *.kawasaki.jp
let url = "http://a.b.kawasaki.jp".asURL!
let expected = url.baseDomain!
XCTAssertEqual("a.b.kawasaki.jp", expected)
XCTAssertEqual("a.b.kawasaki.jp", url.host?.baseDomain)
}

func testBaseDomainForWildcardDomainWithAdditionalSubdomain() {
// TLD Entry: *.kawasaki.jp
let url = "http://a.b.c.kawasaki.jp".asURL!
let expected = url.baseDomain!
XCTAssertEqual("b.c.kawasaki.jp", expected)
XCTAssertEqual("b.c.kawasaki.jp", url.host?.baseDomain)
}

func testBaseDomainForExceptionDomain() {
// TLD Entry: !city.kawasaki.jp
let url = "http://city.kawasaki.jp".asURL!
let expected = url.baseDomain!
XCTAssertEqual("city.kawasaki.jp", expected)
XCTAssertEqual("city.kawasaki.jp", url.host?.baseDomain)
}

func testBaseDomainForExceptionDomainWithAdditionalSubdomain() {
// TLD Entry: !city.kawasaki.jp
let url = "http://a.city.kawasaki.jp".asURL!
let expected = url.baseDomain!
XCTAssertEqual("city.kawasaki.jp", expected)
XCTAssertEqual("city.kawasaki.jp", url.host?.baseDomain)
}

func testBugzillaURLDomain() {
Expand All @@ -195,6 +236,7 @@ class NSURLExtensionsTests: XCTestCase {
let url = "http://[::1]/foo/bar".asURL!
XCTAssertTrue(url.isIPv6)
XCTAssertNil(url.baseDomain)
XCTAssertNil("[::1]".baseDomain)
XCTAssertEqual(url.normalizedHost()!, "[::1]")
}

Expand Down

0 comments on commit b50ef96

Please sign in to comment.