1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
|
// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "third_party/blink/public/common/webid/federated_auth_request_mojom_traits.h"
#include <optional>
#include "mojo/public/cpp/test_support/test_utils.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/blink/public/common/webid/login_status_account.h"
#include "third_party/blink/public/common/webid/login_status_options.h"
#include "third_party/blink/public/mojom/webid/federated_auth_request.mojom.h"
namespace blink {
using blink::common::webid::LoginStatusAccount;
using blink::common::webid::LoginStatusOptions;
namespace {
void TestAccountRoundTrip(const LoginStatusAccount& in) {
LoginStatusAccount result;
ASSERT_TRUE(mojo::test::SerializeAndDeserialize<mojom::LoginStatusAccount>(
in, result));
EXPECT_EQ(in, result);
}
void TestOptionsRoundTrip(const LoginStatusOptions& in) {
LoginStatusOptions result;
ASSERT_TRUE(mojo::test::SerializeAndDeserialize<mojom::LoginStatusOptions>(
in, result));
EXPECT_EQ(in, result);
}
TEST(LoginStatusOptionsMojomTraitsTest, AccountMinimalRoundTrip) {
TestAccountRoundTrip(LoginStatusAccount("identifier", "email@example.com",
"Alice Smith",
/*given_name=*/std::nullopt,
/*picture_url=*/std::nullopt));
}
TEST(LoginStatusOptionsMojomTraitsTest, AccountFullRoundTrip) {
GURL picture_url("https://idp.example/user.png");
std::string given_name = "Alice";
TestAccountRoundTrip(LoginStatusAccount("identifier", "email@example.com",
"Alice Smith", given_name,
picture_url));
}
TEST(LoginStatusOptionsMojomTraitsTest, AccountInvalidUrlFails) {
GURL invalid_url("https:://google.com");
std::string given_name = "Alice";
LoginStatusAccount input("identifier", "email@example.com", "Alice Smith",
given_name, invalid_url);
LoginStatusAccount result;
ASSERT_FALSE(mojo::test::SerializeAndDeserialize<mojom::LoginStatusAccount>(
input, result));
}
TEST(LoginStatusOptionsMojomTraitsTest, AccountUntrustworthyUrlFails) {
GURL untrustworthy_url("http://idp.example/user.png");
std::string given_name = "Alice";
LoginStatusAccount input("identifier", "email@example.com", "Alice Smith",
given_name, untrustworthy_url);
LoginStatusAccount result;
ASSERT_FALSE(mojo::test::SerializeAndDeserialize<mojom::LoginStatusAccount>(
input, result));
}
TEST(LoginStatusOptionsMojomTraitsTest, OptionsRoundTrip) {
GURL url("https://idp.example/user.png");
std::string given_name = "Alice";
auto account_list = std::vector<LoginStatusAccount>();
account_list.emplace_back("identifier", "email@example.com", "Alice Smith",
&given_name, &url);
TestOptionsRoundTrip(
LoginStatusOptions(account_list, std::make_optional(base::Seconds(120))));
}
} // namespace
} // namespace blink
|