...

Source file src/github.com/godbus/dbus/v5/transport_nonce_tcp_test.go

Documentation: github.com/godbus/dbus/v5

     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  // startDaemon starts a dbus-daemon instance with the given config
    39  // and returns its address string and underlying process.
    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