99 "github.com/hashicorp/terraform-plugin-testing/helper/acctest"
1010 "github.com/hashicorp/terraform-plugin-testing/helper/resource"
1111 "github.com/hashicorp/terraform-plugin-testing/terraform"
12- "github.com/stackitcloud/stackit-sdk-go/core/utils"
13-
1412 "github.com/stackitcloud/stackit-sdk-go/core/config"
13+ "github.com/stackitcloud/stackit-sdk-go/core/utils"
1514 "github.com/stackitcloud/stackit-sdk-go/services/sqlserverflex"
1615 "github.com/stackitcloud/stackit-sdk-go/services/sqlserverflex/wait"
1716 "github.com/stackitcloud/terraform-provider-stackit/stackit/internal/core"
@@ -36,6 +35,13 @@ var instanceResource = map[string]string{
3635 "backup_schedule_updated" : "00 12 * * *" ,
3736}
3837
38+ // User resource data
39+ var userResource = map [string ]string {
40+ "username" : fmt .Sprintf ("tf-acc-user-%s" , acctest .RandStringFromCharSet (7 , acctest .CharSetAlpha )),
41+ "role" : "##STACKIT_LoginManager##" ,
42+ "project_id" : instanceResource ["project_id" ],
43+ }
44+
3945func configResources (backupSchedule string ) string {
4046 return fmt .Sprintf (`
4147 %s
@@ -58,6 +64,13 @@ func configResources(backupSchedule string) string {
5864 }
5965 backup_schedule = "%s"
6066 }
67+
68+ resource "stackit_sqlserverflex_user" "user" {
69+ project_id = stackit_sqlserverflex_instance.instance.project_id
70+ instance_id = stackit_sqlserverflex_instance.instance.instance_id
71+ username = "%s"
72+ roles = ["%s"]
73+ }
6174 ` ,
6275 testutil .SQLServerFlexProviderConfig (),
6376 instanceResource ["project_id" ],
@@ -70,6 +83,8 @@ func configResources(backupSchedule string) string {
7083 instanceResource ["version" ],
7184 instanceResource ["options_retention_days" ],
7285 backupSchedule ,
86+ userResource ["username" ],
87+ userResource ["role" ],
7388 )
7489}
7590
@@ -98,6 +113,17 @@ func TestAccSQLServerFlexResource(t *testing.T) {
98113 resource .TestCheckResourceAttr ("stackit_sqlserverflex_instance.instance" , "version" , instanceResource ["version" ]),
99114 resource .TestCheckResourceAttr ("stackit_sqlserverflex_instance.instance" , "options.retention_days" , instanceResource ["options_retention_days" ]),
100115 resource .TestCheckResourceAttr ("stackit_sqlserverflex_instance.instance" , "backup_schedule" , instanceResource ["backup_schedule" ]),
116+ // User
117+ resource .TestCheckResourceAttrPair (
118+ "stackit_sqlserverflex_user.user" , "project_id" ,
119+ "stackit_sqlserverflex_instance.instance" , "project_id" ,
120+ ),
121+ resource .TestCheckResourceAttrPair (
122+ "stackit_sqlserverflex_user.user" , "instance_id" ,
123+ "stackit_sqlserverflex_instance.instance" , "instance_id" ,
124+ ),
125+ resource .TestCheckResourceAttrSet ("stackit_sqlserverflex_user.user" , "user_id" ),
126+ resource .TestCheckResourceAttrSet ("stackit_sqlserverflex_user.user" , "password" ),
101127 ),
102128 },
103129 // data source
@@ -109,6 +135,12 @@ func TestAccSQLServerFlexResource(t *testing.T) {
109135 project_id = stackit_sqlserverflex_instance.instance.project_id
110136 instance_id = stackit_sqlserverflex_instance.instance.instance_id
111137 }
138+
139+ data "stackit_sqlserverflex_user" "user" {
140+ project_id = stackit_sqlserverflex_instance.instance.project_id
141+ instance_id = stackit_sqlserverflex_instance.instance.instance_id
142+ user_id = stackit_sqlserverflex_user.user.user_id
143+ }
112144 ` ,
113145 configResources (instanceResource ["backup_schedule" ]),
114146 ),
@@ -124,6 +156,11 @@ func TestAccSQLServerFlexResource(t *testing.T) {
124156 "data.stackit_sqlserverflex_instance.instance" , "instance_id" ,
125157 "stackit_sqlserverflex_instance.instance" , "instance_id" ,
126158 ),
159+ resource .TestCheckResourceAttrPair (
160+ "data.stackit_sqlserverflex_user.user" , "instance_id" ,
161+ "stackit_sqlserverflex_user.user" , "instance_id" ,
162+ ),
163+
127164 resource .TestCheckResourceAttr ("data.stackit_sqlserverflex_instance.instance" , "acl.#" , "1" ),
128165 resource .TestCheckResourceAttr ("data.stackit_sqlserverflex_instance.instance" , "acl.0" , instanceResource ["acl" ]),
129166 resource .TestCheckResourceAttr ("data.stackit_sqlserverflex_instance.instance" , "flavor.id" , instanceResource ["flavor_id" ]),
@@ -133,6 +170,15 @@ func TestAccSQLServerFlexResource(t *testing.T) {
133170 resource .TestCheckResourceAttr ("data.stackit_sqlserverflex_instance.instance" , "replicas" , instanceResource ["replicas" ]),
134171 resource .TestCheckResourceAttr ("stackit_sqlserverflex_instance.instance" , "options.retention_days" , instanceResource ["options_retention_days" ]),
135172 resource .TestCheckResourceAttr ("data.stackit_sqlserverflex_instance.instance" , "backup_schedule" , instanceResource ["backup_schedule" ]),
173+
174+ // User data
175+ resource .TestCheckResourceAttr ("data.stackit_sqlserverflex_user.user" , "project_id" , userResource ["project_id" ]),
176+ resource .TestCheckResourceAttrSet ("data.stackit_sqlserverflex_user.user" , "user_id" ),
177+ resource .TestCheckResourceAttr ("data.stackit_sqlserverflex_user.user" , "username" , userResource ["username" ]),
178+ resource .TestCheckResourceAttr ("data.stackit_sqlserverflex_user.user" , "roles.#" , "1" ),
179+ resource .TestCheckResourceAttr ("data.stackit_sqlserverflex_user.user" , "roles.0" , userResource ["role" ]),
180+ resource .TestCheckResourceAttrSet ("data.stackit_sqlserverflex_user.user" , "host" ),
181+ resource .TestCheckResourceAttrSet ("data.stackit_sqlserverflex_user.user" , "port" ),
136182 ),
137183 },
138184 // Import
@@ -163,6 +209,28 @@ func TestAccSQLServerFlexResource(t *testing.T) {
163209 return nil
164210 },
165211 },
212+ {
213+ ResourceName : "stackit_sqlserverflex_user.user" ,
214+ ImportStateIdFunc : func (s * terraform.State ) (string , error ) {
215+ r , ok := s .RootModule ().Resources ["stackit_sqlserverflex_user.user" ]
216+ if ! ok {
217+ return "" , fmt .Errorf ("couldn't find resource stackit_sqlserverflex_user.user" )
218+ }
219+ instanceId , ok := r .Primary .Attributes ["instance_id" ]
220+ if ! ok {
221+ return "" , fmt .Errorf ("couldn't find attribute instance_id" )
222+ }
223+ userId , ok := r .Primary .Attributes ["user_id" ]
224+ if ! ok {
225+ return "" , fmt .Errorf ("couldn't find attribute user_id" )
226+ }
227+
228+ return fmt .Sprintf ("%s,%s,%s" , testutil .ProjectId , instanceId , userId ), nil
229+ },
230+ ImportState : true ,
231+ ImportStateVerify : true ,
232+ ImportStateVerifyIgnore : []string {"password" },
233+ },
166234 // Update
167235 {
168236 Config : configResources (instanceResource ["backup_schedule_updated" ]),
0 commit comments