R-970: the box's hub key opens no route; Data tab leftovers; R-1103: the install form's dead branches
gates / gates (push) Successful in 48s
gates / gates (push) Successful in 48s
R-970: /api/config, /api/config/hash, /api/config/apply removed (they read and replaced controller.yaml with every secret, reachable with the box's own hub API key, unsigned; nothing called them). The hub-key Bearer door on /api/selfupdate/ and /api/geo/ and the matching CSRF exemption are gone; the dashboard keeps using those with a session. The route table is buildMux, so a test drives the real one. Data tab: the export password field is autocomplete=new-password with a non-login name; the 2nd copy's status rows that repeated the form are gone (the no-target reason moves into the form). R-1103: app_fields.html loses its installed-only branches (no page serves them since R-1095); the tests that rendered that dead path are retired, their rules asserted on the settings tab (R-694 moved there). Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
This commit is contained in:
1 parent
8fe46a1313
commit
f037be7a6a
25 files changed
+331
-2987
No files matched your search
@@ -388,6 +388,7 @@ var lfOffDriveOrPBS = regexp.MustCompile(`(?i)off-drive|\bPBS\b`)
|
||||
// The Data tab has ONE „Biztonsagi mentes" section, with no „off-drive" and no „PBS" in either language.
|
||||
// RED-PROOF (2026-10-16, REPORT): with the old `tier2_config.a_2_mentes_egy_masik` text put back in hu.json, this
|
||||
// failed at „hu: off-drive/PBS on the Data tab"; with the second <div class="app-section"> put back, at „2 sections".
|
||||
// v0.322.0: with the status rows put back, at „status rows repeat the form"; without autocomplete, at „lacks".
|
||||
func TestAppData_OneBackupSection(t *testing.T) {
|
||||
if !lfOffDriveOrPBS.MatchString("a teljes rendszermentés/PBS — off-drive") {
|
||||
t.Fatal("control: the matcher does not find the words it looks for")
|
||||
@@ -407,9 +408,19 @@ func TestAppData_OneBackupSection(t *testing.T) {
|
||||
if n := strings.Count(html, `data-backup-section="1"`); n != 1 {
|
||||
t.Errorf("%s: %d backup sections, want 1", lang, n)
|
||||
}
|
||||
if !strings.Contains(html, `data-backup-row="nightly"`) || !strings.Contains(html, `data-backup-row="second"`) ||
|
||||
!strings.Contains(html, `data-second-backup-form="1"`) {
|
||||
t.Errorf("%s: the nightly row, the 2nd-copy row or its form is missing", lang)
|
||||
if !strings.Contains(html, `data-backup-row="nightly"`) || !strings.Contains(html, `data-second-backup-form="1"`) {
|
||||
t.Errorf("%s: the nightly row or the 2nd-copy form is missing", lang)
|
||||
}
|
||||
// v0.322.0: the 2nd copy's state is said once — by the form; no status rows repeat it.
|
||||
if strings.Contains(html, `data-backup-row="second"`) || strings.Contains(html, `data-backup-row="target"`) {
|
||||
t.Errorf("%s: the 2nd copy's status rows repeat the form", lang)
|
||||
}
|
||||
if n := strings.Count(html, `<label for="target">`); n != 1 {
|
||||
t.Errorf("%s: the target drive is labelled %d times, want once (the form)", lang, n)
|
||||
}
|
||||
// The export key: the browser must not fill a saved login into it.
|
||||
if !strings.Contains(html, `name="fab_encryption_key" autocomplete="new-password"`) {
|
||||
t.Errorf("%s: the export password field lacks autocomplete=\"new-password\" or still has a login-like name", lang)
|
||||
}
|
||||
if m := lfOffDriveOrPBS.FindString(html); m != "" {
|
||||
t.Errorf("%s: off-drive/PBS on the Data tab (%q)", lang, m)
|
||||
|
||||
Reference in new issue
Block a user