Implement a MockCertVerifier that can be used to avoid
calling OS API routines for certificate verification. This
allows tests that depend on SSL to cycle noticably faster,
particularly when under memory instrumentation.

R=wtc
BUG=none
TEST=existing unittests


Review URL: http://codereview.chromium.org/9956047

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@131509 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/net/socket/ssl_server_socket_unittest.cc b/net/socket/ssl_server_socket_unittest.cc
index b456b74..97841ff 100644
--- a/net/socket/ssl_server_socket_unittest.cc
+++ b/net/socket/ssl_server_socket_unittest.cc
@@ -29,11 +29,11 @@
 #include "net/base/address_list.h"
 #include "net/base/cert_status_flags.h"
 #include "net/base/cert_test_util.h"
-#include "net/base/cert_verifier.h"
 #include "net/base/completion_callback.h"
 #include "net/base/host_port_pair.h"
 #include "net/base/io_buffer.h"
 #include "net/base/ip_endpoint.h"
+#include "net/base/mock_cert_verifier.h"
 #include "net/base/net_errors.h"
 #include "net/base/net_log.h"
 #include "net/base/ssl_config_service.h"
@@ -57,8 +57,7 @@
         ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)) {
   }
 
-  virtual int Read(IOBuffer* buf, int buf_len,
-                   const CompletionCallback& callback) {
+  int Read(IOBuffer* buf, int buf_len, const CompletionCallback& callback) {
     if (data_.empty()) {
       read_callback_ = callback;
       read_buf_ = buf;
@@ -68,8 +67,7 @@
     return PropogateData(buf, buf_len);
   }
 
-  virtual int Write(IOBuffer* buf, int buf_len,
-                    const CompletionCallback& callback) {
+  int Write(IOBuffer* buf, int buf_len, const CompletionCallback& callback) {
     data_.push(new net::DrainableIOBuffer(buf, buf_len));
     MessageLoop::current()->PostTask(
         FROM_HERE, base::Bind(&FakeDataChannel::DoReadCallback,
@@ -251,7 +249,8 @@
  public:
   SSLServerSocketTest()
       : socket_factory_(net::ClientSocketFactory::GetDefaultFactory()),
-        cert_verifier_(net::CertVerifier::CreateDefault()) {
+        cert_verifier_(new MockCertVerifier()) {
+    cert_verifier_->set_default_result(net::CERT_STATUS_AUTHORITY_INVALID);
   }
 
  protected:
@@ -308,7 +307,7 @@
   scoped_ptr<net::SSLClientSocket> client_socket_;
   scoped_ptr<net::SSLServerSocket> server_socket_;
   net::ClientSocketFactory* socket_factory_;
-  scoped_ptr<net::CertVerifier> cert_verifier_;
+  scoped_ptr<net::MockCertVerifier> cert_verifier_;
 };
 
 // SSLServerSocket is only implemented using NSS.
@@ -459,14 +458,14 @@
   int rv = server_socket_->ExportKeyingMaterial(kKeyingLabel,
                                                 false, kKeyingContext,
                                                 server_out, sizeof(server_out));
-  ASSERT_EQ(rv, net::OK);
+  ASSERT_EQ(net::OK, rv);
 
   unsigned char client_out[kKeyingMaterialSize];
   rv = client_socket_->ExportKeyingMaterial(kKeyingLabel,
                                             false, kKeyingContext,
                                             client_out, sizeof(client_out));
-  ASSERT_EQ(rv, net::OK);
-  EXPECT_TRUE(memcmp(server_out, client_out, sizeof(server_out)) == 0);
+  ASSERT_EQ(net::OK, rv);
+  EXPECT_EQ(0, memcmp(server_out, client_out, sizeof(server_out)));
 
   const char* kKeyingLabelBad = "EXPERIMENTAL-server-socket-test-bad";
   unsigned char client_bad[kKeyingMaterialSize];
@@ -474,7 +473,7 @@
                                             false, kKeyingContext,
                                             client_bad, sizeof(client_bad));
   ASSERT_EQ(rv, net::OK);
-  EXPECT_TRUE(memcmp(server_out, client_bad, sizeof(server_out)) != 0);
+  EXPECT_NE(0, memcmp(server_out, client_bad, sizeof(server_out)));
 }
 #endif