github.com/opentelekomcloud/gophertelekomcloud@v0.9.3/acceptance/openstack/obs/v1/obs_test.go (about) 1 package v1 2 3 import ( 4 "fmt" 5 "os" 6 "strings" 7 "testing" 8 9 "github.com/opentelekomcloud/gophertelekomcloud/acceptance/clients" 10 "github.com/opentelekomcloud/gophertelekomcloud/acceptance/tools" 11 "github.com/opentelekomcloud/gophertelekomcloud/openstack/obs" 12 th "github.com/opentelekomcloud/gophertelekomcloud/testhelper" 13 ) 14 15 func TestObsBucketLifecycle(t *testing.T) { 16 client, err := clients.NewOBSClient() 17 th.AssertNoErr(t, err) 18 19 bucketName := strings.ToLower(tools.RandomString("obs-sdk-test", 5)) 20 21 _, err = client.CreateBucket(&obs.CreateBucketInput{ 22 Bucket: bucketName, 23 }) 24 t.Cleanup(func() { 25 _, err = client.DeleteBucket(bucketName) 26 th.AssertNoErr(t, err) 27 }) 28 th.AssertNoErr(t, err) 29 30 _, err = client.SetBucketEncryption(&obs.SetBucketEncryptionInput{ 31 Bucket: bucketName, 32 BucketEncryptionConfiguration: obs.BucketEncryptionConfiguration{ 33 SSEAlgorithm: "kms", 34 }, 35 }) 36 th.AssertNoErr(t, err) 37 38 bucketHead, err := client.GetBucketMetadata(&obs.GetBucketMetadataInput{ 39 Bucket: bucketName, 40 }) 41 th.AssertNoErr(t, err) 42 th.AssertEquals(t, bucketHead.FSStatus, obs.FSStatusDisabled) 43 th.AssertEquals(t, bucketHead.Version, "3.0") 44 } 45 46 func TestObsBucketLifecyclePolicy(t *testing.T) { 47 client, err := clients.NewOBSClient() 48 th.AssertNoErr(t, err) 49 50 bucketName := strings.ToLower(tools.RandomString("obs-sdk-test", 5)) 51 52 _, err = client.CreateBucket(&obs.CreateBucketInput{ 53 Bucket: bucketName, 54 }) 55 t.Cleanup(func() { 56 _, err = client.DeleteBucket(bucketName) 57 th.AssertNoErr(t, err) 58 }) 59 th.AssertNoErr(t, err) 60 61 objectName := tools.RandomString("test-obs-", 5) 62 63 _, err = client.PutObject(&obs.PutObjectInput{ 64 PutObjectBasicInput: obs.PutObjectBasicInput{ 65 ObjectOperationInput: obs.ObjectOperationInput{ 66 Bucket: bucketName, 67 Key: objectName, 68 }, 69 }, 70 }) 71 th.AssertNoErr(t, err) 72 73 t.Cleanup(func() { 74 _, err = client.DeleteObject(&obs.DeleteObjectInput{ 75 Bucket: bucketName, 76 Key: objectName, 77 }) 78 th.AssertNoErr(t, err) 79 }) 80 81 _, err = client.SetBucketLifecycleConfiguration( 82 &obs.SetBucketLifecycleConfigurationInput{ 83 Bucket: bucketName, 84 BucketLifecycleConfiguration: obs.BucketLifecycleConfiguration{ 85 LifecycleRules: []obs.LifecycleRule{ 86 { 87 Prefix: "path1/", 88 Status: "Enabled", 89 Transitions: []obs.Transition{ 90 { 91 Days: 30, 92 StorageClass: "COLD", 93 }, 94 }, 95 Expiration: obs.Expiration{ 96 Days: 60, 97 }, 98 }, 99 }, 100 }, 101 }, 102 ) 103 th.AssertNoErr(t, err) 104 105 config, err := client.GetBucketLifecycleConfiguration(bucketName) 106 th.AssertNoErr(t, err) 107 th.AssertEquals(t, config.BucketLifecycleConfiguration.LifecycleRules[0].Expiration.Days, 60) 108 109 t.Cleanup(func() { 110 _, err := client.DeleteBucketLifecycleConfiguration(bucketName) 111 th.AssertNoErr(t, err) 112 }) 113 114 } 115 116 func TestObsPolicyLifecycle(t *testing.T) { 117 client, err := clients.NewOBSClient() 118 th.AssertNoErr(t, err) 119 120 bucketName := strings.ToLower(tools.RandomString("obs-sdk-test", 5)) 121 122 _, err = client.CreateBucket(&obs.CreateBucketInput{ 123 Bucket: bucketName, 124 }) 125 t.Cleanup(func() { 126 _, err = client.DeleteBucket(bucketName) 127 th.AssertNoErr(t, err) 128 }) 129 th.AssertNoErr(t, err) 130 131 objectName := tools.RandomString("test-obs-", 5) 132 133 _, err = client.PutObject(&obs.PutObjectInput{ 134 PutObjectBasicInput: obs.PutObjectBasicInput{ 135 ObjectOperationInput: obs.ObjectOperationInput{ 136 Bucket: bucketName, 137 Key: objectName, 138 }, 139 }, 140 }) 141 th.AssertNoErr(t, err) 142 143 t.Cleanup(func() { 144 _, err = client.DeleteObject(&obs.DeleteObjectInput{ 145 Bucket: bucketName, 146 Key: objectName, 147 }) 148 th.AssertNoErr(t, err) 149 }) 150 151 policy := fmt.Sprintf( 152 `{ 153 "Statement": [ 154 { 155 "Effect": "Allow", 156 "Principal": { 157 "ID": [ 158 "*" 159 ] 160 }, 161 "Action": [ 162 "*" 163 ], 164 "Resource": [ 165 "%[1]s/*", 166 "%[1]s" 167 ] 168 } 169 ] 170 }`, bucketName) 171 172 policyInput := &obs.SetBucketPolicyInput{ 173 Bucket: bucketName, 174 Policy: policy, 175 } 176 _, err = client.SetBucketPolicy(policyInput) 177 th.AssertNoErr(t, err) 178 179 t.Cleanup(func() { 180 _, err = client.DeleteBucketPolicy(bucketName) 181 th.AssertNoErr(t, err) 182 }) 183 184 _, err = client.GetBucketPolicy(bucketName) 185 th.AssertNoErr(t, err) 186 } 187 188 func TestObsReplicationLifecycle(t *testing.T) { 189 client, err := clients.NewOBSClient() 190 th.AssertNoErr(t, err) 191 192 if os.Getenv("OS_AGENCY") == "" || os.Getenv("OS_DESTINATION_BUCKET") == "" { 193 t.Skip("Agency or bucket is not provided for the test.") 194 } 195 196 bucketName := strings.ToLower(tools.RandomString("obs-sdk-test", 5)) 197 bucketNameDest := os.Getenv("OS_DESTINATION_BUCKET") 198 agencyName := os.Getenv("OS_AGENCY") 199 200 _, err = client.CreateBucket(&obs.CreateBucketInput{ 201 Bucket: bucketName, 202 }) 203 t.Cleanup(func() { 204 _, err = client.DeleteBucket(bucketName) 205 th.AssertNoErr(t, err) 206 }) 207 th.AssertNoErr(t, err) 208 209 _, err = client.SetBucketReplication( 210 &obs.SetBucketReplicationInput{ 211 Bucket: bucketName, 212 BucketReplicationConfiguration: obs.BucketReplicationConfiguration{ 213 Agency: agencyName, 214 ReplicationRules: []obs.ReplicationRule{ 215 { 216 Prefix: "", 217 Status: "Enabled", 218 DestinationBucket: bucketNameDest, 219 DeleteData: "Enabled", 220 }, 221 }, 222 }, 223 }) 224 th.AssertNoErr(t, err) 225 226 replication, err := client.GetBucketReplication(bucketName) 227 th.AssertNoErr(t, err) 228 th.AssertEquals(t, replication.StatusCode, 200) 229 th.AssertEquals(t, replication.Agency, agencyName) 230 th.AssertEquals(t, replication.ReplicationRules[0].DeleteData, obs.EnabledType("Enabled")) 231 th.AssertEquals(t, replication.ReplicationRules[0].Status, obs.RuleStatusType("Enabled")) 232 233 _, err = client.DeleteBucketReplication(bucketName) 234 th.AssertNoErr(t, err) 235 } 236 237 func TestOBSObjectLock(t *testing.T) { 238 client, err := clients.NewOBSClient() 239 th.AssertNoErr(t, err) 240 241 bucketName := strings.ToLower(tools.RandomString("obs-sdk-test-", 5)) 242 243 _, err = client.CreateBucket(&obs.CreateBucketInput{ 244 Bucket: bucketName, 245 ObjectLockEnabled: true, 246 }) 247 t.Cleanup(func() { 248 _, err = client.DeleteBucket(bucketName) 249 th.AssertNoErr(t, err) 250 }) 251 th.AssertNoErr(t, err) 252 253 wormOpts := obs.SetWORMPolicyInput{ 254 Bucket: bucketName, 255 BucketWormPolicy: obs.BucketWormPolicy{ 256 ObjectLockEnabled: "Enabled", 257 Mode: "COMPLIANCE", 258 Days: "10", 259 }, 260 } 261 _, err = client.SetWORMPolicy(&wormOpts) 262 th.AssertNoErr(t, err) 263 264 getPolicy, err := client.GetWORMPolicy(bucketName) 265 th.AssertNoErr(t, err) 266 267 th.AssertEquals(t, wormOpts.Days, getPolicy.Days) 268 269 // disable object lock 270 wormOpts.BucketWormPolicy = obs.BucketWormPolicy{} 271 _, err = client.SetWORMPolicy(&wormOpts) 272 th.AssertNoErr(t, err) 273 } 274 275 func TestOBSCustomDomain(t *testing.T) { 276 client, err := clients.NewOBSClient() 277 th.AssertNoErr(t, err) 278 279 bucketName := strings.ToLower(tools.RandomString("obs-sdk-test-", 5)) 280 281 _, err = client.CreateBucket(&obs.CreateBucketInput{ 282 Bucket: bucketName, 283 }) 284 t.Cleanup(func() { 285 _, err = client.DeleteBucket(bucketName) 286 th.AssertNoErr(t, err) 287 }) 288 th.AssertNoErr(t, err) 289 290 domainName := "www.test.com" 291 292 input := &obs.SetBucketCustomDomainInput{ 293 Bucket: bucketName, 294 CustomDomain: domainName, 295 } 296 _, err = client.SetBucketCustomDomain(input) 297 th.AssertNoErr(t, err) 298 299 output, err := client.GetBucketCustomDomain(bucketName) 300 th.AssertNoErr(t, err) 301 302 tools.PrintResource(t, output) 303 304 inputDelete := &obs.DeleteBucketCustomDomainInput{ 305 Bucket: bucketName, 306 CustomDomain: domainName, 307 } 308 309 _, err = client.DeleteBucketCustomDomain(inputDelete) 310 th.AssertNoErr(t, err) 311 }