mirror of https://github.com/grafana/grafana
Settings: Add setting for hiding version number for anonymous users (#24919)
* Settings: Add setting for hiding version number for anonymous users Fixes #12925 * Hide version string from footer when unavailable * Settings: Test frontend settings with hide version for anonymous users * Settings: Add hide version variable to frontend settings * Make AnonymousHideVersion non-global Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com> * Settings: Improve test neighbor friendliness, reset state before and after * Settings: Use T.Cleanup Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>pull/25647/head
parent
370791d50b
commit
80e9546cec
@ -0,0 +1,125 @@ |
|||||||
|
package api |
||||||
|
|
||||||
|
import ( |
||||||
|
"encoding/json" |
||||||
|
"net/http" |
||||||
|
"net/http/httptest" |
||||||
|
"path" |
||||||
|
"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: path.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) |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue