blob: dc72b20989efc897d27ef7cf02f264b440b910dc [file] [log] [blame]
// Copyright 2025 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/download/download_ui_enterprise_util.h"
#include "base/json/json_reader.h"
#include "base/memory/raw_ptr.h"
#include "build/build_config.h"
#include "chrome/browser/enterprise/connectors/common.h"
#include "chrome/browser/policy/dm_token_utils.h"
#include "chrome/common/pref_names.h"
#include "chrome/test/base/testing_browser_process.h"
#include "chrome/test/base/testing_profile.h"
#include "chrome/test/base/testing_profile_manager.h"
#include "components/enterprise/buildflags/buildflags.h"
#include "components/enterprise/common/proto/connectors.pb.h"
#include "components/prefs/pref_service.h"
#include "components/sync_preferences/testing_pref_service_syncable.h"
#include "content/public/test/browser_task_environment.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace download {
namespace {
constexpr char kDownloadConnectorEnabledNonBlockingPref[] = R"([
{
"service_provider": "google",
"enable": [
{"url_list": ["*"], "tags": ["malware"]}
]
}
])";
constexpr char kDownloadConnectorEnabledBlockingPref[] = R"([
{
"service_provider": "google",
"block_until_verdict":1,
"enable": [
{"url_list": ["*"], "tags": ["malware"]}
]
}
])";
class DownloadUiEnterpriseUtilTest : public ::testing::Test {
public:
DownloadUiEnterpriseUtilTest()
: testing_profile_manager_(TestingBrowserProcess::GetGlobal()) {}
DownloadUiEnterpriseUtilTest(const DownloadUiEnterpriseUtilTest&) = delete;
DownloadUiEnterpriseUtilTest& operator=(const DownloadUiEnterpriseUtilTest&) =
delete;
void SetUp() override {
ASSERT_TRUE(testing_profile_manager_.SetUp());
profile_ = testing_profile_manager_.CreateTestingProfile("testing_profile");
policy::SetDMTokenForTesting(
policy::DMToken::CreateValidToken("fake-token"));
profile_->GetPrefs()->SetInteger(
AnalysisConnectorScopePref(
enterprise_connectors::AnalysisConnector::FILE_DOWNLOADED),
policy::POLICY_SCOPE_MACHINE);
}
protected:
raw_ptr<TestingProfile, DanglingUntriaged> profile_;
private:
content::BrowserTaskEnvironment task_environment_;
TestingProfileManager testing_profile_manager_;
};
TEST_F(DownloadUiEnterpriseUtilTest, DoesDownloadConnectorBlock) {
EXPECT_FALSE(DoesDownloadConnectorBlock(profile_, GURL()));
profile_->GetPrefs()->Set(
enterprise_connectors::AnalysisConnectorPref(
enterprise_connectors::FILE_DOWNLOADED),
*base::JSONReader::Read(kDownloadConnectorEnabledNonBlockingPref));
EXPECT_FALSE(DoesDownloadConnectorBlock(profile_, GURL()));
profile_->GetPrefs()->Set(
enterprise_connectors::AnalysisConnectorPref(
enterprise_connectors::FILE_DOWNLOADED),
*base::JSONReader::Read(kDownloadConnectorEnabledBlockingPref));
#if BUILDFLAG(ENTERPRISE_CLOUD_CONTENT_ANALYSIS)
EXPECT_TRUE(DoesDownloadConnectorBlock(profile_, GURL()));
#else
EXPECT_FALSE(DoesDownloadConnectorBlock(profile_, GURL()));
#endif
}
} // namespace
} // namespace download