forked from ewilde/go-kibana
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdashboard_test.go
128 lines (97 loc) · 6.29 KB
/
dashboard_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
package kibana
import (
"fmt"
"testing"
uuid "github.com/satori/go.uuid"
"github.com/stretchr/testify/assert"
)
func Test_DashboardCreateFromSavedSearch(t *testing.T) {
client := DefaultTestKibanaClient()
searchClient := client.Search()
searchRequest, _, err := createSearchRequest(searchClient, client.Config.DefaultIndexId, t)
assert.Nil(t, err)
searchResponse, err := searchClient.Create(searchRequest)
assert.Nil(t, err)
defer searchClient.Delete(searchResponse.Id)
visualizationApi := client.Visualization()
visualizationRequest, err := NewVisualizationRequestBuilder().
WithTitle("China errors").
WithDescription("This visualization shows errors from china").
WithVisualizationState("{\"title\":\"test kong vis\",\"type\":\"area\",\"params\":{\"grid\":{\"categoryLines\":false,\"style\":{\"color\":\"#eee\"}},\"categoryAxes\":[{\"id\":\"CategoryAxis-1\",\"type\":\"category\",\"position\":\"bottom\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\"},\"labels\":{\"show\":true,\"truncate\":100},\"title\":{\"text\":\"@timestamp date ranges\"}}],\"valueAxes\":[{\"id\":\"ValueAxis-1\",\"name\":\"LeftAxis-1\",\"type\":\"value\",\"position\":\"left\",\"show\":true,\"style\":{},\"scale\":{\"type\":\"linear\",\"mode\":\"normal\"},\"labels\":{\"show\":true,\"rotate\":0,\"filter\":false,\"truncate\":100},\"title\":{\"text\":\"Count\"}}],\"seriesParams\":[{\"show\":\"true\",\"type\":\"area\",\"mode\":\"stacked\",\"data\":{\"label\":\"Count\",\"id\":\"1\"},\"drawLinesBetweenPoints\":true,\"showCircles\":true,\"interpolate\":\"linear\",\"valueAxis\":\"ValueAxis-1\"}],\"addTooltip\":true,\"addLegend\":true,\"legendPosition\":\"right\",\"times\":[],\"addTimeMarker\":false},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}},{\"id\":\"2\",\"enabled\":true,\"type\":\"date_range\",\"schema\":\"segment\",\"params\":{\"field\":\"@timestamp\",\"ranges\":[{\"from\":\"now-1h\",\"to\":\"now\"}]}}],\"listeners\":{}}").
WithSavedSearchId(searchResponse.Id).
Build(client.Config.KibanaVersion)
assert.Nil(t, err)
visualizationResponse, err := visualizationApi.Create(visualizationRequest)
assert.Nil(t, err)
defer visualizationApi.Delete(visualizationResponse.Id)
dashboardApi := client.Dashboard()
dashboardRequest, err := NewDashboardRequestBuilder().
WithTitle("China errors").
WithDescription("This dashboard shows errors from china").
WithPanelsJson(fmt.Sprintf("[{\"size_x\":6,\"size_y\":3,\"panelIndex\":1,\"type\":\"visualization\",\"id\":\"%s\",\"col\":1,\"row\":1},{\"size_x\":6,\"size_y\":3,\"panelIndex\":2,\"type\":\"search\",\"id\":\"%s\",\"col\":7,\"row\":1,\"columns\":[\"_source\"],\"sort\":[\"@timestamp\",\"desc\"]}]", visualizationResponse.Id, searchResponse.Id)).
WithOptionsJson("{\"darkTheme\":false}").
Build()
assert.Nil(t, err)
response, err := dashboardApi.Create(dashboardRequest)
assert.Nil(t, err)
defer dashboardApi.Delete(response.Id)
assert.Nil(t, err)
assert.NotNil(t, response)
assert.Equal(t, dashboardRequest.Attributes.Title, response.Attributes.Title)
assert.Equal(t, dashboardRequest.Attributes.PanelsJson, response.Attributes.PanelsJson)
assert.Equal(t, dashboardRequest.Attributes.OptionsJson, response.Attributes.OptionsJson)
assert.Equal(t, dashboardRequest.Attributes.UiStateJSON, response.Attributes.UiStateJSON)
assert.Equal(t, dashboardRequest.Attributes.Version, response.Attributes.Version)
}
func Test_DashboardRead(t *testing.T) {
client := DefaultTestKibanaClient()
dashboardApi := client.Dashboard()
request, err := NewDashboardRequestBuilder().
WithTitle("China errors").
WithDescription("This dashboard shows errors from china").
WithPanelsJson("[{\"size_x\":6,\"size_y\":3,\"panelIndex\":1,\"type\":\"visualization\",\"id\":\"bc8a1970-175b-11e8-accb-65182aaf9591\",\"col\":1,\"row\":1},{\"size_x\":6,\"size_y\":3,\"panelIndex\":2,\"type\":\"search\",\"id\":\"aca8b340-175b-11e8-accb-65182aaf9591\",\"col\":7,\"row\":1,\"columns\":[\"_source\"],\"sort\":[\"@timestamp\",\"desc\"]}]").
WithOptionsJson("{\"darkTheme\":false}").
Build()
assert.Nil(t, err)
createdDashboard, err := dashboardApi.Create(request)
defer dashboardApi.Delete(createdDashboard.Id)
assert.Nil(t, err, "Error creating dashboard")
readDashboard, err := dashboardApi.GetById(createdDashboard.Id)
assert.Nil(t, err, "Error getting dashboard by id")
assert.NotNil(t, readDashboard, "Dashboard retrieved from get by id was null.")
assert.Equal(t, request.Attributes.Title, readDashboard.Attributes.Title)
assert.Equal(t, request.Attributes.PanelsJson, readDashboard.Attributes.PanelsJson)
assert.Equal(t, request.Attributes.OptionsJson, readDashboard.Attributes.OptionsJson)
assert.Equal(t, request.Attributes.UiStateJSON, readDashboard.Attributes.UiStateJSON)
assert.Equal(t, request.Attributes.Version, readDashboard.Attributes.Version)
}
func Test_DashboardRead_Unknown_Dashboard_Returns_404(t *testing.T) {
client := DefaultTestKibanaClient()
dashboardClient := client.Dashboard()
_, err := dashboardClient.GetById(uuid.NewV4().String())
assert.NotNil(t, err, "Expected to get a 404 error")
httpErr, ok := err.(*HttpError)
if !ok {
t.Error("Expected http error")
}
assert.Equal(t, 404, httpErr.Code)
}
func Test_DashboardUpdate(t *testing.T) {
client := DefaultTestKibanaClient()
dashboardApi := client.Dashboard()
request, err := NewDashboardRequestBuilder().
WithTitle("China errors").
WithDescription("This dashboard shows errors from china").
WithPanelsJson("[{\"size_x\":6,\"size_y\":3,\"panelIndex\":1,\"type\":\"visualization\",\"id\":\"bc8a1970-175b-11e8-accb-65182aaf9591\",\"col\":1,\"row\":1},{\"size_x\":6,\"size_y\":3,\"panelIndex\":2,\"type\":\"search\",\"id\":\"aca8b340-175b-11e8-accb-65182aaf9591\",\"col\":7,\"row\":1,\"columns\":[\"_source\"],\"sort\":[\"@timestamp\",\"desc\"]}]").
WithOptionsJson("{\"darkTheme\":false}").
Build()
assert.Nil(t, err)
createdDashboard, err := dashboardApi.Create(request)
assert.Nil(t, err)
defer dashboardApi.Delete(createdDashboard.Id)
assert.Nil(t, err, "Error creating dashboard")
createdDashboard.Attributes.Title = "China errors updated"
updatedDashboard, err := dashboardApi.Update(createdDashboard.Id, &UpdateDashboardRequest{Attributes: createdDashboard.Attributes})
assert.Nil(t, err)
assert.Equal(t, "China errors updated", updatedDashboard.Attributes.Title)
}