|
|
|
@ -362,6 +362,52 @@ func TestNewIdentityAccessManagementWithStoreEnvVars(t *testing.T) { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// TestConfigFileWithNoIdentitiesAllowsEnvVars tests that when a config file exists
|
|
|
|
// but contains no identities (e.g., only KMS settings), environment variables should still work.
|
|
|
|
// This test validates the fix for issue #7311.
|
|
|
|
func TestConfigFileWithNoIdentitiesAllowsEnvVars(t *testing.T) { |
|
|
|
// Set environment variables
|
|
|
|
testAccessKey := "AKIATEST1234567890AB" |
|
|
|
testSecretKey := "testSecret1234567890123456789012345678901234" |
|
|
|
t.Setenv("AWS_ACCESS_KEY_ID", testAccessKey) |
|
|
|
t.Setenv("AWS_SECRET_ACCESS_KEY", testSecretKey) |
|
|
|
|
|
|
|
// Create a temporary config file with only KMS settings (no identities)
|
|
|
|
configContent := `{ |
|
|
|
"kms": { |
|
|
|
"default": { |
|
|
|
"provider": "local", |
|
|
|
"config": { |
|
|
|
"keyPath": "/tmp/test-key" |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
}` |
|
|
|
tmpFile, err := os.CreateTemp("", "s3-config-*.json") |
|
|
|
assert.NoError(t, err, "Should create temp config file") |
|
|
|
defer os.Remove(tmpFile.Name()) |
|
|
|
|
|
|
|
_, err = tmpFile.Write([]byte(configContent)) |
|
|
|
assert.NoError(t, err, "Should write config content") |
|
|
|
tmpFile.Close() |
|
|
|
|
|
|
|
// Create IAM instance with config file that has no identities
|
|
|
|
option := &S3ApiServerOption{ |
|
|
|
Config: tmpFile.Name(), |
|
|
|
} |
|
|
|
iam := NewIdentityAccessManagementWithStore(option, string(credential.StoreTypeMemory)) |
|
|
|
|
|
|
|
// Should have exactly one identity from environment variables
|
|
|
|
assert.Len(t, iam.identities, 1, "Should have exactly one identity from environment variables even when config file exists with no identities") |
|
|
|
|
|
|
|
identity := iam.identities[0] |
|
|
|
assert.Equal(t, "admin-AKIATEST", identity.Name, "Identity name should be based on access key") |
|
|
|
assert.Len(t, identity.Credentials, 1, "Should have one credential") |
|
|
|
assert.Equal(t, testAccessKey, identity.Credentials[0].AccessKey, "Access key should match environment variable") |
|
|
|
assert.Equal(t, testSecretKey, identity.Credentials[0].SecretKey, "Secret key should match environment variable") |
|
|
|
assert.Contains(t, identity.Actions, Action(ACTION_ADMIN), "Should have admin action") |
|
|
|
} |
|
|
|
|
|
|
|
// TestBucketLevelListPermissions tests that bucket-level List permissions work correctly
|
|
|
|
// This test validates the fix for issue #7066
|
|
|
|
func TestBucketLevelListPermissions(t *testing.T) { |
|
|
|
|