blob: b2e82929021344e63954f28fe04b8e9f5f80e382 [file] [log] [blame]
// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/variations/variations_test_utils.h"
#include "base/base64.h"
#include "base/ranges/algorithm.h"
#include "components/variations/metrics.h"
#include "components/variations/proto/variations_seed.pb.h"
#include "components/variations/variations_seed_store.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/zlib/google/compression_utils.h"
namespace variations {
using SignedSeedDataTest = ::testing::TestWithParam<SignedSeedData>;
TEST_P(SignedSeedDataTest, HasValidBase64Data) {
const auto& signed_seed_data = GetParam();
std::string decoded_compressed_data;
ASSERT_TRUE(base::Base64Decode(signed_seed_data.base64_compressed_data,
&decoded_compressed_data));
std::string actual_uncompressed_data;
ASSERT_TRUE(compression::GzipUncompress(decoded_compressed_data,
&actual_uncompressed_data));
std::string actual_encoded_uncompressed_data;
base::Base64Encode(actual_uncompressed_data,
&actual_encoded_uncompressed_data);
EXPECT_EQ(actual_encoded_uncompressed_data,
signed_seed_data.base64_uncompressed_data);
std::string decoded_uncompressed_data;
ASSERT_TRUE(base::Base64Decode(signed_seed_data.base64_uncompressed_data,
&decoded_uncompressed_data));
EXPECT_EQ(decoded_uncompressed_data, actual_uncompressed_data);
}
TEST_P(SignedSeedDataTest, HasValidSignature) {
const auto& signed_seed_data = GetParam();
std::string decoded_uncompressed_data;
ASSERT_TRUE(base::Base64Decode(signed_seed_data.base64_uncompressed_data,
&decoded_uncompressed_data));
const auto verify_signature_result =
VariationsSeedStore::VerifySeedSignatureForTesting(
decoded_uncompressed_data, signed_seed_data.base64_signature);
EXPECT_EQ(VerifySignatureResult::VALID_SIGNATURE, verify_signature_result);
}
TEST_P(SignedSeedDataTest, HasStudyNames) {
const auto& signed_seed_data = GetParam();
std::string decoded_uncompressed_data;
ASSERT_TRUE(base::Base64Decode(signed_seed_data.base64_uncompressed_data,
&decoded_uncompressed_data));
VariationsSeed seed;
ASSERT_TRUE(seed.ParseFromString(decoded_uncompressed_data));
std::vector<std::string> parsed_study_names;
base::ranges::transform(seed.study(), std::back_inserter(parsed_study_names),
[](const Study& s) { return s.name(); });
EXPECT_THAT(parsed_study_names, ::testing::UnorderedElementsAreArray(
signed_seed_data.study_names));
}
INSTANTIATE_TEST_SUITE_P(VariationsTestUtils,
SignedSeedDataTest,
::testing::Values(kTestSeedData, kCrashingSeedData));
} // namespace variations