-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathauth_authmethod_token_file_test.go
89 lines (75 loc) · 2.46 KB
/
auth_authmethod_token_file_test.go
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
// Copyright 2021 Outreach Corporation. All Rights Reserved.
package vault_client //nolint:revive // Why: We're using - in the name
import (
"context"
"errors"
"os"
"path/filepath"
"strings"
"testing"
)
func TestNewTokenFileAuthMethod(t *testing.T) {
vc, cleanupFn := createTestVaultServer(t, false)
defer cleanupFn()
ctx := context.Background()
rootToken, _, err := vc.opts.am.GetToken(ctx)
if err != nil {
t.Errorf("Failed to get root token: am.GetToken() = %v", err)
return
}
f, err := os.CreateTemp("", "vault-client-root-token-*")
if err != nil {
t.Errorf("Failed to create temp file for root-token: os.CreateTemp() = %v", err)
return
}
defer os.Remove(f.Name())
if _, err = f.WriteString(string(rootToken)); err != nil {
t.Errorf("Failed to write to temp file for root-token: f.Write() = %v", err)
return
}
f.Close() //nolint:errcheck // Why: best effort
fileName := f.Name()
testClient := New(WithAddress(vc.opts.Host), WithTokenFileAuth(&fileName))
tokenInfo, err := testClient.LookupCurrentToken(ctx)
if err != nil {
t.Errorf("Failed to lookup current token: LookupCurrentToken() = %v", err)
return
}
if tokenInfo.ID == "" {
t.Error("LookupToken(): expected resp.ID to have a value")
return
}
if tokenInfo.ID != string(rootToken) {
t.Error("LookupToken(): expected resp.ID to equal root-token")
return
}
}
func TestNewTokenFileAuthMethodReturnsDefault(t *testing.T) {
homeDir, err := os.UserHomeDir()
if err != nil {
t.Errorf("Failed to get current user's homeDir: os.UserHomeDir() = %v", err)
return
}
tokenPath := filepath.Join(homeDir, defaultFileName)
currentTokenContents, err := os.ReadFile(tokenPath)
if err != nil && errors.Is(err, os.ErrNotExist) {
// if we don't have one then we should create one
currentTokenContents = []byte("abcdefg")
if err := os.WriteFile(tokenPath, currentTokenContents, 0o600); err != nil {
t.Errorf("Failed to write user's vault-token: os.WriteFile() = %v", err)
return
}
} else if err != nil {
t.Errorf("Failed to read current user's vault-token: os.ReadFile() = %v", err)
return
}
token, _, err := NewTokenFileAuthMethod(nil).GetToken(context.Background())
if err != nil {
t.Errorf("Failed to read user's vault-token via transport: GetToken() = %v", err)
return
}
if string(token) != strings.TrimSpace(string(currentTokenContents)) {
t.Errorf("Expected GetToken to return same token as existed in default file, '%s' != '%s'", token, currentTokenContents)
return
}
}