Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(94)

Unified Diff: components/copresence/handlers/gcm_handler_unittest.cc

Issue 712833002: Undoing revert, cl is not the cause of gcm crash on canary. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@2214
Patch Set: Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « components/copresence/handlers/gcm_handler.cc ('k') | components/copresence/proto/BUILD.gn » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/copresence/handlers/gcm_handler_unittest.cc
diff --git a/components/copresence/handlers/gcm_handler_unittest.cc b/components/copresence/handlers/gcm_handler_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..ee3629115d0b4026c8bfc204a60e4d999335156c
--- /dev/null
+++ b/components/copresence/handlers/gcm_handler_unittest.cc
@@ -0,0 +1,71 @@
+// Copyright 2014 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 "components/copresence/handlers/gcm_handler.h"
+
+#include "base/base64.h"
+#include "base/memory/scoped_ptr.h"
+#include "base/strings/string_util.h"
+#include "components/copresence/proto/push_message.pb.h"
+#include "components/copresence/test/fake_directive_handler.h"
+#include "components/gcm_driver/fake_gcm_driver.h"
+#include "components/gcm_driver/gcm_client.h"
+#include "testing/gmock/include/gmock/gmock.h"
+
+using gcm::GCMClient;
+
+namespace {
+
+// TODO(ckehoe): Move this to a central place.
+std::string ToUrlSafe(std::string token) {
+ base::ReplaceChars(token, "+", "-", &token);
+ base::ReplaceChars(token, "/", "_", &token);
+ return token;
+}
+
+} // namespace
+
+
+namespace copresence {
+
+class GCMHandlerTest : public testing::Test {
+ public:
+ GCMHandlerTest()
+ : driver_(new gcm::FakeGCMDriver),
+ directive_handler_(new FakeDirectiveHandler),
+ gcm_handler_(driver_.get(), directive_handler_.get()) {
+ }
+
+ protected:
+ scoped_ptr<gcm::GCMDriver> driver_;
+ scoped_ptr<FakeDirectiveHandler> directive_handler_;
+ GCMHandler gcm_handler_;
+};
+
+TEST_F(GCMHandlerTest, OnMessage) {
+ // Create a PushMessage.
+ PushMessage push_message;
+ push_message.set_type(PushMessage::REPORT);
+ Report* report = push_message.mutable_report();
+ report->add_directive()->set_subscription_id("subscription 1");
+ report->add_directive()->set_subscription_id("subscription 2");
+
+ // Encode it.
+ std::string serialized_proto;
+ std::string encoded_proto;
+ push_message.SerializeToString(&serialized_proto);
+ base::Base64Encode(serialized_proto, &encoded_proto);
+
+ // Send it in a GCM message.
+ GCMClient::IncomingMessage gcm_message;
+ gcm_message.data[GCMHandler::kGcmMessageKey] = ToUrlSafe(encoded_proto);
+ gcm_handler_.OnMessage(GCMHandler::kCopresenceAppId, gcm_message);
+
+ // Check that the correct directives were passed along.
+ EXPECT_THAT(directive_handler_->added_directives(),
+ testing::ElementsAre("subscription 1", "subscription 2"));
+}
+
+} // namespace copresence
+
« no previous file with comments | « components/copresence/handlers/gcm_handler.cc ('k') | components/copresence/proto/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698