@@ -3432,3 +3432,102 @@ func (s *BlobRecordedTestsSuite) TestBlobSetExpiry() {
34323432 _ , err = bbClient .GetProperties (context .Background (), nil )
34333433 testcommon .ValidateBlobErrorCode (_require , err , bloberror .BlobNotFound )
34343434}
3435+
3436+ func (s * BlobRecordedTestsSuite ) TestSetImmutabilityPolicy () {
3437+ _require := require .New (s .T ())
3438+ testName := s .T ().Name ()
3439+ svcClient , err := testcommon .GetServiceClient (s .T (), testcommon .TestAccountImmutable , nil )
3440+ _require .NoError (err )
3441+
3442+ containerName := testcommon .GenerateContainerName (testName )
3443+ containerClient := testcommon .CreateNewContainer (context .Background (), _require , containerName , svcClient )
3444+
3445+ blockBlobName := testcommon .GenerateBlobName (testName )
3446+ bbClient := testcommon .CreateNewBlockBlob (context .Background (), _require , blockBlobName , containerClient )
3447+
3448+ currentTime , err := time .Parse (time .UnixDate , "Fri Jun 11 20:00:00 GMT 2049" )
3449+ _require .Nil (err )
3450+ policy := blob .ImmutabilityPolicySetting (blob .ImmutabilityPolicySettingUnlocked )
3451+ _require .Nil (err )
3452+
3453+ setImmutabilityPolicyOptions := & blob.SetImmutabilityPolicyOptions {
3454+ Mode : & policy ,
3455+ ModifiedAccessConditions : nil ,
3456+ }
3457+ _ , err = bbClient .SetImmutabilityPolicy (context .Background (), currentTime , setImmutabilityPolicyOptions )
3458+ _require .Nil (err )
3459+
3460+ _ , err = bbClient .SetLegalHold (context .Background (), false , nil )
3461+ _require .Nil (err )
3462+
3463+ _ , err = bbClient .Delete (context .Background (), nil )
3464+ _require .NotNil (err )
3465+
3466+ _ , err = bbClient .DeleteImmutabilityPolicy (context .Background (), nil )
3467+ _require .Nil (err )
3468+
3469+ _ , err = bbClient .Delete (context .Background (), nil )
3470+ _require .Nil (err )
3471+ }
3472+
3473+ func (s * BlobRecordedTestsSuite ) TestDeleteImmutabilityPolicy () {
3474+ _require := require .New (s .T ())
3475+ testName := s .T ().Name ()
3476+ svcClient , err := testcommon .GetServiceClient (s .T (), testcommon .TestAccountImmutable , nil )
3477+ _require .NoError (err )
3478+
3479+ containerName := testcommon .GenerateContainerName (testName )
3480+ containerClient := testcommon .CreateNewContainer (context .Background (), _require , containerName , svcClient )
3481+
3482+ blockBlobName := testcommon .GenerateBlobName (testName )
3483+ bbClient := testcommon .CreateNewBlockBlob (context .Background (), _require , blockBlobName , containerClient )
3484+
3485+ currentTime , err := time .Parse (time .UnixDate , "Fri Jun 11 20:00:00 GMT 2049" )
3486+ _require .Nil (err )
3487+
3488+ policy := blob .ImmutabilityPolicySetting (blob .ImmutabilityPolicySettingUnlocked )
3489+ _require .Nil (err )
3490+
3491+ setImmutabilityPolicyOptions := & blob.SetImmutabilityPolicyOptions {
3492+ Mode : & policy ,
3493+ ModifiedAccessConditions : nil ,
3494+ }
3495+ _ , err = bbClient .SetImmutabilityPolicy (context .Background (), currentTime , setImmutabilityPolicyOptions )
3496+ _require .Nil (err )
3497+
3498+ _ , err = bbClient .DeleteImmutabilityPolicy (context .Background (), nil )
3499+ _require .Nil (err )
3500+
3501+ _ , err = bbClient .Delete (context .Background (), nil )
3502+ _require .Nil (err )
3503+ }
3504+
3505+ func (s * BlobRecordedTestsSuite ) TestSetLegalHold () {
3506+ _require := require .New (s .T ())
3507+ testName := s .T ().Name ()
3508+ svcClient , err := testcommon .GetServiceClient (s .T (), testcommon .TestAccountImmutable , nil )
3509+ _require .NoError (err )
3510+
3511+ containerName := testcommon .GenerateContainerName (testName )
3512+ containerClient := testcommon .CreateNewContainer (context .Background (), _require , containerName , svcClient )
3513+
3514+ blockBlobName := testcommon .GenerateBlobName (testName )
3515+ bbClient := testcommon .CreateNewBlockBlob (context .Background (), _require , blockBlobName , containerClient )
3516+
3517+ _ , err = bbClient .GetProperties (context .Background (), nil )
3518+ _require .Nil (err )
3519+
3520+ _ , err = bbClient .SetLegalHold (context .Background (), true , nil )
3521+ _require .Nil (err )
3522+
3523+ // should fail since time has not passed yet
3524+ _ , err = bbClient .Delete (context .Background (), nil )
3525+ _require .NotNil (err )
3526+
3527+ _ , err = bbClient .SetLegalHold (context .Background (), false , nil )
3528+ _require .Nil (err )
3529+
3530+ _ , err = bbClient .Delete (context .Background (), nil )
3531+ _require .Nil (err )
3532+
3533+ }
0 commit comments