Harden image admission, resource recovery and session renewal
Add exact-image compatibility policy, experimental admission, paginated build history and shared reauthentication checks. Preserve uncertain Docker creation records, bound frontend resource waits and renew runtime sessions proactively. Lazy-load and split Monaco, add regression and opt-in live Docker fault tests, and record full race and real-browser acceptance results.
This commit is contained in:
@@ -49,6 +49,21 @@ func cookieValue(cs []*http.Cookie, name string) string {
|
||||
}
|
||||
return ""
|
||||
}
|
||||
func TestRefreshSessionLookupFailureIsServerError(t *testing.T) {
|
||||
a, req := authFixture(t)
|
||||
w := req("POST", "/api/login", `{"username":"alice","password":"password-123"}`, "", nil)
|
||||
cookies := w.Result().Cookies()
|
||||
a.s.Close()
|
||||
r := httptest.NewRequest("POST", "/api/refresh", nil)
|
||||
for _, c := range cookies {
|
||||
r.AddCookie(c)
|
||||
}
|
||||
w = httptest.NewRecorder()
|
||||
a.refresh(w, r)
|
||||
if w.Code != 500 || len(w.Result().Cookies()) != 0 {
|
||||
t.Fatal(w.Code, w.Header(), w.Body.String())
|
||||
}
|
||||
}
|
||||
func TestAccessRefreshLifecycle(t *testing.T) {
|
||||
a, req := authFixture(t)
|
||||
w := req("POST", "/api/login", `{"username":"alice","password":"password-123"}`, "", nil)
|
||||
@@ -92,9 +107,12 @@ func TestAccessRefreshLifecycle(t *testing.T) {
|
||||
if cookieValue(fresh, "dsh_refresh") == cookieValue(cs, "dsh_refresh") {
|
||||
t.Fatal("not rotated")
|
||||
}
|
||||
if w = req("POST", "/api/refresh", "", csrf, cs); w.Code != 401 {
|
||||
if w = req("POST", "/api/refresh", "", csrf, cs); w.Code != 409 {
|
||||
t.Fatal("replay accepted", w.Code)
|
||||
}
|
||||
if len(w.Result().Cookies()) != 0 || !strings.Contains(w.Body.String(), "refresh_conflict") {
|
||||
t.Fatal("conflict must not issue credentials", w.Header(), w.Body.String())
|
||||
}
|
||||
if w = req("GET", "/api/me", "", "", fresh); w.Code != 200 {
|
||||
t.Fatal(w.Code)
|
||||
}
|
||||
@@ -104,7 +122,7 @@ func TestAccessRefreshLifecycle(t *testing.T) {
|
||||
if w = req("GET", "/api/me", "", "", fresh); w.Code != 401 {
|
||||
t.Fatal("logout access valid")
|
||||
}
|
||||
if w = req("POST", "/api/refresh", "", csrf, fresh); w.Code == 200 {
|
||||
if w = req("POST", "/api/refresh", "", csrf, fresh); w.Code != 403 {
|
||||
t.Fatal("logout refresh valid")
|
||||
}
|
||||
}
|
||||
@@ -180,7 +198,7 @@ func TestRefreshOriginConcurrentRotationAndJWTBinding(t *testing.T) {
|
||||
for code := range codes {
|
||||
counts[code]++
|
||||
}
|
||||
if counts[200] != 1 || counts[401] != 1 {
|
||||
if counts[200] != 1 || counts[409] != 1 {
|
||||
t.Fatal(counts)
|
||||
}
|
||||
b := New(a.s, a.root)
|
||||
|
||||
Reference in New Issue
Block a user