Skip to content

Commit 6ef4e9c

Browse files
committed
fix uts
1 parent fb5f1d5 commit 6ef4e9c

File tree

9 files changed

+95
-59
lines changed

9 files changed

+95
-59
lines changed

pkg/mounter/oss/ossfs2_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -232,9 +232,9 @@ func TestMakeAuthConfig_ossfs2(t *testing.T) {
232232
wantCfg: &utils.AuthConfig{
233233
AuthType: "",
234234
Secrets: map[string]string{
235-
utils.GetPasswdFileName(OssFs2Type) + "/" + KeyAccessKeyId: "ak-id",
236-
utils.GetPasswdFileName(OssFs2Type) + "/" + KeyAccessKeySecret: "ak-secret",
237-
utils.GetPasswdFileName(OssFs2Type) + "/" + KeySecurityToken: "security-token",
235+
KeyAccessKeyId: "ak-id",
236+
KeyAccessKeySecret: "ak-secret",
237+
KeySecurityToken: "security-token",
238238
},
239239
},
240240
wantErr: false,

pkg/mounter/oss/ossfs_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -353,10 +353,10 @@ func TestMakeAuthConfig_ossfs(t *testing.T) {
353353
expectedConfig: &utils.AuthConfig{
354354
AuthType: "",
355355
Secrets: map[string]string{
356-
utils.GetPasswdFileName(OssFsType) + "/" + KeyAccessKeyId: "ak-id",
357-
utils.GetPasswdFileName(OssFsType) + "/" + KeyAccessKeySecret: "ak-secret",
358-
utils.GetPasswdFileName(OssFsType) + "/" + KeySecurityToken: "security-token",
359-
utils.GetPasswdFileName(OssFsType) + "/" + KeyExpiration: "expiration",
356+
KeyAccessKeyId: "ak-id",
357+
KeyAccessKeySecret: "ak-secret",
358+
KeySecurityToken: "security-token",
359+
KeyExpiration: "expiration",
360360
},
361361
},
362362
expectedError: nil,

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

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,12 @@ import (
66
"fmt"
77
"os"
88
"os/exec"
9+
"path/filepath"
910
"sync"
1011
"syscall"
1112
"time"
1213

14+
"github.com/kubernetes-sigs/alibaba-cloud-csi-driver/pkg/mounter/oss"
1315
"github.com/kubernetes-sigs/alibaba-cloud-csi-driver/pkg/mounter/proxy"
1416
"github.com/kubernetes-sigs/alibaba-cloud-csi-driver/pkg/mounter/proxy/server"
1517
"github.com/kubernetes-sigs/alibaba-cloud-csi-driver/pkg/mounter/utils"
@@ -141,9 +143,18 @@ func (h *Driver) Mount(ctx context.Context, req *proxy.MountRequest) error {
141143
}
142144

143145
func (h *Driver) RotateToken(ctx context.Context, req *proxy.RotateTokenRequest) error {
146+
// no need to rotate if there is no token in request
147+
if req.Secrets == nil {
148+
return nil
149+
}
150+
if token := req.Secrets[oss.KeySecurityToken]; token == "" {
151+
return nil
152+
}
153+
144154
// prepare passwd file
145155
hashDir := utils.GetPasswdHashDir(req.Target)
146-
rotated, err := rotateTokenFiles(hashDir, req.Secrets)
156+
tokenDir := filepath.Join(hashDir, utils.GetPasswdFileName("ossfs"))
157+
rotated, err := rotateTokenFiles(tokenDir, req.Secrets)
147158
if err != nil {
148159
return fmt.Errorf("rotate token files failed: %w", err)
149160
}

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: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,12 @@ import (
66
"fmt"
77
"os"
88
"os/exec"
9+
"path/filepath"
910
"sync"
1011
"syscall"
1112
"time"
1213

14+
"github.com/kubernetes-sigs/alibaba-cloud-csi-driver/pkg/mounter/oss"
1315
"github.com/kubernetes-sigs/alibaba-cloud-csi-driver/pkg/mounter/proxy"
1416
"github.com/kubernetes-sigs/alibaba-cloud-csi-driver/pkg/mounter/proxy/server"
1517
"github.com/kubernetes-sigs/alibaba-cloud-csi-driver/pkg/mounter/utils"
@@ -148,9 +150,18 @@ func (h *Driver) Mount(ctx context.Context, req *proxy.MountRequest) error {
148150
}
149151

150152
func (h *Driver) RotateToken(ctx context.Context, req *proxy.RotateTokenRequest) error {
153+
// no need to rotate if there is no token in request
154+
if req.Secrets == nil {
155+
return nil
156+
}
157+
if token := req.Secrets[oss.KeySecurityToken]; token == "" {
158+
return nil
159+
}
160+
151161
// prepare passwd file
152162
hashDir := utils.GetPasswdHashDir(req.Target)
153-
rotated, err := rotateTokenFiles(hashDir, req.Secrets)
163+
tokenDir := filepath.Join(hashDir, utils.GetPasswdFileName("ossfs2"))
164+
rotated, err := rotateTokenFiles(tokenDir, req.Secrets)
154165
if err != nil {
155166
return fmt.Errorf("rotate token files failed: %w", err)
156167
}

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
}

pkg/oss/utils_test.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -689,7 +689,6 @@ func Test_checkOssOptions(t *testing.T) {
689689
},
690690
errType: nil,
691691
},
692-
{},
693692
}
694693
for _, tt := range tests {
695694
t.Run(tt.name, func(t *testing.T) {

0 commit comments

Comments
 (0)