fix: use unique bucket name in TestS3IAMPresignedURLIntegration to avoid flaky test (#7801)
The test was using a static bucket name 'test-iam-bucket' that could conflict with buckets created by other tests or previous runs. Each test framework creates new RSA keys for JWT signing, so the 'admin-user' identity differs between runs. When the bucket exists from a previous test, the new admin cannot access or delete it, causing AccessDenied errors. Changed to use GenerateUniqueBucketName() which ensures each test run gets its own bucket, avoiding cross-test conflicts.
This commit is contained in:
@@ -558,13 +558,14 @@ func TestS3IAMPresignedURLIntegration(t *testing.T) {
|
|||||||
adminClient, err := framework.CreateS3ClientWithJWT("admin-user", "TestAdminRole")
|
adminClient, err := framework.CreateS3ClientWithJWT("admin-user", "TestAdminRole")
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
// Use static bucket name but with cleanup to handle conflicts
|
// Use unique bucket name to avoid conflicts with other tests
|
||||||
err = framework.CreateBucketWithCleanup(adminClient, testBucket)
|
bucketName := framework.GenerateUniqueBucketName("test-iam-presigned")
|
||||||
|
err = framework.CreateBucket(adminClient, bucketName)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
// Put test object
|
// Put test object
|
||||||
_, err = adminClient.PutObject(&s3.PutObjectInput{
|
_, err = adminClient.PutObject(&s3.PutObjectInput{
|
||||||
Bucket: aws.String(testBucket),
|
Bucket: aws.String(bucketName),
|
||||||
Key: aws.String(testObjectKey),
|
Key: aws.String(testObjectKey),
|
||||||
Body: strings.NewReader(testObjectData),
|
Body: strings.NewReader(testObjectData),
|
||||||
})
|
})
|
||||||
@@ -586,7 +587,7 @@ func TestS3IAMPresignedURLIntegration(t *testing.T) {
|
|||||||
|
|
||||||
// Test direct object access with JWT Bearer token (recommended approach)
|
// Test direct object access with JWT Bearer token (recommended approach)
|
||||||
_, err := adminClient.GetObject(&s3.GetObjectInput{
|
_, err := adminClient.GetObject(&s3.GetObjectInput{
|
||||||
Bucket: aws.String(testBucket),
|
Bucket: aws.String(bucketName),
|
||||||
Key: aws.String(testObjectKey),
|
Key: aws.String(testObjectKey),
|
||||||
})
|
})
|
||||||
require.NoError(t, err, "Direct object access with JWT Bearer token works correctly")
|
require.NoError(t, err, "Direct object access with JWT Bearer token works correctly")
|
||||||
@@ -597,13 +598,13 @@ func TestS3IAMPresignedURLIntegration(t *testing.T) {
|
|||||||
|
|
||||||
// Cleanup
|
// Cleanup
|
||||||
_, err = adminClient.DeleteObject(&s3.DeleteObjectInput{
|
_, err = adminClient.DeleteObject(&s3.DeleteObjectInput{
|
||||||
Bucket: aws.String(testBucket),
|
Bucket: aws.String(bucketName),
|
||||||
Key: aws.String(testObjectKey),
|
Key: aws.String(testObjectKey),
|
||||||
})
|
})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
_, err = adminClient.DeleteBucket(&s3.DeleteBucketInput{
|
_, err = adminClient.DeleteBucket(&s3.DeleteBucketInput{
|
||||||
Bucket: aws.String(testBucket),
|
Bucket: aws.String(bucketName),
|
||||||
})
|
})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user