fix test + lint issues
This commit is contained in:
@@ -484,56 +484,6 @@ func jsonDataToPluginMetaJSONData(jsonData plugins.JSONData) pluginsv0alpha1.Plu
|
|||||||
return meta
|
return meta
|
||||||
}
|
}
|
||||||
|
|
||||||
// pluginToPluginMetaSpec converts a plugins.Plugin to a pluginsv0alpha1.PluginMetaSpec.
|
|
||||||
// This includes fields that are only available on the full Plugin struct (not just JSONData).
|
|
||||||
func pluginToPluginMetaSpec(plugin *plugins.Plugin) pluginsv0alpha1.PluginMetaSpec {
|
|
||||||
spec := pluginsv0alpha1.PluginMetaSpec{
|
|
||||||
PluginJson: jsonDataToPluginMetaJSONData(plugin.JSONData),
|
|
||||||
}
|
|
||||||
|
|
||||||
if plugin.Module != "" {
|
|
||||||
module := &pluginsv0alpha1.PluginMetaV0alpha1SpecModule{
|
|
||||||
Path: plugin.Module,
|
|
||||||
}
|
|
||||||
spec.Module = module
|
|
||||||
}
|
|
||||||
|
|
||||||
if plugin.BaseURL != "" {
|
|
||||||
spec.BaseURL = &plugin.BaseURL
|
|
||||||
}
|
|
||||||
|
|
||||||
if plugin.Signature != "" {
|
|
||||||
signature := &pluginsv0alpha1.PluginMetaV0alpha1SpecSignature{
|
|
||||||
Status: convertSignatureStatus(plugin.Signature),
|
|
||||||
}
|
|
||||||
|
|
||||||
if plugin.SignatureType != "" {
|
|
||||||
sigType := convertSignatureType(plugin.SignatureType)
|
|
||||||
signature.Type = &sigType
|
|
||||||
}
|
|
||||||
|
|
||||||
if plugin.SignatureOrg != "" {
|
|
||||||
signature.Org = &plugin.SignatureOrg
|
|
||||||
}
|
|
||||||
|
|
||||||
spec.Signature = signature
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(plugin.Children) > 0 {
|
|
||||||
children := make([]string, 0, len(plugin.Children))
|
|
||||||
for _, child := range plugin.Children {
|
|
||||||
if child != nil {
|
|
||||||
children = append(children, child.ID)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if len(children) > 0 {
|
|
||||||
spec.Children = children
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return spec
|
|
||||||
}
|
|
||||||
|
|
||||||
// pluginStorePluginToPluginMetaSpec converts a pluginstore.Plugin to a pluginsv0alpha1.PluginMetaSpec.
|
// pluginStorePluginToPluginMetaSpec converts a pluginstore.Plugin to a pluginsv0alpha1.PluginMetaSpec.
|
||||||
// This is similar to pluginToPluginMetaSpec but works with the plugin store DTO.
|
// This is similar to pluginToPluginMetaSpec but works with the plugin store DTO.
|
||||||
// loadingStrategy and moduleHash are optional calculated values that can be provided.
|
// loadingStrategy and moduleHash are optional calculated values that can be provided.
|
||||||
|
|||||||
@@ -113,7 +113,7 @@ func TestProviderManager_GetMeta(t *testing.T) {
|
|||||||
assert.Equal(t, expectedTTL, cached.ttl)
|
assert.Equal(t, expectedTTL, cached.ttl)
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("does not cache result with zero TTL and tries next provider", func(t *testing.T) {
|
t.Run("does not cache result with zero TTL", func(t *testing.T) {
|
||||||
zeroTTLMeta := pluginsv0alpha1.PluginMetaSpec{
|
zeroTTLMeta := pluginsv0alpha1.PluginMetaSpec{
|
||||||
PluginJson: pluginsv0alpha1.PluginMetaJSONData{
|
PluginJson: pluginsv0alpha1.PluginMetaJSONData{
|
||||||
Id: "test-plugin",
|
Id: "test-plugin",
|
||||||
@@ -121,15 +121,8 @@ func TestProviderManager_GetMeta(t *testing.T) {
|
|||||||
Type: pluginsv0alpha1.PluginMetaJSONDataTypeDatasource,
|
Type: pluginsv0alpha1.PluginMetaJSONDataTypeDatasource,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
expectedMeta := pluginsv0alpha1.PluginMetaSpec{
|
|
||||||
PluginJson: pluginsv0alpha1.PluginMetaJSONData{
|
|
||||||
Id: "test-plugin",
|
|
||||||
Name: "Test Plugin",
|
|
||||||
Type: pluginsv0alpha1.PluginMetaJSONDataTypeDatasource,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
provider1 := &mockProvider{
|
provider := &mockProvider{
|
||||||
getMetaFunc: func(ctx context.Context, pluginID, version string) (*Result, error) {
|
getMetaFunc: func(ctx context.Context, pluginID, version string) (*Result, error) {
|
||||||
return &Result{
|
return &Result{
|
||||||
Meta: zeroTTLMeta,
|
Meta: zeroTTLMeta,
|
||||||
@@ -137,30 +130,21 @@ func TestProviderManager_GetMeta(t *testing.T) {
|
|||||||
}, nil
|
}, nil
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
provider2 := &mockProvider{
|
|
||||||
getMetaFunc: func(ctx context.Context, pluginID, version string) (*Result, error) {
|
|
||||||
return &Result{
|
|
||||||
Meta: expectedMeta,
|
|
||||||
TTL: time.Hour,
|
|
||||||
}, nil
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
pm := NewProviderManager(provider1, provider2)
|
pm := NewProviderManager(provider)
|
||||||
|
|
||||||
result, err := pm.GetMeta(ctx, "test-plugin", "1.0.0")
|
result, err := pm.GetMeta(ctx, "test-plugin", "1.0.0")
|
||||||
|
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.NotNil(t, result)
|
require.NotNil(t, result)
|
||||||
assert.Equal(t, expectedMeta, result.Meta)
|
assert.Equal(t, zeroTTLMeta, result.Meta)
|
||||||
|
assert.Equal(t, time.Duration(0), result.TTL)
|
||||||
|
|
||||||
pm.cacheMu.RLock()
|
pm.cacheMu.RLock()
|
||||||
cached, exists := pm.cache["test-plugin:1.0.0"]
|
_, exists := pm.cache["test-plugin:1.0.0"]
|
||||||
pm.cacheMu.RUnlock()
|
pm.cacheMu.RUnlock()
|
||||||
|
|
||||||
assert.True(t, exists)
|
assert.False(t, exists, "zero TTL results should not be cached")
|
||||||
assert.Equal(t, expectedMeta, cached.meta)
|
|
||||||
assert.Equal(t, time.Hour, cached.ttl)
|
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("tries next provider when first returns ErrMetaNotFound", func(t *testing.T) {
|
t.Run("tries next provider when first returns ErrMetaNotFound", func(t *testing.T) {
|
||||||
|
|||||||
Reference in New Issue
Block a user