MCPcopy
hub / github.com/runfinch/finch / TestSudoers_Installed

Function TestSudoers_Installed

pkg/dependency/vmnet/sudoers_file_unix_test.go:34–113  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

32}
33
34func TestSudoers_Installed(t *testing.T) {
35 t.Parallel()
36
37 testCases := []struct {
38 name string
39 mockSvc func(t *testing.T, cmd *mocks.Command, mFs afero.Fs, lc *mocks.NerdctlCmdCreator, l *mocks.Logger)
40 want bool
41 }{
42 {
43 name: "happy path",
44 mockSvc: func(t *testing.T, cmd *mocks.Command, mFs afero.Fs, lc *mocks.NerdctlCmdCreator, _ *mocks.Logger) {
45 sudoersData := []byte("test data")
46
47 err := afero.WriteFile(mFs, "/etc/sudoers.d/finch-lima", sudoersData, 0o666)
48 require.NoError(t, err)
49
50 lc.EXPECT().CreateWithoutStdio("sudoers").Return(cmd)
51 cmd.EXPECT().Output().Return(sudoersData, nil)
52 },
53 want: true,
54 },
55 {
56 name: "sudoers path doesn't exist",
57 mockSvc: func(_ *testing.T, _ *mocks.Command, _ afero.Fs, _ *mocks.NerdctlCmdCreator, l *mocks.Logger) {
58 var pathErr fs.PathError
59 pathErr.Op = "open"
60 pathErr.Path = "/etc/sudoers.d/finch-lima"
61 pathErr.Err = errors.New("file does not exist")
62
63 l.EXPECT().Infof("sudoers file not found: %v", &pathErr)
64 },
65 want: false,
66 },
67 {
68 name: "sudoers command throws an error",
69 mockSvc: func(t *testing.T, cmd *mocks.Command, mFs afero.Fs, lc *mocks.NerdctlCmdCreator, l *mocks.Logger) {
70 sudoersData := []byte("test data")
71 wantErr := errors.New("some error")
72
73 err := afero.WriteFile(mFs, "/etc/sudoers.d/finch-lima", sudoersData, 0o666)
74 require.NoError(t, err)
75
76 lc.EXPECT().CreateWithoutStdio("sudoers").Return(cmd)
77 cmd.EXPECT().Output().Return([]byte{}, wantErr)
78 l.EXPECT().Errorf("failed to run lima sudoers command: %v", wantErr)
79 },
80 want: false,
81 },
82 {
83 name: "paths exist, but contents don't match",
84 mockSvc: func(t *testing.T, cmd *mocks.Command, mFs afero.Fs, lc *mocks.NerdctlCmdCreator, _ *mocks.Logger) {
85 sudoersData1 := []byte("test data")
86 sudoersData2 := []byte("different test data")
87
88 err := afero.WriteFile(mFs, "/etc/sudoers.d/finch-lima", sudoersData1, 0o666)
89 require.NoError(t, err)
90
91 lc.EXPECT().CreateWithoutStdio("sudoers").Return(cmd)

Callers

nothing calls this directly

Calls 12

EXPECTMethod · 0.95
EXPECTMethod · 0.95
NewCommandFunction · 0.92
NewLoggerFunction · 0.92
NewNerdctlCmdCreatorFunction · 0.92
newSudoersFileFunction · 0.85
CreateWithoutStdioMethod · 0.65
OutputMethod · 0.65
InfofMethod · 0.65
ErrorfMethod · 0.65
RunMethod · 0.65
InstalledMethod · 0.65

Tested by

no test coverage detected