Adding upstream version 0.28.1.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
88f1d47ab6
commit
e28c88ef14
933 changed files with 194711 additions and 0 deletions
159
core/settings_query_test.go
Normal file
159
core/settings_query_test.go
Normal file
|
@ -0,0 +1,159 @@
|
|||
package core_test
|
||||
|
||||
import (
|
||||
"os"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"github.com/pocketbase/pocketbase/core"
|
||||
"github.com/pocketbase/pocketbase/tests"
|
||||
"github.com/pocketbase/pocketbase/tools/types"
|
||||
)
|
||||
|
||||
func TestReloadSettings(t *testing.T) {
|
||||
app, _ := tests.NewTestApp()
|
||||
defer app.Cleanup()
|
||||
|
||||
// cleanup all stored settings
|
||||
// ---
|
||||
if _, err := app.DB().NewQuery("DELETE from _params;").Execute(); err != nil {
|
||||
t.Fatalf("Failed to delete all test settings: %v", err)
|
||||
}
|
||||
|
||||
// check if the new settings are saved in the db
|
||||
// ---
|
||||
app.Settings().Meta.AppName = "test_name_after_delete"
|
||||
|
||||
app.ResetEventCalls()
|
||||
if err := app.ReloadSettings(); err != nil {
|
||||
t.Fatalf("Failed to reload the settings after delete: %v", err)
|
||||
}
|
||||
testEventCalls(t, app, map[string]int{
|
||||
"OnModelCreate": 1,
|
||||
"OnModelCreateExecute": 1,
|
||||
"OnModelAfterCreateSuccess": 1,
|
||||
"OnModelValidate": 1,
|
||||
"OnSettingsReload": 1,
|
||||
})
|
||||
|
||||
param := &core.Param{}
|
||||
err := app.ModelQuery(param).Model("settings", param)
|
||||
if err != nil {
|
||||
t.Fatalf("Expected new settings to be persisted, got %v", err)
|
||||
}
|
||||
|
||||
if !strings.Contains(param.Value.String(), "test_name_after_delete") {
|
||||
t.Fatalf("Expected to find AppName test_name_after_delete in\n%s", param.Value.String())
|
||||
}
|
||||
|
||||
// change the db entry and reload the app settings (ensure that there was no db update)
|
||||
// ---
|
||||
param.Value = types.JSONRaw([]byte(`{"meta": {"appName":"test_name_after_update"}}`))
|
||||
if err := app.Save(param); err != nil {
|
||||
t.Fatalf("Failed to update the test settings: %v", err)
|
||||
}
|
||||
|
||||
app.ResetEventCalls()
|
||||
if err := app.ReloadSettings(); err != nil {
|
||||
t.Fatalf("Failed to reload app settings: %v", err)
|
||||
}
|
||||
testEventCalls(t, app, map[string]int{
|
||||
"OnSettingsReload": 1,
|
||||
})
|
||||
|
||||
// try to reload again without doing any changes
|
||||
// ---
|
||||
app.ResetEventCalls()
|
||||
if err := app.ReloadSettings(); err != nil {
|
||||
t.Fatalf("Failed to reload app settings without change: %v", err)
|
||||
}
|
||||
testEventCalls(t, app, map[string]int{
|
||||
"OnSettingsReload": 1,
|
||||
})
|
||||
|
||||
if app.Settings().Meta.AppName != "test_name_after_update" {
|
||||
t.Fatalf("Expected AppName %q, got %q", "test_name_after_update", app.Settings().Meta.AppName)
|
||||
}
|
||||
}
|
||||
|
||||
func TestReloadSettingsWithEncryption(t *testing.T) {
|
||||
app, _ := tests.NewTestApp()
|
||||
defer app.Cleanup()
|
||||
|
||||
os.Setenv("pb_test_env", strings.Repeat("a", 32))
|
||||
|
||||
// cleanup all stored settings
|
||||
// ---
|
||||
if _, err := app.DB().NewQuery("DELETE from _params;").Execute(); err != nil {
|
||||
t.Fatalf("Failed to delete all test settings: %v", err)
|
||||
}
|
||||
|
||||
// check if the new settings are saved in the db
|
||||
// ---
|
||||
app.Settings().Meta.AppName = "test_name_after_delete"
|
||||
|
||||
app.ResetEventCalls()
|
||||
if err := app.ReloadSettings(); err != nil {
|
||||
t.Fatalf("Failed to reload the settings after delete: %v", err)
|
||||
}
|
||||
testEventCalls(t, app, map[string]int{
|
||||
"OnModelCreate": 1,
|
||||
"OnModelCreateExecute": 1,
|
||||
"OnModelAfterCreateSuccess": 1,
|
||||
"OnModelValidate": 1,
|
||||
"OnSettingsReload": 1,
|
||||
})
|
||||
|
||||
param := &core.Param{}
|
||||
err := app.ModelQuery(param).Model("settings", param)
|
||||
if err != nil {
|
||||
t.Fatalf("Expected new settings to be persisted, got %v", err)
|
||||
}
|
||||
rawValue := param.Value.String()
|
||||
if rawValue == "" || strings.Contains(rawValue, "test_name") {
|
||||
t.Fatalf("Expected inserted settings to be encrypted, found\n%s", rawValue)
|
||||
}
|
||||
|
||||
// change and reload the app settings (ensure that there was no db update)
|
||||
// ---
|
||||
app.Settings().Meta.AppName = "test_name_after_update"
|
||||
if err := app.Save(app.Settings()); err != nil {
|
||||
t.Fatalf("Failed to update app settings: %v", err)
|
||||
}
|
||||
|
||||
// try to reload again without doing any changes
|
||||
// ---
|
||||
app.ResetEventCalls()
|
||||
if err := app.ReloadSettings(); err != nil {
|
||||
t.Fatalf("Failed to reload app settings: %v", err)
|
||||
}
|
||||
testEventCalls(t, app, map[string]int{
|
||||
"OnSettingsReload": 1,
|
||||
})
|
||||
|
||||
// refetch the settings param to ensure that the new value was stored encrypted
|
||||
err = app.ModelQuery(param).Model("settings", param)
|
||||
if err != nil {
|
||||
t.Fatalf("Expected new settings to be persisted, got %v", err)
|
||||
}
|
||||
rawValue = param.Value.String()
|
||||
if rawValue == "" || strings.Contains(rawValue, "test_name") {
|
||||
t.Fatalf("Expected updated settings to be encrypted, found\n%s", rawValue)
|
||||
}
|
||||
|
||||
if app.Settings().Meta.AppName != "test_name_after_update" {
|
||||
t.Fatalf("Expected AppName %q, got %q", "test_name_after_update", app.Settings().Meta.AppName)
|
||||
}
|
||||
}
|
||||
|
||||
func testEventCalls(t *testing.T, app *tests.TestApp, events map[string]int) {
|
||||
if len(events) != len(app.EventCalls) {
|
||||
t.Fatalf("Expected events doesn't match:\n%v\ngot\n%v", events, app.EventCalls)
|
||||
}
|
||||
|
||||
for name, total := range events {
|
||||
if v, ok := app.EventCalls[name]; !ok || v != total {
|
||||
t.Fatalf("Expected events doesn't exist or match:\n%v\ngot\n%v", events, app.EventCalls)
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue