| OLD | NEW | 
|    1 // Copyright 2016 The Chromium Authors. All rights reserved. |    1 // Copyright 2016 The Chromium Authors. All rights reserved. | 
|    2 // Use of this source code is governed by a BSD-style license that can be |    2 // Use of this source code is governed by a BSD-style license that can be | 
|    3 // found in the LICENSE file. |    3 // found in the LICENSE file. | 
|    4  |    4  | 
|    5 #include "components/certificate_transparency/log_dns_client.h" |    5 #include "components/certificate_transparency/log_dns_client.h" | 
|    6  |    6  | 
|    7 #include <memory> |    7 #include <memory> | 
|    8 #include <string> |    8 #include <string> | 
|    9 #include <utility> |    9 #include <utility> | 
|   10 #include <vector> |   10 #include <vector> | 
| (...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  116  protected: |  116  protected: | 
|  117   LogDnsClientTest() |  117   LogDnsClientTest() | 
|  118       : network_change_notifier_(net::NetworkChangeNotifier::CreateMock()) { |  118       : network_change_notifier_(net::NetworkChangeNotifier::CreateMock()) { | 
|  119     mock_dns_.SetSocketReadMode(GetParam()); |  119     mock_dns_.SetSocketReadMode(GetParam()); | 
|  120     mock_dns_.InitializeDnsConfig(); |  120     mock_dns_.InitializeDnsConfig(); | 
|  121   } |  121   } | 
|  122  |  122  | 
|  123   void QueryLeafIndex(base::StringPiece log_domain, |  123   void QueryLeafIndex(base::StringPiece log_domain, | 
|  124                       base::StringPiece leaf_hash, |  124                       base::StringPiece leaf_hash, | 
|  125                       MockLeafIndexCallback* callback) { |  125                       MockLeafIndexCallback* callback) { | 
|  126     LogDnsClient log_client(mock_dns_.CreateDnsClient(), net::BoundNetLog()); |  126     LogDnsClient log_client(mock_dns_.CreateDnsClient(), | 
 |  127                             net::NetLogWithSource()); | 
|  127     log_client.QueryLeafIndex(log_domain, leaf_hash, callback->AsCallback()); |  128     log_client.QueryLeafIndex(log_domain, leaf_hash, callback->AsCallback()); | 
|  128     callback->WaitUntilRun(); |  129     callback->WaitUntilRun(); | 
|  129   } |  130   } | 
|  130  |  131  | 
|  131   void QueryAuditProof(base::StringPiece log_domain, |  132   void QueryAuditProof(base::StringPiece log_domain, | 
|  132                        uint64_t leaf_index, |  133                        uint64_t leaf_index, | 
|  133                        uint64_t tree_size, |  134                        uint64_t tree_size, | 
|  134                        MockAuditProofCallback* callback) { |  135                        MockAuditProofCallback* callback) { | 
|  135     LogDnsClient log_client(mock_dns_.CreateDnsClient(), net::BoundNetLog()); |  136     LogDnsClient log_client(mock_dns_.CreateDnsClient(), | 
 |  137                             net::NetLogWithSource()); | 
|  136     log_client.QueryAuditProof(log_domain, leaf_index, tree_size, |  138     log_client.QueryAuditProof(log_domain, leaf_index, tree_size, | 
|  137                                callback->AsCallback()); |  139                                callback->AsCallback()); | 
|  138     callback->WaitUntilRun(); |  140     callback->WaitUntilRun(); | 
|  139   } |  141   } | 
|  140  |  142  | 
|  141   // This will be the NetworkChangeNotifier singleton for the duration of the |  143   // This will be the NetworkChangeNotifier singleton for the duration of the | 
|  142   // test. It is accessed statically by LogDnsClient. |  144   // test. It is accessed statically by LogDnsClient. | 
|  143   std::unique_ptr<net::NetworkChangeNotifier> network_change_notifier_; |  145   std::unique_ptr<net::NetworkChangeNotifier> network_change_notifier_; | 
|  144   // Queues and handles asynchronous DNS tasks. Indirectly used by LogDnsClient, |  146   // Queues and handles asynchronous DNS tasks. Indirectly used by LogDnsClient, | 
|  145   // the underlying net::DnsClient, and NetworkChangeNotifier. |  147   // the underlying net::DnsClient, and NetworkChangeNotifier. | 
| (...skipping 361 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  507   MockAuditProofCallback callback; |  509   MockAuditProofCallback callback; | 
|  508   QueryAuditProof("ct.test", 123456, 999999, &callback); |  510   QueryAuditProof("ct.test", 123456, 999999, &callback); | 
|  509   ASSERT_TRUE(callback.called()); |  511   ASSERT_TRUE(callback.called()); | 
|  510   EXPECT_THAT(callback.net_error(), IsError(net::ERR_DNS_TIMED_OUT)); |  512   EXPECT_THAT(callback.net_error(), IsError(net::ERR_DNS_TIMED_OUT)); | 
|  511   EXPECT_THAT(callback.proof(), IsNull()); |  513   EXPECT_THAT(callback.proof(), IsNull()); | 
|  512 } |  514 } | 
|  513  |  515  | 
|  514 TEST_P(LogDnsClientTest, AdoptsLatestDnsConfigIfValid) { |  516 TEST_P(LogDnsClientTest, AdoptsLatestDnsConfigIfValid) { | 
|  515   std::unique_ptr<net::DnsClient> tmp = mock_dns_.CreateDnsClient(); |  517   std::unique_ptr<net::DnsClient> tmp = mock_dns_.CreateDnsClient(); | 
|  516   net::DnsClient* dns_client = tmp.get(); |  518   net::DnsClient* dns_client = tmp.get(); | 
|  517   LogDnsClient log_client(std::move(tmp), net::BoundNetLog()); |  519   LogDnsClient log_client(std::move(tmp), net::NetLogWithSource()); | 
|  518  |  520  | 
|  519   // Get the current DNS config, modify it and broadcast the update. |  521   // Get the current DNS config, modify it and broadcast the update. | 
|  520   net::DnsConfig config(*dns_client->GetConfig()); |  522   net::DnsConfig config(*dns_client->GetConfig()); | 
|  521   ASSERT_NE(123, config.attempts); |  523   ASSERT_NE(123, config.attempts); | 
|  522   config.attempts = 123; |  524   config.attempts = 123; | 
|  523   mock_dns_.SetDnsConfig(config); |  525   mock_dns_.SetDnsConfig(config); | 
|  524  |  526  | 
|  525   // Let the DNS config change propogate. |  527   // Let the DNS config change propogate. | 
|  526   base::RunLoop().RunUntilIdle(); |  528   base::RunLoop().RunUntilIdle(); | 
|  527   EXPECT_EQ(123, dns_client->GetConfig()->attempts); |  529   EXPECT_EQ(123, dns_client->GetConfig()->attempts); | 
|  528 } |  530 } | 
|  529  |  531  | 
|  530 TEST_P(LogDnsClientTest, IgnoresLatestDnsConfigIfInvalid) { |  532 TEST_P(LogDnsClientTest, IgnoresLatestDnsConfigIfInvalid) { | 
|  531   std::unique_ptr<net::DnsClient> tmp = mock_dns_.CreateDnsClient(); |  533   std::unique_ptr<net::DnsClient> tmp = mock_dns_.CreateDnsClient(); | 
|  532   net::DnsClient* dns_client = tmp.get(); |  534   net::DnsClient* dns_client = tmp.get(); | 
|  533   LogDnsClient log_client(std::move(tmp), net::BoundNetLog()); |  535   LogDnsClient log_client(std::move(tmp), net::NetLogWithSource()); | 
|  534  |  536  | 
|  535   // Get the current DNS config, modify it and broadcast the update. |  537   // Get the current DNS config, modify it and broadcast the update. | 
|  536   net::DnsConfig config(*dns_client->GetConfig()); |  538   net::DnsConfig config(*dns_client->GetConfig()); | 
|  537   ASSERT_THAT(config.nameservers, Not(IsEmpty())); |  539   ASSERT_THAT(config.nameservers, Not(IsEmpty())); | 
|  538   config.nameservers.clear();  // Makes config invalid |  540   config.nameservers.clear();  // Makes config invalid | 
|  539   mock_dns_.SetDnsConfig(config); |  541   mock_dns_.SetDnsConfig(config); | 
|  540  |  542  | 
|  541   // Let the DNS config change propogate. |  543   // Let the DNS config change propogate. | 
|  542   base::RunLoop().RunUntilIdle(); |  544   base::RunLoop().RunUntilIdle(); | 
|  543   EXPECT_THAT(dns_client->GetConfig()->nameservers, Not(IsEmpty())); |  545   EXPECT_THAT(dns_client->GetConfig()->nameservers, Not(IsEmpty())); | 
|  544 } |  546 } | 
|  545  |  547  | 
|  546 INSTANTIATE_TEST_CASE_P(ReadMode, |  548 INSTANTIATE_TEST_CASE_P(ReadMode, | 
|  547                         LogDnsClientTest, |  549                         LogDnsClientTest, | 
|  548                         ::testing::Values(net::IoMode::ASYNC, |  550                         ::testing::Values(net::IoMode::ASYNC, | 
|  549                                           net::IoMode::SYNCHRONOUS)); |  551                                           net::IoMode::SYNCHRONOUS)); | 
|  550  |  552  | 
|  551 }  // namespace |  553 }  // namespace | 
|  552 }  // namespace certificate_transparency |  554 }  // namespace certificate_transparency | 
| OLD | NEW |