Skip to content

Commit 754af7a

Browse files
Lord-KATotktonada
authored andcommitted
test/config: verify that user/role is not deleted
When the configuration changes and the instance is reloaded with it, some roles or users may have been removed from the config. In such case, it would be destructive to delete/disable them on the instance, so this test checks that all users and roles removed in config stay on the instance and keep all the privileges. Part of tarantool#8967 NO_DOC=test NO_CHANGELOG=test
1 parent f50c9b5 commit 754af7a

File tree

1 file changed

+77
-1
lines changed

1 file changed

+77
-1
lines changed

test/config-luatest/credentials_applier_test.lua

+77-1
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,9 @@ local json = require('json')
22
local it = require('test.interactive_tarantool')
33
local t = require('luatest')
44
local treegen = require('test.treegen')
5+
local helpers = require('test.config-luatest.helpers')
56

6-
local g = t.group()
7+
local g = helpers.group()
78

89
local internal = require('internal.config.applier.credentials')._internal
910

@@ -560,3 +561,78 @@ g.test_set_password = function(g)
560561
child:close()
561562
end
562563
end
564+
565+
g.test_remove_user_role = function(g)
566+
-- Verify that when user or role is removed from the config,
567+
-- it is not being deleted.
568+
569+
-- Whole removed user/role configuration is expected to be left
570+
-- as is after the reload, so verification functions for before/after
571+
-- reload are the same.
572+
local verify = function()
573+
local ok, err = pcall(box.schema.user.info, 'myuser')
574+
t.assert(ok, err)
575+
ok, err = pcall(box.schema.role.info, 'myrole')
576+
t.assert(ok, err)
577+
local internal =
578+
require('internal.config.applier.credentials')._internal
579+
580+
local guest_perm = box.schema.user.info('guest')
581+
guest_perm = internal.privileges_from_box(guest_perm)
582+
583+
t.assert(guest_perm['role']['super'].execute)
584+
585+
local user_perm = box.schema.user.info('myuser')
586+
user_perm = internal.privileges_from_box(user_perm)
587+
588+
t.assert(user_perm['universe'][''].execute)
589+
590+
local role_perm = box.schema.role.info('myrole')
591+
role_perm = internal.privileges_from_box(role_perm)
592+
593+
t.assert(role_perm['universe'][''].read)
594+
t.assert(role_perm['universe'][''].write)
595+
end
596+
597+
helpers.reload_success_case(g, {
598+
options = {
599+
credentials = {
600+
roles = {
601+
myrole = {
602+
privileges = {{
603+
permissions = {
604+
'read',
605+
'write',
606+
},
607+
universe = true,
608+
}}
609+
},
610+
},
611+
users = {
612+
guest = {
613+
roles = { 'super' }
614+
},
615+
myuser = {
616+
privileges = {{
617+
permissions = {
618+
'execute',
619+
},
620+
universe = true,
621+
}},
622+
},
623+
}
624+
}
625+
},
626+
verify = verify,
627+
options_2 = {
628+
credentials = {
629+
users = {
630+
guest = {
631+
roles = { 'super' }
632+
},
633+
}
634+
}
635+
},
636+
verify_2 = verify,
637+
})
638+
end

0 commit comments

Comments
 (0)