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
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"}} {
r ACL setuser newuser -debug
# 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