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  }