@@ -1535,9 +1535,10 @@ type ajaxRequestTest struct {
15351535 proxy *OAuthProxy
15361536}
15371537
1538−func newAjaxRequestTest() (*ajaxRequestTest, error) {
1538+func newAjaxRequestTest(forceJSONErrors bool) (*ajaxRequestTest, error) {
15391539 test := &ajaxRequestTest{}
15401540 test.opts = baseTestOptions()
1541+ test.opts.ForceJSONErrors = forceJSONErrors
15411542 err := validation.Validate(test.opts)
15421543 if err != nil {
15431544 return nil, err
@@ -1552,59 +1553,64 @@ func newAjaxRequestTest() (*ajaxRequestTest, error) {
15521553 return test, nil
15531554}
15541555
1555−func (test *ajaxRequestTest) getEndpoint(endpoint string, header http.Header) (int, http.Header, error) {
1556+func (test *ajaxRequestTest) getEndpoint(endpoint string, header http.Header) (int, http.Header, []byte, error) {
15561557 rw := httptest.NewRecorder()
15571558 req, err := http.NewRequest(http.MethodGet, endpoint, strings.NewReader(""))
15581559 if err != nil {
1559− return 0, nil, err
1560+ return 0, nil, nil, err
15601561 }
15611562 req.Header = header
15621563 test.proxy.ServeHTTP(rw, req)
1563− return rw.Code, rw.Header(), nil
1564+ return rw.Code, rw.Header(), rw.Body.Bytes(), nil
15641565}
15651566
1566−func testAjaxUnauthorizedRequest(t *testing.T, header http.Header) {
1567− test, err := newAjaxRequestTest()
1567+func testAjaxUnauthorizedRequest(t *testing.T, header http.Header, forceJSONErrors bool) {
1568+ test, err := newAjaxRequestTest(forceJSONErrors)
15681569 if err != nil {
15691570 t.Fatal(err)
15701571 }
15711572 endpoint := "/test"
15721573
1573− code, rh, err := test.getEndpoint(endpoint, header)
1574+ code, rh, body, err := test.getEndpoint(endpoint, header)
15741575 assert.NoError(t, err)
15751576 assert.Equal(t, http.StatusUnauthorized, code)
15761577 mime := rh.Get("Content-Type")
15771578 assert.Equal(t, applicationJSON, mime)
1579+ assert.Equal(t, []byte("{}"), body)
15781580}
15791581func TestAjaxUnauthorizedRequest1(t *testing.T) {
15801582 header := make(http.Header)
15811583 header.Add("accept", applicationJSON)
15821584
1583− testAjaxUnauthorizedRequest(t, header)
1585+ testAjaxUnauthorizedRequest(t, header, false)
15841586}
15851587
15861588func TestAjaxUnauthorizedRequest2(t *testing.T) {
15871589 header := make(http.Header)
15881590 header.Add("Accept", applicationJSON)
15891591
1590− testAjaxUnauthorizedRequest(t, header)
1592+ testAjaxUnauthorizedRequest(t, header, false)
15911593}
15921594
15931595func TestAjaxUnauthorizedRequestAccept1(t *testing.T) {
15941596 header := make(http.Header)
15951597 header.Add("Accept", "application/json, text/plain, */*")
15961598
1597− testAjaxUnauthorizedRequest(t, header)
1599+ testAjaxUnauthorizedRequest(t, header, false)
1600+}
1601+
1602+func TestForceJSONErrorsUnauthorizedRequest(t *testing.T) {
1603+ testAjaxUnauthorizedRequest(t, nil, true)
15981604}
15991605
16001606func TestAjaxForbiddendRequest(t *testing.T) {
1601− test, err := newAjaxRequestTest()
1607+ test, err := newAjaxRequestTest(false)
16021608 if err != nil {
16031609 t.Fatal(err)
16041610 }
16051611 endpoint := "/test"
16061612 header := make(http.Header)
1607− code, rh, err := test.getEndpoint(endpoint, header)
1613+ code, rh, _, err := test.getEndpoint(endpoint, header)
16081614 assert.NoError(t, err)
16091615 assert.Equal(t, http.StatusForbidden, code)
16101616 mime := rh.Get("Content-Type")