a9b3a3b3a5
* fix(tunnel): pass /absolute/path/to/tor to cretz/bine It seems cretz/bine is not aware of https://blog.golang.org/path-security for now. I am planning to send over a diff for that later today. In the meanwhile, do the right thing here, and make sure that we obtain the absolute path to the tor binary before we continue. This work is part of https://github.com/ooni/probe-engine/issues/283. * fix tests when tor is not installed
53 lines
1.1 KiB
Go
53 lines
1.1 KiB
Go
package tunnel_test
|
|
|
|
import (
|
|
"context"
|
|
"io/ioutil"
|
|
"testing"
|
|
|
|
"github.com/apex/log"
|
|
"github.com/ooni/probe-cli/v3/internal/engine"
|
|
"github.com/ooni/probe-cli/v3/internal/engine/tunnel"
|
|
"golang.org/x/sys/execabs"
|
|
)
|
|
|
|
func TestTorStartStop(t *testing.T) {
|
|
if testing.Short() {
|
|
t.Skip("skip test in short mode")
|
|
}
|
|
torBinaryPath, err := execabs.LookPath("tor")
|
|
if err != nil {
|
|
t.Skip("missing precondition for the test: tor not in PATH")
|
|
}
|
|
tunnelDir, err := ioutil.TempDir("testdata", "tor")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
ctx := context.Background()
|
|
sess, err := engine.NewSession(ctx, engine.SessionConfig{
|
|
Logger: log.Log,
|
|
SoftwareName: "miniooni",
|
|
SoftwareVersion: "0.1.0-dev",
|
|
TunnelDir: tunnelDir,
|
|
})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
tunnel, err := tunnel.Start(context.Background(), &tunnel.Config{
|
|
Name: "tor",
|
|
Session: sess,
|
|
TorBinary: torBinaryPath,
|
|
TunnelDir: tunnelDir,
|
|
})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if tunnel.SOCKS5ProxyURL() == nil {
|
|
t.Fatal("expected non nil URL here")
|
|
}
|
|
if tunnel.BootstrapTime() <= 0 {
|
|
t.Fatal("expected positive bootstrap time here")
|
|
}
|
|
tunnel.Stop()
|
|
}
|