github.com/fox-tech/creds-fetcher@v1.0.1-0.20230301132050-327135cfb2af/fsmanager/fsmanager_test.go (about) 1 package fsmanager 2 3 import ( 4 "bytes" 5 "errors" 6 "os" 7 "path/filepath" 8 "testing" 9 ) 10 11 func TestReadFile(t *testing.T) { 12 tempExistingDir := "awstest" 13 tempExistingFile := "testcred" 14 testData := []byte("test aws credentials") 15 16 type args struct { 17 mockDir string 18 mockName string 19 } 20 21 type expect struct { 22 err error 23 data []byte 24 } 25 26 tests := []struct { 27 name string 28 args args 29 expect expect 30 }{ 31 { 32 name: "directory doesn't exists: creates directory and file", 33 args: args{ 34 mockDir: "tempTestDir", 35 mockName: "tempTestFile", 36 }, 37 expect: expect{ 38 err: nil, 39 data: []byte{}, 40 }, 41 }, 42 { 43 name: "directory exists, file doesn't: creates file", 44 args: args{ 45 mockDir: "tempTestDir", 46 mockName: "tempTestFile2", 47 }, 48 expect: expect{ 49 err: nil, 50 data: []byte{}, 51 }, 52 }, 53 { 54 name: "file exists: reads file data", 55 args: args{ 56 mockDir: tempExistingDir, 57 mockName: tempExistingFile, 58 }, 59 expect: expect{ 60 err: nil, 61 data: testData, 62 }, 63 }, 64 } 65 66 // Create file to test data 67 h, _ := os.UserHomeDir() 68 os.Chdir(h) 69 os.Mkdir(tempExistingDir, 0766) 70 f, _ := os.Create(filepath.Join(tempExistingDir, tempExistingFile)) 71 f.Write(testData) 72 f.Close() 73 74 for _, tt := range tests { 75 t.Run(tt.name, func(t *testing.T) { 76 dfs := NewDefault() 77 78 data, err := dfs.ReadFile(tt.args.mockDir, tt.args.mockName) 79 80 if !errors.Is(err, tt.expect.err) { 81 t.Errorf("ReadFile() expected error: %v, got: %v", tt.expect.err, err) 82 } 83 84 if !bytes.Equal(data, tt.expect.data) { 85 t.Errorf("ReadFile() expected data: %s, got: %s", tt.expect.data, data) 86 } 87 }) 88 } 89 90 os.RemoveAll(tempExistingDir) 91 os.RemoveAll("tempTestDir") 92 }