Mercurial > irccd
changeset 573:067240931226
Tests: forgot test-cmd-rule-remove in previous commit
author | David Demelier <markand@malikania.fr> |
---|---|
date | Wed, 29 Nov 2017 09:48:40 +0100 |
parents | 17207a09a6b4 |
children | 18e80ec38ac7 |
files | libirccd/irccd/command.cpp tests/cmd-rule-remove/main.cpp |
diffstat | 2 files changed, 54 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/libirccd/irccd/command.cpp Wed Nov 29 09:41:04 2017 +0100 +++ b/libirccd/irccd/command.cpp Wed Nov 29 09:48:40 2017 +0100 @@ -591,12 +591,12 @@ void rule_remove_command::exec(irccd& irccd, transport_client& client, const nlohmann::json& args) { - unsigned position = json_util::require_uint(args, "index"); + auto index = get_rule_index(args); - if (irccd.rules().length() == 0 || position >= irccd.rules().length()) - throw rule_error(rule_error::error::invalid_index); + if (index >= irccd.rules().length()) + throw rule_error(rule_error::invalid_index); - irccd.rules().remove(position); + irccd.rules().remove(index); client.success("rule-remove"); }
--- a/tests/cmd-rule-remove/main.cpp Wed Nov 29 09:41:04 2017 +0100 +++ b/tests/cmd-rule-remove/main.cpp Wed Nov 29 09:48:40 2017 +0100 @@ -127,27 +127,67 @@ BOOST_TEST(result.is_object()); } -BOOST_AUTO_TEST_CASE(out_of_bounds) +BOOST_AUTO_TEST_SUITE(errors) + +BOOST_AUTO_TEST_CASE(invalid_index_1) { - nlohmann::json result; + boost::system::error_code result; + + ctl_->send({ + { "command", "rule-remove" }, + { "index", -100 } + }); + ctl_->recv([&] (auto code, auto) { + result = code; + }); + + wait_for([&] { + return result; + }); + + BOOST_ASSERT(result == rule_error::invalid_index); +} + +BOOST_AUTO_TEST_CASE(invalid_index_2) +{ + boost::system::error_code result; ctl_->send({ { "command", "rule-remove" }, - { "index", 123 } + { "index", 100 } }); - ctl_->recv([&] (auto, auto msg) { - result = msg; + ctl_->recv([&] (auto code, auto) { + result = code; + }); + + wait_for([&] { + return result; }); - wait_for([&] () { - return result.is_object(); + BOOST_ASSERT(result == rule_error::invalid_index); +} + +BOOST_AUTO_TEST_CASE(invalid_index_3) +{ + boost::system::error_code result; + + ctl_->send({ + { "command", "rule-remove" }, + { "index", "notaint" } + }); + ctl_->recv([&] (auto code, auto) { + result = code; }); - // TODO: error code - BOOST_TEST(result.is_object()); - BOOST_TEST(result.count("error")); + wait_for([&] { + return result; + }); + + BOOST_ASSERT(result == rule_error::invalid_index); } BOOST_AUTO_TEST_SUITE_END() +BOOST_AUTO_TEST_SUITE_END() + } // !irccd