blob: f434bb9af592847e889ce432a68b9ca746c4354c [file] [log] [blame]
// Copyright 2014 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/domain_reliability/config.h"
#include <memory>
#include <string>
#include "base/time/time.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace domain_reliability {
namespace {
std::unique_ptr<DomainReliabilityConfig> MakeBaseConfig() {
DomainReliabilityConfig* config = new DomainReliabilityConfig();
config->origin = GURL("https://example/");
config->include_subdomains = false;
config->collectors.push_back(
std::make_unique<GURL>("https://example/upload"));
config->failure_sample_rate = 1.0;
config->success_sample_rate = 0.0;
EXPECT_TRUE(config->IsValid());
return std::unique_ptr<DomainReliabilityConfig>(config);
}
std::unique_ptr<DomainReliabilityConfig> MakeSampleConfig() {
std::unique_ptr<DomainReliabilityConfig> config(MakeBaseConfig());
config->path_prefixes.push_back(std::make_unique<std::string>("/css/"));
config->path_prefixes.push_back(std::make_unique<std::string>("/js/"));
EXPECT_TRUE(config->IsValid());
return config;
}
class DomainReliabilityConfigTest : public testing::Test { };
TEST_F(DomainReliabilityConfigTest, IsValid) {
std::unique_ptr<DomainReliabilityConfig> config;
config = MakeSampleConfig();
EXPECT_TRUE(config->IsValid());
config = MakeSampleConfig();
config->origin = GURL();
EXPECT_FALSE(config->IsValid());
config = MakeSampleConfig();
config->collectors.clear();
EXPECT_FALSE(config->IsValid());
config = MakeSampleConfig();
config->collectors[0] = std::make_unique<GURL>();
EXPECT_FALSE(config->IsValid());
config = MakeSampleConfig();
config->failure_sample_rate = 2.0;
EXPECT_FALSE(config->IsValid());
config = MakeSampleConfig();
config->success_sample_rate = 2.0;
EXPECT_FALSE(config->IsValid());
}
TEST_F(DomainReliabilityConfigTest, FromJSON) {
std::string config_json =
"{ \"origin\": \"https://example/\","
" \"include_subdomains\": false,"
" \"collectors\": [ \"https://example/upload\" ],"
" \"path_prefixes\": ["
" \"/css/\","
" \"/js/\""
" ],"
" \"failure_sample_rate\": 0.10,"
" \"success_sample_rate\": 0.01"
"}";
std::unique_ptr<const DomainReliabilityConfig> config(
DomainReliabilityConfig::FromJSON(config_json));
EXPECT_TRUE(config);
EXPECT_EQ("https://example/", config->origin.spec());
EXPECT_FALSE(config->include_subdomains);
EXPECT_EQ(1u, config->collectors.size());
EXPECT_EQ(GURL("https://example/upload"), *config->collectors[0]);
EXPECT_EQ(2u, config->path_prefixes.size());
EXPECT_EQ("/css/", *config->path_prefixes[0]);
EXPECT_EQ("/js/", *config->path_prefixes[1]);
EXPECT_EQ(0.10, config->failure_sample_rate);
EXPECT_EQ(0.01, config->success_sample_rate);
}
} // namespace
} // namespace domain_reliability