@@ -7,23 +7,140 @@ import (
77)
88
99const (
10- getDashboardsJSON = `
11- [
12- {
13- "id": 1,
14- "uid": "RGAPB1cZz",
15- "title": "Grafana Stats",
16- "uri": "db/grafana-stats",
17- "url": "/dashboards/d/RGAPB1cZz/grafana-stat",
18- "slug": "",
19- "type": "dash-db",
20- "tags": [],
21- "isStarred": false
22- }
23- ]
24- `
10+ createdAndUpdateDashboardResponse = `{
11+ "slug": "test",
12+ "id": 1,
13+ "uid": "nErXDvCkzz",
14+ "status": "success",
15+ "version": 1
16+ }`
17+
18+ getDashboardResponse = `{
19+ "dashboard": {
20+ "id": 1,
21+ "uid": "cIBgcSjkk",
22+ "title": "Production Overview",
23+ "version": 0
24+ },
25+ "meta": {
26+ "isStarred": false,
27+ "url": "/d/cIBgcSjkk/production-overview",
28+ "slug": "production-overview"
29+ }
30+ }`
31+
32+ getDashboardsJSON = `[
33+ {
34+ "id": 1,
35+ "uid": "RGAPB1cZz",
36+ "title": "Grafana Stats",
37+ "uri": "db/grafana-stats",
38+ "url": "/dashboards/d/RGAPB1cZz/grafana-stat",
39+ "slug": "",
40+ "type": "dash-db",
41+ "tags": [],
42+ "isStarred": false
43+ }
44+ ]`
2545)
2646
47+ func TestDashboardCreateAndUpdate (t * testing.T ) {
48+ server , client := gapiTestTools (200 , createdAndUpdateDashboardResponse )
49+ defer server .Close ()
50+
51+ dashboard := Dashboard {
52+ Model : map [string ]interface {}{
53+ "title" : "test" ,
54+ },
55+ Folder : 0 ,
56+ Overwrite : false ,
57+ }
58+
59+ resp , err := client .NewDashboard (dashboard )
60+ if err != nil {
61+ t .Fatal (err )
62+ }
63+
64+ t .Log (pretty .PrettyFormat (resp ))
65+
66+ if resp .Uid != "nErXDvCkzz" {
67+ t .Errorf ("Invalid uid - %s, Expected %s" , resp .Uid , "nErXDvCkzz" )
68+ }
69+
70+ for _ , code := range []int {400 , 401 , 403 , 412 } {
71+ server .code = code
72+ _ , err = client .NewDashboard (dashboard )
73+ if err == nil {
74+ t .Errorf ("%d not detected" , code )
75+ }
76+ }
77+ }
78+
79+ func TestDashboardGet (t * testing.T ) {
80+ server , client := gapiTestTools (200 , getDashboardResponse )
81+ defer server .Close ()
82+
83+ resp , err := client .Dashboard ("test" )
84+ if err != nil {
85+ t .Error (err )
86+ }
87+ uid , ok := resp .Model ["uid" ]
88+ if ! ok || uid != "cIBgcSjkk" {
89+ t .Errorf ("Invalid uid - %s, Expected %s" , uid , "cIBgcSjkk" )
90+ }
91+
92+ resp , err = client .DashboardByUID ("cIBgcSjkk" )
93+ if err != nil {
94+ t .Error (err )
95+ }
96+ uid , ok = resp .Model ["uid" ]
97+ if ! ok || uid != "cIBgcSjkk" {
98+ t .Errorf ("Invalid uid - %s, Expected %s" , uid , "cIBgcSjkk" )
99+ }
100+
101+ for _ , code := range []int {401 , 403 , 404 } {
102+ server .code = code
103+ _ , err = client .Dashboard ("test" )
104+ if err == nil {
105+ t .Errorf ("%d not detected" , code )
106+ }
107+
108+ _ , err = client .DashboardByUID ("cIBgcSjkk" )
109+ if err == nil {
110+ t .Errorf ("%d not detected" , code )
111+ }
112+ }
113+ }
114+
115+ func TestDashboardDelete (t * testing.T ) {
116+ server , client := gapiTestTools (200 , "" )
117+ defer server .Close ()
118+
119+ err := client .DeleteDashboard ("test" )
120+ if err != nil {
121+ t .Error (err )
122+ }
123+
124+ err = client .DeleteDashboardByUID ("cIBgcSjkk" )
125+ if err != nil {
126+ t .Error (err )
127+ }
128+
129+ for _ , code := range []int {401 , 403 , 404 , 412 } {
130+ server .code = code
131+
132+ err = client .DeleteDashboard ("test" )
133+ if err == nil {
134+ t .Errorf ("%d not detected" , code )
135+ }
136+
137+ err = client .DeleteDashboardByUID ("cIBgcSjkk" )
138+ if err == nil {
139+ t .Errorf ("%d not detected" , code )
140+ }
141+ }
142+ }
143+
27144func TestDashboards (t * testing.T ) {
28145 server , client := gapiTestTools (200 , getDashboardsJSON )
29146 defer server .Close ()
@@ -42,4 +159,4 @@ func TestDashboards(t *testing.T) {
42159 if dashboards [0 ].Id != 1 || dashboards [0 ].Title != "Grafana Stats" {
43160 t .Error ("Not correctly parsing returned dashboards." )
44161 }
45- }
162+ }
0 commit comments