From 8056f9b88acda16f532134336e5d33d884575b00 Mon Sep 17 00:00:00 2001 From: AleksandrMatsko Date: Thu, 16 Jan 2025 18:13:33 +0700 Subject: [PATCH] test: add some negative testcases --- api/dto/triggers_test.go | 42 +++++++++++++++++++++++++++++++--------- 1 file changed, 33 insertions(+), 9 deletions(-) diff --git a/api/dto/triggers_test.go b/api/dto/triggers_test.go index 82c30dbf0..87d0ac924 100644 --- a/api/dto/triggers_test.go +++ b/api/dto/triggers_test.go @@ -304,37 +304,37 @@ func TestTriggerValidation(t *testing.T) { testcases := []testcase{ { - givenTargets: []string{"seriesByTag('Name=some.metric', 'Team=Moira', 'Env=~Env1|Env2')"}, + givenTargets: []string{"seriesByTag('name=some.metric', 'Team=Moira', 'Env=~Env1|Env2')"}, expectedErrRsp: nil, caseDesc: "with ' and at the end of query", }, { - givenTargets: []string{"seriesByTag(\"Name=some.metric\", \"Team=Moira\", \"Env=~Env1|Env2\")"}, + givenTargets: []string{"seriesByTag(\"name=some.metric\", \"Team=Moira\", \"Env=~Env1|Env2\")"}, expectedErrRsp: nil, caseDesc: "with \" and at the end of query", }, { - givenTargets: []string{"seriesByTag('Name=some.metric', 'Env=~Env1|Env2', 'Team=Moira')"}, + givenTargets: []string{"seriesByTag('name=some.metric', 'Env=~Env1|Env2', 'Team=Moira')"}, expectedErrRsp: nil, caseDesc: "with ' in the middle of query", }, { - givenTargets: []string{"seriesByTag(\"Name=some.metric\", \"Env=~Env1|Env2\", \"Team=Moira\")"}, + givenTargets: []string{"seriesByTag(\"name=some.metric\", \"Env=~Env1|Env2\", \"Team=Moira\")"}, expectedErrRsp: nil, caseDesc: "with \" in the middle of query", }, { - givenTargets: []string{"seriesByTag('Name=some.metric', 'Env=~Env1|Env2' , 'Team=Moira')"}, + givenTargets: []string{"seriesByTag('name=some.metric', 'Env=~Env1|Env2' , 'Team=Moira')"}, expectedErrRsp: nil, caseDesc: "in the middle of query with some spaces", }, { - givenTargets: []string{"seriesByTag('Name=some.metric', \"Vasya=~.*\" , 'Team=Moira', 'Env=~Env1|Env2')"}, + givenTargets: []string{"seriesByTag('name=some.metric', \"Vasya=~.*\" , 'Team=Moira', 'Env=~Env1|Env2')"}, expectedErrRsp: nil, caseDesc: "more than one regexp", }, { - givenTargets: []string{"seriesByTag('Name=some.metric', \"Vasya=~+\", 'Team=Moira', 'BestTeam=Moira', 'Env=~Env1|Env2')"}, + givenTargets: []string{"seriesByTag('name=some.metric', \"Vasya=~+\", 'Team=Moira', 'BestTeam=Moira', 'Env=~Env1|Env2')"}, expectedErrRsp: api.ErrInvalidRequestContent{ ValidationError: fmt.Errorf( "bad regexp in tag 'Vasya': %w", @@ -346,7 +346,7 @@ func TestTriggerValidation(t *testing.T) { caseDesc: "with bad regexp (only '+')", }, { - givenTargets: []string{"seriesByTag('Name=some.metric', \"Vasya=~*\", 'Team=Moira', 'BestTeam=Moira', 'Env=~Env1|Env2')"}, + givenTargets: []string{"seriesByTag('name=some.metric', \"Vasya=~*\", 'Team=Moira', 'BestTeam=Moira', 'Env=~Env1|Env2')"}, expectedErrRsp: api.ErrInvalidRequestContent{ ValidationError: fmt.Errorf( "bad regexp in tag 'Vasya': %w", @@ -358,10 +358,34 @@ func TestTriggerValidation(t *testing.T) { caseDesc: "with bad regexp (only '*')", }, { - givenTargets: []string{"seriesByTag('Name=some.metric', \"Vasya=~\" , 'Team=Moira', 'Env=~Env1|Env2')"}, + givenTargets: []string{"seriesByTag('name=some.metric', \"Vasya=~\" , 'Team=Moira', 'Env=~Env1|Env2')"}, expectedErrRsp: nil, caseDesc: "with empty regexp", }, + { + givenTargets: []string{"seriesByTag('name=another.metric','Env=Env3','App=Moira','op=~*POST*')"}, + expectedErrRsp: api.ErrInvalidRequestContent{ + ValidationError: fmt.Errorf( + "bad regexp in tag 'op': %w", + &syntax.Error{ + Code: syntax.ErrMissingRepeatArgument, + Expr: "*", + }), + }, + caseDesc: "with bad regexp (incorrect use of '*')", + }, + { + givenTargets: []string{"seriesByTag('name=other.metric','Env=Env1', 'App=Moira-API', 'ResCode=~^(?!200)')"}, + expectedErrRsp: api.ErrInvalidRequestContent{ + ValidationError: fmt.Errorf( + "bad regexp in tag 'ResCode': %w", + &syntax.Error{ + Code: syntax.ErrInvalidPerlOp, + Expr: "(?!", + }), + }, + caseDesc: "with bad regexp (incorrect use of '*')", + }, } for i, singleCase := range testcases {