Advisor: Fix retry behavior for missing item (#105608)

This commit is contained in:
Andres Martinez Gotor
2025-05-19 15:15:20 +02:00
committed by GitHub
parent 8bfff4185c
commit 4d0124af7a
8 changed files with 119 additions and 22 deletions
@@ -69,10 +69,18 @@ func (c *check) Item(ctx context.Context, id string) (any, error) {
if err != nil {
return nil, err
}
return c.DatasourceSvc.GetDataSource(ctx, &datasources.GetDataSourceQuery{
ds, err := c.DatasourceSvc.GetDataSource(ctx, &datasources.GetDataSourceQuery{
UID: id,
OrgID: requester.GetOrgID(),
})
if err != nil {
if errors.Is(err, datasources.ErrDataSourceNotFound) {
// The data source does not exist, skip the check
return nil, nil
}
return nil, err
}
return ds, nil
}
func (c *check) ID() string {
@@ -231,6 +231,19 @@ func TestCheck_Run(t *testing.T) {
})
}
func TestCheck_Item(t *testing.T) {
t.Run("should return nil when datasource is not found", func(t *testing.T) {
mockDatasourceSvc := &MockDatasourceSvc{dss: []*datasources.DataSource{}}
check := &check{
DatasourceSvc: mockDatasourceSvc,
}
ctx := identity.WithRequester(context.Background(), &user.SignedInUser{})
item, err := check.Item(ctx, "invalid-uid")
assert.NoError(t, err)
assert.Nil(t, item)
})
}
type MockDatasourceSvc struct {
datasources.DataSourceService
@@ -241,6 +254,13 @@ func (m *MockDatasourceSvc) GetAllDataSources(context.Context, *datasources.GetA
return m.dss, nil
}
func (m *MockDatasourceSvc) GetDataSource(context.Context, *datasources.GetDataSourceQuery) (*datasources.DataSource, error) {
if len(m.dss) == 0 {
return nil, datasources.ErrDataSourceNotFound
}
return m.dss[0], nil
}
type MockPluginContextProvider struct {
pCtx backend.PluginContext
}