Home | History | Annotate | Download | only in base
      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