fix: align admin behavior and Kratos integrations
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
package conf
|
||||
|
||||
import (
|
||||
"sync"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestRuntimeSnapshotsAreImmutable(t *testing.T) {
|
||||
runtime := NewRuntime(&Data{Database: &Data_Database{Name: "first"}}, &AdminBackend{RouterPrefix: "/api", Jwt: &AdminBackend_JWT{SigningKey: "secret"}})
|
||||
admin := runtime.Admin()
|
||||
admin.RouterPrefix = "/changed"
|
||||
admin.Jwt.SigningKey = "changed"
|
||||
data := runtime.Data()
|
||||
data.Database.Name = "changed"
|
||||
|
||||
if got := runtime.Admin(); got.RouterPrefix != "/api" || got.Jwt.SigningKey != "secret" {
|
||||
t.Fatalf("admin snapshot mutated: %+v", got)
|
||||
}
|
||||
if got := runtime.Data().Database.Name; got != "first" {
|
||||
t.Fatalf("data snapshot mutated: %s", got)
|
||||
}
|
||||
}
|
||||
|
||||
func TestRuntimeConcurrentReplaceAndRead(t *testing.T) {
|
||||
runtime := NewRuntime(&Data{Database: &Data_Database{Name: "initial"}}, &AdminBackend{Jwt: &AdminBackend_JWT{SigningKey: "initial"}})
|
||||
var wait sync.WaitGroup
|
||||
for worker := 0; worker < 8; worker++ {
|
||||
wait.Add(1)
|
||||
go func() {
|
||||
defer wait.Done()
|
||||
for index := 0; index < 500; index++ {
|
||||
_ = runtime.Admin().Jwt.SigningKey
|
||||
_ = runtime.Data().Database.Name
|
||||
}
|
||||
}()
|
||||
}
|
||||
for index := 0; index < 500; index++ {
|
||||
runtime.Replace(&Data{Database: &Data_Database{Name: "next"}}, &AdminBackend{Jwt: &AdminBackend_JWT{SigningKey: "next"}})
|
||||
}
|
||||
wait.Wait()
|
||||
}
|
||||
Reference in New Issue
Block a user