github.com/noqcks/syft@v0.0.0-20230920222752-a9e2c4e288e5/cmd/syft/cli/ui/handle_secrets_cataloger_test.go (about) 1 package ui 2 3 import ( 4 "testing" 5 "time" 6 7 tea "github.com/charmbracelet/bubbletea" 8 "github.com/gkampitakis/go-snaps/snaps" 9 "github.com/stretchr/testify/require" 10 "github.com/wagoodman/go-partybus" 11 "github.com/wagoodman/go-progress" 12 13 "github.com/anchore/bubbly/bubbles/taskprogress" 14 syftEvent "github.com/anchore/syft/syft/event" 15 "github.com/anchore/syft/syft/file/cataloger/secrets" 16 ) 17 18 func TestHandler_handleSecretsCatalogerStarted(t *testing.T) { 19 20 tests := []struct { 21 name string 22 eventFn func(*testing.T) partybus.Event 23 iterations int 24 }{ 25 { 26 name: "cataloging in progress", 27 eventFn: func(t *testing.T) partybus.Event { 28 stage := &progress.Stage{ 29 Current: "current", 30 } 31 secretsDiscovered := progress.NewManual(-1) 32 secretsDiscovered.Set(64) 33 prog := progress.NewManual(72) 34 prog.Set(50) 35 36 return partybus.Event{ 37 Type: syftEvent.SecretsCatalogerStarted, 38 Source: secretsDiscovered, 39 Value: secrets.Monitor{ 40 Stager: progress.Stager(stage), 41 SecretsDiscovered: secretsDiscovered, 42 Progressable: prog, 43 }, 44 } 45 }, 46 }, 47 { 48 name: "cataloging complete", 49 eventFn: func(t *testing.T) partybus.Event { 50 stage := &progress.Stage{ 51 Current: "current", 52 } 53 secretsDiscovered := progress.NewManual(-1) 54 secretsDiscovered.Set(64) 55 prog := progress.NewManual(72) 56 prog.Set(72) 57 prog.SetCompleted() 58 59 return partybus.Event{ 60 Type: syftEvent.SecretsCatalogerStarted, 61 Source: secretsDiscovered, 62 Value: secrets.Monitor{ 63 Stager: progress.Stager(stage), 64 SecretsDiscovered: secretsDiscovered, 65 Progressable: prog, 66 }, 67 } 68 }, 69 }, 70 } 71 for _, tt := range tests { 72 t.Run(tt.name, func(t *testing.T) { 73 event := tt.eventFn(t) 74 handler := New(DefaultHandlerConfig()) 75 handler.WindowSize = tea.WindowSizeMsg{ 76 Width: 100, 77 Height: 80, 78 } 79 80 models := handler.Handle(event) 81 require.Len(t, models, 1) 82 model := models[0] 83 84 tsk, ok := model.(taskprogress.Model) 85 require.True(t, ok) 86 87 got := runModel(t, tsk, tt.iterations, taskprogress.TickMsg{ 88 Time: time.Now(), 89 Sequence: tsk.Sequence(), 90 ID: tsk.ID(), 91 }) 92 t.Log(got) 93 snaps.MatchSnapshot(t, got) 94 }) 95 } 96 }