Chromium Code Reviews| Index: chrome/browser/push_messaging/push_messaging_app_identifier_unittest.cc |
| diff --git a/chrome/browser/push_messaging/push_messaging_app_identifier_unittest.cc b/chrome/browser/push_messaging/push_messaging_app_identifier_unittest.cc |
| index e79364d22d2b08bbb06beb12f30580f399cb1f57..a7b8aafa3e919aecb470e1ec09189cddf8bef2cf 100644 |
| --- a/chrome/browser/push_messaging/push_messaging_app_identifier_unittest.cc |
| +++ b/chrome/browser/push_messaging/push_messaging_app_identifier_unittest.cc |
| @@ -3,8 +3,14 @@ |
| // found in the LICENSE file. |
| #include "chrome/browser/push_messaging/push_messaging_app_identifier.h" |
| + |
| +#include "base/message_loop/message_loop.h" |
| +#include "chrome/test/base/testing_profile.h" |
| +#include "content/public/test/test_browser_thread.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| +using content::BrowserThread; |
| + |
| class PushMessagingAppIdentifierTest : public testing::Test { |
| protected: |
| PushMessagingAppIdentifier GenerateId( |
| @@ -38,3 +44,127 @@ TEST_F(PushMessagingAppIdentifierTest, UniqueGuids) { |
| PushMessagingAppIdentifier::Generate( |
| GURL("https://www.example.com/"), 1).app_id()); |
| } |
| + |
| +namespace { |
| + |
| +void ExpectEq(const PushMessagingAppIdentifier& a, |
|
Peter Beverloo
2015/05/12 13:55:40
I'd slightly prefer to define an (anonymous) equal
johnme
2015/05/13 13:46:20
Discussed offline, and we've agreed that it's ok t
|
| + const PushMessagingAppIdentifier& b) { |
| + EXPECT_EQ(a.app_id(), b.app_id()); |
| + EXPECT_EQ(a.origin(), b.origin()); |
| + EXPECT_EQ(a.service_worker_registration_id(), |
| + b.service_worker_registration_id()); |
| +} |
| + |
| +} // namespace |
| + |
| +TEST_F(PushMessagingAppIdentifierTest, PersistAndDeleteFromPrefs) { |
| + base::MessageLoop message_loop; |
| + content::TestBrowserThread ui_thread(BrowserThread::UI, &message_loop); |
|
Peter Beverloo
2015/05/12 13:55:40
Since we've already got the PushMessagingAppIdenti
johnme
2015/05/13 13:46:20
Done.
|
| + TestingProfile profile; |
| + |
| + PushMessagingAppIdentifier original1 = |
| + PushMessagingAppIdentifier::Generate(GURL("https://www.example.com/"), 1); |
| + EXPECT_TRUE(PushMessagingAppIdentifier::Get(&profile, |
| + original1.app_id()).is_null()); |
| + EXPECT_TRUE(PushMessagingAppIdentifier::Get(&profile, original1.origin(), |
| + original1.service_worker_registration_id()).is_null()); |
| + |
| + // Test basic PersistToPrefs round trips. |
|
Peter Beverloo
2015/05/12 13:55:40
nit: This can be a separate test.
johnme
2015/05/13 13:46:20
Done.
|
| + original1.PersistToPrefs(&profile); |
| + { |
| + PushMessagingAppIdentifier get_app_id_1 = |
| + PushMessagingAppIdentifier::Get(&profile, original1.app_id()); |
| + EXPECT_FALSE(get_app_id_1.is_null()); |
| + ExpectEq(original1, get_app_id_1); |
| + } |
| + { |
| + PushMessagingAppIdentifier get_origin_and_swr_id_1 = |
| + PushMessagingAppIdentifier::Get(&profile, |
| + original1.origin(), original1.service_worker_registration_id()); |
| + EXPECT_FALSE(get_origin_and_swr_id_1.is_null()); |
| + ExpectEq(original1, get_origin_and_swr_id_1); |
| + } |
| + |
| + // Test that PersistToPrefs overwrites (when same origin and Service Worker). |
|
Peter Beverloo
2015/05/12 13:55:39
nit: This can be a separate test.
johnme
2015/05/13 13:46:20
Done.
|
| + PushMessagingAppIdentifier original2 = |
| + PushMessagingAppIdentifier::Generate(GURL("https://www.example.com/"), 1); |
| + EXPECT_NE(original1.app_id(), original2.app_id()); |
| + EXPECT_EQ(original1.origin(), original2.origin()); |
| + EXPECT_EQ(original1.service_worker_registration_id(), |
| + original2.service_worker_registration_id()); |
| + original2.PersistToPrefs(&profile); |
| + { |
| + PushMessagingAppIdentifier get_app_id_1 = |
| + PushMessagingAppIdentifier::Get(&profile, original1.app_id()); |
| + EXPECT_TRUE(get_app_id_1.is_null()); |
| + } |
| + { |
| + PushMessagingAppIdentifier get_app_id_2 = |
| + PushMessagingAppIdentifier::Get(&profile, original2.app_id()); |
| + EXPECT_FALSE(get_app_id_2.is_null()); |
| + ExpectEq(original2, get_app_id_2); |
| + } |
| + { |
| + PushMessagingAppIdentifier get_origin_and_swr_id_1 = |
| + PushMessagingAppIdentifier::Get(&profile, |
| + original1.origin(), original1.service_worker_registration_id()); |
| + EXPECT_FALSE(get_origin_and_swr_id_1.is_null()); |
| + ExpectEq(original2, get_origin_and_swr_id_1); |
| + } |
| + |
| + // Test that PersistToPrefs doesn't overwrite (when different origin or SW). |
|
Peter Beverloo
2015/05/12 13:55:40
nit: This can be a separate test.
johnme
2015/05/13 13:46:20
Done.
|
| + PushMessagingAppIdentifier original3 = |
| + PushMessagingAppIdentifier::Generate(GURL("https://foo.example.com/"), 1); |
| + PushMessagingAppIdentifier original4 = |
| + PushMessagingAppIdentifier::Generate(GURL("https://www.example.com/"), 2); |
| + EXPECT_NE(original2.app_id(), original3.app_id()); |
| + EXPECT_NE(original2.app_id(), original4.app_id()); |
| + original3.PersistToPrefs(&profile); |
| + original4.PersistToPrefs(&profile); |
| + { |
| + PushMessagingAppIdentifier get_app_id_2 = |
| + PushMessagingAppIdentifier::Get(&profile, original2.app_id()); |
| + EXPECT_FALSE(get_app_id_2.is_null()); |
| + ExpectEq(original2, get_app_id_2); |
| + } |
| + { |
| + PushMessagingAppIdentifier get_origin_and_swr_id_1 = |
| + PushMessagingAppIdentifier::Get(&profile, |
| + original1.origin(), original1.service_worker_registration_id()); |
| + EXPECT_FALSE(get_origin_and_swr_id_1.is_null()); |
| + ExpectEq(original2, get_origin_and_swr_id_1); |
| + } |
| + |
| + // Test DeleteFromPrefs. Deleted app identifier should be deleted. |
|
Peter Beverloo
2015/05/12 13:55:39
nit: This can be a separate test.
johnme
2015/05/13 13:46:20
Done.
|
| + original2.DeleteFromPrefs(&profile); |
| + { |
| + PushMessagingAppIdentifier get_app_id_2 = |
| + PushMessagingAppIdentifier::Get(&profile, original2.app_id()); |
| + EXPECT_TRUE(get_app_id_2.is_null()); |
| + } |
| + { |
| + PushMessagingAppIdentifier get_origin_and_swr_id_1 = |
| + PushMessagingAppIdentifier::Get(&profile, |
| + original1.origin(), original1.service_worker_registration_id()); |
| + EXPECT_TRUE(get_origin_and_swr_id_1.is_null()); |
| + } |
| + |
| + // Test GetAll. Non-deleted app identifiers should all be listed. |
|
Peter Beverloo
2015/05/12 13:55:39
nit: This can be a separate test.
johnme
2015/05/13 13:46:20
Done.
|
| + std::vector<PushMessagingAppIdentifier> all_app_identifiers = |
| + PushMessagingAppIdentifier::GetAll(&profile); |
| + EXPECT_EQ(2u, all_app_identifiers.size()); |
| + // Order is unspecified. |
| + bool contained_3 = false; |
| + bool contained_4 = false; |
| + for (const PushMessagingAppIdentifier& app_identifier : all_app_identifiers) { |
| + if (app_identifier.app_id() == original3.app_id()) { |
| + ExpectEq(original3, app_identifier); |
| + contained_3 = true; |
| + } else { |
| + ExpectEq(original4, app_identifier); |
| + contained_4 = true; |
| + } |
| + } |
| + EXPECT_TRUE(contained_3); |
| + EXPECT_TRUE(contained_4); |
| +} |