64 lines
2.1 KiB
Go
64 lines
2.1 KiB
Go
|
|
package main
|
||
|
|
|
||
|
|
import (
|
||
|
|
"reflect"
|
||
|
|
"strings"
|
||
|
|
"testing"
|
||
|
|
)
|
||
|
|
|
||
|
|
func TestParseK8sTarget(t *testing.T) {
|
||
|
|
got := parseK8sTarget([]string{"tripit", "-n", "prod", "--pod", "x-123", "-c", "app", "-l", "k=v", "--tail=50", "--", "ls", "-la"})
|
||
|
|
want := k8sTarget{app: "tripit", ns: "prod", pod: "x-123", container: "app", selector: "k=v", rest: []string{"--tail=50", "ls", "-la"}}
|
||
|
|
if !reflect.DeepEqual(got, want) {
|
||
|
|
t.Fatalf("parseK8sTarget =\n %+v\nwant\n %+v", got, want)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestK8sTargetNamespaceDefaultsToApp(t *testing.T) {
|
||
|
|
if ns := parseK8sTarget([]string{"immich"}).namespace(); ns != "immich" {
|
||
|
|
t.Errorf("namespace() = %q, want immich", ns)
|
||
|
|
}
|
||
|
|
if ns := parseK8sTarget([]string{"immich", "-n", "dbaas"}).namespace(); ns != "dbaas" {
|
||
|
|
t.Errorf("namespace() = %q, want dbaas", ns)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestK8sTargetObjectRef(t *testing.T) {
|
||
|
|
if r := parseK8sTarget([]string{"tripit"}).objectRef(); r != "deploy/tripit" {
|
||
|
|
t.Errorf("objectRef() = %q, want deploy/tripit", r)
|
||
|
|
}
|
||
|
|
if r := parseK8sTarget([]string{"tripit", "--pod", "tripit-abc"}).objectRef(); r != "pod/tripit-abc" {
|
||
|
|
t.Errorf("objectRef() = %q, want pod/tripit-abc", r)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestPlanDBExecPostgresDefault(t *testing.T) {
|
||
|
|
p := planDBExec("fire-planner", "", "SELECT 1", false)
|
||
|
|
if p.ns != "dbaas" || p.pod != "pg-cluster-rw" || p.container != "postgres" {
|
||
|
|
t.Fatalf("unexpected pg target: %+v", p)
|
||
|
|
}
|
||
|
|
// db name defaults to the app; SQL passed via -tAc
|
||
|
|
joined := strings.Join(p.argv, " ")
|
||
|
|
if !strings.Contains(joined, "-d fire-planner") || !strings.Contains(joined, "-tAc") {
|
||
|
|
t.Fatalf("pg argv missing db/sql: %v", p.argv)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestPlanDBExecMysqlEnvPassword(t *testing.T) {
|
||
|
|
p := planDBExec("wrongmove", "wrongmove", "SHOW TABLES", true)
|
||
|
|
if p.pod != "mysql-standalone-0" {
|
||
|
|
t.Fatalf("unexpected mysql pod: %+v", p)
|
||
|
|
}
|
||
|
|
inner := strings.Join(p.argv, " ")
|
||
|
|
// password must come from the env var, never inline
|
||
|
|
if !strings.Contains(inner, `-p"$MYSQL_ROOT_PASSWORD"`) {
|
||
|
|
t.Fatalf("mysql must use env password wrapper: %v", p.argv)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestShellQuoteEscapes(t *testing.T) {
|
||
|
|
if got := shellQuote("a'b"); got != `'a'\''b'` {
|
||
|
|
t.Fatalf("shellQuote = %q", got)
|
||
|
|
}
|
||
|
|
}
|