docs: hand over the day, and what is still open
The list this session started with is empty, and so is the one that grew during it — eleven items reported by somebody using the app while it was being built, taken in the order they arrived. Two traps worth the next session's time, both found the hard way. A Rune's manifest `version` has to be bumped when its variables change: the panel keys its catalogue on that number, so new fields with an unchanged version are invisible, the upload succeeds, and nothing reports it. And the restart button's `confirm()` cannot be driven from automation — a browser modal blocks the renderer — which is the point, but it means an agent testing it has to ask a person to press OK. Three things are reported and not fixed: Gmail showing "an unknown account" because the profile call fails into a log line that a restart erases, an unidentified "something went wrong" on the integrations page, and three Danish strings in a script block that the i18n guard cannot see because it only reads markup. "Det næste, jeg selv ville tage" was three items that are now done. It says what is actually next. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
e004696362
commit
95378a1199
@@ -1280,3 +1280,39 @@ func TestTheGmailClientIsAdminsOnlyAndSessionsOnly(t *testing.T) {
|
||||
t.Errorf("with an admin's API token: status %d, want 403", resp.StatusCode)
|
||||
}
|
||||
}
|
||||
|
||||
// Rotating the mail-to-task address, which reported "something went wrong" in
|
||||
// production with nothing in the error log — the combination that means the 500 did
|
||||
// not come through `s.internal()`.
|
||||
func TestTheMailAddressCanBeRotated(t *testing.T) {
|
||||
ts := newTestServer(t)
|
||||
ts.bootstrap(t)
|
||||
|
||||
resp, before := ts.do(t, "GET", "/api/v1/mail-address", nil)
|
||||
if resp.StatusCode != http.StatusOK {
|
||||
t.Fatalf("get: status %d, body %v", resp.StatusCode, before)
|
||||
}
|
||||
first, _ := before["address"].(string)
|
||||
if first == "" {
|
||||
t.Fatal("no address to begin with")
|
||||
}
|
||||
|
||||
resp, after := ts.do(t, "POST", "/api/v1/mail-address/rotate", nil)
|
||||
if resp.StatusCode != http.StatusOK {
|
||||
t.Fatalf("rotate: status %d, body %v", resp.StatusCode, after)
|
||||
}
|
||||
second, _ := after["address"].(string)
|
||||
if second == "" || second == first {
|
||||
t.Errorf("the address did not change: %q → %q", first, second)
|
||||
}
|
||||
|
||||
// And twice in a row, which is what somebody does when the first one appeared
|
||||
// to fail.
|
||||
resp, again := ts.do(t, "POST", "/api/v1/mail-address/rotate", nil)
|
||||
if resp.StatusCode != http.StatusOK {
|
||||
t.Fatalf("second rotate: status %d, body %v", resp.StatusCode, again)
|
||||
}
|
||||
if third, _ := again["address"].(string); third == second {
|
||||
t.Error("the second rotation returned the same address")
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user