1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
package cli
import (
"flag"
"testing"
"github.com/mimecast/dtail/internal/config"
)
func TestApplyAuthKeyPathCompatibilityLegacyOnly(t *testing.T) {
args := config.Args{}
if warning := ApplyAuthKeyPathCompatibility(&args, "/tmp/legacy.pem", false); warning != "" {
t.Fatalf("unexpected warning: %q", warning)
}
if got, want := args.SSHPrivateKeyFilePath, "/tmp/legacy.pem"; got != want {
t.Fatalf("unexpected auth key path: want %q got %q", want, got)
}
}
func TestApplyAuthKeyPathCompatibilityPrefersExplicitAuthKeyPath(t *testing.T) {
tests := []struct {
name string
args []string
want string
warn bool
}{
{
name: "legacy then auth",
args: []string{"-key", "/tmp/legacy.pem", "-auth-key-path", "/tmp/current.pem"},
want: "/tmp/current.pem",
warn: true,
},
{
name: "auth then legacy",
args: []string{"-auth-key-path", "/tmp/current.pem", "-key", "/tmp/legacy.pem"},
want: "/tmp/current.pem",
warn: true,
},
{
name: "explicit blank auth key path keeps blank",
args: []string{"-key", "/tmp/legacy.pem", "-auth-key-path="},
want: "",
warn: true,
},
}
for _, tc := range tests {
t.Run(tc.name, func(t *testing.T) {
fs := flag.NewFlagSet(t.Name(), flag.ContinueOnError)
var args config.Args
var legacyKey string
BindAuthKeyFlags(fs, &legacyKey, &args)
if err := fs.Parse(tc.args); err != nil {
t.Fatalf("Parse failed: %v", err)
}
var authKeyPathSet bool
fs.Visit(func(f *flag.Flag) {
if f.Name == "auth-key-path" {
authKeyPathSet = true
}
})
warning := ApplyAuthKeyPathCompatibility(&args, legacyKey, authKeyPathSet)
if gotWarn := warning != ""; gotWarn != tc.warn {
t.Fatalf("unexpected warning presence: want %v got %v (%q)", tc.warn, gotWarn, warning)
}
if got, want := args.SSHPrivateKeyFilePath, tc.want; got != want {
t.Fatalf("unexpected auth key path: want %q got %q", want, got)
}
})
}
}
func TestBindAuthKeyFlagsHelpText(t *testing.T) {
fs := flag.NewFlagSet(t.Name(), flag.ContinueOnError)
var args config.Args
var legacyKey string
BindAuthKeyFlags(fs, &legacyKey, &args)
if got, want := fs.Lookup("key").Usage, "Deprecated alias for -auth-key-path"; got != want {
t.Fatalf("unexpected legacy flag help: want %q got %q", want, got)
}
if got, want := fs.Lookup("auth-key-path").Usage, authKeyPathHelpText; got != want {
t.Fatalf("unexpected auth-key-path help: want %q got %q", want, got)
}
if got, want := fs.Lookup("auth-key-path").DefValue, ""; got != want {
t.Fatalf("unexpected auth-key-path default: want %q got %q", want, got)
}
}
|