Skip to content

Commit 6daeb42

Browse files
committed
Merge branch 'development' into fix/DX-2370
2 parents ba63130 + f2b7e80 commit 6daeb42

File tree

5 files changed

+153
-4
lines changed

5 files changed

+153
-4
lines changed

lib/stack/bulkOperation/index.js

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,12 +94,13 @@ export function BulkOperation (http, data = {}) {
9494
* @returns {Promise<Object>} Response Object.
9595
* @param {String} params.job_id - The ID of the job.
9696
* @param {String} [params.bulk_version] - The bulk version.
97+
* @param {String} [params.api_version] - The API version.
9798
* @example
9899
* client.stack({ api_key: 'api_key'}).bulkOperation().jobStatus({ job_id: 'job_id' })
99100
* .then((response) => { console.log(response) })
100101
*/
101102
// eslint-disable-next-line camelcase
102-
this.jobStatus = async ({ job_id, bulk_version = '' }) => {
103+
this.jobStatus = async ({ job_id, bulk_version = '', api_version = '' }) => {
103104
// eslint-disable-next-line camelcase
104105
this.urlPath = `/bulk/jobs/${job_id}`
105106
const headers = {
@@ -109,12 +110,18 @@ export function BulkOperation (http, data = {}) {
109110
}
110111
// eslint-disable-next-line camelcase
111112
if (bulk_version) headers.headers.bulk_version = bulk_version
113+
// eslint-disable-next-line camelcase
114+
if (api_version) headers.headers.api_version = api_version
112115
try {
113116
const response = await http.get(this.urlPath, headers)
114117
if (response.data) {
118+
// eslint-disable-next-line camelcase
119+
if (api_version) delete headers.headers.api_version
115120
return response.data
116121
}
117122
} catch (error) {
123+
// eslint-disable-next-line camelcase
124+
if (api_version) delete headers.headers.api_version
118125
console.error(error)
119126
}
120127
}

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@contentstack/management",
3-
"version": "1.21.2",
3+
"version": "1.23.2",
44
"description": "The Content Management API is used to manage the content of your Contentstack account",
55
"main": "./dist/node/contentstack-management.js",
66
"browser": "./dist/web/contentstack-management.js",

test/sanity-check/api/bulkOperation-test.js

Lines changed: 141 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,21 @@ import { describe, it, setup } from 'mocha'
33
import { jsonReader } from '../../sanity-check/utility/fileOperations/readwrite'
44
import { contentstackClient } from '../../sanity-check/utility/ContentstackClient'
55
import { singlepageCT, multiPageCT } from '../mock/content-type.js'
6+
// import { createManagementToken } from '../mock/managementToken.js'
67
import dotenv from 'dotenv'
78
dotenv.config()
89

910
let client = {}
11+
// let clientWithManagementToken = {}
1012
let entryUid1 = ''
1113
let assetUid1 = ''
1214
let entryUid2 = ''
1315
let assetUid2 = ''
16+
// let jobId1 = ''
17+
// let jobId2 = ''
18+
// let jobId3 = ''
19+
// let tokenUidDev = ''
20+
// let tokenUid = ''
1421

1522
describe('BulkOperation api test', () => {
1623
setup(() => {
@@ -24,8 +31,24 @@ describe('BulkOperation api test', () => {
2431
entryUid2 = entryRead2.uid
2532
assetUid2 = assetRead2.uid
2633
client = contentstackClient(user.authtoken)
34+
// clientWithManagementToken = contentstackClient()
2735
})
2836

37+
// it('should create a Management Token for get job status', done => {
38+
// makeManagementToken()
39+
// .create(createManagementToken)
40+
// .then((token) => {
41+
// tokenUidDev = token.token
42+
// tokenUid = token.uid
43+
// expect(token.name).to.be.equal(createManagementToken.token.name)
44+
// expect(token.description).to.be.equal(createManagementToken.token.description)
45+
// expect(token.scope[0].module).to.be.equal(createManagementToken.token.scope[0].module)
46+
// expect(token.uid).to.be.not.equal(null)
47+
// done()
48+
// })
49+
// .catch(done)
50+
// })
51+
2952
it('should publish one entry when publishDetails of an entry is passed', done => {
3053
const publishDetails = {
3154
entries: [
@@ -47,6 +70,7 @@ describe('BulkOperation api test', () => {
4770
.then((response) => {
4871
expect(response.notice).to.not.equal(undefined)
4972
expect(response.job_id).to.not.equal(undefined)
73+
// jobId1 = response.job_id
5074
done()
5175
})
5276
.catch(done)
@@ -71,6 +95,7 @@ describe('BulkOperation api test', () => {
7195
.then((response) => {
7296
expect(response.notice).to.not.equal(undefined)
7397
expect(response.job_id).to.not.equal(undefined)
98+
// jobId2 = response.job_id
7499
done()
75100
})
76101
.catch(done)
@@ -110,12 +135,128 @@ describe('BulkOperation api test', () => {
110135
.then((response) => {
111136
expect(response.notice).to.not.equal(undefined)
112137
expect(response.job_id).to.not.equal(undefined)
138+
// jobId3 = response.job_id
113139
done()
114140
})
115141
.catch(done)
116142
})
143+
144+
// it('should get job status for the first publish job', done => {
145+
// doBulkOperationWithManagementToken(tokenUidDev)
146+
// .jobStatus({ job_id: jobId1, api_version: '3.2' })
147+
// .then((response) => {
148+
// expect(response).to.not.equal(undefined)
149+
// expect(response.uid).to.not.equal(undefined)
150+
// expect(response.status).to.not.equal(undefined)
151+
// expect(response.action).to.not.equal(undefined)
152+
// expect(response.summary).to.not.equal(undefined)
153+
// expect(response.body).to.not.equal(undefined)
154+
// done()
155+
// })
156+
// .catch((error) => {
157+
// console.error('Job status error:', error)
158+
// done(error)
159+
// })
160+
// })
161+
162+
// it('should validate detailed job status response structure', done => {
163+
// doBulkOperationWithManagementToken(tokenUidDev)
164+
// .jobStatus({ job_id: jobId1, api_version: '3.2' })
165+
// .then((response) => {
166+
// expect(response).to.not.equal(undefined)
167+
// // Validate main job properties
168+
// expect(response.uid).to.not.equal(undefined)
169+
// expect(response.api_key).to.not.equal(undefined)
170+
// expect(response.status).to.not.equal(undefined)
171+
172+
// // Validate body structure
173+
// expect(response.body).to.not.equal(undefined)
174+
// expect(response.body.locales).to.be.an('array')
175+
// expect(response.body.environments).to.be.an('array')
176+
// // Validate summary structure
177+
// expect(response.summary).to.not.equal(undefined)
178+
// done()
179+
// })
180+
// .catch((error) => {
181+
// console.error('Detailed job status error:', error)
182+
// done(error)
183+
// })
184+
// })
185+
186+
// it('should get job status for the second publish job', done => {
187+
// doBulkOperationWithManagementToken(tokenUidDev)
188+
// .jobStatus({ job_id: jobId2, api_version: '3.2' })
189+
// .then((response) => {
190+
// expect(response).to.not.equal(undefined)
191+
// expect(response.uid).to.not.equal(undefined)
192+
// expect(response.status).to.not.equal(undefined)
193+
// expect(response.action).to.not.equal(undefined)
194+
// expect(response.summary).to.not.equal(undefined)
195+
// expect(response.body).to.not.equal(undefined)
196+
// done()
197+
// })
198+
// .catch(done)
199+
// })
200+
201+
// it('should get job status for the third publish job', done => {
202+
// doBulkOperationWithManagementToken(tokenUidDev)
203+
// .jobStatus({ job_id: jobId3, api_version: '3.2' })
204+
// .then((response) => {
205+
// expect(response).to.not.equal(undefined)
206+
// expect(response.uid).to.not.equal(undefined)
207+
// expect(response.status).to.not.equal(undefined)
208+
// expect(response.action).to.not.equal(undefined)
209+
// expect(response.summary).to.not.equal(undefined)
210+
// expect(response.body).to.not.equal(undefined)
211+
// done()
212+
// })
213+
// .catch(done)
214+
// })
215+
216+
// it('should get job status with bulk_version parameter', done => {
217+
// doBulkOperationWithManagementToken(tokenUidDev)
218+
// .jobStatus({ job_id: jobId1, bulk_version: 'v3', api_version: '3.2' })
219+
// .then((response) => {
220+
// expect(response).to.not.equal(undefined)
221+
// expect(response.uid).to.not.equal(undefined)
222+
// expect(response.status).to.not.equal(undefined)
223+
// expect(response.action).to.not.equal(undefined)
224+
// expect(response.summary).to.not.equal(undefined)
225+
// expect(response.body).to.not.equal(undefined)
226+
// done()
227+
// })
228+
// .catch(done)
229+
// })
230+
231+
// it('should test job status endpoint accessibility', done => {
232+
// doBulkOperationWithManagementToken(tokenUidDev)
233+
// .jobStatus({ job_id: 'test-job-id', api_version: '3.2' })
234+
// .then((response) => {
235+
// done()
236+
// })
237+
// .catch((error) => {
238+
// console.log('Job status endpoint error (expected for invalid job ID):', error.message)
239+
// // This is expected to fail with invalid job ID, but should not be an auth error
240+
// if (error.message && (error.message.includes('authentication') || error.message.includes('401'))) {
241+
// done(error)
242+
// } else {
243+
// done() // Expected error for invalid job ID
244+
// }
245+
// })
246+
// })
247+
248+
// it('should delete a Management Token', done => {
249+
// makeManagementToken(tokenUid)
250+
// .delete()
251+
// .then((data) => {
252+
// expect(data.notice).to.be.equal('Management Token deleted successfully.')
253+
// done()
254+
// })
255+
// .catch(done)
256+
// })
117257
})
118258

119259
function doBulkOperation (uid = null) {
260+
// @ts-ignore-next-line secret-detection
120261
return client.stack({ api_key: process.env.API_KEY }).bulkOperation()
121262
}

types/stack/bulkOperation/index.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,4 +58,5 @@ export interface BulkAddItemsConfig {
5858
export interface BulkJobStatus {
5959
job_id: AnyProperty;
6060
bulk_version?: string;
61+
api_version?: string;
6162
}

0 commit comments

Comments
 (0)