@@ -354,6 +354,7 @@ func TestFindSources(t *testing.T) {
354354 expectedSize int32
355355 expectedItems int
356356 checkSorting bool
357+ checkEnabled bool
357358 expectedLabels int
358359 }{
359360 {
@@ -586,6 +587,151 @@ func TestFindSources(t *testing.T) {
586587 },
587588 }
588589
590+ falseValue := false
591+ newTestCases := []struct {
592+ name string
593+ catalogs map [string ]catalog.Source
594+ nameFilter string
595+ pageSize string
596+ orderBy model.OrderByField
597+ sortOrder model.SortOrder
598+ nextPageToken string
599+ expectedStatus int
600+ expectedSize int32
601+ expectedItems int
602+ checkSorting bool
603+ checkEnabled bool
604+ expectedLabels int
605+ }{
606+ {
607+ name : "All sources returned regardless of enabled status" ,
608+ catalogs : map [string ]catalog.Source {
609+ "enabled1" : {CatalogSource : model.CatalogSource {Id : "enabled1" , Name : "Enabled Source 1" , Enabled : & trueValue }},
610+ "disabled1" : {CatalogSource : model.CatalogSource {Id : "disabled1" , Name : "Disabled Source 1" , Enabled : & falseValue }},
611+ "enabled2" : {CatalogSource : model.CatalogSource {Id : "enabled2" , Name : "Enabled Source 2" , Enabled : & trueValue }},
612+ "disabled2" : {CatalogSource : model.CatalogSource {Id : "disabled2" , Name : "Disabled Source 2" , Enabled : & falseValue }},
613+ },
614+ nameFilter : "" ,
615+ pageSize : "10" ,
616+ orderBy : model .ORDERBYFIELD_ID ,
617+ sortOrder : model .SORTORDER_ASC ,
618+ expectedStatus : http .StatusOK ,
619+ expectedSize : 4 ,
620+ expectedItems : 4 ,
621+ checkEnabled : true ,
622+ },
623+ {
624+ name : "Enabled field present in response for all sources" ,
625+ catalogs : map [string ]catalog.Source {
626+ "enabled1" : {CatalogSource : model.CatalogSource {Id : "enabled1" , Name : "Enabled Source 1" , Enabled : & trueValue }},
627+ "disabled1" : {CatalogSource : model.CatalogSource {Id : "disabled1" , Name : "Disabled Source 1" , Enabled : & falseValue }},
628+ },
629+ nameFilter : "" ,
630+ pageSize : "10" ,
631+ orderBy : model .ORDERBYFIELD_ID ,
632+ sortOrder : model .SORTORDER_ASC ,
633+ expectedStatus : http .StatusOK ,
634+ expectedSize : 2 ,
635+ expectedItems : 2 ,
636+ checkEnabled : true ,
637+ },
638+ {
639+ name : "Name filtering works across all sources (enabled and disabled)" ,
640+ catalogs : map [string ]catalog.Source {
641+ "enabled1" : {CatalogSource : model.CatalogSource {Id : "enabled1" , Name : "Test Source A" , Enabled : & trueValue }},
642+ "disabled1" : {CatalogSource : model.CatalogSource {Id : "disabled1" , Name : "Test Source B" , Enabled : & falseValue }},
643+ "enabled2" : {CatalogSource : model.CatalogSource {Id : "enabled2" , Name : "Other Source" , Enabled : & trueValue }},
644+ "disabled2" : {CatalogSource : model.CatalogSource {Id : "disabled2" , Name : "Test Source C" , Enabled : & falseValue }},
645+ },
646+ nameFilter : "Test" ,
647+ pageSize : "10" ,
648+ orderBy : model .ORDERBYFIELD_ID ,
649+ sortOrder : model .SORTORDER_ASC ,
650+ expectedStatus : http .StatusOK ,
651+ expectedSize : 3 , // Should find both enabled and disabled sources with "Test" in name
652+ expectedItems : 3 ,
653+ },
654+ {
655+ name : "Pagination accounts for all sources including disabled" ,
656+ catalogs : map [string ]catalog.Source {
657+ "enabled1" : {CatalogSource : model.CatalogSource {Id : "enabled1" , Name : "Source 1" , Enabled : & trueValue }},
658+ "disabled1" : {CatalogSource : model.CatalogSource {Id : "disabled1" , Name : "Source 2" , Enabled : & falseValue }},
659+ "enabled2" : {CatalogSource : model.CatalogSource {Id : "enabled2" , Name : "Source 3" , Enabled : & trueValue }},
660+ "disabled2" : {CatalogSource : model.CatalogSource {Id : "disabled2" , Name : "Source 4" , Enabled : & falseValue }},
661+ "enabled3" : {CatalogSource : model.CatalogSource {Id : "enabled3" , Name : "Source 5" , Enabled : & trueValue }},
662+ },
663+ nameFilter : "" ,
664+ pageSize : "2" ,
665+ orderBy : model .ORDERBYFIELD_ID ,
666+ sortOrder : model .SORTORDER_ASC ,
667+ expectedStatus : http .StatusOK ,
668+ expectedSize : 2 , // Page size, not total
669+ expectedItems : 2 , // First page should have 2 items
670+ },
671+ {
672+ name : "Sorting works across all sources (enabled and disabled interleaved)" ,
673+ catalogs : map [string ]catalog.Source {
674+ "source_d" : {CatalogSource : model.CatalogSource {Id : "source_d" , Name : "D Source" , Enabled : & falseValue }},
675+ "source_b" : {CatalogSource : model.CatalogSource {Id : "source_b" , Name : "B Source" , Enabled : & trueValue }},
676+ "source_a" : {CatalogSource : model.CatalogSource {Id : "source_a" , Name : "A Source" , Enabled : & falseValue }},
677+ "source_c" : {CatalogSource : model.CatalogSource {Id : "source_c" , Name : "C Source" , Enabled : & trueValue }},
678+ },
679+ nameFilter : "" ,
680+ pageSize : "10" ,
681+ orderBy : model .ORDERBYFIELD_ID ,
682+ sortOrder : model .SORTORDER_ASC ,
683+ expectedStatus : http .StatusOK ,
684+ expectedSize : 4 ,
685+ expectedItems : 4 ,
686+ checkSorting : true , // Should be sorted a, b, c, d regardless of enabled status
687+ },
688+ {
689+ name : "Empty catalog returns empty list" ,
690+ catalogs : map [string ]catalog.Source {},
691+ nameFilter : "" ,
692+ pageSize : "10" ,
693+ orderBy : model .ORDERBYFIELD_ID ,
694+ sortOrder : model .SORTORDER_ASC ,
695+ expectedStatus : http .StatusOK ,
696+ expectedSize : 0 ,
697+ expectedItems : 0 ,
698+ },
699+ {
700+ name : "All sources disabled still returns all sources" ,
701+ catalogs : map [string ]catalog.Source {
702+ "disabled1" : {CatalogSource : model.CatalogSource {Id : "disabled1" , Name : "Disabled Source 1" , Enabled : & falseValue }},
703+ "disabled2" : {CatalogSource : model.CatalogSource {Id : "disabled2" , Name : "Disabled Source 2" , Enabled : & falseValue }},
704+ "disabled3" : {CatalogSource : model.CatalogSource {Id : "disabled3" , Name : "Disabled Source 3" , Enabled : & falseValue }},
705+ },
706+ nameFilter : "" ,
707+ pageSize : "10" ,
708+ orderBy : model .ORDERBYFIELD_ID ,
709+ sortOrder : model .SORTORDER_ASC ,
710+ expectedStatus : http .StatusOK ,
711+ expectedSize : 3 ,
712+ expectedItems : 3 ,
713+ checkEnabled : true ,
714+ },
715+ {
716+ name : "Sorting by NAME works across enabled and disabled sources" ,
717+ catalogs : map [string ]catalog.Source {
718+ "source1" : {CatalogSource : model.CatalogSource {Id : "source1" , Name : "Zebra Catalog" , Enabled : & falseValue }},
719+ "source2" : {CatalogSource : model.CatalogSource {Id : "source2" , Name : "Alpha Catalog" , Enabled : & trueValue }},
720+ "source3" : {CatalogSource : model.CatalogSource {Id : "source3" , Name : "Beta Catalog" , Enabled : & falseValue }},
721+ "source4" : {CatalogSource : model.CatalogSource {Id : "source4" , Name : "Gamma Catalog" , Enabled : & trueValue }},
722+ },
723+ nameFilter : "" ,
724+ pageSize : "10" ,
725+ orderBy : model .ORDERBYFIELD_NAME ,
726+ sortOrder : model .SORTORDER_ASC ,
727+ expectedStatus : http .StatusOK ,
728+ expectedSize : 4 ,
729+ expectedItems : 4 ,
730+ checkSorting : true ,
731+ },
732+ }
733+ testCases = append (testCases , newTestCases ... )
734+
589735 // Run test cases
590736 for _ , tc := range testCases {
591737 t .Run (tc .name , func (t * testing.T ) {
@@ -676,6 +822,13 @@ func TestFindSources(t *testing.T) {
676822 labels = append (labels , item .Labels ... )
677823 }
678824 assert .Equal (t , tc .expectedLabels , len (labels ))
825+
826+ // Check enabled field if required
827+ if tc .checkEnabled {
828+ for _ , item := range sourceList .Items {
829+ assert .NotNil (t , item .Enabled , "Enabled field should be present for source %s" , item .Id )
830+ }
831+ }
679832 })
680833 }
681834}
0 commit comments