Simone Basso d57c78bc71
chore: merge probe-engine into probe-cli (#201)
This is how I did it:

1. `git clone https://github.com/ooni/probe-engine internal/engine`

2. ```
(cd internal/engine && git describe --tags)
v0.23.0
```

3. `nvim go.mod` (merging `go.mod` with `internal/engine/go.mod`

4. `rm -rf internal/.git internal/engine/go.{mod,sum}`

5. `git add internal/engine`

6. `find . -type f -name \*.go -exec sed -i 's@/ooni/probe-engine@/ooni/probe-cli/v3/internal/engine@g' {} \;`

7. `go build ./...` (passes)

8. `go test -race ./...` (temporary failure on RiseupVPN)

9. `go mod tidy`

10. this commit message

Once this piece of work is done, we can build a new version of `ooniprobe` that
is using `internal/engine` directly. We need to do more work to ensure all the
other functionality in `probe-engine` (e.g. making mobile packages) are still WAI.

Part of https://github.com/ooni/probe/issues/1335
2021-02-02 12:05:47 +01:00

144 lines
3.4 KiB
Go

package internal_test
import (
"testing"
"github.com/ooni/probe-cli/v3/internal/engine/experiment/tlstool/internal"
"github.com/ooni/probe-cli/v3/internal/engine/internal/randx"
)
func TestSplitter84restSmall(t *testing.T) {
input := []byte("1111222")
output := internal.Splitter84rest(input)
if len(output) != 1 {
t.Fatal("invalid output length")
}
if string(output[0]) != "1111222" {
t.Fatal("invalid output[0]")
}
}
func TestSplitter84restGood(t *testing.T) {
input := []byte("1111222233334")
output := internal.Splitter84rest(input)
if len(output) != 3 {
t.Fatal("invalid output length")
}
if string(output[0]) != "11112222" {
t.Fatal("invalid output[0]")
}
if string(output[1]) != "3333" {
t.Fatal("invalid output[1]")
}
if string(output[2]) != "4" {
t.Fatal("invalid output[2]")
}
}
func TestSplitter3264randSmall(t *testing.T) {
input := randx.Letters(64)
output := internal.Splitter3264rand([]byte(input))
if len(output) != 1 {
t.Fatal("invalid output length")
}
if string(output[0]) != input {
t.Fatal("invalid output[0]")
}
}
func TestSplitter3264Works(t *testing.T) {
input := randx.Letters(65)
output := internal.Splitter3264rand([]byte(input))
for i := 0; i < 32; i++ {
if len(output) != 2 {
t.Fatal("invalid output length")
}
if len(output[0]) < 32 || len(output[0]) > 64 {
t.Fatal("invalid output[0] length")
}
}
}
func TestSNISplitterEasyCase(t *testing.T) {
input := []byte("11112222334555foo.barbar.deadbeef.com6777778888")
sni := []byte("barbar.deadbeef.com")
output := internal.SNISplitter(input, sni)
if len(output) != 9 {
t.Fatal("invalid output length")
}
if string(output[0]) != "11112222334555foo." {
t.Fatal("invalid output[0]")
}
if string(output[1]) != "bar" {
t.Fatal("invalid output[1]")
}
if string(output[2]) != "bar" {
t.Fatal("invalid output[2]")
}
if string(output[3]) != ".de" {
t.Fatal("invalid output[3]")
}
if string(output[4]) != "adb" {
t.Fatal("invalid output[4]")
}
if string(output[5]) != "eef" {
t.Fatal("invalid output[5]")
}
if string(output[6]) != ".co" {
t.Fatal("invalid output[6]")
}
if string(output[7]) != "m" {
t.Fatal("invalid output[7]")
}
if string(output[8]) != "6777778888" {
t.Fatal("invalid output[8]")
}
}
func TestSNISplitterNoMatch(t *testing.T) {
input := []byte("11112222334555foo.barbar.deadbeef.com6777778888")
sni := []byte("www.google.com")
output := internal.SNISplitter(input, sni)
if len(output) != 1 {
t.Fatal("invalid output length")
}
if string(output[0]) != string(input) {
t.Fatal("invalid output[0]")
}
}
func TestSNISplitterWithUnicode(t *testing.T) {
input := []byte("11112222334555你好世界.com6777778888")
sni := []byte("你好世界.com")
output := internal.SNISplitter(input, sni)
t.Log(string(output[2]))
t.Log(output)
if len(output) != 8 {
t.Fatal("invalid output length")
}
if string(output[0]) != "11112222334555" {
t.Fatal("invalid output[0]")
}
if string(output[1]) != "你" {
t.Fatal("invalid output[1]")
}
if string(output[2]) != "好" {
t.Fatal("invalid output[2]")
}
if string(output[3]) != "世" {
t.Fatal("invalid output[3]")
}
if string(output[4]) != "界" {
t.Fatal("invalid output[4]")
}
if string(output[5]) != ".co" {
t.Fatal("invalid output[5]")
}
if string(output[6]) != "m" {
t.Fatal("invalid output[6]")
}
if string(output[7]) != "6777778888" {
t.Fatal("invalid output[7]")
}
}