mirror of https://github.com/grafana/grafana.git
				
				
				
			
		
			
				
	
	
		
			126 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			126 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Go
		
	
	
	
package api
 | 
						|
 | 
						|
import (
 | 
						|
	"encoding/json"
 | 
						|
	"net/http"
 | 
						|
	"net/http/httptest"
 | 
						|
	"path/filepath"
 | 
						|
	"testing"
 | 
						|
 | 
						|
	"github.com/stretchr/testify/assert"
 | 
						|
 | 
						|
	"github.com/stretchr/testify/require"
 | 
						|
 | 
						|
	"github.com/grafana/grafana/pkg/services/rendering"
 | 
						|
 | 
						|
	"github.com/grafana/grafana/pkg/services/licensing"
 | 
						|
 | 
						|
	"github.com/grafana/grafana/pkg/bus"
 | 
						|
	"github.com/grafana/grafana/pkg/services/sqlstore"
 | 
						|
 | 
						|
	"github.com/grafana/grafana/pkg/middleware"
 | 
						|
	"gopkg.in/macaron.v1"
 | 
						|
 | 
						|
	"github.com/grafana/grafana/pkg/setting"
 | 
						|
)
 | 
						|
 | 
						|
func setupTestEnvironment(t *testing.T, cfg *setting.Cfg) (*macaron.Macaron, *HTTPServer) {
 | 
						|
	t.Helper()
 | 
						|
	sqlstore.InitTestDB(t)
 | 
						|
 | 
						|
	{
 | 
						|
		oldVersion := setting.BuildVersion
 | 
						|
		oldCommit := setting.BuildCommit
 | 
						|
		oldEnv := setting.Env
 | 
						|
		t.Cleanup(func() {
 | 
						|
			setting.BuildVersion = oldVersion
 | 
						|
			setting.BuildCommit = oldCommit
 | 
						|
			setting.Env = oldEnv
 | 
						|
		})
 | 
						|
	}
 | 
						|
 | 
						|
	bus.ClearBusHandlers()
 | 
						|
	bus.AddHandler("sql", sqlstore.GetPluginSettings)
 | 
						|
	t.Cleanup(bus.ClearBusHandlers)
 | 
						|
 | 
						|
	r := &rendering.RenderingService{Cfg: cfg}
 | 
						|
 | 
						|
	hs := &HTTPServer{
 | 
						|
		Cfg:           cfg,
 | 
						|
		Bus:           bus.GetBus(),
 | 
						|
		License:       &licensing.OSSLicensingService{},
 | 
						|
		RenderService: r,
 | 
						|
	}
 | 
						|
 | 
						|
	m := macaron.New()
 | 
						|
	m.Use(middleware.GetContextHandler(nil, nil, nil))
 | 
						|
	m.Use(macaron.Renderer(macaron.RenderOptions{
 | 
						|
		Directory:  filepath.Join(setting.StaticRootPath, "views"),
 | 
						|
		IndentJSON: true,
 | 
						|
		Delims:     macaron.Delims{Left: "[[", Right: "]]"},
 | 
						|
	}))
 | 
						|
	m.Get("/api/frontend/settings/", hs.GetFrontendSettings)
 | 
						|
 | 
						|
	return m, hs
 | 
						|
}
 | 
						|
 | 
						|
func TestHTTPServer_GetFrontendSettings_hideVersionAnonyomus(t *testing.T) {
 | 
						|
	type buildInfo struct {
 | 
						|
		Version string `json:"version"`
 | 
						|
		Commit  string `json:"commit"`
 | 
						|
		Env     string `json:"env"`
 | 
						|
	}
 | 
						|
	type settings struct {
 | 
						|
		BuildInfo buildInfo `json:"buildInfo"`
 | 
						|
	}
 | 
						|
 | 
						|
	cfg := setting.NewCfg()
 | 
						|
	m, hs := setupTestEnvironment(t, cfg)
 | 
						|
 | 
						|
	req := httptest.NewRequest(http.MethodGet, "/api/frontend/settings", nil)
 | 
						|
 | 
						|
	setting.BuildVersion = "7.8.9"
 | 
						|
	setting.BuildCommit = "01234567"
 | 
						|
	setting.Env = "testing"
 | 
						|
 | 
						|
	tests := []struct {
 | 
						|
		hideVersion bool
 | 
						|
		expected    settings
 | 
						|
	}{
 | 
						|
		{
 | 
						|
			hideVersion: false,
 | 
						|
			expected: settings{
 | 
						|
				BuildInfo: buildInfo{
 | 
						|
					Version: setting.BuildVersion,
 | 
						|
					Commit:  setting.BuildCommit,
 | 
						|
					Env:     setting.Env,
 | 
						|
				},
 | 
						|
			},
 | 
						|
		},
 | 
						|
		{
 | 
						|
			hideVersion: true,
 | 
						|
			expected: settings{
 | 
						|
				BuildInfo: buildInfo{
 | 
						|
					Version: "",
 | 
						|
					Commit:  "",
 | 
						|
					Env:     setting.Env,
 | 
						|
				},
 | 
						|
			},
 | 
						|
		},
 | 
						|
	}
 | 
						|
 | 
						|
	for _, test := range tests {
 | 
						|
		hs.Cfg.AnonymousHideVersion = test.hideVersion
 | 
						|
		expected := test.expected
 | 
						|
 | 
						|
		recorder := httptest.NewRecorder()
 | 
						|
		m.ServeHTTP(recorder, req)
 | 
						|
		got := settings{}
 | 
						|
		err := json.Unmarshal(recorder.Body.Bytes(), &got)
 | 
						|
		require.NoError(t, err)
 | 
						|
		require.GreaterOrEqual(t, 400, recorder.Code, "status codes higher than 400 indicates a failure")
 | 
						|
 | 
						|
		assert.EqualValues(t, expected, got)
 | 
						|
	}
 | 
						|
}
 |