blob: b131d0a852a7dc243b8c767a8a230dbd8df28ee4 [file] [log] [blame]
// Copyright (c) 2013 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 "chrome/test/chromedriver/chrome/browser_info.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace {
void AssertParseBrowserInfoFails(const std::string& data) {
BrowserInfo browser_info;
Status status = ParseBrowserInfo(data, &browser_info);
ASSERT_TRUE(status.IsError());
}
} // namespace
TEST(ParseBrowserInfo, InvalidJSON) {
AssertParseBrowserInfoFails("[");
}
TEST(ParseBrowserInfo, NonDict) {
AssertParseBrowserInfoFails("[]");
}
TEST(ParseBrowserInfo, NoBrowserKey) {
AssertParseBrowserInfoFails("{}");
}
TEST(ParseBrowserInfo, BlinkVersionContainsSvnRevision) {
std::string data("{\"Browser\": \"Chrome/37.0.2062.124\","
" \"WebKit-Version\": \"537.36 (@181352)\"}");
BrowserInfo browser_info;
Status status = ParseBrowserInfo(data, &browser_info);
ASSERT_TRUE(status.IsOk());
ASSERT_EQ("chrome", browser_info.browser_name);
ASSERT_EQ("37.0.2062.124", browser_info.browser_version);
ASSERT_EQ(37, browser_info.major_version);
ASSERT_EQ(2062, browser_info.build_no);
ASSERT_EQ(181352, browser_info.blink_revision);
}
TEST(ParseBrowserInfo, BlinkVersionContainsGitHash) {
std::string data("{\"Browser\": \"Chrome/37.0.2062.124\","
" \"WebKit-Version\":"
" \"537.36 (@28f741cfcabffe68a9c12c4e7152569c906bd88f)\"}");
BrowserInfo browser_info;
const int default_blink_revision = browser_info.blink_revision;
Status status = ParseBrowserInfo(data, &browser_info);
ASSERT_TRUE(status.IsOk());
ASSERT_EQ("chrome", browser_info.browser_name);
ASSERT_EQ("37.0.2062.124", browser_info.browser_version);
ASSERT_EQ(37, browser_info.major_version);
ASSERT_EQ(2062, browser_info.build_no);
ASSERT_EQ(default_blink_revision, browser_info.blink_revision);
}
TEST(ParseBrowserString, KitKatWebView) {
BrowserInfo browser_info;
Status status =
ParseBrowserString(false, "Version/4.0 Chrome/30.0.0.0", &browser_info);
ASSERT_TRUE(status.IsOk());
ASSERT_EQ("webview", browser_info.browser_name);
ASSERT_EQ("30.0.0.0", browser_info.browser_version);
ASSERT_EQ(30, browser_info.major_version);
ASSERT_EQ(kToTBuildNo, browser_info.build_no);
ASSERT_TRUE(browser_info.is_android);
}
TEST(ParseBrowserString, LollipopWebView) {
BrowserInfo browser_info;
Status status = ParseBrowserString(true, "Chrome/37.0.0.0", &browser_info);
ASSERT_TRUE(status.IsOk());
ASSERT_EQ("webview", browser_info.browser_name);
ASSERT_EQ("37.0.0.0", browser_info.browser_version);
ASSERT_EQ(37, browser_info.major_version);
ASSERT_EQ(kToTBuildNo, browser_info.build_no);
ASSERT_TRUE(browser_info.is_android);
}
TEST(ParseBrowserString, AndroidChrome) {
BrowserInfo browser_info;
Status status =
ParseBrowserString(true, "Chrome/39.0.2171.59", &browser_info);
ASSERT_TRUE(status.IsOk());
ASSERT_EQ("chrome", browser_info.browser_name);
ASSERT_EQ("39.0.2171.59", browser_info.browser_version);
ASSERT_EQ(39, browser_info.major_version);
ASSERT_EQ(2171, browser_info.build_no);
ASSERT_TRUE(browser_info.is_android);
}
TEST(ParseBrowserString, DesktopChrome) {
BrowserInfo browser_info;
Status status =
ParseBrowserString(false, "Chrome/39.0.2171.59", &browser_info);
ASSERT_TRUE(status.IsOk());
ASSERT_EQ("chrome", browser_info.browser_name);
ASSERT_EQ("39.0.2171.59", browser_info.browser_version);
ASSERT_EQ(39, browser_info.major_version);
ASSERT_EQ(2171, browser_info.build_no);
ASSERT_FALSE(browser_info.is_android);
}
TEST(ParseBrowserString, HeadlessChrome) {
BrowserInfo browser_info;
Status status =
ParseBrowserString(false, "HeadlessChrome/39.0.2171.59", &browser_info);
ASSERT_TRUE(status.IsOk());
ASSERT_EQ("headless chrome", browser_info.browser_name);
ASSERT_EQ("39.0.2171.59", browser_info.browser_version);
ASSERT_EQ(39, browser_info.major_version);
ASSERT_EQ(2171, browser_info.build_no);
ASSERT_FALSE(browser_info.is_android);
}
TEST(ParseBlinkVersionString, GitHash) {
int rev = -1;
Status status = ParseBlinkVersionString(
"537.36 (@28f741cfcabffe68a9c12c4e7152569c906bd88f)", &rev);
ASSERT_TRUE(status.IsOk());
ASSERT_EQ(-1, rev);
}
TEST(ParseBlinkVersionString, SvnRevision) {
int blink_revision = -1;
Status status = ParseBlinkVersionString("537.36 (@159105)", &blink_revision);
ASSERT_TRUE(status.IsOk());
ASSERT_EQ(159105, blink_revision);
}
TEST(IsGitHash, GitHash) {
ASSERT_TRUE(IsGitHash("28f741cfcabffe68a9c12c4e7152569c906bd88f"));
}
TEST(IsGitHash, ShortGitHash) {
ASSERT_TRUE(IsGitHash("1493aa5"));
}
TEST(IsGitHash, GitHashWithUpperCaseCharacters) {
ASSERT_TRUE(IsGitHash("28F741CFCABFFE68A9C12C4E7152569C906BD88F"));
}
TEST(IsGitHash, SvnRevision) {
ASSERT_FALSE(IsGitHash("159105"));
}