mirror of https://github.com/grafana/grafana.git
				
				
				
			
		
			
				
	
	
		
			74 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Go
		
	
	
	
| package elasticsearch
 | |
| 
 | |
| import (
 | |
| 	"context"
 | |
| 	"encoding/json"
 | |
| 	"testing"
 | |
| 
 | |
| 	"github.com/grafana/grafana-plugin-sdk-go/backend"
 | |
| 	"github.com/stretchr/testify/require"
 | |
| 
 | |
| 	"github.com/grafana/grafana/pkg/infra/httpclient"
 | |
| )
 | |
| 
 | |
| type datasourceInfo struct {
 | |
| 	TimeField                  any    `json:"timeField"`
 | |
| 	MaxConcurrentShardRequests int64  `json:"maxConcurrentShardRequests"`
 | |
| 	Interval                   string `json:"interval"`
 | |
| }
 | |
| 
 | |
| func TestNewInstanceSettings(t *testing.T) {
 | |
| 	t.Run("fields exist", func(t *testing.T) {
 | |
| 		dsInfo := datasourceInfo{
 | |
| 			TimeField:                  "@timestamp",
 | |
| 			MaxConcurrentShardRequests: 5,
 | |
| 		}
 | |
| 		settingsJSON, err := json.Marshal(dsInfo)
 | |
| 		require.NoError(t, err)
 | |
| 
 | |
| 		dsSettings := backend.DataSourceInstanceSettings{
 | |
| 			JSONData: json.RawMessage(settingsJSON),
 | |
| 		}
 | |
| 
 | |
| 		_, err = newInstanceSettings(httpclient.NewProvider())(context.Background(), dsSettings)
 | |
| 		require.NoError(t, err)
 | |
| 	})
 | |
| 
 | |
| 	t.Run("timeField", func(t *testing.T) {
 | |
| 		t.Run("is nil", func(t *testing.T) {
 | |
| 			dsInfo := datasourceInfo{
 | |
| 				MaxConcurrentShardRequests: 5,
 | |
| 				Interval:                   "Daily",
 | |
| 			}
 | |
| 
 | |
| 			settingsJSON, err := json.Marshal(dsInfo)
 | |
| 			require.NoError(t, err)
 | |
| 
 | |
| 			dsSettings := backend.DataSourceInstanceSettings{
 | |
| 				JSONData: json.RawMessage(settingsJSON),
 | |
| 			}
 | |
| 
 | |
| 			_, err = newInstanceSettings(httpclient.NewProvider())(context.Background(), dsSettings)
 | |
| 			require.EqualError(t, err, "timeField cannot be cast to string")
 | |
| 		})
 | |
| 
 | |
| 		t.Run("is empty", func(t *testing.T) {
 | |
| 			dsInfo := datasourceInfo{
 | |
| 				MaxConcurrentShardRequests: 5,
 | |
| 				Interval:                   "Daily",
 | |
| 				TimeField:                  "",
 | |
| 			}
 | |
| 
 | |
| 			settingsJSON, err := json.Marshal(dsInfo)
 | |
| 			require.NoError(t, err)
 | |
| 
 | |
| 			dsSettings := backend.DataSourceInstanceSettings{
 | |
| 				JSONData: json.RawMessage(settingsJSON),
 | |
| 			}
 | |
| 
 | |
| 			_, err = newInstanceSettings(httpclient.NewProvider())(context.Background(), dsSettings)
 | |
| 			require.EqualError(t, err, "elasticsearch time field name is required")
 | |
| 		})
 | |
| 	})
 | |
| }
 |