Ignore image responses on non-200 status (#3693)
* Ignore image responses on non-200 status * Fix testszio/stable
parent
15055cb8c4
commit
90c3ec8749
|
@ -1,9 +1,10 @@
|
||||||
|
import ImageResizer from '@bam.tech/react-native-image-resizer'
|
||||||
|
import RNFetchBlob from 'rn-fetch-blob'
|
||||||
|
|
||||||
import {
|
import {
|
||||||
downloadAndResize,
|
downloadAndResize,
|
||||||
DownloadAndResizeOpts,
|
DownloadAndResizeOpts,
|
||||||
} from '../../src/lib/media/manip'
|
} from '../../src/lib/media/manip'
|
||||||
import ImageResizer from '@bam.tech/react-native-image-resizer'
|
|
||||||
import RNFetchBlob from 'rn-fetch-blob'
|
|
||||||
|
|
||||||
describe('downloadAndResize', () => {
|
describe('downloadAndResize', () => {
|
||||||
const errorSpy = jest.spyOn(global.console, 'error')
|
const errorSpy = jest.spyOn(global.console, 'error')
|
||||||
|
@ -30,6 +31,7 @@ describe('downloadAndResize', () => {
|
||||||
const mockedFetch = RNFetchBlob.fetch as jest.Mock
|
const mockedFetch = RNFetchBlob.fetch as jest.Mock
|
||||||
mockedFetch.mockResolvedValueOnce({
|
mockedFetch.mockResolvedValueOnce({
|
||||||
path: jest.fn().mockReturnValue('file://downloaded-image.jpg'),
|
path: jest.fn().mockReturnValue('file://downloaded-image.jpg'),
|
||||||
|
info: jest.fn().mockReturnValue({status: 200}),
|
||||||
flush: jest.fn(),
|
flush: jest.fn(),
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -84,6 +86,7 @@ describe('downloadAndResize', () => {
|
||||||
const mockedFetch = RNFetchBlob.fetch as jest.Mock
|
const mockedFetch = RNFetchBlob.fetch as jest.Mock
|
||||||
mockedFetch.mockResolvedValueOnce({
|
mockedFetch.mockResolvedValueOnce({
|
||||||
path: jest.fn().mockReturnValue('file://downloaded-image'),
|
path: jest.fn().mockReturnValue('file://downloaded-image'),
|
||||||
|
info: jest.fn().mockReturnValue({status: 200}),
|
||||||
flush: jest.fn(),
|
flush: jest.fn(),
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -118,4 +121,26 @@ describe('downloadAndResize', () => {
|
||||||
{mode: 'cover'},
|
{mode: 'cover'},
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it('should return undefined for non-200 response', async () => {
|
||||||
|
const mockedFetch = RNFetchBlob.fetch as jest.Mock
|
||||||
|
mockedFetch.mockResolvedValueOnce({
|
||||||
|
path: jest.fn().mockReturnValue('file://downloaded-image'),
|
||||||
|
info: jest.fn().mockReturnValue({status: 400}),
|
||||||
|
flush: jest.fn(),
|
||||||
|
})
|
||||||
|
|
||||||
|
const opts: DownloadAndResizeOpts = {
|
||||||
|
uri: 'https://example.com/image',
|
||||||
|
width: 100,
|
||||||
|
height: 100,
|
||||||
|
maxSize: 500000,
|
||||||
|
mode: 'cover',
|
||||||
|
timeout: 10000,
|
||||||
|
}
|
||||||
|
|
||||||
|
const result = await downloadAndResize(opts)
|
||||||
|
expect(errorSpy).not.toHaveBeenCalled()
|
||||||
|
expect(result).toBeUndefined()
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
|
@ -1,13 +1,14 @@
|
||||||
import RNFetchBlob from 'rn-fetch-blob'
|
|
||||||
import ImageResizer from '@bam.tech/react-native-image-resizer'
|
|
||||||
import {Image as RNImage, Share as RNShare} from 'react-native'
|
import {Image as RNImage, Share as RNShare} from 'react-native'
|
||||||
import {Image} from 'react-native-image-crop-picker'
|
|
||||||
import * as RNFS from 'react-native-fs'
|
import * as RNFS from 'react-native-fs'
|
||||||
|
import {Image} from 'react-native-image-crop-picker'
|
||||||
import uuid from 'react-native-uuid'
|
import uuid from 'react-native-uuid'
|
||||||
import * as Sharing from 'expo-sharing'
|
|
||||||
import * as MediaLibrary from 'expo-media-library'
|
import * as MediaLibrary from 'expo-media-library'
|
||||||
import {Dimensions} from './types'
|
import * as Sharing from 'expo-sharing'
|
||||||
|
import ImageResizer from '@bam.tech/react-native-image-resizer'
|
||||||
|
import RNFetchBlob from 'rn-fetch-blob'
|
||||||
|
|
||||||
import {isAndroid, isIOS} from 'platform/detection'
|
import {isAndroid, isIOS} from 'platform/detection'
|
||||||
|
import {Dimensions} from './types'
|
||||||
|
|
||||||
export async function compressIfNeeded(
|
export async function compressIfNeeded(
|
||||||
img: Image,
|
img: Image,
|
||||||
|
@ -63,6 +64,11 @@ export async function downloadAndResize(opts: DownloadAndResizeOpts) {
|
||||||
downloadRes = await downloadResPromise
|
downloadRes = await downloadResPromise
|
||||||
clearTimeout(to1)
|
clearTimeout(to1)
|
||||||
|
|
||||||
|
const status = downloadRes.info().status
|
||||||
|
if (status !== 200) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
let localUri = downloadRes.path()
|
let localUri = downloadRes.path()
|
||||||
if (!localUri.startsWith('file://')) {
|
if (!localUri.startsWith('file://')) {
|
||||||
localUri = `file://${localUri}`
|
localUri = `file://${localUri}`
|
||||||
|
|
Loading…
Reference in New Issue