Skip to content

Commit

Permalink
add UT
Browse files Browse the repository at this point in the history
  • Loading branch information
isabelmsft committed Jan 30, 2023
1 parent d7da922 commit 4f9cecf
Show file tree
Hide file tree
Showing 2 changed files with 102 additions and 1 deletion.
2 changes: 1 addition & 1 deletion config/console.py
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ def upate_console_remote_device_name(db, linenum, devicename):
data.pop(dataKey, None)
try:
config_db.mod_entry(table, linenum, data)
except valueError as e:
except ValueError as e:
ctx.fail("Invalid ConfigDB. Error: {}".format(e))
elif isExistingSameDevice(config_db, devicename, table):
ctx.fail("Given device name {} has been used. Please enter a valid device name or remove the existing one !!".format(devicename))
Expand Down
101 changes: 101 additions & 0 deletions tests/console_test.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
import os
import sys
import subprocess
import jsonpatch
import pexpect
from unittest import mock
from mock import patch

import pytest

Expand All @@ -14,6 +16,7 @@
from utilities_common.db import Db
from consutil.lib import *
from sonic_py_common import device_info
from jsonpatch import JsonPatchConflict

class TestConfigConsoleCommands(object):
@classmethod
Expand All @@ -28,6 +31,16 @@ def test_enable_console_switch(self):
print(result.exit_code)
print(sys.stderr, result.output)
assert result.exit_code == 0

@patch("validated_config_db_connector.device_info.is_yang_config_validation_enabled", mock.Mock(return_value=True))
@patch("config.validated_config_db_connector.ValidatedConfigDBConnector.validated_mod_entry", mock.Mock(side_effect=ValueError))
def test_enable_console_switch_yang_validation(self):
runner = CliRunner()
db = Db()

result = runner.invoke(config.config.commands["console"].commands["enable"])
print(result.exit_code)
assert "Invalid ConfigDB. Error" in result.output

def test_disable_console_switch(self):
runner = CliRunner()
Expand All @@ -38,6 +51,17 @@ def test_disable_console_switch(self):
print(sys.stderr, result.output)
assert result.exit_code == 0

@patch("validated_config_db_connector.device_info.is_yang_config_validation_enabled", mock.Mock(return_value=True))
@patch("config.validated_config_db_connector.ValidatedConfigDBConnector.validated_mod_entry", mock.Mock(side_effect=ValueError))
def test_disable_console_switch_yang_validation(self):
runner = CliRunner()
db = Db()

result = runner.invoke(config.config.commands["console"].commands["disable"])
print(result.exit_code)
print(sys.stderr, result.output)
assert "Invalid ConfigDB. Error" in result.output

def test_console_add_exists(self):
runner = CliRunner()
db = Db()
Expand Down Expand Up @@ -95,6 +119,18 @@ def test_console_add_success(self):
print(sys.stderr, result.output)
assert result.exit_code == 0

@patch("validated_config_db_connector.device_info.is_yang_config_validation_enabled", mock.Mock(return_value=True))
@patch("config.validated_config_db_connector.ValidatedConfigDBConnector.validated_set_entry", mock.Mock(side_effect=ValueError))
def test_console_add_yang_validation(self):
runner = CliRunner()
db = Db()

# add a console setting without flow control option
result = runner.invoke(config.config.commands["console"].commands["add"], ["0", '--baud', "9600"], obj=db)
print(result.exit_code)
print(sys.stderr, result.output)
assert "Invalid ConfigDB. Error" in result.output

def test_console_del_non_exists(self):
runner = CliRunner()
db = Db()
Expand All @@ -117,6 +153,19 @@ def test_console_del_success(self):
print(sys.stderr, result.output)
assert result.exit_code == 0

@patch("validated_config_db_connector.device_info.is_yang_config_validation_enabled", mock.Mock(return_value=True))
@patch("config.validated_config_db_connector.ValidatedConfigDBConnector.validated_set_entry", mock.Mock(side_effect=JsonPatchConflict))
def test_console_del_yang_validation(self):
runner = CliRunner()
db = Db()
db.cfgdb.set_entry("CONSOLE_PORT", "1", { "baud_rate" : "9600" })

# add a console setting which the port exists
result = runner.invoke(config.config.commands["console"].commands["del"], ["1"], obj=db)
print(result.exit_code)
print(sys.stderr, result.output)
assert "Invalid ConfigDB. Error" in result.output

def test_update_console_remote_device_name_non_exists(self):
runner = CliRunner()
db = Db()
Expand Down Expand Up @@ -163,6 +212,19 @@ def test_update_console_remote_device_name_reset(self):
print(sys.stderr, result.output)
assert result.exit_code == 0

@patch("validated_config_db_connector.device_info.is_yang_config_validation_enabled", mock.Mock(return_value=True))
@patch("config.validated_config_db_connector.ValidatedConfigDBConnector.validated_mod_entry", mock.Mock(side_effect=ValueError))
def test_update_console_remote_device_name_reset_yang_validation(self):
runner = CliRunner()
db = Db()
db.cfgdb.set_entry("CONSOLE_PORT", 2, { "remote_device" : "switch1" })

# trying to reset a console line remote device configuration which is not exists
result = runner.invoke(config.config.commands["console"].commands["remote_device"], ["2"], obj=db)
print(result.exit_code)
print(sys.stderr, result.output)
assert "Invalid ConfigDB. Error" in result.output

def test_update_console_remote_device_name_success(self):
runner = CliRunner()
db = Db()
Expand All @@ -174,6 +236,19 @@ def test_update_console_remote_device_name_success(self):
print(sys.stderr, result.output)
assert result.exit_code == 0

@patch("validated_config_db_connector.device_info.is_yang_config_validation_enabled", mock.Mock(return_value=True))
@patch("config.validated_config_db_connector.ValidatedConfigDBConnector.validated_mod_entry", mock.Mock(side_effect=ValueError))
def test_update_console_remote_device_name_yang_validation(self):
runner = CliRunner()
db = Db()
db.cfgdb.set_entry("CONSOLE_PORT", "1", { "baud_rate" : "9600" })

# trying to set a console line remote device configuration
result = runner.invoke(config.config.commands["console"].commands["remote_device"], ["1", "switch1"], obj=db)
print(result.exit_code)
print(sys.stderr, result.output)
assert "Invalid ConfigDB. Error" in result.output

def test_update_console_baud_no_change(self):
runner = CliRunner()
db = Db()
Expand Down Expand Up @@ -207,6 +282,19 @@ def test_update_console_baud_success(self):
print(sys.stderr, result.output)
assert result.exit_code == 0

@patch("validated_config_db_connector.device_info.is_yang_config_validation_enabled", mock.Mock(return_value=True))
@patch("config.validated_config_db_connector.ValidatedConfigDBConnector.validated_mod_entry", mock.Mock(side_effect=ValueError))
def test_update_console_baud_yang_validation(self):
runner = CliRunner()
db = Db()
db.cfgdb.set_entry("CONSOLE_PORT", "1", { "baud_rate" : "9600" })

# trying to set a console line baud
result = runner.invoke(config.config.commands["console"].commands["baud"], ["1", "115200"], obj=db)
print(result.exit_code)
print(sys.stderr, result.output)
assert "Invalid ConfigDB. Error" in result.output

def test_update_console_flow_control_no_change(self):
runner = CliRunner()
db = Db()
Expand Down Expand Up @@ -240,6 +328,19 @@ def test_update_console_flow_control_success(self):
print(sys.stderr, result.output)
assert result.exit_code == 0

@patch("validated_config_db_connector.device_info.is_yang_config_validation_enabled", mock.Mock(return_value=True))
@patch("config.validated_config_db_connector.ValidatedConfigDBConnector.validated_mod_entry", mock.Mock(side_effect=ValueError))
def test_update_console_flow_control_yang_validation(self):
runner = CliRunner()
db = Db()
db.cfgdb.set_entry("CONSOLE_PORT", "1", { "baud_rate" : "9600", "flow_control" : "0" })

# trying to set a console line flow control option
result = runner.invoke(config.config.commands["console"].commands["flow_control"], ["enable", "1"], obj=db)
print(result.exit_code)
print(sys.stderr, result.output)
assert "Invalid ConfigDB. Error" in result.output

class TestConsutilLib(object):
@classmethod
def setup_class(cls):
Expand Down

0 comments on commit 4f9cecf

Please sign in to comment.