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  }