sultan token tenant update: Mandanten nachträglich ändern
Weitere Compose-Stacks eines Kunden sind der Regelfall; bisher ließen sich Domains und Routenlimit nur per delete + neu anlegen (und damit ohne Knoten) ändern. Die Änderung liegt bewusst nur auf dem Server: Ein Agent darf sich keine Domains selbst freigeben. - Domains und Features werden hinzugefügt/entfernt statt ersetzt; unbekannter Eintrag beim Entfernen ist ein Fehler, die letzte Domain bleibt - Verlängerung in die Zukunft setzt expired auf active (der Ablauf-Job setzt das nie zurück); Quarantäne und Zahlungsverzug bleiben - Wechsel auf kommerziell mit vergangenem valid_until verlangt --valid-until Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
dd93277750
commit
c2d6dd694f
7 files changed
+413
-25
No files matched your search
@@ -453,6 +453,36 @@ func TestRefreshLoopAppliesTenantChanges(t *testing.T) {
|
||||
})
|
||||
}
|
||||
|
||||
// Der Regelfall beim Kunden: Der Dienst meldet eine Domain, die erst danach
|
||||
// beim Mandanten eingetragen wird. Die Route erscheint ohne neue Meldung des
|
||||
// Agents; entzieht man die Domain wieder, verschwindet sie.
|
||||
func TestRefreshLoopAppliesDomainChanges(t *testing.T) {
|
||||
s, _ := startServer(t, func(c *Config) { c.RefreshInterval = 20 * time.Millisecond })
|
||||
createTenant(t, s, "kunde", "kunde.de")
|
||||
agent := newAgent(t, s, issueToken(t, s, "kunde"))
|
||||
agent.enroll(t, "n1")
|
||||
agent.connect(t)
|
||||
eventually(t, "Stream", func() bool { return s.hub.Connected("n1") })
|
||||
agent.do(t, http.MethodPost, "/api/v1/state", wpState("neu.de"))
|
||||
eventually(t, "Verstoß: keine Route", func() bool { return providerConfig(t, s) == "{}" })
|
||||
|
||||
setDomains := func(domains ...string) {
|
||||
t.Helper()
|
||||
tn, err := s.store.GetTenant(ctx, "kunde")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
tn.AllowedDomains = domains
|
||||
if _, err := s.store.UpdateTenant(ctx, tn); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
setDomains("kunde.de", "neu.de")
|
||||
eventually(t, "Route nach Freigabe", func() bool { return strings.Contains(providerConfig(t, s), "neu.de") })
|
||||
setDomains("kunde.de")
|
||||
eventually(t, "Route nach Entzug weg", func() bool { return providerConfig(t, s) == "{}" })
|
||||
}
|
||||
|
||||
func TestDirectory(t *testing.T) {
|
||||
s, _ := startServer(t)
|
||||
createTenant(t, s, "kunde", "kunde.de")
|
||||
|
||||
Reference in new issue
Block a user