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