@@ -101,9 +101,11 @@ using net::test::IsError;
101101using net::test::IsOk;
102102
103103using testing::_;
104- using testing::AnyOf;
104+ using testing::Bool;
105+ using testing::Combine;
105106using testing::Return;
106- using testing::Truly;
107+ using testing::Values;
108+ using testing::ValuesIn;
107109
108110namespace net {
109111
@@ -1105,13 +1107,12 @@ class SSLClientSocketReadTest
11051107 std::unique_ptr<ClientSocketFactory> wrapped_socket_factory_;
11061108};
11071109
1108- INSTANTIATE_TEST_SUITE_P (
1109- All,
1110- SSLClientSocketReadTest,
1111- ::testing::Combine (::testing::Values(READ_IF_READY_SUPPORTED,
1112- READ_IF_READY_NOT_SUPPORTED),
1113- ::testing::Values(TEST_SSL_READ_IF_READY, TEST_SSL_READ),
1114- ::testing::ValuesIn(GetTLSVersions())));
1110+ INSTANTIATE_TEST_SUITE_P (All,
1111+ SSLClientSocketReadTest,
1112+ Combine (Values(READ_IF_READY_SUPPORTED,
1113+ READ_IF_READY_NOT_SUPPORTED),
1114+ Values(TEST_SSL_READ_IF_READY, TEST_SSL_READ),
1115+ ValuesIn(GetTLSVersions())));
11151116
11161117// Verifies the correctness of GetSSLCertRequestInfo.
11171118class SSLClientSocketCertRequestInfoTest : public SSLClientSocketVersionTest {
@@ -1476,7 +1477,7 @@ class HangingCertVerifier : public CertVerifier {
14761477
14771478INSTANTIATE_TEST_SUITE_P (TLSVersion,
14781479 SSLClientSocketVersionTest,
1479- ::testing:: ValuesIn (GetTLSVersions()));
1480+ ValuesIn (GetTLSVersions()));
14801481
14811482TEST_P (SSLClientSocketVersionTest, Connect) {
14821483 ASSERT_TRUE (
@@ -2717,7 +2718,7 @@ TEST_P(SSLClientSocketVersionTest, VerifyReturnChainProperlyOrdered) {
27172718
27182719INSTANTIATE_TEST_SUITE_P (TLSVersion,
27192720 SSLClientSocketCertRequestInfoTest,
2720- ::testing:: ValuesIn (GetTLSVersions()));
2721+ ValuesIn (GetTLSVersions()));
27212722
27222723TEST_P (SSLClientSocketCertRequestInfoTest,
27232724 DontRequestClientCertsIfServerCertInvalid) {
@@ -4046,7 +4047,7 @@ TEST_P(SSLClientSocketKeyUsageTest, RSAKeyUsageEnforcedForKnownRoot) {
40464047
40474048INSTANTIATE_TEST_SUITE_P (RSAKeyUsageInstantiation,
40484049 SSLClientSocketKeyUsageTest,
4049- ::testing:: ValuesIn (kKeyUsageTests ));
4050+ ValuesIn (kKeyUsageTests ));
40504051
40514052// Test that when CT is required (in this case, by the delegate), the
40524053// absence of CT information is a socket error.
@@ -5483,13 +5484,11 @@ class TLS13DowngradeTest
54835484INSTANTIATE_TEST_SUITE_P (
54845485 All,
54855486 TLS13DowngradeTest,
5486- ::testing::Combine (
5487- ::testing::Values (
5488- SpawnedTestServer::SSLOptions::TLS_MAX_VERSION_TLS1_0,
5489- SpawnedTestServer::SSLOptions::TLS_MAX_VERSION_TLS1_1,
5490- SpawnedTestServer::SSLOptions::TLS_MAX_VERSION_TLS1_2),
5491- ::testing::Values(false , true ),
5492- ::testing::Values(false , true )));
5487+ Combine (Values(SpawnedTestServer::SSLOptions::TLS_MAX_VERSION_TLS1_0,
5488+ SpawnedTestServer::SSLOptions::TLS_MAX_VERSION_TLS1_1,
5489+ SpawnedTestServer::SSLOptions::TLS_MAX_VERSION_TLS1_2),
5490+ Bool(),
5491+ Bool()));
54935492
54945493TEST_P (TLS13DowngradeTest, DowngradeEnforced) {
54955494 SpawnedTestServer::SSLOptions ssl_options;
@@ -5565,7 +5564,7 @@ class SSLHandshakeDetailsTest
55655564
55665565INSTANTIATE_TEST_SUITE_P (All,
55675566 SSLHandshakeDetailsTest,
5568- ::testing:: ValuesIn (kSSLHandshakeDetailsParams ));
5567+ ValuesIn (kSSLHandshakeDetailsParams ));
55695568
55705569TEST_P (SSLHandshakeDetailsTest, Metrics) {
55715570 // Enable all test features in the server.
@@ -5945,4 +5944,62 @@ TEST_F(SSLClientSocketTest, VersionMinOverride) {
59455944 EXPECT_THAT (rv, IsError (ERR_SSL_VERSION_OR_CIPHER_MISMATCH));
59465945}
59475946
5947+ class SSLClientSocketAlpsTest
5948+ : public SSLClientSocketTest,
5949+ public ::testing::WithParamInterface<std::tuple<bool , bool >> {
5950+ public:
5951+ SSLClientSocketAlpsTest ()
5952+ : client_alps_enabled_(std::get<0 >(GetParam())),
5953+ server_alps_enabled_ (std::get<1 >(GetParam())) {}
5954+ ~SSLClientSocketAlpsTest () override = default ;
5955+ const bool client_alps_enabled_;
5956+ const bool server_alps_enabled_;
5957+ };
5958+
5959+ INSTANTIATE_TEST_SUITE_P (All, SSLClientSocketAlpsTest, Combine(Bool(), Bool()));
5960+
5961+ TEST_P (SSLClientSocketAlpsTest, Alps) {
5962+ const std::string server_data = " server sends some test data" ;
5963+ const std::string client_data = " client also sends some data" ;
5964+
5965+ SSLServerConfig server_config;
5966+ server_config.alpn_protos = {kProtoHTTP2 };
5967+ if (server_alps_enabled_) {
5968+ server_config.application_settings [kProtoHTTP2 ] =
5969+ std::vector<uint8_t >(server_data.begin (), server_data.end ());
5970+ }
5971+ ASSERT_TRUE (
5972+ StartEmbeddedTestServer (EmbeddedTestServer::CERT_OK, server_config));
5973+
5974+ SSLConfig client_config;
5975+ client_config.alpn_protos = {kProtoHTTP2 };
5976+ if (client_alps_enabled_) {
5977+ client_config.application_settings [kProtoHTTP2 ] =
5978+ std::vector<uint8_t >(client_data.begin (), client_data.end ());
5979+ }
5980+
5981+ int rv;
5982+ ASSERT_TRUE (CreateAndConnectSSLClientSocket (client_config, &rv));
5983+ EXPECT_THAT (rv, IsOk ());
5984+
5985+ SSLInfo info;
5986+ ASSERT_TRUE (sock_->GetSSLInfo (&info));
5987+ EXPECT_EQ (SSL_CONNECTION_VERSION_TLS1_3,
5988+ SSLConnectionStatusToVersion (info.connection_status ));
5989+ EXPECT_EQ (SSLInfo::HANDSHAKE_FULL, info.handshake_type );
5990+
5991+ EXPECT_EQ (true , sock_->WasAlpnNegotiated ());
5992+ EXPECT_EQ (kProtoHTTP2 , sock_->GetNegotiatedProtocol ());
5993+
5994+ // ALPS is negotiated only if ALPS is enabled both on client and server.
5995+ const auto alps_data_received_by_client = sock_->GetPeerApplicationSettings ();
5996+
5997+ if (client_alps_enabled_ && server_alps_enabled_) {
5998+ ASSERT_TRUE (alps_data_received_by_client.has_value ());
5999+ EXPECT_EQ (server_data, alps_data_received_by_client.value ());
6000+ } else {
6001+ EXPECT_FALSE (alps_data_received_by_client.has_value ());
6002+ }
6003+ }
6004+
59486005} // namespace net
0 commit comments