| 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
|
|
|