Skip to content

Commit c38fdc5

Browse files
committed
refactor validator functions
1 parent 1f146d6 commit c38fdc5

File tree

2 files changed

+23
-40
lines changed

2 files changed

+23
-40
lines changed

internal/file/file_manager_service.go

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ func (fms *FileManagerService) ConfigApply(ctx context.Context,
158158
return model.Error, allowedErr
159159
}
160160

161-
permissionErr := fms.validateAndFixPermissions(ctx, fileOverview.GetFiles())
161+
permissionErr := fms.validateAndUpdateFilePermissions(ctx, fileOverview.GetFiles())
162162
if permissionErr != nil {
163163
return model.RollbackRequired, permissionErr
164164
}
@@ -602,11 +602,10 @@ func (fms *FileManagerService) checkAllowedDirectory(checkFiles []*mpi.File) err
602602
return nil
603603
}
604604

605-
func (fms *FileManagerService) validateAndFixPermissions(ctx context.Context, fileList []*mpi.File) error {
605+
func (fms *FileManagerService) validateAndUpdateFilePermissions(ctx context.Context, fileList []*mpi.File) error {
606606
for _, file := range fileList {
607-
err := fms.checkFilePermissions(file)
608-
if err != nil {
609-
resetErr := fms.resetFilePermissions(ctx, file)
607+
if fms.areExecuteFilePermissionsSet(file) {
608+
resetErr := fms.removeExecuteFilePermissions(ctx, file)
610609
if resetErr != nil {
611610
return fmt.Errorf("failed to reset permissions for %s: %w", file.GetFileMeta().GetName(), resetErr)
612611
}
@@ -616,22 +615,18 @@ func (fms *FileManagerService) validateAndFixPermissions(ctx context.Context, fi
616615
return nil
617616
}
618617

619-
func (fms *FileManagerService) checkFilePermissions(file *mpi.File) error {
618+
func (fms *FileManagerService) areExecuteFilePermissionsSet(file *mpi.File) bool {
620619
filePermission := file.GetFileMeta().GetPermissions()
621620

622621
permissionOctal, err := strconv.ParseUint(filePermission, 8, 32)
623622
if err != nil || len(filePermission) != 4 {
624-
return fmt.Errorf("file %s has malformed permissions", file.GetFileMeta().GetName())
625-
}
626-
627-
if permissionOctal&executePerm > 0 {
628-
return fmt.Errorf("file %s has execute permissions", file.GetFileMeta().GetName())
623+
return false
629624
}
630625

631-
return nil
626+
return permissionOctal&executePerm > 0
632627
}
633628

634-
func (fms *FileManagerService) resetFilePermissions(ctx context.Context, file *mpi.File) error {
629+
func (fms *FileManagerService) removeExecuteFilePermissions(ctx context.Context, file *mpi.File) error {
635630
filePermission := file.GetFileMeta().GetPermissions()
636631

637632
permissionOctal, err := strconv.ParseUint(filePermission, 8, 32)
@@ -645,7 +640,7 @@ func (fms *FileManagerService) resetFilePermissions(ctx context.Context, file *m
645640
file.FileMeta.Permissions = newPermission
646641

647642
slog.DebugContext(ctx, "Permissions have been changed", "file", file.GetFileMeta().GetName(),
648-
"old permissions", filePermission, "new permissions", newPermission)
643+
"old_permissions", filePermission, "new_permissions", newPermission)
649644

650645
return nil
651646
}

internal/file/file_manager_service_test.go

Lines changed: 14 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -322,7 +322,7 @@ func TestFileManagerService_checkAllowedDirectory(t *testing.T) {
322322
require.Error(t, err)
323323
}
324324

325-
func TestFileManagerService_validateAndFixPermissions(t *testing.T) {
325+
func TestFileManagerService_validateAndUpdateFilePermissions(t *testing.T) {
326326
ctx := context.Background()
327327
fileManagerService := NewFileManagerService(nil, types.AgentConfig(), &sync.RWMutex{})
328328

@@ -373,7 +373,7 @@ func TestFileManagerService_validateAndFixPermissions(t *testing.T) {
373373

374374
for _, test := range tests {
375375
t.Run(test.name, func(t *testing.T) {
376-
err := fileManagerService.validateAndFixPermissions(ctx, test.files)
376+
err := fileManagerService.validateAndUpdateFilePermissions(ctx, test.files)
377377
if test.expectError {
378378
require.Error(t, err)
379379
assert.Contains(t, err.Error(), test.errorMsg)
@@ -384,49 +384,43 @@ func TestFileManagerService_validateAndFixPermissions(t *testing.T) {
384384
}
385385
}
386386

387-
func TestFileManagerService_checkFilePermissions(t *testing.T) {
387+
func TestFileManagerService_areExecuteFilePermissionsSet(t *testing.T) {
388388
fileManagerService := NewFileManagerService(nil, types.AgentConfig(), &sync.RWMutex{})
389389

390390
tests := []struct {
391391
name string
392392
permissions string
393-
errorMsg string
394-
expectError bool
393+
expectBool bool
395394
}{
396395
{
397396
name: "Test 1: File with read and write permissions for owner",
398397
permissions: "0600",
399-
expectError: false,
398+
expectBool: false,
400399
},
401400
{
402401
name: "Test 2: File with read/write and execute permissions for owner",
403402
permissions: "0700",
404-
expectError: true,
405-
errorMsg: "has execute permissions",
403+
expectBool: true,
406404
},
407405
{
408406
name: "Test 3: File with read/write and execute permissions for owner and group",
409407
permissions: "0770",
410-
expectError: true,
411-
errorMsg: "has execute permissions",
408+
expectBool: true,
412409
},
413410
{
414411
name: "Test 4: File with read and execute permissions for everyone",
415412
permissions: "0555",
416-
expectError: true,
417-
errorMsg: "has execute permissions",
413+
expectBool: true,
418414
},
419415
{
420416
name: "Test 5: File with malformed permissions",
421417
permissions: "abcde",
422-
expectError: true,
423-
errorMsg: "has malformed permissions",
418+
expectBool: false,
424419
},
425420
{
426421
name: "Test 6: File with invalid permissions",
427422
permissions: "000070",
428-
expectError: true,
429-
errorMsg: "has malformed permissions",
423+
expectBool: false,
430424
},
431425
}
432426

@@ -439,19 +433,13 @@ func TestFileManagerService_checkFilePermissions(t *testing.T) {
439433
},
440434
}
441435

442-
err := fileManagerService.checkFilePermissions(file)
443-
444-
if test.expectError {
445-
require.Error(t, err)
446-
assert.Contains(t, err.Error(), test.errorMsg)
447-
} else {
448-
assert.NoError(t, err)
449-
}
436+
got := fileManagerService.areExecuteFilePermissionsSet(file)
437+
assert.Equal(t, test.expectBool, got)
450438
})
451439
}
452440
}
453441

454-
func TestFileManagerService_resetFilePermissions(t *testing.T) {
442+
func TestFileManagerService_removeExecuteFilePermissions(t *testing.T) {
455443
fileManagerService := NewFileManagerService(nil, types.AgentConfig(), &sync.RWMutex{})
456444

457445
tests := []struct {
@@ -484,7 +472,7 @@ func TestFileManagerService_resetFilePermissions(t *testing.T) {
484472
},
485473
}
486474

487-
parseErr := fileManagerService.resetFilePermissions(t.Context(), file)
475+
parseErr := fileManagerService.removeExecuteFilePermissions(t.Context(), file)
488476

489477
if test.expectError {
490478
require.Error(t, parseErr)

0 commit comments

Comments
 (0)