s3api_object_handlers_put_test.go 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package s3api
  2. import (
  3. "testing"
  4. "github.com/seaweedfs/seaweedfs/weed/s3api/s3err"
  5. "github.com/seaweedfs/seaweedfs/weed/util/constants"
  6. )
  7. func TestFilerErrorToS3Error(t *testing.T) {
  8. tests := []struct {
  9. name string
  10. errString string
  11. expectedErr s3err.ErrorCode
  12. }{
  13. {
  14. name: "MD5 mismatch error",
  15. errString: constants.ErrMsgBadDigest,
  16. expectedErr: s3err.ErrBadDigest,
  17. },
  18. {
  19. name: "Context canceled error",
  20. errString: "rpc error: code = Canceled desc = context canceled",
  21. expectedErr: s3err.ErrInvalidRequest,
  22. },
  23. {
  24. name: "Context canceled error (simple)",
  25. errString: "context canceled",
  26. expectedErr: s3err.ErrInvalidRequest,
  27. },
  28. {
  29. name: "Directory exists error",
  30. errString: "existing /path/to/file is a directory",
  31. expectedErr: s3err.ErrExistingObjectIsDirectory,
  32. },
  33. {
  34. name: "File exists error",
  35. errString: "/path/to/file is a file",
  36. expectedErr: s3err.ErrExistingObjectIsFile,
  37. },
  38. {
  39. name: "Unknown error",
  40. errString: "some random error",
  41. expectedErr: s3err.ErrInternalError,
  42. },
  43. }
  44. for _, tt := range tests {
  45. t.Run(tt.name, func(t *testing.T) {
  46. result := filerErrorToS3Error(tt.errString)
  47. if result != tt.expectedErr {
  48. t.Errorf("filerErrorToS3Error(%q) = %v, want %v", tt.errString, result, tt.expectedErr)
  49. }
  50. })
  51. }
  52. }