From 819a38fcffa71ad9bb844514d2359a7d5ebd4a8d Mon Sep 17 00:00:00 2001 From: Kai Mallea Date: Sun, 25 Apr 2021 20:58:50 -0400 Subject: [PATCH] fix: specify type in uploadBase64 fix #178 --- __tests__/uploadBase64.js | 50 +++++++++++++++++++++++++++++++++++++++ lib/imgur.js | 2 +- 2 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 __tests__/uploadBase64.js diff --git a/__tests__/uploadBase64.js b/__tests__/uploadBase64.js new file mode 100644 index 00000000..a5756237 --- /dev/null +++ b/__tests__/uploadBase64.js @@ -0,0 +1,50 @@ +const imgur = require('../lib/imgur.js'); + +describe('uploadBase64()', () => { + describe('validation', () => { + test('should fail with input', () => { + const errMsg = 'Invalid Base64 input'; + + expect(imgur.uploadBase64()).rejects.toThrowError(errMsg); + }); + }); + + describe("delegates to _imgurRequest('upload', ...)", () => { + const mockResult = { foo: 'bar' }; + const testImage = + 'iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg=='; + + const _imgurRequestBackup = imgur._imgurRequest; + + beforeEach(() => { + imgur._imgurRequest = jest + .fn() + .mockImplementation(() => Promise.resolve(mockResult)); + }); + + afterEach(() => { + imgur._imgurRequest.mockClear(); + imgur._imgurRequest = _imgurRequestBackup; + }); + + test('should delegate', () => { + const promise = imgur.uploadBase64(testImage); + + expect(imgur._imgurRequest).toHaveBeenCalledWith('upload', testImage, { + type: 'base64', + }); + expect(promise).resolves.toEqual(mockResult); + }); + + test('should propagate albumId', () => { + const albumId = '123'; + const promise = imgur.uploadBase64(testImage, albumId); + + expect(imgur._imgurRequest).toHaveBeenCalledWith('upload', testImage, { + album: albumId, + type: 'base64', + }); + expect(promise).resolves.toEqual(mockResult); + }); + }); +}); diff --git a/lib/imgur.js b/lib/imgur.js index e3665d35..5f6dff5b 100644 --- a/lib/imgur.js +++ b/lib/imgur.js @@ -579,7 +579,7 @@ imgur.uploadUrl = async (url, albumId, title, description) => { * @returns {promise} - on resolve, returns the resulting image object from imgur */ imgur.uploadBase64 = async (base64, albumId, title, description) => { - const extraFormParams = {}; + const extraFormParams = { type: 'base64' }; if (typeof albumId === 'string' && albumId.length) { extraFormParams.album = albumId;