diff options
Diffstat (limited to 'helper/container_test.go')
| -rw-r--r-- | helper/container_test.go | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/helper/container_test.go b/helper/container_test.go new file mode 100644 index 00000000..4dc88da5 --- /dev/null +++ b/helper/container_test.go @@ -0,0 +1,55 @@ +package helper_test + +import ( + "context" + "io" + "os" + "os/exec" + "testing" + + "git.gensokyo.uk/security/fortify/helper" + "git.gensokyo.uk/security/fortify/internal" + "git.gensokyo.uk/security/fortify/internal/sandbox" +) + +func TestContainer(t *testing.T) { + t.Run("start empty container", func(t *testing.T) { + h := helper.New(context.Background(), "/nonexistent", argsWt, false, argF, nil, nil) + + wantErr := "sandbox: starting an empty container" + if err := h.Start(); err == nil || err.Error() != wantErr { + t.Errorf("Start: error = %v, wantErr %q", + err, wantErr) + } + }) + + t.Run("valid new helper nil check", func(t *testing.T) { + if got := helper.New(context.TODO(), "fortify", argsWt, false, argF, nil, nil); got == nil { + t.Errorf("New(%q, %q) got nil", + argsWt, "fortify") + return + } + }) + + 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.New(ctx, os.Args[0], argsWt, stat, argF, func(container *sandbox.Container) { + setOutput(&container.Stdout, &container.Stderr) + container.CommandContext = func(ctx context.Context) (cmd *exec.Cmd) { + return exec.CommandContext(ctx, os.Args[0], "-test.v", + "-test.run=TestHelperInit", "--", "init") + } + container.Bind("/", "/", 0) + container.Proc("/proc") + container.Dev("/dev") + }, nil) + }) + }) +} + +func TestHelperInit(t *testing.T) { + if len(os.Args) != 5 || os.Args[4] != "init" { + return + } + sandbox.Init(internal.Exit) +} |
