github.com/argoproj/argo-cd/v3@v3.2.1/util/security/path_traversal_test.go (about) 1 package security 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/assert" 7 "github.com/stretchr/testify/require" 8 ) 9 10 func TestEnforceToCurrentRoot(t *testing.T) { 11 cleanDir, err := EnforceToCurrentRoot("/home/argo/helmapp/", "/home/argo/helmapp/values.yaml") 12 require.NoError(t, err) 13 assert.Equal(t, "/home/argo/helmapp/values.yaml", cleanDir) 14 15 // File is outside current working directory 16 _, err = EnforceToCurrentRoot("/home/argo/helmapp/", "/home/values.yaml") 17 require.Error(t, err) 18 19 // File is outside current working directory 20 _, err = EnforceToCurrentRoot("/home/argo/helmapp/", "/home/argo/helmapp/../differentapp/values.yaml") 21 require.Error(t, err) 22 23 // Goes back and forth, but still legal 24 cleanDir, err = EnforceToCurrentRoot("/home/argo/helmapp/", "/home/argo/helmapp/../../argo/helmapp/values.yaml") 25 require.NoError(t, err) 26 assert.Equal(t, "/home/argo/helmapp/values.yaml", cleanDir) 27 }