Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(886)

Unified Diff: remoting/protocol/jingle_session_unittest.cc

Issue 2808283002: Improve tests for Mixed-Case JIDs. (Closed)
Patch Set: fix tests Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « remoting/protocol/ice_transport_unittest.cc ('k') | remoting/protocol/webrtc_transport_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..2c3c61ba866c135c95faf63045092215d57be4b9 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 stored in the directory.
+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
« no previous file with comments | « remoting/protocol/ice_transport_unittest.cc ('k') | remoting/protocol/webrtc_transport_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698