| Index: remoting/protocol/ssl_hmac_channel_authenticator_unittest.cc
|
| diff --git a/remoting/protocol/ssl_hmac_channel_authenticator_unittest.cc b/remoting/protocol/ssl_hmac_channel_authenticator_unittest.cc
|
| index 49e4c1e34bc74a33657869f441a39718919ec6cf..5ad8b4f8242c4724450d7c3d21ea89795611077a 100644
|
| --- a/remoting/protocol/ssl_hmac_channel_authenticator_unittest.cc
|
| +++ b/remoting/protocol/ssl_hmac_channel_authenticator_unittest.cc
|
| @@ -8,6 +8,8 @@
|
| #include "base/file_path.h"
|
| #include "base/file_util.h"
|
| #include "base/message_loop.h"
|
| +#include "base/test/test_timeouts.h"
|
| +#include "base/timer.h"
|
| #include "base/path_service.h"
|
| #include "crypto/rsa_private_key.h"
|
| #include "net/base/cert_test_util.h"
|
| @@ -35,14 +37,19 @@ class MockChannelDoneCallback {
|
| MOCK_METHOD2(OnDone, void(net::Error error, net::StreamSocket* socket));
|
| };
|
|
|
| +ACTION_P(QuitThreadOnCounter, counter) {
|
| + --(*counter);
|
| + EXPECT_GE(*counter, 0);
|
| + if (*counter == 0)
|
| + MessageLoop::current()->Quit();
|
| +}
|
| +
|
| } // namespace
|
|
|
| class SslHmacChannelAuthenticatorTest : public testing::Test {
|
| public:
|
| - SslHmacChannelAuthenticatorTest() {
|
| - }
|
| - virtual ~SslHmacChannelAuthenticatorTest() {
|
| - }
|
| + SslHmacChannelAuthenticatorTest() {}
|
| + virtual ~SslHmacChannelAuthenticatorTest() {}
|
|
|
| protected:
|
| virtual void SetUp() OVERRIDE {
|
| @@ -77,15 +84,28 @@ class SslHmacChannelAuthenticatorTest : public testing::Test {
|
| base::Bind(&SslHmacChannelAuthenticatorTest::OnHostConnected,
|
| base::Unretained(this)));
|
|
|
| + // Expect two callbacks to be called - the client callback and the host
|
| + // callback.
|
| + int callback_counter = 2;
|
| +
|
| if (expected_fail) {
|
| - EXPECT_CALL(client_callback_, OnDone(net::ERR_FAILED, NULL));
|
| - EXPECT_CALL(host_callback_, OnDone(net::ERR_FAILED, NULL));
|
| + EXPECT_CALL(client_callback_, OnDone(net::ERR_FAILED, NULL))
|
| + .WillOnce(QuitThreadOnCounter(&callback_counter));
|
| + EXPECT_CALL(host_callback_, OnDone(net::ERR_FAILED, NULL))
|
| + .WillOnce(QuitThreadOnCounter(&callback_counter));
|
| } else {
|
| - EXPECT_CALL(client_callback_, OnDone(net::OK, NotNull()));
|
| - EXPECT_CALL(host_callback_, OnDone(net::OK, NotNull()));
|
| + EXPECT_CALL(client_callback_, OnDone(net::OK, NotNull()))
|
| + .WillOnce(QuitThreadOnCounter(&callback_counter));
|
| + EXPECT_CALL(host_callback_, OnDone(net::OK, NotNull()))
|
| + .WillOnce(QuitThreadOnCounter(&callback_counter));
|
| }
|
|
|
| - message_loop_.RunAllPending();
|
| + // Ensure that .Run() does not run unbounded if the callbacks are never
|
| + // called.
|
| + base::Timer shutdown_timer(false, false);
|
| + shutdown_timer.Start(FROM_HERE, TestTimeouts::action_timeout(),
|
| + MessageLoop::QuitClosure());
|
| + message_loop_.Run();
|
| }
|
|
|
| void OnHostConnected(net::Error error,
|
| @@ -125,8 +145,8 @@ TEST_F(SslHmacChannelAuthenticatorTest, SuccessfulAuth) {
|
|
|
| RunChannelAuth(false);
|
|
|
| - EXPECT_TRUE(client_socket_.get() != NULL);
|
| - EXPECT_TRUE(host_socket_.get() != NULL);
|
| + ASSERT_TRUE(client_socket_.get() != NULL);
|
| + ASSERT_TRUE(host_socket_.get() != NULL);
|
|
|
| StreamConnectionTester tester(host_socket_.get(), client_socket_.get(),
|
| 100, 2);
|
| @@ -145,7 +165,7 @@ TEST_F(SslHmacChannelAuthenticatorTest, InvalidChannelSecret) {
|
|
|
| RunChannelAuth(true);
|
|
|
| - EXPECT_TRUE(host_socket_.get() == NULL);
|
| + ASSERT_TRUE(host_socket_.get() == NULL);
|
| }
|
|
|
| } // namespace protocol
|
|
|