github.com/Files-com/files-sdk-go/v2@v2.1.2/responseerror_test.go (about) 1 package files_sdk 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/assert" 7 ) 8 9 var TestStr1 = ` 10 { 11 "data": { 12 "u2f_sign_requests": [ 13 { 14 "app_id": "https://dustin.files.com", 15 "challenge": "XXXX", 16 "sign_request": { 17 "version": "U2F_V2", 18 "keyHandle": "XXXX" 19 } 20 } 21 ], 22 "two_factor_authentication_methods": [ 23 "u2f" 24 ], 25 "u2f_redirect": "https://dustin.files.com", 26 "partial_session_id": "XXX" 27 }, 28 "error": "2FA Authenication error: Insert your U2F/FIDO key and press its button.", 29 "http-code": 401, 30 "instance": "XXX", 31 "errors": [ 32 { 33 "data": { 34 "u2f_sign_requests": [ 35 { 36 "app_id": "https://dustin.files.com", 37 "challenge": "XXX", 38 "sign_request": { 39 "version": "U2F_V2", 40 "keyHandle": "XXXX" 41 } 42 } 43 ], 44 "two_factor_authentication_methods": [ 45 "u2f" 46 ], 47 "u2f_redirect": "https://dustin.files.com", 48 "partial_session_id": "XXX" 49 }, 50 "error": "2FA Authenication error: Insert your U2F/FIDO key and press its button.", 51 "http-code": 401, 52 "instance": "XXX", 53 "title": "Two Factor Authentication Error", 54 "type": "401-two-factor-authentication-error" 55 } 56 ], 57 "title": "Two Factor Authentication Error", 58 "type": "not-authenticated/two-factor-authentication-error" 59 } 60 ` 61 62 var TestStr2 = ` 63 { 64 "error": "Hidden reason can't be blank", 65 "http-code": 422, 66 "instance": "9a0165ca-cbe4-480d-b2f3-376c5a3c5ff6", 67 "model_errors": { 68 "hidden_reason": [ 69 "Hidden reason can't be blank" 70 ] 71 }, 72 "model_error_keys": { 73 "hidden_reason": [ 74 "blank" 75 ] 76 }, 77 "errors": [ 78 "Hidden reason can't be blank2" 79 ], 80 "title": "Model Save Error", 81 "type": "processing-failure/model-save-error" 82 } 83 ` 84 85 var TestStr3 = ` 86 {"error":"Internal server error, please contact support or the person who created your account.","http-code":"500"} 87 ` 88 89 var TestStr4 = ` 90 <body></body> 91 ` 92 93 func TestResponseError1_UnmarshalJSON(t *testing.T) { 94 assert := assert.New(t) 95 subject := ResponseError{} 96 97 err := subject.UnmarshalJSON([]byte(TestStr1)) 98 99 assert.Nil(err) 100 assert.Equal("2FA Authenication error: Insert your U2F/FIDO key and press its button.", subject.ErrorMessage) 101 assert.Equal("not-authenticated/two-factor-authentication-error", subject.Type) 102 assert.Equal("Two Factor Authentication Error", subject.Title) 103 assert.Equal("Two Factor Authentication Error", subject.Errors[0].Title) 104 assert.Equal(false, subject.IsNil()) 105 } 106 107 func TestResponseError2_UnmarshalJSON(t *testing.T) { 108 assert := assert.New(t) 109 subject := ResponseError{} 110 111 err := subject.UnmarshalJSON([]byte(TestStr2)) 112 113 assert.Nil(err) 114 assert.Equal("Hidden reason can't be blank", subject.ErrorMessage) 115 assert.Equal("processing-failure/model-save-error", subject.Type) 116 assert.Equal("Model Save Error", subject.Title) 117 assert.Equal("Hidden reason can't be blank2", subject.Errors[0].ErrorMessage) 118 assert.Equal(false, subject.IsNil()) 119 } 120 121 func TestResponseError3_UnmarshalJSON(t *testing.T) { 122 assert := assert.New(t) 123 subject := ResponseError{} 124 125 err := subject.UnmarshalJSON([]byte(TestStr3)) 126 127 assert.Nil(err) 128 assert.Equal("Internal server error, please contact support or the person who created your account.", subject.ErrorMessage) 129 assert.Equal(int(500), subject.HttpCode) 130 assert.Equal("", subject.Type) 131 assert.Equal(false, subject.IsNil()) 132 } 133 134 func TestResponseError_UnmarshalJSON_Error(t *testing.T) { 135 assert := assert.New(t) 136 subject := ResponseError{} 137 138 err := subject.UnmarshalJSON([]byte("{")) 139 140 assert.Equal(err.Error(), "unexpected end of JSON input") 141 assert.Equal("", subject.ErrorMessage) 142 assert.Equal("", subject.Type) 143 assert.Equal(true, subject.IsNil()) 144 } 145 146 func TestResponseError_UnmarshalJSON_Error2(t *testing.T) { 147 assert := assert.New(t) 148 subject := ResponseError{} 149 150 err := subject.UnmarshalJSON([]byte(`{"error": ["error"]}`)) 151 152 assert.Error(err) 153 assert.Equal("", subject.ErrorMessage) 154 assert.Equal("", subject.Type) 155 assert.Equal(true, subject.IsNil()) 156 } 157 158 func TestResponseError_UnmarshalJSON_Error3(t *testing.T) { 159 assert := assert.New(t) 160 subject := ResponseError{} 161 162 err := subject.UnmarshalJSON([]byte(`["error"]`)) 163 164 assert.Nil(err, "The response is not an error, but a list response.") 165 assert.Equal("", subject.ErrorMessage) 166 assert.Equal("", subject.Type) 167 assert.Equal(true, subject.IsNil()) 168 } 169 170 func TestResponseError_UnmarshalJSON_Error4(t *testing.T) { 171 assert := assert.New(t) 172 subject := ResponseError{} 173 174 err := subject.UnmarshalJSON([]byte(TestStr4)) 175 176 assert.Error(err, "\n<body></body>\n") 177 assert.Equal("", subject.ErrorMessage) 178 assert.Equal("", subject.Type) 179 assert.Equal(true, subject.IsNil()) 180 }