| 
									
										
										
										
											2023-02-28 22:27:11 +08:00
										 |  |  | package sources | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import ( | 
					
						
							|  |  |  | 	"context" | 
					
						
							|  |  |  | 	"testing" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	"github.com/stretchr/testify/require" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	"github.com/grafana/grafana/pkg/plugins" | 
					
						
							|  |  |  | 	"github.com/grafana/grafana/pkg/plugins/config" | 
					
						
							|  |  |  | 	"github.com/grafana/grafana/pkg/setting" | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func TestSources_List(t *testing.T) { | 
					
						
							| 
									
										
										
										
											2023-03-20 21:35:49 +08:00
										 |  |  | 	t.Run("Plugin sources are populated by default and listed in specific order", func(t *testing.T) { | 
					
						
							| 
									
										
										
										
											2023-02-28 22:27:11 +08:00
										 |  |  | 		cfg := &setting.Cfg{ | 
					
						
							|  |  |  | 			BundledPluginsPath: "path1", | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		pCfg := &config.Cfg{ | 
					
						
							|  |  |  | 			PluginsPath: "path2", | 
					
						
							|  |  |  | 			PluginSettings: setting.PluginSettings{ | 
					
						
							|  |  |  | 				"foo": map[string]string{ | 
					
						
							|  |  |  | 					"path": "path3", | 
					
						
							|  |  |  | 				}, | 
					
						
							|  |  |  | 				"bar": map[string]string{ | 
					
						
							|  |  |  | 					"url": "https://grafana.plugin", | 
					
						
							|  |  |  | 				}, | 
					
						
							|  |  |  | 			}, | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		s := ProvideService(cfg, pCfg) | 
					
						
							|  |  |  | 		srcs := s.List(context.Background()) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-03-20 21:35:49 +08:00
										 |  |  | 		ctx := context.Background() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		require.Len(t, srcs, 3) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-06-08 18:21:19 +08:00
										 |  |  | 		require.Equal(t, srcs[0].PluginClass(ctx), plugins.ClassCore) | 
					
						
							| 
									
										
										
										
											2023-03-20 21:35:49 +08:00
										 |  |  | 		require.Equal(t, srcs[0].PluginURIs(ctx), []string{"app/plugins/datasource", "app/plugins/panel"}) | 
					
						
							|  |  |  | 		sig, exists := srcs[0].DefaultSignature(ctx) | 
					
						
							|  |  |  | 		require.True(t, exists) | 
					
						
							| 
									
										
										
										
											2023-06-08 18:21:19 +08:00
										 |  |  | 		require.Equal(t, plugins.SignatureStatusInternal, sig.Status) | 
					
						
							| 
									
										
										
										
											2023-03-20 21:35:49 +08:00
										 |  |  | 		require.Equal(t, plugins.SignatureType(""), sig.Type) | 
					
						
							|  |  |  | 		require.Equal(t, "", sig.SigningOrg) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-06-08 18:21:19 +08:00
										 |  |  | 		require.Equal(t, srcs[1].PluginClass(ctx), plugins.ClassBundled) | 
					
						
							| 
									
										
										
										
											2023-03-20 21:35:49 +08:00
										 |  |  | 		require.Equal(t, srcs[1].PluginURIs(ctx), []string{"path1"}) | 
					
						
							|  |  |  | 		sig, exists = srcs[1].DefaultSignature(ctx) | 
					
						
							|  |  |  | 		require.False(t, exists) | 
					
						
							|  |  |  | 		require.Equal(t, plugins.Signature{}, sig) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-06-08 18:21:19 +08:00
										 |  |  | 		require.Equal(t, srcs[2].PluginClass(ctx), plugins.ClassExternal) | 
					
						
							| 
									
										
										
										
											2023-03-20 21:35:49 +08:00
										 |  |  | 		require.Equal(t, srcs[2].PluginURIs(ctx), []string{"path2", "path3"}) | 
					
						
							|  |  |  | 		sig, exists = srcs[2].DefaultSignature(ctx) | 
					
						
							|  |  |  | 		require.False(t, exists) | 
					
						
							|  |  |  | 		require.Equal(t, plugins.Signature{}, sig) | 
					
						
							| 
									
										
										
										
											2023-02-28 22:27:11 +08:00
										 |  |  | 	}) | 
					
						
							|  |  |  | } |