blob: 00517525a37ddb0a3f393b1577e8b762cbf84b20 [file] [log] [blame]
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/extensions/api/passwords_private/passwords_private_utils.h"
#include "components/autofill/core/common/password_form.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "url/gurl.h"
namespace extensions {
TEST(CreateUrlCollectionFromFormTest, UrlsFromHtmlForm) {
autofill::PasswordForm html_form;
html_form.origin = GURL("http://example.com/LoginAuth");
html_form.signon_realm = html_form.origin.GetOrigin().spec();
api::passwords_private::UrlCollection html_urls =
CreateUrlCollectionFromForm(html_form);
EXPECT_EQ(html_urls.origin, "http://example.com/");
EXPECT_EQ(html_urls.shown, "example.com");
EXPECT_EQ(html_urls.link, "http://example.com/LoginAuth");
}
TEST(CreateUrlCollectionFromFormTest, UrlsFromFederatedForm) {
autofill::PasswordForm federated_form;
federated_form.signon_realm = "federation://example.com/google.com";
federated_form.origin = GURL("https://example.com/");
federated_form.federation_origin =
url::Origin::Create(GURL("https://google.com/"));
api::passwords_private::UrlCollection federated_urls =
CreateUrlCollectionFromForm(federated_form);
EXPECT_EQ(federated_urls.origin, "federation://example.com/google.com");
EXPECT_EQ(federated_urls.shown, "example.com");
EXPECT_EQ(federated_urls.link, "https://example.com/");
}
TEST(CreateUrlCollectionFromFormTest, UrlsFromAndroidFormWithoutDisplayName) {
autofill::PasswordForm android_form;
android_form.signon_realm = "android://example@com.example.android";
android_form.app_display_name.clear();
api::passwords_private::UrlCollection android_urls =
CreateUrlCollectionFromForm(android_form);
EXPECT_EQ("android://example@com.example.android", android_urls.origin);
EXPECT_EQ("android.example.com", android_urls.shown);
EXPECT_EQ("https://play.google.com/store/apps/details?id=com.example.android",
android_urls.link);
}
TEST(CreateUrlCollectionFromFormTest, UrlsFromAndroidFormWithAppName) {
autofill::PasswordForm android_form;
android_form.signon_realm = "android://hash@com.example.android";
android_form.app_display_name = "Example Android App";
api::passwords_private::UrlCollection android_urls =
CreateUrlCollectionFromForm(android_form);
EXPECT_EQ(android_urls.origin, "android://hash@com.example.android");
EXPECT_EQ("Example Android App", android_urls.shown);
EXPECT_EQ("https://play.google.com/store/apps/details?id=com.example.android",
android_urls.link);
}
TEST(SortKeyIdGeneratorTest, GenerateIds) {
using ::testing::Pointee;
using ::testing::Eq;
SortKeyIdGenerator id_generator;
int foo_id = id_generator.GenerateId("foo");
// Check idempotence.
EXPECT_EQ(foo_id, id_generator.GenerateId("foo"));
// Check TryGetSortKey(id) == s iff id == GenerateId(*s).
EXPECT_THAT(id_generator.TryGetSortKey(foo_id), Pointee(Eq("foo")));
EXPECT_EQ(nullptr, id_generator.TryGetSortKey(foo_id + 1));
// Check that different sort keys result in different ids.
int bar_id = id_generator.GenerateId("bar");
int baz_id = id_generator.GenerateId("baz");
EXPECT_NE(foo_id, bar_id);
EXPECT_NE(bar_id, baz_id);
EXPECT_THAT(id_generator.TryGetSortKey(bar_id), Pointee(Eq("bar")));
EXPECT_THAT(id_generator.TryGetSortKey(baz_id), Pointee(Eq("baz")));
}
} // namespace extensions