77 "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
88 "github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
99 container "github.com/scaleway/scaleway-sdk-go/api/container/v1beta1"
10+ "github.com/scaleway/scaleway-sdk-go/api/registry/v1"
1011 "github.com/scaleway/scaleway-sdk-go/scw"
1112)
1213
@@ -147,6 +148,34 @@ func TestAccScalewayContainerNamespace_Basic(t *testing.T) {
147148 })
148149}
149150
151+ func TestAccScalewayContainerNamespace_DestroyRegistry (t * testing.T ) {
152+ tt := NewTestTools (t )
153+ defer tt .Cleanup ()
154+
155+ resource .ParallelTest (t , resource.TestCase {
156+ PreCheck : func () { testAccPreCheck (t ) },
157+ ProviderFactories : tt .ProviderFactories ,
158+ CheckDestroy : resource .ComposeTestCheckFunc (
159+ testAccCheckScalewayContainerNamespaceDestroy (tt ),
160+ testAccCheckScalewayContainerRegistryDestroy (tt ),
161+ ),
162+ Steps : []resource.TestStep {
163+ {
164+ Config : `
165+ resource scaleway_container_namespace main {
166+ name = "test-cr-ns-01"
167+ destroy_registry = true
168+ }
169+ ` ,
170+ Check : resource .ComposeTestCheckFunc (
171+ testAccCheckScalewayContainerNamespaceExists (tt , "scaleway_container_namespace.main" ),
172+ testCheckResourceAttrUUID ("scaleway_container_namespace.main" , "id" ),
173+ ),
174+ },
175+ },
176+ })
177+ }
178+
150179func testAccCheckScalewayContainerNamespaceExists (tt * TestTools , n string ) resource.TestCheckFunc {
151180 return func (state * terraform.State ) error {
152181 rs , ok := state .RootModule ().Resources [n ]
@@ -175,7 +204,7 @@ func testAccCheckScalewayContainerNamespaceExists(tt *TestTools, n string) resou
175204func testAccCheckScalewayContainerNamespaceDestroy (tt * TestTools ) resource.TestCheckFunc {
176205 return func (state * terraform.State ) error {
177206 for _ , rs := range state .RootModule ().Resources {
178- if rs .Type != "scaleway_container_namespace" {
207+ if rs .Type != "scaleway_container_namespace" { //nolint:goconst
179208 continue
180209 }
181210
@@ -201,3 +230,33 @@ func testAccCheckScalewayContainerNamespaceDestroy(tt *TestTools) resource.TestC
201230 return nil
202231 }
203232}
233+
234+ func testAccCheckScalewayContainerRegistryDestroy (tt * TestTools ) resource.TestCheckFunc {
235+ return func (state * terraform.State ) error {
236+ for _ , rs := range state .RootModule ().Resources {
237+ if rs .Type != "scaleway_container_namespace" {
238+ continue
239+ }
240+
241+ api , region , _ , err := registryAPIWithRegionAndID (tt .Meta , rs .Primary .ID )
242+ if err != nil {
243+ return err
244+ }
245+
246+ _ , err = api .DeleteNamespace (& registry.DeleteNamespaceRequest {
247+ NamespaceID : rs .Primary .Attributes ["registry_namespace_id" ],
248+ Region : region ,
249+ })
250+
251+ if err == nil {
252+ return fmt .Errorf ("registry namespace (%s) still exists" , rs .Primary .Attributes ["registry_namespace_id" ])
253+ }
254+
255+ if ! is404Error (err ) {
256+ return err
257+ }
258+ }
259+
260+ return nil
261+ }
262+ }
0 commit comments