1package nettests
2
3import (
4	"context"
5	"io/ioutil"
6	"path"
7	"testing"
8
9	"github.com/ooni/probe-cli/v3/cmd/ooniprobe/internal/database"
10	"github.com/ooni/probe-cli/v3/cmd/ooniprobe/internal/ooni"
11)
12
13func copyfile(source, dest string) error {
14	data, err := ioutil.ReadFile(source)
15	if err != nil {
16		return err
17	}
18	return ioutil.WriteFile(dest, data, 0600)
19}
20
21func newOONIProbe(t *testing.T) *ooni.Probe {
22	homePath, err := ioutil.TempDir("", "ooniprobetests")
23	if err != nil {
24		t.Fatal(err)
25	}
26	configPath := path.Join(homePath, "config.json")
27	testingConfig := path.Join("..", "..", "testdata", "testing-config.json")
28	if err := copyfile(testingConfig, configPath); err != nil {
29		t.Fatal(err)
30	}
31	probe := ooni.NewProbe(configPath, homePath)
32	swName := "ooniprobe-cli-tests"
33	swVersion := "3.0.0-alpha"
34	err = probe.Init(swName, swVersion)
35	if err != nil {
36		t.Fatal(err)
37	}
38	return probe
39}
40
41func TestCreateContext(t *testing.T) {
42	newOONIProbe(t)
43}
44
45func TestRun(t *testing.T) {
46	probe := newOONIProbe(t)
47	sess, err := probe.NewSession(context.Background())
48	if err != nil {
49		t.Fatal(err)
50	}
51	network, err := database.CreateNetwork(probe.DB(), sess)
52	if err != nil {
53		t.Fatal(err)
54	}
55	res, err := database.CreateResult(probe.DB(), probe.Home(), "middlebox", network.ID)
56	if err != nil {
57		t.Fatal(err)
58	}
59	nt := HTTPInvalidRequestLine{}
60	ctl := NewController(nt, probe, res, sess)
61	nt.Run(ctl)
62}
63