package handler import ( "testing" "git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api/errors" "github.com/stretchr/testify/require" ) func TestVersioningWithMFADelete(t *testing.T) { bktName := "bucket-name" deviceName := "device" hc := prepareHandlerContext(t) createBucket(hc, bktName) key := createMFADevice(hc, bktName, deviceName) putBucketVersioningMFADeleteErr(hc, bktName, "", "Enabled", generateMFAHeader(key, deviceName), errors.GetAPIError(errors.ErrVersioningNotSpecified)) putBucketVersioningMFADeleteErr(hc, bktName, "", "", "", errors.GetAPIError(errors.ErrVersioningNotSpecified)) // set MFA Delete status putBucketVersioningMFADelete(hc, bktName, "Suspended", "Enabled", generateMFAHeader(key, deviceName)) require.Equal(t, "Enabled", getBucketVersioning(hc, bktName).MfaDelete) require.Equal(t, "Suspended", getBucketVersioning(hc, bktName).Status) // try to change versioning without MFA Header putBucketVersioningMFADeleteErr(hc, bktName, "Enabled", "Enabled", "", errors.GetAPIError(errors.ErrInvalidMFAHeader)) require.Equal(t, "Enabled", getBucketVersioning(hc, bktName).MfaDelete) require.Equal(t, "Suspended", getBucketVersioning(hc, bktName).Status) // change versioning with MFA successfully putBucketVersioningMFADelete(hc, bktName, "Enabled", "Enabled", generateMFAHeader(key, deviceName)) require.Equal(t, "Enabled", getBucketVersioning(hc, bktName).MfaDelete) require.Equal(t, "Enabled", getBucketVersioning(hc, bktName).Status) // try to disable MFA without MFA Header putBucketVersioningMFADeleteErr(hc, bktName, "Enabled", "Disabled", "", errors.GetAPIError(errors.ErrInvalidMFAHeader)) require.Equal(t, "Enabled", getBucketVersioning(hc, bktName).MfaDelete) require.Equal(t, "Enabled", getBucketVersioning(hc, bktName).Status) // try to disable MFA successfully putBucketVersioningMFADelete(hc, bktName, "Enabled", "Disabled", generateMFAHeader(key, deviceName)) require.Equal(t, "Disabled", getBucketVersioning(hc, bktName).MfaDelete) require.Equal(t, "Enabled", getBucketVersioning(hc, bktName).Status) }