Advisor: Fix retry behavior for missing item (#105608)
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user