blob: f11d51d983a2094ae4c1690c05a1e639e665a8b9 [file] [log] [blame]
// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/device_api/device_attribute_api.h"
#include "base/test/gtest_tags.h"
#include "build/chromeos_buildflags.h"
#include "chrome/browser/ash/policy/core/device_policy_cros_browser_test.h"
#include "chromeos/ash/components/system/fake_statistics_provider.h"
#include "content/public/test/browser_test.h"
namespace {
constexpr char kAnnotatedAssetId[] = "annotated_asset_id";
constexpr char kAnnotatedLocation[] = "annotated_location";
constexpr char kDirectoryApiId[] = "directory_api_id";
constexpr char kHostname[] = "hostname";
constexpr char kSerialNumber[] = "serial_number";
} // namespace
// This test class provides unset device policy values and statistic data used
// by device attributes APIs.
class DeviceAttributeAPIUnsetTest : public policy::DevicePolicyCrosBrowserTest {
public:
void SetUpInProcessBrowserTestFixture() override {
DevicePolicyCrosBrowserTest::SetUpInProcessBrowserTestFixture();
// Init machine statistic.
fake_statistics_provider_.SetMachineStatistic(
ash::system::kSerialNumberKeyForTest, std::string());
}
private:
ash::system::ScopedFakeStatisticsProvider fake_statistics_provider_;
};
IN_PROC_BROWSER_TEST_F(DeviceAttributeAPIUnsetTest, AllAttributes) {
device_attribute_api::GetDirectoryId(
base::BindOnce([](blink::mojom::DeviceAttributeResultPtr result) {
EXPECT_FALSE(result->get_attribute().has_value());
}));
device_attribute_api::GetAnnotatedAssetId(
base::BindOnce([](blink::mojom::DeviceAttributeResultPtr result) {
EXPECT_FALSE(result->get_attribute().has_value());
}));
device_attribute_api::GetAnnotatedLocation(
base::BindOnce([](blink::mojom::DeviceAttributeResultPtr result) {
EXPECT_FALSE(result->get_attribute().has_value());
}));
device_attribute_api::GetSerialNumber(
base::BindOnce([](blink::mojom::DeviceAttributeResultPtr result) {
EXPECT_FALSE(result->get_attribute().has_value());
}));
device_attribute_api::GetHostname(
base::BindOnce([](blink::mojom::DeviceAttributeResultPtr result) {
EXPECT_FALSE(result->get_attribute().has_value());
}));
base::RunLoop().RunUntilIdle();
}
// This test class provides regular device policy values and statistic data used
// by device attributes APIs.
class DeviceAttributeAPITest : public policy::DevicePolicyCrosBrowserTest {
public:
void SetUpInProcessBrowserTestFixture() override {
DevicePolicyCrosBrowserTest::SetUpInProcessBrowserTestFixture();
// Init the device policy.
device_policy()->SetDefaultSigningKey();
device_policy()->policy_data().set_annotated_asset_id(kAnnotatedAssetId);
device_policy()->policy_data().set_annotated_location(kAnnotatedLocation);
device_policy()->policy_data().set_directory_api_id(kDirectoryApiId);
enterprise_management::NetworkHostnameProto* proto =
device_policy()->payload().mutable_network_hostname();
proto->set_device_hostname_template(kHostname);
device_policy()->Build();
RefreshDevicePolicy();
// Init machine statistic.
fake_statistics_provider_.SetMachineStatistic(
ash::system::kSerialNumberKeyForTest, kSerialNumber);
}
private:
ash::system::ScopedFakeStatisticsProvider fake_statistics_provider_;
};
IN_PROC_BROWSER_TEST_F(DeviceAttributeAPITest, AllAttributes) {
base::AddFeatureIdTagToTestResult(
"screenplay-163d36ff-e640-48e1-a451-03e14c9e8874");
device_attribute_api::GetDirectoryId(
base::BindOnce([](blink::mojom::DeviceAttributeResultPtr result) {
EXPECT_EQ(result->get_attribute(), kDirectoryApiId);
}));
device_attribute_api::GetAnnotatedAssetId(
base::BindOnce([](blink::mojom::DeviceAttributeResultPtr result) {
EXPECT_EQ(result->get_attribute(), kAnnotatedAssetId);
}));
device_attribute_api::GetAnnotatedLocation(
base::BindOnce([](blink::mojom::DeviceAttributeResultPtr result) {
EXPECT_EQ(result->get_attribute(), kAnnotatedLocation);
}));
device_attribute_api::GetHostname(
base::BindOnce([](blink::mojom::DeviceAttributeResultPtr result) {
EXPECT_EQ(result->get_attribute(), kHostname);
}));
device_attribute_api::GetSerialNumber(
base::BindOnce([](blink::mojom::DeviceAttributeResultPtr result) {
EXPECT_EQ(result->get_attribute(), kSerialNumber);
}));
base::RunLoop().RunUntilIdle();
}