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

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

Issue 2310303002: Moving It2Me confirmation prompt into the Validation callback flow (Closed)
Patch Set: Addressing CR Feedback Created 4 years, 3 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/host/it2me/it2me_host.cc ('k') | remoting/resources/remoting_strings.grd » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 d3919f6bf4a961923530184143031048e32a782f..ef53af73b0c26cbf4f098d662deb74fcfa1dc59b 100644
--- a/remoting/host/it2me/it2me_host_unittest.cc
+++ b/remoting/host/it2me/it2me_host_unittest.cc
@@ -12,6 +12,7 @@
#include "base/callback.h"
#include "base/location.h"
#include "base/macros.h"
+#include "base/memory/ptr_util.h"
#include "base/memory/ref_counted.h"
#include "base/message_loop/message_loop.h"
#include "base/run_loop.h"
@@ -19,6 +20,7 @@
#include "components/policy/policy_constants.h"
#include "remoting/base/auto_thread_task_runner.h"
#include "remoting/host/chromoting_host_context.h"
+#include "remoting/host/it2me/it2me_confirmation_dialog.h"
#include "remoting/host/policy_watcher.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -26,11 +28,15 @@ namespace remoting {
namespace {
+// Shortening some type names for readability.
typedef protocol::ValidatingAuthenticator::Result ValidationResult;
+typedef It2MeConfirmationDialog::Result DialogResult;
+const char kTestClientUserName[] = "ficticious_user@gmail.com";
const char kTestClientJid[] = "ficticious_user@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";
const char kMatchingDomain[] = "gmail.com";
const char kMismatchedDomain1[] = "similar_to_gmail.com";
const char kMismatchedDomain2[] = "gmail_at_the_beginning.com";
@@ -38,6 +44,69 @@ const char kMismatchedDomain3[] = "not_even_close.com";
} // namespace
+class FakeIt2MeConfirmationDialog : public It2MeConfirmationDialog {
+ public:
+ FakeIt2MeConfirmationDialog();
+ ~FakeIt2MeConfirmationDialog() override;
+
+ // It2MeConfirmationDialog implementation.
+ void Show(const std::string& remote_user_email,
+ const ResultCallback& callback) override;
+
+ void set_dialog_result(DialogResult dialog_result) {
+ dialog_result_ = dialog_result;
+ }
+
+ const std::string& get_remote_user_email() { return remote_user_email_; }
+
+ private:
+ std::string remote_user_email_;
+ DialogResult dialog_result_ = DialogResult::OK;
+
+ DISALLOW_COPY_AND_ASSIGN(FakeIt2MeConfirmationDialog);
+};
+
+FakeIt2MeConfirmationDialog::FakeIt2MeConfirmationDialog() {}
+
+FakeIt2MeConfirmationDialog::~FakeIt2MeConfirmationDialog() {}
+
+void FakeIt2MeConfirmationDialog::Show(const std::string& remote_user_email,
+ const ResultCallback& callback) {
+ remote_user_email_ = remote_user_email;
+
+ base::ThreadTaskRunnerHandle::Get()->PostTask(
+ FROM_HERE, base::Bind(callback, dialog_result_));
+}
+
+class FakeIt2MeConfirmationDialogFactory
+ : public It2MeConfirmationDialogFactory {
+ public:
+ FakeIt2MeConfirmationDialogFactory();
+ ~FakeIt2MeConfirmationDialogFactory() override;
+
+ // It2MeConfirmationDialogFactory override.
+ std::unique_ptr<It2MeConfirmationDialog> Create() override;
+
+ void set_confirmation_dialog(
+ std::unique_ptr<It2MeConfirmationDialog> confirmation_dialog) {
+ confirmation_dialog_ = std::move(confirmation_dialog);
+ }
+
+ private:
+ std::unique_ptr<It2MeConfirmationDialog> confirmation_dialog_;
+
+ DISALLOW_COPY_AND_ASSIGN(FakeIt2MeConfirmationDialogFactory);
+};
+
+FakeIt2MeConfirmationDialogFactory::FakeIt2MeConfirmationDialogFactory() {}
+
+FakeIt2MeConfirmationDialogFactory::~FakeIt2MeConfirmationDialogFactory() {}
+
+std::unique_ptr<It2MeConfirmationDialog>
+FakeIt2MeConfirmationDialogFactory::Create() {
+ return std::move(confirmation_dialog_);
+}
+
class It2MeHostTest : public testing::Test {
public:
It2MeHostTest() {}
@@ -57,6 +126,9 @@ class It2MeHostTest : public testing::Test {
ValidationResult validation_result_ = ValidationResult::SUCCESS;
+ // Used to set ConfirmationDialog behavior.
+ FakeIt2MeConfirmationDialogFactory* fake_dialog_factory_ = nullptr;
+
private:
std::unique_ptr<base::MessageLoop> message_loop_;
std::unique_ptr<base::RunLoop> run_loop_;
@@ -73,13 +145,13 @@ void It2MeHostTest::SetUp() {
message_loop_.reset(new base::MessageLoop());
run_loop_.reset(new base::RunLoop());
+ fake_dialog_factory_ = new FakeIt2MeConfirmationDialogFactory();
scoped_refptr<AutoThreadTaskRunner> auto_thread_task_runner =
new AutoThreadTaskRunner(base::ThreadTaskRunnerHandle::Get(),
run_loop_->QuitClosure());
it2me_host_ = new It2MeHost(
ChromotingHostContext::Create(auto_thread_task_runner),
- /*policy_watcher=*/nullptr,
- /*confirmation_dialog_factory=*/nullptr,
+ /*policy_watcher=*/nullptr, base::WrapUnique(fake_dialog_factory_),
/*observer=*/nullptr, xmpp_server_config_, directory_bot_jid_);
}
@@ -120,7 +192,7 @@ TEST_F(It2MeHostTest, ConnectionValidation_NoClientDomainPolicy_ValidJid) {
TEST_F(It2MeHostTest, ConnectionValidation_NoClientDomainPolicy_InvalidJid) {
RunValidationCallback(kTestClientUsernameNoJid);
- ASSERT_EQ(ValidationResult::SUCCESS, validation_result_);
+ ASSERT_EQ(ValidationResult::ERROR_INVALID_ACCOUNT, validation_result_);
}
TEST_F(It2MeHostTest,
@@ -129,6 +201,11 @@ TEST_F(It2MeHostTest,
ASSERT_EQ(ValidationResult::SUCCESS, validation_result_);
}
+TEST_F(It2MeHostTest, ConnectionValidation_NoClientDomainPolicy_ResourceOnly) {
+ RunValidationCallback(kResourceOnly);
+ ASSERT_EQ(ValidationResult::ERROR_INVALID_ACCOUNT, validation_result_);
+}
+
TEST_F(It2MeHostTest, ConnectionValidation_ClientDomainPolicy_MatchingDomain) {
SetClientDomainPolicy(kMatchingDomain);
RunValidationCallback(kTestClientJid);
@@ -165,4 +242,28 @@ TEST_F(It2MeHostTest, ConnectionValidation_WrongClientDomain_MatchEnd) {
ASSERT_EQ(ValidationResult::ERROR_INVALID_ACCOUNT, validation_result_);
}
+TEST_F(It2MeHostTest, ConnectionValidation_ConfirmationDialog_NoDialog) {
+ RunValidationCallback(kTestClientJid);
+ ASSERT_EQ(ValidationResult::SUCCESS, validation_result_);
+}
+
+TEST_F(It2MeHostTest, ConnectionValidation_ConfirmationDialog_Accept) {
+ FakeIt2MeConfirmationDialog* dialog = new FakeIt2MeConfirmationDialog();
+ fake_dialog_factory_->set_confirmation_dialog(base::WrapUnique(dialog));
+
+ RunValidationCallback(kTestClientJid);
+ ASSERT_EQ(ValidationResult::SUCCESS, validation_result_);
+ ASSERT_STREQ(kTestClientUserName, dialog->get_remote_user_email().c_str());
+}
+
+TEST_F(It2MeHostTest, ConnectionValidation_ConfirmationDialog_Reject) {
+ FakeIt2MeConfirmationDialog* dialog = new FakeIt2MeConfirmationDialog();
+ dialog->set_dialog_result(DialogResult::CANCEL);
+ fake_dialog_factory_->set_confirmation_dialog(base::WrapUnique(dialog));
+
+ RunValidationCallback(kTestClientJid);
+ ASSERT_EQ(ValidationResult::ERROR_REJECTED_BY_USER, validation_result_);
+ ASSERT_STREQ(kTestClientUserName, dialog->get_remote_user_email().c_str());
+}
+
} // namespace remoting
« no previous file with comments | « remoting/host/it2me/it2me_host.cc ('k') | remoting/resources/remoting_strings.grd » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698