Skip to content

Commit d4eeb57

Browse files
committed
Refactor(storage): streamline enforcement flow
- Refactor `set_bucket_encryption_enforcement_config` to apply enforcement settings during bucket creation instead of a separate update call. - Rename test variable to `$enforcementBucketName` to better align with `BucketEncryptionEnforcementConfig`. - Update PHPUnit test suite to use a dependent data-passing flow for improved reliability and cleaner logic.
1 parent 34c2075 commit d4eeb57

2 files changed

Lines changed: 29 additions & 21 deletions

File tree

storage/src/set_bucket_encryption_enforcement_config.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
use Google\Cloud\Storage\StorageClient;
2828

2929
/**
30-
* Configures a bucket to enforce specific encryption types (e.g., CMEK-only).
30+
* Creates a bucket with specific encryption enforcement (e.g., CMEK-only).
3131
*
3232
* @param string $bucketName The ID of your GCS bucket (e.g. "my-bucket").
3333
* @param string $kmsKeyName The name of the KMS key to be used as the default (e.g. "projects/my-project/...").
@@ -53,9 +53,9 @@ function set_bucket_encryption_enforcement_config(string $bucketName, string $km
5353
],
5454
],
5555
];
56-
$bucket->update($options);
56+
$storage->createBucket($bucketName, $options);
5757

58-
printf('Encryption enforcement configuration updated for bucket %s.' . PHP_EOL, $bucketName);
58+
printf('Bucket %s created with encryption enforcement configuration.' . PHP_EOL, $bucketName);
5959
}
6060
# [END storage_set_bucket_encryption_enforcement_config]
6161

storage/test/storageTest.php

Lines changed: 26 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ class storageTest extends TestCase
3232
use TestTrait;
3333

3434
private static $bucketName;
35-
private static $kmsEncryptedBucketName;
3635
private static $storage;
3736
private static $tempBucket;
3837
private static $objectRetentionBucketName;
@@ -41,7 +40,6 @@ public static function setUpBeforeClass(): void
4140
{
4241
self::checkProjectEnvVars();
4342
self::$bucketName = self::requireEnv('GOOGLE_STORAGE_BUCKET');
44-
self::$kmsEncryptedBucketName = self::$bucketName . '-kms-encrypted';
4543
self::$storage = new StorageClient();
4644
self::$tempBucket = self::$storage->createBucket(
4745
sprintf('%s-test-bucket-%s', self::$projectId, time())
@@ -513,27 +511,31 @@ public function testDownloadEncryptedFileFails()
513511

514512
public function testEnableDefaultKmsKey()
515513
{
514+
$kmsEncryptedBucketName = self::$bucketName . '-kms-encrypted';
515+
516516
$output = $this->runFunctionSnippet('enable_default_kms_key', [
517-
self::$kmsEncryptedBucketName,
517+
$kmsEncryptedBucketName,
518518
$this->keyName(),
519519
]);
520520

521521
$this->assertEquals($output, sprintf(
522522
'Default KMS key for %s was set to %s' . PHP_EOL,
523-
self::$kmsEncryptedBucketName,
523+
$kmsEncryptedBucketName,
524524
$this->keyName()
525525
));
526526
}
527527

528528
/** @depends testEnableDefaultKmsKey */
529529
public function testUploadWithKmsKey()
530530
{
531+
$kmsEncryptedBucketName = self::$bucketName . '-kms-encrypted';
532+
531533
$objectName = 'test-object-' . time();
532534
$uploadFrom = tempnam(sys_get_temp_dir(), '/tests');
533535
file_put_contents($uploadFrom, 'foo' . rand());
534536

535537
$output = $this->runFunctionSnippet('upload_with_kms_key', [
536-
self::$kmsEncryptedBucketName,
538+
$kmsEncryptedBucketName,
537539
$objectName,
538540
$uploadFrom,
539541
$this->keyName(),
@@ -542,7 +544,7 @@ public function testUploadWithKmsKey()
542544
$this->assertEquals($output, sprintf(
543545
'Uploaded %s to gs://%s/%s using encryption key %s' . PHP_EOL,
544546
basename($uploadFrom),
545-
self::$kmsEncryptedBucketName,
547+
$kmsEncryptedBucketName,
546548
$objectName,
547549
$this->keyName()
548550
));
@@ -553,11 +555,12 @@ public function testUploadWithKmsKey()
553555
/** @depends testUploadWithKmsKey */
554556
public function testObjectGetKmsKey(string $objectName)
555557
{
556-
$bucket = self::$storage->bucket(self::$kmsEncryptedBucketName);
558+
$kmsEncryptedBucketName = self::$bucketName . '-kms-encrypted';
559+
$bucket = self::$storage->bucket($kmsEncryptedBucketName);
557560
$objectInfo = $bucket->object($objectName)->info();
558561

559562
$output = $this->runFunctionSnippet('object_get_kms_key', [
560-
self::$kmsEncryptedBucketName,
563+
$kmsEncryptedBucketName,
561564
$objectName,
562565
]);
563566

@@ -570,30 +573,33 @@ public function testObjectGetKmsKey(string $objectName)
570573
);
571574
}
572575

573-
/** @depends testEnableDefaultKmsKey */
574576
public function testSetBucketEncryptionEnforcementConfig()
575577
{
578+
$enforcementBucketName = self::$bucketName . '-enc-enforcement';
579+
576580
$output = $this->runFunctionSnippet('set_bucket_encryption_enforcement_config', [
577-
self::$kmsEncryptedBucketName,
581+
$enforcementBucketName,
578582
$this->keyName(),
579583
]);
580584

581585
$this->assertEquals($output, sprintf(
582-
'Encryption enforcement configuration updated for bucket %s.' . PHP_EOL,
583-
self::$kmsEncryptedBucketName
586+
'Bucket %s created with encryption enforcement configuration.' . PHP_EOL,
587+
$enforcementBucketName
584588
));
585589
}
586590

587591
/** @depends testSetBucketEncryptionEnforcementConfig */
588592
public function testGetBucketEncryptionEnforcementConfig()
589593
{
594+
$enforcementBucketName = self::$bucketName . '-enc-enforcement';
595+
590596
sleep(2);
591597
$output = $this->runFunctionSnippet('get_bucket_encryption_enforcement_config', [
592-
self::$kmsEncryptedBucketName
598+
$enforcementBucketName
593599
]);
594600

595601
$this->assertStringContainsString(
596-
sprintf('Encryption enforcement configuration for bucket %s.', self::$kmsEncryptedBucketName),
602+
sprintf('Encryption enforcement configuration for bucket %s.', $enforcementBucketName),
597603
$output
598604
);
599605
$this->assertStringContainsString(sprintf('Default KMS Key: %s', $this->keyName()), $output);
@@ -605,24 +611,26 @@ public function testGetBucketEncryptionEnforcementConfig()
605611
/** @depends testGetBucketEncryptionEnforcementConfig */
606612
public function testUpdateBucketEncryptionEnforcementConfig()
607613
{
614+
$enforcementBucketName = self::$bucketName . '-enc-enforcement';
615+
608616
$output = $this->runFunctionSnippet('update_bucket_encryption_enforcement_config', [
609-
self::$kmsEncryptedBucketName
617+
$enforcementBucketName
610618
]);
611619

612620
$this->assertStringContainsString(
613-
sprintf('Google-managed encryption enforcement set to FullyRestricted for %s.', self::$kmsEncryptedBucketName),
621+
sprintf('Google-managed encryption enforcement set to FullyRestricted for %s.', $enforcementBucketName),
614622
$output
615623
);
616624

617625
$this->assertStringContainsString(
618-
sprintf('All encryption enforcement configurations removed from bucket %s.', self::$kmsEncryptedBucketName),
626+
sprintf('All encryption enforcement configurations removed from bucket %s.', $enforcementBucketName),
619627
$output
620628
);
621629

622630
// Final verification: Ensure 'Get' now shows no configuration
623631
sleep(2);
624632
$finalOutput = $this->runFunctionSnippet('get_bucket_encryption_enforcement_config', [
625-
self::$kmsEncryptedBucketName
633+
$enforcementBucketName
626634
]);
627635

628636
$this->assertStringContainsString('No encryption configuration found (Default GMEK is active).', $finalOutput);

0 commit comments

Comments
 (0)