github.com/rclone/rclone@v1.66.1-0.20240517100346-7b89735ae726/backend/sugarsync/sugarsync_internal_test.go (about) 1 package sugarsync 2 3 import ( 4 "bytes" 5 "io" 6 "net/http" 7 "testing" 8 9 "github.com/stretchr/testify/assert" 10 ) 11 12 func TestErrorHandler(t *testing.T) { 13 for _, test := range []struct { 14 name string 15 body string 16 code int 17 status string 18 want string 19 }{ 20 { 21 name: "empty", 22 body: "", 23 code: 500, 24 status: "internal error", 25 want: `HTTP error 500 (internal error) returned body: ""`, 26 }, 27 { 28 name: "unknown", 29 body: "<h1>unknown</h1>", 30 code: 500, 31 status: "internal error", 32 want: `HTTP error 500 (internal error) returned body: "<h1>unknown</h1>"`, 33 }, 34 { 35 name: "blank", 36 body: "Nothing here <h3></h3>", 37 code: 500, 38 status: "internal error", 39 want: `HTTP error 500 (internal error) returned body: "Nothing here <h3></h3>"`, 40 }, 41 { 42 name: "real", 43 body: "<h1>an error</h1>\n<h3>Can not move sync folder.</h3>\n<p>more stuff</p>", 44 code: 500, 45 status: "internal error", 46 want: `HTTP error 500 (internal error): Can not move sync folder.`, 47 }, 48 } { 49 t.Run(test.name, func(t *testing.T) { 50 resp := http.Response{ 51 Body: io.NopCloser(bytes.NewBufferString(test.body)), 52 StatusCode: test.code, 53 Status: test.status, 54 } 55 got := errorHandler(&resp) 56 assert.Equal(t, test.want, got.Error()) 57 }) 58 } 59 }