@@ -3916,288 +3916,3 @@ def test_bucket_replication_alt_user():
39163916 # check that object exists in destination bucket
39173917 k = get_key (dest , dest_bucket , objname )
39183918 assert_equal (k .get_contents_as_string ().decode ('utf-8' ), 'foo' )
3919-
3920- @allow_bucket_replication
3921- def test_bucket_replication_reject_versioning_identical ():
3922- zonegroup = realm .master_zonegroup ()
3923- zonegroup_conns = ZonegroupConns (zonegroup )
3924-
3925- source = zonegroup_conns .non_account_rw_zones [0 ]
3926- dest = zonegroup_conns .non_account_rw_zones [1 ]
3927-
3928- source_bucket = source .create_bucket (gen_bucket_name ())
3929- dest_bucket = dest .create_bucket (gen_bucket_name ())
3930- source .s3_client .put_bucket_versioning (
3931- Bucket = source_bucket .name ,
3932- VersioningConfiguration = {'Status' : 'Enabled' }
3933- )
3934- zonegroup_meta_checkpoint (zonegroup )
3935-
3936- # create replication configuration
3937- e = assert_raises (ClientError ,
3938- source .s3_client .put_bucket_replication ,
3939- Bucket = source_bucket .name ,
3940- ReplicationConfiguration = {
3941- 'Role' : '' ,
3942- 'Rules' : [{
3943- 'ID' : 'rule1' ,
3944- 'Status' : 'Enabled' ,
3945- 'Destination' : {
3946- 'Bucket' : f'arn:aws:s3:::{ dest_bucket .name } ' ,
3947- }
3948- }]
3949- })
3950- assert e .response ['ResponseMetadata' ]['HTTPStatusCode' ] == 400
3951-
3952- @allow_bucket_replication
3953- def test_bucket_replicaion_reject_objectlock_identical ():
3954- zonegroup = realm .master_zonegroup ()
3955- zonegroup_conns = ZonegroupConns (zonegroup )
3956-
3957- source = zonegroup_conns .non_account_rw_zones [0 ]
3958- dest = zonegroup_conns .non_account_rw_zones [1 ]
3959-
3960- source_bucket = source .create_bucket (gen_bucket_name ())
3961- dest_bucket_name = gen_bucket_name ()
3962- dest .s3_client .create_bucket (Bucket = dest_bucket_name , ObjectLockEnabledForBucket = True )
3963- zonegroup_meta_checkpoint (zonegroup )
3964-
3965- # create replication configuration
3966- e = assert_raises (ClientError ,
3967- source .s3_client .put_bucket_replication ,
3968- Bucket = source_bucket .name ,
3969- ReplicationConfiguration = {
3970- 'Role' : '' ,
3971- 'Rules' : [{
3972- 'ID' : 'rule1' ,
3973- 'Status' : 'Enabled' ,
3974- 'Destination' : {
3975- 'Bucket' : f'arn:aws:s3:::{ dest_bucket_name } ' ,
3976- }
3977- }]
3978- })
3979- assert e .response ['ResponseMetadata' ]['HTTPStatusCode' ] == 400
3980-
3981- @allow_bucket_replication
3982- def test_bucket_replication_non_versioned_to_versioned ():
3983- zonegroup = realm .master_zonegroup ()
3984- zonegroup_conns = ZonegroupConns (zonegroup )
3985-
3986- source = zonegroup_conns .non_account_rw_zones [0 ]
3987- dest = zonegroup_conns .non_account_rw_zones [1 ]
3988-
3989- source_bucket = source .create_bucket (gen_bucket_name ())
3990- dest_bucket = dest .create_bucket (gen_bucket_name ())
3991- zonegroup_meta_checkpoint (zonegroup )
3992-
3993- # create replication configuration
3994- response = source .s3_client .put_bucket_replication (
3995- Bucket = source_bucket .name ,
3996- ReplicationConfiguration = {
3997- 'Role' : '' ,
3998- 'Rules' : [
3999- {
4000- 'ID' : 'rule1' ,
4001- 'Status' : 'Enabled' ,
4002- 'Destination' : {
4003- 'Bucket' : f'arn:aws:s3:::{ dest_bucket .name } ' ,
4004- }
4005- }
4006- ]
4007- }
4008- )
4009- assert response ['ResponseMetadata' ]['HTTPStatusCode' ] == 200
4010- zonegroup_meta_checkpoint (zonegroup )
4011-
4012- # enable versioning on destination bucket
4013- dest .s3_client .put_bucket_versioning (
4014- Bucket = dest_bucket .name ,
4015- VersioningConfiguration = {'Status' : 'Enabled' }
4016- )
4017- zonegroup_meta_checkpoint (zonegroup )
4018-
4019- # upload an object and wait for sync.
4020- objname = 'dummy'
4021- k = new_key (source , source_bucket , objname )
4022- k .set_contents_from_string ('foo' )
4023- zone_data_checkpoint (dest .zone , source .zone )
4024-
4025- # check that object not exists in destination bucket
4026- e = assert_raises (ClientError , dest .s3_client .get_object , Bucket = dest_bucket .name , Key = objname )
4027- assert e .response ['Error' ]['Code' ] == 'NoSuchKey'
4028-
4029- @allow_bucket_replication
4030- def test_bucket_replication_versioned_to_non_versioned ():
4031- zonegroup = realm .master_zonegroup ()
4032- zonegroup_conns = ZonegroupConns (zonegroup )
4033-
4034- source = zonegroup_conns .non_account_rw_zones [0 ]
4035- dest = zonegroup_conns .non_account_rw_zones [1 ]
4036-
4037- source_bucket = source .create_bucket (gen_bucket_name ())
4038- dest_bucket = dest .create_bucket (gen_bucket_name ())
4039- zonegroup_meta_checkpoint (zonegroup )
4040-
4041- # create replication configuration
4042- response = source .s3_client .put_bucket_replication (
4043- Bucket = source_bucket .name ,
4044- ReplicationConfiguration = {
4045- 'Role' : '' ,
4046- 'Rules' : [
4047- {
4048- 'ID' : 'rule1' ,
4049- 'Status' : 'Enabled' ,
4050- 'Destination' : {
4051- 'Bucket' : f'arn:aws:s3:::{ dest_bucket .name } ' ,
4052- }
4053- }
4054- ]
4055- }
4056- )
4057- assert response ['ResponseMetadata' ]['HTTPStatusCode' ] == 200
4058- zonegroup_meta_checkpoint (zonegroup )
4059-
4060- # enable versioning on source bucket
4061- source .s3_client .put_bucket_versioning (
4062- Bucket = source_bucket .name ,
4063- VersioningConfiguration = {'Status' : 'Enabled' }
4064- )
4065- zonegroup_meta_checkpoint (zonegroup )
4066-
4067- # upload an object and wait for sync.
4068- objname = 'dummy'
4069- k = new_key (source , source_bucket , objname )
4070- k .set_contents_from_string ('foo' )
4071- zone_data_checkpoint (dest .zone , source .zone )
4072-
4073- # check that object not exists in destination bucket
4074- e = assert_raises (ClientError , dest .s3_client .get_object , Bucket = dest_bucket .name , Key = objname )
4075- assert e .response ['Error' ]['Code' ] == 'NoSuchKey'
4076-
4077- @allow_bucket_replication
4078- def test_bucket_replication_lock_enabled_to_lock_disabled ():
4079- zonegroup = realm .master_zonegroup ()
4080- zonegroup_conns = ZonegroupConns (zonegroup )
4081-
4082- source = zonegroup_conns .non_account_rw_zones [0 ]
4083- dest = zonegroup_conns .non_account_rw_zones [1 ]
4084-
4085- source_bucket_name = gen_bucket_name ()
4086- source .create_bucket (source_bucket_name )
4087- # enabled versioning
4088- source .s3_client .put_bucket_versioning (
4089- Bucket = source_bucket_name ,
4090- VersioningConfiguration = {'Status' : 'Enabled' }
4091- )
4092- dest_bucket = dest .create_bucket (gen_bucket_name ())
4093- # enabled versioning
4094- dest .s3_client .put_bucket_versioning (
4095- Bucket = dest_bucket .name ,
4096- VersioningConfiguration = {'Status' : 'Enabled' }
4097- )
4098- zonegroup_meta_checkpoint (zonegroup )
4099-
4100- # create replication configuration
4101- source .s3_client .put_bucket_replication (
4102- Bucket = source_bucket_name ,
4103- ReplicationConfiguration = {
4104- 'Role' : '' ,
4105- 'Rules' : [{
4106- 'ID' : 'rule1' ,
4107- 'Status' : 'Enabled' ,
4108- 'Destination' : {
4109- 'Bucket' : f'arn:aws:s3:::{ dest_bucket .name } ' ,
4110- }
4111- }]
4112- }
4113- )
4114- zonegroup_meta_checkpoint (zonegroup )
4115-
4116- # enable object lock on source bucket
4117- source .s3_client .put_object_lock_configuration (
4118- Bucket = source_bucket_name ,
4119- ObjectLockConfiguration = {
4120- 'ObjectLockEnabled' : 'Enabled' ,
4121- 'Rule' : {
4122- 'DefaultRetention' : {
4123- 'Mode' : 'GOVERNANCE' ,
4124- 'Days' : 1
4125- }
4126- }
4127- }
4128- )
4129- zonegroup_meta_checkpoint (zonegroup )
4130-
4131- # upload an object and wait for sync.
4132- objname = 'dummy'
4133- k = new_key (source , source_bucket_name , objname )
4134- k .set_contents_from_string ('foo' )
4135- zone_data_checkpoint (dest .zone , source .zone )
4136-
4137- # check that object does not exist in destination bucket
4138- e = assert_raises (ClientError , dest .s3_client .get_object , Bucket = dest_bucket .name , Key = objname )
4139- assert e .response ['Error' ]['Code' ] == 'NoSuchKey'
4140-
4141- @allow_bucket_replication
4142- def test_bucket_replication_lock_disabled_to_lock_enabled ():
4143- zonegroup = realm .master_zonegroup ()
4144- zonegroup_conns = ZonegroupConns (zonegroup )
4145-
4146- source = zonegroup_conns .non_account_rw_zones [0 ]
4147- dest = zonegroup_conns .non_account_rw_zones [1 ]
4148-
4149- source_bucket = source .create_bucket (gen_bucket_name ())
4150- # enabled versioning
4151- source .s3_client .put_bucket_versioning (
4152- Bucket = source_bucket .name ,
4153- VersioningConfiguration = {'Status' : 'Enabled' }
4154- )
4155- dest_bucket_name = gen_bucket_name ()
4156- dest .create_bucket (dest_bucket_name )
4157- # enabled versioning
4158- dest .s3_client .put_bucket_versioning (
4159- Bucket = dest_bucket_name ,
4160- VersioningConfiguration = {'Status' : 'Enabled' }
4161- )
4162- zonegroup_meta_checkpoint (zonegroup )
4163-
4164- # create replication configuration
4165- source .s3_client .put_bucket_replication (
4166- Bucket = source_bucket .name ,
4167- ReplicationConfiguration = {
4168- 'Role' : '' ,
4169- 'Rules' : [{
4170- 'ID' : 'rule1' ,
4171- 'Status' : 'Enabled' ,
4172- 'Destination' : {
4173- 'Bucket' : f'arn:aws:s3:::{ dest_bucket_name } ' ,
4174- }
4175- }]
4176- }
4177- )
4178- zonegroup_meta_checkpoint (zonegroup )
4179-
4180- # enable object lock on destination bucket
4181- dest .s3_client .put_object_lock_configuration (
4182- Bucket = dest_bucket_name ,
4183- ObjectLockConfiguration = {
4184- 'ObjectLockEnabled' : 'Enabled' ,
4185- 'Rule' : {
4186- 'DefaultRetention' : {
4187- 'Mode' : 'GOVERNANCE' ,
4188- 'Days' : 1
4189- }
4190- }
4191- }
4192- )
4193- zonegroup_meta_checkpoint (zonegroup )
4194-
4195- # upload an object and wait for sync.
4196- objname = 'dummy'
4197- k = new_key (source , source_bucket .name , objname )
4198- k .set_contents_from_string ('foo' )
4199- zone_data_checkpoint (dest .zone , source .zone )
4200-
4201- # check that object does not exist in destination bucket
4202- e = assert_raises (ClientError , dest .s3_client .get_object , Bucket = dest_bucket_name , Key = objname )
4203- assert e .response ['Error' ]['Code' ] == 'NoSuchKey'
0 commit comments