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

Side by Side Diff: ash/common/system/chromeos/network/sms_observer_unittest.cc

Issue 2583393002: Send notification to users upon receiving sms messages (Closed)
Patch Set: address comments Created 3 years, 10 months 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "ash/common/system/chromeos/network/sms_observer.h"
6 #include "ash/common/shelf/shelf_widget.h"
7 #include "ash/common/shelf/wm_shelf.h"
8 #include "ash/public/interfaces/vpn_list.mojom.h"
9 #include "ash/test/ash_test_base.h"
10 #include "base/macros.h"
11 #include "base/strings/utf_string_conversions.h"
12 #include "testing/gtest/include/gtest/gtest.h"
13 #include "ui/base/l10n/l10n_util.h"
14 #include "ui/message_center/message_center.h"
15 #include "ui/message_center/notification.h"
16 #include "ui/message_center/notification_list.h"
17
18 namespace ash {
19 namespace test {
20
21 class SmsObserverTest : public AshTestBase {
22 public:
23 SmsObserverTest() {}
24 ~SmsObserverTest() override {}
25
26 SmsObserver* GetSmsObserver(ShelfWidget* shelf_widget) {
27 return shelf_widget->sms_observer_.get();
28 }
29
30 private:
31 DISALLOW_COPY_AND_ASSIGN(SmsObserverTest);
32 };
33
34 // Verify if notification is received after receiving a sms message with
35 // number and content.
36 TEST_F(SmsObserverTest, SendTextMessage) {
37 SmsObserver* sms_observer = GetSmsObserver(GetPrimaryShelf()->shelf_widget());
38 EXPECT_EQ(
39 0u,
40 message_center::MessageCenter::Get()->GetVisibleNotifications().size());
41 base::DictionaryValue* sms = new base::DictionaryValue();
42 sms->SetString("number", "000-000-0000");
43 sms->SetString("text", "FakeSMSClient: Test Message.");
44 sms->SetString("timestamp", "Fri Jun 8 13:26:04 EDT 2016");
stevenjb 2017/02/07 22:30:25 You set up a test message in several places, it wo
yiyix 2017/02/09 02:01:48 You are right, a helper function would save many l
45 EXPECT_EQ(
46 0u,
47 message_center::MessageCenter::Get()->GetVisibleNotifications().size());
48
49 sms_observer->MessageReceived(*sms);
50
51 const message_center::NotificationList::Notifications notifications =
52 message_center::MessageCenter::Get()->GetVisibleNotifications();
53 EXPECT_EQ(1u, notifications.size());
54
55 EXPECT_EQ((*notifications.begin())->title(),
56 base::ASCIIToUTF16("000-000-0000"));
57 EXPECT_EQ((*notifications.begin())->message(),
58 base::ASCIIToUTF16("FakeSMSClient: Test Message."));
59 message_center::MessageCenter::Get()->RemoveAllNotifications(
60 false /* by_user */, message_center::MessageCenter::RemoveType::ALL);
61 EXPECT_EQ(
62 0u,
63 message_center::MessageCenter::Get()->GetVisibleNotifications().size());
64 }
65
66 // Verify if no notification is received if phone number is missing in sms
67 // message.
68 TEST_F(SmsObserverTest, TextMessageMissingNumber) {
69 SmsObserver* sms_observer = GetSmsObserver(GetPrimaryShelf()->shelf_widget());
70 EXPECT_EQ(
71 0u,
72 message_center::MessageCenter::Get()->GetVisibleNotifications().size());
73 base::DictionaryValue* sms = new base::DictionaryValue();
74 sms->SetString("text", "FakeSMSClient: Test Message.");
75 sms->SetString("timestamp", "Fri Jun 8 13:26:04 EDT 2016");
76
77 sms_observer->MessageReceived(*sms);
78 EXPECT_EQ(
79 0u,
80 message_center::MessageCenter::Get()->GetVisibleNotifications().size());
81 }
82
83 // Verify if no notification is received if text body is empty in sms message.
84 TEST_F(SmsObserverTest, TextMessageEmptyText) {
85 SmsObserver* sms_observer = GetSmsObserver(GetPrimaryShelf()->shelf_widget());
86 EXPECT_EQ(
87 0u,
88 message_center::MessageCenter::Get()->GetVisibleNotifications().size());
89 base::DictionaryValue* sms = new base::DictionaryValue();
90 sms->SetString("number", "000-000-0000");
91 sms->SetString("text", "");
92 sms->SetString("timestamp", "Fri Jun 8 13:26:04 EDT 2016");
93
94 sms_observer->MessageReceived(*sms);
95 EXPECT_EQ(
96 0u,
97 message_center::MessageCenter::Get()->GetVisibleNotifications().size());
98 }
99
100 // Verify if no notification is received if the text is missing in sms message.
101 TEST_F(SmsObserverTest, TextMessageMissingText) {
102 SmsObserver* sms_observer = GetSmsObserver(GetPrimaryShelf()->shelf_widget());
103 EXPECT_EQ(
104 0u,
105 message_center::MessageCenter::Get()->GetVisibleNotifications().size());
106 base::DictionaryValue* sms = new base::DictionaryValue();
107 sms->SetString("number", "000-000-0000");
108 sms->SetString("timestamp", "Fri Jun 8 13:26:04 EDT 2016");
109
110 sms_observer->MessageReceived(*sms);
111 EXPECT_EQ(
112 0u,
113 message_center::MessageCenter::Get()->GetVisibleNotifications().size());
114 }
115
116 // Verify if 2 notification received after receiving 2 sms messages from the
117 // same number.
118 TEST_F(SmsObserverTest, MultipleTextMessages) {
119 SmsObserver* sms_observer = GetSmsObserver(GetPrimaryShelf()->shelf_widget());
120 EXPECT_EQ(
121 0u,
122 message_center::MessageCenter::Get()->GetVisibleNotifications().size());
123 base::DictionaryValue* sms = new base::DictionaryValue();
124 sms->SetString("number", "000-000-0000");
125 sms->SetString("text", "first message");
126 sms->SetString("timestamp", "Fri Jun 8 13:26:04 EDT 2016");
127
128 sms_observer->MessageReceived(*sms);
129
130 base::DictionaryValue* sms2 = new base::DictionaryValue();
131 sms2->SetString("number", "000-000-0000");
132 sms2->SetString("text", "second message");
133 sms2->SetString("timestamp", "Fri Jun 8 13:26:04 EDT 2016");
134 sms_observer->MessageReceived(*sms2);
135 const message_center::NotificationList::Notifications notifications =
136 message_center::MessageCenter::Get()->GetVisibleNotifications();
137 EXPECT_EQ(2u, notifications.size());
138
139 for (message_center::Notification* iter : notifications) {
140 if (iter->id().find("chrome://network/sms1") != std::string::npos) {
141 EXPECT_EQ(iter->title(), base::ASCIIToUTF16("000-000-0000"));
142 EXPECT_EQ(iter->message(), base::ASCIIToUTF16("first message"));
143 } else if (iter->id().find("chrome://network/sms2") != std::string::npos) {
144 EXPECT_EQ(iter->title(), base::ASCIIToUTF16("000-000-0000"));
145 EXPECT_EQ(iter->message(), base::ASCIIToUTF16("second message"));
146 } else {
147 NOTREACHED();
stevenjb 2017/02/07 22:30:25 Use ASSERT_TRUE(false) instead of NOTREACHED in te
yiyix 2017/02/09 02:01:48 Good to know. Updated.
148 }
149 }
150 }
151
152 } // namespace test
153 } // namespace ash
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698