#include "base/containers/contains.h"
#include "extensions/buildflags/buildflags.h"
#include "extensions/common/features/feature_provider.h"
#include "extensions/common/mojom/api_permission_id.mojom.h"
#include "extensions/common/permissions/api_permission.h"
#include "extensions/common/permissions/permissions_info.h"
#include "testing/gtest/include/gtest/gtest.h"
static_assert(BUILDFLAG(ENABLE_EXTENSIONS_CORE));
namespace extensions {
TEST(ChromeAPIPermissionsUnitTest, AllApiPermissionsHaveACorrespondingFeature) {
APIPermissionSet all_api_permissions =
PermissionsInfo::GetInstance()->GetAllForTest();
ASSERT_FALSE(all_api_permissions.empty());
ASSERT_EQ(1u, all_api_permissions.count(mojom::APIPermissionID::kDownloads));
ASSERT_EQ(1u, all_api_permissions.count(mojom::APIPermissionID::kStorage));
const FeatureProvider* permission_features =
FeatureProvider::GetPermissionFeatures();
for (const auto* permission : all_api_permissions) {
if (permission->info()->is_internal()) {
continue;
}
const Feature* feature =
permission_features->GetFeature(permission->name());
EXPECT_TRUE(feature)
<< "Missing _permission_features.json entry for permission '"
<< permission->name()
<< "'. Add a new entry in _permission_features.json to fix this.";
}
}
}