Skip to content

Commit 0e8b75a

Browse files
scotmoorcodycushing
authored andcommitted
Add new datasource instance test (#286)
1 parent 7883e66 commit 0e8b75a

File tree

2 files changed

+125
-2
lines changed

2 files changed

+125
-2
lines changed

data_source_obmcs_core_instance.go

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,10 @@ func InstanceDatasource() *schema.Resource {
2525
Type: schema.TypeString,
2626
Optional: true,
2727
},
28+
"display_name": {
29+
Type: schema.TypeString,
30+
Optional: true,
31+
},
2832
"page": {
2933
Type: schema.TypeString,
3034
Optional: true,
@@ -118,8 +122,11 @@ func (s *InstanceDatasourceCrud) Get() (e error) {
118122

119123
opts := &baremetal.ListInstancesOptions{}
120124
options.SetListOptions(s.D, &opts.ListOptions)
121-
if val, ok := s.D.GetOk("availability_domain"); ok {
122-
opts.AvailabilityDomain = val.(string)
125+
if ad, ok := s.D.GetOk("availability_domain"); ok {
126+
opts.AvailabilityDomain = ad.(string)
127+
}
128+
if dispName, ok := s.D.GetOk("display_name"); ok {
129+
opts.DisplayName = dispName.(string)
123130
}
124131

125132
s.Res = &baremetal.ListInstances{Instances: []baremetal.Instance{}}
Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
// Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
2+
3+
package main
4+
5+
import (
6+
"testing"
7+
8+
"github.com/hashicorp/terraform/helper/resource"
9+
"github.com/hashicorp/terraform/terraform"
10+
baremetal "github.com/oracle/bmcs-go-sdk"
11+
12+
"github.com/stretchr/testify/suite"
13+
)
14+
15+
type DatasourceCoreInstanceTestSuite struct {
16+
suite.Suite
17+
Client *baremetal.Client
18+
Config string
19+
Provider terraform.ResourceProvider
20+
Providers map[string]terraform.ResourceProvider
21+
ResourceName string
22+
Token string
23+
TokenFn func(string, map[string]string) string
24+
}
25+
26+
func (s *DatasourceCoreInstanceTestSuite) SetupTest() {
27+
s.Token, s.TokenFn = tokenize()
28+
s.Client = testAccClient
29+
s.Provider = testAccProvider
30+
s.Providers = testAccProviders
31+
s.Config = testProviderConfig() + s.TokenFn(`
32+
data "oci_identity_availability_domains" "ADs" {
33+
compartment_id = "${var.compartment_id}"
34+
}
35+
36+
resource "oci_core_virtual_network" "t" {
37+
compartment_id = "${var.compartment_id}"
38+
display_name = "-tf-vcn"
39+
cidr_block = "10.0.0.0/16"
40+
}
41+
42+
resource "oci_core_subnet" "t" {
43+
availability_domain = "${lookup(data.oci_identity_availability_domains.ADs.availability_domains[0],"name")}"
44+
compartment_id = "${var.compartment_id}"
45+
vcn_id = "${oci_core_virtual_network.t.id}"
46+
display_name = "-tf-subnet"
47+
cidr_block = "10.0.1.0/24"
48+
dhcp_options_id = "${oci_core_virtual_network.t.default_dhcp_options_id}"
49+
route_table_id = "${oci_core_virtual_network.t.default_route_table_id}"
50+
security_list_ids = ["${oci_core_virtual_network.t.default_security_list_id}"]
51+
}
52+
53+
data "oci_core_images" "t" {
54+
compartment_id = "${var.compartment_id}"
55+
operating_system = "Oracle Linux"
56+
operating_system_version = "7.3"
57+
limit = 1
58+
}
59+
60+
resource "oci_core_instance" "t" {
61+
availability_domain = "${data.oci_identity_availability_domains.ADs.availability_domains.0.name}"
62+
compartment_id = "${var.compartment_id}"
63+
display_name = "{{.token}}"
64+
subnet_id = "${oci_core_subnet.t.id}"
65+
image = "${data.oci_core_images.t.images.0.id}"
66+
shape = "VM.Standard1.1"
67+
metadata {
68+
ssh_authorized_keys = "${var.ssh_public_key}"
69+
}
70+
timeouts {
71+
create = "15m"
72+
}
73+
}`, nil)
74+
75+
s.ResourceName = "data.oci_core_instances.t"
76+
}
77+
78+
func (s *DatasourceCoreInstanceTestSuite) TestAccDatasourceCoreInstance_basic() {
79+
80+
resource.Test(s.T(), resource.TestCase{
81+
PreventPostDestroyRefresh: true,
82+
Providers: s.Providers,
83+
Steps: []resource.TestStep{
84+
{
85+
ImportState: true,
86+
ImportStateVerify: true,
87+
Config: s.Config,
88+
},
89+
{
90+
Config: s.Config + s.TokenFn(`
91+
data "oci_core_instances" "t" {
92+
compartment_id = "${var.compartment_id}"
93+
availability_domain = "${data.oci_identity_availability_domains.ADs.availability_domains.0.name}"
94+
display_name = "{{.token}}"
95+
limit = 1
96+
}`, nil),
97+
Check: resource.ComposeTestCheckFunc(
98+
resource.TestCheckResourceAttr(s.ResourceName, "instances.#", "1"),
99+
resource.TestCheckResourceAttr(s.ResourceName, "instances.0.display_name", s.Token),
100+
resource.TestCheckResourceAttr(s.ResourceName, "instances.0.state", "RUNNING"),
101+
resource.TestCheckResourceAttr(s.ResourceName, "instances.0.shape", "VM.Standard1.1"),
102+
resource.TestCheckResourceAttrSet(s.ResourceName, "instances.0.availability_domain"),
103+
resource.TestCheckResourceAttrSet(s.ResourceName, "instances.0.id"),
104+
resource.TestCheckResourceAttrSet(s.ResourceName, "instances.0.region"),
105+
resource.TestCheckResourceAttrSet(s.ResourceName, "instances.0.image"),
106+
resource.TestCheckResourceAttrSet(s.ResourceName, "instances.0.metadata.%"),
107+
),
108+
},
109+
},
110+
},
111+
)
112+
}
113+
114+
func TestDatasourceCoreInstanceTestSuite(t *testing.T) {
115+
suite.Run(t, new(DatasourceCoreInstanceTestSuite))
116+
}

0 commit comments

Comments
 (0)