@@ -91,6 +91,7 @@ Y_UNIT_TEST_SUITE(TSchemeShardLoginTest) {
9191 TTestEnv env (runtime);
9292 ui64 txId = 100 ;
9393 CreateAlterLoginCreateUser (runtime, ++txId, " /MyRoot" , " user1" , " password1" );
94+ CreateAlterLoginCreateUser (runtime, ++txId, " /MyRoot" , " user2" , " password2" );
9495 auto resultLogin = Login (runtime, " user1" , " password1" );
9596 UNIT_ASSERT_VALUES_EQUAL (resultLogin.error (), " " );
9697
@@ -150,6 +151,7 @@ Y_UNIT_TEST_SUITE(TSchemeShardLoginTest) {
150151 TTestEnv env (runtime);
151152 ui64 txId = 100 ;
152153 CreateAlterLoginCreateUser (runtime, ++txId, " /MyRoot" , " user1" , " password1" );
154+ CreateAlterLoginCreateUser (runtime, ++txId, " /MyRoot" , " user2" , " password2" );
153155 auto resultLogin = Login (runtime, " user1" , " password1" );
154156 UNIT_ASSERT_VALUES_EQUAL (resultLogin.error (), " " );
155157
@@ -228,6 +230,7 @@ Y_UNIT_TEST_SUITE(TSchemeShardLoginTest) {
228230 TTestEnv env (runtime);
229231 ui64 txId = 100 ;
230232 CreateAlterLoginCreateUser (runtime, ++txId, " /MyRoot" , " user1" , " password1" );
233+ CreateAlterLoginCreateUser (runtime, ++txId, " /MyRoot" , " user2" , " password2" );
231234 auto resultLogin = Login (runtime, " user1" , " password1" );
232235 UNIT_ASSERT_VALUES_EQUAL (resultLogin.error (), " " );
233236
@@ -268,6 +271,53 @@ Y_UNIT_TEST_SUITE(TSchemeShardLoginTest) {
268271 }
269272 }
270273
274+ Y_UNIT_TEST (AddAccess_NonExisting) {
275+ TTestBasicRuntime runtime;
276+ TTestEnv env (runtime);
277+ ui64 txId = 100 ;
278+
279+ AsyncMkDir (runtime, ++txId, " /MyRoot" , " Dir1" );
280+ TestModificationResult (runtime, txId, NKikimrScheme::StatusAccepted);
281+
282+ {
283+ NACLib::TDiffACL diffACL;
284+ diffACL.AddAccess (NACLib::EAccessType::Allow, NACLib::GenericUse, " user1" );
285+ AsyncModifyACL (runtime, ++txId, " /MyRoot" , " Dir1" , diffACL.SerializeAsString (), " " );
286+ TestModificationResults (runtime, txId, {{NKikimrScheme::StatusPreconditionFailed, " SID not found" }});
287+ }
288+
289+ {
290+ AsyncModifyACL (runtime, ++txId, " /MyRoot" , " Dir1" , NACLib::TDiffACL{}.SerializeAsString (), " user1" );
291+ TestModificationResults (runtime, txId, {{NKikimrScheme::StatusPreconditionFailed, " Owner SID not found" }});
292+ }
293+
294+ CreateAlterLoginCreateUser (runtime, ++txId, " /MyRoot" , " user1" , " password1" );
295+
296+ TestDescribeResult (DescribePath (runtime, " /MyRoot/Dir1" ),
297+ {NLs::HasNoRight (" +U:user1" ), NLs::HasNoEffectiveRight (" +U:user1" ), NLs::HasOwner (" root@builtin" )});
298+ }
299+
300+ Y_UNIT_TEST (AddAccess_NonYdb) {
301+ TTestBasicRuntime runtime;
302+ TTestEnv env (runtime);
303+ ui64 txId = 100 ;
304+
305+ AsyncMkDir (runtime, ++txId, " /MyRoot" , " Dir1" );
306+ TestModificationResult (runtime, txId, NKikimrScheme::StatusAccepted);
307+
308+ {
309+ NACLib::TDiffACL diffACL;
310+ diffACL.AddAccess (NACLib::EAccessType::Allow, NACLib::GenericUse, " user1@staff" );
311+ AsyncModifyACL (runtime, ++txId, " /MyRoot" , " Dir1" , diffACL.SerializeAsString (), " " );
312+ TestModificationResult (runtime, txId, NKikimrScheme::StatusSuccess);
313+ }
314+
315+ {
316+ AsyncModifyACL (runtime, ++txId, " /MyRoot" , " Dir1" , NACLib::TDiffACL{}.SerializeAsString (), " user1@staff" );
317+ TestModificationResult (runtime, txId, NKikimrScheme::StatusSuccess);
318+ }
319+ }
320+
271321 Y_UNIT_TEST (DisableBuiltinAuthMechanism) {
272322 TTestBasicRuntime runtime;
273323 TTestEnv env (runtime);
0 commit comments