get.porter.sh/porter@v1.3.0/pkg/porter/porter_integration_test.go (about) 1 //go:build integration 2 3 package porter 4 5 import ( 6 "os" 7 "path/filepath" 8 "runtime" 9 "testing" 10 11 "get.porter.sh/porter/pkg" 12 "get.porter.sh/porter/tests" 13 "github.com/stretchr/testify/require" 14 ) 15 16 func TestPorter_FixPermissions(t *testing.T) { 17 if runtime.GOOS == "windows" { 18 // Fixing permission bits on windows makes no sense 19 t.SkipNow() 20 } 21 22 p := NewTestPorter(t) 23 ctx := p.SetupIntegrationTest() 24 defer p.Close() 25 26 home, _ := p.GetHomeDir() 27 p.ConfigFilePath = filepath.Join(home, "config.toml") 28 29 testcases := []string{ 30 filepath.Join(home, "config.toml"), 31 } 32 for _, tc := range testcases { 33 tc := tc 34 t.Run(tc, func(t *testing.T) { 35 dir := filepath.Dir(tc) 36 require.NoError(t, os.MkdirAll(dir, pkg.FileModeDirectory)) 37 require.NoError(t, os.WriteFile(tc, []byte(""), 0750)) 38 39 err := p.FixPermissions(ctx) 40 require.NoError(t, err) 41 42 // Check that all files in the directory have the correct permissions 43 tests.AssertDirectoryPermissionsEqual(t, dir, pkg.FileModeWritable) 44 }) 45 } 46 } 47 48 func TestPorter_FixPermissions_NoConfigFile(t *testing.T) { 49 if runtime.GOOS == "windows" { 50 // Fixing permission bits on windows makes no sense 51 t.SkipNow() 52 } 53 54 p := NewTestPorter(t) 55 ctx := p.SetupIntegrationTest() 56 defer p.Close() 57 58 // Remember the original permissions on the current working directory 59 wd := p.Getwd() 60 wdInfo, err := p.FileSystem.Stat(wd) 61 require.NoError(t, err, "stat on the current working directory failed") 62 wantMode := wdInfo.Mode() 63 64 err = p.FixPermissions(ctx) 65 require.NoError(t, err) 66 67 // Check that the current working directory didn't have its permissions changed 68 wdInfo, err = p.FileSystem.Stat(wd) 69 require.NoError(t, err, "stat on the current working directory failed") 70 gotMode := wdInfo.Mode() 71 tests.AssertFilePermissionsEqual(t, wd, wantMode, gotMode) 72 }