template_url_service_unittest.cc 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. // Copyright 2014 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "components/search_engines/template_url_service.h"
  5. #include <stddef.h>
  6. #include <memory>
  7. #include "base/threading/platform_thread.h"
  8. #include "testing/gtest/include/gtest/gtest.h"
  9. class TemplateURLServiceUnitTest : public testing::Test {
  10. public:
  11. TemplateURLServiceUnitTest()
  12. : template_url_service_(/*initializers=*/nullptr, /*count=*/0) {}
  13. TemplateURLService& template_url_service() { return template_url_service_; }
  14. private:
  15. TemplateURLService template_url_service_;
  16. };
  17. TEST_F(TemplateURLServiceUnitTest, SessionToken) {
  18. // Subsequent calls always get the same token.
  19. std::string token = template_url_service().GetSessionToken();
  20. std::string token2 = template_url_service().GetSessionToken();
  21. EXPECT_EQ(token, token2);
  22. EXPECT_FALSE(token.empty());
  23. // Calls do not regenerate a token.
  24. template_url_service().current_token_ = "PRE-EXISTING TOKEN";
  25. token = template_url_service().GetSessionToken();
  26. EXPECT_EQ(token, "PRE-EXISTING TOKEN");
  27. // ... unless the token has expired.
  28. template_url_service().current_token_.clear();
  29. const base::TimeDelta kSmallDelta = base::Milliseconds(1);
  30. template_url_service().token_expiration_time_ =
  31. base::TimeTicks::Now() - kSmallDelta;
  32. token = template_url_service().GetSessionToken();
  33. EXPECT_FALSE(token.empty());
  34. EXPECT_EQ(token, template_url_service().current_token_);
  35. // ... or cleared.
  36. template_url_service().current_token_.clear();
  37. template_url_service().ClearSessionToken();
  38. token = template_url_service().GetSessionToken();
  39. EXPECT_FALSE(token.empty());
  40. EXPECT_EQ(token, template_url_service().current_token_);
  41. // The expiration time is always updated.
  42. template_url_service().GetSessionToken();
  43. base::TimeTicks expiration_time_1 =
  44. template_url_service().token_expiration_time_;
  45. base::PlatformThread::Sleep(kSmallDelta);
  46. template_url_service().GetSessionToken();
  47. base::TimeTicks expiration_time_2 =
  48. template_url_service().token_expiration_time_;
  49. EXPECT_GT(expiration_time_2, expiration_time_1);
  50. EXPECT_GE(expiration_time_2, expiration_time_1 + kSmallDelta);
  51. }