Preferences: Support Create+Update+Delete over apiserver (#111715)
This commit is contained in:
@@ -85,6 +85,8 @@ func TestIntegrationPreferences(t *testing.T) {
|
||||
}, &raw)
|
||||
require.Equal(t, http.StatusOK, legacyResponse.Response.StatusCode, "create preference for user")
|
||||
|
||||
adminPrefsName := "user-" + clientAdmin.Args.User.Identity.GetIdentifier()
|
||||
|
||||
// Admin has access to all three (namespace, team, and user)
|
||||
rsp, err = clientAdmin.Resource.List(ctx, metav1.ListOptions{})
|
||||
require.NoError(t, err)
|
||||
@@ -95,9 +97,31 @@ func TestIntegrationPreferences(t *testing.T) {
|
||||
require.Equal(t, []string{
|
||||
"namespace",
|
||||
fmt.Sprintf("team-%s", helper.Org1.Staff.UID),
|
||||
fmt.Sprintf("user-%s", clientAdmin.Args.User.Identity.GetIdentifier()),
|
||||
adminPrefsName,
|
||||
}, names)
|
||||
|
||||
obj, err := clientAdmin.Resource.Get(ctx, adminPrefsName, metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
jj, err := json.MarshalIndent(obj.Object["spec"], "", " ")
|
||||
require.NoError(t, err)
|
||||
require.JSONEq(t, `{
|
||||
"weekStart":"saturday"
|
||||
}`, string(jj))
|
||||
obj.Object["spec"] = map[string]any{
|
||||
"weekStart": "saturday",
|
||||
"regionalFormat": "dd/mm/yyyy",
|
||||
}
|
||||
|
||||
// Set the regional format via k8s API
|
||||
obj, err = clientAdmin.Resource.Update(ctx, obj, metav1.UpdateOptions{})
|
||||
require.NoError(t, err)
|
||||
jj, err = json.MarshalIndent(obj.Object["spec"], "", " ")
|
||||
require.NoError(t, err)
|
||||
require.JSONEq(t, `{
|
||||
"weekStart": "saturday",
|
||||
"regionalFormat": "dd/mm/yyyy"
|
||||
}`, string(jj))
|
||||
|
||||
// The viewer should only have namespace (eg org level) permissions
|
||||
rsp, err = clientViewer.Resource.List(ctx, metav1.ListOptions{})
|
||||
require.NoError(t, err)
|
||||
@@ -118,14 +142,14 @@ func TestIntegrationPreferences(t *testing.T) {
|
||||
}, &shim{})
|
||||
require.Equal(t, http.StatusOK, bootdata.Response.StatusCode, "get bootdata preferences")
|
||||
|
||||
jj, _ := json.Marshal(bootdata.Result.User)
|
||||
jj, _ = json.Marshal(bootdata.Result.User)
|
||||
require.JSONEq(t, `{
|
||||
"timezone":"africa",
|
||||
"weekStart":"saturday",
|
||||
"theme":"dark",
|
||||
"language":"en-US", `+ // FROM global default!
|
||||
`"regionalFormat":""
|
||||
}`, string(jj))
|
||||
`"regionalFormat": ""}`, // why empty?
|
||||
string(jj))
|
||||
|
||||
merged := apis.DoRequest(helper, apis.RequestParams{
|
||||
User: clientAdmin.Args.User,
|
||||
@@ -133,9 +157,10 @@ func TestIntegrationPreferences(t *testing.T) {
|
||||
Path: "/apis/preferences.grafana.app/v1alpha1/namespaces/default/preferences/merged",
|
||||
}, &preferences.Preferences{})
|
||||
require.Equal(t, http.StatusOK, merged.Response.StatusCode, "get merged preferences")
|
||||
require.Equal(t, "saturday", *merged.Result.Spec.WeekStart) // from user
|
||||
require.Equal(t, "africa", *merged.Result.Spec.Timezone) // from team
|
||||
require.Equal(t, "dark", *merged.Result.Spec.Theme) // from org
|
||||
require.Equal(t, "en-US", *merged.Result.Spec.Language) // settings.ini
|
||||
require.Equal(t, "saturday", *merged.Result.Spec.WeekStart) // from user
|
||||
require.Equal(t, "africa", *merged.Result.Spec.Timezone) // from team
|
||||
require.Equal(t, "dark", *merged.Result.Spec.Theme) // from org
|
||||
require.Equal(t, "en-US", *merged.Result.Spec.Language) // settings.ini
|
||||
require.Equal(t, "dd/mm/yyyy", *merged.Result.Spec.RegionalFormat) // from user update
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user