@@ -2,6 +2,7 @@ package provider
22
33import (
44 "fmt"
5+ "regexp"
56 "strconv"
67 "testing"
78
@@ -13,10 +14,14 @@ import (
1314)
1415
1516func TestAccInstance (t * testing.T ) {
17+ identifier := "new_instance"
18+ resourceName := fmt .Sprintf ("bytebase_instance.%s" , identifier )
19+
1620 name := "dev instance"
1721 engine := "POSTGRES"
1822 host := "127.0.0.1"
19- env := "dev"
23+ environment := "dev"
24+ nameUpdated := fmt .Sprintf ("%s-updated" , name )
2025
2126 resource .Test (t , resource.TestCase {
2227 PreCheck : func () {
@@ -25,16 +30,60 @@ func TestAccInstance(t *testing.T) {
2530 Providers : testAccProviders ,
2631 CheckDestroy : testAccCheckInstanceDestroy ,
2732 Steps : []resource.TestStep {
33+ // resource create
34+ {
35+ Config : testAccCheckInstanceConfigBasic (identifier , name , engine , host , environment ),
36+ Check : resource .ComposeTestCheckFunc (
37+ testAccCheckInstanceExists (resourceName ),
38+ resource .TestCheckResourceAttr (resourceName , "name" , name ),
39+ resource .TestCheckResourceAttr (resourceName , "engine" , engine ),
40+ resource .TestCheckResourceAttr (resourceName , "host" , host ),
41+ resource .TestCheckResourceAttr (resourceName , "environment" , environment ),
42+ ),
43+ },
44+ // resource updated
2845 {
29- Config : testAccCheckInstanceConfigBasic (name , engine , host , env ),
46+ Config : testAccCheckInstanceConfigBasic (identifier , nameUpdated , engine , host , environment ),
3047 Check : resource .ComposeTestCheckFunc (
31- testAccCheckInstanceExists ("bytebase_instance.new" ),
48+ testAccCheckInstanceExists (resourceName ),
49+ resource .TestCheckResourceAttr (resourceName , "name" , nameUpdated ),
50+ resource .TestCheckResourceAttr (resourceName , "engine" , engine ),
51+ resource .TestCheckResourceAttr (resourceName , "host" , host ),
52+ resource .TestCheckResourceAttr (resourceName , "environment" , environment ),
3253 ),
3354 },
3455 },
3556 })
3657}
3758
59+ func TestAccInstance_InvalidInput (t * testing.T ) {
60+ identifier := "another_instance"
61+ engine := "POSTGRES"
62+ name := "dev instance"
63+ host := "127.0.0.1"
64+ environment := "dev"
65+
66+ resource .Test (t , resource.TestCase {
67+ PreCheck : func () {
68+ testAccPreCheck (t )
69+ },
70+ Providers : testAccProviders ,
71+ CheckDestroy : testAccCheckInstanceDestroy ,
72+ Steps : []resource.TestStep {
73+ // Invalid instance name
74+ {
75+ Config : testAccCheckInstanceConfigBasic (identifier , "" , engine , host , environment ),
76+ ExpectError : regexp .MustCompile ("not be an empty string" ),
77+ },
78+ // Invalid engine
79+ {
80+ Config : testAccCheckInstanceConfigBasic (identifier , name , "engine" , host , environment ),
81+ ExpectError : regexp .MustCompile ("expected engine to be one of" ),
82+ },
83+ },
84+ })
85+ }
86+
3887func testAccCheckInstanceDestroy (s * terraform.State ) error {
3988 c := testAccProvider .Meta ().(api.Client )
4089
@@ -56,15 +105,15 @@ func testAccCheckInstanceDestroy(s *terraform.State) error {
56105 return nil
57106}
58107
59- func testAccCheckInstanceConfigBasic (name , engine , host , env string ) string {
108+ func testAccCheckInstanceConfigBasic (identifier , name , engine , host , env string ) string {
60109 return fmt .Sprintf (`
61- resource "bytebase_instance" "new " {
110+ resource "bytebase_instance" "%s " {
62111 name = "%s"
63112 engine = "%s"
64113 host = "%s"
65114 environment = "%s"
66115 }
67- ` , name , engine , host , env )
116+ ` , identifier , name , engine , host , env )
68117}
69118
70119func testAccCheckInstanceExists (n string ) resource.TestCheckFunc {
0 commit comments