Index: remoting/host/security_key/gnubby_extension_session_unittest.cc |
diff --git a/remoting/host/security_key/gnubby_extension_session_unittest.cc b/remoting/host/security_key/gnubby_extension_session_unittest.cc |
index 01e6546ea923e8cba4d19ef8d5a2eb92dab2585b..3bd04d5c4a7f6949827431c5c87f0d1257aebeda 100644 |
--- a/remoting/host/security_key/gnubby_extension_session_unittest.cc |
+++ b/remoting/host/security_key/gnubby_extension_session_unittest.cc |
@@ -21,6 +21,7 @@ |
#include "net/base/net_errors.h" |
#include "net/base/test_completion_callback.h" |
#include "net/socket/unix_domain_client_socket_posix.h" |
+#include "remoting/host/client_session_details.h" |
#include "remoting/host/host_mock_objects.h" |
#include "remoting/host/security_key/gnubby_auth_handler.h" |
#include "remoting/proto/internal.pb.h" |
@@ -53,45 +54,25 @@ const unsigned char kRequestData[] = { |
class TestClientStub : public protocol::ClientStub { |
public: |
- TestClientStub() : run_loop_(new base::RunLoop) {} |
- ~TestClientStub() override {} |
+ TestClientStub(); |
+ ~TestClientStub() override; |
// protocol::ClientStub implementation. |
- void SetCapabilities(const protocol::Capabilities& capabilities) override {} |
- |
+ void SetCapabilities(const protocol::Capabilities& capabilities) override; |
void SetPairingResponse( |
- const protocol::PairingResponse& pairing_response) override {} |
- |
- void DeliverHostMessage(const protocol::ExtensionMessage& message) override { |
- message_ = message; |
- run_loop_->Quit(); |
- } |
- |
- void SetVideoLayout(const protocol::VideoLayout& layout) override {} |
+ const protocol::PairingResponse& pairing_response) override; |
+ void DeliverHostMessage(const protocol::ExtensionMessage& message) override; |
+ void SetVideoLayout(const protocol::VideoLayout& layout) override; |
// protocol::ClipboardStub implementation. |
- void InjectClipboardEvent(const protocol::ClipboardEvent& event) override {} |
+ void InjectClipboardEvent(const protocol::ClipboardEvent& event) override; |
// protocol::CursorShapeStub implementation. |
- void SetCursorShape(const protocol::CursorShapeInfo& cursor_shape) override {} |
+ void SetCursorShape(const protocol::CursorShapeInfo& cursor_shape) override; |
- void WaitForDeliverHostMessage(base::TimeDelta max_timeout) { |
- base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( |
- FROM_HERE, run_loop_->QuitClosure(), max_timeout); |
- run_loop_->Run(); |
- run_loop_.reset(new base::RunLoop); |
- } |
- |
- void CheckHostDataMessage(int id, const std::string& data) { |
- std::string connection_id = base::StringPrintf("\"connectionId\":%d", id); |
- std::string data_message = base::StringPrintf("\"data\":%s", data.c_str()); |
+ void WaitForDeliverHostMessage(base::TimeDelta max_timeout); |
- ASSERT_TRUE(message_.type() == "gnubby-auth" || |
- message_.type() == "auth-v1"); |
- ASSERT_NE(message_.data().find("\"type\":\"data\""), std::string::npos); |
- ASSERT_NE(message_.data().find(connection_id), std::string::npos); |
- ASSERT_NE(message_.data().find(data_message), std::string::npos); |
- } |
+ void CheckHostDataMessage(int id, const std::string& data); |
private: |
protocol::ExtensionMessage message_; |
@@ -100,43 +81,76 @@ class TestClientStub : public protocol::ClientStub { |
DISALLOW_COPY_AND_ASSIGN(TestClientStub); |
}; |
-class GnubbyExtensionSessionTest : public testing::Test { |
+TestClientStub::TestClientStub() : run_loop_(new base::RunLoop) {} |
+ |
+TestClientStub::~TestClientStub() {} |
+ |
+void TestClientStub::SetCapabilities( |
+ const protocol::Capabilities& capabilities) {} |
+ |
+void TestClientStub::SetPairingResponse( |
+ const protocol::PairingResponse& pairing_response) {} |
+ |
+void TestClientStub::DeliverHostMessage( |
+ const protocol::ExtensionMessage& message) { |
+ message_ = message; |
+ run_loop_->Quit(); |
+} |
+ |
+void TestClientStub::SetVideoLayout(const protocol::VideoLayout& layout) {} |
+ |
+void TestClientStub::InjectClipboardEvent( |
+ const protocol::ClipboardEvent& event) {} |
+ |
+void TestClientStub::SetCursorShape( |
+ const protocol::CursorShapeInfo& cursor_shape) {} |
+ |
+void TestClientStub::WaitForDeliverHostMessage(base::TimeDelta max_timeout) { |
+ base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( |
+ FROM_HERE, run_loop_->QuitClosure(), max_timeout); |
+ run_loop_->Run(); |
+ run_loop_.reset(new base::RunLoop); |
+} |
+ |
+void TestClientStub::CheckHostDataMessage(int id, const std::string& data) { |
+ std::string connection_id = base::StringPrintf("\"connectionId\":%d", id); |
+ std::string data_message = base::StringPrintf("\"data\":%s", data.c_str()); |
+ |
+ ASSERT_TRUE(message_.type() == "gnubby-auth" || message_.type() == "auth-v1"); |
+ ASSERT_NE(message_.data().find("\"type\":\"data\""), std::string::npos); |
+ ASSERT_NE(message_.data().find(connection_id), std::string::npos); |
+ ASSERT_NE(message_.data().find(data_message), std::string::npos); |
+} |
+ |
+class TestClientSessionDetails : public ClientSessionDetails { |
public: |
- GnubbyExtensionSessionTest() |
- : gnubby_extension_session_(new GnubbyExtensionSession(&client_stub_)) { |
- // We want to retain ownership of mock object so we can use it to inject |
- // events into the extension session. The mock object should not be used |
- // once |gnubby_extension_session_| is destroyed. |
- mock_gnubby_auth_handler_ = new MockGnubbyAuthHandler(); |
- gnubby_extension_session_->SetGnubbyAuthHandlerForTesting( |
- base::WrapUnique(mock_gnubby_auth_handler_)); |
- } |
+ TestClientSessionDetails(); |
+ ~TestClientSessionDetails() override; |
- void WaitForAndVerifyHostMessage() { |
- client_stub_.WaitForDeliverHostMessage( |
- base::TimeDelta::FromMilliseconds(500)); |
- base::ListValue expected_data; |
+ // ClientSessionDetails interface. |
+ uint32_t desktop_session_id() const override { return desktop_session_id_; } |
+ ClientSessionControl* session_control() override { return nullptr; } |
- // Skip first four bytes. |
- for (size_t i = 4; i < sizeof(kRequestData); ++i) { |
- expected_data.AppendInteger(kRequestData[i]); |
- } |
+ void set_desktop_session_id(uint32_t new_id) { desktop_session_id_ = new_id; } |
- std::string expected_data_json; |
- base::JSONWriter::Write(expected_data, &expected_data_json); |
- client_stub_.CheckHostDataMessage(1, expected_data_json); |
- } |
+ private: |
+ uint32_t desktop_session_id_ = UINT32_MAX; |
- void CreateGnubbyConnection() { |
- EXPECT_CALL(*mock_gnubby_auth_handler_, CreateGnubbyConnection()).Times(1); |
+ DISALLOW_COPY_AND_ASSIGN(TestClientSessionDetails); |
+}; |
- protocol::ExtensionMessage message; |
- message.set_type("gnubby-auth"); |
- message.set_data("{\"type\":\"control\",\"option\":\"auth-v1\"}"); |
+TestClientSessionDetails::TestClientSessionDetails() {} |
- ASSERT_TRUE(gnubby_extension_session_->OnExtensionMessage(nullptr, nullptr, |
- message)); |
- } |
+TestClientSessionDetails::~TestClientSessionDetails() {} |
+ |
+class GnubbyExtensionSessionTest : public testing::Test { |
+ public: |
+ GnubbyExtensionSessionTest(); |
+ ~GnubbyExtensionSessionTest() override; |
+ |
+ void WaitForAndVerifyHostMessage(); |
+ |
+ void CreateGnubbyConnection(); |
protected: |
base::MessageLoopForIO message_loop_; |
@@ -147,11 +161,51 @@ class GnubbyExtensionSessionTest : public testing::Test { |
MockGnubbyAuthHandler* mock_gnubby_auth_handler_ = nullptr; |
TestClientStub client_stub_; |
+ TestClientSessionDetails client_details_; |
private: |
DISALLOW_COPY_AND_ASSIGN(GnubbyExtensionSessionTest); |
}; |
+GnubbyExtensionSessionTest::GnubbyExtensionSessionTest() |
+ : gnubby_extension_session_( |
+ new GnubbyExtensionSession(&client_details_, &client_stub_)) { |
+ // We want to retain ownership of mock object so we can use it to inject |
+ // events into the extension session. The mock object should not be used |
+ // once |gnubby_extension_session_| is destroyed. |
+ mock_gnubby_auth_handler_ = new MockGnubbyAuthHandler(); |
+ gnubby_extension_session_->SetGnubbyAuthHandlerForTesting( |
+ base::WrapUnique(mock_gnubby_auth_handler_)); |
+} |
+ |
+GnubbyExtensionSessionTest::~GnubbyExtensionSessionTest() {} |
+ |
+void GnubbyExtensionSessionTest::WaitForAndVerifyHostMessage() { |
+ client_stub_.WaitForDeliverHostMessage( |
+ base::TimeDelta::FromMilliseconds(500)); |
+ base::ListValue expected_data; |
+ |
+ // Skip first four bytes. |
+ for (size_t i = 4; i < sizeof(kRequestData); ++i) { |
+ expected_data.AppendInteger(kRequestData[i]); |
+ } |
+ |
+ std::string expected_data_json; |
+ base::JSONWriter::Write(expected_data, &expected_data_json); |
+ client_stub_.CheckHostDataMessage(1, expected_data_json); |
+} |
+ |
+void GnubbyExtensionSessionTest::CreateGnubbyConnection() { |
+ EXPECT_CALL(*mock_gnubby_auth_handler_, CreateGnubbyConnection()).Times(1); |
+ |
+ protocol::ExtensionMessage message; |
+ message.set_type("gnubby-auth"); |
+ message.set_data("{\"type\":\"control\",\"option\":\"auth-v1\"}"); |
+ |
+ ASSERT_TRUE( |
+ gnubby_extension_session_->OnExtensionMessage(nullptr, nullptr, message)); |
+} |
+ |
TEST_F(GnubbyExtensionSessionTest, GnubbyConnectionCreated_ValidMessage) { |
CreateGnubbyConnection(); |
} |