48 lines
1.4 KiB
Go
48 lines
1.4 KiB
Go
package cli
|
|
|
|
import (
|
|
"bytes"
|
|
"context"
|
|
"fmt"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestTarget(t *testing.T) {
|
|
for in, want := range map[string]string{"3000": "127.0.0.1:3000", ":8080": "127.0.0.1:8080", "db.lan:5432": "db.lan:5432", "[::1]:80": "::1:80"} {
|
|
h, p, err := target(in)
|
|
if err != nil || fmt.Sprintf("%s:%d", h, p) != want {
|
|
t.Errorf("%q -> %s:%d, %v", in, h, p, err)
|
|
}
|
|
}
|
|
for _, bad := range []string{"", "abc", "0", "70000", "host:"} {
|
|
if _, _, err := target(bad); err == nil {
|
|
t.Errorf("%q accepted", bad)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestUsageErrors(t *testing.T) {
|
|
t.Setenv("SHARK_CONFIG", t.TempDir()+"/none.json")
|
|
t.Setenv("SHARK_HAMMERHEAD", "")
|
|
t.Setenv("SHARK_TOKEN", "")
|
|
for name, args := range map[string][]string{
|
|
"no command": {},
|
|
"unknown": {"fly"},
|
|
"no port": {"expose"},
|
|
"bad port": {"expose", "abc"},
|
|
"bad proto": {"expose", "udp", "5"},
|
|
"tcp password": {"expose", "tcp", "5", "--password", "secret1"},
|
|
"not signed in": {"expose", "3000"},
|
|
} {
|
|
var out, errb bytes.Buffer
|
|
if code := Run(context.Background(), args, &out, &errb); code == 0 {
|
|
t.Errorf("%s: exit 0", name)
|
|
}
|
|
}
|
|
var out, errb bytes.Buffer
|
|
if code := Run(context.Background(), []string{"expose", "3000"}, &out, &errb); code == 0 || !strings.Contains(errb.String(), "shark login") {
|
|
t.Errorf("signed-out hint missing: %q", errb.String())
|
|
}
|
|
}
|