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

Unified Diff: remoting/host/it2me/it2me_host_unittest.cc

Issue 2724223003: Disconnect all users if too many connection requests are received for It2Me (Closed)
Patch Set: Fixing another non-Windows build error Created 3 years, 9 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
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

Powered by Google App Engine
This is Rietveld 408576698