...
1 package dbus
2
3 import (
4 "bufio"
5 "io/ioutil"
6 "os"
7 "os/exec"
8 "testing"
9 )
10
11 func TestTcpNonceConnection(t *testing.T) {
12 addr, process := startDaemon(t, `<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
13 "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
14 <busconfig>
15 <type>session</type>
16 <listen>nonce-tcp:</listen>
17 <auth>ANONYMOUS</auth>
18 <allow_anonymous/>
19 <apparmor mode="disabled"/>
20 <policy context="default">
21 <allow send_destination="*" eavesdrop="true"/>
22 <allow eavesdrop="true"/>
23 <allow own="*"/>
24 </policy>
25 </busconfig>
26 `)
27 defer process.Kill()
28
29 conn, err := Connect(addr, WithAuth(AuthAnonymous()))
30 if err != nil {
31 t.Fatal(err)
32 }
33 if err = conn.Close(); err != nil {
34 t.Fatal(err)
35 }
36 }
37
38
39
40 func startDaemon(t *testing.T, config string) (string, *os.Process) {
41 cfg, err := ioutil.TempFile("", "")
42 if err != nil {
43 t.Fatal(err)
44 }
45 defer os.Remove(cfg.Name())
46 if _, err = cfg.Write([]byte(config)); err != nil {
47 t.Fatal(err)
48 }
49
50 cmd := exec.Command("dbus-daemon", "--nofork", "--print-address", "--config-file", cfg.Name())
51 cmd.Stderr = os.Stderr
52 out, err := cmd.StdoutPipe()
53 if err != nil {
54 t.Fatal(err)
55 }
56 if err = cmd.Start(); err != nil {
57 t.Fatal(err)
58 }
59 r := bufio.NewReader(out)
60 l, _, err := r.ReadLine()
61 if err != nil {
62 cmd.Process.Kill()
63 t.Fatal(err)
64 }
65 return string(l), cmd.Process
66 }
67
View as plain text