Commit e65ade77d2c for woocommerce

commit e65ade77d2ca8135fe4bb05b44b3e005a353b860
Author: Darren Ethier <darren@roughsmootheng.in>
Date:   Fri Aug 7 12:00:45 2026 -0400

    Fix approved directories Site Health status (#67479)

diff --git a/plugins/woocommerce/changelog/fix-approved-directories-site-health b/plugins/woocommerce/changelog/fix-approved-directories-site-health
new file mode 100644
index 00000000000..50d09506d46
--- /dev/null
+++ b/plugins/woocommerce/changelog/fix-approved-directories-site-health
@@ -0,0 +1,4 @@
+Significance: patch
+Type: fix
+
+Report whether approved download directory rules are enforced in Site Health.
diff --git a/plugins/woocommerce/src/Internal/Admin/SiteHealth.php b/plugins/woocommerce/src/Internal/Admin/SiteHealth.php
index 393b7e4a32a..3e3b74e494d 100644
--- a/plugins/woocommerce/src/Internal/Admin/SiteHealth.php
+++ b/plugins/woocommerce/src/Internal/Admin/SiteHealth.php
@@ -10,9 +10,9 @@ namespace Automattic\WooCommerce\Internal\Admin;
 use Automattic\WooCommerce\Enums\DefaultCustomerAddress;
 use Automattic\WooCommerce\Enums\ProductStatus;
 use Automattic\WooCommerce\Internal\DataStores\Orders\DataSynchronizer;
+use Automattic\WooCommerce\Internal\ProductDownloads\ApprovedDirectories\Register as Download_Directories;
 use Automattic\WooCommerce\Internal\Utilities\ProductUtil;
 use Automattic\WooCommerce\Utilities\OrderUtil;
-use WC_Admin_Notices;
 use WC_Admin_Status;
 use WC_Helper_Updater;
 use WC_Install;
@@ -364,26 +364,18 @@ class SiteHealth {
 			'woocommerce_approved_download_directories_sync' => array(
 				'label' => __( 'WooCommerce approved download directories', 'woocommerce' ),
 				'badge' => 'security',
-				'check' => fn() => ! WC_Admin_Notices::has_notice( 'download_directories_sync_complete' ),
+				'check' => fn() => Download_Directories::MODE_ENABLED === wc_get_container()->get( Download_Directories::class )->get_mode(),
 				'good'  => array(
-					'label'       => __( 'WooCommerce approved download directories do not require review', 'woocommerce' ),
-					'description' => __( 'There is no completed approved download directories sync waiting for review.', 'woocommerce' ),
+					'label'       => __( 'WooCommerce approved download directory rules are enforced', 'woocommerce' ),
+					'description' => __( 'Downloadable product files are restricted to approved directories.', 'woocommerce' ),
 				),
 				'fail'  => array(
-					'label'       => __( 'WooCommerce approved download directories need review', 'woocommerce' ),
-					'description' => __( 'The approved product download directories list was updated. Review it to confirm downloadable product files remain protected.', 'woocommerce' ),
+					'label'       => __( 'WooCommerce approved download directory rules are not enforced', 'woocommerce' ),
+					'description' => __( 'Enable approved download directory rules to control which local and remote locations can be used for downloadable product files. This reduces the risk of exposing unintended files or connecting to unapproved remote locations.', 'woocommerce' ),
 					'actions'     => array(
 						array(
 							'url'   => admin_url( 'admin.php?page=wc-settings&tab=products&section=download_urls' ),
-							'label' => __( 'Review approved directories', 'woocommerce' ),
-						),
-						array(
-							'url'   => wp_nonce_url(
-								add_query_arg( 'wc-hide-notice', 'download_directories_sync_complete', admin_url( 'site-health.php' ) ),
-								'woocommerce_hide_notices_nonce',
-								'_wc_notice_nonce'
-							),
-							'label' => __( 'Mark as reviewed', 'woocommerce' ),
+							'label' => __( 'Review approved directory rules', 'woocommerce' ),
 						),
 						array(
 							'url'     => 'https://woocommerce.com/document/approved-download-directories',
diff --git a/plugins/woocommerce/tests/php/src/Internal/Admin/SiteHealthTest.php b/plugins/woocommerce/tests/php/src/Internal/Admin/SiteHealthTest.php
index 0fef3dced85..7f94ae2e01d 100644
--- a/plugins/woocommerce/tests/php/src/Internal/Admin/SiteHealthTest.php
+++ b/plugins/woocommerce/tests/php/src/Internal/Admin/SiteHealthTest.php
@@ -4,6 +4,7 @@ declare( strict_types = 1 );
 namespace Automattic\WooCommerce\Tests\Internal\Admin;

 use Automattic\WooCommerce\Internal\Admin\SiteHealth;
+use Automattic\WooCommerce\Internal\ProductDownloads\ApprovedDirectories\Register as Download_Directories;
 use WC_Unit_Test_Case;
 use WP_Error;

@@ -25,6 +26,7 @@ class SiteHealthTest extends WC_Unit_Test_Case {
 		parent::setUp();
 		$this->sut = new SiteHealth();
 		delete_transient( '_woocommerce_upload_directory_status' );
+		delete_option( 'wc_downloads_approved_directories_mode' );
 	}

 	/**
@@ -32,9 +34,34 @@ class SiteHealthTest extends WC_Unit_Test_Case {
 	 */
 	public function tearDown(): void {
 		delete_transient( '_woocommerce_upload_directory_status' );
+		delete_option( 'wc_downloads_approved_directories_mode' );
 		parent::tearDown();
 	}

+	/**
+	 * @testdox Approved download directories check is good when rules are enforced.
+	 */
+	public function test_approved_download_directories_check_is_good_when_rules_are_enforced(): void {
+		wc_get_container()->get( Download_Directories::class )->set_mode( Download_Directories::MODE_ENABLED );
+
+		$result = $this->sut->run_test( 'woocommerce_approved_download_directories_sync' );
+
+		$this->assertSame( 'good', $result['status'], 'Enabled approved directory rules should pass the Site Health check.' );
+		$this->assertSame( 'WooCommerce approved download directory rules are enforced', $result['label'], 'The result should report that approved directory rules are enforced.' );
+	}
+
+	/**
+	 * @testdox Approved download directories check recommends enabling rules when they are not enforced.
+	 */
+	public function test_approved_download_directories_check_recommends_enabling_rules_when_not_enforced(): void {
+		$result = $this->sut->run_test( 'woocommerce_approved_download_directories_sync' );
+
+		$this->assertSame( 'recommended', $result['status'], 'Disabled approved directory rules should require attention in Site Health.' );
+		$this->assertSame( 'WooCommerce approved download directory rules are not enforced', $result['label'], 'The result should report that approved directory rules are not enforced.' );
+		$this->assertSame( '<p>Enable approved download directory rules to control which local and remote locations can be used for downloadable product files. This reduces the risk of exposing unintended files or connecting to unapproved remote locations.</p>', $result['description'], 'The result should explain why approved directory rules should be enabled.' );
+		$this->assertStringContainsString( 'section=download_urls', $result['actions'], 'The result should link to the approved directory settings.' );
+	}
+
 	/**
 	 * @testdox Upload directory protection check is inconclusive when the HTTP request fails.
 	 */