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  }