Skip to content

Commit 882ab65

Browse files
committed
Resource tests
1 parent f62cdab commit 882ab65

File tree

2 files changed

+96
-114
lines changed

2 files changed

+96
-114
lines changed
Lines changed: 75 additions & 111 deletions
Original file line numberDiff line numberDiff line change
@@ -1,153 +1,117 @@
11
package maintenance_window_test
22

33
import (
4-
"fmt"
54
"testing"
65

76
"github.com/elastic/terraform-provider-elasticstack/internal/acctest"
87
"github.com/elastic/terraform-provider-elasticstack/internal/versionutils"
98
"github.com/hashicorp/go-version"
10-
sdkacctest "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest"
119
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
1210
)
1311

14-
var minDataViewAPISupport = version.Must(version.NewVersion("8.1.0"))
15-
var minFullDataviewSupport = version.Must(version.NewVersion("8.8.0"))
12+
var minMaintenanceWindowAPISupport = version.Must(version.NewVersion("9.1.0"))
1613

17-
func TestAccResourceDataView(t *testing.T) {
18-
indexName := "my-index-" + sdkacctest.RandStringFromCharSet(4, sdkacctest.CharSetAlphaNum)
14+
func TestAccResourceMaintenanceWindow(t *testing.T) {
1915

2016
resource.Test(t, resource.TestCase{
2117
PreCheck: func() { acctest.PreCheck(t) },
2218
ProtoV6ProviderFactories: acctest.Providers,
2319
Steps: []resource.TestStep{
2420
{
25-
SkipFunc: versionutils.CheckIfVersionIsUnsupported(minDataViewAPISupport),
26-
Config: testAccResourceDataViewPre8_8DV(indexName),
21+
SkipFunc: versionutils.CheckIfVersionIsUnsupported(minMaintenanceWindowAPISupport),
22+
Config: testAccResourceMaintenanceWindowCreate,
2723
Check: resource.ComposeTestCheckFunc(
28-
resource.TestCheckResourceAttrSet("elasticstack_kibana_data_view.dv", "id"),
24+
resource.TestCheckResourceAttr("elasticstack_kibana_maintenance_window.test_maintenance_window", "title", "Terraform Maintenance Window"),
25+
resource.TestCheckResourceAttr("elasticstack_kibana_maintenance_window.test_maintenance_window", "enabled", "true"),
26+
resource.TestCheckResourceAttr("elasticstack_kibana_maintenance_window.test_maintenance_window", "custom_schedule.0.start", "1992-01-01T05:00:00.200Z"),
27+
resource.TestCheckResourceAttr("elasticstack_kibana_maintenance_window.test_maintenance_window", "custom_schedule.0.duration", "10d"),
28+
resource.TestCheckResourceAttr("elasticstack_kibana_maintenance_window.test_maintenance_window", "custom_schedule.0.timezone", "UTC"),
29+
resource.TestCheckResourceAttr("elasticstack_kibana_maintenance_window.test_maintenance_window", "custom_schedule.0.recurring.0.every", "20d"),
30+
resource.TestCheckResourceAttr("elasticstack_kibana_maintenance_window.test_maintenance_window", "custom_schedule.0.recurring.0.end", "2029-05-17T05:05:00.000Z"),
31+
resource.TestCheckResourceAttr("elasticstack_kibana_maintenance_window.test_maintenance_window", "custom_schedule.0.recurring.0.on_week_day.0", "MO"),
32+
resource.TestCheckResourceAttr("elasticstack_kibana_maintenance_window.test_maintenance_window", "custom_schedule.0.recurring.0.on_week_day.1", "TU"),
33+
resource.TestCheckResourceAttr("elasticstack_kibana_maintenance_window.test_maintenance_window", "scope.0.alerting.0.kql", "_id: '1234'"),
2934
),
3035
},
3136
{
32-
SkipFunc: versionutils.CheckIfVersionIsUnsupported(minFullDataviewSupport),
33-
Config: testAccResourceDataViewBasicDV(indexName),
37+
SkipFunc: versionutils.CheckIfVersionIsUnsupported(minMaintenanceWindowAPISupport),
38+
Config: testAccResourceMaintenanceWindowUpdate,
3439
Check: resource.ComposeTestCheckFunc(
35-
resource.TestCheckResourceAttrSet("elasticstack_kibana_data_view.dv", "id"),
36-
resource.TestCheckResourceAttr("elasticstack_kibana_data_view.dv", "override", "true"),
37-
resource.TestCheckResourceAttr("elasticstack_kibana_data_view.dv", "data_view.name", indexName),
38-
resource.TestCheckResourceAttr("elasticstack_kibana_data_view.dv", "data_view.source_filters.#", "2"),
39-
resource.TestCheckResourceAttr("elasticstack_kibana_data_view.dv", "data_view.field_formats.event_time.id", "date_nanos"),
40-
resource.TestCheckResourceAttr("elasticstack_kibana_data_view.dv", "data_view.field_formats.machine.ram.params.pattern", "0,0.[000] b"),
41-
resource.TestCheckResourceAttr("elasticstack_kibana_data_view.dv", "data_view.runtime_field_map.runtime_shape_name.script_source", "emit(doc['shape_name'].value)"),
42-
resource.TestCheckResourceAttr("elasticstack_kibana_data_view.dv", "data_view.field_attrs.ingest_failure.custom_label", "error.ingest_failure"),
40+
resource.TestCheckResourceAttr("elasticstack_kibana_maintenance_window.test_maintenance_window", "title", "Terraform Maintenance Window UPDATED"),
41+
resource.TestCheckResourceAttr("elasticstack_kibana_maintenance_window.test_maintenance_window", "enabled", "false"),
42+
resource.TestCheckResourceAttr("elasticstack_kibana_maintenance_window.test_maintenance_window", "custom_schedule.0.start", "1999-02-02T05:00:00.200Z"),
43+
resource.TestCheckResourceAttr("elasticstack_kibana_maintenance_window.test_maintenance_window", "custom_schedule.0.duration", "12d"),
44+
resource.TestCheckResourceAttr("elasticstack_kibana_maintenance_window.test_maintenance_window", "custom_schedule.0.timezone", "Asia/Taipei"),
45+
resource.TestCheckResourceAttr("elasticstack_kibana_maintenance_window.test_maintenance_window", "custom_schedule.0.recurring.0.every", "21d"),
46+
resource.TestCheckResourceAttr("elasticstack_kibana_maintenance_window.test_maintenance_window", "custom_schedule.0.recurring.0.end", ""),
47+
resource.TestCheckResourceAttr("elasticstack_kibana_maintenance_window.test_maintenance_window", "custom_schedule.0.recurring.0.on_month_day.0", "1"),
48+
resource.TestCheckResourceAttr("elasticstack_kibana_maintenance_window.test_maintenance_window", "custom_schedule.0.recurring.0.on_month_day.1", "2"),
49+
resource.TestCheckResourceAttr("elasticstack_kibana_maintenance_window.test_maintenance_window", "custom_schedule.0.recurring.0.on_month_day.2", "3"),
50+
resource.TestCheckResourceAttr("elasticstack_kibana_maintenance_window.test_maintenance_window", "custom_schedule.0.recurring.0.on_month.0", "4"),
51+
resource.TestCheckResourceAttr("elasticstack_kibana_maintenance_window.test_maintenance_window", "custom_schedule.0.recurring.0.on_month.1", "5"),
52+
resource.TestCheckResourceAttr("elasticstack_kibana_maintenance_window.test_maintenance_window", "scope.0.alerting.0.kql", "_id: 'foobar'"),
4353
),
4454
},
45-
{
46-
SkipFunc: versionutils.CheckIfVersionIsUnsupported(minFullDataviewSupport),
47-
Config: testAccResourceDataViewBasicDVUpdated(indexName),
48-
Check: resource.ComposeTestCheckFunc(
49-
resource.TestCheckResourceAttrSet("elasticstack_kibana_data_view.dv", "id"),
50-
resource.TestCheckResourceAttr("elasticstack_kibana_data_view.dv", "override", "false"),
51-
resource.TestCheckResourceAttr("elasticstack_kibana_data_view.dv", "data_view.name", indexName),
52-
resource.TestCheckNoResourceAttr("elasticstack_kibana_data_view.dv", "data_view.source_filters"),
53-
resource.TestCheckNoResourceAttr("elasticstack_kibana_data_view.dv", "data_view.field_formats"),
54-
resource.TestCheckNoResourceAttr("elasticstack_kibana_data_view.dv", "data_view.runtime_field_map"),
55-
),
56-
},
57-
{
58-
SkipFunc: versionutils.CheckIfVersionIsUnsupported(minFullDataviewSupport),
59-
Config: testAccResourceDataViewBasicDVUpdated(indexName),
60-
ImportState: true,
61-
ImportStateVerify: true,
62-
ResourceName: "elasticstack_kibana_data_view.dv",
63-
},
6455
},
6556
})
6657
}
6758

68-
func testAccResourceDataViewPre8_8DV(indexName string) string {
69-
return fmt.Sprintf(`
59+
const testAccResourceMaintenanceWindowCreate = `
7060
provider "elasticstack" {
71-
elasticsearch {}
72-
kibana {}
61+
elasticsearch {}
62+
kibana {}
7363
}
7464
75-
resource "elasticstack_elasticsearch_index" "my_index" {
76-
name = "%s"
77-
deletion_protection = false
78-
}
65+
resource "elasticstack_kibana_maintenance_window" "test_maintenance_window" {
66+
title = "Terraform Maintenance Window"
67+
enabled = true
7968
80-
resource "elasticstack_kibana_data_view" "dv" {
81-
data_view = {
82-
title = "%s*"
83-
}
84-
}`, indexName, indexName)
85-
}
69+
custom_schedule = {
70+
start = "1992-01-01T05:00:00.200Z"
71+
duration = "10d"
72+
timezone = "UTC"
8673
87-
func testAccResourceDataViewBasicDV(indexName string) string {
88-
return fmt.Sprintf(`
89-
provider "elasticstack" {
90-
elasticsearch {}
91-
kibana {}
92-
}
93-
94-
resource "elasticstack_elasticsearch_index" "my_index" {
95-
name = "%s"
96-
deletion_protection = false
97-
}
74+
recurring = {
75+
every = "20d"
76+
end = "2029-05-17T05:05:00.000Z"
77+
on_week_day = ["MO", "TU"]
78+
}
79+
}
9880
99-
resource "elasticstack_kibana_data_view" "dv" {
100-
override = true
101-
data_view = {
102-
title = "%s*"
103-
name = "%s"
104-
time_field_name = "@timestamp"
105-
source_filters = ["event_time", "machine.ram"]
106-
allow_no_index = true
107-
namespaces = ["default", "foo", "bar"]
108-
field_formats = {
109-
event_time = {
110-
id = "date_nanos"
111-
}
112-
"machine.ram" = {
113-
id = "number"
114-
params = {
115-
pattern = "0,0.[000] b"
116-
}
117-
}
118-
}
119-
runtime_field_map = {
120-
runtime_shape_name = {
121-
type = "keyword"
122-
script_source = "emit(doc['shape_name'].value)"
123-
}
124-
}
125-
field_attrs = {
126-
ingest_failure = { custom_label = "error.ingest_failure", count = 6 },
127-
}
128-
}
129-
}`, indexName, indexName, indexName)
81+
scope = {
82+
alerting = {
83+
kql = "_id: '1234'"
84+
}
85+
}
13086
}
87+
`
13188

132-
func testAccResourceDataViewBasicDVUpdated(indexName string) string {
133-
return fmt.Sprintf(`
89+
const testAccResourceMaintenanceWindowUpdate = `
13490
provider "elasticstack" {
135-
elasticsearch {}
136-
kibana {}
91+
elasticsearch {}
92+
kibana {}
13793
}
13894
139-
resource "elasticstack_elasticsearch_index" "my_index" {
140-
name = "%s"
141-
deletion_protection = false
142-
}
95+
resource "elasticstack_kibana_maintenance_window" "test_maintenance_window" {
96+
title = "Terraform Maintenance Window UPDATED"
97+
enabled = false
98+
99+
custom_schedule = {
100+
start = "1999-02-02T05:00:00.200Z"
101+
duration = "12d"
102+
timezone = "Asia/Taipei"
103+
104+
recurring = {
105+
every = "21d"
106+
on_month_day = [1, 2, 3]
107+
on_month = [4, 5]
108+
}
109+
}
143110
144-
resource "elasticstack_kibana_data_view" "dv" {
145-
override = false
146-
data_view = {
147-
title = "%s*"
148-
name = "%s"
149-
time_field_name = "@timestamp"
150-
allow_no_index = true
151-
}
152-
}`, indexName, indexName, indexName)
111+
scope = {
112+
alerting = {
113+
kql = "_id: 'foobar'"
114+
}
115+
}
153116
}
117+
`

internal/kibana/maintenance_window/models.go

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -129,8 +129,14 @@ func (model *MaintenanceWindowModel) fromAPICreateResponse(ctx context.Context,
129129
return nil
130130
}
131131

132+
var diags diag.Diagnostics
132133
var response = &ResponseJson{}
133-
json.Unmarshal(data.Body, response)
134+
135+
if err := json.Unmarshal(data.Body, response); err != nil {
136+
diags.AddError(err.Error(), "cannot unmarshal PostMaintenanceWindowResponse")
137+
return diags
138+
}
139+
134140
return model._fromAPIResponse(ctx, *response)
135141
}
136142

@@ -141,8 +147,14 @@ func (model *MaintenanceWindowModel) fromAPIReadResponse(ctx context.Context, da
141147
return nil
142148
}
143149

150+
var diags diag.Diagnostics
144151
var response = &ResponseJson{}
145-
json.Unmarshal(data.Body, response)
152+
153+
if err := json.Unmarshal(data.Body, response); err != nil {
154+
diags.AddError(err.Error(), "cannot unmarshal GetMaintenanceWindowIdResponse")
155+
return diags
156+
}
157+
146158
return model._fromAPIResponse(ctx, *response)
147159
}
148160

@@ -274,8 +286,14 @@ func (model *MaintenanceWindowModel) fromAPIUpdateResponse(ctx context.Context,
274286
return nil
275287
}
276288

289+
var diags diag.Diagnostics
277290
var response = &ResponseJson{}
278-
json.Unmarshal(data.Body, response)
291+
292+
if err := json.Unmarshal(data.Body, response); err != nil {
293+
diags.AddError(err.Error(), "cannot unmarshal PatchMaintenanceWindowIdResponse")
294+
return diags
295+
}
296+
279297
return model._fromAPIResponse(ctx, *response)
280298
}
281299

0 commit comments

Comments
 (0)