I am trying Unit Testing Using Loopback Mocha. I have a POST API /admin/url/createShortUrl which requires actualUrl as a formdata. Also some headers. But headers seems working fine. I tried multiple answers from stackoverflow but none worked. I am trying to set Content-type as application/json as well as multipart/form-data. But none of it is working.
require('dotenv').config();
import {Client, expect} from '@loopback/testlab';
import {BrickAdminPanelApplication} from '../../application';
import upload from 'multer';
import {setupApplication} from './test-helper';
admin-panel.datasource'; const token = 'eyJ0eXAiOiJKV1QiLCJhbGci';
describe('ShortenedUrlController', () => {
let app: BrickAdminPanelApplication;
let client: Client;
before('setupApplication', async () => {
({app, client} = await setupApplication());
});
after(async () => {
await app.stop();
});
it('invokes POST /admin/url/createShortUrl', async () => {
await client
.post('/admin/url/createShortUrl')
.set({Authorization: `Bearer ${token}`})
.set('emailId', 'myemail@gmail.com')
.set('Content-Type', 'multipart/form-data') //Not working
.set('Content-Type', 'application/json') //Not working
.field('Content-Type', 'multipart/form-data') //Not working
.field(
'actualUrl',
'https%3A%2F%2Fadminss.papers.com%2Fddqwderss1ssdadsdassatsddqposissdcsuy',
)
.expect(400);
});
});
ERROR
1) ShortenedUrlController
invokes POST /admin/url/createShortUrl:
Error: expected 400 "Bad Request", got 415 "Unsupported Media Type"
at Context.<anonymous> (src\__tests__\acceptance\url-shortener.acceptance.ts:92:8)
at processImmediate (node:internal/timers:466:21)
at process.callbackTrampoline (node:internal/async_hooks:130:17)
at Test._assertStatus (node_modules\supertest\lib\test.js:304:12)
at C:\project test\MT-PampersBrick-Admin-API\node_modules\supertest\lib\test.js:80:15
at Test._assertFunction (node_modules\supertest\lib\test.js:338:11)
at Test.assert (node_modules\supertest\lib\test.js:209:21)
at localAssert (node_modules\supertest\lib\test.js:167:12)
at fn (node_modules\supertest\lib\test.js:164:5)
at Test.callback (node_modules\superagent\src\node\index.js:902:3)
at fn (node_modules\superagent\src\node\index.js:1130:18)
at IncomingMessage.<anonymous> (node_modules\superagent\src\node\parsers\json.js:19:7)
at IncomingMessage.emit (node:events:539:35)
at endReadableNT (node:internal/streams/readable:1345:12)
at processTicksAndRejections (node:internal/process/task_queues:83:21)