@@ -446,6 +446,35 @@ func TestAccKmsCryptoKeyVersion_basic(t *testing.T) {
446446 })
447447}
448448
449+ func TestAccKmsCryptoKeyVersionWithSymmetricHSM (t * testing.T ) {
450+ t .Parallel ()
451+
452+ projectId := fmt .Sprintf ("tf-test-%d" , acctest .RandInt (t ))
453+ projectOrg := envvar .GetTestOrgFromEnv (t )
454+ projectBillingAccount := envvar .GetTestBillingAccountFromEnv (t )
455+ keyRingName := fmt .Sprintf ("tf-test-%s" , acctest .RandString (t , 10 ))
456+ cryptoKeyName := fmt .Sprintf ("tf-test-%s" , acctest .RandString (t , 10 ))
457+
458+ acctest .VcrTest (t , resource.TestCase {
459+ PreCheck : func () { acctest .AccTestPreCheck (t ) },
460+ ProtoV5ProviderFactories : acctest .ProtoV5ProviderFactories (t ),
461+ Steps : []resource.TestStep {
462+ {
463+ Config : testGoogleKmsCryptoKeyVersionWithSymmetricHSM (projectId , projectOrg , projectBillingAccount , keyRingName , cryptoKeyName ),
464+ },
465+ {
466+ ResourceName : "google_kms_crypto_key_version.crypto_key_version" ,
467+ ImportState : true ,
468+ ImportStateVerify : true ,
469+ ImportStateVerifyIgnore : []string {"labels" , "terraform_labels" },
470+ },
471+ {
472+ Config : testGoogleKmsCryptoKeyVersion_removed (projectId , projectOrg , projectBillingAccount , keyRingName , cryptoKeyName ),
473+ },
474+ },
475+ })
476+ }
477+
449478func TestAccKmsCryptoKeyVersion_skipInitialVersion (t * testing.T ) {
450479 t .Parallel ()
451480
@@ -749,6 +778,44 @@ resource "google_kms_crypto_key_version" "crypto_key_version" {
749778` , projectId , projectId , projectOrg , projectBillingAccount , keyRingName , cryptoKeyName )
750779}
751780
781+ func testGoogleKmsCryptoKeyVersionWithSymmetricHSM (projectId , projectOrg , projectBillingAccount , keyRingName , cryptoKeyName string ) string {
782+ return fmt .Sprintf (`
783+ resource "google_project" "acceptance" {
784+ name = "%s"
785+ project_id = "%s"
786+ org_id = "%s"
787+ billing_account = "%s"
788+ }
789+
790+ resource "google_project_service" "acceptance" {
791+ project = google_project.acceptance.project_id
792+ service = "cloudkms.googleapis.com"
793+ }
794+
795+ resource "google_kms_key_ring" "key_ring" {
796+ project = google_project_service.acceptance.project
797+ name = "%s"
798+ location = "us-central1"
799+ }
800+
801+ resource "google_kms_crypto_key" "crypto_key" {
802+ name = "%s"
803+ key_ring = google_kms_key_ring.key_ring.id
804+ labels = {
805+ key = "value"
806+ }
807+ version_template {
808+ algorithm = "GOOGLE_SYMMETRIC_ENCRYPTION"
809+ protection_level = "HSM"
810+ }
811+ }
812+
813+ resource "google_kms_crypto_key_version" "crypto_key_version" {
814+ crypto_key = google_kms_crypto_key.crypto_key.id
815+ }
816+ ` , projectId , projectId , projectOrg , projectBillingAccount , keyRingName , cryptoKeyName )
817+ }
818+
752819func testGoogleKmsCryptoKeyVersion_removed (projectId , projectOrg , projectBillingAccount , keyRingName , cryptoKeyName string ) string {
753820 return fmt .Sprintf (`
754821resource "google_project" "acceptance" {
0 commit comments