shark expose: put a local port on the internet through Hammerhead
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
commit
61143d107c
15 files changed
+1538
No files matched your search
@@ -0,0 +1,47 @@
|
||||
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())
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user