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  }