@@ -13,6 +13,7 @@ import (
1313 "os"
1414 "path"
1515 "path/filepath"
16+ "strconv"
1617 "sync"
1718 "testing"
1819
@@ -335,7 +336,7 @@ func TestFileManagerService_validateAndFixPermissions(t *testing.T) {
335336
336337 err := os .Chmod (execFile .Name (), 0o700 )
337338 require .NoError (t , err )
338- err = os .Chmod (normalFile .Name (), 0o600 )
339+ err = os .Chmod (normalFile .Name (), 0o620 )
339340 require .NoError (t , err )
340341
341342 fileList := []* mpi.File {
@@ -348,7 +349,7 @@ func TestFileManagerService_validateAndFixPermissions(t *testing.T) {
348349 {
349350 FileMeta : & mpi.FileMeta {
350351 Name : normalFile .Name (),
351- Permissions : "0600 " ,
352+ Permissions : "0620 " ,
352353 },
353354 },
354355 }
@@ -361,11 +362,11 @@ func TestFileManagerService_validateAndFixPermissions(t *testing.T) {
361362
362363 info , err := os .Stat (execFile .Name ())
363364 require .NoError (t , err )
364- assert .Equal (t , os .FileMode (0o644 ), info .Mode ().Perm ())
365+ assert .Equal (t , os .FileMode (0o600 ), info .Mode ().Perm ())
365366
366367 info , err = os .Stat (normalFile .Name ())
367368 require .NoError (t , err )
368- assert .Equal (t , os .FileMode (0o600 ), info .Mode ().Perm ())
369+ assert .Equal (t , os .FileMode (0o620 ), info .Mode ().Perm ())
369370}
370371
371372func TestFileManagerService_checkFilePermissions (t * testing.T ) {
@@ -382,22 +383,17 @@ func TestFileManagerService_checkFilePermissions(t *testing.T) {
382383 permissions : "0600" ,
383384 expectError : false ,
384385 },
385- {
386- name : "File with read permissions for all" ,
387- permissions : "0444" ,
388- expectError : false ,
389- },
390386 {
391387 name : "File with read/write and execute permissions for owner" ,
392388 permissions : "0700" ,
393389 expectError : true ,
394390 errorMsg : "has execute permissions" ,
395391 },
396392 {
397- name : "File with execute permission for all " ,
398- permissions : "0777 " ,
393+ name : "File with malformed permissions " ,
394+ permissions : "abcde " ,
399395 expectError : true ,
400- errorMsg : "has execute permissions" ,
396+ errorMsg : "has malformed permissions" ,
401397 },
402398 }
403399
@@ -424,26 +420,59 @@ func TestFileManagerService_checkFilePermissions(t *testing.T) {
424420
425421func TestFileManagerService_resetFilePermissions (t * testing.T ) {
426422 fileManagerService := NewFileManagerService (nil , types .AgentConfig (), & sync.RWMutex {})
427-
428423 tempDir := t .TempDir ()
429- tempFile := helpers .CreateFileWithErrorCheck (t , tempDir , "test.conf" )
430- defer helpers .RemoveFileWithErrorCheck (t , tempFile .Name ())
431424
432- err := os .Chmod (tempFile .Name (), 0o700 )
433- require .NoError (t , err )
434-
435- file := & mpi.File {
436- FileMeta : & mpi.FileMeta {
437- Name : tempFile .Name (),
425+ tests := []struct {
426+ name string
427+ permissions string
428+ errorMsg string
429+ expectPermissions string
430+ expectError bool
431+ }{
432+ {
433+ name : "File with execute permissions for owner and others" ,
434+ permissions : "0703" ,
435+ expectError : false ,
436+ expectPermissions : "0602" ,
437+ },
438+ {
439+ name : "File with malformed permissions" ,
440+ permissions : "abcde" ,
441+ expectError : true ,
442+ expectPermissions : "0600" ,
443+ errorMsg : "falied to parse file permissions" ,
438444 },
439445 }
440446
441- err = fileManagerService .resetFilePermissions (file )
442- require .NoError (t , err )
447+ for _ , test := range tests {
448+ t .Run (test .name , func (t * testing.T ) {
449+ tempFile := helpers .CreateFileWithErrorCheck (t , tempDir , "test.conf" )
450+ defer helpers .RemoveFileWithErrorCheck (t , tempFile .Name ())
443451
444- info , err := os .Stat (tempFile .Name ())
445- require .NoError (t , err )
446- assert .Equal (t , os .FileMode (0o644 ), info .Mode ().Perm ())
452+ file := & mpi.File {
453+ FileMeta : & mpi.FileMeta {
454+ Name : tempFile .Name (),
455+ Permissions : test .permissions ,
456+ },
457+ }
458+
459+ parseErr := fileManagerService .resetFilePermissions (file )
460+
461+ info , err := os .Stat (tempFile .Name ())
462+ require .NoError (t , err )
463+
464+ actual := "0" + strconv .FormatUint (uint64 (info .Mode ().Perm ()), 8 )
465+
466+ if test .expectError {
467+ require .Error (t , parseErr )
468+ assert .Equal (t , test .expectPermissions , actual )
469+ assert .Contains (t , parseErr .Error (), test .errorMsg )
470+ } else {
471+ require .NoError (t , parseErr )
472+ assert .Equal (t , test .expectPermissions , actual )
473+ }
474+ })
475+ }
447476}
448477
449478func TestFileManagerService_ClearCache (t * testing.T ) {
0 commit comments