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

Side by Side Diff: chrome/browser/push_messaging/push_messaging_app_identifier_unittest.cc

Issue 1122403009: Add tests for PushMessagingAppIdentifier (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@ident_refactor
Patch Set: Addressed peter's comments Created 5 years, 7 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/push_messaging/push_messaging_app_identifier.h" 5 #include "chrome/browser/push_messaging/push_messaging_app_identifier.h"
6
7 #include "chrome/test/base/testing_profile.h"
8 #include "content/public/test/test_browser_thread_bundle.h"
6 #include "testing/gtest/include/gtest/gtest.h" 9 #include "testing/gtest/include/gtest/gtest.h"
7 10
11 namespace {
12
13 void ExpectAppIdentifiersEqual(const PushMessagingAppIdentifier& a,
14 const PushMessagingAppIdentifier& b) {
Peter Beverloo 2015/05/13 13:49:29 nit: indent
johnme 2015/05/13 14:05:49 Done.
15 EXPECT_EQ(a.app_id(), b.app_id());
16 EXPECT_EQ(a.origin(), b.origin());
17 EXPECT_EQ(a.service_worker_registration_id(),
18 b.service_worker_registration_id());
19 }
20
21 } // namespace
22
8 class PushMessagingAppIdentifierTest : public testing::Test { 23 class PushMessagingAppIdentifierTest : public testing::Test {
9 protected: 24 protected:
10 PushMessagingAppIdentifier GenerateId( 25 PushMessagingAppIdentifier GenerateId(
11 const GURL& origin, 26 const GURL& origin,
12 int64_t service_worker_registration_id) { 27 int64_t service_worker_registration_id) {
13 // To bypass DCHECK in PushMessagingAppIdentifier::Generate, we just use it 28 // To bypass DCHECK in PushMessagingAppIdentifier::Generate, we just use it
14 // to generate app_id, and then use private constructor. 29 // to generate app_id, and then use private constructor.
15 std::string app_id = PushMessagingAppIdentifier::Generate( 30 std::string app_id = PushMessagingAppIdentifier::Generate(
16 GURL("https://www.example.com/"), 1).app_id(); 31 GURL("https://www.example.com/"), 1).app_id();
17 return PushMessagingAppIdentifier(app_id, origin, 32 return PushMessagingAppIdentifier(app_id, origin,
18 service_worker_registration_id); 33 service_worker_registration_id);
19 } 34 }
35
36 void GenerateAppIdentifiers() {
Peter Beverloo 2015/05/13 13:49:29 nit: why can't we do this in SetUp()?
johnme 2015/05/13 14:05:49 Done.
37 original_ = PushMessagingAppIdentifier::Generate(
38 GURL("https://www.example.com/"), 1);
39 same_origin_and_sw_ = PushMessagingAppIdentifier::Generate(
40 GURL("https://www.example.com"), 1);
41 different_origin_ = PushMessagingAppIdentifier::Generate(
42 GURL("https://foobar.example.com/"), 1);
43 different_sw_ = PushMessagingAppIdentifier::Generate(
44 GURL("https://www.example.com/"), 42);
45 }
46
47 Profile* profile() { return &profile_; }
48
49 PushMessagingAppIdentifier original_;
Peter Beverloo 2015/05/13 13:49:29 nit: private w/ getters
johnme 2015/05/13 14:05:49 Kept this, as you mentioned offline that the style
50 PushMessagingAppIdentifier same_origin_and_sw_;
51 PushMessagingAppIdentifier different_origin_;
52 PushMessagingAppIdentifier different_sw_;
53
54 private:
55 content::TestBrowserThreadBundle thread_bundle_;
56 TestingProfile profile_;
20 }; 57 };
21 58
22 TEST_F(PushMessagingAppIdentifierTest, ConstructorValidity) { 59 TEST_F(PushMessagingAppIdentifierTest, ConstructorValidity) {
23 // The following two are valid: 60 // The following two are valid:
24 EXPECT_FALSE(GenerateId(GURL("https://www.example.com/"), 1).is_null()); 61 EXPECT_FALSE(GenerateId(GURL("https://www.example.com/"), 1).is_null());
25 EXPECT_FALSE(GenerateId(GURL("https://www.example.com"), 1).is_null()); 62 EXPECT_FALSE(GenerateId(GURL("https://www.example.com"), 1).is_null());
26 // The following four are invalid and will DCHECK in Generate: 63 // The following four are invalid and will DCHECK in Generate:
27 EXPECT_FALSE(GenerateId(GURL(""), 1).is_null()); 64 EXPECT_FALSE(GenerateId(GURL(""), 1).is_null());
28 EXPECT_FALSE(GenerateId(GURL("foo"), 1).is_null()); 65 EXPECT_FALSE(GenerateId(GURL("foo"), 1).is_null());
29 EXPECT_FALSE(GenerateId(GURL("https://www.example.com/foo"), 1).is_null()); 66 EXPECT_FALSE(GenerateId(GURL("https://www.example.com/foo"), 1).is_null());
30 EXPECT_FALSE(GenerateId(GURL("https://www.example.com/#foo"), 1).is_null()); 67 EXPECT_FALSE(GenerateId(GURL("https://www.example.com/#foo"), 1).is_null());
31 // The following one is invalid and will DCHECK in Generate and be null: 68 // The following one is invalid and will DCHECK in Generate and be null:
32 EXPECT_TRUE(GenerateId(GURL("https://www.example.com/"), -1).is_null()); 69 EXPECT_TRUE(GenerateId(GURL("https://www.example.com/"), -1).is_null());
33 } 70 }
34 71
35 TEST_F(PushMessagingAppIdentifierTest, UniqueGuids) { 72 TEST_F(PushMessagingAppIdentifierTest, UniqueGuids) {
36 EXPECT_NE(PushMessagingAppIdentifier::Generate( 73 EXPECT_NE(PushMessagingAppIdentifier::Generate(
37 GURL("https://www.example.com/"), 1).app_id(), 74 GURL("https://www.example.com/"), 1).app_id(),
38 PushMessagingAppIdentifier::Generate( 75 PushMessagingAppIdentifier::Generate(
39 GURL("https://www.example.com/"), 1).app_id()); 76 GURL("https://www.example.com/"), 1).app_id());
40 } 77 }
78
79 TEST_F(PushMessagingAppIdentifierTest, PersistAndGet) {
80 GenerateAppIdentifiers();
81
82 ASSERT_TRUE(PushMessagingAppIdentifier::Get(profile(),
83 original_.app_id()).is_null());
84 ASSERT_TRUE(PushMessagingAppIdentifier::Get(profile(), original_.origin(),
85 original_.service_worker_registration_id()).is_null());
86
87 // Test basic PersistToPrefs round trips.
88 original_.PersistToPrefs(profile());
89 {
90 PushMessagingAppIdentifier get_by_app_id =
91 PushMessagingAppIdentifier::Get(profile(), original_.app_id());
92 EXPECT_FALSE(get_by_app_id.is_null());
93 ExpectAppIdentifiersEqual(original_, get_by_app_id);
94 }
95 {
96 PushMessagingAppIdentifier get_by_origin_and_swr_id =
97 PushMessagingAppIdentifier::Get(profile(),
98 original_.origin(), original_.service_worker_registration_id());
99 EXPECT_FALSE(get_by_origin_and_swr_id.is_null());
100 ExpectAppIdentifiersEqual(original_, get_by_origin_and_swr_id);
101 }
102 }
103
104 TEST_F(PushMessagingAppIdentifierTest, PersistOverwritesSameOriginAndSW) {
105 GenerateAppIdentifiers();
106
107 original_.PersistToPrefs(profile());
108
109 // Test that PersistToPrefs overwrites when same origin and Service Worker.
110 ASSERT_NE(original_.app_id(), same_origin_and_sw_.app_id());
111 ASSERT_EQ(original_.origin(), same_origin_and_sw_.origin());
112 ASSERT_EQ(original_.service_worker_registration_id(),
113 same_origin_and_sw_.service_worker_registration_id());
114 same_origin_and_sw_.PersistToPrefs(profile());
115 {
116 PushMessagingAppIdentifier get_by_original_app_id =
117 PushMessagingAppIdentifier::Get(profile(), original_.app_id());
118 EXPECT_TRUE(get_by_original_app_id.is_null());
119 }
120 {
121 PushMessagingAppIdentifier get_by_soas_app_id =
122 PushMessagingAppIdentifier::Get(profile(),
123 same_origin_and_sw_.app_id());
124 EXPECT_FALSE(get_by_soas_app_id.is_null());
125 ExpectAppIdentifiersEqual(same_origin_and_sw_, get_by_soas_app_id);
126 }
127 {
128 PushMessagingAppIdentifier get_by_original_origin_and_swr_id =
129 PushMessagingAppIdentifier::Get(profile(),
130 original_.origin(), original_.service_worker_registration_id());
131 EXPECT_FALSE(get_by_original_origin_and_swr_id.is_null());
132 ExpectAppIdentifiersEqual(same_origin_and_sw_,
133 get_by_original_origin_and_swr_id);
134 }
135 }
136
137 TEST_F(PushMessagingAppIdentifierTest, PersistDoesNotOverwriteDifferent) {
138 GenerateAppIdentifiers();
139
140 original_.PersistToPrefs(profile());
141
142 // Test that PersistToPrefs doesn't overwrite when different origin or SW.
143 ASSERT_NE(original_.app_id(), different_origin_.app_id());
144 ASSERT_NE(original_.app_id(), different_sw_.app_id());
145 different_origin_.PersistToPrefs(profile());
146 different_sw_.PersistToPrefs(profile());
147 {
148 PushMessagingAppIdentifier get_by_original_app_id =
149 PushMessagingAppIdentifier::Get(profile(), original_.app_id());
150 EXPECT_FALSE(get_by_original_app_id.is_null());
151 ExpectAppIdentifiersEqual(original_, get_by_original_app_id);
152 }
153 {
154 PushMessagingAppIdentifier get_by_original_origin_and_swr_id =
155 PushMessagingAppIdentifier::Get(profile(),
156 original_.origin(), original_.service_worker_registration_id());
157 EXPECT_FALSE(get_by_original_origin_and_swr_id.is_null());
158 ExpectAppIdentifiersEqual(original_, get_by_original_origin_and_swr_id);
159 }
160 }
161
162 TEST_F(PushMessagingAppIdentifierTest, DeleteFromPrefs) {
163 GenerateAppIdentifiers();
164
165 original_.PersistToPrefs(profile());
166 different_origin_.PersistToPrefs(profile());
167 different_sw_.PersistToPrefs(profile());
168
169 // Test DeleteFromPrefs. Deleted app identifier should be deleted.
170 original_.DeleteFromPrefs(profile());
171 {
172 PushMessagingAppIdentifier get_by_original_app_id =
173 PushMessagingAppIdentifier::Get(profile(), original_.app_id());
174 EXPECT_TRUE(get_by_original_app_id.is_null());
175 }
176 {
177 PushMessagingAppIdentifier get_by_original_origin_and_swr_id =
178 PushMessagingAppIdentifier::Get(profile(),
179 original_.origin(), original_.service_worker_registration_id());
180 EXPECT_TRUE(get_by_original_origin_and_swr_id.is_null());
181 }
182 }
183
184 TEST_F(PushMessagingAppIdentifierTest, GetAll) {
185 GenerateAppIdentifiers();
186
187 original_.PersistToPrefs(profile());
188 different_origin_.PersistToPrefs(profile());
189 different_sw_.PersistToPrefs(profile());
190
191 original_.DeleteFromPrefs(profile());
192
193 // Test GetAll. Non-deleted app identifiers should all be listed.
194 std::vector<PushMessagingAppIdentifier> all_app_identifiers =
195 PushMessagingAppIdentifier::GetAll(profile());
196 EXPECT_EQ(2u, all_app_identifiers.size());
197 // Order is unspecified.
198 bool contained_different_origin = false;
199 bool contained_different_sw = false;
200 for (const PushMessagingAppIdentifier& app_identifier : all_app_identifiers) {
201 if (app_identifier.app_id() == different_origin_.app_id()) {
202 ExpectAppIdentifiersEqual(different_origin_, app_identifier);
203 contained_different_origin = true;
204 } else {
205 ExpectAppIdentifiersEqual(different_sw_, app_identifier);
206 contained_different_sw = true;
207 }
208 }
209 EXPECT_TRUE(contained_different_origin);
210 EXPECT_TRUE(contained_different_sw);
211 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698