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..1fe4c13211d902d1da377101cc2fb97ee62eab98 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,23 @@ |
| // found in the LICENSE file. |
| #include "chrome/browser/push_messaging/push_messaging_app_identifier.h" |
| + |
| +#include "chrome/test/base/testing_profile.h" |
| +#include "content/public/test/test_browser_thread_bundle.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| +namespace { |
| + |
| +void ExpectAppIdentifiersEqual(const PushMessagingAppIdentifier& a, |
| + const PushMessagingAppIdentifier& b) { |
|
Peter Beverloo
2015/05/13 13:49:29
nit: indent
johnme
2015/05/13 14:05:49
Done.
|
| + 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 |
| + |
| class PushMessagingAppIdentifierTest : public testing::Test { |
| protected: |
| PushMessagingAppIdentifier GenerateId( |
| @@ -17,6 +32,28 @@ class PushMessagingAppIdentifierTest : public testing::Test { |
| return PushMessagingAppIdentifier(app_id, origin, |
| service_worker_registration_id); |
| } |
| + |
| + 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.
|
| + original_ = PushMessagingAppIdentifier::Generate( |
| + GURL("https://www.example.com/"), 1); |
| + same_origin_and_sw_ = PushMessagingAppIdentifier::Generate( |
| + GURL("https://www.example.com"), 1); |
| + different_origin_ = PushMessagingAppIdentifier::Generate( |
| + GURL("https://foobar.example.com/"), 1); |
| + different_sw_ = PushMessagingAppIdentifier::Generate( |
| + GURL("https://www.example.com/"), 42); |
| + } |
| + |
| + Profile* profile() { return &profile_; } |
| + |
| + 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
|
| + PushMessagingAppIdentifier same_origin_and_sw_; |
| + PushMessagingAppIdentifier different_origin_; |
| + PushMessagingAppIdentifier different_sw_; |
| + |
| + private: |
| + content::TestBrowserThreadBundle thread_bundle_; |
| + TestingProfile profile_; |
| }; |
| TEST_F(PushMessagingAppIdentifierTest, ConstructorValidity) { |
| @@ -38,3 +75,137 @@ TEST_F(PushMessagingAppIdentifierTest, UniqueGuids) { |
| PushMessagingAppIdentifier::Generate( |
| GURL("https://www.example.com/"), 1).app_id()); |
| } |
| + |
| +TEST_F(PushMessagingAppIdentifierTest, PersistAndGet) { |
| + GenerateAppIdentifiers(); |
| + |
| + ASSERT_TRUE(PushMessagingAppIdentifier::Get(profile(), |
| + original_.app_id()).is_null()); |
| + ASSERT_TRUE(PushMessagingAppIdentifier::Get(profile(), original_.origin(), |
| + original_.service_worker_registration_id()).is_null()); |
| + |
| + // Test basic PersistToPrefs round trips. |
| + original_.PersistToPrefs(profile()); |
| + { |
| + PushMessagingAppIdentifier get_by_app_id = |
| + PushMessagingAppIdentifier::Get(profile(), original_.app_id()); |
| + EXPECT_FALSE(get_by_app_id.is_null()); |
| + ExpectAppIdentifiersEqual(original_, get_by_app_id); |
| + } |
| + { |
| + PushMessagingAppIdentifier get_by_origin_and_swr_id = |
| + PushMessagingAppIdentifier::Get(profile(), |
| + original_.origin(), original_.service_worker_registration_id()); |
| + EXPECT_FALSE(get_by_origin_and_swr_id.is_null()); |
| + ExpectAppIdentifiersEqual(original_, get_by_origin_and_swr_id); |
| + } |
| +} |
| + |
| +TEST_F(PushMessagingAppIdentifierTest, PersistOverwritesSameOriginAndSW) { |
| + GenerateAppIdentifiers(); |
| + |
| + original_.PersistToPrefs(profile()); |
| + |
| + // Test that PersistToPrefs overwrites when same origin and Service Worker. |
| + ASSERT_NE(original_.app_id(), same_origin_and_sw_.app_id()); |
| + ASSERT_EQ(original_.origin(), same_origin_and_sw_.origin()); |
| + ASSERT_EQ(original_.service_worker_registration_id(), |
| + same_origin_and_sw_.service_worker_registration_id()); |
| + same_origin_and_sw_.PersistToPrefs(profile()); |
| + { |
| + PushMessagingAppIdentifier get_by_original_app_id = |
| + PushMessagingAppIdentifier::Get(profile(), original_.app_id()); |
| + EXPECT_TRUE(get_by_original_app_id.is_null()); |
| + } |
| + { |
| + PushMessagingAppIdentifier get_by_soas_app_id = |
| + PushMessagingAppIdentifier::Get(profile(), |
| + same_origin_and_sw_.app_id()); |
| + EXPECT_FALSE(get_by_soas_app_id.is_null()); |
| + ExpectAppIdentifiersEqual(same_origin_and_sw_, get_by_soas_app_id); |
| + } |
| + { |
| + PushMessagingAppIdentifier get_by_original_origin_and_swr_id = |
| + PushMessagingAppIdentifier::Get(profile(), |
| + original_.origin(), original_.service_worker_registration_id()); |
| + EXPECT_FALSE(get_by_original_origin_and_swr_id.is_null()); |
| + ExpectAppIdentifiersEqual(same_origin_and_sw_, |
| + get_by_original_origin_and_swr_id); |
| + } |
| +} |
| + |
| +TEST_F(PushMessagingAppIdentifierTest, PersistDoesNotOverwriteDifferent) { |
| + GenerateAppIdentifiers(); |
| + |
| + original_.PersistToPrefs(profile()); |
| + |
| + // Test that PersistToPrefs doesn't overwrite when different origin or SW. |
| + ASSERT_NE(original_.app_id(), different_origin_.app_id()); |
| + ASSERT_NE(original_.app_id(), different_sw_.app_id()); |
| + different_origin_.PersistToPrefs(profile()); |
| + different_sw_.PersistToPrefs(profile()); |
| + { |
| + PushMessagingAppIdentifier get_by_original_app_id = |
| + PushMessagingAppIdentifier::Get(profile(), original_.app_id()); |
| + EXPECT_FALSE(get_by_original_app_id.is_null()); |
| + ExpectAppIdentifiersEqual(original_, get_by_original_app_id); |
| + } |
| + { |
| + PushMessagingAppIdentifier get_by_original_origin_and_swr_id = |
| + PushMessagingAppIdentifier::Get(profile(), |
| + original_.origin(), original_.service_worker_registration_id()); |
| + EXPECT_FALSE(get_by_original_origin_and_swr_id.is_null()); |
| + ExpectAppIdentifiersEqual(original_, get_by_original_origin_and_swr_id); |
| + } |
| +} |
| + |
| +TEST_F(PushMessagingAppIdentifierTest, DeleteFromPrefs) { |
| + GenerateAppIdentifiers(); |
| + |
| + original_.PersistToPrefs(profile()); |
| + different_origin_.PersistToPrefs(profile()); |
| + different_sw_.PersistToPrefs(profile()); |
| + |
| + // Test DeleteFromPrefs. Deleted app identifier should be deleted. |
| + original_.DeleteFromPrefs(profile()); |
| + { |
| + PushMessagingAppIdentifier get_by_original_app_id = |
| + PushMessagingAppIdentifier::Get(profile(), original_.app_id()); |
| + EXPECT_TRUE(get_by_original_app_id.is_null()); |
| + } |
| + { |
| + PushMessagingAppIdentifier get_by_original_origin_and_swr_id = |
| + PushMessagingAppIdentifier::Get(profile(), |
| + original_.origin(), original_.service_worker_registration_id()); |
| + EXPECT_TRUE(get_by_original_origin_and_swr_id.is_null()); |
| + } |
| +} |
| + |
| +TEST_F(PushMessagingAppIdentifierTest, GetAll) { |
| + GenerateAppIdentifiers(); |
| + |
| + original_.PersistToPrefs(profile()); |
| + different_origin_.PersistToPrefs(profile()); |
| + different_sw_.PersistToPrefs(profile()); |
| + |
| + original_.DeleteFromPrefs(profile()); |
| + |
| + // Test GetAll. Non-deleted app identifiers should all be listed. |
| + std::vector<PushMessagingAppIdentifier> all_app_identifiers = |
| + PushMessagingAppIdentifier::GetAll(profile()); |
| + EXPECT_EQ(2u, all_app_identifiers.size()); |
| + // Order is unspecified. |
| + bool contained_different_origin = false; |
| + bool contained_different_sw = false; |
| + for (const PushMessagingAppIdentifier& app_identifier : all_app_identifiers) { |
| + if (app_identifier.app_id() == different_origin_.app_id()) { |
| + ExpectAppIdentifiersEqual(different_origin_, app_identifier); |
| + contained_different_origin = true; |
| + } else { |
| + ExpectAppIdentifiersEqual(different_sw_, app_identifier); |
| + contained_different_sw = true; |
| + } |
| + } |
| + EXPECT_TRUE(contained_different_origin); |
| + EXPECT_TRUE(contained_different_sw); |
| +} |