blob: 8cb8da33e9b8b354123a5591c75d49239ca7875e [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/search_engines/template_url_service.h"
#include <stddef.h>
#include <memory>
#include "base/threading/platform_thread.h"
#include "testing/gtest/include/gtest/gtest.h"
class TemplateURLServiceUnitTest : public testing::Test {
public:
TemplateURLServiceUnitTest()
: template_url_service_(/*initializers=*/nullptr, /*count=*/0) {}
TemplateURLService& template_url_service() { return template_url_service_; }
private:
TemplateURLService template_url_service_;
};
TEST_F(TemplateURLServiceUnitTest, SessionToken) {
// Subsequent calls always get the same token.
std::string token = template_url_service().GetSessionToken();
std::string token2 = template_url_service().GetSessionToken();
EXPECT_EQ(token, token2);
EXPECT_FALSE(token.empty());
// Calls do not regenerate a token.
template_url_service().current_token_ = "PRE-EXISTING TOKEN";
token = template_url_service().GetSessionToken();
EXPECT_EQ(token, "PRE-EXISTING TOKEN");
// ... unless the token has expired.
template_url_service().current_token_.clear();
const base::TimeDelta kSmallDelta = base::Milliseconds(1);
template_url_service().token_expiration_time_ =
base::TimeTicks::Now() - kSmallDelta;
token = template_url_service().GetSessionToken();
EXPECT_FALSE(token.empty());
EXPECT_EQ(token, template_url_service().current_token_);
// ... or cleared.
template_url_service().current_token_.clear();
template_url_service().ClearSessionToken();
token = template_url_service().GetSessionToken();
EXPECT_FALSE(token.empty());
EXPECT_EQ(token, template_url_service().current_token_);
// The expiration time is always updated.
template_url_service().GetSessionToken();
base::TimeTicks expiration_time_1 =
template_url_service().token_expiration_time_;
base::PlatformThread::Sleep(kSmallDelta);
template_url_service().GetSessionToken();
base::TimeTicks expiration_time_2 =
template_url_service().token_expiration_time_;
EXPECT_GT(expiration_time_2, expiration_time_1);
EXPECT_GE(expiration_time_2, expiration_time_1 + kSmallDelta);
}