mirror of
				https://github.com/go-gitea/gitea
				synced 2025-11-03 21:08:25 +00:00 
			
		
		
		
	Log unexpected responses in integration tests (#3138)
* Log flash error message in integration tests * Also log short, non-HTML responses
This commit is contained in:
		@@ -26,6 +26,7 @@ import (
 | 
			
		||||
	"code.gitea.io/gitea/routers"
 | 
			
		||||
	"code.gitea.io/gitea/routers/routes"
 | 
			
		||||
 | 
			
		||||
	"github.com/PuerkitoBio/goquery"
 | 
			
		||||
	"github.com/Unknwon/com"
 | 
			
		||||
	"github.com/stretchr/testify/assert"
 | 
			
		||||
	"gopkg.in/macaron.v1"
 | 
			
		||||
@@ -260,12 +261,37 @@ func MakeRequest(t testing.TB, req *http.Request, expectedStatus int) *httptest.
 | 
			
		||||
	recorder := httptest.NewRecorder()
 | 
			
		||||
	mac.ServeHTTP(recorder, req)
 | 
			
		||||
	if expectedStatus != NoExpectedStatus {
 | 
			
		||||
		assert.EqualValues(t, expectedStatus, recorder.Code,
 | 
			
		||||
			"Request: %s %s", req.Method, req.URL.String())
 | 
			
		||||
		if !assert.EqualValues(t, expectedStatus, recorder.Code,
 | 
			
		||||
			"Request: %s %s", req.Method, req.URL.String()) {
 | 
			
		||||
			logUnexpectedResponse(t, recorder)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	return recorder
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// logUnexpectedResponse logs the contents of an unexpected response.
 | 
			
		||||
func logUnexpectedResponse(t testing.TB, recorder *httptest.ResponseRecorder) {
 | 
			
		||||
	respBytes := recorder.Body.Bytes()
 | 
			
		||||
	if len(respBytes) == 0 {
 | 
			
		||||
		return
 | 
			
		||||
	} else if len(respBytes) < 500 {
 | 
			
		||||
		// if body is short, just log the whole thing
 | 
			
		||||
		t.Log("Response:", string(respBytes))
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// log the "flash" error message, if one exists
 | 
			
		||||
	// we must create a new buffer, so that we don't "use up" resp.Body
 | 
			
		||||
	htmlDoc, err := goquery.NewDocumentFromReader(bytes.NewBuffer(respBytes))
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return // probably a non-HTML response
 | 
			
		||||
	}
 | 
			
		||||
	errMsg := htmlDoc.Find(".ui.negative.message").Text()
 | 
			
		||||
	if len(errMsg) > 0 {
 | 
			
		||||
		t.Log("A flash error message was found:", errMsg)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func DecodeJSON(t testing.TB, resp *httptest.ResponseRecorder, v interface{}) {
 | 
			
		||||
	decoder := json.NewDecoder(resp.Body)
 | 
			
		||||
	assert.NoError(t, decoder.Decode(v))
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user