2025-02-09 17:03:45 +01:00
|
|
|
import os
|
2025-02-09 17:21:37 +01:00
|
|
|
|
|
|
|
from packaging.version import parse as version_parse
|
2025-02-09 16:57:44 +01:00
|
|
|
import pytest
|
|
|
|
|
|
|
|
|
|
|
|
def test_wrong_select_db_index(cli):
|
|
|
|
cli.sendline("select 1")
|
|
|
|
cli.expect(["OK", "127.0.0.1"])
|
|
|
|
|
|
|
|
cli.sendline("select 128")
|
|
|
|
cli.expect(["DB index is out of range", "127.0.0.1:6379[1]>"])
|
|
|
|
|
2025-02-09 17:21:37 +01:00
|
|
|
if version_parse(os.environ["REDIS_VERSION"]) > version_parse("5"):
|
2025-02-09 17:03:45 +01:00
|
|
|
text = "value is not an integer or out of range"
|
|
|
|
else:
|
|
|
|
text = "invalid DB index"
|
|
|
|
|
2025-02-09 16:57:44 +01:00
|
|
|
cli.sendline("select abc")
|
2025-02-09 17:03:45 +01:00
|
|
|
cli.expect([text, "127.0.0.1:6379[1]>"])
|
2025-02-09 16:57:44 +01:00
|
|
|
|
|
|
|
cli.sendline("select 15")
|
|
|
|
cli.expect("OK")
|
|
|
|
|
|
|
|
|
|
|
|
def test_set_command_with_shash(clean_redis, cli):
|
|
|
|
cli.sendline("set a \\hello\\") # legal redis command
|
|
|
|
cli.expect("OK")
|
|
|
|
|
|
|
|
cli.sendline("get a")
|
|
|
|
cli.expect(r"hello")
|
|
|
|
|
|
|
|
|
|
|
|
def test_enter_key_binding(clean_redis, cli):
|
|
|
|
cli.send("set")
|
|
|
|
cli.expect("set")
|
|
|
|
cli.send("\033[B") # down
|
|
|
|
cli.sendline() # enter
|
|
|
|
|
|
|
|
cli.sendline(" a 'hello'")
|
|
|
|
cli.expect("OK")
|
|
|
|
|
|
|
|
cli.sendline("get a")
|
|
|
|
cli.expect(r"hello")
|
|
|
|
|
|
|
|
|
2025-02-09 17:21:37 +01:00
|
|
|
@pytest.mark.skipif("version_parse(os.environ['REDIS_VERSION']) < version_parse('6')")
|
2025-02-09 16:57:44 +01:00
|
|
|
def test_auth_hidden_password_with_username(clean_redis, cli):
|
|
|
|
cli.send("auth default hello-world")
|
|
|
|
cli.expect("default")
|
|
|
|
cli.expect(r"\*{11}")
|
|
|
|
|
|
|
|
|
2025-02-09 17:21:37 +01:00
|
|
|
@pytest.mark.skipif("version_parse(os.environ['REDIS_VERSION']) > version_parse('5')")
|
2025-02-09 16:57:44 +01:00
|
|
|
def test_auth_hidden_password(clean_redis, cli):
|
|
|
|
cli.send("auth hello-world")
|
|
|
|
cli.expect("auth")
|
|
|
|
cli.expect(r"\*{11}")
|
|
|
|
|
|
|
|
|
|
|
|
def test_hello_command_is_not_supported(cli):
|
|
|
|
cli.sendline("hello 3")
|
|
|
|
cli.expect("IRedis currently not support RESP3")
|
2025-02-09 17:03:45 +01:00
|
|
|
|
|
|
|
|
2025-02-09 17:08:57 +01:00
|
|
|
@pytest.mark.xfail(reason="unstable, maybe due to github action's signal handling")
|
2025-02-09 17:03:45 +01:00
|
|
|
def test_abort_reading_connection(cli):
|
|
|
|
cli.sendline("blpop mylist 30")
|
|
|
|
cli.send(chr(3))
|
|
|
|
cli.expect(
|
|
|
|
r"KeyboardInterrupt received! User canceled reading response!", timeout=10
|
|
|
|
)
|
|
|
|
|
|
|
|
cli.sendline("set foo bar")
|
|
|
|
cli.expect("OK")
|
|
|
|
cli.sendline("get foo")
|
|
|
|
cli.expect("bar")
|