From 8df162ae8daedfa09971f7b59420212df505a2b7 Mon Sep 17 00:00:00 2001 From: "davidben@chromium.org" Date: Sat, 7 Aug 2010 01:10:02 +0000 Subject: Add rudimentary support for client auth in testserver.py and unit tests Nothing fancy for now. Just some tests that ERR_SSL_CLIENT_AUTH_CERT_NEEDED is returned from the socket layer, and that URLRequest requests a certificate. R=wtc BUG=51132,51127 TEST=SSLClientSocketTest.ConnectClientAuthNoCert,HTTPRequestTest.ClientAuthTest Review URL: http://codereview.chromium.org/3014055 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@55318 0039d316-1c4b-4281-b951-d872f2087c98 --- net/url_request/url_request_unittest.cc | 46 +++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) (limited to 'net/url_request') diff --git a/net/url_request/url_request_unittest.cc b/net/url_request/url_request_unittest.cc index 7398214..eb4a9bb 100644 --- a/net/url_request/url_request_unittest.cc +++ b/net/url_request/url_request_unittest.cc @@ -434,6 +434,52 @@ TEST_F(HTTPSRequestTest, HTTPSExpiredTest) { } } +namespace { + +class SSLClientAuthTestDelegate : public TestDelegate { + public: + SSLClientAuthTestDelegate() : on_certificate_requested_count_(0) { + } + virtual void OnCertificateRequested( + URLRequest* request, + net::SSLCertRequestInfo* cert_request_info) { + on_certificate_requested_count_++; + MessageLoop::current()->Quit(); + } + int on_certificate_requested_count() { + return on_certificate_requested_count_; + } + private: + int on_certificate_requested_count_; +}; + +} // namespace + +// TODO(davidben): Test the rest of the code. Specifically, +// - Filtering which certificates to select. +// - Sending a certificate back. +// - Getting a certificate request in an SSL renegotiation sending the +// HTTP request. +TEST_F(HTTPSRequestTest, ClientAuthTest) { + scoped_refptr server = + HTTPSTestServer::CreateClientAuthServer(L"net/data/ssl"); + ASSERT_TRUE(NULL != server.get()); + + SSLClientAuthTestDelegate d; + { + TestURLRequest r(server->TestServerPage(""), &d); + + r.Start(); + EXPECT_TRUE(r.is_pending()); + + MessageLoop::current()->Run(); + + EXPECT_EQ(1, d.on_certificate_requested_count()); + EXPECT_FALSE(d.received_data_before_response()); + EXPECT_EQ(0, d.bytes_received()); + } +} + TEST_F(URLRequestTestHTTP, CancelTest) { TestDelegate d; { -- cgit v1.1