Commit 2f8f7b1b authored by johnme's avatar johnme Committed by Commit bot

Add tests for PushMessagingAppIdentifier

This adds test coverage for PersistToPrefs, DeleteFromPrefs, GetAll, the
two Get methods, RegisterProfilePrefs, as well as some additional
coverage for Generate (the only part that had testing before).

BUG=458592

Review URL: https://codereview.chromium.org/1122403009

Cr-Commit-Position: refs/heads/master@{#329642}
parent aa4a5b28
...@@ -3,8 +3,23 @@ ...@@ -3,8 +3,23 @@
// found in the LICENSE file. // found in the LICENSE file.
#include "chrome/browser/push_messaging/push_messaging_app_identifier.h" #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" #include "testing/gtest/include/gtest/gtest.h"
namespace {
void ExpectAppIdentifiersEqual(const PushMessagingAppIdentifier& a,
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
class PushMessagingAppIdentifierTest : public testing::Test { class PushMessagingAppIdentifierTest : public testing::Test {
protected: protected:
PushMessagingAppIdentifier GenerateId( PushMessagingAppIdentifier GenerateId(
...@@ -17,6 +32,28 @@ class PushMessagingAppIdentifierTest : public testing::Test { ...@@ -17,6 +32,28 @@ class PushMessagingAppIdentifierTest : public testing::Test {
return PushMessagingAppIdentifier(app_id, origin, return PushMessagingAppIdentifier(app_id, origin,
service_worker_registration_id); service_worker_registration_id);
} }
void SetUp() override {
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_;
PushMessagingAppIdentifier same_origin_and_sw_;
PushMessagingAppIdentifier different_origin_;
PushMessagingAppIdentifier different_sw_;
private:
content::TestBrowserThreadBundle thread_bundle_;
TestingProfile profile_;
}; };
TEST_F(PushMessagingAppIdentifierTest, ConstructorValidity) { TEST_F(PushMessagingAppIdentifierTest, ConstructorValidity) {
...@@ -38,3 +75,127 @@ TEST_F(PushMessagingAppIdentifierTest, UniqueGuids) { ...@@ -38,3 +75,127 @@ TEST_F(PushMessagingAppIdentifierTest, UniqueGuids) {
PushMessagingAppIdentifier::Generate( PushMessagingAppIdentifier::Generate(
GURL("https://www.example.com/"), 1).app_id()); GURL("https://www.example.com/"), 1).app_id());
} }
TEST_F(PushMessagingAppIdentifierTest, PersistAndGet) {
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) {
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) {
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) {
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) {
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);
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment