Files
shark-expose/internal/cli/cli_test.go
T

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())
}
}