@@ -180,3 +180,173 @@ func TestResultGroupUnmashal2(t *testing.T) {
180
180
181
181
assert .Equal (t , rgroup .Error (), "" )
182
182
}
183
+
184
+ var resultGroupSample3 = `
185
+ {
186
+ "results": [
187
+ {
188
+ "resource": {
189
+ "resource_type": "ceph.smb.share",
190
+ "cluster_id": "cluster1",
191
+ "share_id": "share1",
192
+ "intent": "present",
193
+ "name": "Share One",
194
+ "readonly": false,
195
+ "browseable": true,
196
+ "cephfs": {
197
+ "volume": "cephfs",
198
+ "path": "/",
199
+ "subvolumegroup": "g1",
200
+ "subvolume": "sv1",
201
+ "provider": "samba-vfs"
202
+ }
203
+ },
204
+ "state": "created",
205
+ "success": true
206
+ },
207
+ {
208
+ "resource": {
209
+ "resource_type": "ceph.smb.share",
210
+ "cluster_id": "cluster1",
211
+ "share_id": "share2",
212
+ "intent": "present",
213
+ "name": "Share Two",
214
+ "readonly": false,
215
+ "browseable": true,
216
+ "cephfs": {
217
+ "volume": "cephfs",
218
+ "path": "/",
219
+ "subvolumegroup": "g1",
220
+ "subvolume": "sv2",
221
+ "provider": "samba-vfs"
222
+ }
223
+ },
224
+ "state": "created",
225
+ "success": true
226
+ },
227
+ {
228
+ "resource": {
229
+ "resource_type": "ceph.smb.share",
230
+ "cluster_id": "cluster1",
231
+ "share_id": "share3",
232
+ "intent": "present",
233
+ "name": "Share Three",
234
+ "readonly": false,
235
+ "browseable": true,
236
+ "cephfs": {
237
+ "volume": "cephfs",
238
+ "path": "/",
239
+ "subvolumegroup": "g1",
240
+ "subvolume": "sv3",
241
+ "provider": "samba-vfs"
242
+ }
243
+ },
244
+ "state": "created",
245
+ "success": true
246
+ }
247
+ ],
248
+ "success": true
249
+ }
250
+ `
251
+
252
+ func TestResultGroupUnmashal3 (t * testing.T ) {
253
+ rgroup := ResultGroup {}
254
+ err := json .Unmarshal ([]byte (resultGroupSample3 ), & rgroup )
255
+ assert .NoError (t , err )
256
+
257
+ assert .True (t , rgroup .Ok ())
258
+ assert .Len (t , rgroup .Results , 3 )
259
+ assert .Len (t , rgroup .ErrorResults (), 0 )
260
+ assert .EqualValues (t ,
261
+ rgroup .Results [0 ].Resource ().Identity ().String (),
262
+ "ceph.smb.share.cluster1.share1" )
263
+ assert .EqualValues (t , rgroup .Results [0 ].State (), "created" )
264
+
265
+ assert .Equal (t , rgroup .Error (), "" )
266
+ }
267
+
268
+ var resultGroupSample4 = `
269
+ {
270
+ "results": [
271
+ {
272
+ "resource": {
273
+ "resource_type": "ceph.smb.share",
274
+ "cluster_id": "cluster1",
275
+ "share_id": "share1",
276
+ "intent": "present",
277
+ "name": "Share One",
278
+ "readonly": false,
279
+ "browseable": true,
280
+ "cephfs": {
281
+ "volume": "cephfs",
282
+ "path": "/zim",
283
+ "subvolumegroup": "g1",
284
+ "subvolume": "sv1",
285
+ "provider": "samba-vfs"
286
+ }
287
+ },
288
+ "msg": "path is not a valid directory in volume",
289
+ "success": false
290
+ },
291
+ {
292
+ "resource": {
293
+ "resource_type": "ceph.smb.share",
294
+ "cluster_id": "cluster1",
295
+ "share_id": "share2",
296
+ "intent": "present",
297
+ "name": "Share Two",
298
+ "readonly": false,
299
+ "browseable": true,
300
+ "cephfs": {
301
+ "volume": "cephfs",
302
+ "path": "/zam",
303
+ "subvolumegroup": "g1",
304
+ "subvolume": "sv2",
305
+ "provider": "samba-vfs"
306
+ }
307
+ },
308
+ "msg": "path is not a valid directory in volume",
309
+ "success": false
310
+ },
311
+ {
312
+ "resource": {
313
+ "resource_type": "ceph.smb.share",
314
+ "cluster_id": "cluster1",
315
+ "share_id": "share3",
316
+ "intent": "present",
317
+ "name": "Share Three",
318
+ "readonly": false,
319
+ "browseable": true,
320
+ "cephfs": {
321
+ "volume": "cephfs",
322
+ "path": "/",
323
+ "subvolumegroup": "g1",
324
+ "subvolume": "sv3",
325
+ "provider": "samba-vfs"
326
+ }
327
+ },
328
+ "checked": true,
329
+ "success": true
330
+ }
331
+ ],
332
+ "success": false
333
+ }
334
+ `
335
+
336
+ func TestResultGroupUnmashal4 (t * testing.T ) {
337
+ rgroup := ResultGroup {}
338
+ err := json .Unmarshal ([]byte (resultGroupSample4 ), & rgroup )
339
+ assert .NoError (t , err )
340
+
341
+ assert .False (t , rgroup .Ok ())
342
+ assert .Len (t , rgroup .Results , 3 )
343
+ assert .Len (t , rgroup .ErrorResults (), 2 )
344
+ tr := rgroup .ErrorResults ()[0 ]
345
+ assert .EqualValues (t ,
346
+ tr .Resource ().Identity ().String (),
347
+ "ceph.smb.share.cluster1.share1" )
348
+ assert .EqualValues (t , tr .State (), "" )
349
+ assert .EqualValues (t , tr .Message (), "path is not a valid directory in volume" )
350
+
351
+ assert .Contains (t , rgroup .Error (), "2 resource errors:" )
352
+ }
0 commit comments