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. 4 5 #include "base/compiler_specific.h" 6 #include "jingle/notifier/base/fake_base_task.h" 7 #include "jingle/notifier/base/weak_xmpp_client.h" 8 #include "talk/xmpp/asyncsocket.h" 9 #include "testing/gmock/include/gmock/gmock.h" 10 11 namespace notifier { 12 13 using ::testing::_; 14 using ::testing::Return; 15 16 class MockAsyncSocket : public buzz::AsyncSocket { 17 public: 18 virtual ~MockAsyncSocket() {} 19 20 MOCK_METHOD0(state, State()); 21 MOCK_METHOD0(error, Error()); 22 MOCK_METHOD0(GetError, int()); 23 MOCK_METHOD1(Connect, bool(const talk_base::SocketAddress&)); 24 MOCK_METHOD3(Read, bool(char*, size_t, size_t*)); 25 MOCK_METHOD2(Write, bool(const char*, size_t)); 26 MOCK_METHOD0(Close, bool()); 27 MOCK_METHOD1(StartTls, bool(const std::string&)); 28 }; 29 30 } // namespace notifier 31 32 namespace { 33 34 // Extends WeakXmppClient to make jid() return a full jid, as required by 35 // PushNotificationsSubscribeTask. 36 class FakeWeakXmppClient : public notifier::WeakXmppClient { 37 public: 38 explicit FakeWeakXmppClient(talk_base::TaskParent* parent) 39 : notifier::WeakXmppClient(parent), 40 jid_("test (at) example.com/testresource") {} 41 42 virtual ~FakeWeakXmppClient() {} 43 44 virtual const buzz::Jid& jid() const OVERRIDE { 45 return jid_; 46 } 47 48 private: 49 buzz::Jid jid_; 50 }; 51 52 } // namespace 53 54 namespace notifier { 55 56 FakeBaseTask::FakeBaseTask() { 57 // Owned by |task_pump_|. 58 FakeWeakXmppClient* weak_xmpp_client = 59 new FakeWeakXmppClient(&task_pump_); 60 61 weak_xmpp_client->Start(); 62 buzz::XmppClientSettings settings; 63 // Owned by |weak_xmpp_client|. 64 MockAsyncSocket* mock_async_socket = new MockAsyncSocket(); 65 EXPECT_CALL(*mock_async_socket, Connect(_)).WillOnce(Return(true)); 66 weak_xmpp_client->Connect(settings, "en", mock_async_socket, NULL); 67 // Initialize the XMPP client. 68 task_pump_.RunTasks(); 69 70 base_task_ = weak_xmpp_client->AsWeakPtr(); 71 } 72 73 FakeBaseTask::~FakeBaseTask() {} 74 75 base::WeakPtr<buzz::XmppTaskParentInterface> FakeBaseTask::AsWeakPtr() { 76 return base_task_; 77 } 78 79 } // namespace notifier 80