(t *testing.T)
| 506 | } |
| 507 | |
| 508 | func TestTransformResponse(t *testing.T) { |
| 509 | invalid := []byte("aaaaa") |
| 510 | uri, _ := url.Parse("http://localhost") |
| 511 | testCases := []struct { |
| 512 | Response *http.Response |
| 513 | Data []byte |
| 514 | Created bool |
| 515 | Error bool |
| 516 | ErrFn func(err error) bool |
| 517 | }{ |
| 518 | {Response: &http.Response{StatusCode: 200}, Data: []byte{}}, |
| 519 | {Response: &http.Response{StatusCode: 201}, Data: []byte{}, Created: true}, |
| 520 | {Response: &http.Response{StatusCode: 199}, Error: true}, |
| 521 | {Response: &http.Response{StatusCode: 500}, Error: true}, |
| 522 | {Response: &http.Response{StatusCode: 422}, Error: true}, |
| 523 | {Response: &http.Response{StatusCode: 409}, Error: true}, |
| 524 | {Response: &http.Response{StatusCode: 404}, Error: true}, |
| 525 | {Response: &http.Response{StatusCode: 401}, Error: true}, |
| 526 | { |
| 527 | Response: &http.Response{ |
| 528 | StatusCode: 401, |
| 529 | Header: http.Header{"Content-Type": []string{"application/json"}}, |
| 530 | Body: ioutil.NopCloser(bytes.NewReader(invalid)), |
| 531 | }, |
| 532 | Error: true, |
| 533 | ErrFn: func(err error) bool { |
| 534 | return err.Error() != "aaaaa" && apierrors.IsUnauthorized(err) |
| 535 | }, |
| 536 | }, |
| 537 | { |
| 538 | Response: &http.Response{ |
| 539 | StatusCode: 401, |
| 540 | Header: http.Header{"Content-Type": []string{"text/any"}}, |
| 541 | Body: ioutil.NopCloser(bytes.NewReader(invalid)), |
| 542 | }, |
| 543 | Error: true, |
| 544 | ErrFn: func(err error) bool { |
| 545 | return strings.Contains(err.Error(), "server has asked for the client to provide") && apierrors.IsUnauthorized(err) |
| 546 | }, |
| 547 | }, |
| 548 | {Response: &http.Response{StatusCode: 403}, Error: true}, |
| 549 | {Response: &http.Response{StatusCode: 200, Body: ioutil.NopCloser(bytes.NewReader(invalid))}, Data: invalid}, |
| 550 | {Response: &http.Response{StatusCode: 200, Body: ioutil.NopCloser(bytes.NewReader(invalid))}, Data: invalid}, |
| 551 | } |
| 552 | for i, test := range testCases { |
| 553 | r := NewRequest(nil, "", uri, "", defaultContentConfig(), defaultSerializers(t), nil, nil, 0) |
| 554 | if test.Response.Body == nil { |
| 555 | test.Response.Body = ioutil.NopCloser(bytes.NewReader([]byte{})) |
| 556 | } |
| 557 | result := r.transformResponse(test.Response, &http.Request{}) |
| 558 | response, created, err := result.body, result.statusCode == http.StatusCreated, result.err |
| 559 | hasErr := err != nil |
| 560 | if hasErr != test.Error { |
| 561 | t.Errorf("%d: unexpected error: %t %v", i, test.Error, err) |
| 562 | } else if hasErr && test.Response.StatusCode > 399 { |
| 563 | status, ok := err.(apierrors.APIStatus) |
| 564 | if !ok { |
| 565 | t.Errorf("%d: response should have been transformable into APIStatus: %v", i, err) |
nothing calls this directly
no test coverage detected