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
TestTCPSocketPrivateTrusted(TestingInstance * instance)14 TestTCPSocketPrivateTrusted::TestTCPSocketPrivateTrusted(
15 TestingInstance* instance)
16 : TestCase(instance) {
17 }
18
Init()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
RunTests(const std::string & filter)37 void TestTCPSocketPrivateTrusted::RunTests(const std::string& filter) {
38 RUN_CALLBACK_TEST(TestTCPSocketPrivateTrusted, GetServerCertificate, filter);
39 }
40
TestGetServerCertificate()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