Index: remoting/signaling/push_notification_subscriber_unittest.cc |
diff --git a/remoting/signaling/push_notification_subscriber_unittest.cc b/remoting/signaling/push_notification_subscriber_unittest.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..6536f9c6c3d459b6ff5f3ca353eff4a8c5b2ba4c |
--- /dev/null |
+++ b/remoting/signaling/push_notification_subscriber_unittest.cc |
@@ -0,0 +1,59 @@ |
+// Copyright 2015 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 "remoting/signaling/push_notification_subscriber.h" |
+ |
+#include "remoting/signaling/mock_signal_strategy.h" |
+#include "testing/gmock/include/gmock/gmock.h" |
+ |
+using testing::_; |
+using testing::AtLeast; |
+using testing::DoAll; |
+using testing::Return; |
+using testing::SaveArg; |
+ |
+namespace remoting { |
+ |
+TEST(PushNotificationSubscriberTest, Create) { |
+ MockSignalStrategy signal_strategy; |
+ EXPECT_CALL(signal_strategy, AddListener(_)); |
+ EXPECT_CALL(signal_strategy, RemoveListener(_)); |
+ |
+ PushNotificationSubscriber::SubscriptionList subscriptions; |
+ PushNotificationSubscriber subscriber(&signal_strategy, subscriptions); |
+} |
+ |
+TEST(PushNotificationSubscriberTest, Subscribe) { |
+ MockSignalStrategy signal_strategy; |
+ EXPECT_CALL(signal_strategy, GetLocalJid()) |
+ .WillRepeatedly(Return("user@domain/resource")); |
+ EXPECT_CALL(signal_strategy, GetNextId()).WillOnce(Return("next_id")); |
+ EXPECT_CALL(signal_strategy, AddListener(_)).Times(AtLeast(1)); |
+ EXPECT_CALL(signal_strategy, RemoveListener(_)).Times(AtLeast(1)); |
+ buzz::XmlElement* sent_stanza; |
+ EXPECT_CALL(signal_strategy, SendStanzaPtr(_)) |
+ .WillOnce(DoAll(SaveArg<0>(&sent_stanza), Return(true))); |
+ |
+ PushNotificationSubscriber::Subscription subscription; |
+ subscription.channel = "sub_channel"; |
+ subscription.from = "sub_from"; |
+ PushNotificationSubscriber::SubscriptionList subscriptions; |
+ subscriptions.push_back(subscription); |
+ PushNotificationSubscriber subscriber(&signal_strategy, subscriptions); |
+ SignalStrategy::Listener* listener = &subscriber; |
+ listener->OnSignalStrategyStateChange(SignalStrategy::CONNECTED); |
+ |
+ EXPECT_EQ( |
+ "<cli:iq type=\"set\" to=\"user@domain\" id=\"next_id\"" |
+ " xmlns:cli=\"jabber:client\">" |
+ "<push:subscribe xmlns:push=\"google:push\">" |
+ "<push:item channel=\"sub_channel\" from=\"sub_from\"/>" |
+ "</push:subscribe>" |
+ "</cli:iq>", |
+ sent_stanza->Str()); |
+ |
+ delete sent_stanza; |
+} |
+ |
+} // namespace remoting |