/
resource_acctest.go
67 lines (57 loc) · 2.3 KB
/
resource_acctest.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package serverRoleMember
import (
"database/sql"
"fmt"
"github.com/PGSSoft/terraform-provider-mssql/internal/acctest"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
)
func testResource(testCtx *acctest.TestContext) {
roleName := "##MS_ServerStateReader##"
var memberId string
if testCtx.IsAzureTest {
testCtx.ExecMasterDB("CREATE LOGIN [%s] FROM EXTERNAL PROVIDER", testCtx.AzureADTestGroup.Name)
defer testCtx.ExecMasterDB("DROP LOGIN [%s]", testCtx.AzureADTestGroup.Name)
err := testCtx.GetMasterDBConnection().QueryRow("SELECT [principal_id] FROM sys.server_principals WHERE [type] IN ('X', 'E')").Scan(&memberId)
testCtx.Require.NoError(err, "Fetching IDs")
} else {
testCtx.ExecMasterDB("CREATE SERVER ROLE [test_role_member]")
defer testCtx.ExecMasterDB("DROP SERVER ROLE [test_role_member]")
roleName = "test_role_member"
testCtx.ExecMasterDB("CREATE SERVER ROLE [test_role_member_member]")
defer testCtx.ExecDefaultDB("DROP SERVER ROLE [test_role_member_member]")
err := testCtx.GetMasterDBConnection().QueryRow("SELECT [principal_id] FROM sys.server_principals WHERE [name] = 'test_role_member_member'").Scan(&memberId)
testCtx.Require.NoError(err, "Fetching IDs")
}
var roleId string
err := testCtx.GetMasterDBConnection().QueryRow("SELECT [principal_id] FROM sys.server_principals WHERE [name]=@p1", roleName).Scan(&roleId)
testCtx.Require.NoError(err, "Fetching IDs")
resourceId := fmt.Sprintf("%s/%s", roleId, memberId)
config := fmt.Sprintf(`
resource "mssql_server_role_member" "test" {
role_id = %[1]q
member_id = %[2]q
}
`, roleId, memberId)
testCtx.Test(resource.TestCase{
Steps: []resource.TestStep{
{
Config: config,
Check: resource.ComposeAggregateTestCheckFunc(
testCtx.SqlCheckMaster(func(conn *sql.DB) error {
return conn.QueryRow("SELECT 1 FROM sys.server_role_members WHERE [role_principal_id] = @p1 AND [member_principal_id] = @p2", roleId, memberId).Err()
}),
resource.TestCheckResourceAttr("mssql_server_role_member.test", "id", resourceId),
),
},
{
ImportState: true,
ImportStatePersist: false,
ImportStateVerify: true,
ImportStateId: resourceId,
ResourceName: "mssql_server_role_member.test",
Config: config,
PlanOnly: true,
},
},
})
}