diff --git a/Dockerfile b/Dockerfile index 7d5f10e354..712411db39 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,5 @@ FROM golang:1.14 -RUN "git config --global url.ssh://git@github.com/.insteadOf https://github.com/" - WORKDIR /watchtower COPY . . diff --git a/e2e/cli/cli.go b/e2e/cli/cli.go new file mode 100644 index 0000000000..21e0c2dbbc --- /dev/null +++ b/e2e/cli/cli.go @@ -0,0 +1,21 @@ +package cli + +import ( + "os/exec" +) + +const cmdPath = "/tmp/watchtower" + +func Run(args ...string) ([]byte, error) { + return exec.Command(cmdPath, args...).Output() +} + +func Start(args ...string) (*exec.Cmd, error) { + cmd := exec.Command(cmdPath, args...) + err := cmd.Start() + if err != nil { + return cmd, err + } + + return cmd, nil +} diff --git a/e2e/cli/watchtower b/e2e/cli/watchtower new file mode 100755 index 0000000000..4540a316a1 Binary files /dev/null and b/e2e/cli/watchtower differ diff --git a/e2e/devserver_test.go b/e2e/devserver_test.go new file mode 100644 index 0000000000..ea16ff161f --- /dev/null +++ b/e2e/devserver_test.go @@ -0,0 +1,44 @@ +package main + +import ( + "fmt" + "testing" + "time" + + "github.com/hashicorp/watchtower/e2e/cli" +) + +func TestDevServerStart(t *testing.T) { + cmd, err := cli.Start("dev") + if err != nil { + t.Errorf("err starting in dev mode: '%s'", err.Error()) + } + + go func() { + if err := cmd.Wait(); err != nil { + t.Error(err.Error()) + } + }() + + time.Sleep(3 * time.Second) + if err := cmd.Process.Kill(); err != nil { + t.Errorf("error sending kill to dev server: %s", err.Error()) + } +} + +func TestAuthenticate(t *testing.T) { + serverCmd, err := cli.Start("dev") + if err != nil { + t.Errorf("err starting in dev mode: %s", err.Error()) + } + defer serverCmd.Process.Kill() + time.Sleep(3 * time.Second) + + authCmdOut, err := cli.Run("authenticate", "password", "-name", "test", "-method-id", "am_1234567890") + if err != nil { + t.Errorf("err authenticating: %s", err.Error()) + } + + fmt.Printf("%s\n", authCmdOut) + +} diff --git a/e2e/run.sh b/e2e/run.sh new file mode 100755 index 0000000000..72aa8f86ab --- /dev/null +++ b/e2e/run.sh @@ -0,0 +1,7 @@ +#!/bin/bash +pushd ../ +make dev +cp bin/watchtower /tmp/ +popd + +go test -v diff --git a/go.mod b/go.mod index eedd42f119..e64643fcd8 100644 --- a/go.mod +++ b/go.mod @@ -8,6 +8,7 @@ require ( github.com/alecthomas/repr v0.0.0-20200325044227-4184120f674c // indirect github.com/armon/go-metrics v0.3.3 github.com/bufbuild/buf v0.20.4 + github.com/docker/docker v1.4.2-0.20200319182547-c7ad2b866182 github.com/fatih/color v1.9.0 github.com/fatih/structs v1.1.0 github.com/favadi/protoc-go-inject-tag v1.1.0