-
Notifications
You must be signed in to change notification settings - Fork 251
/
Copy pathazure_credential_test.go
250 lines (241 loc) · 10.8 KB
/
azure_credential_test.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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
package cloudprovider_test
import (
"fmt"
"net/http"
"net/http/httptest"
"os"
"testing"
"github.com/grafana/terraform-provider-grafana/v3/internal/testutils"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
)
// Tests both managed resource and data source
func TestAcc_AzureCredential(t *testing.T) {
resourceID := "3"
mux := http.NewServeMux()
mux.HandleFunc("/api/v2/stacks/1/azure/credentials", func(w http.ResponseWriter, r *http.Request) {
if r.Method == http.MethodPost {
w.WriteHeader(http.StatusCreated)
_, _ = w.Write([]byte(fmt.Sprintf(`
{
"data": {
"id": "%s",
"name": "test-name",
"tenant_id": "my_tenant_id",
"client_id": "my_client_id",
"client_secret": "",
"stack_id": "1",
"resource_tag_filters": [
{
"key": "key-1",
"value": "value-1"
},
{
"key": "key-2",
"value": "value-2"
}
],
"auto_discovery_configuration": [
{
"subscription_id": "my-subscription_id",
"resource_type_configurations": [
{
"resource_type_name": "Microsoft.App/containerApps",
"metric_configuration": [
{
"name": "TotalCoresQuotaUsed"
}
]
},
{
"resource_type_name": "Microsoft.Storage/storageAccounts/tableServices",
"metric_configuration": [
{
"name": "Availability",
"dimensions": [
"GeoType",
"ApiName"
],
"aggregations": [ "Average" ]
}
]
}
]
}
]
}
}
`, resourceID)))
}
})
mux.HandleFunc("/api/v2/stacks/1/azure/credentials/"+resourceID, func(w http.ResponseWriter, r *http.Request) {
switch r.Method {
case http.MethodGet:
w.WriteHeader(http.StatusOK)
_, _ = w.Write([]byte(fmt.Sprintf(`
{
"data": {
"id": "%s",
"name": "test-name",
"tenant_id": "my-tenant-id",
"client_id": "my-client-id",
"client_secret": "",
"stack_id":"1",
"resource_tag_filters": [
{
"key": "key-1",
"value": "value-1"
},
{
"key": "key-2",
"value": "value-2"
}
],
"auto_discovery_configuration": [
{
"subscription_id": "my-subscription_id",
"resource_type_configurations": [
{
"resource_type_name": "Microsoft.App/containerApps",
"metric_configuration": [
{
"name": "TotalCoresQuotaUsed"
}
]
},
{
"resource_type_name": "Microsoft.Storage/storageAccounts/tableServices",
"metric_configuration": [
{
"name": "Availability",
"dimensions": [
"GeoType",
"ApiName"
],
"aggregations": [ "Average" ]
}
]
}
]
}
]
}
}
`, resourceID)))
case http.MethodPut:
w.WriteHeader(http.StatusOK)
_, _ = w.Write([]byte(fmt.Sprintf(`
{
"data": {
"id": "%s",
"name": "test-name",
"tenant_id": "my-tenant-id",
"client_id": "my-client-id",
"client_secret": "",
"stack_id":"1",
"resource_tag_filters": [
{
"key": "key-1",
"value": "value-1"
},
{
"key": "key-2",
"value": "value-2"
}
],
"auto_discovery_configuration": [
{
"subscription_id": "my-subscription_id",
"resource_type_configurations": [
{
"resource_type_name": "Microsoft.App/containerApps",
"metric_configuration": [
{
"name": "TotalCoresQuotaUsed"
}
]
},
{
"resource_type_name": "Microsoft.Storage/storageAccounts/tableServices",
"metric_configuration": [
{
"name": "Availability",
"dimensions": [
"GeoType",
"ApiName"
],
"aggregations": [ "Average" ]
}
]
}
]
}
]
}
}
`, resourceID)))
case http.MethodDelete:
w.WriteHeader(http.StatusNoContent)
}
})
server := httptest.NewServer(mux)
defer server.Close()
defer os.Setenv("GRAFANA_CLOUD_PROVIDER_URL", os.Getenv("GRAFANA_CLOUD_PROVIDER_URL"))
defer os.Setenv("GRAFANA_CLOUD_PROVIDER_ACCESS_TOKEN", os.Getenv("GRAFANA_CLOUD_PROVIDER_ACCESS_TOKEN"))
// set this to use the mock server
_ = os.Setenv("GRAFANA_CLOUD_PROVIDER_URL", server.URL)
_ = os.Setenv("GRAFANA_CLOUD_PROVIDER_ACCESS_TOKEN", "some_token")
resource.Test(t, resource.TestCase{
ProtoV5ProviderFactories: testutils.ProtoV5ProviderFactories,
Steps: []resource.TestStep{
{
// Creates a managed resource
Config: testutils.TestAccExample(t, "resources/grafana_cloud_provider_azure_credential/resource.tf"),
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttr("grafana_cloud_provider_azure_credential.test", "id", "1:3"),
resource.TestCheckResourceAttr("grafana_cloud_provider_azure_credential.test", "stack_id", "1"),
resource.TestCheckResourceAttr("grafana_cloud_provider_azure_credential.test", "name", "test-name"),
resource.TestCheckResourceAttr("grafana_cloud_provider_azure_credential.test", "tenant_id", "my-tenant-id"),
resource.TestCheckResourceAttr("grafana_cloud_provider_azure_credential.test", "client_id", "my-client-id"),
resource.TestCheckResourceAttr("grafana_cloud_provider_azure_credential.test", "client_secret", "my-client-secret"),
resource.TestCheckResourceAttr("grafana_cloud_provider_azure_credential.test", "resource_discovery_tag_filter.0.key", "key-1"),
resource.TestCheckResourceAttr("grafana_cloud_provider_azure_credential.test", "resource_discovery_tag_filter.1.key", "key-2"),
resource.TestCheckResourceAttr("grafana_cloud_provider_azure_credential.test", "resource_discovery_tag_filter.0.value", "value-1"),
resource.TestCheckResourceAttr("grafana_cloud_provider_azure_credential.test", "resource_discovery_tag_filter.1.value", "value-2"),
resource.TestCheckResourceAttr("grafana_cloud_provider_azure_credential.test", "auto_discovery_configuration.0.subscription_id", "my-subscription_id"),
resource.TestCheckResourceAttr("grafana_cloud_provider_azure_credential.test", "auto_discovery_configuration.0.resource_type_configurations.0.resource_type_name", "Microsoft.App/containerApps"),
resource.TestCheckResourceAttr("grafana_cloud_provider_azure_credential.test", "auto_discovery_configuration.0.resource_type_configurations.0.metric_configuration.0.name", "TotalCoresQuotaUsed"),
resource.TestCheckResourceAttr("grafana_cloud_provider_azure_credential.test", "auto_discovery_configuration.0.resource_type_configurations.1.resource_type_name", "Microsoft.Storage/storageAccounts/tableServices"),
resource.TestCheckResourceAttr("grafana_cloud_provider_azure_credential.test", "auto_discovery_configuration.0.resource_type_configurations.1.metric_configuration.0.name", "Availability"),
resource.TestCheckResourceAttr("grafana_cloud_provider_azure_credential.test", "auto_discovery_configuration.0.resource_type_configurations.1.metric_configuration.0.dimensions.0", "GeoType"),
resource.TestCheckResourceAttr("grafana_cloud_provider_azure_credential.test", "auto_discovery_configuration.0.resource_type_configurations.1.metric_configuration.0.dimensions.1", "ApiName"),
resource.TestCheckResourceAttr("grafana_cloud_provider_azure_credential.test", "auto_discovery_configuration.0.resource_type_configurations.1.metric_configuration.0.aggregations.0", "Average"),
),
},
{
// Tests data source resource
Config: testutils.TestAccExample(t, "data-sources/grafana_cloud_provider_azure_credential/data-source.tf"),
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttr("data.grafana_cloud_provider_azure_credential.test", "id", "1:3"),
resource.TestCheckResourceAttr("data.grafana_cloud_provider_azure_credential.test", "stack_id", "1"),
resource.TestCheckResourceAttr("data.grafana_cloud_provider_azure_credential.test", "name", "test-name"),
resource.TestCheckResourceAttr("data.grafana_cloud_provider_azure_credential.test", "tenant_id", "my-tenant-id"),
resource.TestCheckResourceAttr("data.grafana_cloud_provider_azure_credential.test", "client_id", "my-client-id"),
resource.TestCheckResourceAttr("data.grafana_cloud_provider_azure_credential.test", "client_secret", ""),
resource.TestCheckResourceAttr("data.grafana_cloud_provider_azure_credential.test", "resource_id", resourceID),
resource.TestCheckResourceAttr("data.grafana_cloud_provider_azure_credential.test", "resource_discovery_tag_filter.0.key", "key-1"),
resource.TestCheckResourceAttr("data.grafana_cloud_provider_azure_credential.test", "resource_discovery_tag_filter.1.key", "key-2"),
resource.TestCheckResourceAttr("data.grafana_cloud_provider_azure_credential.test", "resource_discovery_tag_filter.0.value", "value-1"),
resource.TestCheckResourceAttr("data.grafana_cloud_provider_azure_credential.test", "resource_discovery_tag_filter.1.value", "value-2"),
resource.TestCheckResourceAttr("data.grafana_cloud_provider_azure_credential.test", "auto_discovery_configuration.0.subscription_id", "my-subscription_id"),
resource.TestCheckResourceAttr("data.grafana_cloud_provider_azure_credential.test", "auto_discovery_configuration.0.resource_type_configurations.0.resource_type_name", "Microsoft.App/containerApps"),
resource.TestCheckResourceAttr("data.grafana_cloud_provider_azure_credential.test", "auto_discovery_configuration.0.resource_type_configurations.0.metric_configuration.0.name", "TotalCoresQuotaUsed"),
resource.TestCheckResourceAttr("data.grafana_cloud_provider_azure_credential.test", "auto_discovery_configuration.0.resource_type_configurations.1.resource_type_name", "Microsoft.Storage/storageAccounts/tableServices"),
resource.TestCheckResourceAttr("data.grafana_cloud_provider_azure_credential.test", "auto_discovery_configuration.0.resource_type_configurations.1.metric_configuration.0.name", "Availability"),
resource.TestCheckResourceAttr("data.grafana_cloud_provider_azure_credential.test", "auto_discovery_configuration.0.resource_type_configurations.1.metric_configuration.0.dimensions.0", "GeoType"),
resource.TestCheckResourceAttr("data.grafana_cloud_provider_azure_credential.test", "auto_discovery_configuration.0.resource_type_configurations.1.metric_configuration.0.dimensions.1", "ApiName"),
resource.TestCheckResourceAttr("data.grafana_cloud_provider_azure_credential.test", "auto_discovery_configuration.0.resource_type_configurations.1.metric_configuration.0.aggregations.0", "Average"),
),
},
},
})
}