Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ruanhaishen
redis
Commits
9f6e84f6
You need to sign in or sign up before continuing.
Commit
9f6e84f6
authored
Jan 30, 2020
by
antirez
Browse files
ACL LOG: implement a few basic tests.
parent
82790e51
Changes
1
Hide whitespace changes
Inline
Side-by-side
tests/unit/acl.tcl
View file @
9f6e84f6
...
@@ -141,4 +141,91 @@ start_server {tags {"acl"}} {
...
@@ -141,4 +141,91 @@ start_server {tags {"acl"}} {
r ACL setuser newuser -debug
r ACL setuser newuser -debug
# The test framework will detect a leak if any.
# The test framework will detect a leak if any.
}
}
test
{
ACL LOG shows failed command executions at toplevel
}
{
r ACL LOG RESET
r ACL setuser antirez >foo on +set ~object:1234
r ACL setuser antirez +eval +multi +exec
r AUTH antirez foo
catch
{
r GET foo
}
r AUTH default
""
set entry
[
lindex
[
r ACL LOG
]
0
]
assert
{[
dict get $entry username
]
eq
{
antirez
}}
assert
{[
dict get $entry context
]
eq
{
toplevel
}}
assert
{[
dict get $entry reason
]
eq
{
command
}}
assert
{[
dict get $entry object
]
eq
{
get
}}
}
test
{
ACL LOG is able to test similar events
}
{
r AUTH antirez foo
catch
{
r GET foo
}
catch
{
r GET foo
}
catch
{
r GET foo
}
r AUTH default
""
set entry
[
lindex
[
r ACL LOG
]
0
]
assert
{[
dict get $entry count
]
== 4
}
}
test
{
ACL LOG is able to log keys access violations and key name
}
{
r AUTH antirez foo
catch
{
r SET somekeynotallowed 1234
}
r AUTH default
""
set entry
[
lindex
[
r ACL LOG
]
0
]
assert
{[
dict get $entry reason
]
eq
{
key
}}
assert
{[
dict get $entry object
]
eq
{
somekeynotallowed
}}
}
test
{
ACL LOG RESET is able to flush the entries in the log
}
{
r ACL LOG RESET
assert
{[
llength
[
r ACL LOG
]]
== 0
}
}
test
{
ACL LOG can distinguish the transaction context
(
1
)}
{
r AUTH antirez foo
r MULTI
catch
{
r INCR foo
}
catch
{
r EXEC
}
r AUTH default
""
set entry
[
lindex
[
r ACL LOG
]
0
]
assert
{[
dict get $entry context
]
eq
{
multi
}}
assert
{[
dict get $entry object
]
eq
{
incr
}}
}
test
{
ACL LOG can distinguish the transaction context
(
2
)}
{
set rd1
[
redis_deferring_client
]
r ACL SETUSER antirez +incr
r AUTH antirez foo
r MULTI
r INCR object:1234
$rd1 ACL SETUSER antirez -incr
$rd1 read
catch
{
r EXEC
}
$rd1 close
r AUTH default
""
set entry
[
lindex
[
r ACL LOG
]
0
]
assert
{[
dict get $entry context
]
eq
{
multi
}}
assert
{[
dict get $entry object
]
eq
{
incr
}}
r ACL SETUSER antirez -incr
}
test
{
ACL can log errors in the context of Lua scripting
}
{
r AUTH antirez foo
catch
{
r EVAL
{
redis.call
(
'incr','foo'
)}
0
}
r AUTH default
""
set entry
[
lindex
[
r ACL LOG
]
0
]
assert
{[
dict get $entry context
]
eq
{
lua
}}
assert
{[
dict get $entry object
]
eq
{
incr
}}
}
test
{
ACL LOG can accept a numerical argument to show less entries
}
{
r AUTH antirez foo
catch
{
r INCR foo
}
catch
{
r INCR foo
}
catch
{
r INCR foo
}
catch
{
r INCR foo
}
r AUTH default
""
assert
{[
llength
[
r ACL LOG
]]
> 1
}
assert
{[
llength
[
r ACL LOG 2
]]
== 2
}
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment