Chromium Code Reviews| Index: remoting/protocol/jingle_session_unittest.cc |
| diff --git a/remoting/protocol/jingle_session_unittest.cc b/remoting/protocol/jingle_session_unittest.cc |
| index 39c5ca2a5990f523c55ed8e183de2c6a70e5dc99..6e946bd1306246319fbc3642facfb7eab5bdd489 100644 |
| --- a/remoting/protocol/jingle_session_unittest.cc |
| +++ b/remoting/protocol/jingle_session_unittest.cc |
| @@ -52,8 +52,11 @@ namespace protocol { |
| namespace { |
| -const char kHostJid[] = "host@gmail.com/123"; |
| -const char kClientJid[] = "client@gmail.com/321"; |
| +const char kHostJid[] = "Host@gmail.com/123"; |
| +const char kClientJid[] = "Client@gmail.com/321"; |
| + |
| +// kHostJid the way it would be store din the directory. |
|
joedow
2017/04/11 16:20:34
s/store din/stored in
Sergey Ulanov
2017/04/11 21:14:20
Done.
|
| +const char kNormalizedHostJid[] = "host@gmail.com/123"; |
| class MockSessionManagerListener { |
| public: |
| @@ -182,16 +185,13 @@ class JingleSessionTest : public testing::Test { |
| client_session_.reset(); |
| } |
| - void CreateSessionManagers(int auth_round_trips, int messages_till_start, |
| - FakeAuthenticator::Action auth_action) { |
| - if (!host_signal_strategy_) { |
| - host_signal_strategy_.reset( |
| - new FakeSignalStrategy(SignalingAddress(kHostJid))); |
| - } |
| - if (!client_signal_strategy_) { |
| - client_signal_strategy_.reset( |
| - new FakeSignalStrategy(SignalingAddress(kClientJid))); |
| - } |
| + void CreateSessionManagers(FakeAuthenticator::Config auth_config, |
| + int messages_till_start) { |
| + host_signal_strategy_ = |
| + base::MakeUnique<FakeSignalStrategy>(SignalingAddress(kHostJid)); |
| + client_signal_strategy_ = |
| + base::MakeUnique<FakeSignalStrategy>(SignalingAddress(kClientJid)); |
| + |
| FakeSignalStrategy::Connect(host_signal_strategy_.get(), |
| client_signal_strategy_.get()); |
| @@ -201,17 +201,15 @@ class JingleSessionTest : public testing::Test { |
| base::Unretained(&host_server_listener_))); |
| std::unique_ptr<AuthenticatorFactory> factory( |
| - new FakeHostAuthenticatorFactory(auth_round_trips, messages_till_start, |
| - auth_action, true)); |
| + new FakeHostAuthenticatorFactory(messages_till_start, auth_config)); |
| host_server_->set_authenticator_factory(std::move(factory)); |
| client_server_.reset( |
| new JingleSessionManager(client_signal_strategy_.get())); |
| } |
| - void CreateSessionManagers(int auth_round_trips, |
| - FakeAuthenticator::Action auth_action) { |
| - CreateSessionManagers(auth_round_trips, 0, auth_action); |
| + void CreateSessionManagers(FakeAuthenticator::Config auth_config) { |
| + CreateSessionManagers(auth_config, 0); |
| } |
| void CloseSessionManager() { |
| @@ -277,21 +275,25 @@ class JingleSessionTest : public testing::Test { |
| } |
| void ConnectClient(std::unique_ptr<Authenticator> authenticator) { |
| - client_session_ = client_server_->Connect(SignalingAddress(host_jid_), |
| - std::move(authenticator)); |
| + client_session_ = client_server_->Connect( |
| + SignalingAddress(kNormalizedHostJid), std::move(authenticator)); |
| client_session_->SetEventHandler(&client_session_event_handler_); |
| client_session_->SetTransport(&client_transport_); |
| client_session_->AddPlugin(&client_plugin_); |
| base::RunLoop().RunUntilIdle(); |
| } |
| - void InitiateConnection(int auth_round_trips, |
| - FakeAuthenticator::Action auth_action, |
| + void ConnectClient(FakeAuthenticator::Config auth_config) { |
| + ConnectClient(base::MakeUnique<FakeAuthenticator>( |
| + FakeAuthenticator::CLIENT, auth_config, |
| + client_signal_strategy_->GetLocalAddress().id(), kNormalizedHostJid)); |
| + } |
| + |
| + void InitiateConnection(FakeAuthenticator::Config auth_config, |
| bool expect_fail) { |
| SetHostExpectation(expect_fail); |
| SetClientExpectation(expect_fail); |
| - ConnectClient(base::MakeUnique<FakeAuthenticator>( |
| - FakeAuthenticator::CLIENT, auth_round_trips, auth_action, true)); |
| + ConnectClient(auth_config); |
| } |
| void ExpectRouteChange(const std::string& channel_name) { |
| @@ -326,8 +328,6 @@ class JingleSessionTest : public testing::Test { |
| std::unique_ptr<FakeSignalStrategy> host_signal_strategy_; |
| std::unique_ptr<FakeSignalStrategy> client_signal_strategy_; |
| - std::string host_jid_ = kHostJid; |
| - |
| std::unique_ptr<JingleSessionManager> host_server_; |
| MockSessionManagerListener host_server_listener_; |
| std::unique_ptr<JingleSessionManager> client_server_; |
| @@ -347,13 +347,13 @@ class JingleSessionTest : public testing::Test { |
| // Verify that we can create and destroy session managers without a |
| // connection. |
| TEST_F(JingleSessionTest, CreateAndDestoy) { |
| - CreateSessionManagers(1, FakeAuthenticator::ACCEPT); |
| + CreateSessionManagers(FakeAuthenticator::Config(FakeAuthenticator::ACCEPT)); |
| } |
| // Verify that an incoming session can be rejected, and that the |
| // status of the connection is set to FAILED in this case. |
| TEST_F(JingleSessionTest, RejectConnection) { |
| - CreateSessionManagers(1, FakeAuthenticator::ACCEPT); |
| + CreateSessionManagers(FakeAuthenticator::Config(FakeAuthenticator::ACCEPT)); |
| // Reject incoming session. |
| EXPECT_CALL(host_server_listener_, OnIncomingSession(_, _)) |
| @@ -366,10 +366,7 @@ TEST_F(JingleSessionTest, RejectConnection) { |
| .Times(1); |
| } |
| - std::unique_ptr<Authenticator> authenticator(new FakeAuthenticator( |
| - FakeAuthenticator::CLIENT, 1, FakeAuthenticator::ACCEPT, true)); |
| - client_session_ = client_server_->Connect(SignalingAddress(kHostJid), |
| - std::move(authenticator)); |
| + ConnectClient(FakeAuthenticator::Config(FakeAuthenticator::ACCEPT)); |
| client_session_->SetEventHandler(&client_session_event_handler_); |
| base::RunLoop().RunUntilIdle(); |
| @@ -377,8 +374,8 @@ TEST_F(JingleSessionTest, RejectConnection) { |
| // Verify that we can connect two endpoints with single-step authentication. |
| TEST_F(JingleSessionTest, Connect) { |
| - CreateSessionManagers(1, FakeAuthenticator::ACCEPT); |
| - InitiateConnection(1, FakeAuthenticator::ACCEPT, false); |
| + CreateSessionManagers(FakeAuthenticator::Config(FakeAuthenticator::ACCEPT)); |
| + InitiateConnection(FakeAuthenticator::Config(), false); |
| // Verify that the client specified correct initiator value. |
| ASSERT_GT(host_signal_strategy_->received_messages().size(), 0U); |
| @@ -387,38 +384,22 @@ TEST_F(JingleSessionTest, Connect) { |
| const buzz::XmlElement* jingle_element = |
| initiate_xml->FirstNamed(buzz::QName("urn:xmpp:jingle:1", "jingle")); |
| ASSERT_TRUE(jingle_element); |
| - ASSERT_EQ(kClientJid, |
| + ASSERT_EQ(client_signal_strategy_->GetLocalAddress().id(), |
| jingle_element->Attr(buzz::QName(std::string(), "initiator"))); |
| } |
| -TEST_F(JingleSessionTest, MixedCaseHostJid) { |
| - std::string host_jid = std::string("A") + kHostJid; |
| - host_signal_strategy_.reset( |
| - new FakeSignalStrategy(SignalingAddress(host_jid))); |
| - |
| - // Imitate host JID being lower-cased when stored in the directory. |
| - host_jid_ = base::ToLowerASCII(host_jid); |
| - |
| - CreateSessionManagers(1, FakeAuthenticator::ACCEPT); |
| - InitiateConnection(1, FakeAuthenticator::ACCEPT, false); |
| -} |
| - |
| -TEST_F(JingleSessionTest, MixedCaseClientJid) { |
| - client_signal_strategy_.reset( |
| - new FakeSignalStrategy(SignalingAddress(std::string("A") + kClientJid))); |
| - CreateSessionManagers(1, FakeAuthenticator::ACCEPT); |
| - InitiateConnection(1, FakeAuthenticator::ACCEPT, false); |
| -} |
| - |
| // Verify that we can connect two endpoints with multi-step authentication. |
| TEST_F(JingleSessionTest, ConnectWithMultistep) { |
| - CreateSessionManagers(3, FakeAuthenticator::ACCEPT); |
| - InitiateConnection(3, FakeAuthenticator::ACCEPT, false); |
| + const int kAuthRoundtrips = 3; |
| + FakeAuthenticator::Config auth_config(kAuthRoundtrips, |
| + FakeAuthenticator::ACCEPT, true); |
| + CreateSessionManagers(auth_config); |
| + InitiateConnection(auth_config, false); |
| } |
| TEST_F(JingleSessionTest, ConnectWithOutOfOrderIqs) { |
| - CreateSessionManagers(1, FakeAuthenticator::ACCEPT); |
| - InitiateConnection(1, FakeAuthenticator::ACCEPT, false); |
| + CreateSessionManagers(FakeAuthenticator::Config(FakeAuthenticator::ACCEPT)); |
| + InitiateConnection(FakeAuthenticator::Config(), false); |
| client_signal_strategy_->SimulateMessageReordering(); |
| // Verify that out of order transport messages are received correctly. |
| @@ -434,8 +415,8 @@ TEST_F(JingleSessionTest, ConnectWithOutOfOrderIqs) { |
| // Verify that out-of-order messages are handled correctly when the session is |
| // torn down after the first message. |
| TEST_F(JingleSessionTest, ConnectWithOutOfOrderIqsDestroyOnFirstMessage) { |
| - CreateSessionManagers(1, FakeAuthenticator::ACCEPT); |
| - InitiateConnection(1, FakeAuthenticator::ACCEPT, false); |
| + CreateSessionManagers(FakeAuthenticator::Config(FakeAuthenticator::ACCEPT)); |
| + InitiateConnection(FakeAuthenticator::Config(), false); |
| client_signal_strategy_->SimulateMessageReordering(); |
| // Verify that out of order transport messages are received correctly. |
| @@ -454,19 +435,23 @@ TEST_F(JingleSessionTest, ConnectWithOutOfOrderIqsDestroyOnFirstMessage) { |
| // Verify that connection is terminated when single-step auth fails. |
| TEST_F(JingleSessionTest, ConnectWithBadAuth) { |
| - CreateSessionManagers(1, FakeAuthenticator::REJECT); |
| - InitiateConnection(1, FakeAuthenticator::ACCEPT, true); |
| + CreateSessionManagers(FakeAuthenticator::Config(FakeAuthenticator::REJECT)); |
| + InitiateConnection(FakeAuthenticator::Config(), true); |
| } |
| // Verify that connection is terminated when multi-step auth fails. |
| TEST_F(JingleSessionTest, ConnectWithBadMultistepAuth) { |
| - CreateSessionManagers(3, FakeAuthenticator::REJECT); |
| - InitiateConnection(3, FakeAuthenticator::ACCEPT, true); |
| + const int kAuthRoundtrips = 3; |
| + CreateSessionManagers(FakeAuthenticator::Config( |
| + kAuthRoundtrips, FakeAuthenticator::REJECT, false)); |
| + InitiateConnection(FakeAuthenticator::Config( |
| + kAuthRoundtrips, FakeAuthenticator::ACCEPT, false), |
| + true); |
| } |
| // Verify that incompatible protocol configuration is handled properly. |
| TEST_F(JingleSessionTest, TestIncompatibleProtocol) { |
| - CreateSessionManagers(1, FakeAuthenticator::ACCEPT); |
| + CreateSessionManagers(FakeAuthenticator::Config(FakeAuthenticator::ACCEPT)); |
| EXPECT_CALL(host_server_listener_, OnIncomingSession(_, _)).Times(0); |
| @@ -474,19 +459,12 @@ TEST_F(JingleSessionTest, TestIncompatibleProtocol) { |
| OnSessionStateChange(Session::FAILED)) |
| .Times(1); |
| - std::unique_ptr<Authenticator> authenticator(new FakeAuthenticator( |
| - FakeAuthenticator::CLIENT, 1, FakeAuthenticator::ACCEPT, true)); |
| - |
| std::unique_ptr<CandidateSessionConfig> config = |
| CandidateSessionConfig::CreateDefault(); |
| // Disable all video codecs so the host will reject connection. |
| config->mutable_video_configs()->clear(); |
| client_server_->set_protocol_config(std::move(config)); |
| - client_session_ = client_server_->Connect(SignalingAddress(kHostJid), |
| - std::move(authenticator)); |
| - client_session_->SetEventHandler(&client_session_event_handler_); |
| - |
| - base::RunLoop().RunUntilIdle(); |
| + ConnectClient(FakeAuthenticator::Config(FakeAuthenticator::ACCEPT)); |
| EXPECT_EQ(INCOMPATIBLE_PROTOCOL, client_session_->error()); |
| EXPECT_FALSE(host_session_); |
| @@ -494,7 +472,7 @@ TEST_F(JingleSessionTest, TestIncompatibleProtocol) { |
| // Verify that GICE-only client is rejected with an appropriate error code. |
| TEST_F(JingleSessionTest, TestLegacyIceConnection) { |
| - CreateSessionManagers(1, FakeAuthenticator::ACCEPT); |
| + CreateSessionManagers(FakeAuthenticator::Config(FakeAuthenticator::ACCEPT)); |
| EXPECT_CALL(host_server_listener_, OnIncomingSession(_, _)).Times(0); |
| @@ -502,25 +480,21 @@ TEST_F(JingleSessionTest, TestLegacyIceConnection) { |
| OnSessionStateChange(Session::FAILED)) |
| .Times(1); |
| - std::unique_ptr<Authenticator> authenticator(new FakeAuthenticator( |
| - FakeAuthenticator::CLIENT, 1, FakeAuthenticator::ACCEPT, true)); |
| - |
| std::unique_ptr<CandidateSessionConfig> config = |
| CandidateSessionConfig::CreateDefault(); |
| config->set_ice_supported(false); |
| client_server_->set_protocol_config(std::move(config)); |
| - client_session_ = client_server_->Connect(SignalingAddress(kHostJid), |
| - std::move(authenticator)); |
| - client_session_->SetEventHandler(&client_session_event_handler_); |
| - |
| - base::RunLoop().RunUntilIdle(); |
| + ConnectClient(FakeAuthenticator::Config(FakeAuthenticator::ACCEPT)); |
| EXPECT_EQ(INCOMPATIBLE_PROTOCOL, client_session_->error()); |
| EXPECT_FALSE(host_session_); |
| } |
| TEST_F(JingleSessionTest, DeleteSessionOnIncomingConnection) { |
| - CreateSessionManagers(3, FakeAuthenticator::ACCEPT); |
| + const int kAuthRoundtrips = 3; |
| + FakeAuthenticator::Config auth_config(kAuthRoundtrips, |
| + FakeAuthenticator::ACCEPT, true); |
| + CreateSessionManagers(auth_config); |
| EXPECT_CALL(host_server_listener_, OnIncomingSession(_, _)) |
| .WillOnce(DoAll( |
| @@ -535,20 +509,19 @@ TEST_F(JingleSessionTest, DeleteSessionOnIncomingConnection) { |
| OnSessionStateChange(Session::AUTHENTICATING)) |
| .WillOnce(InvokeWithoutArgs(this, &JingleSessionTest::DeleteHostSession)); |
| - std::unique_ptr<Authenticator> authenticator(new FakeAuthenticator( |
| - FakeAuthenticator::CLIENT, 3, FakeAuthenticator::ACCEPT, true)); |
| - |
| - client_session_ = client_server_->Connect(SignalingAddress(kHostJid), |
| - std::move(authenticator)); |
| - |
| - base::RunLoop().RunUntilIdle(); |
| + ConnectClient(auth_config); |
| } |
| TEST_F(JingleSessionTest, DeleteSessionOnAuth) { |
| // Same as the previous test, but set messages_till_started to 2 in |
| // CreateSessionManagers so that the session will goes into the |
| // AUTHENTICATING state after two message exchanges. |
| - CreateSessionManagers(3, 2, FakeAuthenticator::ACCEPT); |
| + const int kMessagesTillStarted = 2; |
| + |
| + const int kAuthRoundtrips = 3; |
| + FakeAuthenticator::Config auth_config(kAuthRoundtrips, |
| + FakeAuthenticator::ACCEPT, true); |
| + CreateSessionManagers(auth_config, kMessagesTillStarted); |
| EXPECT_CALL(host_server_listener_, OnIncomingSession(_, _)) |
| .WillOnce( |
| @@ -563,25 +536,17 @@ TEST_F(JingleSessionTest, DeleteSessionOnAuth) { |
| OnSessionStateChange(Session::AUTHENTICATING)) |
| .WillOnce(InvokeWithoutArgs(this, &JingleSessionTest::DeleteHostSession)); |
| - std::unique_ptr<Authenticator> authenticator(new FakeAuthenticator( |
| - FakeAuthenticator::CLIENT, 3, FakeAuthenticator::ACCEPT, true)); |
| - |
| - client_session_ = client_server_->Connect(SignalingAddress(kHostJid), |
| - std::move(authenticator)); |
| - base::RunLoop().RunUntilIdle(); |
| -} |
| - |
| -// Verify that we can connect with multistep authentication. |
| -TEST_F(JingleSessionTest, TestMultistepAuth) { |
| - CreateSessionManagers(3, FakeAuthenticator::ACCEPT); |
| - ASSERT_NO_FATAL_FAILURE( |
| - InitiateConnection(3, FakeAuthenticator::ACCEPT, false)); |
| + ConnectClient(auth_config); |
| } |
| // Verify that incoming transport-info messages are handled correctly while in |
| // AUTHENTICATING state. |
| TEST_F(JingleSessionTest, TransportInfoDuringAuthentication) { |
| - CreateSessionManagers(2, FakeAuthenticator::ACCEPT); |
| + const int kAuthRoundtrips = 2; |
| + FakeAuthenticator::Config auth_config(kAuthRoundtrips, |
| + FakeAuthenticator::ACCEPT, true); |
| + |
| + CreateSessionManagers(auth_config); |
| SetHostExpectation(false); |
| { |
| @@ -597,7 +562,8 @@ TEST_F(JingleSessionTest, TransportInfoDuringAuthentication) { |
| // Create connection and pause it before authentication is finished. |
| FakeAuthenticator* authenticator = new FakeAuthenticator( |
| - FakeAuthenticator::CLIENT, 2, FakeAuthenticator::ACCEPT, true); |
| + FakeAuthenticator::CLIENT, auth_config, |
| + client_signal_strategy_->GetLocalAddress().id(), kNormalizedHostJid); |
| authenticator->set_pause_message_index(4); |
| ConnectClient(base::WrapUnique(authenticator)); |
| @@ -628,17 +594,21 @@ TEST_F(JingleSessionTest, TransportInfoDuringAuthentication) { |
| TEST_F(JingleSessionTest, TestSessionPlugin) { |
| host_plugin_.Clear(); |
| client_plugin_.Clear(); |
| - CreateSessionManagers(3, FakeAuthenticator::ACCEPT); |
| - ASSERT_NO_FATAL_FAILURE( |
| - InitiateConnection(3, FakeAuthenticator::ACCEPT, false)); |
| + |
| + const int kAuthRoundtrips = 3; |
| + FakeAuthenticator::Config auth_config(kAuthRoundtrips, |
| + FakeAuthenticator::ACCEPT, true); |
| + |
| + CreateSessionManagers(auth_config); |
| + ASSERT_NO_FATAL_FAILURE(InitiateConnection(auth_config, false)); |
| ExpectPluginMessagesEqual(); |
| } |
| TEST_F(JingleSessionTest, SessionPluginShouldNotBeInvolvedInSessionTerminate) { |
| host_plugin_.Clear(); |
| client_plugin_.Clear(); |
| - CreateSessionManagers(1, FakeAuthenticator::REJECT); |
| - InitiateConnection(1, FakeAuthenticator::ACCEPT, true); |
| + CreateSessionManagers(FakeAuthenticator::Config(FakeAuthenticator::REJECT)); |
| + InitiateConnection(FakeAuthenticator::Config(), true); |
| // It's expected the client sends one more plugin message than host, the host |
| // won't send plugin message in the SESSION_TERMINATE message. |
| ASSERT_EQ(client_plugin_.outgoing_messages().size() - 1, |
| @@ -647,11 +617,16 @@ TEST_F(JingleSessionTest, SessionPluginShouldNotBeInvolvedInSessionTerminate) { |
| } |
| TEST_F(JingleSessionTest, ImmediatelyCloseSessionAfterConnect) { |
| - CreateSessionManagers(3, FakeAuthenticator::ACCEPT); |
| + const int kAuthRoundtrips = 3; |
| + FakeAuthenticator::Config auth_config(kAuthRoundtrips, |
| + FakeAuthenticator::ACCEPT, true); |
| + CreateSessionManagers(auth_config); |
| client_session_ = client_server_->Connect( |
| - SignalingAddress(host_jid_), |
| - base::MakeUnique<FakeAuthenticator>(FakeAuthenticator::CLIENT, 3, |
| - FakeAuthenticator::ACCEPT, true)); |
| + SignalingAddress(kNormalizedHostJid), |
| + base::MakeUnique<FakeAuthenticator>( |
| + FakeAuthenticator::CLIENT, auth_config, |
| + client_signal_strategy_->GetLocalAddress().id(), kNormalizedHostJid)); |
| + |
| client_session_->Close(HOST_OVERLOAD); |
| base::RunLoop().RunUntilIdle(); |
| // We should only send a SESSION_TERMINATE message if the session has been |