Mercurial > irccd
annotate tests/src/irccdctl/cli-plugin-config/main.cpp @ 763:4283dc118339
Irccd: style (transport_util)
author | David Demelier <markand@malikania.fr> |
---|---|
date | Mon, 13 Aug 2018 13:50:11 +0200 |
parents | 35c1517d705d |
children | 8c44bbcbbab9 |
rev | line source |
---|---|
662
e9153b85b9bd
Tests: test irccdctl (plugin-* commands) #785
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
1 /* |
e9153b85b9bd
Tests: test irccdctl (plugin-* commands) #785
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
2 * main.cpp -- test irccdctl plugin-config |
e9153b85b9bd
Tests: test irccdctl (plugin-* commands) #785
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
3 * |
e9153b85b9bd
Tests: test irccdctl (plugin-* commands) #785
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
4 * Copyright (c) 2013-2018 David Demelier <markand@malikania.fr> |
e9153b85b9bd
Tests: test irccdctl (plugin-* commands) #785
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
5 * |
e9153b85b9bd
Tests: test irccdctl (plugin-* commands) #785
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
6 * Permission to use, copy, modify, and/or distribute this software for any |
e9153b85b9bd
Tests: test irccdctl (plugin-* commands) #785
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
7 * purpose with or without fee is hereby granted, provided that the above |
e9153b85b9bd
Tests: test irccdctl (plugin-* commands) #785
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
8 * copyright notice and this permission notice appear in all copies. |
e9153b85b9bd
Tests: test irccdctl (plugin-* commands) #785
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
9 * |
e9153b85b9bd
Tests: test irccdctl (plugin-* commands) #785
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
e9153b85b9bd
Tests: test irccdctl (plugin-* commands) #785
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
e9153b85b9bd
Tests: test irccdctl (plugin-* commands) #785
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
e9153b85b9bd
Tests: test irccdctl (plugin-* commands) #785
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
e9153b85b9bd
Tests: test irccdctl (plugin-* commands) #785
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
e9153b85b9bd
Tests: test irccdctl (plugin-* commands) #785
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
e9153b85b9bd
Tests: test irccdctl (plugin-* commands) #785
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
e9153b85b9bd
Tests: test irccdctl (plugin-* commands) #785
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
17 */ |
e9153b85b9bd
Tests: test irccdctl (plugin-* commands) #785
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
18 |
e9153b85b9bd
Tests: test irccdctl (plugin-* commands) #785
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
19 #define BOOST_TEST_MODULE "irccdctl plugin-config" |
e9153b85b9bd
Tests: test irccdctl (plugin-* commands) #785
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
20 #include <boost/test/unit_test.hpp> |
e9153b85b9bd
Tests: test irccdctl (plugin-* commands) #785
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
21 |
758
445c071e8efb
Irccd: Javascript API cleanup
David Demelier <markand@malikania.fr>
parents:
745
diff
changeset
|
22 #include <irccd/test/cli_fixture.hpp> |
738
199f36d4edc8
Tests: add mock_plugin class, closes #898
David Demelier <markand@malikania.fr>
parents:
736
diff
changeset
|
23 #include <irccd/test/mock_plugin.hpp> |
662
e9153b85b9bd
Tests: test irccdctl (plugin-* commands) #785
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
24 |
760
35c1517d705d
Tests: make consistency
David Demelier <markand@malikania.fr>
parents:
758
diff
changeset
|
25 using namespace irccd::test; |
35c1517d705d
Tests: make consistency
David Demelier <markand@malikania.fr>
parents:
758
diff
changeset
|
26 |
35c1517d705d
Tests: make consistency
David Demelier <markand@malikania.fr>
parents:
758
diff
changeset
|
27 namespace irccd { |
662
e9153b85b9bd
Tests: test irccdctl (plugin-* commands) #785
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
28 |
678
a4082de4e94e
Tests: rework cli_test to spawn irccd daemon in a thread, continue #785
David Demelier <markand@malikania.fr>
parents:
662
diff
changeset
|
29 namespace { |
a4082de4e94e
Tests: rework cli_test to spawn irccd daemon in a thread, continue #785
David Demelier <markand@malikania.fr>
parents:
662
diff
changeset
|
30 |
758
445c071e8efb
Irccd: Javascript API cleanup
David Demelier <markand@malikania.fr>
parents:
745
diff
changeset
|
31 class configurable_plugin_cli_fixture : public cli_fixture { |
678
a4082de4e94e
Tests: rework cli_test to spawn irccd daemon in a thread, continue #785
David Demelier <markand@malikania.fr>
parents:
662
diff
changeset
|
32 public: |
758
445c071e8efb
Irccd: Javascript API cleanup
David Demelier <markand@malikania.fr>
parents:
745
diff
changeset
|
33 configurable_plugin_cli_fixture() |
678
a4082de4e94e
Tests: rework cli_test to spawn irccd daemon in a thread, continue #785
David Demelier <markand@malikania.fr>
parents:
662
diff
changeset
|
34 { |
738
199f36d4edc8
Tests: add mock_plugin class, closes #898
David Demelier <markand@malikania.fr>
parents:
736
diff
changeset
|
35 auto conf1 = std::make_unique<mock_plugin>("conf1"); |
199f36d4edc8
Tests: add mock_plugin class, closes #898
David Demelier <markand@malikania.fr>
parents:
736
diff
changeset
|
36 auto conf2 = std::make_unique<mock_plugin>("conf2"); |
678
a4082de4e94e
Tests: rework cli_test to spawn irccd daemon in a thread, continue #785
David Demelier <markand@malikania.fr>
parents:
662
diff
changeset
|
37 |
722
3e816cebed2c
Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents:
678
diff
changeset
|
38 conf1->set_options({ |
678
a4082de4e94e
Tests: rework cli_test to spawn irccd daemon in a thread, continue #785
David Demelier <markand@malikania.fr>
parents:
662
diff
changeset
|
39 { "v1", "123" }, |
a4082de4e94e
Tests: rework cli_test to spawn irccd daemon in a thread, continue #785
David Demelier <markand@malikania.fr>
parents:
662
diff
changeset
|
40 { "v2", "456" } |
a4082de4e94e
Tests: rework cli_test to spawn irccd daemon in a thread, continue #785
David Demelier <markand@malikania.fr>
parents:
662
diff
changeset
|
41 }); |
a4082de4e94e
Tests: rework cli_test to spawn irccd daemon in a thread, continue #785
David Demelier <markand@malikania.fr>
parents:
662
diff
changeset
|
42 |
731
9d13aabfd63a
Irccd: plugin now have internal id
David Demelier <markand@malikania.fr>
parents:
722
diff
changeset
|
43 irccd_.plugins().add(std::move(conf1)); |
9d13aabfd63a
Irccd: plugin now have internal id
David Demelier <markand@malikania.fr>
parents:
722
diff
changeset
|
44 irccd_.plugins().add(std::move(conf2)); |
678
a4082de4e94e
Tests: rework cli_test to spawn irccd daemon in a thread, continue #785
David Demelier <markand@malikania.fr>
parents:
662
diff
changeset
|
45 } |
a4082de4e94e
Tests: rework cli_test to spawn irccd daemon in a thread, continue #785
David Demelier <markand@malikania.fr>
parents:
662
diff
changeset
|
46 }; |
a4082de4e94e
Tests: rework cli_test to spawn irccd daemon in a thread, continue #785
David Demelier <markand@malikania.fr>
parents:
662
diff
changeset
|
47 |
758
445c071e8efb
Irccd: Javascript API cleanup
David Demelier <markand@malikania.fr>
parents:
745
diff
changeset
|
48 BOOST_FIXTURE_TEST_SUITE(plugin_config_suite, configurable_plugin_cli_fixture) |
662
e9153b85b9bd
Tests: test irccdctl (plugin-* commands) #785
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
49 |
e9153b85b9bd
Tests: test irccdctl (plugin-* commands) #785
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
50 BOOST_AUTO_TEST_CASE(set_and_get) |
e9153b85b9bd
Tests: test irccdctl (plugin-* commands) #785
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
51 { |
678
a4082de4e94e
Tests: rework cli_test to spawn irccd daemon in a thread, continue #785
David Demelier <markand@malikania.fr>
parents:
662
diff
changeset
|
52 start(); |
662
e9153b85b9bd
Tests: test irccdctl (plugin-* commands) #785
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
53 |
e9153b85b9bd
Tests: test irccdctl (plugin-* commands) #785
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
54 // First, configure. No output yet |
e9153b85b9bd
Tests: test irccdctl (plugin-* commands) #785
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
55 { |
739
46a1877749ff
Tests: add irccdctl result code check
David Demelier <markand@malikania.fr>
parents:
738
diff
changeset
|
56 const auto [code, out, err] = exec({ "plugin-config", "conf2", "verbose", "false" }); |
662
e9153b85b9bd
Tests: test irccdctl (plugin-* commands) #785
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
57 |
e9153b85b9bd
Tests: test irccdctl (plugin-* commands) #785
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
58 // no output yet. |
739
46a1877749ff
Tests: add irccdctl result code check
David Demelier <markand@malikania.fr>
parents:
738
diff
changeset
|
59 BOOST_TEST(!code); |
736
49b7c7660a00
Tests: use structured bindings in irccdctl
David Demelier <markand@malikania.fr>
parents:
731
diff
changeset
|
60 BOOST_TEST(out.size() == 0U); |
49b7c7660a00
Tests: use structured bindings in irccdctl
David Demelier <markand@malikania.fr>
parents:
731
diff
changeset
|
61 BOOST_TEST(err.size() == 0U); |
662
e9153b85b9bd
Tests: test irccdctl (plugin-* commands) #785
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
62 } |
e9153b85b9bd
Tests: test irccdctl (plugin-* commands) #785
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
63 |
e9153b85b9bd
Tests: test irccdctl (plugin-* commands) #785
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
64 // Get the newly created value. |
e9153b85b9bd
Tests: test irccdctl (plugin-* commands) #785
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
65 { |
739
46a1877749ff
Tests: add irccdctl result code check
David Demelier <markand@malikania.fr>
parents:
738
diff
changeset
|
66 const auto [code, out, err] = exec({ "plugin-config", "conf2", "verbose" }); |
662
e9153b85b9bd
Tests: test irccdctl (plugin-* commands) #785
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
67 |
739
46a1877749ff
Tests: add irccdctl result code check
David Demelier <markand@malikania.fr>
parents:
738
diff
changeset
|
68 BOOST_TEST(!code); |
736
49b7c7660a00
Tests: use structured bindings in irccdctl
David Demelier <markand@malikania.fr>
parents:
731
diff
changeset
|
69 BOOST_TEST(out.size() == 1U); |
49b7c7660a00
Tests: use structured bindings in irccdctl
David Demelier <markand@malikania.fr>
parents:
731
diff
changeset
|
70 BOOST_TEST(err.size() == 0U); |
49b7c7660a00
Tests: use structured bindings in irccdctl
David Demelier <markand@malikania.fr>
parents:
731
diff
changeset
|
71 BOOST_TEST(out[0] == "false"); |
662
e9153b85b9bd
Tests: test irccdctl (plugin-* commands) #785
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
72 } |
e9153b85b9bd
Tests: test irccdctl (plugin-* commands) #785
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
73 } |
e9153b85b9bd
Tests: test irccdctl (plugin-* commands) #785
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
74 |
e9153b85b9bd
Tests: test irccdctl (plugin-* commands) #785
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
75 BOOST_AUTO_TEST_CASE(getall) |
e9153b85b9bd
Tests: test irccdctl (plugin-* commands) #785
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
76 { |
678
a4082de4e94e
Tests: rework cli_test to spawn irccd daemon in a thread, continue #785
David Demelier <markand@malikania.fr>
parents:
662
diff
changeset
|
77 start(); |
662
e9153b85b9bd
Tests: test irccdctl (plugin-* commands) #785
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
78 |
739
46a1877749ff
Tests: add irccdctl result code check
David Demelier <markand@malikania.fr>
parents:
738
diff
changeset
|
79 const auto [code, out, err] = exec({ "plugin-config", "conf1" }); |
678
a4082de4e94e
Tests: rework cli_test to spawn irccd daemon in a thread, continue #785
David Demelier <markand@malikania.fr>
parents:
662
diff
changeset
|
80 |
739
46a1877749ff
Tests: add irccdctl result code check
David Demelier <markand@malikania.fr>
parents:
738
diff
changeset
|
81 BOOST_TEST(!code); |
736
49b7c7660a00
Tests: use structured bindings in irccdctl
David Demelier <markand@malikania.fr>
parents:
731
diff
changeset
|
82 BOOST_TEST(out.size() == 2U); |
49b7c7660a00
Tests: use structured bindings in irccdctl
David Demelier <markand@malikania.fr>
parents:
731
diff
changeset
|
83 BOOST_TEST(err.size() == 0U); |
49b7c7660a00
Tests: use structured bindings in irccdctl
David Demelier <markand@malikania.fr>
parents:
731
diff
changeset
|
84 BOOST_TEST(out[0] == "v1 : 123"); |
49b7c7660a00
Tests: use structured bindings in irccdctl
David Demelier <markand@malikania.fr>
parents:
731
diff
changeset
|
85 BOOST_TEST(out[1] == "v2 : 456"); |
662
e9153b85b9bd
Tests: test irccdctl (plugin-* commands) #785
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
86 } |
e9153b85b9bd
Tests: test irccdctl (plugin-* commands) #785
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
87 |
745
903415e8ee2e
Tests: add error tests in irccdctl
David Demelier <markand@malikania.fr>
parents:
739
diff
changeset
|
88 BOOST_AUTO_TEST_SUITE(errors) |
903415e8ee2e
Tests: add error tests in irccdctl
David Demelier <markand@malikania.fr>
parents:
739
diff
changeset
|
89 |
903415e8ee2e
Tests: add error tests in irccdctl
David Demelier <markand@malikania.fr>
parents:
739
diff
changeset
|
90 BOOST_AUTO_TEST_CASE(invalid_identifier) |
903415e8ee2e
Tests: add error tests in irccdctl
David Demelier <markand@malikania.fr>
parents:
739
diff
changeset
|
91 { |
903415e8ee2e
Tests: add error tests in irccdctl
David Demelier <markand@malikania.fr>
parents:
739
diff
changeset
|
92 start(); |
903415e8ee2e
Tests: add error tests in irccdctl
David Demelier <markand@malikania.fr>
parents:
739
diff
changeset
|
93 |
903415e8ee2e
Tests: add error tests in irccdctl
David Demelier <markand@malikania.fr>
parents:
739
diff
changeset
|
94 const auto [code, out, err] = exec({ "plugin-config", "+++" }); |
903415e8ee2e
Tests: add error tests in irccdctl
David Demelier <markand@malikania.fr>
parents:
739
diff
changeset
|
95 |
903415e8ee2e
Tests: add error tests in irccdctl
David Demelier <markand@malikania.fr>
parents:
739
diff
changeset
|
96 BOOST_TEST(code); |
903415e8ee2e
Tests: add error tests in irccdctl
David Demelier <markand@malikania.fr>
parents:
739
diff
changeset
|
97 BOOST_TEST(out.size() == 0U); |
903415e8ee2e
Tests: add error tests in irccdctl
David Demelier <markand@malikania.fr>
parents:
739
diff
changeset
|
98 BOOST_TEST(err.size() == 1U); |
903415e8ee2e
Tests: add error tests in irccdctl
David Demelier <markand@malikania.fr>
parents:
739
diff
changeset
|
99 BOOST_TEST(err[0] == "abort: invalid plugin identifier"); |
903415e8ee2e
Tests: add error tests in irccdctl
David Demelier <markand@malikania.fr>
parents:
739
diff
changeset
|
100 } |
903415e8ee2e
Tests: add error tests in irccdctl
David Demelier <markand@malikania.fr>
parents:
739
diff
changeset
|
101 |
903415e8ee2e
Tests: add error tests in irccdctl
David Demelier <markand@malikania.fr>
parents:
739
diff
changeset
|
102 BOOST_AUTO_TEST_CASE(not_found) |
903415e8ee2e
Tests: add error tests in irccdctl
David Demelier <markand@malikania.fr>
parents:
739
diff
changeset
|
103 { |
903415e8ee2e
Tests: add error tests in irccdctl
David Demelier <markand@malikania.fr>
parents:
739
diff
changeset
|
104 start(); |
903415e8ee2e
Tests: add error tests in irccdctl
David Demelier <markand@malikania.fr>
parents:
739
diff
changeset
|
105 |
903415e8ee2e
Tests: add error tests in irccdctl
David Demelier <markand@malikania.fr>
parents:
739
diff
changeset
|
106 const auto [code, out, err] = exec({ "plugin-config", "unknown" }); |
903415e8ee2e
Tests: add error tests in irccdctl
David Demelier <markand@malikania.fr>
parents:
739
diff
changeset
|
107 |
903415e8ee2e
Tests: add error tests in irccdctl
David Demelier <markand@malikania.fr>
parents:
739
diff
changeset
|
108 BOOST_TEST(code); |
903415e8ee2e
Tests: add error tests in irccdctl
David Demelier <markand@malikania.fr>
parents:
739
diff
changeset
|
109 BOOST_TEST(out.size() == 0U); |
903415e8ee2e
Tests: add error tests in irccdctl
David Demelier <markand@malikania.fr>
parents:
739
diff
changeset
|
110 BOOST_TEST(err.size() == 1U); |
903415e8ee2e
Tests: add error tests in irccdctl
David Demelier <markand@malikania.fr>
parents:
739
diff
changeset
|
111 BOOST_TEST(err[0] == "abort: plugin not found"); |
903415e8ee2e
Tests: add error tests in irccdctl
David Demelier <markand@malikania.fr>
parents:
739
diff
changeset
|
112 } |
903415e8ee2e
Tests: add error tests in irccdctl
David Demelier <markand@malikania.fr>
parents:
739
diff
changeset
|
113 |
903415e8ee2e
Tests: add error tests in irccdctl
David Demelier <markand@malikania.fr>
parents:
739
diff
changeset
|
114 BOOST_AUTO_TEST_SUITE_END() |
903415e8ee2e
Tests: add error tests in irccdctl
David Demelier <markand@malikania.fr>
parents:
739
diff
changeset
|
115 |
662
e9153b85b9bd
Tests: test irccdctl (plugin-* commands) #785
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
116 BOOST_AUTO_TEST_SUITE_END() |
e9153b85b9bd
Tests: test irccdctl (plugin-* commands) #785
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
117 |
722
3e816cebed2c
Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents:
678
diff
changeset
|
118 } // !namespace |
3e816cebed2c
Irccd: make plugin pure abstract, closes #796 @3h
David Demelier <markand@malikania.fr>
parents:
678
diff
changeset
|
119 |
760
35c1517d705d
Tests: make consistency
David Demelier <markand@malikania.fr>
parents:
758
diff
changeset
|
120 } // !irccd |