# HG changeset patch # User David Demelier # Date 1511945320 -3600 # Node ID 0672409312263548d131219b63a6e1531a049dd2 # Parent 17207a09a6b4dc103b028c8ddfe4a8585bdb9793 Tests: forgot test-cmd-rule-remove in previous commit diff -r 17207a09a6b4 -r 067240931226 libirccd/irccd/command.cpp --- 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"); } diff -r 17207a09a6b4 -r 067240931226 tests/cmd-rule-remove/main.cpp --- 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