Branch data Line data Source code
1 : : #include "sd-bus.h"
2 : :
3 : : #include "bus-internal.h"
4 : : #include "log.h"
5 : : #include "string-util.h"
6 : : #include "strv.h"
7 : : #include "tests.h"
8 : :
9 : 52 : static void test_one_address(sd_bus *b,
10 : : const char *host,
11 : : int result, const char *expected) {
12 : : int r;
13 : :
14 : 52 : r = bus_set_address_system_remote(b, host);
15 [ + - + + ]: 52 : log_info("\"%s\" → %d, \"%s\"", host, r, strna(r >= 0 ? b->address : NULL));
16 [ + + + - ]: 52 : if (result < 0 || expected) {
17 [ - + ]: 52 : assert(r == result);
18 [ + + ]: 52 : if (r >= 0)
19 [ - + ]: 24 : assert_se(streq(b->address, expected));
20 : : }
21 : 52 : }
22 : :
23 : 4 : static void test_bus_set_address_system_remote(char **args) {
24 [ + - ]: 4 : _cleanup_(sd_bus_unrefp) sd_bus *b = NULL;
25 : :
26 [ - + ]: 4 : assert_se(sd_bus_new(&b) >= 0);
27 [ - + ]: 4 : if (!strv_isempty(args)) {
28 : : char **a;
29 [ # # # # ]: 0 : STRV_FOREACH(a, args)
30 : 0 : test_one_address(b, *a, 0, NULL);
31 : 0 : return;
32 : : };
33 : :
34 : 4 : test_one_address(b, "host",
35 : : 0, "unixexec:path=ssh,argv1=-xT,argv2=--,argv3=host,argv4=systemd-stdio-bridge");
36 : 4 : test_one_address(b, "host:123",
37 : : 0, "unixexec:path=ssh,argv1=-xT,argv2=-p,argv3=123,argv4=--,argv5=host,argv6=systemd-stdio-bridge");
38 : 4 : test_one_address(b, "host:123:123",
39 : : -EINVAL, NULL);
40 : 4 : test_one_address(b, "host:",
41 : : -EINVAL, NULL);
42 : 4 : test_one_address(b, "user@host",
43 : : 0, "unixexec:path=ssh,argv1=-xT,argv2=--,argv3=user%40host,argv4=systemd-stdio-bridge");
44 : 4 : test_one_address(b, "user@host@host",
45 : : -EINVAL, NULL);
46 : 4 : test_one_address(b, "[::1]",
47 : : 0, "unixexec:path=ssh,argv1=-xT,argv2=--,argv3=%3a%3a1,argv4=systemd-stdio-bridge");
48 : 4 : test_one_address(b, "user@[::1]",
49 : : 0, "unixexec:path=ssh,argv1=-xT,argv2=--,argv3=user%40%3a%3a1,argv4=systemd-stdio-bridge");
50 : 4 : test_one_address(b, "user@[::1]:99",
51 : : 0, "unixexec:path=ssh,argv1=-xT,argv2=-p,argv3=99,argv4=--,argv5=user%40%3a%3a1,argv6=systemd-stdio-bridge");
52 : 4 : test_one_address(b, "user@[::1]:",
53 : : -EINVAL, NULL);
54 : 4 : test_one_address(b, "user@[::1:",
55 : : -EINVAL, NULL);
56 : 4 : test_one_address(b, "user@",
57 : : -EINVAL, NULL);
58 : 4 : test_one_address(b, "user@@",
59 : : -EINVAL, NULL);
60 : : }
61 : :
62 : 4 : int main(int argc, char *argv[]) {
63 : 4 : test_setup_logging(LOG_INFO);
64 : :
65 : 4 : test_bus_set_address_system_remote(argv + 1);
66 : :
67 : 4 : return 0;
68 : : }
|