19 #include <gmock/gmock.h>
20 #include <gtest/gtest.h>
28 #define VALID_POLICY_PATH_1 \
29 "test/core/security/authorization/test_policies/valid_policy_1.json"
30 #define VALID_POLICY_PATH_2 \
31 "test/core/security/authorization/test_policies/valid_policy_2.json"
32 #define INVALID_POLICY_PATH \
33 "test/core/security/authorization/test_policies/invalid_policy.json"
37 TEST(AuthorizationPolicyProviderTest, StaticDataInitializationSuccessful) {
41 auto engines = (*provider)->engines();
46 EXPECT_EQ(allow_engine->num_policies(), 1);
51 EXPECT_EQ(deny_engine->num_policies(), 1);
54 TEST(AuthorizationPolicyProviderTest,
55 StaticDataInitializationFailedInvalidPolicy) {
59 EXPECT_EQ(provider.status().message(),
"\"name\" field is not present.");
62 TEST(AuthorizationPolicyProviderTest,
63 FileWatcherInitializationSuccessValidPolicy) {
64 auto tmp_authz_policy = absl::make_unique<testing::TmpFile>(
67 tmp_authz_policy->name(), 1);
69 auto engines = (*provider)->engines();
74 EXPECT_EQ(allow_engine->num_policies(), 1);
79 EXPECT_EQ(deny_engine->num_policies(), 1);
82 TEST(AuthorizationPolicyProviderTest,
83 FileWatcherInitializationFailedInvalidPolicy) {
84 auto tmp_authz_policy = absl::make_unique<testing::TmpFile>(
87 tmp_authz_policy->name(), 1);
89 EXPECT_EQ(provider.status().message(),
"\"name\" field is not present.");
92 TEST(AuthorizationPolicyProviderTest, FileWatcherSuccessValidPolicyRefresh) {
93 auto tmp_authz_policy = absl::make_unique<testing::TmpFile>(
96 tmp_authz_policy->name(), 1);
98 auto engines = (*provider)->engines();
103 EXPECT_EQ(allow_engine->num_policies(), 1);
108 EXPECT_EQ(deny_engine->num_policies(), 1);
113 if (contents_changed) {
125 reinterpret_cast<void*
>(1));
126 engines = (*provider)->engines();
131 EXPECT_EQ(allow_engine->num_policies(), 2);
136 EXPECT_EQ(deny_engine->num_policies(), 0);
138 ->SetCallbackForTesting(
nullptr);
141 TEST(AuthorizationPolicyProviderTest,
142 FileWatcherInvalidPolicyRefreshSkipReload) {
143 auto tmp_authz_policy = absl::make_unique<testing::TmpFile>(
146 tmp_authz_policy->name(), 1);
148 auto engines = (*provider)->engines();
153 EXPECT_EQ(allow_engine->num_policies(), 1);
158 EXPECT_EQ(deny_engine->num_policies(), 1);
163 if (contents_changed) {
176 reinterpret_cast<void*
>(1));
177 engines = (*provider)->engines();
182 EXPECT_EQ(allow_engine->num_policies(), 1);
187 EXPECT_EQ(deny_engine->num_policies(), 1);
189 ->SetCallbackForTesting(
nullptr);
192 TEST(AuthorizationPolicyProviderTest, FileWatcherRecoversFromFailure) {
193 auto tmp_authz_policy = absl::make_unique<testing::TmpFile>(
196 tmp_authz_policy->name(), 1);
198 auto engines = (*provider)->engines();
203 EXPECT_EQ(allow_engine->num_policies(), 1);
208 EXPECT_EQ(deny_engine->num_policies(), 1);
213 if (contents_changed) {
216 gpr_event_set(&on_first_reload_done,
reinterpret_cast<void*
>(1));
220 ->SetCallbackForTesting(
std::move(callback1));
226 reinterpret_cast<void*
>(1));
227 engines = (*provider)->engines();
232 EXPECT_EQ(allow_engine->num_policies(), 1);
237 EXPECT_EQ(deny_engine->num_policies(), 1);
242 if (contents_changed) {
244 gpr_event_set(&on_second_reload_done,
reinterpret_cast<void*
>(1));
254 reinterpret_cast<void*
>(1));
255 engines = (*provider)->engines();
260 EXPECT_EQ(allow_engine->num_policies(), 2);
265 EXPECT_EQ(deny_engine->num_policies(), 0);
267 ->SetCallbackForTesting(
nullptr);
272 int main(
int argc,
char** argv) {