update TODO
[awesomized/libmemcached] / test / tests / bin / memexist.cpp
1 #include "test/lib/common.hpp"
2 #include "test/lib/Shell.hpp"
3 #include "test/lib/Server.hpp"
4 #include "test/lib/Retry.hpp"
5 #include "test/lib/ReturnMatcher.hpp"
6
7 using Catch::Matchers::Contains;
8
9 TEST_CASE("bin/memexist") {
10 Shell sh{string{TESTING_ROOT "/../src/bin"}};
11
12 SECTION("no servers provided") {
13 string output;
14 REQUIRE_FALSE(sh.run("memexist", output));
15 REQUIRE(output == "No servers provided.\n");
16 }
17
18 SECTION("--help") {
19 string output;
20 REQUIRE(sh.run("memexist --help", output));
21 REQUIRE_THAT(output, Contains("memexist v1"));
22 REQUIRE_THAT(output, Contains("Usage:"));
23 REQUIRE_THAT(output, Contains("key [key ...]"));
24 REQUIRE_THAT(output, Contains("Options:"));
25 REQUIRE_THAT(output, Contains("-h|--help"));
26 REQUIRE_THAT(output, Contains("-V|--version"));
27 REQUIRE_THAT(output, Contains("Environment:"));
28 REQUIRE_THAT(output, Contains("MEMCACHED_SERVERS"));
29 }
30
31 SECTION("with server") {
32 Server server{MEMCACHED_BINARY, {"-p", random_port_string}};
33 MemcachedPtr memc;
34 LoneReturnMatcher test{*memc};
35
36 REQUIRE(server.ensureListening());
37 auto port = get<int>(server.getSocketOrPort());
38 auto comm = "memexist --servers=localhost:" + to_string(port) + " ";
39
40 REQUIRE_SUCCESS(memcached_server_add(*memc, "localhost", port));
41
42 SECTION("found") {
43 REQUIRE_SUCCESS(memcached_set(*memc, S("memexist"), S("MEMEXIST-SET"), 0, 0));
44
45 string output;
46 REQUIRE(sh.run(comm + "memexist", output));
47 REQUIRE(output.empty());
48 }
49
50 SECTION("not found") {
51 memcached_delete(*memc, S("memexist"), 0);
52
53 string output;
54 REQUIRE_FALSE(sh.run(comm + "memexist", output));
55 REQUIRE(output.empty());
56 }
57 }
58 }