Skip to content

Commit e3b9079

Browse files
committed
change resource manager stack tests to use pre-created stack
1 parent 0259b81 commit e3b9079

File tree

3 files changed

+117
-5
lines changed

3 files changed

+117
-5
lines changed
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
package oci
2+
3+
import (
4+
"archive/zip"
5+
"bytes"
6+
"context"
7+
"encoding/base64"
8+
"fmt"
9+
10+
"github.com/oracle/oci-go-sdk/common"
11+
"github.com/oracle/oci-go-sdk/resourcemanager"
12+
)
13+
14+
func createResourceManagerStack(resourceManagerClient resourcemanager.ResourceManagerClient, stackDisplayName string, compartment string) (string, error) {
15+
16+
buf := new(bytes.Buffer)
17+
zipWriter := zip.NewWriter(buf)
18+
19+
f, err := zipWriter.Create("test.tf")
20+
if err != nil {
21+
return "", fmt.Errorf("[DEBUG] cannot create file for zip configuration: %v", err)
22+
}
23+
_, err = f.Write([]byte("provider oci{}"))
24+
if err != nil {
25+
return "", fmt.Errorf("[DEBUG] cannot write tf configuration to zip archive: %v", err)
26+
}
27+
err = zipWriter.Close()
28+
if err != nil {
29+
return "", fmt.Errorf("[DEBUG] cannot close zip writer: %v", err)
30+
}
31+
32+
encoded := base64.StdEncoding.EncodeToString(buf.Bytes())
33+
34+
// stack representation to assert in tests
35+
stackDescription := stackDisplayName + " Description"
36+
37+
createStackResponse, err := resourceManagerClient.CreateStack(context.Background(), resourcemanager.CreateStackRequest{
38+
CreateStackDetails: resourcemanager.CreateStackDetails{
39+
CompartmentId: &compartment,
40+
ConfigSource: resourcemanager.CreateZipUploadConfigSourceDetails{
41+
ZipFileBase64Encoded: &encoded,
42+
},
43+
FreeformTags: map[string]string{"bar-key": "value"},
44+
DefinedTags: map[string]map[string]interface{}{"example-tag-namespace-all": {"example-tag": "value"}},
45+
Description: &stackDescription,
46+
DisplayName: &stackDisplayName,
47+
Variables: map[string]string{"var1": "value1", "var2": "value2", "var3": "value3"},
48+
},
49+
RequestMetadata: common.RequestMetadata{
50+
RetryPolicy: getRetryPolicy(false, "resourcemanager"),
51+
},
52+
})
53+
54+
if err != nil {
55+
return "", fmt.Errorf("[DEBUG] cannot create ResourceManager stack: %v", err)
56+
}
57+
58+
return *createStackResponse.Id, nil
59+
60+
}
61+
62+
func destroyResourceManagerStack(resourceManagerClient resourcemanager.ResourceManagerClient, resourceManagerStackId string) error {
63+
64+
if resourceManagerStackId == "" {
65+
return fmt.Errorf("[DEBUG] ResourceManager StackId is not specified to delete the stack")
66+
}
67+
68+
_, err := resourceManagerClient.DeleteStack(context.Background(), resourcemanager.DeleteStackRequest{
69+
StackId: &resourceManagerStackId,
70+
RequestMetadata: common.RequestMetadata{
71+
RetryPolicy: getRetryPolicy(true, "resourcemanager"),
72+
},
73+
})
74+
75+
if err != nil {
76+
return fmt.Errorf("[DEBUG] failed to delete resource stack: %s with the error: %v", resourceManagerStackId, err)
77+
}
78+
79+
return nil
80+
}

oci/resourcemanager_stack_test.go

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import (
2121

2222
var (
2323
stackSingularDataSourceRepresentation = map[string]interface{}{
24-
"stack_id": Representation{repType: Required, create: `${data.oci_resourcemanager_stacks.test_stacks.stacks[0].id}`},
24+
"stack_id": Representation{repType: Required, create: `${var.resource_manager_stack_id}`},
2525
}
2626

2727
stackDataSourceRepresentation = map[string]interface{}{
@@ -45,21 +45,34 @@ func TestResourcemanagerStackResource_basic(t *testing.T) {
4545
provider := testAccProvider
4646
config := testProviderConfig()
4747

48+
client := GetTestClients(&schema.ResourceData{}).resourceManagerClient
49+
4850
compartmentId := getEnvSettingWithBlankDefault("compartment_ocid")
4951
compartmentIdVariableStr := fmt.Sprintf("variable \"compartment_id\" { default = \"%s\" }\n", compartmentId)
5052

53+
resourceManagerStackId, err := createResourceManagerStack(*client, "TestResourcemanagerStackResource_basic", compartmentId)
54+
if err != nil {
55+
t.Errorf("cannot create resource manager stack for the test run: %v", err)
56+
}
57+
5158
datasourceName := "data.oci_resourcemanager_stacks.test_stacks"
5259
singularDatasourceName := "data.oci_resourcemanager_stack.test_stack"
5360

5461
resource.Test(t, resource.TestCase{
5562
PreCheck: func() { testAccPreCheck(t) },
63+
CheckDestroy: func(s *terraform.State) error {
64+
return destroyResourceManagerStack(*client, resourceManagerStackId)
65+
},
66+
PreventPostDestroyRefresh: true,
5667
Providers: map[string]terraform.ResourceProvider{
5768
"oci": provider,
5869
},
5970
Steps: []resource.TestStep{
6071
// verify datasource
6172
{
62-
Config: config +
73+
Config: config + `
74+
variable "resource_manager_stack_id" { default = "` + resourceManagerStackId + `" }
75+
` +
6376
generateDataSourceFromRepresentationMap("oci_resourcemanager_stacks", "test_stacks", Required, Create, stackDataSourceRepresentation) +
6477
compartmentIdVariableStr + StackResourceConfig,
6578
Check: resource.ComposeAggregateTestCheckFunc(
@@ -80,7 +93,9 @@ func TestResourcemanagerStackResource_basic(t *testing.T) {
8093
},
8194
// verify singular datasource
8295
{
83-
Config: config +
96+
Config: config + `
97+
variable "resource_manager_stack_id" { default = "` + resourceManagerStackId + `" }
98+
` +
8499
generateDataSourceFromRepresentationMap("oci_resourcemanager_stacks", "test_stacks", Required, Create, stackDataSourceRepresentation) +
85100
generateDataSourceFromRepresentationMap("oci_resourcemanager_stack", "test_stack", Required, Create, stackSingularDataSourceRepresentation) +
86101
compartmentIdVariableStr + StackResourceConfig,

oci/resourcemanager_stack_tf_state_test.go

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,12 @@ package oci
44

55
import (
66
"fmt"
7+
"os"
78
"strings"
89
"testing"
910

11+
"github.com/hashicorp/terraform/helper/schema"
12+
1013
"github.com/hashicorp/terraform/helper/resource"
1114
"github.com/hashicorp/terraform/terraform"
1215

@@ -15,7 +18,7 @@ import (
1518

1619
var (
1720
stackTfStateSingularDataSourceRepresentation = map[string]interface{}{
18-
"stack_id": Representation{repType: Required, create: `${data.oci_resourcemanager_stacks.test_stacks.stacks[0].id}`},
21+
"stack_id": Representation{repType: Required, create: `${var.resource_manager_stack_id}`},
1922
"local_path": Representation{repType: Required, create: `test.tfstate`},
2023
}
2124

@@ -33,20 +36,34 @@ func TestResourcemanagerStackTfStateResource_basic(t *testing.T) {
3336
provider := testAccProvider
3437
config := testProviderConfig()
3538

39+
client := GetTestClients(&schema.ResourceData{}).resourceManagerClient
40+
3641
compartmentId := getEnvSettingWithBlankDefault("compartment_ocid")
3742
compartmentIdVariableStr := fmt.Sprintf("variable \"compartment_id\" { default = \"%s\" }\n", compartmentId)
3843

44+
resourceManagerStackId, err := createResourceManagerStack(*client, "TestResourcemanagerStackTfStateResource_basic", compartmentId)
45+
if err != nil {
46+
t.Errorf("cannot create resource manager stack for the test run: %v", err)
47+
}
48+
3949
singularDatasourceName := "data.oci_resourcemanager_stack_tf_state.test_stack_tf_state"
4050

4151
resource.Test(t, resource.TestCase{
4252
PreCheck: func() { testAccPreCheck(t) },
53+
CheckDestroy: func(s *terraform.State) error {
54+
os.Remove("test.tfstate")
55+
return destroyResourceManagerStack(*client, resourceManagerStackId)
56+
},
57+
PreventPostDestroyRefresh: true,
4358
Providers: map[string]terraform.ResourceProvider{
4459
"oci": provider,
4560
},
4661
Steps: []resource.TestStep{
4762
// verify singular datasource
4863
{
49-
Config: config +
64+
Config: config + `
65+
variable "resource_manager_stack_id" { default = "` + resourceManagerStackId + `" }
66+
` +
5067
generateDataSourceFromRepresentationMap("oci_resourcemanager_stack_tf_state", "test_stack_tf_state", Required, Create, stackTfStateSingularDataSourceRepresentation) +
5168
compartmentIdVariableStr + StackTfStateResourceConfig,
5269
Check: resource.ComposeAggregateTestCheckFunc(

0 commit comments

Comments
 (0)