1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "ppapi/tests/test_tcp_socket_private_trusted.h" 6 7 #include "ppapi/cpp/private/tcp_socket_private.h" 8 #include "ppapi/cpp/private/x509_certificate_private.h" 9 #include "ppapi/tests/testing_instance.h" 10 #include "ppapi/tests/test_utils.h" 11 12 REGISTER_TEST_CASE(TCPSocketPrivateTrusted); 13 14 TestTCPSocketPrivateTrusted::TestTCPSocketPrivateTrusted( 15 TestingInstance* instance) 16 : TestCase(instance) { 17 } 18 19 bool TestTCPSocketPrivateTrusted::Init() { 20 if (!pp::TCPSocketPrivate::IsAvailable()) 21 return false; 22 23 // We need something to connect to, so we connect to the HTTP server whence we 24 // came. Grab the host and port. 25 if (!EnsureRunningOverHTTP()) 26 return false; 27 28 if (!GetLocalHostPort(instance_->pp_instance(), &host_, &port_)) 29 return false; 30 31 // Get the port for the SSL server. 32 ssl_port_ = instance_->ssl_server_port(); 33 34 return true; 35 } 36 37 void TestTCPSocketPrivateTrusted::RunTests(const std::string& filter) { 38 RUN_CALLBACK_TEST(TestTCPSocketPrivateTrusted, GetServerCertificate, filter); 39 } 40 41 std::string TestTCPSocketPrivateTrusted::TestGetServerCertificate() { 42 pp::TCPSocketPrivate socket(instance_); 43 TestCompletionCallback cb(instance_->pp_instance(), callback_type()); 44 45 cb.WaitForResult( 46 socket.Connect(host_.c_str(), ssl_port_, cb.GetCallback())); 47 CHECK_CALLBACK_BEHAVIOR(cb); 48 ASSERT_EQ(PP_OK, cb.result()); 49 50 cb.WaitForResult( 51 socket.SSLHandshake(host_.c_str(), ssl_port_, cb.GetCallback())); 52 CHECK_CALLBACK_BEHAVIOR(cb); 53 ASSERT_EQ(PP_OK, cb.result()); 54 55 const pp::X509CertificatePrivate& cert = socket.GetServerCertificate(); 56 ASSERT_EQ( 57 cert.GetField(PP_X509CERTIFICATE_PRIVATE_ISSUER_COMMON_NAME).AsString(), 58 "Test Root CA"); 59 ASSERT_EQ( 60 cert.GetField(PP_X509CERTIFICATE_PRIVATE_SUBJECT_COMMON_NAME).AsString(), 61 "127.0.0.1"); 62 PASS(); 63 } 64