@@ -610,6 +610,113 @@ func TestCatalogInstall(t *testing.T) {
610610 })
611611}
612612
613+ func TestCatalogDelete (t * testing.T ) {
614+ var (
615+ apiComponentCount int = 4
616+ prefix string = "staging"
617+ version string = "1.0.0"
618+ )
619+
620+ fakeServer := lacework .MockServer ()
621+ defer fakeServer .Close ()
622+
623+ _ , home := FakeHome ()
624+ defer ResetHome (home )
625+
626+ fakeServer .MockAPI ("Components" , func (w http.ResponseWriter , r * http.Request ) {
627+ assert .Equal (t , "GET" , r .Method , "Components API only accepts HTTP GET" )
628+ fmt .Fprint (w , generateComponentsResponse (prefix , apiComponentCount ))
629+ })
630+
631+ client , _ := api .NewClient ("catalog_test" ,
632+ api .WithToken ("TOKEN" ),
633+ api .WithURL (fakeServer .URL ()))
634+
635+ t .Run ("delete-installed" , func (t * testing.T ) {
636+ name := fmt .Sprintf ("%s-1" , prefix )
637+
638+ CreateLocalComponent (name , version , false )
639+
640+ catalog , err := lwcomponent .NewCatalog (client , newTestStage )
641+ assert .NotNil (t , catalog )
642+ assert .Nil (t , err )
643+
644+ component , err := catalog .GetComponent (name )
645+ assert .NotNil (t , component )
646+ assert .Nil (t , err )
647+
648+ err = catalog .Delete (component )
649+ assert .Nil (t , err )
650+
651+ dir , _ := lwcomponent .CatalogCacheDir ()
652+ dir = filepath .Join (dir , name )
653+
654+ _ , err = os .Stat (dir )
655+ assert .NotNil (t , err )
656+ assert .True (t , os .IsNotExist (err ))
657+ })
658+
659+ t .Run ("delete-development" , func (t * testing.T ) {
660+ name := "delete-dev"
661+
662+ CreateLocalComponent (name , version , true )
663+
664+ catalog , err := lwcomponent .NewCatalog (client , newTestStage )
665+ assert .NotNil (t , catalog )
666+ assert .Nil (t , err )
667+
668+ component , err := catalog .GetComponent (name )
669+ assert .NotNil (t , component )
670+ assert .Nil (t , err )
671+
672+ err = catalog .Delete (component )
673+ assert .Nil (t , err )
674+
675+ dir , _ := lwcomponent .CatalogCacheDir ()
676+ dir = filepath .Join (dir , name )
677+
678+ _ , err = os .Stat (dir )
679+ assert .NotNil (t , err )
680+ assert .True (t , os .IsNotExist (err ))
681+ })
682+
683+ t .Run ("delete-not-installed" , func (t * testing.T ) {
684+ name := fmt .Sprintf ("%s-1" , prefix )
685+
686+ catalog , err := lwcomponent .NewCatalog (client , newTestStage )
687+ assert .NotNil (t , catalog )
688+ assert .Nil (t , err )
689+
690+ component , err := catalog .GetComponent (name )
691+ assert .NotNil (t , component )
692+ assert .Nil (t , err )
693+
694+ err = catalog .Delete (component )
695+ assert .NotNil (t , err )
696+ })
697+
698+ t .Run ("delete-twice" , func (t * testing.T ) {
699+ name := fmt .Sprintf ("%s-2" , prefix )
700+
701+ CreateLocalComponent (name , version , false )
702+
703+ catalog , err := lwcomponent .NewCatalog (client , newTestStage )
704+ assert .NotNil (t , catalog )
705+ assert .Nil (t , err )
706+
707+ component , err := catalog .GetComponent (name )
708+ assert .NotNil (t , component )
709+ assert .Nil (t , err )
710+
711+ err = catalog .Delete (component )
712+ assert .Nil (t , err )
713+
714+ err = catalog .Delete (component )
715+ assert .NotNil (t , err )
716+ })
717+
718+ }
719+
613720func generateComponentsResponse (prefix string , count int ) string {
614721 var (
615722 components = []api.LatestComponentVersion {}
0 commit comments