| // Copyright 2022 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "android_webview/browser/enterprise_authentication_app_link_policy_handler.h" |
| |
| #include "base/json/json_reader.h" |
| #include "components/policy/core/browser/configuration_policy_pref_store.h" |
| #include "components/policy/core/browser/configuration_policy_pref_store_test.h" |
| #include "components/policy/core/common/policy_map.h" |
| #include "components/policy/core/common/policy_pref_names.h" |
| #include "components/policy/policy_constants.h" |
| |
| namespace policy { |
| |
| class EnterpriseAuthenticationAppLinkPolicyHandlerTest |
| : public ConfigurationPolicyPrefStoreTest { |
| void SetUp() override { |
| Schema chrome_schema = Schema::Wrap(policy::GetChromeSchemaData()); |
| handler_list_.AddHandler(base::WrapUnique<ConfigurationPolicyHandler>( |
| new EnterpriseAuthenticationAppLinkPolicyHandler( |
| policy::key::kEnterpriseAuthenticationAppLinkPolicy, |
| android_webview::prefs::kEnterpriseAuthAppLinkPolicy))); |
| } |
| }; |
| |
| TEST_F(EnterpriseAuthenticationAppLinkPolicyHandlerTest, ValidPolicy) { |
| PolicyMap policy; |
| policy.Set(policy::key::kEnterpriseAuthenticationAppLinkPolicy, |
| POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, POLICY_SOURCE_PLATFORM, |
| base::JSONReader::Read( |
| "[" |
| " {" |
| " \"url\": \"https://www.testserver1.com/login\"" |
| " }," |
| " {" |
| " \"url\": \"https://www.testserver2.com/login\"" |
| " }" |
| "]"), |
| nullptr); |
| this->UpdateProviderPolicy(policy); |
| const base::Value* pref_value = nullptr; |
| std::optional<base::Value> expected = base::JSONReader::Read(R"( |
| [ |
| "https://www.testserver1.com/login", |
| "https://www.testserver2.com/login" |
| ] |
| )"); |
| |
| EXPECT_TRUE(store_->GetValue( |
| android_webview::prefs::kEnterpriseAuthAppLinkPolicy, &pref_value)); |
| ASSERT_TRUE(pref_value); |
| EXPECT_EQ(expected, *pref_value); |
| } |
| |
| TEST_F(EnterpriseAuthenticationAppLinkPolicyHandlerTest, InvalidPolicy) { |
| PolicyMap policy; |
| policy.Set(policy::key::kEnterpriseAuthenticationAppLinkPolicy, |
| POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, POLICY_SOURCE_PLATFORM, |
| base::JSONReader::Read( |
| "[" |
| " {" |
| " \"abc\": \"https://www.testserver1.com/login\"" |
| " }," |
| "]"), |
| nullptr); |
| this->UpdateProviderPolicy(policy); |
| const base::Value* pref_value = nullptr; |
| |
| EXPECT_FALSE(store_->GetValue( |
| android_webview::prefs::kEnterpriseAuthAppLinkPolicy, &pref_value)); |
| ASSERT_FALSE(pref_value); |
| } |
| } // namespace policy |