winget-cli

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

AdminSettings.cpp (3060B)


      1 // Copyright (c) Microsoft Corporation.
      2 // Licensed under the MIT License.
      3 #include "pch.h"
      4 #include "TestCommon.h"
      5 #include "TestSettings.h"
      6 #include <winget/AdminSettings.h>
      7 
      8 using namespace AppInstaller::Settings;
      9 using namespace TestCommon;
     10 
     11 TEST_CASE("AdminSetting_Enable", "[adminSettings]")
     12 {
     13     WHEN("Group policy")
     14     {
     15         SECTION("Not configured")
     16         {
     17             GroupPolicyTestOverride policies;
     18             policies.SetState(TogglePolicy::Policy::LocalManifestFiles, PolicyState::NotConfigured);
     19             REQUIRE(EnableAdminSetting(BoolAdminSetting::LocalManifestFiles));
     20         }
     21 
     22         SECTION("Enabled")
     23         {
     24             GroupPolicyTestOverride policies;
     25             policies.SetState(TogglePolicy::Policy::LocalManifestFiles, PolicyState::Enabled);
     26             REQUIRE(EnableAdminSetting(BoolAdminSetting::LocalManifestFiles));
     27         }
     28 
     29         SECTION("Disabled")
     30         {
     31             GroupPolicyTestOverride policies;
     32             policies.SetState(TogglePolicy::Policy::LocalManifestFiles, PolicyState::Disabled);
     33             REQUIRE_FALSE(EnableAdminSetting(BoolAdminSetting::LocalManifestFiles));
     34         }
     35     }
     36 }
     37 
     38 TEST_CASE("AdminSetting_Disable", "[adminSettings]")
     39 {
     40     WHEN("Group policy")
     41     {
     42         SECTION("Not configured")
     43         {
     44             GroupPolicyTestOverride policies;
     45             policies.SetState(TogglePolicy::Policy::LocalManifestFiles, PolicyState::NotConfigured);
     46             REQUIRE(DisableAdminSetting(BoolAdminSetting::LocalManifestFiles));
     47         }
     48 
     49         SECTION("Enabled")
     50         {
     51             GroupPolicyTestOverride policies;
     52             policies.SetState(TogglePolicy::Policy::LocalManifestFiles, PolicyState::Enabled);
     53             REQUIRE_FALSE(DisableAdminSetting(BoolAdminSetting::LocalManifestFiles));
     54         }
     55 
     56         SECTION("Disabled")
     57         {
     58             GroupPolicyTestOverride policies;
     59             policies.SetState(TogglePolicy::Policy::LocalManifestFiles, PolicyState::Disabled);
     60             REQUIRE(DisableAdminSetting(BoolAdminSetting::LocalManifestFiles));
     61         }
     62     }
     63 }
     64 
     65 TEST_CASE("AdminSetting_AllSettingsAreImplemented", "[adminSettings]")
     66 {
     67     for (auto adminSetting : GetAllBoolAdminSettings())
     68     {
     69         // If we forget to add it to the conversion, it returns Unknown/None
     70         REQUIRE(AdminSettingToString(adminSetting) != AdminSettingToString(BoolAdminSetting::Unknown));
     71         REQUIRE(StringToBoolAdminSetting(AdminSettingToString(adminSetting)) != BoolAdminSetting::Unknown);
     72         REQUIRE(GetAdminSettingPolicy(adminSetting) != TogglePolicy::Policy::None);
     73 
     74         GroupPolicyTestOverride policies;
     75         policies.SetState(GetAdminSettingPolicy(adminSetting), PolicyState::NotConfigured);
     76 
     77         // We should be able to configure the state.
     78         // If we forget to add it, it won't persist.
     79         REQUIRE(EnableAdminSetting(adminSetting));
     80         REQUIRE(IsAdminSettingEnabled(adminSetting));
     81         REQUIRE(DisableAdminSetting(adminSetting));
     82         REQUIRE_FALSE(IsAdminSettingEnabled(adminSetting));
     83     }
     84 }