-
Notifications
You must be signed in to change notification settings - Fork 16
/
Copy pathAppTransportSecuritySettingsTests.swift
103 lines (83 loc) · 3.28 KB
/
AppTransportSecuritySettingsTests.swift
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
import XCTest
#if SWIFT_PACKAGE
@testable import CoreAPI
#else
@testable import WordPressKit
#endif
final class AppTransportSecuritySettingsTests: XCTestCase {
private var exampleURL = URL(string: "https://example.com")!
func testReturnsTrueIfAllowsLocalNetworkingIsTrue() throws {
// Given
let provider = FakeInfoDictionaryObjectProvider(appTransportSecurity: [
"NSAllowsLocalNetworking": true,
// This will be ignored
"NSAllowsArbitraryLoads": true
])
let appTransportSecurity = AppTransportSecuritySettings(provider)
// When
let secureAccessOnly = appTransportSecurity.secureAccessOnly(for: exampleURL)
// Then
XCTAssertTrue(secureAccessOnly)
}
func testReturnsFalseIfAllowsArbitraryLoadsIsTrue() throws {
// Given
let provider = FakeInfoDictionaryObjectProvider(appTransportSecurity: [
"NSAllowsArbitraryLoads": true
])
let appTransportSecurity = AppTransportSecuritySettings(provider)
// When
let secureAccessOnly = appTransportSecurity.secureAccessOnly(for: exampleURL)
// Then
XCTAssertFalse(secureAccessOnly)
}
func testReturnsTrueByDefault() throws {
// Given
let provider = FakeInfoDictionaryObjectProvider(appTransportSecurity: nil)
let appTransportSecurity = AppTransportSecuritySettings(provider)
// When
let secureAccessOnly = appTransportSecurity.secureAccessOnly(for: exampleURL)
// Then
XCTAssertTrue(secureAccessOnly)
}
func testReturnsTrueIfNothingIsDefined() throws {
// Given
let provider = FakeInfoDictionaryObjectProvider(appTransportSecurity: [String: Any]())
let appTransportSecurity = AppTransportSecuritySettings(provider)
// When
let secureAccessOnly = appTransportSecurity.secureAccessOnly(for: exampleURL)
// Then
XCTAssertTrue(secureAccessOnly)
}
func testReturnsFalseIfAllowsInsecureHTTPLoadsIsTrue() throws {
// Given
let provider = FakeInfoDictionaryObjectProvider(appTransportSecurity: [
"NSExceptionDomains": [
"shiki.me": [
"NSExceptionAllowsInsecureHTTPLoads": true
]
]
])
let appTransportSecurity = AppTransportSecuritySettings(provider)
let url = try XCTUnwrap(URL(string: "http://shiki.me"))
// When
let secureAccessOnly = appTransportSecurity.secureAccessOnly(for: url)
// Then
XCTAssertFalse(secureAccessOnly)
}
func testReturnsTrueIfAllowsInsecureHTTPLoadsIsNotProvided() throws {
// Given
let provider = FakeInfoDictionaryObjectProvider(appTransportSecurity: [
"NSExceptionDomains": [
"shiki.me": [String: Any]()
],
// This value will be ignored because there is an exception for shiki.me
"NSAllowsArbitraryLoads": true
])
let appTransportSecurity = AppTransportSecuritySettings(provider)
let url = try XCTUnwrap(URL(string: "http://shiki.me"))
// When
let secureAccessOnly = appTransportSecurity.secureAccessOnly(for: url)
// Then
XCTAssertTrue(secureAccessOnly)
}
}