Skip to content

Commit 201d61f

Browse files
authored
Merge pull request #82 from contentstack/fix/CS-41307-contenttype-while-asset-upload
feat: ✨ allows content-type for asset upload
2 parents 8f6a142 + 4b9ace5 commit 201d61f

File tree

6 files changed

+68
-40
lines changed

6 files changed

+68
-40
lines changed

lib/stack/asset/index.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -292,7 +292,11 @@ export function createFormData (data) {
292292
formData.append('asset[title]', data.title)
293293
}
294294
const uploadStream = createReadStream(data.upload)
295-
formData.append('asset[upload]', uploadStream)
295+
if (typeof data.content_type === 'string') {
296+
formData.append('asset[upload]', uploadStream, { contentType: data.content_type })
297+
} else {
298+
formData.append('asset[upload]', uploadStream)
299+
}
296300
return formData
297301
}
298302
}

test/api/asset-test.js

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,30 @@ describe('Assets api Test', () => {
9090
})
9191
.catch(done)
9292
})
93+
94+
it('Asset Upload in folder with contenttype', done => {
95+
const asset = {
96+
upload: path.join(__dirname, './mock/berries.jfif'),
97+
title: 'customasset2 in Folder',
98+
description: 'Custom Asset Desc in Folder',
99+
parent_uid: folderUID,
100+
tags: 'folder',
101+
content_type: 'image/jpeg'
102+
}
103+
makeAsset().create(asset)
104+
.then((asset) => {
105+
publishAssetUID = asset.uid
106+
expect(asset.uid).to.be.not.equal(null)
107+
expect(asset.url).to.be.not.equal(null)
108+
expect(asset.filename).to.be.equal('berries.jfif')
109+
expect(asset.title).to.be.equal('customasset2 in Folder')
110+
expect(asset.description).to.be.equal('Custom Asset Desc in Folder')
111+
expect(asset.content_type).to.be.equal('image/jpeg')
112+
expect(asset.parent_uid).to.be.equal(folderUID)
113+
done()
114+
})
115+
.catch(done)
116+
})
93117
it('Replace asset ', done => {
94118
const asset = {
95119
upload: path.join(__dirname, './mock/upload.html')

test/api/mock/berries.jfif

154 KB
Binary file not shown.

test/unit/asset-test.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,8 @@ describe('Contentstack Asset test', () => {
154154
title: 'customasset',
155155
description: 'Custom Asset Desc',
156156
tags: ['Custom'],
157-
parent_uid: 'UID'
157+
parent_uid: 'UID',
158+
content_type: 'text/html'
158159
}
159160
const form = createFormData(assetUpload)()
160161
var boundary = form.getBoundary()
@@ -322,7 +323,7 @@ function makeAsset (data) {
322323

323324
function checkAsset (asset) {
324325
checkSystemFields(asset)
325-
expect(asset.content_type).to.be.equal('image/png')
326+
expect(asset.content_type).to.be.equal('text/html')
326327
expect(asset.file_size).to.be.equal('42670')
327328
expect(asset.tags.length).to.be.equal(0)
328329
expect(asset.filename).to.be.equal('file.png')

test/unit/mock/objects.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,7 @@ const releaseMock = {
212212
const assetMock = {
213213
...systemFieldsMock,
214214
...systemFieldsUserMock,
215-
content_type: 'image/png',
215+
content_type: 'text/html',
216216
file_size: '42670',
217217
tags: [],
218218
filename: 'file.png',

test/unit/user-test.js

Lines changed: 35 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -162,26 +162,25 @@ describe('Contentstack User test', () => {
162162
})
163163

164164
user.getTasks()
165-
.then((userTasks) => {
166-
const assignment = userTasks.asassignments
167-
expect(assignment.api_key).to.be.equal(stackHeadersMock.api_key)
168-
expect(assignment.content_type).to.be.equal("CT_UID")
169-
expect(assignment.entry_uid).to.be.equal("ETR_UID")
170-
expect(assignment.locale).to.be.equal("en-us")
171-
expect(assignment.org_uid).to.be.equal("orgUID")
172-
expect(assignment.type).to.be.equal("workflow_stage")
173-
expect(assignment.entry_locale).to.be.equal("en-us")
174-
expect(assignment.version).to.be.equal(1)
175-
expect(assignment.assigned_to[0]).to.be.equal("user_UID")
176-
expect(assignment.assigned_at).to.be.equal("assign_date")
177-
expect(assignment.assigned_by).to.be.equal("assign_by")
178-
expect(assignment.due_date).to.be.equal("due_date")
179-
done()
180-
})
181-
.catch(done)
165+
.then((userTasks) => {
166+
const assignment = userTasks.asassignments
167+
expect(assignment.api_key).to.be.equal(stackHeadersMock.api_key)
168+
expect(assignment.content_type).to.be.equal('CT_UID')
169+
expect(assignment.entry_uid).to.be.equal('ETR_UID')
170+
expect(assignment.locale).to.be.equal('en-us')
171+
expect(assignment.org_uid).to.be.equal('orgUID')
172+
expect(assignment.type).to.be.equal('workflow_stage')
173+
expect(assignment.entry_locale).to.be.equal('en-us')
174+
expect(assignment.version).to.be.equal(1)
175+
expect(assignment.assigned_to[0]).to.be.equal('user_UID')
176+
expect(assignment.assigned_at).to.be.equal('assign_date')
177+
expect(assignment.assigned_by).to.be.equal('assign_by')
178+
expect(assignment.due_date).to.be.equal('due_date')
179+
done()
180+
})
181+
.catch(done)
182182
})
183183

184-
185184
it('User get task with params test', done => {
186185
var mock = new MockAdapter(Axios)
187186
mock.onGet('/user/assignments').reply(200, {
@@ -194,24 +193,24 @@ describe('Contentstack User test', () => {
194193
}
195194
})
196195

197-
user.getTasks({sort: 'sort'})
198-
.then((userTasks) => {
199-
const assignment = userTasks.asassignments
200-
expect(assignment.api_key).to.be.equal(stackHeadersMock.api_key)
201-
expect(assignment.content_type).to.be.equal("CT_UID")
202-
expect(assignment.entry_uid).to.be.equal("ETR_UID")
203-
expect(assignment.locale).to.be.equal("en-us")
204-
expect(assignment.org_uid).to.be.equal("orgUID")
205-
expect(assignment.type).to.be.equal("workflow_stage")
206-
expect(assignment.entry_locale).to.be.equal("en-us")
207-
expect(assignment.version).to.be.equal(1)
208-
expect(assignment.assigned_to[0]).to.be.equal("user_UID")
209-
expect(assignment.assigned_at).to.be.equal("assign_date")
210-
expect(assignment.assigned_by).to.be.equal("assign_by")
211-
expect(assignment.due_date).to.be.equal("due_date")
212-
done()
213-
})
214-
.catch(done)
196+
user.getTasks({ sort: 'sort' })
197+
.then((userTasks) => {
198+
const assignment = userTasks.asassignments
199+
expect(assignment.api_key).to.be.equal(stackHeadersMock.api_key)
200+
expect(assignment.content_type).to.be.equal('CT_UID')
201+
expect(assignment.entry_uid).to.be.equal('ETR_UID')
202+
expect(assignment.locale).to.be.equal('en-us')
203+
expect(assignment.org_uid).to.be.equal('orgUID')
204+
expect(assignment.type).to.be.equal('workflow_stage')
205+
expect(assignment.entry_locale).to.be.equal('en-us')
206+
expect(assignment.version).to.be.equal(1)
207+
expect(assignment.assigned_to[0]).to.be.equal('user_UID')
208+
expect(assignment.assigned_at).to.be.equal('assign_date')
209+
expect(assignment.assigned_by).to.be.equal('assign_by')
210+
expect(assignment.due_date).to.be.equal('due_date')
211+
done()
212+
})
213+
.catch(done)
215214
})
216215
})
217216

0 commit comments

Comments
 (0)