diff options
author | davidben@chromium.org <davidben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-07 01:10:02 +0000 |
---|---|---|
committer | davidben@chromium.org <davidben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-07 01:10:02 +0000 |
commit | 8df162ae8daedfa09971f7b59420212df505a2b7 (patch) | |
tree | b7e71c3ce4d3f4dae7735deb8c0b2d9f046ea582 /net/url_request | |
parent | 29810ee54b8cd8b3fd0177c48daffc1c85a94d65 (diff) | |
download | chromium_src-8df162ae8daedfa09971f7b59420212df505a2b7.zip chromium_src-8df162ae8daedfa09971f7b59420212df505a2b7.tar.gz chromium_src-8df162ae8daedfa09971f7b59420212df505a2b7.tar.bz2 |
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
Diffstat (limited to 'net/url_request')
-rw-r--r-- | net/url_request/url_request_unittest.cc | 46 |
1 files changed, 46 insertions, 0 deletions
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<HTTPSTestServer> 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; { |