telemetry: Support custom 'out' directory
[chromium-blink-merge.git] / remoting / protocol / connection_to_client_unittest.cc
blobfaffb3cb0face3af6941a530993a2a046de6c3aa
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "remoting/protocol/connection_to_client.h"
7 #include "base/bind.h"
8 #include "base/message_loop/message_loop.h"
9 #include "base/message_loop/message_loop_proxy.h"
10 #include "remoting/base/constants.h"
11 #include "remoting/protocol/fake_session.h"
12 #include "remoting/protocol/protocol_mock_objects.h"
13 #include "testing/gmock/include/gmock/gmock.h"
15 using ::testing::_;
16 using ::testing::NotNull;
17 using ::testing::StrictMock;
19 namespace remoting {
20 namespace protocol {
22 class ConnectionToClientTest : public testing::Test {
23 public:
24 ConnectionToClientTest() {
27 protected:
28 virtual void SetUp() OVERRIDE {
29 session_ = new FakeSession();
31 // Allocate a ClientConnection object with the mock objects.
32 viewer_.reset(new ConnectionToClient(session_));
33 viewer_->set_clipboard_stub(&clipboard_stub_);
34 viewer_->set_host_stub(&host_stub_);
35 viewer_->set_input_stub(&input_stub_);
36 viewer_->SetEventHandler(&handler_);
37 EXPECT_CALL(handler_, OnConnectionAuthenticated(viewer_.get()));
38 EXPECT_CALL(handler_, OnConnectionChannelsConnected(viewer_.get()));
39 session_->event_handler()->OnSessionStateChange(Session::CONNECTED);
40 session_->event_handler()->OnSessionStateChange(Session::AUTHENTICATED);
41 message_loop_.RunUntilIdle();
44 virtual void TearDown() OVERRIDE {
45 viewer_.reset();
46 message_loop_.RunUntilIdle();
49 base::MessageLoop message_loop_;
50 MockConnectionToClientEventHandler handler_;
51 MockClipboardStub clipboard_stub_;
52 MockHostStub host_stub_;
53 MockInputStub input_stub_;
54 scoped_ptr<ConnectionToClient> viewer_;
56 // Owned by |viewer_|.
57 FakeSession* session_;
59 private:
60 DISALLOW_COPY_AND_ASSIGN(ConnectionToClientTest);
63 TEST_F(ConnectionToClientTest, SendUpdateStream) {
64 scoped_ptr<VideoPacket> packet(new VideoPacket());
65 viewer_->video_stub()->ProcessVideoPacket(packet.Pass(), base::Closure());
67 message_loop_.RunUntilIdle();
69 // Verify that something has been written.
70 // TODO(sergeyu): Verify that the correct data has been written.
71 ASSERT_TRUE(session_->GetStreamChannel(kVideoChannelName));
72 EXPECT_GT(session_->GetStreamChannel(kVideoChannelName)->
73 written_data().size(), 0u);
75 // And then close the connection to ConnectionToClient.
76 viewer_->Disconnect();
78 message_loop_.RunUntilIdle();
81 TEST_F(ConnectionToClientTest, NoWriteAfterDisconnect) {
82 scoped_ptr<VideoPacket> packet(new VideoPacket());
83 viewer_->video_stub()->ProcessVideoPacket(packet.Pass(), base::Closure());
85 // And then close the connection to ConnectionToClient.
86 viewer_->Disconnect();
88 // The test will crash if data writer tries to write data to the
89 // channel socket.
90 // TODO(sergeyu): Use MockSession to verify that no data is written?
91 message_loop_.RunUntilIdle();
94 TEST_F(ConnectionToClientTest, StateChange) {
95 EXPECT_CALL(handler_, OnConnectionClosed(viewer_.get(), OK));
96 session_->event_handler()->OnSessionStateChange(Session::CLOSED);
97 message_loop_.RunUntilIdle();
99 EXPECT_CALL(handler_, OnConnectionClosed(viewer_.get(), SESSION_REJECTED));
100 session_->set_error(SESSION_REJECTED);
101 session_->event_handler()->OnSessionStateChange(Session::FAILED);
102 message_loop_.RunUntilIdle();
105 } // namespace protocol
106 } // namespace remoting