Revision control
Copy as Markdown
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
import XCTest
@testable import WebEngine
final class LocalRequestPolicyDeciderTests: XCTestCase {
private var mockDecider: MockPolicyDecider!
override func setUp() {
super.setUp()
mockDecider = MockPolicyDecider()
}
override func tearDown() {
mockDecider = nil
super.tearDown()
}
func testPolicyForPopupNavigation_blockUnprivilegedLocalRequest() {
let subject = createSubject()
let policy = subject.policyForPopupNavigation(action: MockNavigationAction(url: url))
XCTAssertEqual(policy, .cancel)
}
func testPolicyForPopupNavigation_blockUnsupportedScheme() {
let subject = createSubject()
let policy = subject.policyForPopupNavigation(action: MockNavigationAction(url: url))
XCTAssertEqual(policy, .cancel)
}
func testPolicyForPopupNavigation_forwardsUnsupportedSchemeToNextDecider() {
let subject = createSubject(next: mockDecider)
_ = subject.policyForPopupNavigation(action: MockNavigationAction(url: url))
XCTAssertEqual(mockDecider.policyForPopupNavigationCalled, 1)
}
func testPolicyForPopupNavigation_allowsAuthorizedLocalScheme() {
let subject = createSubject()
let policy = subject.policyForPopupNavigation(action: MockNavigationAction(url: url))
XCTAssertEqual(policy, .allow)
}
private func createSubject(next: WKPolicyDecider? = nil) -> LocalRequestPolicyDecider {
return LocalRequestPolicyDecider(nextDecider: next)
}
}