Skip to content

Commit 6fabbed

Browse files
authored
[consutil][test] Add unit tests for consutil clear command (sonic-net#1274)
* [consutil] Add UT for consutil clear command * Fix test cases Signed-off-by: Jing Kan [email protected]
1 parent a4f663e commit 6fabbed

File tree

1 file changed

+61
-0
lines changed

1 file changed

+61
-0
lines changed

tests/console_test.py

+61
Original file line numberDiff line numberDiff line change
@@ -578,3 +578,64 @@ def test_connect_success(self):
578578
print(sys.stderr, result.output)
579579
assert result.exit_code == 0
580580
assert result.output == "Successful connection to line [1]\nPress ^A ^X to disconnect\n"
581+
582+
class TestConsutilClear(object):
583+
@classmethod
584+
def setup_class(cls):
585+
print("SETUP")
586+
587+
@mock.patch('consutil.lib.SysInfoProvider.list_console_ttys', mock.MagicMock(return_value=["/dev/ttyUSB1"]))
588+
@mock.patch('consutil.lib.SysInfoProvider.init_device_prefix', mock.MagicMock(return_value=None))
589+
@mock.patch('os.geteuid', mock.MagicMock(return_value=1))
590+
def test_clear_without_root(self):
591+
runner = CliRunner()
592+
db = Db()
593+
594+
result = runner.invoke(consutil.consutil.commands["clear"], ['1'], obj=db)
595+
print(result.exit_code)
596+
print(sys.stderr, result.output)
597+
assert result.exit_code == 2
598+
assert "Root privileges are required for this operation" in result.output
599+
600+
@mock.patch('consutil.lib.SysInfoProvider.list_console_ttys', mock.MagicMock(return_value=["/dev/ttyUSB1"]))
601+
@mock.patch('consutil.lib.SysInfoProvider.init_device_prefix', mock.MagicMock(return_value=None))
602+
@mock.patch('os.geteuid', mock.MagicMock(return_value=0))
603+
def test_clear_line_not_found(self):
604+
runner = CliRunner()
605+
db = Db()
606+
607+
result = runner.invoke(consutil.consutil.commands["clear"], ['2'], obj=db)
608+
print(result.exit_code)
609+
print(sys.stderr, result.output)
610+
assert result.exit_code == 3
611+
assert "Target [2] does not exist" in result.output
612+
613+
@mock.patch('consutil.lib.SysInfoProvider.list_console_ttys', mock.MagicMock(return_value=["/dev/ttyUSB1"]))
614+
@mock.patch('consutil.lib.SysInfoProvider.init_device_prefix', mock.MagicMock(return_value=None))
615+
@mock.patch('os.geteuid', mock.MagicMock(return_value=0))
616+
@mock.patch('consutil.lib.ConsolePortInfo.clear_session', mock.MagicMock(return_value=False))
617+
def test_clear_idle(self):
618+
runner = CliRunner()
619+
db = Db()
620+
db.cfgdb.set_entry("CONSOLE_PORT", 1, { "remote_device" : "switch1", "baud_rate" : "9600" })
621+
622+
result = runner.invoke(consutil.consutil.commands["clear"], ['1'], obj=db)
623+
print(result.exit_code)
624+
print(sys.stderr, result.output)
625+
assert result.exit_code == 0
626+
assert "No process is connected to line 1" in result.output
627+
628+
@mock.patch('consutil.lib.SysInfoProvider.list_console_ttys', mock.MagicMock(return_value=["/dev/ttyUSB1"]))
629+
@mock.patch('consutil.lib.SysInfoProvider.init_device_prefix', mock.MagicMock(return_value=None))
630+
@mock.patch('os.geteuid', mock.MagicMock(return_value=0))
631+
@mock.patch('consutil.lib.ConsolePortInfo.clear_session', mock.MagicMock(return_value=True))
632+
def test_clear_success(self):
633+
runner = CliRunner()
634+
db = Db()
635+
db.cfgdb.set_entry("CONSOLE_PORT", 1, { "remote_device" : "switch1", "baud_rate" : "9600" })
636+
637+
result = runner.invoke(consutil.consutil.commands["clear"], ['1'], obj=db)
638+
print(result.exit_code)
639+
print(sys.stderr, result.output)
640+
assert result.exit_code == 0
641+
assert result.output == ""

0 commit comments

Comments
 (0)