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