| Index: ios/web/web_state/wk_web_view_security_util_unittest.mm
|
| diff --git a/ios/web/web_state/wk_web_view_security_util_unittest.mm b/ios/web/web_state/wk_web_view_security_util_unittest.mm
|
| index 88e7701efc0a0c8b06062710acc4c54e4cd51320..30b360a760c62c154b2fa3d5347e53f12cb39b0f 100644
|
| --- a/ios/web/web_state/wk_web_view_security_util_unittest.mm
|
| +++ b/ios/web/web_state/wk_web_view_security_util_unittest.mm
|
| @@ -16,12 +16,15 @@
|
| #include "net/cert/x509_util.h"
|
| #include "net/ssl/ssl_info.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| +#include "testing/gtest_mac.h"
|
| #include "testing/platform_test.h"
|
|
|
| namespace web {
|
| namespace {
|
| // Subject for testing self-signed certificate.
|
| const char kTestSubject[] = "self-signed";
|
| +// Hostname for testing SecTrustRef objects.
|
| +NSString* const kTestHost = @"www.example.com";
|
|
|
| // Returns an autoreleased certificate chain for testing. Chain will contain a
|
| // single self-signed cert with |subject| as a subject.
|
| @@ -100,6 +103,46 @@ TEST_F(WKWebViewSecurityUtilTest, CreationCertFromNilTrust) {
|
| EXPECT_FALSE(CreateCertFromTrust(nil));
|
| }
|
|
|
| +// Tests CreateServerTrustFromChain with valid input.
|
| +TEST_F(WKWebViewSecurityUtilTest, CreationServerTrust) {
|
| + // Create server trust.
|
| + NSArray* chain = MakeTestCertChain(kTestSubject);
|
| + base::ScopedCFTypeRef<SecTrustRef> server_trust(
|
| + CreateServerTrustFromChain(chain, kTestHost));
|
| + EXPECT_TRUE(server_trust);
|
| +
|
| + // Verify chain.
|
| + EXPECT_EQ(static_cast<CFIndex>(chain.count),
|
| + SecTrustGetCertificateCount(server_trust));
|
| + [chain enumerateObjectsUsingBlock:^(id expected_cert, NSUInteger i, BOOL*) {
|
| + id actual_cert = static_cast<id>(SecTrustGetCertificateAtIndex(
|
| + server_trust.get(), static_cast<CFIndex>(i)));
|
| + EXPECT_EQ(expected_cert, actual_cert);
|
| + }];
|
| +
|
| + // Verify policies.
|
| + CFArrayRef policies = nullptr;
|
| + EXPECT_EQ(errSecSuccess, SecTrustCopyPolicies(server_trust.get(), &policies));
|
| + EXPECT_EQ(1, CFArrayGetCount(policies));
|
| + SecPolicyRef policy = (SecPolicyRef)CFArrayGetValueAtIndex(policies, 0);
|
| + base::ScopedCFTypeRef<CFDictionaryRef> properties(
|
| + SecPolicyCopyProperties(policy));
|
| + NSString* name = static_cast<NSString*>(
|
| + CFDictionaryGetValue(properties.get(), kSecPolicyName));
|
| + EXPECT_NSEQ(kTestHost, name);
|
| + CFRelease(policies);
|
| +}
|
| +
|
| +// Tests CreateServerTrustFromChain with nil chain.
|
| +TEST_F(WKWebViewSecurityUtilTest, CreationServerTrustFromNilChain) {
|
| + EXPECT_FALSE(CreateServerTrustFromChain(nil, kTestHost));
|
| +}
|
| +
|
| +// Tests CreateServerTrustFromChain with empty chain.
|
| +TEST_F(WKWebViewSecurityUtilTest, CreationServerTrustFromEmptyChain) {
|
| + EXPECT_FALSE(CreateServerTrustFromChain(@[], kTestHost));
|
| +}
|
| +
|
| // Tests that IsWKWebViewSSLError returns true for NSError with NSURLErrorDomain
|
| // domain and NSURLErrorSecureConnectionFailed error code.
|
| TEST_F(WKWebViewSecurityUtilTest, CheckSecureConnectionFailedError) {
|
| @@ -207,4 +250,31 @@ TEST_F(WKWebViewSecurityUtilTest, SSLInfoFromErrorWithCert) {
|
| EXPECT_TRUE(info.cert->subject().GetDisplayName() == kTestSubject);
|
| }
|
|
|
| +// Tests GetSecurityStyleFromTrustResult with bad SecTrustResultType result.
|
| +TEST_F(WKWebViewSecurityUtilTest, GetSecurityStyleFromBadResult) {
|
| + EXPECT_EQ(SECURITY_STYLE_AUTHENTICATION_BROKEN,
|
| + GetSecurityStyleFromTrustResult(kSecTrustResultDeny));
|
| + EXPECT_EQ(
|
| + SECURITY_STYLE_AUTHENTICATION_BROKEN,
|
| + GetSecurityStyleFromTrustResult(kSecTrustResultRecoverableTrustFailure));
|
| + EXPECT_EQ(SECURITY_STYLE_AUTHENTICATION_BROKEN,
|
| + GetSecurityStyleFromTrustResult(kSecTrustResultFatalTrustFailure));
|
| + EXPECT_EQ(SECURITY_STYLE_AUTHENTICATION_BROKEN,
|
| + GetSecurityStyleFromTrustResult(kSecTrustResultOtherError));
|
| +}
|
| +
|
| +// Tests GetSecurityStyleFromTrustResult with good SecTrustResultType result.
|
| +TEST_F(WKWebViewSecurityUtilTest, GetSecurityStyleFromGoodResult) {
|
| + EXPECT_EQ(SECURITY_STYLE_AUTHENTICATED,
|
| + GetSecurityStyleFromTrustResult(kSecTrustResultProceed));
|
| + EXPECT_EQ(SECURITY_STYLE_AUTHENTICATED,
|
| + GetSecurityStyleFromTrustResult(kSecTrustResultUnspecified));
|
| +}
|
| +
|
| +// Tests GetSecurityStyleFromTrustResult with invalid SecTrustResultType result.
|
| +TEST_F(WKWebViewSecurityUtilTest, GetSecurityStyleFromInvalidResult) {
|
| + EXPECT_EQ(SECURITY_STYLE_UNKNOWN,
|
| + GetSecurityStyleFromTrustResult(kSecTrustResultInvalid));
|
| +}
|
| +
|
| } // namespace web
|
|
|