         waitForExpectations(timeout: timeout, handler: nil)
 
         // Then
-    #if os(iOS) || os(macOS)
-        if #available(iOS 10.1, macOS 10.12.0, *) {
+        if #available(iOS 10.1, macOS 10.12.0, tvOS 10.1, *) {
             XCTAssertNotNil(error, "error should not be nil")
         } else {
             XCTAssertNil(error, "error should be nil")
         }
-    #else
+    }
+
+    // MARK: Server Trust Policy - Public Key Pinning Tests
+
+    func testThatExpiredCertificateRequestFailsWhenPinningLeafPublicKeyWithCertificateChainValidation() {
+        // Given
+        let publicKeys = [TestPublicKeys.leaf]
+        let policies: [String: ServerTrustPolicy] = [
+            expiredHost: .pinPublicKeys(publicKeys: publicKeys, validateCertificateChain: true, validateHost: true)
+        ]
+
+        let manager = SessionManager(
+            configuration: configuration,
+            serverTrustPolicyManager: ServerTrustPolicyManager(policies: policies)
+        )
+
+        let expectation = self.expectation(description: "\(expiredURLString)")
+        var error: Error?
+
+        // When
+        manager.request(expiredURLString)
+            .response { resp in
+                error = resp.error
+                expectation.fulfill()
+            }
+
+        waitForExpectations(timeout: timeout, handler: nil)
+
+        // Then
+        XCTAssertNotNil(error, "error should not be nil")
+
+        if let error = error as? URLError {
+            XCTAssertEqual(error.code, .cancelled, "code should be cancelled")
+        } else {
+            XCTFail("error should be an URLError")
+        }
+    }
+
+    func testThatExpiredCertificateRequestSucceedsWhenPinningLeafPublicKeyWithoutCertificateChainValidation() {
+        // Given
+        let publicKeys = [TestPublicKeys.leaf]
+        let policies: [String: ServerTrustPolicy] = [
+            expiredHost: .pinPublicKeys(publicKeys: publicKeys, validateCertificateChain: false, validateHost: true)
+        ]
+
+        let manager = SessionManager(
+            configuration: configuration,
+            serverTrustPolicyManager: ServerTrustPolicyManager(policies: policies)
+        )
+
+        let expectation = self.expectation(description: "\(expiredURLString)")
+        var error: Error?
+
+        // When
+        manager.request(expiredURLString)
+            .response { resp in
+                error = resp.error
+                expectation.fulfill()
+            }
+
+        waitForExpectations(timeout: timeout, handler: nil)
+
+        // Then
         XCTAssertNil(error, "error should be nil")
-    #endif
-    }
-
-    // MARK: Server Trust Policy - Public Key Pinning Tests
-
-    func testThatExpiredCertificateRequestFailsWhenPinningLeafPublicKeyWithCertificateChainValidation() {
-        // Given
-        let publicKeys = [TestPublicKeys.leaf]
-        let policies: [String: ServerTrustPolicy] = [
-            expiredHost: .pinPublicKeys(publicKeys: publicKeys, validateCertificateChain: true, validateHost: true)
-        ]
-
-        let manager = SessionManager(
-            configuration: configuration,
-            serverTrustPolicyManager: ServerTrustPolicyManager(policies: policies)
-        )
-
-        let expectation = self.expectation(description: "\(expiredURLString)")
-        var error: Error?
-
-        // When
-        manager.request(expiredURLString)
-            .response { resp in
-                error = resp.error
-                expectation.fulfill()
-            }
-
-        waitForExpectations(timeout: timeout, handler: nil)
-
-        // Then
-        XCTAssertNotNil(error, "error should not be nil")
-
-        if let error = error as? URLError {
-            XCTAssertEqual(error.code, .cancelled, "code should be cancelled")
-        } else {
-            XCTFail("error should be an URLError")
-        }
-    }
-
-    func testThatExpiredCertificateRequestSucceedsWhenPinningLeafPublicKeyWithoutCertificateChainValidation() {
-        // Given
-        let publicKeys = [TestPublicKeys.leaf]
+    }
+
+    func testThatExpiredCertificateRequestSucceedsWhenPinningIntermediateCAPublicKeyWithoutCertificateChainValidation() {
+        // Given
+        let publicKeys = [TestPublicKeys.intermediateCA2]
         let policies: [String: ServerTrustPolicy] = [
             expiredHost: .pinPublicKeys(publicKeys: publicKeys, validateCertificateChain: false, validateHost: true)
         ]

        }
    }

    func testThatRevokedCertificateRequestSucceedsWithDefaultServerTrustPolicy() {
        // Given
        let defaultPolicy = ServerTrustPolicy.performDefaultEvaluation(validateHost: true)
        let policies = [revokedHost: defaultPolicy]

        waitForExpectations(timeout: timeout, handler: nil)

        // Then
        if #available(iOS 10.1, macOS 10.12.0, tvOS 10.1, *) {
            XCTAssertNotNil(error, "error should not be nil")
        } else {
            XCTAssertNil(error, "error should be nil")
        }
    }

    // MARK: Server Trust Policy - Disabling Evaluation Tests
