// 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( "" "" "" "" "", sent_stanza->Str()); delete sent_stanza; } } // namespace remoting