aboutsummaryrefslogtreecommitdiffhomepage
path: root/helper/bwrap_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'helper/bwrap_test.go')
-rw-r--r--helper/bwrap_test.go127
1 files changed, 0 insertions, 127 deletions
diff --git a/helper/bwrap_test.go b/helper/bwrap_test.go
deleted file mode 100644
index a7804e3f..00000000
--- a/helper/bwrap_test.go
+++ /dev/null
@@ -1,127 +0,0 @@
-package helper_test
-
-import (
- "context"
- "errors"
- "fmt"
- "io"
- "os"
- "os/exec"
- "strings"
- "testing"
- "time"
-
- "git.gensokyo.uk/security/fortify/helper"
- "git.gensokyo.uk/security/fortify/helper/bwrap"
-)
-
-func TestBwrap(t *testing.T) {
- sc := &bwrap.Config{
- Net: true,
- Hostname: "localhost",
- Chdir: "/proc/nonexistent",
- Clearenv: true,
- NewSession: true,
- DieWithParent: true,
- AsInit: true,
- }
-
- t.Run("nonexistent bwrap name", func(t *testing.T) {
- bubblewrapName := helper.BubblewrapName
- helper.BubblewrapName = "/proc/nonexistent"
- t.Cleanup(func() { helper.BubblewrapName = bubblewrapName })
-
- h := helper.MustNewBwrap(
- context.Background(),
- "false",
- argsWt, false,
- argF, nil,
- nil,
- sc, nil,
- )
-
- if err := h.Start(); !errors.Is(err, os.ErrNotExist) {
- t.Errorf("Start: error = %v, wantErr %v",
- err, os.ErrNotExist)
- }
- })
-
- t.Run("valid new helper nil check", func(t *testing.T) {
- if got := helper.MustNewBwrap(
- context.TODO(),
- "false",
- argsWt, false,
- argF, nil,
- nil,
- sc, nil,
- ); got == nil {
- t.Errorf("MustNewBwrap(%#v, %#v, %#v) got nil",
- sc, argsWt, "false")
- return
- }
- })
-
- t.Run("invalid bwrap config new helper panic", func(t *testing.T) {
- defer func() {
- wantPanic := "argument contains null character"
- if r := recover(); r != wantPanic {
- t.Errorf("MustNewBwrap: panic = %q, want %q",
- r, wantPanic)
- }
- }()
-
- helper.MustNewBwrap(
- context.TODO(),
- "false",
- argsWt, false,
- argF, nil,
- nil,
- &bwrap.Config{Hostname: "\x00"}, nil,
- )
- })
-
- t.Run("start without pipes", func(t *testing.T) {
- ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
- defer cancel()
- stdout, stderr := new(strings.Builder), new(strings.Builder)
- h := helper.MustNewBwrap(
- ctx, os.Args[0],
- nil, false,
- argFChecked, func(cmd *exec.Cmd) { cmd.Stdout, cmd.Stderr = stdout, stderr; hijackBwrap(cmd) },
- nil,
- sc, nil,
- )
-
- if err := h.Start(); err != nil {
- t.Errorf("Start: error = %v",
- err)
- return
- }
-
- if err := h.Wait(); err != nil {
- t.Errorf("Wait() err = %v stderr = %s",
- err, stderr)
- }
- })
-
- t.Run("implementation compliance", func(t *testing.T) {
- testHelper(t, func(ctx context.Context, setOutput func(stdoutP, stderrP *io.Writer), stat bool) helper.Helper {
- return helper.MustNewBwrap(
- ctx, os.Args[0],
- argsWt, stat,
- argF, func(cmd *exec.Cmd) { setOutput(&cmd.Stdout, &cmd.Stderr); hijackBwrap(cmd) },
- nil,
- sc, nil,
- )
- })
- })
-}
-
-func hijackBwrap(cmd *exec.Cmd) {
- if cmd.Args[0] != "bwrap" {
- panic(fmt.Sprintf("unexpected argv0 %q", cmd.Args[0]))
- }
- cmd.Err = nil
- cmd.Path = os.Args[0]
- cmd.Args = append([]string{os.Args[0], "-test.run=TestHelperStub", "--"}, cmd.Args...)
-}