chromium/chromecast/common/user_agent_unittest.cc

// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "chromecast/common/user_agent.h"

#include "base/strings/stringprintf.h"
#include "components/version_info/version_info.h"
#include "testing/gtest/include/gtest/gtest.h"

namespace chromecast {

namespace {
#if BUILDFLAG(IS_ANDROID)
const char kCastAndroid[] =
    "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) "
    "Chrome/%s.0.0.0 "
    "%sSafari/537.36 CrKey/1.56.500000 %s";
#else
const char kCastDesktop[] =
    "Mozilla/5.0 ("
#if BUILDFLAG(IS_CHROMEOS)
    "X11; CrOS x86_64 14541.0.0"
#elif BUILDFLAG(IS_FUCHSIA)
    "Fuchsia"
#elif BUILDFLAG(IS_LINUX)
    "X11; Linux x86_64"
#elif BUILDFLAG(IS_MAC)
    "Macintosh; Intel Mac OS X 10_15_7"
#elif BUILDFLAG(IS_WIN)
    "Windows NT 10.0; Win64; x64"
#else
#error Unsupported platform
#endif
    ") AppleWebKit/537.36 (KHTML, like Gecko) Chrome/%s.0.0.0 "
    "Safari/537.36 CrKey/1.56.500000 %s";
#endif  // BUILDFLAG(IS_ANDROID)
}  // namespace

TEST(UserAgentTest, GetUserAgent) {
  std::string device_suffix = GetDeviceUserAgentSuffix();
#if BUILDFLAG(IS_ANDROID)
  std::string device_compat = "";
  EXPECT_EQ(base::StringPrintf(kCastAndroid,
                               version_info::GetMajorVersionNumber().c_str(),
                               device_compat.c_str(), device_suffix.c_str()),
            GetUserAgent());
#else
  EXPECT_EQ(base::StringPrintf(kCastDesktop,
                               version_info::GetMajorVersionNumber().c_str(),
                               device_suffix.c_str()),
            GetUserAgent());
#endif
}

}  // namespace chromecast