urlgetter: fix tunnel test (#299)

* urlgetter: fix tunnel test

This diff fixes the urlgetter test suite to make sure we
are correctly testing for tunnel creation.

While there, improve the way in which we create a testing
directory and add a test for that.

Part of https://github.com/ooni/probe/issues/985.

* fix comment

* fix comment
This commit is contained in:
Simone Basso
2021-04-05 18:25:43 +02:00
committed by GitHub
parent 973501dd11
commit 6aa2551c43
5 changed files with 847 additions and 751 deletions
+13
View File
@@ -40,6 +40,16 @@ func (t *fakeTunnel) SOCKS5ProxyURL() *url.URL {
// fakeStart starts the fake tunnel.
func fakeStart(ctx context.Context, config *Config) (Tunnel, error) {
// do the same things other tunnels do:
//
// 1. abort if context is cancelled
//
// 2. check for tunnelDir being not empty
//
// 3. attempt to create tunnelDir
//
// after that, it's all fake and we just create a simple
// socks5 server that we can use
select {
case <-ctx.Done():
return nil, ctx.Err() // simplifies unit testing this code
@@ -48,6 +58,9 @@ func fakeStart(ctx context.Context, config *Config) (Tunnel, error) {
if config.TunnelDir == "" {
return nil, ErrEmptyTunnelDir
}
if err := config.mkdirAll(config.TunnelDir, 0700); err != nil {
return nil, err
}
server, err := config.socks5New(&socks5.Config{})
if err != nil {
return nil, err
+20
View File
@@ -4,6 +4,7 @@ import (
"context"
"errors"
"net"
"os"
"testing"
"github.com/armon/go-socks5"
@@ -41,6 +42,25 @@ func TestFakeWithEmptyTunnelDir(t *testing.T) {
}
}
func TestFakeWithFailingMkdirAll(t *testing.T) {
expected := errors.New("mocked error")
ctx := context.Background()
sess := &mockable.Session{}
tunnel, err := fakeStart(ctx, &Config{
Session: sess,
TunnelDir: "testdata",
testMkdirAll: func(dir string, mode os.FileMode) error {
return expected
},
})
if !errors.Is(err, expected) {
t.Fatal("not the error we expected")
}
if tunnel != nil {
t.Fatal("expected nil tunnel here")
}
}
func TestFakeSocks5NewFails(t *testing.T) {
expected := errors.New("mocked error")
ctx := context.Background()