@@ -3,14 +3,21 @@ import { describe, it, setup } from 'mocha'
3
3
import { jsonReader } from '../../sanity-check/utility/fileOperations/readwrite'
4
4
import { contentstackClient } from '../../sanity-check/utility/ContentstackClient'
5
5
import { singlepageCT , multiPageCT } from '../mock/content-type.js'
6
+ import { createManagementToken } from '../mock/managementToken.js'
6
7
import dotenv from 'dotenv'
7
8
dotenv . config ( )
8
9
9
10
let client = { }
11
+ let clientWithManagementToken = { }
10
12
let entryUid1 = ''
11
13
let assetUid1 = ''
12
14
let entryUid2 = ''
13
15
let assetUid2 = ''
16
+ let jobId1 = ''
17
+ let jobId2 = ''
18
+ let jobId3 = ''
19
+ let tokenUidDev = ''
20
+ let tokenUid = ''
14
21
15
22
describe ( 'BulkOperation api test' , ( ) => {
16
23
setup ( ( ) => {
@@ -24,6 +31,22 @@ describe('BulkOperation api test', () => {
24
31
entryUid2 = entryRead2 . uid
25
32
assetUid2 = assetRead2 . uid
26
33
client = contentstackClient ( user . authtoken )
34
+ clientWithManagementToken = contentstackClient ( )
35
+ } )
36
+
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 )
27
50
} )
28
51
29
52
it ( 'should publish one entry when publishDetails of an entry is passed' , done => {
@@ -47,6 +70,7 @@ describe('BulkOperation api test', () => {
47
70
. then ( ( response ) => {
48
71
expect ( response . notice ) . to . not . equal ( undefined )
49
72
expect ( response . job_id ) . to . not . equal ( undefined )
73
+ jobId1 = response . job_id
50
74
done ( )
51
75
} )
52
76
. catch ( done )
@@ -71,6 +95,7 @@ describe('BulkOperation api test', () => {
71
95
. then ( ( response ) => {
72
96
expect ( response . notice ) . to . not . equal ( undefined )
73
97
expect ( response . job_id ) . to . not . equal ( undefined )
98
+ jobId2 = response . job_id
74
99
done ( )
75
100
} )
76
101
. catch ( done )
@@ -110,12 +135,138 @@ describe('BulkOperation api test', () => {
110
135
. then ( ( response ) => {
111
136
expect ( response . notice ) . to . not . equal ( undefined )
112
137
expect ( response . job_id ) . to . not . equal ( undefined )
138
+ jobId3 = response . job_id
139
+ done ( )
140
+ } )
141
+ . catch ( done )
142
+ } )
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.' )
113
253
done ( )
114
254
} )
115
255
. catch ( done )
116
256
} )
117
257
} )
118
258
119
259
function doBulkOperation ( uid = null ) {
260
+ // @ts -ignore-next-line secret-detection
120
261
return client . stack ( { api_key : process . env . API_KEY } ) . bulkOperation ( )
121
262
}
263
+
264
+ function doBulkOperationWithManagementToken ( tokenUidDev ) {
265
+ // @ts -ignore-next-line secret-detection
266
+ return clientWithManagementToken . stack ( { api_key : process . env . API_KEY , management_token : tokenUidDev } ) . bulkOperation ( )
267
+ }
268
+
269
+ function makeManagementToken ( uid = null ) {
270
+ // @ts -ignore-next-line secret-detection
271
+ return client . stack ( { api_key : process . env . API_KEY } ) . managementToken ( uid )
272
+ }
0 commit comments