@@ -65,8 +65,8 @@ func newTestSetup(t *testing.T, cfg TemplateConfig) *testSetup {
65
65
t .Fatal (err )
66
66
}
67
67
s := testSetup {t : t , client : client , loader : NewESLoader (client ), config : cfg }
68
- client .Request ("DELETE" , "/_template/" + cfg .Name , "" , nil , nil )
69
- require .False (t , s .loader .templateExists (cfg .Name ))
68
+ client .Request ("DELETE" , templateLoaderPath [ cfg . Type ] + cfg .Name , "" , nil , nil )
69
+ require .False (t , s .loader .templateExists (cfg .Name , cfg . Type ))
70
70
return & s
71
71
}
72
72
func (ts * testSetup ) loadFromFile (fileElems []string ) error {
@@ -82,7 +82,7 @@ func (ts *testSetup) load(fields []byte) error {
82
82
83
83
func (ts * testSetup ) mustLoad (fields []byte ) {
84
84
require .NoError (ts .t , ts .load (fields ))
85
- require .True (ts .t , ts .loader .templateExists (ts .config .Name ))
85
+ require .True (ts .t , ts .loader .templateExists (ts .config .Name , ts . config . Type ))
86
86
}
87
87
88
88
func TestESLoader_Load (t * testing.T ) {
@@ -91,7 +91,7 @@ func TestESLoader_Load(t *testing.T) {
91
91
setup := newTestSetup (t , TemplateConfig {Enabled : false })
92
92
93
93
setup .load (nil )
94
- assert .False (t , setup .loader .templateExists (setup .config .Name ))
94
+ assert .False (t , setup .loader .templateExists (setup .config .Name , setup . config . Type ))
95
95
})
96
96
97
97
t .Run ("invalid version" , func (t * testing.T ) {
@@ -115,14 +115,14 @@ func TestESLoader_Load(t *testing.T) {
115
115
116
116
t .Run ("disabled" , func (t * testing.T ) {
117
117
setup .load (nil )
118
- tmpl := getTemplate (t , setup .client , setup .config .Name )
118
+ tmpl := getTemplate (t , setup .client , setup .config .Name , setup . config . Type )
119
119
assert .Equal (t , true , tmpl .SourceEnabled ())
120
120
})
121
121
122
122
t .Run ("enabled" , func (t * testing.T ) {
123
123
setup .config .Overwrite = true
124
124
setup .load (nil )
125
- tmpl := getTemplate (t , setup .client , setup .config .Name )
125
+ tmpl := getTemplate (t , setup .client , setup .config .Name , setup . config . Type )
126
126
assert .Equal (t , false , tmpl .SourceEnabled ())
127
127
})
128
128
})
@@ -140,7 +140,7 @@ func TestESLoader_Load(t *testing.T) {
140
140
Name string `config:"name"`
141
141
}{Enabled : true , Path : path (t , []string {"testdata" , "fields.json" }), Name : nameJSON }
142
142
setup .load (nil )
143
- assert .True (t , setup .loader .templateExists (nameJSON ))
143
+ assert .True (t , setup .loader .templateExists (nameJSON , setup . config . Type ))
144
144
})
145
145
146
146
t .Run ("load template successful" , func (t * testing.T ) {
@@ -157,10 +157,19 @@ func TestESLoader_Load(t *testing.T) {
157
157
fields : fields ,
158
158
properties : []string {"foo" , "bar" },
159
159
},
160
+ "default config with fields and component" : {
161
+ cfg : TemplateConfig {Enabled : true , Type : IndexTemplateComponent },
162
+ fields : fields ,
163
+ properties : []string {"foo" , "bar" },
164
+ },
160
165
"minimal template" : {
161
166
cfg : TemplateConfig {Enabled : true },
162
167
fields : nil ,
163
168
},
169
+ "minimal template component" : {
170
+ cfg : TemplateConfig {Enabled : true , Type : IndexTemplateComponent },
171
+ fields : nil ,
172
+ },
164
173
"fields from file" : {
165
174
cfg : TemplateConfig {Enabled : true , Fields : path (t , []string {"testdata" , "fields.yml" })},
166
175
fields : fields ,
@@ -181,7 +190,7 @@ func TestESLoader_Load(t *testing.T) {
181
190
setup .mustLoad (data .fields )
182
191
183
192
// Fetch properties
184
- tmpl := getTemplate (t , setup .client , setup .config .Name )
193
+ tmpl := getTemplate (t , setup .client , setup .config .Name , setup . config . Type )
185
194
val , err := tmpl .GetValue ("mappings.properties" )
186
195
if data .properties == nil {
187
196
assert .Error (t , err )
@@ -203,17 +212,17 @@ func TestESLoader_Load(t *testing.T) {
203
212
func TestTemplate_LoadFile (t * testing.T ) {
204
213
setup := newTestSetup (t , TemplateConfig {Enabled : true })
205
214
assert .NoError (t , setup .loadFromFile ([]string {".." , "fields.yml" }))
206
- assert .True (t , setup .loader .templateExists (setup .config .Name ))
215
+ assert .True (t , setup .loader .templateExists (setup .config .Name , setup . config . Type ))
207
216
}
208
217
209
218
func TestLoadInvalidTemplate (t * testing.T ) {
210
219
setup := newTestSetup (t , TemplateConfig {})
211
220
212
221
// Try to load invalid template
213
222
template := map [string ]interface {}{"json" : "invalid" }
214
- err := setup .loader .loadTemplate (setup .config .Name , template )
223
+ err := setup .loader .loadTemplate (setup .config .Name , setup . config . Type , template )
215
224
assert .Error (t , err )
216
- assert .False (t , setup .loader .templateExists (setup .config .Name ))
225
+ assert .False (t , setup .loader .templateExists (setup .config .Name , setup . config . Type ))
217
226
}
218
227
219
228
// Tests loading the templates for each beat
@@ -225,7 +234,7 @@ func TestLoadBeatsTemplate_fromFile(t *testing.T) {
225
234
for _ , beat := range beats {
226
235
setup := newTestSetup (t , TemplateConfig {Name : beat , Enabled : true })
227
236
assert .NoError (t , setup .loadFromFile ([]string {".." , ".." , beat , "fields.yml" }))
228
- assert .True (t , setup .loader .templateExists (setup .config .Name ))
237
+ assert .True (t , setup .loader .templateExists (setup .config .Name , setup . config . Type ))
229
238
}
230
239
}
231
240
@@ -238,7 +247,7 @@ func TestTemplateSettings(t *testing.T) {
238
247
require .NoError (t , setup .loadFromFile ([]string {".." , "fields.yml" }))
239
248
240
249
// Check that it contains the mapping
241
- templateJSON := getTemplate (t , setup .client , setup .config .Name )
250
+ templateJSON := getTemplate (t , setup .client , setup .config .Name , setup . config . Type )
242
251
assert .Equal (t , 1 , templateJSON .NumberOfShards ())
243
252
assert .Equal (t , false , templateJSON .SourceEnabled ())
244
253
}
@@ -289,7 +298,7 @@ var dataTests = []struct {
289
298
func TestTemplateWithData (t * testing.T ) {
290
299
setup := newTestSetup (t , TemplateConfig {Enabled : true })
291
300
require .NoError (t , setup .loadFromFile ([]string {"testdata" , "fields.yml" }))
292
- require .True (t , setup .loader .templateExists (setup .config .Name ))
301
+ require .True (t , setup .loader .templateExists (setup .config .Name , setup . config . Type ))
293
302
esClient := setup .client .(* eslegclient.Connection )
294
303
for _ , test := range dataTests {
295
304
_ , _ , err := esClient .Index (setup .config .Name , "_doc" , "" , nil , test .data )
@@ -302,14 +311,29 @@ func TestTemplateWithData(t *testing.T) {
302
311
}
303
312
}
304
313
305
- func getTemplate (t * testing.T , client ESClient , templateName string ) testTemplate {
306
- status , body , err := client .Request ("GET" , "/_template/" + templateName , "" , nil , nil )
314
+ func getTemplate (t * testing.T , client ESClient , templateName string , templateType IndexTemplateType ) testTemplate {
315
+ status , body , err := client .Request ("GET" , templateLoaderPath [ templateType ] + templateName , "" , nil , nil )
307
316
require .NoError (t , err )
308
317
require .Equal (t , status , 200 )
309
318
310
319
var response common.MapStr
311
320
err = json .Unmarshal (body , & response )
312
321
require .NoError (t , err )
322
+ require .NotNil (t , response )
323
+
324
+ if templateType == IndexTemplateComponent {
325
+ var tmpl map [string ]interface {}
326
+ components := response ["component_templates" ].([]interface {})
327
+ for _ , ct := range components {
328
+ componentTemplate := ct .(map [string ]interface {})["component_template" ].(map [string ]interface {})
329
+ tmpl = componentTemplate ["template" ].(map [string ]interface {})
330
+ }
331
+ return testTemplate {
332
+ t : t ,
333
+ client : client ,
334
+ MapStr : common .MapStr (tmpl ),
335
+ }
336
+ }
313
337
314
338
return testTemplate {
315
339
t : t ,
0 commit comments