blob: 777ea8c5483fcbe9c367a2a19209ab7e66d035f5 [file] [log] [blame]
// Copyright 2016 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 "components/password_manager/core/browser/export/password_csv_writer.h"
#include <memory>
#include <vector>
#include "base/strings/utf_string_conversions.h"
#include "components/autofill/core/common/password_form.h"
#include "components/password_manager/core/browser/import/csv_reader.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
using autofill::PasswordForm;
using testing::AllOf;
using testing::Contains;
namespace password_manager {
TEST(PasswordCSVWriterTest, SerializePasswords_ZeroPasswords) {
std::vector<std::unique_ptr<PasswordForm>> passwords;
CSVTable table;
ASSERT_TRUE(table.ReadCSV(PasswordCSVWriter::SerializePasswords(passwords)));
EXPECT_THAT(table.column_names(), AllOf(Contains("url"), Contains("username"),
Contains("password")));
EXPECT_EQ(0u, table.records().size());
}
TEST(PasswordCSVWriterTest, SerializePasswords_SinglePassword) {
std::vector<std::unique_ptr<PasswordForm>> passwords;
PasswordForm form;
form.origin = GURL("http://example.com");
form.username_value = base::UTF8ToUTF16("Someone");
form.password_value = base::UTF8ToUTF16("Secret");
passwords.push_back(std::make_unique<PasswordForm>(form));
CSVTable table;
ASSERT_TRUE(table.ReadCSV(PasswordCSVWriter::SerializePasswords(passwords)));
EXPECT_THAT(table.column_names(), AllOf(Contains("url"), Contains("username"),
Contains("password")));
EXPECT_EQ(1u, table.records().size());
EXPECT_THAT(table.records()[0],
Contains(std::make_pair("url", "http://example.com/")));
EXPECT_THAT(table.records()[0],
Contains(std::make_pair("username", "Someone")));
EXPECT_THAT(table.records()[0],
Contains(std::make_pair("password", "Secret")));
}
TEST(PasswordCSVWriterTest, SerializePasswords_TwoPasswords) {
std::vector<std::unique_ptr<PasswordForm>> passwords;
PasswordForm form;
form.origin = GURL("http://example.com");
form.username_value = base::UTF8ToUTF16("Someone");
form.password_value = base::UTF8ToUTF16("Secret");
passwords.push_back(std::make_unique<PasswordForm>(form));
form.origin = GURL("http://other.org");
form.username_value = base::UTF8ToUTF16("Anyone");
form.password_value = base::UTF8ToUTF16("None");
passwords.push_back(std::make_unique<PasswordForm>(form));
CSVTable table;
ASSERT_TRUE(table.ReadCSV(PasswordCSVWriter::SerializePasswords(passwords)));
EXPECT_THAT(table.column_names(), AllOf(Contains("url"), Contains("username"),
Contains("password")));
EXPECT_EQ(2u, table.records().size());
EXPECT_THAT(table.records()[0],
Contains(std::make_pair("url", "http://example.com/")));
EXPECT_THAT(table.records()[0],
Contains(std::make_pair("username", "Someone")));
EXPECT_THAT(table.records()[0],
Contains(std::make_pair("password", "Secret")));
EXPECT_THAT(table.records()[1],
Contains(std::make_pair("url", "http://other.org/")));
EXPECT_THAT(table.records()[1],
Contains(std::make_pair("username", "Anyone")));
EXPECT_THAT(table.records()[1], Contains(std::make_pair("password", "None")));
}
} // namespace password_manager