]> git.proxmox.com Git - systemd.git/blob - src/libsystemd/sd-bus/test-bus-address.c
New upstream version 240
[systemd.git] / src / libsystemd / sd-bus / test-bus-address.c
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
8 static void test_one_address(sd_bus *b,
9 const char *host,
10 int result, const char *expected) {
11 int r;
12
13 r = bus_set_address_system_remote(b, host);
14 log_info("\"%s\" → %d, \"%s\"", host, r, strna(r >= 0 ? b->address : NULL));
15 if (result < 0 || expected) {
16 assert(r == result);
17 if (r >= 0)
18 assert_se(streq(b->address, expected));
19 }
20 }
21
22 static void test_bus_set_address_system_remote(char **args) {
23 _cleanup_(sd_bus_unrefp) sd_bus *b = NULL;
24
25 assert_se(sd_bus_new(&b) >= 0);
26 if (!strv_isempty(args)) {
27 char **a;
28 STRV_FOREACH(a, args)
29 test_one_address(b, *a, 0, NULL);
30 return;
31 };
32
33 test_one_address(b, "host",
34 0, "unixexec:path=ssh,argv1=-xT,argv2=--,argv3=host,argv4=systemd-stdio-bridge");
35 test_one_address(b, "host:123",
36 0, "unixexec:path=ssh,argv1=-xT,argv2=-p,argv3=123,argv4=--,argv5=host,argv6=systemd-stdio-bridge");
37 test_one_address(b, "host:123:123",
38 -EINVAL, NULL);
39 test_one_address(b, "host:",
40 -EINVAL, NULL);
41 test_one_address(b, "user@host",
42 0, "unixexec:path=ssh,argv1=-xT,argv2=--,argv3=user%40host,argv4=systemd-stdio-bridge");
43 test_one_address(b, "user@host@host",
44 -EINVAL, NULL);
45 test_one_address(b, "[::1]",
46 0, "unixexec:path=ssh,argv1=-xT,argv2=--,argv3=%3a%3a1,argv4=systemd-stdio-bridge");
47 test_one_address(b, "user@[::1]",
48 0, "unixexec:path=ssh,argv1=-xT,argv2=--,argv3=user%40%3a%3a1,argv4=systemd-stdio-bridge");
49 test_one_address(b, "user@[::1]:99",
50 0, "unixexec:path=ssh,argv1=-xT,argv2=-p,argv3=99,argv4=--,argv5=user%40%3a%3a1,argv6=systemd-stdio-bridge");
51 test_one_address(b, "user@[::1]:",
52 -EINVAL, NULL);
53 test_one_address(b, "user@[::1:",
54 -EINVAL, NULL);
55 test_one_address(b, "user@",
56 -EINVAL, NULL);
57 test_one_address(b, "user@@",
58 -EINVAL, NULL);
59 }
60
61 int main(int argc, char *argv[]) {
62 log_set_max_level(LOG_INFO);
63 log_parse_environment();
64 log_open();
65
66 test_bus_set_address_system_remote(argv + 1);
67
68 return 0;
69 }