Index: remoting/host/it2me/it2me_host_unittest.cc |
diff --git a/remoting/host/it2me/it2me_host_unittest.cc b/remoting/host/it2me/it2me_host_unittest.cc |
index c762631bcc5bcedd8f6ef689b87608fccbef17fc..2a0051baa453098e06181153d0f7a525fb69b6b3 100644 |
--- a/remoting/host/it2me/it2me_host_unittest.cc |
+++ b/remoting/host/it2me/it2me_host_unittest.cc |
@@ -37,6 +37,7 @@ typedef It2MeConfirmationDialog::Result DialogResult; |
const char kTestClientUserName[] = "ficticious_user@gmail.com"; |
const char kTestClientJid[] = "ficticious_user@gmail.com/jid_resource"; |
+const char kTestClientJid2[] = "ficticious_user_2@gmail.com/jid_resource"; |
const char kTestClientUsernameNoJid[] = "completely_ficticious_user@gmail.com"; |
const char kTestClientJidWithSlash[] = "fake/user@gmail.com/jid_resource"; |
const char kResourceOnly[] = "/jid_resource"; |
@@ -108,7 +109,9 @@ class It2MeHostTest : public testing::Test, public It2MeHost::Observer { |
void SimulateClientConnection(); |
- void RunValidationCallback(const std::string& remote_jid); |
+ void RunIncomingConnectionCallback(const std::string& remote_jid); |
+ |
+ void RunAcceptedConnectionCallback(const std::string& remote_jid); |
void DisconnectClient(); |
@@ -210,12 +213,28 @@ void It2MeHostTest::SimulateClientConnection() { |
It2MeHostState::kReceivedAccessCode, std::string())); |
} |
-void It2MeHostTest::RunValidationCallback(const std::string& remote_jid) { |
+void It2MeHostTest::RunIncomingConnectionCallback( |
+ const std::string& remote_jid) { |
base::RunLoop run_loop; |
network_task_runner_->PostTask( |
FROM_HERE, |
- base::Bind(it2me_host_->GetValidationCallbackForTesting(), remote_jid, |
+ base::Bind(it2me_host_->GetIncomingConnectionCallbackForTesting(), |
+ remote_jid, |
+ base::Bind(&It2MeHostTest::OnValidationComplete, |
+ base::Unretained(this), run_loop.QuitClosure()))); |
+ |
+ run_loop.Run(); |
+} |
+ |
+void It2MeHostTest::RunAcceptedConnectionCallback( |
+ const std::string& remote_jid) { |
+ base::RunLoop run_loop; |
+ |
+ network_task_runner_->PostTask( |
+ FROM_HERE, |
+ base::Bind(it2me_host_->GetAcceptedConnectionCallbackForTesting(), |
+ remote_jid, |
base::Bind(&It2MeHostTest::OnValidationComplete, |
base::Unretained(this), run_loop.QuitClosure()))); |
@@ -248,16 +267,16 @@ void It2MeHostTest::DisconnectClient() { |
TEST_F(It2MeHostTest, ConnectionValidation_NoClientDomainPolicy_ValidJid) { |
SimulateClientConnection(); |
- RunValidationCallback(kTestClientJid); |
+ RunIncomingConnectionCallback(kTestClientJid); |
ASSERT_EQ(ValidationResult::SUCCESS, validation_result_); |
- ASSERT_EQ(It2MeHostState::kConnecting, last_host_state_); |
+ ASSERT_EQ(It2MeHostState::kReceivedAccessCode, last_host_state_); |
DisconnectClient(); |
ASSERT_EQ(It2MeHostState::kDisconnected, last_host_state_); |
} |
TEST_F(It2MeHostTest, ConnectionValidation_NoClientDomainPolicy_InvalidJid) { |
SimulateClientConnection(); |
- RunValidationCallback(kTestClientUsernameNoJid); |
+ RunIncomingConnectionCallback(kTestClientUsernameNoJid); |
ASSERT_EQ(ValidationResult::ERROR_INVALID_ACCOUNT, validation_result_); |
RunUntilStateChanged(It2MeHostState::kDisconnected); |
ASSERT_EQ(It2MeHostState::kDisconnected, last_host_state_); |
@@ -266,16 +285,16 @@ TEST_F(It2MeHostTest, ConnectionValidation_NoClientDomainPolicy_InvalidJid) { |
TEST_F(It2MeHostTest, |
ConnectionValidation_NoClientDomainPolicy_InvalidUsername) { |
SimulateClientConnection(); |
- RunValidationCallback(kTestClientJidWithSlash); |
+ RunIncomingConnectionCallback(kTestClientJidWithSlash); |
ASSERT_EQ(ValidationResult::SUCCESS, validation_result_); |
- ASSERT_EQ(It2MeHostState::kConnecting, last_host_state_); |
+ ASSERT_EQ(It2MeHostState::kReceivedAccessCode, last_host_state_); |
DisconnectClient(); |
ASSERT_EQ(It2MeHostState::kDisconnected, last_host_state_); |
} |
TEST_F(It2MeHostTest, ConnectionValidation_NoClientDomainPolicy_ResourceOnly) { |
SimulateClientConnection(); |
- RunValidationCallback(kResourceOnly); |
+ RunIncomingConnectionCallback(kResourceOnly); |
ASSERT_EQ(ValidationResult::ERROR_INVALID_ACCOUNT, validation_result_); |
RunUntilStateChanged(It2MeHostState::kDisconnected); |
ASSERT_EQ(It2MeHostState::kDisconnected, last_host_state_); |
@@ -284,9 +303,9 @@ TEST_F(It2MeHostTest, ConnectionValidation_NoClientDomainPolicy_ResourceOnly) { |
TEST_F(It2MeHostTest, ConnectionValidation_ClientDomainPolicy_MatchingDomain) { |
SetClientDomainPolicy(kMatchingDomain); |
SimulateClientConnection(); |
- RunValidationCallback(kTestClientJid); |
+ RunIncomingConnectionCallback(kTestClientJid); |
ASSERT_EQ(ValidationResult::SUCCESS, validation_result_); |
- ASSERT_EQ(It2MeHostState::kConnecting, last_host_state_); |
+ ASSERT_EQ(It2MeHostState::kReceivedAccessCode, last_host_state_); |
DisconnectClient(); |
ASSERT_EQ(It2MeHostState::kDisconnected, last_host_state_); |
} |
@@ -294,7 +313,7 @@ TEST_F(It2MeHostTest, ConnectionValidation_ClientDomainPolicy_MatchingDomain) { |
TEST_F(It2MeHostTest, ConnectionValidation_ClientDomainPolicy_InvalidUserName) { |
SetClientDomainPolicy(kMatchingDomain); |
SimulateClientConnection(); |
- RunValidationCallback(kTestClientJidWithSlash); |
+ RunIncomingConnectionCallback(kTestClientJidWithSlash); |
ASSERT_EQ(ValidationResult::ERROR_INVALID_ACCOUNT, validation_result_); |
RunUntilStateChanged(It2MeHostState::kDisconnected); |
ASSERT_EQ(It2MeHostState::kDisconnected, last_host_state_); |
@@ -303,7 +322,7 @@ TEST_F(It2MeHostTest, ConnectionValidation_ClientDomainPolicy_InvalidUserName) { |
TEST_F(It2MeHostTest, ConnectionValidation_ClientDomainPolicy_NoJid) { |
SetClientDomainPolicy(kMatchingDomain); |
SimulateClientConnection(); |
- RunValidationCallback(kTestClientUsernameNoJid); |
+ RunIncomingConnectionCallback(kTestClientUsernameNoJid); |
RunUntilStateChanged(It2MeHostState::kDisconnected); |
ASSERT_EQ(It2MeHostState::kDisconnected, last_host_state_); |
ASSERT_EQ(ValidationResult::ERROR_INVALID_ACCOUNT, validation_result_); |
@@ -312,7 +331,7 @@ TEST_F(It2MeHostTest, ConnectionValidation_ClientDomainPolicy_NoJid) { |
TEST_F(It2MeHostTest, ConnectionValidation_WrongClientDomain_NoMatch) { |
SetClientDomainPolicy(kMismatchedDomain3); |
SimulateClientConnection(); |
- RunValidationCallback(kTestClientJid); |
+ RunIncomingConnectionCallback(kTestClientJid); |
ASSERT_EQ(ValidationResult::ERROR_INVALID_ACCOUNT, validation_result_); |
RunUntilStateChanged(It2MeHostState::kDisconnected); |
ASSERT_EQ(It2MeHostState::kDisconnected, last_host_state_); |
@@ -321,7 +340,7 @@ TEST_F(It2MeHostTest, ConnectionValidation_WrongClientDomain_NoMatch) { |
TEST_F(It2MeHostTest, ConnectionValidation_WrongClientDomain_MatchStart) { |
SetClientDomainPolicy(kMismatchedDomain2); |
SimulateClientConnection(); |
- RunValidationCallback(kTestClientJid); |
+ RunIncomingConnectionCallback(kTestClientJid); |
ASSERT_EQ(ValidationResult::ERROR_INVALID_ACCOUNT, validation_result_); |
RunUntilStateChanged(It2MeHostState::kDisconnected); |
ASSERT_EQ(It2MeHostState::kDisconnected, last_host_state_); |
@@ -330,7 +349,7 @@ TEST_F(It2MeHostTest, ConnectionValidation_WrongClientDomain_MatchStart) { |
TEST_F(It2MeHostTest, ConnectionValidation_WrongClientDomain_MatchEnd) { |
SetClientDomainPolicy(kMismatchedDomain1); |
SimulateClientConnection(); |
- RunValidationCallback(kTestClientJid); |
+ RunIncomingConnectionCallback(kTestClientJid); |
ASSERT_EQ(ValidationResult::ERROR_INVALID_ACCOUNT, validation_result_); |
RunUntilStateChanged(It2MeHostState::kDisconnected); |
ASSERT_EQ(It2MeHostState::kDisconnected, last_host_state_); |
@@ -338,10 +357,15 @@ TEST_F(It2MeHostTest, ConnectionValidation_WrongClientDomain_MatchEnd) { |
TEST_F(It2MeHostTest, ConnectionValidation_ConfirmationDialog_Accept) { |
SimulateClientConnection(); |
- RunValidationCallback(kTestClientJid); |
+ RunIncomingConnectionCallback(kTestClientJid); |
+ ASSERT_EQ(ValidationResult::SUCCESS, validation_result_); |
+ ASSERT_EQ(It2MeHostState::kReceivedAccessCode, last_host_state_); |
+ |
+ RunAcceptedConnectionCallback(kTestClientJid); |
ASSERT_EQ(ValidationResult::SUCCESS, validation_result_); |
ASSERT_STREQ(kTestClientUserName, remote_user_email_.c_str()); |
ASSERT_EQ(It2MeHostState::kConnecting, last_host_state_); |
+ |
DisconnectClient(); |
ASSERT_EQ(It2MeHostState::kDisconnected, last_host_state_); |
} |
@@ -349,11 +373,37 @@ TEST_F(It2MeHostTest, ConnectionValidation_ConfirmationDialog_Accept) { |
TEST_F(It2MeHostTest, ConnectionValidation_ConfirmationDialog_Reject) { |
dialog_->set_dialog_result(DialogResult::CANCEL); |
SimulateClientConnection(); |
- RunValidationCallback(kTestClientJid); |
+ |
+ RunIncomingConnectionCallback(kTestClientJid); |
+ ASSERT_EQ(ValidationResult::SUCCESS, validation_result_); |
+ ASSERT_EQ(It2MeHostState::kReceivedAccessCode, last_host_state_); |
+ |
+ RunAcceptedConnectionCallback(kTestClientJid); |
ASSERT_EQ(ValidationResult::ERROR_REJECTED_BY_USER, validation_result_); |
RunUntilStateChanged(It2MeHostState::kDisconnected); |
ASSERT_EQ(It2MeHostState::kDisconnected, last_host_state_); |
ASSERT_STREQ(kTestClientUserName, remote_user_email_.c_str()); |
} |
+TEST_F(It2MeHostTest, MultipleConnectionsTriggerDisconnect) { |
+ SimulateClientConnection(); |
+ RunIncomingConnectionCallback(kTestClientJid); |
+ ASSERT_EQ(ValidationResult::SUCCESS, validation_result_); |
+ ASSERT_EQ(It2MeHostState::kReceivedAccessCode, last_host_state_); |
+ |
+ RunAcceptedConnectionCallback(kTestClientJid); |
+ ASSERT_EQ(ValidationResult::SUCCESS, validation_result_); |
+ ASSERT_EQ(It2MeHostState::kConnecting, last_host_state_); |
+ ASSERT_STREQ(kTestClientUserName, remote_user_email_.c_str()); |
+ |
+ RunIncomingConnectionCallback(kTestClientJid2); |
+ ASSERT_EQ(ValidationResult::SUCCESS, validation_result_); |
+ ASSERT_EQ(It2MeHostState::kConnecting, last_host_state_); |
+ |
+ RunAcceptedConnectionCallback(kTestClientJid2); |
+ ASSERT_EQ(ValidationResult::ERROR_TOO_MANY_CONNECTIONS, validation_result_); |
+ RunUntilStateChanged(It2MeHostState::kDisconnected); |
+ ASSERT_EQ(It2MeHostState::kDisconnected, last_host_state_); |
+} |
+ |
} // namespace remoting |