summaryrefslogtreecommitdiffstats
path: root/chromium/google_apis/gcm/engine/rmq_store_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/google_apis/gcm/engine/rmq_store_unittest.cc')
-rw-r--r--chromium/google_apis/gcm/engine/rmq_store_unittest.cc303
1 files changed, 0 insertions, 303 deletions
diff --git a/chromium/google_apis/gcm/engine/rmq_store_unittest.cc b/chromium/google_apis/gcm/engine/rmq_store_unittest.cc
deleted file mode 100644
index 1fd55bcf14b..00000000000
--- a/chromium/google_apis/gcm/engine/rmq_store_unittest.cc
+++ /dev/null
@@ -1,303 +0,0 @@
-// Copyright 2013 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.
-
-#include "google_apis/gcm/engine/rmq_store.h"
-
-#include <string>
-#include <vector>
-
-#include "base/bind.h"
-#include "base/files/file_path.h"
-#include "base/files/scoped_temp_dir.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/message_loop/message_loop.h"
-#include "base/run_loop.h"
-#include "base/strings/string_number_conversions.h"
-#include "components/webdata/encryptor/encryptor.h"
-#include "google_apis/gcm/base/mcs_message.h"
-#include "google_apis/gcm/base/mcs_util.h"
-#include "google_apis/gcm/protocol/mcs.pb.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-namespace gcm {
-
-namespace {
-
-// Number of persistent ids to use in tests.
-const int kNumPersistentIds = 10;
-
-const uint64 kDeviceId = 22;
-const uint64 kDeviceToken = 55;
-
-class RMQStoreTest : public testing::Test {
- public:
- RMQStoreTest();
- virtual ~RMQStoreTest();
-
- scoped_ptr<RMQStore> BuildRMQStore();
-
- std::string GetNextPersistentId();
-
- void PumpLoop();
-
- void LoadCallback(RMQStore::LoadResult* result_dst,
- const RMQStore::LoadResult& result);
- void UpdateCallback(bool success);
-
- private:
- base::MessageLoop message_loop_;
- base::ScopedTempDir temp_directory_;
- scoped_ptr<base::RunLoop> run_loop_;
-};
-
-RMQStoreTest::RMQStoreTest() {
- EXPECT_TRUE(temp_directory_.CreateUniqueTempDir());
- run_loop_.reset(new base::RunLoop());
-
- // On OSX, prevent the Keychain permissions popup during unit tests.
- #if defined(OS_MACOSX)
- Encryptor::UseMockKeychain(true);
- #endif
-}
-
-RMQStoreTest::~RMQStoreTest() {
-}
-
-scoped_ptr<RMQStore> RMQStoreTest::BuildRMQStore() {
- return scoped_ptr<RMQStore>(new RMQStore(temp_directory_.path(),
- message_loop_.message_loop_proxy()));
-}
-
-std::string RMQStoreTest::GetNextPersistentId() {
- return base::Uint64ToString(base::Time::Now().ToInternalValue());
-}
-
-void RMQStoreTest::PumpLoop() {
- message_loop_.RunUntilIdle();
-}
-
-void RMQStoreTest::LoadCallback(RMQStore::LoadResult* result_dst,
- const RMQStore::LoadResult& result) {
- ASSERT_TRUE(result.success);
- *result_dst = result;
- run_loop_->Quit();
- run_loop_.reset(new base::RunLoop());
-}
-
-void RMQStoreTest::UpdateCallback(bool success) {
- ASSERT_TRUE(success);
-}
-
-// Verify creating a new database and loading it.
-TEST_F(RMQStoreTest, LoadNew) {
- scoped_ptr<RMQStore> rmq_store(BuildRMQStore());
- RMQStore::LoadResult load_result;
- rmq_store->Load(base::Bind(&RMQStoreTest::LoadCallback,
- base::Unretained(this),
- &load_result));
- PumpLoop();
-
- ASSERT_EQ(0U, load_result.device_android_id);
- ASSERT_EQ(0U, load_result.device_security_token);
- ASSERT_TRUE(load_result.incoming_messages.empty());
- ASSERT_TRUE(load_result.outgoing_messages.empty());
-}
-
-TEST_F(RMQStoreTest, DeviceCredentials) {
- scoped_ptr<RMQStore> rmq_store(BuildRMQStore());
- RMQStore::LoadResult load_result;
- rmq_store->Load(base::Bind(&RMQStoreTest::LoadCallback,
- base::Unretained(this),
- &load_result));
- PumpLoop();
-
- rmq_store->SetDeviceCredentials(kDeviceId,
- kDeviceToken,
- base::Bind(&RMQStoreTest::UpdateCallback,
- base::Unretained(this)));
- PumpLoop();
-
- rmq_store = BuildRMQStore().Pass();
- rmq_store->Load(base::Bind(&RMQStoreTest::LoadCallback,
- base::Unretained(this),
- &load_result));
- PumpLoop();
-
- ASSERT_EQ(kDeviceId, load_result.device_android_id);
- ASSERT_EQ(kDeviceToken, load_result.device_security_token);
-}
-
-// Verify saving some incoming messages, reopening the directory, and then
-// removing those incoming messages.
-TEST_F(RMQStoreTest, IncomingMessages) {
- scoped_ptr<RMQStore> rmq_store(BuildRMQStore());
- RMQStore::LoadResult load_result;
- rmq_store->Load(base::Bind(&RMQStoreTest::LoadCallback,
- base::Unretained(this),
- &load_result));
- PumpLoop();
-
- std::vector<std::string> persistent_ids;
- for (int i = 0; i < kNumPersistentIds; ++i) {
- persistent_ids.push_back(GetNextPersistentId());
- rmq_store->AddIncomingMessage(persistent_ids.back(),
- base::Bind(&RMQStoreTest::UpdateCallback,
- base::Unretained(this)));
- PumpLoop();
- }
-
- rmq_store = BuildRMQStore().Pass();
- rmq_store->Load(base::Bind(&RMQStoreTest::LoadCallback,
- base::Unretained(this),
- &load_result));
- PumpLoop();
-
- ASSERT_EQ(persistent_ids, load_result.incoming_messages);
- ASSERT_TRUE(load_result.outgoing_messages.empty());
-
- rmq_store->RemoveIncomingMessages(persistent_ids,
- base::Bind(&RMQStoreTest::UpdateCallback,
- base::Unretained(this)));
- PumpLoop();
-
- rmq_store = BuildRMQStore().Pass();
- load_result.incoming_messages.clear();
- rmq_store->Load(base::Bind(&RMQStoreTest::LoadCallback,
- base::Unretained(this),
- &load_result));
- PumpLoop();
-
- ASSERT_TRUE(load_result.incoming_messages.empty());
- ASSERT_TRUE(load_result.outgoing_messages.empty());
-}
-
-// Verify saving some outgoing messages, reopening the directory, and then
-// removing those outgoing messages.
-TEST_F(RMQStoreTest, OutgoingMessages) {
- scoped_ptr<RMQStore> rmq_store(BuildRMQStore());
- RMQStore::LoadResult load_result;
- rmq_store->Load(base::Bind(&RMQStoreTest::LoadCallback,
- base::Unretained(this),
- &load_result));
- PumpLoop();
-
- std::vector<std::string> persistent_ids;
- const int kNumPersistentIds = 10;
- for (int i = 0; i < kNumPersistentIds; ++i) {
- persistent_ids.push_back(GetNextPersistentId());
- mcs_proto::DataMessageStanza message;
- message.set_from(persistent_ids.back());
- message.set_category(persistent_ids.back());
- rmq_store->AddOutgoingMessage(persistent_ids.back(),
- MCSMessage(message),
- base::Bind(&RMQStoreTest::UpdateCallback,
- base::Unretained(this)));
- PumpLoop();
- }
-
- rmq_store = BuildRMQStore().Pass();
- rmq_store->Load(base::Bind(&RMQStoreTest::LoadCallback,
- base::Unretained(this),
- &load_result));
- PumpLoop();
-
- ASSERT_TRUE(load_result.incoming_messages.empty());
- ASSERT_EQ(load_result.outgoing_messages.size(), persistent_ids.size());
- for (int i =0 ; i < kNumPersistentIds; ++i) {
- std::string id = persistent_ids[i];
- ASSERT_TRUE(load_result.outgoing_messages[id]);
- const mcs_proto::DataMessageStanza* message =
- reinterpret_cast<mcs_proto::DataMessageStanza *>(
- load_result.outgoing_messages[id]);
- ASSERT_EQ(message->from(), id);
- ASSERT_EQ(message->category(), id);
- }
-
- rmq_store->RemoveOutgoingMessages(persistent_ids,
- base::Bind(&RMQStoreTest::UpdateCallback,
- base::Unretained(this)));
- PumpLoop();
-
- rmq_store = BuildRMQStore().Pass();
- load_result.outgoing_messages.clear();
- rmq_store->Load(base::Bind(&RMQStoreTest::LoadCallback,
- base::Unretained(this),
- &load_result));
- PumpLoop();
-
- ASSERT_TRUE(load_result.incoming_messages.empty());
- ASSERT_TRUE(load_result.outgoing_messages.empty());
-}
-
-// Verify incoming and outgoing messages don't conflict.
-TEST_F(RMQStoreTest, IncomingAndOutgoingMessages) {
- scoped_ptr<RMQStore> rmq_store(BuildRMQStore());
- RMQStore::LoadResult load_result;
- rmq_store->Load(base::Bind(&RMQStoreTest::LoadCallback,
- base::Unretained(this),
- &load_result));
- PumpLoop();
-
- std::vector<std::string> persistent_ids;
- const int kNumPersistentIds = 10;
- for (int i = 0; i < kNumPersistentIds; ++i) {
- persistent_ids.push_back(GetNextPersistentId());
- rmq_store->AddIncomingMessage(persistent_ids.back(),
- base::Bind(&RMQStoreTest::UpdateCallback,
- base::Unretained(this)));
- PumpLoop();
-
- mcs_proto::DataMessageStanza message;
- message.set_from(persistent_ids.back());
- message.set_category(persistent_ids.back());
- rmq_store->AddOutgoingMessage(persistent_ids.back(),
- MCSMessage(message),
- base::Bind(&RMQStoreTest::UpdateCallback,
- base::Unretained(this)));
- PumpLoop();
- }
-
-
- rmq_store = BuildRMQStore().Pass();
- rmq_store->Load(base::Bind(&RMQStoreTest::LoadCallback,
- base::Unretained(this),
- &load_result));
- PumpLoop();
-
- ASSERT_EQ(persistent_ids, load_result.incoming_messages);
- ASSERT_EQ(load_result.outgoing_messages.size(), persistent_ids.size());
- for (int i =0 ; i < kNumPersistentIds; ++i) {
- std::string id = persistent_ids[i];
- ASSERT_TRUE(load_result.outgoing_messages[id]);
- const mcs_proto::DataMessageStanza* message =
- reinterpret_cast<mcs_proto::DataMessageStanza *>(
- load_result.outgoing_messages[id]);
- ASSERT_EQ(message->from(), id);
- ASSERT_EQ(message->category(), id);
- }
-
- rmq_store->RemoveIncomingMessages(persistent_ids,
- base::Bind(&RMQStoreTest::UpdateCallback,
- base::Unretained(this)));
- PumpLoop();
- rmq_store->RemoveOutgoingMessages(persistent_ids,
- base::Bind(&RMQStoreTest::UpdateCallback,
- base::Unretained(this)));
- PumpLoop();
-
- rmq_store = BuildRMQStore().Pass();
- load_result.incoming_messages.clear();
- load_result.outgoing_messages.clear();
- rmq_store->Load(base::Bind(&RMQStoreTest::LoadCallback,
- base::Unretained(this),
- &load_result));
- PumpLoop();
-
- ASSERT_TRUE(load_result.incoming_messages.empty());
- ASSERT_TRUE(load_result.outgoing_messages.empty());
-}
-
-} // namespace
-
-} // namespace gcm