OLD | NEW |
---|---|
(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 | |
OLD | NEW |