@@ -209,6 +209,52 @@ func TestAccPostgresqlExtension_Database(t *testing.T) {
209209 })
210210}
211211
212+ func TestAccPostgresqlExtension_DropCascade (t * testing.T ) {
213+ skipIfNotAcc (t )
214+
215+ var testAccPostgresqlExtensionConfig = `
216+ resource "postgresql_extension" "cascade" {
217+ name = "pgcrypto"
218+ drop_cascade = true
219+ }
220+ `
221+ resource .Test (t , resource.TestCase {
222+ PreCheck : func () {
223+ testAccPreCheck (t )
224+ testCheckCompatibleVersion (t , featureExtension )
225+ testSuperuserPreCheck (t )
226+ },
227+ Providers : testAccProviders ,
228+ CheckDestroy : testAccCheckPostgresqlExtensionDestroy ,
229+ Steps : []resource.TestStep {
230+ {
231+ Config : testAccPostgresqlExtensionConfig ,
232+ Check : resource .ComposeTestCheckFunc (
233+ testAccCheckPostgresqlExtensionExists ("postgresql_extension.cascade" ),
234+ resource .TestCheckResourceAttr ("postgresql_extension.cascade" , "name" , "pgcrypto" ),
235+ // This will create a dependency on the extension.
236+ testAccCreateExtensionDependency ("test_extension_cascade" ),
237+ ),
238+ },
239+ },
240+ })
241+ }
242+
243+ func testAccCreateExtensionDependency (tableName string ) resource.TestCheckFunc {
244+ return func (s * terraform.State ) error {
245+
246+ client := testAccProvider .Meta ().(* Client )
247+ db := client .DB ()
248+
249+ _ , err := db .Exec (fmt .Sprintf ("DROP TABLE IF EXISTS %s; CREATE TABLE %s (id uuid DEFAULT gen_random_uuid())" , tableName , tableName ))
250+ if err != nil {
251+ return fmt .Errorf ("could not create test table in schema: %s" , err )
252+ }
253+
254+ return nil
255+ }
256+ }
257+
212258var testAccPostgresqlExtensionConfig = `
213259resource "postgresql_extension" "myextension" {
214260 name = "pg_trgm"
0 commit comments