@@ -26,10 +26,12 @@ import (
2626 "testing"
2727 "testing/fstest"
2828
29- "github.com/fluxcd/source-controller/internal/helm/chart/secureloader/ignore"
3029 . "github.com/onsi/gomega"
3130 "helm.sh/helm/v3/pkg/chart"
3231 "sigs.k8s.io/yaml"
32+
33+ "github.com/fluxcd/source-controller/internal/helm"
34+ "github.com/fluxcd/source-controller/internal/helm/chart/secureloader/ignore"
3335)
3436
3537func TestSecureDirLoader_Load (t * testing.T ) {
@@ -49,7 +51,7 @@ func TestSecureDirLoader_Load(t *testing.T) {
4951 g .Expect (err ).ToNot (HaveOccurred ())
5052 g .Expect (os .WriteFile (filepath .Join (tmpDir , "Chart.yaml" ), b , 0o644 )).To (Succeed ())
5153
52- got , err := (NewSecureDirLoader (tmpDir , "" , DefaultMaxFileSize )).Load ()
54+ got , err := (NewSecureDirLoader (tmpDir , "" , helm . MaxChartFileSize )).Load ()
5355 g .Expect (err ).ToNot (HaveOccurred ())
5456 g .Expect (got ).ToNot (BeNil ())
5557 g .Expect (got .Name ()).To (Equal (m .Name ))
@@ -64,7 +66,7 @@ func TestSecureDirLoader_Load(t *testing.T) {
6466 g .Expect (err ).ToNot (HaveOccurred ())
6567 g .Expect (os .WriteFile (filepath .Join (tmpDir , "Chart.yaml" ), b , 0o644 )).To (Succeed ())
6668
67- got , err := (NewSecureDirLoader (tmpDir , tmpDir , DefaultMaxFileSize )).Load ()
69+ got , err := (NewSecureDirLoader (tmpDir , tmpDir , helm . MaxChartFileSize )).Load ()
6870 g .Expect (err ).ToNot (HaveOccurred ())
6971 g .Expect (got ).ToNot (BeNil ())
7072 g .Expect (got .Name ()).To (Equal (m .Name ))
@@ -83,12 +85,12 @@ func TestSecureDirLoader_Load(t *testing.T) {
8385 root := filepath .Join (tmpDir , "root" )
8486 g .Expect (os .Mkdir (root , 0o700 )).To (Succeed ())
8587
86- got , err := (NewSecureDirLoader (root , "../" , DefaultMaxFileSize )).Load ()
88+ got , err := (NewSecureDirLoader (root , "../" , helm . MaxChartFileSize )).Load ()
8789 g .Expect (err ).To (HaveOccurred ())
8890 g .Expect (err .Error ()).To (ContainSubstring ("failed to load chart from /: Chart.yaml file is missing" ))
8991 g .Expect (got ).To (BeNil ())
9092
91- got , err = (NewSecureDirLoader (root , tmpDir , DefaultMaxFileSize )).Load ()
93+ got , err = (NewSecureDirLoader (root , tmpDir , helm . MaxChartFileSize )).Load ()
9294 g .Expect (err ).To (HaveOccurred ())
9395 g .Expect (err .Error ()).To (ContainSubstring ("failed to load chart from /: Chart.yaml file is missing" ))
9496 g .Expect (got ).To (BeNil ())
@@ -105,7 +107,7 @@ func TestSecureDirLoader_Load(t *testing.T) {
105107 g .Expect (os .WriteFile (filepath .Join (tmpDir , ignore .HelmIgnore ), []byte ("file.txt" ), 0o644 )).To (Succeed ())
106108 g .Expect (os .WriteFile (filepath .Join (tmpDir , "file.txt" ), []byte ("not included" ), 0o644 )).To (Succeed ())
107109
108- got , err := (NewSecureDirLoader (tmpDir , "" , DefaultMaxFileSize )).Load ()
110+ got , err := (NewSecureDirLoader (tmpDir , "" , helm . MaxChartFileSize )).Load ()
109111 g .Expect (err ).ToNot (HaveOccurred ())
110112 g .Expect (got ).ToNot (BeNil ())
111113 g .Expect (got .Name ()).To (Equal (m .Name ))
@@ -218,7 +220,7 @@ func Test_secureFileWalker_walk(t *testing.T) {
218220 t .Run ("given name equals top dir" , func (t * testing.T ) {
219221 g := NewWithT (t )
220222
221- w := newSecureFileWalker (root , chartPath , DefaultMaxFileSize , ignore .Empty ())
223+ w := newSecureFileWalker (root , chartPath , helm . MaxChartFileSize , ignore .Empty ())
222224 g .Expect (w .walk (chartPath + "/" , chartPath , nil , nil )).To (BeNil ())
223225 })
224226
@@ -237,7 +239,7 @@ func Test_secureFileWalker_walk(t *testing.T) {
237239 rules , err := ignore .Parse (strings .NewReader (fakeDirName + "/" ))
238240 g .Expect (err ).ToNot (HaveOccurred ())
239241
240- w := newSecureFileWalker (root , chartPath , DefaultMaxFileSize , rules )
242+ w := newSecureFileWalker (root , chartPath , helm . MaxChartFileSize , rules )
241243 g .Expect (w .walk (filepath .Join (w .absChartPath , fakeDirName ), filepath .Join (w .absChartPath , fakeDirName ), fakeDirInfo , nil )).To (Equal (fs .SkipDir ))
242244 })
243245
@@ -247,21 +249,21 @@ func Test_secureFileWalker_walk(t *testing.T) {
247249 rules , err := ignore .Parse (strings .NewReader (fakeDirName + "/" ))
248250 g .Expect (err ).ToNot (HaveOccurred ())
249251
250- w := newSecureFileWalker (root , chartPath , DefaultMaxFileSize , rules )
252+ w := newSecureFileWalker (root , chartPath , helm . MaxChartFileSize , rules )
251253 g .Expect (w .walk (filepath .Join (w .absChartPath , "symlink" ), filepath .Join (w .absChartPath , fakeDirName ), fakeDirInfo , nil )).To (BeNil ())
252254 })
253255
254256 t .Run ("ignore rule not applicable to dir" , func (t * testing.T ) {
255257 g := NewWithT (t )
256258
257- w := newSecureFileWalker (root , chartPath , DefaultMaxFileSize , ignore .Empty ())
259+ w := newSecureFileWalker (root , chartPath , helm . MaxChartFileSize , ignore .Empty ())
258260 g .Expect (w .walk (filepath .Join (w .absChartPath , fakeDirName ), filepath .Join (w .absChartPath , fakeDirName ), fakeDirInfo , nil )).To (BeNil ())
259261 })
260262
261263 t .Run ("absolute path outside root" , func (t * testing.T ) {
262264 g := NewWithT (t )
263265
264- w := newSecureFileWalker (root , chartPath , DefaultMaxFileSize , ignore .Empty ())
266+ w := newSecureFileWalker (root , chartPath , helm . MaxChartFileSize , ignore .Empty ())
265267 err := w .walk (filepath .Join (w .absChartPath , fakeDirName ), filepath .Join ("/fake/another/root/" , fakeDirName ), fakeDirInfo , nil )
266268 g .Expect (err ).To (HaveOccurred ())
267269 g .Expect (err .Error ()).To (ContainSubstring ("cannot load 'fake-dir' directory: absolute path traverses outside root boundary" ))
@@ -273,7 +275,7 @@ func Test_secureFileWalker_walk(t *testing.T) {
273275 rules , err := ignore .Parse (strings .NewReader (fakeDirName + "/" ))
274276 g .Expect (err ).ToNot (HaveOccurred ())
275277
276- w := newSecureFileWalker (root , chartPath , DefaultMaxFileSize , rules )
278+ w := newSecureFileWalker (root , chartPath , helm . MaxChartFileSize , rules )
277279 g .Expect (w .walk (filepath .Join (w .absChartPath , fakeDirName ), filepath .Join ("/fake/another/root/" , fakeDirName ), fakeDirInfo , nil )).To (Equal (fs .SkipDir ))
278280 })
279281
@@ -283,21 +285,21 @@ func Test_secureFileWalker_walk(t *testing.T) {
283285 rules , err := ignore .Parse (strings .NewReader (fakeFileName ))
284286 g .Expect (err ).ToNot (HaveOccurred ())
285287
286- w := newSecureFileWalker (root , chartPath , DefaultMaxFileSize , rules )
288+ w := newSecureFileWalker (root , chartPath , helm . MaxChartFileSize , rules )
287289 g .Expect (w .walk (filepath .Join (w .absChartPath , fakeFileName ), filepath .Join (w .absChartPath , fakeFileName ), fakeFileInfo , nil )).To (BeNil ())
288290 })
289291
290292 t .Run ("file path outside root" , func (t * testing.T ) {
291293 g := NewWithT (t )
292294
293- w := newSecureFileWalker (root , chartPath , DefaultMaxFileSize , ignore .Empty ())
295+ w := newSecureFileWalker (root , chartPath , helm . MaxChartFileSize , ignore .Empty ())
294296 err := w .walk (filepath .Join (w .absChartPath , fakeFileName ), filepath .Join ("/fake/another/root/" , fakeFileName ), fakeFileInfo , nil )
295297 g .Expect (err ).To (HaveOccurred ())
296298 g .Expect (err .Error ()).To (ContainSubstring ("cannot load 'fake-file' file: absolute path traverses outside root boundary" ))
297299 })
298300
299301 t .Run ("irregular file" , func (t * testing.T ) {
300- w := newSecureFileWalker (root , chartPath , DefaultMaxFileSize , ignore .Empty ())
302+ w := newSecureFileWalker (root , chartPath , helm . MaxChartFileSize , ignore .Empty ())
301303 err := w .walk (fakeDeviceFileName , filepath .Join (w .absChartPath ), fakeDeviceInfo , nil )
302304 g .Expect (err ).To (HaveOccurred ())
303305 g .Expect (err .Error ()).To (ContainSubstring ("cannot load irregular file fake-device as it has file mode type bits set" ))
@@ -321,7 +323,7 @@ func Test_secureFileWalker_walk(t *testing.T) {
321323 fileInfo , err := os .Lstat (absFilePath )
322324 g .Expect (err ).ToNot (HaveOccurred ())
323325
324- w := newSecureFileWalker (tmpDir , tmpDir , DefaultMaxFileSize , ignore .Empty ())
326+ w := newSecureFileWalker (tmpDir , tmpDir , helm . MaxChartFileSize , ignore .Empty ())
325327 g .Expect (w .walk (fileName , absFilePath , fileInfo , nil )).To (Succeed ())
326328 g .Expect (w .files ).To (HaveLen (1 ))
327329 g .Expect (w .files [0 ].Name ).To (Equal (fileName ))
@@ -340,7 +342,7 @@ func Test_secureFileWalker_walk(t *testing.T) {
340342 fileInfo , err := os .Lstat (absFilePath )
341343 g .Expect (err ).ToNot (HaveOccurred ())
342344
343- w := newSecureFileWalker (tmpDir , tmpDir , DefaultMaxFileSize , ignore .Empty ())
345+ w := newSecureFileWalker (tmpDir , tmpDir , helm . MaxChartFileSize , ignore .Empty ())
344346 g .Expect (w .walk (fileName , absFilePath , fileInfo , nil )).To (Succeed ())
345347 g .Expect (w .files ).To (HaveLen (1 ))
346348 g .Expect (w .files [0 ].Name ).To (Equal (fileName ))
@@ -351,7 +353,7 @@ func Test_secureFileWalker_walk(t *testing.T) {
351353 g := NewWithT (t )
352354 tmpDir := t .TempDir ()
353355
354- w := newSecureFileWalker (tmpDir , tmpDir , DefaultMaxFileSize , ignore .Empty ())
356+ w := newSecureFileWalker (tmpDir , tmpDir , helm . MaxChartFileSize , ignore .Empty ())
355357 err := w .walk (filepath .Join (w .absChartPath , "invalid" ), filepath .Join (w .absChartPath , "invalid" ), fakeFileInfo , nil )
356358 g .Expect (err ).To (HaveOccurred ())
357359 g .Expect (errors .Is (err , fs .ErrNotExist )).To (BeTrue ())
0 commit comments