Skip to content

Commit 1f4c2a9

Browse files
committed
add unit tests
1 parent fb69dd5 commit 1f4c2a9

File tree

1 file changed

+124
-0
lines changed

1 file changed

+124
-0
lines changed

internal/file/file_manager_service_test.go

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

325+
func TestFileManagerService_validateAndFixPermissions(t *testing.T) {
326+
ctx := context.Background()
327+
fileManagerService := NewFileManagerService(nil, types.AgentConfig(), &sync.RWMutex{})
328+
329+
tempDir := t.TempDir()
330+
execFile := helpers.CreateFileWithErrorCheck(t, tempDir, "exec.conf")
331+
defer helpers.RemoveFileWithErrorCheck(t, execFile.Name())
332+
333+
normalFile := helpers.CreateFileWithErrorCheck(t, tempDir, "normal.conf")
334+
defer helpers.RemoveFileWithErrorCheck(t, normalFile.Name())
335+
336+
err := os.Chmod(execFile.Name(), 0o700)
337+
require.NoError(t, err)
338+
err = os.Chmod(normalFile.Name(), 0o600)
339+
require.NoError(t, err)
340+
341+
fileList := []*mpi.File{
342+
{
343+
FileMeta: &mpi.FileMeta{
344+
Name: execFile.Name(),
345+
Permissions: "0700",
346+
},
347+
},
348+
{
349+
FileMeta: &mpi.FileMeta{
350+
Name: normalFile.Name(),
351+
Permissions: "0600",
352+
},
353+
},
354+
}
355+
356+
err = fileManagerService.validateAndFixPermissions(ctx, fileList)
357+
358+
require.Error(t, err)
359+
assert.Contains(t, err.Error(), "reset execute permissions for files")
360+
assert.Contains(t, err.Error(), execFile.Name())
361+
362+
info, err := os.Stat(execFile.Name())
363+
require.NoError(t, err)
364+
assert.Equal(t, os.FileMode(0o644), info.Mode().Perm())
365+
366+
info, err = os.Stat(normalFile.Name())
367+
require.NoError(t, err)
368+
assert.Equal(t, os.FileMode(0o600), info.Mode().Perm())
369+
}
370+
371+
func TestFileManagerService_checkFilePermissions(t *testing.T) {
372+
fileManagerService := NewFileManagerService(nil, types.AgentConfig(), &sync.RWMutex{})
373+
374+
tests := []struct {
375+
name string
376+
permissions string
377+
errorMsg string
378+
expectError bool
379+
}{
380+
{
381+
name: "File with read and write permissions for owner",
382+
permissions: "0600",
383+
expectError: false,
384+
},
385+
{
386+
name: "File with read permissions for all",
387+
permissions: "0444",
388+
expectError: false,
389+
},
390+
{
391+
name: "File with read/write and execute permissions for owner",
392+
permissions: "0700",
393+
expectError: true,
394+
errorMsg: "has execute permissions",
395+
},
396+
{
397+
name: "File with execute permission for all",
398+
permissions: "0777",
399+
expectError: true,
400+
errorMsg: "has execute permissions",
401+
},
402+
}
403+
404+
for _, test := range tests {
405+
t.Run(test.name, func(t *testing.T) {
406+
file := &mpi.File{
407+
FileMeta: &mpi.FileMeta{
408+
Name: "test.conf",
409+
Permissions: test.permissions,
410+
},
411+
}
412+
413+
err := fileManagerService.checkFilePermissions(file)
414+
415+
if test.expectError {
416+
require.Error(t, err)
417+
assert.Contains(t, err.Error(), test.errorMsg)
418+
} else {
419+
assert.NoError(t, err)
420+
}
421+
})
422+
}
423+
}
424+
425+
func TestFileManagerService_resetFilePermissions(t *testing.T) {
426+
fileManagerService := NewFileManagerService(nil, types.AgentConfig(), &sync.RWMutex{})
427+
428+
tempDir := t.TempDir()
429+
tempFile := helpers.CreateFileWithErrorCheck(t, tempDir, "test.conf")
430+
defer helpers.RemoveFileWithErrorCheck(t, tempFile.Name())
431+
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(),
438+
},
439+
}
440+
441+
err = fileManagerService.resetFilePermissions(file)
442+
require.NoError(t, err)
443+
444+
info, err := os.Stat(tempFile.Name())
445+
require.NoError(t, err)
446+
assert.Equal(t, os.FileMode(0o644), info.Mode().Perm())
447+
}
448+
325449
func TestFileManagerService_ClearCache(t *testing.T) {
326450
fakeFileServiceClient := &v1fakes.FakeFileServiceClient{}
327451
fileManagerService := NewFileManagerService(fakeFileServiceClient, types.AgentConfig(), &sync.RWMutex{})

0 commit comments

Comments
 (0)