Index: chrome/service/service_process_unittest.cc |
diff --git a/chrome/service/service_process_unittest.cc b/chrome/service/service_process_unittest.cc |
index b3ba6081286bc17041c9db576145388fdae548f9..d24c76a8484881b3da57a6a41ae91bbc3df67b0a 100644 |
--- a/chrome/service/service_process_unittest.cc |
+++ b/chrome/service/service_process_unittest.cc |
@@ -2,8 +2,74 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
+#include <vector> |
+ |
+#include "base/base64.h" |
+#include "base/crypto/rsa_private_key.h" |
+#include "base/message_loop.h" |
+#include "base/waitable_event.h" |
+#include "chrome/service/service_process.h" |
+#include "testing/gmock/include/gmock/gmock.h" |
#include "testing/gtest/include/gtest/gtest.h" |
TEST(ServiceProcessTest, Run) { |
- // TODO(hclam): Implement this test. |
+ MessageLoopForUI main_message_loop; |
+ ServiceProcess process; |
+ EXPECT_TRUE(process.Initialize(&main_message_loop)); |
+ EXPECT_TRUE(process.Teardown()); |
+} |
+ |
+#if defined(ENABLE_REMOTING) |
+// TODO(hclam): This method should be made into a util. |
+static std::string GeneratePrivateKey() { |
+ scoped_ptr<base::RSAPrivateKey> key(base::RSAPrivateKey::Create(2048)); |
+ |
+ std::vector<uint8> private_key_buf; |
+ key->ExportPrivateKey(&private_key_buf); |
+ std::string private_key_str(private_key_buf.begin(), private_key_buf.end()); |
+ std::string private_key_base64; |
+ base::Base64Encode(private_key_str, &private_key_base64); |
+ return private_key_base64; |
+} |
+ |
+TEST(ServiceProcessTest, RunChromoting) { |
+ MessageLoopForUI main_message_loop; |
+ ServiceProcess process; |
+ EXPECT_TRUE(process.Initialize(&main_message_loop)); |
+ |
+ // Then config the chromoting host and start it. |
+ process.SaveChromotingConfig("hello", "world", "it's a", "good day", |
+ GeneratePrivateKey()); |
+ EXPECT_TRUE(process.StartChromotingHost()); |
+ EXPECT_TRUE(process.ShutdownChromotingHost()); |
+ EXPECT_TRUE(process.Teardown()); |
+} |
+ |
+class MockServiceProcess : public ServiceProcess { |
+ private: |
+ FRIEND_TEST(ServiceProcessTest, RunChromotingUntilShutdown); |
+ MOCK_METHOD0(OnChromotingHostShutdown, void()); |
+}; |
+ |
+ACTION_P(QuitMessageLoop, message_loop) { |
+ message_loop->PostTask(FROM_HERE, new MessageLoop::QuitTask()); |
+} |
+ |
+TEST(ServiceProcessTest, RunChromotingUntilShutdown) { |
+ MessageLoopForUI main_message_loop; |
+ MockServiceProcess process; |
+ EXPECT_TRUE(process.Initialize(&main_message_loop)); |
+ |
+ // Expect chromoting shutdown be called because the login token is invalid. |
+ EXPECT_CALL(process, OnChromotingHostShutdown()) |
+ .WillOnce(QuitMessageLoop(&main_message_loop)); |
+ |
+ // Then config the chromoting host and start it. |
+ process.SaveChromotingConfig("hello", "world", "it's a", "good day", |
+ GeneratePrivateKey()); |
+ EXPECT_TRUE(process.StartChromotingHost()); |
+ MessageLoop::current()->Run(); |
+ |
+ EXPECT_TRUE(process.Teardown()); |
} |
+#endif // defined(ENABLE_REMOTING) |