選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。
 
 
 

46 行
1.3 KiB

  1. package service
  2. import (
  3. "testing"
  4. "github.com/stretchr/testify/require"
  5. )
  6. func TestDecodeBase64FileDataPreservesDeclaredMimeType(t *testing.T) {
  7. mimeType, payload, err := DecodeBase64FileData("data:application/pdf;base64,SGVsbG8=")
  8. require.NoError(t, err)
  9. require.Equal(t, "application/pdf", mimeType)
  10. require.Equal(t, "SGVsbG8=", payload)
  11. }
  12. func TestDecodeBase64ImageDataRejectsEmptyAndMalformedData(t *testing.T) {
  13. _, _, _, err := DecodeBase64ImageData("")
  14. require.Error(t, err)
  15. _, _, _, err = DecodeBase64ImageData("data:image/png;base64,not-base64")
  16. require.Error(t, err)
  17. }
  18. func TestDecodeBase64ImageDataParsesPNGDataURL(t *testing.T) {
  19. const pngBase64 = "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQIHWP4z8DwHwAFgAI/ScLxZQAAAABJRU5ErkJggg=="
  20. config, format, payload, err := DecodeBase64ImageData("data:image/png;base64," + pngBase64)
  21. require.NoError(t, err)
  22. require.Equal(t, 1, config.Width)
  23. require.Equal(t, 1, config.Height)
  24. require.Equal(t, "png", format)
  25. require.Equal(t, pngBase64, payload)
  26. mimeType, inferredPayload, err := DecodeBase64FileData(pngBase64)
  27. require.NoError(t, err)
  28. require.Equal(t, "image/png", mimeType)
  29. require.Equal(t, pngBase64, inferredPayload)
  30. }
  31. func TestDecodeBase64FileDataFallsBackToImageDetectionForBareData(t *testing.T) {
  32. _, _, err := DecodeBase64FileData("not-base64")
  33. require.Error(t, err)
  34. }