Attempt to fix TestExportUserGPGKeys (#22159)
There are repeated failures with this test which appear related to failures in getTokenForLoggedInUser. It is difficult to further evaluate the cause of these failures as we do not get given further information. This PR will attempt to fix this. First it adds some extra logging and it uses the csrf cookie primarily for the csrf value. If the problem does not occur again with those changes we could merge, assume that it is fixed and hope that if it occurs in future the additional logging will be helpful. If not I will add more changes in attempt to fix. Fix #22105 Signed-off-by: Andrew Thornton <art27@cantab.net> Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com> Co-authored-by: John Olheiser <john.olheiser@gmail.com> Co-authored-by: techknowlogick <matti@mdranta.net> Co-authored-by: delvh <dev.lh@web.de>
This commit is contained in:
parent
90572c5a22
commit
fe6608f72b
1 changed files with 31 additions and 4 deletions
|
@ -264,18 +264,45 @@ var tokenCounter int64
|
||||||
|
|
||||||
func getTokenForLoggedInUser(t testing.TB, session *TestSession) string {
|
func getTokenForLoggedInUser(t testing.TB, session *TestSession) string {
|
||||||
t.Helper()
|
t.Helper()
|
||||||
|
var token string
|
||||||
req := NewRequest(t, "GET", "/user/settings/applications")
|
req := NewRequest(t, "GET", "/user/settings/applications")
|
||||||
resp := session.MakeRequest(t, req, http.StatusOK)
|
resp := session.MakeRequest(t, req, http.StatusOK)
|
||||||
|
var csrf string
|
||||||
|
for _, cookie := range resp.Result().Cookies() {
|
||||||
|
if cookie.Name != "_csrf" {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
csrf = cookie.Value
|
||||||
|
break
|
||||||
|
}
|
||||||
|
if csrf == "" {
|
||||||
doc := NewHTMLParser(t, resp.Body)
|
doc := NewHTMLParser(t, resp.Body)
|
||||||
|
csrf = doc.GetCSRF()
|
||||||
|
}
|
||||||
|
assert.NotEmpty(t, csrf)
|
||||||
req = NewRequestWithValues(t, "POST", "/user/settings/applications", map[string]string{
|
req = NewRequestWithValues(t, "POST", "/user/settings/applications", map[string]string{
|
||||||
"_csrf": doc.GetCSRF(),
|
"_csrf": csrf,
|
||||||
"name": fmt.Sprintf("api-testing-token-%d", atomic.AddInt64(&tokenCounter, 1)),
|
"name": fmt.Sprintf("api-testing-token-%d", atomic.AddInt64(&tokenCounter, 1)),
|
||||||
})
|
})
|
||||||
session.MakeRequest(t, req, http.StatusSeeOther)
|
resp = session.MakeRequest(t, req, http.StatusSeeOther)
|
||||||
|
|
||||||
|
// Log the flash values on failure
|
||||||
|
if !assert.Equal(t, resp.Result().Header["Location"], []string{"/user/settings/applications"}) {
|
||||||
|
for _, cookie := range resp.Result().Cookies() {
|
||||||
|
if cookie.Name != "macaron_flash" {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
flash, _ := url.ParseQuery(cookie.Value)
|
||||||
|
for key, value := range flash {
|
||||||
|
t.Logf("Flash %q: %q", key, value)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
req = NewRequest(t, "GET", "/user/settings/applications")
|
req = NewRequest(t, "GET", "/user/settings/applications")
|
||||||
resp = session.MakeRequest(t, req, http.StatusOK)
|
resp = session.MakeRequest(t, req, http.StatusOK)
|
||||||
htmlDoc := NewHTMLParser(t, resp.Body)
|
htmlDoc := NewHTMLParser(t, resp.Body)
|
||||||
token := htmlDoc.doc.Find(".ui.info p").Text()
|
token = htmlDoc.doc.Find(".ui.info p").Text()
|
||||||
assert.NotEmpty(t, token)
|
assert.NotEmpty(t, token)
|
||||||
return token
|
return token
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue