Skip to content

Commit 452b8a7

Browse files
authored
feat: add tests for target creation and deletion (#102)
1 parent 9eb8d14 commit 452b8a7

File tree

3 files changed

+75
-29
lines changed

3 files changed

+75
-29
lines changed

model.go

Lines changed: 38 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -473,7 +473,39 @@ func Roleingestor(stream string) string {
473473
return fmt.Sprintf(`[{"privilege": "ingestor", "resource": {"stream": "%s"}}]`, stream)
474474
}
475475

476-
func getAlertBody(stream string) string {
476+
func getTargetBody() string {
477+
return ` {
478+
"type": "webhook",
479+
"endpoint": "https://webhook.site/ec627445-d52b-44e9-948d-56671df3581e",
480+
"headers": {},
481+
"skipTlsCheck": true,
482+
"repeat": {
483+
"interval": "1m",
484+
"times": 1
485+
}
486+
}
487+
`
488+
}
489+
490+
func getIdFromTargetResponse(body io.Reader) string {
491+
type TargetConf struct {
492+
Type string `json:"type"`
493+
Endpoint string `json:"endpoint"`
494+
Headers string `json:"headers"`
495+
SkipTlsCheck string `json:"skipTlsCheck"`
496+
Repeat string `json:"repeat"`
497+
Id string `json:"id"`
498+
}
499+
var response []TargetConf
500+
if err := json.NewDecoder(body).Decode(&response); err != nil {
501+
fmt.Printf("Error decoding: %v\n", err)
502+
}
503+
504+
target := response[0]
505+
return target.Id
506+
}
507+
508+
func getAlertBody(stream string, targetId string) string {
477509
return fmt.Sprintf(`
478510
{
479511
"severity": "medium",
@@ -508,18 +540,9 @@ func getAlertBody(stream string) string {
508540
}
509541
},
510542
"targets": [
511-
{
512-
"type": "webhook",
513-
"endpoint": "https://webhook.site/ec627445-d52b-44e9-948d-56671df3581e",
514-
"headers": {},
515-
"skipTlsCheck": true,
516-
"repeat": {
517-
"interval": "1m",
518-
"times": 1
519-
}
520-
}
543+
"%s"
521544
]
522-
}`, stream)
545+
}`, stream, targetId)
523546
}
524547

525548
func getIdStateFromAlertResponse(body io.Reader) (string, string) {
@@ -544,7 +567,7 @@ func getIdStateFromAlertResponse(body io.Reader) (string, string) {
544567
return alert.Id, alert.State
545568
}
546569

547-
func createAlertResponse(id string, state string, stream string) string {
570+
func createAlertResponse(id string, state string, stream string, targetId string) string {
548571
return fmt.Sprintf(`
549572
[{
550573
"version": "v1",
@@ -584,16 +607,7 @@ func createAlertResponse(id string, state string, stream string) string {
584607
}
585608
},
586609
"targets": [
587-
{
588-
"type": "webhook",
589-
"endpoint": "https://webhook.site/ec627445-d52b-44e9-948d-56671df3581e",
590-
"headers": {},
591-
"skipTlsCheck": true,
592-
"repeat": {
593-
"interval": "1m",
594-
"times": 1
595-
}
596-
}
610+
"%s"
597611
]
598-
}]`, id, state, stream)
612+
}]`, id, state, stream, targetId)
599613
}

quest_test.go

Lines changed: 30 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -374,33 +374,58 @@ func TestSmokeLoad_CustomPartition_WithK6Stream(t *testing.T) {
374374
// DeleteStream(t, NewGlob.QueryClient, custom_partition_stream)
375375
// }
376376

377+
func TestSmokeSetTarget(t *testing.T) {
378+
CreateStream(t, NewGlob.QueryClient, NewGlob.Stream)
379+
if NewGlob.IngestorUrl.String() == "" {
380+
// RunFlog(t, NewGlob.QueryClient, NewGlob.Stream)
381+
body := getTargetBody()
382+
req, _ := NewGlob.QueryClient.NewRequest("POST", "/targets", strings.NewReader(body))
383+
response, err := NewGlob.QueryClient.Do(req)
384+
require.NoErrorf(t, err, "Request failed: %s", err)
385+
require.Equalf(t, 200, response.StatusCode, "Server returned http code: %s and response: %s", response.Status, readAsString(response.Body))
386+
}
387+
}
388+
377389
func TestSmokeSetAlert(t *testing.T) {
378390
CreateStream(t, NewGlob.QueryClient, NewGlob.Stream)
379391
if NewGlob.IngestorUrl.String() == "" {
380392
RunFlog(t, NewGlob.QueryClient, NewGlob.Stream)
381-
body := getAlertBody(NewGlob.Stream)
382-
req, _ := NewGlob.QueryClient.NewRequest("POST", "/alerts", strings.NewReader(body))
393+
req, _ := NewGlob.QueryClient.NewRequest("GET", "/targets", nil)
383394
response, err := NewGlob.QueryClient.Do(req)
384395
require.NoErrorf(t, err, "Request failed: %s", err)
396+
bodyTargets, _ := io.ReadAll(response.Body)
397+
reader1 := bytes.NewReader(bodyTargets)
398+
targetId := getIdFromTargetResponse(reader1)
399+
body := getAlertBody(NewGlob.Stream, targetId)
400+
req, _ = NewGlob.QueryClient.NewRequest("POST", "/alerts", strings.NewReader(body))
401+
response, err = NewGlob.QueryClient.Do(req)
402+
require.NoErrorf(t, err, "Request failed: %s", err)
385403
require.Equalf(t, 200, response.StatusCode, "Server returned http code: %s and response: %s", response.Status, readAsString(response.Body))
386404

387405
}
388406
}
389407

390408
func TestSmokeGetAlert(t *testing.T) {
391409
if NewGlob.IngestorUrl.String() == "" {
392-
req, _ := NewGlob.QueryClient.NewRequest("GET", "/alerts", nil)
410+
req, _ := NewGlob.QueryClient.NewRequest("GET", "/targets", nil)
393411
response, err := NewGlob.QueryClient.Do(req)
394412
require.NoErrorf(t, err, "Request failed: %s", err)
413+
bodyTargets, _ := io.ReadAll(response.Body)
414+
reader1 := bytes.NewReader(bodyTargets)
415+
targetId := getIdFromTargetResponse(reader1)
416+
req, _ = NewGlob.QueryClient.NewRequest("GET", "/alerts", nil)
417+
response, err = NewGlob.QueryClient.Do(req)
418+
require.NoErrorf(t, err, "Request failed: %s", err)
395419
body, _ := io.ReadAll(response.Body)
396-
reader1 := bytes.NewReader(body)
420+
reader1 = bytes.NewReader(body)
397421
reader2 := bytes.NewReader(body)
398422
expected := readAsString(reader1)
399423
id, state := getIdStateFromAlertResponse(reader2)
400424
require.Equalf(t, 200, response.StatusCode, "Server returned http code: %s and response: %s", response.Status, body)
401-
res := createAlertResponse(id, state, NewGlob.Stream)
425+
res := createAlertResponse(id, state, NewGlob.Stream, targetId)
402426
require.JSONEq(t, expected, res, "Get alert response doesn't match with Alert config returned")
403427
DeleteAlert(t, NewGlob.QueryClient, id)
428+
DeleteTarget(t, NewGlob.QueryClient, targetId)
404429
}
405430
DeleteStream(t, NewGlob.QueryClient, NewGlob.Stream)
406431
}

test_utils.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,13 @@ func DeleteAlert(t *testing.T, client HTTPClient, alert_id string) {
123123
require.Equalf(t, 200, response.StatusCode, "Server returned http code: %s", response.Status)
124124
}
125125

126+
func DeleteTarget(t *testing.T, client HTTPClient, target_id string) {
127+
req, _ := client.NewRequest("DELETE", "targets/"+target_id, nil)
128+
response, err := client.Do(req)
129+
require.NoErrorf(t, err, "Request failed: %s", err)
130+
require.Equalf(t, 200, response.StatusCode, "Server returned http code: %s", response.Status)
131+
}
132+
126133
func RunFlog(t *testing.T, client HTTPClient, stream string) {
127134
cmd := exec.Command("flog", "-f", "json", "-n", "50")
128135
var out strings.Builder

0 commit comments

Comments
 (0)