summaryrefslogtreecommitdiffstats
path: root/jingle/notifier
diff options
context:
space:
mode:
Diffstat (limited to 'jingle/notifier')
-rw-r--r--jingle/notifier/base/fake_base_task.cc54
-rw-r--r--jingle/notifier/base/fake_base_task.h38
2 files changed, 92 insertions, 0 deletions
diff --git a/jingle/notifier/base/fake_base_task.cc b/jingle/notifier/base/fake_base_task.cc
new file mode 100644
index 0000000..255ae64
--- /dev/null
+++ b/jingle/notifier/base/fake_base_task.cc
@@ -0,0 +1,54 @@
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+// A simple wrapper around invalidation::InvalidationClient that
+// handles all the startup/shutdown details and hookups.
+
+#include "base/message_loop.h"
+#include "jingle/notifier/base/fake_base_task.h"
+#include "jingle/notifier/base/weak_xmpp_client.h"
+#include "talk/xmpp/asyncsocket.h"
+#include "testing/gmock/include/gmock/gmock.h"
+
+namespace notifier {
+
+using ::testing::_;
+using ::testing::Return;
+
+class MockAsyncSocket : public buzz::AsyncSocket {
+ public:
+ virtual ~MockAsyncSocket() {}
+
+ MOCK_METHOD0(state, State());
+ MOCK_METHOD0(error, Error());
+ MOCK_METHOD0(GetError, int());
+ MOCK_METHOD1(Connect, bool(const talk_base::SocketAddress&));
+ MOCK_METHOD3(Read, bool(char*, size_t, size_t*));
+ MOCK_METHOD2(Write, bool(const char*, size_t));
+ MOCK_METHOD0(Close, bool());
+ MOCK_METHOD1(StartTls, bool(const std::string&));
+};
+
+FakeBaseTask::FakeBaseTask() {
+ // Owned by |task_pump_|.
+ notifier::WeakXmppClient* weak_xmpp_client =
+ new notifier::WeakXmppClient(&task_pump_);
+
+ weak_xmpp_client->Start();
+ buzz::XmppClientSettings settings;
+ // Owned by |weak_xmpp_client|.
+ MockAsyncSocket* mock_async_socket = new MockAsyncSocket();
+ EXPECT_CALL(*mock_async_socket, Connect(_)).WillOnce(Return(true));
+ weak_xmpp_client->Connect(settings, "en", mock_async_socket, NULL);
+ // Initialize the XMPP client.
+ MessageLoop::current()->RunAllPending();
+
+ base_task_ = weak_xmpp_client->AsWeakPtr();
+}
+
+base::WeakPtr<talk_base::Task> FakeBaseTask::AsWeakPtr() {
+ return base_task_;
+}
+
+} // namespace notifier
diff --git a/jingle/notifier/base/fake_base_task.h b/jingle/notifier/base/fake_base_task.h
new file mode 100644
index 0000000..c165561
--- /dev/null
+++ b/jingle/notifier/base/fake_base_task.h
@@ -0,0 +1,38 @@
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+// A simple wrapper around invalidation::InvalidationClient that
+// handles all the startup/shutdown details and hookups.
+
+#ifndef JINGLE_NOTIFIER_FAKE_XMPP_CLIENT_H_
+#define JINGLE_NOTIFIER_FAKE_XMPP_CLIENT_H_
+#pragma once
+
+#include "base/basictypes.h"
+#include "base/weak_ptr.h"
+#include "jingle/notifier/base/task_pump.h"
+
+namespace talk_base {
+class Task;
+} // namespace talk_base
+
+namespace notifier {
+
+// This class expects a message loop to exist on the current thread.
+class FakeBaseTask {
+ public:
+ FakeBaseTask();
+
+ base::WeakPtr<talk_base::Task> AsWeakPtr();
+
+ private:
+ notifier::TaskPump task_pump_;
+ base::WeakPtr<talk_base::Task> base_task_;
+
+ DISALLOW_COPY_AND_ASSIGN(FakeBaseTask);
+};
+
+} // namespace notifier
+
+#endif // JINGLE_NOTIFIER_FAKE_XMPP_CLIENT_H_