@@ -39,9 +39,10 @@ import (
39
39
var now = time .Now ()
40
40
41
41
const (
42
- testFile = "../testdata/local-index.yaml"
43
- chartmuseumTestFile = "../testdata/chartmuseum-index.yaml"
44
- unorderedTestFile = "../testdata/local-index-unordered.yaml"
42
+ testFile = "../testdata/local-index.yaml"
43
+ chartmuseumTestFile = "../testdata/chartmuseum-index.yaml"
44
+ chartmuseumTestFileJSON = "../testdata/chartmuseum-index.json"
45
+ unorderedTestFile = "../testdata/local-index-unordered.yaml"
45
46
)
46
47
47
48
// mockGetter is a simple mocking getter.Getter implementation, returning
@@ -81,6 +82,10 @@ func TestIndexFromFile(t *testing.T) {
81
82
name : "chartmuseum index file" ,
82
83
filename : chartmuseumTestFile ,
83
84
},
85
+ {
86
+ name : "chartmuseum index file" ,
87
+ filename : chartmuseumTestFileJSON ,
88
+ },
84
89
{
85
90
name : "error if index size exceeds max size" ,
86
91
filename : bigIndexFile ,
@@ -151,6 +156,29 @@ entries:
151
156
- name: nginx` ),
152
157
wantErr : "key \" nginx\" already set in map" ,
153
158
},
159
+ {
160
+ name : "json index" ,
161
+ b : []byte (`{
162
+ "apiVersion": "v1",
163
+ "entries": {
164
+ "nginx": [
165
+ {
166
+ "urls": [
167
+ "https://kubernetes-charts.storage.googleapis.com/nginx-0.2.0.tgz"
168
+ ],
169
+ "name": "nginx",
170
+ "description": "string",
171
+ "version": "0.2.0",
172
+ "home": "https://github.com/something/else",
173
+ "digest": "sha256:1234567890abcdef"
174
+ }
175
+ ]
176
+ }
177
+ }` ),
178
+ wantName : "nginx" ,
179
+ wantVersion : "0.2.0" ,
180
+ wantDigest : "sha256:1234567890abcdef" ,
181
+ },
154
182
}
155
183
for _ , tt := range tests {
156
184
tt := tt
@@ -387,7 +415,8 @@ func TestChartRepository_DownloadChart(t *testing.T) {
387
415
func TestChartRepository_CacheIndex (t * testing.T ) {
388
416
g := NewWithT (t )
389
417
390
- mg := mockGetter {Response : []byte ("foo" )}
418
+ mg := mockGetter {Response : []byte ("foo: bar" )}
419
+ jsonResp := []byte (`{"foo":"bar"}` )
391
420
392
421
r := newChartRepository ()
393
422
r .URL = "https://example.com"
@@ -397,12 +426,19 @@ func TestChartRepository_CacheIndex(t *testing.T) {
397
426
err := r .CacheIndex ()
398
427
g .Expect (err ).To (Not (HaveOccurred ()))
399
428
429
+ g .Expect (r .OriginalPath ).ToNot (BeEmpty ())
430
+ t .Cleanup (func () { _ = os .Remove (r .OriginalPath ) })
431
+
432
+ g .Expect (r .OriginalPath ).To (BeARegularFile ())
433
+ b , _ := os .ReadFile (r .OriginalPath )
434
+ g .Expect (b ).To (Equal (mg .Response ))
435
+
400
436
g .Expect (r .Path ).ToNot (BeEmpty ())
401
437
t .Cleanup (func () { _ = os .Remove (r .Path ) })
402
438
403
439
g .Expect (r .Path ).To (BeARegularFile ())
404
- b , _ : = os .ReadFile (r .Path )
405
- g .Expect (b ).To (Equal (mg . Response ))
440
+ b , _ = os .ReadFile (r .Path )
441
+ g .Expect (b ).To (Equal (jsonResp ))
406
442
407
443
g .Expect (r .digests ).To (BeEmpty ())
408
444
}
@@ -442,6 +478,20 @@ func TestChartRepository_StrategicallyLoadIndex(t *testing.T) {
442
478
g .Expect (r .Index ).ToNot (BeNil ())
443
479
})
444
480
481
+ t .Run ("loads from path with json format" , func (t * testing.T ) {
482
+ g := NewWithT (t )
483
+
484
+ i := filepath .Join (t .TempDir (), "index.yaml" )
485
+ g .Expect (os .WriteFile (i , []byte (`{"apiVersion":"v1"}` ), 0o644 )).To (Succeed ())
486
+
487
+ r := newChartRepository ()
488
+ r .Path = i
489
+
490
+ err := r .StrategicallyLoadIndex ()
491
+ g .Expect (err ).To (Succeed ())
492
+ g .Expect (r .Index ).ToNot (BeNil ())
493
+ })
494
+
445
495
t .Run ("loads from client" , func (t * testing.T ) {
446
496
g := NewWithT (t )
447
497
@@ -456,6 +506,7 @@ func TestChartRepository_StrategicallyLoadIndex(t *testing.T) {
456
506
err := r .StrategicallyLoadIndex ()
457
507
g .Expect (err ).To (Succeed ())
458
508
g .Expect (r .Path ).ToNot (BeEmpty ())
509
+ g .Expect (r .OriginalPath ).ToNot (BeEmpty ())
459
510
g .Expect (r .Index ).ToNot (BeNil ())
460
511
})
461
512
@@ -511,7 +562,7 @@ func TestChartRepository_Digest(t *testing.T) {
511
562
g .Expect (repo .NewIndexFile ().WriteFile (p , 0o644 )).To (Succeed ())
512
563
513
564
r := newChartRepository ()
514
- r .Path = p
565
+ r .OriginalPath = p
515
566
516
567
for _ , algo := range []digest.Algorithm {digest .SHA256 , digest .SHA512 } {
517
568
t .Run (algo .String (), func (t * testing.T ) {
@@ -542,7 +593,7 @@ func TestChartRepository_Digest(t *testing.T) {
542
593
g .Expect (os .WriteFile (i , []byte (`apiVersion: v1` ), 0o644 )).To (Succeed ())
543
594
544
595
r := newChartRepository ()
545
- r .Path = i
596
+ r .OriginalPath = i
546
597
r .digests [algo ] = expect
547
598
548
599
g .Expect (r .Digest (algo )).To (Equal (expect ))
@@ -565,11 +616,23 @@ func TestChartRepository_HasFile(t *testing.T) {
565
616
g .Expect (r .HasFile ()).To (BeFalse ())
566
617
567
618
i := filepath .Join (t .TempDir (), "index.yaml" )
568
- g .Expect (os .WriteFile (i , []byte (`apiVersion: v1 ` ), 0o644 )).To (Succeed ())
619
+ g .Expect (os .WriteFile (i , []byte (`{" apiVersion":"v1"} ` ), 0o644 )).To (Succeed ())
569
620
r .Path = i
570
621
g .Expect (r .HasFile ()).To (BeTrue ())
571
622
}
572
623
624
+ func TestChartRepository_HasOriginalFile (t * testing.T ) {
625
+ g := NewWithT (t )
626
+
627
+ r := newChartRepository ()
628
+ g .Expect (r .HasOriginalFile ()).To (BeFalse ())
629
+
630
+ i := filepath .Join (t .TempDir (), "index.yaml" )
631
+ g .Expect (os .WriteFile (i , []byte (`apiVersion: v1` ), 0o644 )).To (Succeed ())
632
+ r .OriginalPath = i
633
+ g .Expect (r .HasOriginalFile ()).To (BeTrue ())
634
+ }
635
+
573
636
func TestChartRepository_Clear (t * testing.T ) {
574
637
t .Run ("without index" , func (t * testing.T ) {
575
638
g := NewWithT (t )
@@ -595,15 +658,21 @@ func TestChartRepository_Clear(t *testing.T) {
595
658
g .Expect (err ).ToNot (HaveOccurred ())
596
659
g .Expect (f .Close ()).To (Succeed ())
597
660
661
+ serverFile , err := os .CreateTemp (t .TempDir (), "chart-index-*.yaml" )
662
+ g .Expect (err ).ToNot (HaveOccurred ())
663
+ g .Expect (serverFile .Close ()).To (Succeed ())
664
+
598
665
r := newChartRepository ()
599
666
r .Path = f .Name ()
667
+ r .OriginalPath = serverFile .Name ()
600
668
r .Index = repo .NewIndexFile ()
601
669
r .digests ["key" ] = "value"
602
670
r .cached = true
603
671
604
672
g .Expect (r .Clear ()).To (Succeed ())
605
673
g .Expect (r .Index ).To (BeNil ())
606
674
g .Expect (r .Path ).To (BeEmpty ())
675
+ g .Expect (r .OriginalPath ).To (BeEmpty ())
607
676
g .Expect (r .digests ).To (BeEmpty ())
608
677
g .Expect (r .cached ).To (BeFalse ())
609
678
})
@@ -615,13 +684,20 @@ func TestChartRepository_Clear(t *testing.T) {
615
684
g .Expect (err ).ToNot (HaveOccurred ())
616
685
g .Expect (f .Close ()).To (Succeed ())
617
686
687
+ serverFile , err := os .CreateTemp (t .TempDir (), "server-index-*.yaml" )
688
+ g .Expect (err ).ToNot (HaveOccurred ())
689
+ g .Expect (serverFile .Close ()).To (Succeed ())
690
+
618
691
r := newChartRepository ()
619
692
r .Path = f .Name ()
693
+ r .OriginalPath = serverFile .Name ()
620
694
r .digests ["key" ] = "value"
621
695
622
696
g .Expect (r .Clear ()).To (Succeed ())
623
697
g .Expect (r .Path ).ToNot (BeEmpty ())
624
698
g .Expect (r .Path ).To (BeARegularFile ())
699
+ g .Expect (r .OriginalPath ).ToNot (BeEmpty ())
700
+ g .Expect (r .OriginalPath ).To (BeARegularFile ())
625
701
g .Expect (r .digests ).To (BeEmpty ())
626
702
})
627
703
}
0 commit comments