Skip to content

Commit 15ee07c

Browse files
committed
fix uts
1 parent fb5f1d5 commit 15ee07c

File tree

6 files changed

+82
-49
lines changed

6 files changed

+82
-49
lines changed

pkg/mounter/proxy/server/ossfs/driver.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
"syscall"
1111
"time"
1212

13+
"github.com/kubernetes-sigs/alibaba-cloud-csi-driver/pkg/mounter/oss"
1314
"github.com/kubernetes-sigs/alibaba-cloud-csi-driver/pkg/mounter/proxy"
1415
"github.com/kubernetes-sigs/alibaba-cloud-csi-driver/pkg/mounter/proxy/server"
1516
"github.com/kubernetes-sigs/alibaba-cloud-csi-driver/pkg/mounter/utils"
@@ -141,6 +142,14 @@ func (h *Driver) Mount(ctx context.Context, req *proxy.MountRequest) error {
141142
}
142143

143144
func (h *Driver) RotateToken(ctx context.Context, req *proxy.RotateTokenRequest) error {
145+
// no need to rotate if there is no token in request
146+
if req.Secrets == nil {
147+
return nil
148+
}
149+
if token := req.Secrets[oss.KeySecurityToken]; token == "" {
150+
return nil
151+
}
152+
144153
// prepare passwd file
145154
hashDir := utils.GetPasswdHashDir(req.Target)
146155
rotated, err := rotateTokenFiles(hashDir, req.Secrets)

pkg/mounter/proxy/server/ossfs/utils.go

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,8 @@ import (
1212
)
1313

1414
// rotateTokenFiles rotates (or initializes) token files
15+
// This function assumes that token rotation is required when executed
1516
func rotateTokenFiles(dir string, secrets map[string]string) (rotated bool, err error) {
16-
if secrets == nil {
17-
return false, nil
18-
}
19-
// token
2017
var fileUpdate bool
2118
tokenKey := []string{oss.KeyAccessKeyId, oss.KeyAccessKeySecret, oss.KeySecurityToken, oss.KeyExpiration}
2219
for _, key := range tokenKey {

pkg/mounter/proxy/server/ossfs/utils_test.go

Lines changed: 33 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"github.com/kubernetes-sigs/alibaba-cloud-csi-driver/pkg/mounter/oss"
99
"github.com/kubernetes-sigs/alibaba-cloud-csi-driver/pkg/mounter/utils"
1010
"github.com/stretchr/testify/assert"
11+
"github.com/stretchr/testify/require"
1112
"k8s.io/klog/v2"
1213
)
1314

@@ -52,60 +53,73 @@ func TestPrepareCredentialFiles(t *testing.T) {
5253
}
5354
for _, tt := range tests {
5455
t.Run(tt.name, func(t *testing.T) {
55-
56-
file, dir, options, err := prepareCredentialFiles("/tmp/token-files", tt.secrets)
56+
hash := utils.ComputeMountPathHash("/mnt/target1")
57+
file, dir, options, err := prepareCredentialFiles("/mnt/target1", tt.secrets)
5758
assert.Equal(t, tt.wantErr, err != nil)
5859
assert.Equal(t, tt.wantFile, file != "")
5960
assert.Equal(t, tt.wantDir, dir != "")
6061
assert.Equal(t, tt.wantOpts, len(options) != 0)
61-
err = os.RemoveAll("/tmp/token-files")
62-
klog.ErrorS(err, "Remove token directory", "dir", "/tmp/token-files")
62+
err = os.RemoveAll("/tmp/" + hash)
63+
if err != nil {
64+
klog.ErrorS(err, "Remove token directory", "dir", "/tmp/"+hash)
65+
}
6366
})
6467
}
6568

6669
}
6770

6871
func TestRotateTokenFiles(t *testing.T) {
72+
mountPath := "/mnt/target2"
73+
hash := utils.ComputeMountPathHash(mountPath)
74+
hashDir := filepath.Join("/tmp", hash)
75+
err := os.MkdirAll(hashDir, 0o644)
76+
require.NoError(t, err)
77+
6978
// case 1: initialize fiexd AKSK
7079
secrets := map[string]string{OssfsPasswdFile: "testPasswd"}
71-
rotated, err := rotateTokenFiles("/tmp/token-files", secrets)
80+
rotated, err := rotateTokenFiles(hashDir, secrets)
81+
assert.Error(t, err)
7282
assert.Equal(t, false, rotated)
73-
assert.NoError(t, err)
83+
7484
// case 2: initialize token
7585
secrets = map[string]string{
7686
oss.KeyAccessKeyId: "testAKID",
7787
oss.KeyAccessKeySecret: "testAKSecret",
7888
oss.KeyExpiration: "testExpiration",
7989
oss.KeySecurityToken: "testSecurityToken",
8090
}
81-
rotated, err = rotateTokenFiles("/tmp/token-files", secrets)
82-
assert.Equal(t, true, rotated)
91+
rotated, err = rotateTokenFiles(hashDir, secrets)
8392
assert.NoError(t, err)
84-
ak, _ := os.ReadFile(filepath.Join("/tmp/token-files", oss.KeyAccessKeyId))
93+
assert.Equal(t, true, rotated)
94+
ak, _ := os.ReadFile(filepath.Join(hashDir, oss.KeyAccessKeyId))
8595
assert.Equal(t, "testAKID", string(ak))
86-
sk, _ := os.ReadFile(filepath.Join("/tmp/token-files", oss.KeyAccessKeySecret))
96+
sk, _ := os.ReadFile(filepath.Join(hashDir, oss.KeyAccessKeySecret))
8797
assert.Equal(t, "testAKSecret", string(sk))
88-
exp, _ := os.ReadFile(filepath.Join("/tmp/token-files", oss.KeyExpiration))
98+
exp, _ := os.ReadFile(filepath.Join(hashDir, oss.KeyExpiration))
8999
assert.Equal(t, "testExpiration", string(exp))
90-
st, _ := os.ReadFile(filepath.Join("/tmp/token-files", oss.KeySecurityToken))
100+
st, _ := os.ReadFile(filepath.Join(hashDir, oss.KeySecurityToken))
91101
assert.Equal(t, "testSecurityToken", string(st))
102+
92103
// case 3: rotate token
93104
secrets = map[string]string{
94105
oss.KeyAccessKeyId: "newAKID",
95106
oss.KeyAccessKeySecret: "newAKSecret",
96107
oss.KeyExpiration: "newExpiration",
97108
oss.KeySecurityToken: "newSecurityToken",
98109
}
99-
rotated, err = rotateTokenFiles("/tmp/token-files", secrets)
100-
assert.Equal(t, true, rotated)
110+
rotated, err = rotateTokenFiles(hashDir, secrets)
101111
assert.NoError(t, err)
102-
ak, _ = os.ReadFile(filepath.Join("/tmp/token-files", oss.KeyAccessKeyId))
112+
assert.Equal(t, true, rotated)
113+
ak, _ = os.ReadFile(filepath.Join(hashDir, oss.KeyAccessKeyId))
103114
assert.Equal(t, "newAKID", string(ak))
104-
sk, _ = os.ReadFile(filepath.Join("/tmp/token-files", oss.KeyAccessKeySecret))
115+
sk, _ = os.ReadFile(filepath.Join(hashDir, oss.KeyAccessKeySecret))
105116
assert.Equal(t, "newAKSecret", string(sk))
106-
exp, _ = os.ReadFile(filepath.Join("/tmp/token-files", oss.KeyExpiration))
117+
exp, _ = os.ReadFile(filepath.Join(hashDir, oss.KeyExpiration))
107118
assert.Equal(t, "newExpiration", string(exp))
108-
st, _ = os.ReadFile(filepath.Join("/tmp/token-files", oss.KeySecurityToken))
119+
st, _ = os.ReadFile(filepath.Join(hashDir, oss.KeySecurityToken))
109120
assert.Equal(t, "newSecurityToken", string(st))
110-
os.RemoveAll("/tmp/token-files")
121+
err = os.RemoveAll(hashDir)
122+
if err != nil {
123+
t.Errorf("removeall hashdir failed %v", err)
124+
}
111125
}

pkg/mounter/proxy/server/ossfs2/driver.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
"syscall"
1111
"time"
1212

13+
"github.com/kubernetes-sigs/alibaba-cloud-csi-driver/pkg/mounter/oss"
1314
"github.com/kubernetes-sigs/alibaba-cloud-csi-driver/pkg/mounter/proxy"
1415
"github.com/kubernetes-sigs/alibaba-cloud-csi-driver/pkg/mounter/proxy/server"
1516
"github.com/kubernetes-sigs/alibaba-cloud-csi-driver/pkg/mounter/utils"
@@ -148,6 +149,14 @@ func (h *Driver) Mount(ctx context.Context, req *proxy.MountRequest) error {
148149
}
149150

150151
func (h *Driver) RotateToken(ctx context.Context, req *proxy.RotateTokenRequest) error {
152+
// no need to rotate if there is no token in request
153+
if req.Secrets == nil {
154+
return nil
155+
}
156+
if token := req.Secrets[oss.KeySecurityToken]; token == "" {
157+
return nil
158+
}
159+
151160
// prepare passwd file
152161
hashDir := utils.GetPasswdHashDir(req.Target)
153162
rotated, err := rotateTokenFiles(hashDir, req.Secrets)

pkg/mounter/proxy/server/ossfs2/utils.go

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,8 @@ import (
1212
)
1313

1414
// rotateTokenFiles rotates (or initializes) token files
15+
// This function assumes that token rotation is required when executed
1516
func rotateTokenFiles(dir string, secrets map[string]string) (rotated bool, err error) {
16-
if secrets == nil {
17-
return false, nil
18-
}
19-
// tokem
2017
var fileUpdate bool
2118
tokenKey := []string{oss.KeyAccessKeyId, oss.KeyAccessKeySecret, oss.KeySecurityToken}
2219
for _, key := range tokenKey {

pkg/mounter/proxy/server/ossfs2/utils_test.go

Lines changed: 29 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"github.com/kubernetes-sigs/alibaba-cloud-csi-driver/pkg/mounter/oss"
99
"github.com/kubernetes-sigs/alibaba-cloud-csi-driver/pkg/mounter/utils"
1010
"github.com/stretchr/testify/assert"
11+
"github.com/stretchr/testify/require"
1112
"k8s.io/klog/v2"
1213
)
1314

@@ -51,27 +52,33 @@ func TestPrepareCredentialFiles(t *testing.T) {
5152
}
5253
for _, tt := range tests {
5354
t.Run(tt.name, func(t *testing.T) {
54-
55-
file, dir, options, err := prepareCredentialFiles("/tmp/token-files", tt.secrets)
55+
hash := utils.ComputeMountPathHash("/mnt/target2")
56+
file, dir, options, err := prepareCredentialFiles("/mnt/target2", tt.secrets)
5657
assert.Equal(t, tt.wantErr, err != nil)
5758
assert.Equal(t, tt.wantFile, file != "")
5859
assert.Equal(t, tt.wantDir, dir != "")
5960
assert.Equal(t, tt.wantOpts, len(options) != 0)
60-
err = os.RemoveAll("/tmp/token-files")
61-
klog.ErrorS(err, "Remove token directory", "dir", "/tmp/token-files")
61+
err = os.RemoveAll("/tmp/" + hash)
62+
if err != nil {
63+
klog.ErrorS(err, "Remove token directory", "dir", "/tmp/"+hash)
64+
}
6265
})
6366
}
6467

6568
}
6669

6770
func TestRotateTokenFiles(t *testing.T) {
71+
mountPath := "/mnt/target2"
72+
hash := utils.ComputeMountPathHash(mountPath)
73+
hashDir := filepath.Join("/tmp", hash)
74+
err := os.MkdirAll(hashDir, 0o644)
75+
require.NoError(t, err)
76+
6877
// case 1: initialize fiexd AKSK
6978
secrets := map[string]string{OssfsPasswdFile: "testPasswd"}
70-
rotated, err := rotateTokenFiles("/tmp/token-files", secrets)
79+
rotated, err := rotateTokenFiles(hashDir, secrets)
80+
assert.Error(t, err)
7181
assert.False(t, rotated)
72-
assert.NoError(t, err)
73-
err = os.RemoveAll("/tmp/token-files")
74-
klog.ErrorS(err, "Remove token directory", "dir", "/tmp/token-files")
7582

7683
// case 2: initialize token
7784
secrets = map[string]string{
@@ -80,17 +87,15 @@ func TestRotateTokenFiles(t *testing.T) {
8087
oss.KeyExpiration: "testExpiration",
8188
oss.KeySecurityToken: "testSecurityToken",
8289
}
83-
rotated, err = rotateTokenFiles("/tmp/token-files", secrets)
84-
assert.True(t, rotated)
90+
rotated, err = rotateTokenFiles(hashDir, secrets)
8591
assert.NoError(t, err)
86-
ak, _ := os.ReadFile(filepath.Join("/tmp/token-files", oss.KeyAccessKeyId))
92+
assert.True(t, rotated)
93+
ak, _ := os.ReadFile(filepath.Join(hashDir, oss.KeyAccessKeyId))
8794
assert.Equal(t, "testAKID", string(ak))
88-
sk, _ := os.ReadFile(filepath.Join("/tmp/token-files", oss.KeyAccessKeySecret))
95+
sk, _ := os.ReadFile(filepath.Join(hashDir, oss.KeyAccessKeySecret))
8996
assert.Equal(t, "testAKSecret", string(sk))
90-
st, _ := os.ReadFile(filepath.Join("/tmp/token-files", oss.KeySecurityToken))
97+
st, _ := os.ReadFile(filepath.Join(hashDir, oss.KeySecurityToken))
9198
assert.Equal(t, "testSecurityToken", string(st))
92-
err = os.RemoveAll("/tmp/token-files")
93-
klog.ErrorS(err, "Remove token directory", "dir", "/tmp/token-files")
9499

95100
// case 3: rotate token
96101
secrets = map[string]string{
@@ -99,15 +104,17 @@ func TestRotateTokenFiles(t *testing.T) {
99104
oss.KeyExpiration: "newExpiration",
100105
oss.KeySecurityToken: "newSecurityToken",
101106
}
102-
rotated, err = rotateTokenFiles("/tmp/token-files", secrets)
103-
assert.True(t, rotated)
107+
rotated, err = rotateTokenFiles(hashDir, secrets)
104108
assert.NoError(t, err)
105-
ak, _ = os.ReadFile(filepath.Join("/tmp/token-files", oss.KeyAccessKeyId))
109+
assert.True(t, rotated)
110+
ak, _ = os.ReadFile(filepath.Join(hashDir, oss.KeyAccessKeyId))
106111
assert.Equal(t, "newAKID", string(ak))
107-
sk, _ = os.ReadFile(filepath.Join("/tmp/token-files", oss.KeyAccessKeySecret))
112+
sk, _ = os.ReadFile(filepath.Join(hashDir, oss.KeyAccessKeySecret))
108113
assert.Equal(t, "newAKSecret", string(sk))
109-
st, _ = os.ReadFile(filepath.Join("/tmp/token-files", oss.KeySecurityToken))
114+
st, _ = os.ReadFile(filepath.Join(hashDir, oss.KeySecurityToken))
110115
assert.Equal(t, "newSecurityToken", string(st))
111-
os.RemoveAll("/tmp/token-files")
112-
klog.ErrorS(err, "Remove token directory", "dir", "/tmp/token-files")
116+
err = os.RemoveAll(hashDir)
117+
if err != nil {
118+
t.Errorf("removeall hashdir failed %v", err)
119+
}
113120
}

0 commit comments

Comments
 (0)