@@ -787,7 +787,7 @@ describe('DDWAF', () => {
787787 assert . strictEqual ( result . events [ 0 ] . rule_matches [ 0 ] . parameters [ 0 ] . highlight [ 0 ] , '<Redacted>' )
788788 } )
789789
790- it ( 'should collect derivatives information when a rule match' , ( ) => {
790+ it ( 'should collect result attributes information when a rule match' , ( ) => {
791791 const waf = new DDWAF ( processor , 'processor_rules' )
792792
793793 const context = waf . createContext ( )
@@ -805,7 +805,7 @@ describe('DDWAF', () => {
805805 } , TIMEOUT )
806806
807807 assert . strictEqual ( result . status , 'match' )
808- assert . deepStrictEqual ( result . derivatives , { 'server.request.body.schema' : [ 8 ] } )
808+ assert . deepStrictEqual ( result . attributes , { 'server.request.body.schema' : [ 8 ] } )
809809
810810 context . dispose ( )
811811 assert ( context . disposed )
@@ -814,7 +814,7 @@ describe('DDWAF', () => {
814814 assert ( waf . disposed )
815815 } )
816816
817- it ( 'should collect derivatives information when a rule does not match' , ( ) => {
817+ it ( 'should collect result attributes information when a rule does not match' , ( ) => {
818818 const waf = new DDWAF ( processor , 'processor_rules' )
819819 const context = waf . createContext ( )
820820
@@ -830,7 +830,7 @@ describe('DDWAF', () => {
830830 }
831831 } , TIMEOUT )
832832
833- assert . deepStrictEqual ( result . derivatives , { 'server.request.body.schema' : [ 8 ] } )
833+ assert . deepStrictEqual ( result . attributes , { 'server.request.body.schema' : [ 8 ] } )
834834
835835 context . dispose ( )
836836 assert ( context . disposed )
@@ -839,7 +839,7 @@ describe('DDWAF', () => {
839839 assert ( waf . disposed )
840840 } )
841841
842- it ( 'should collect all derivatives types' , ( ) => {
842+ it ( 'should collect all result attributes types' , ( ) => {
843843 const waf = new DDWAF ( processor , 'processor_rules' )
844844 const context = waf . createContext ( )
845845
@@ -870,7 +870,7 @@ describe('DDWAF', () => {
870870 }
871871 } , TIMEOUT )
872872
873- assert . deepStrictEqual ( result . derivatives , {
873+ assert . deepStrictEqual ( result . attributes , {
874874 'server.request.body.schema' : [
875875 {
876876 null : [ 1 ] ,
@@ -898,7 +898,7 @@ describe('DDWAF', () => {
898898 assert ( waf . disposed )
899899 } )
900900
901- it ( 'should collect derivatives in two consecutive calls' , ( ) => {
901+ it ( 'should collect result attributes in two consecutive calls' , ( ) => {
902902 const waf = new DDWAF ( processor , 'processor_rules' )
903903 const context = waf . createContext ( )
904904
@@ -911,7 +911,7 @@ describe('DDWAF', () => {
911911 }
912912 } , TIMEOUT )
913913
914- assert . strictEqual ( result . derivatives , undefined )
914+ assert . strictEqual ( result . attributes , undefined )
915915
916916 result = context . run ( {
917917 persistent : {
@@ -922,15 +922,15 @@ describe('DDWAF', () => {
922922 }
923923 } , TIMEOUT )
924924
925- assert . deepStrictEqual ( result . derivatives , { 'server.request.body.schema' : [ 8 ] } )
925+ assert . deepStrictEqual ( result . attributes , { 'server.request.body.schema' : [ 8 ] } )
926926
927927 result = context . run ( {
928928 persistent : {
929929 'server.request.query' : ''
930930 }
931931 } , TIMEOUT )
932932
933- assert . deepStrictEqual ( result . derivatives , { 'server.request.query.schema' : [ 8 ] } )
933+ assert . deepStrictEqual ( result . attributes , { 'server.request.query.schema' : [ 8 ] } )
934934
935935 context . dispose ( )
936936 assert ( context . disposed )
@@ -939,6 +939,37 @@ describe('DDWAF', () => {
939939 assert ( waf . disposed )
940940 } )
941941
942+ it ( 'should include keep field in result object' , ( ) => {
943+ const waf = new DDWAF ( rules , 'recommended' )
944+ const context = waf . createContext ( )
945+
946+ // Non-match result
947+ let result = context . run ( {
948+ persistent : {
949+ 'server.request.headers.no_cookies' : 'normal_value'
950+ }
951+ } , TIMEOUT )
952+
953+ assert . strictEqual ( result . timeout , false )
954+ assert . strictEqual ( typeof result . keep , 'boolean' )
955+ assert . strictEqual ( result . keep , false )
956+
957+ // Match result
958+ result = context . run ( {
959+ persistent : {
960+ 'server.request.headers.no_cookies' : 'value_attack'
961+ }
962+ } , TIMEOUT )
963+
964+ assert . strictEqual ( result . timeout , false )
965+ assert . strictEqual ( result . status , 'match' )
966+ assert . strictEqual ( typeof result . keep , 'boolean' )
967+ assert . strictEqual ( result . keep , true )
968+
969+ context . dispose ( )
970+ waf . dispose ( )
971+ } )
972+
942973 describe ( 'Action semantics' , ( ) => {
943974 it ( 'should support action definition in initialisation' , ( ) => {
944975 const waf = new DDWAF ( rules , 'recommended' )
@@ -1067,7 +1098,7 @@ describe('limit tests', () => {
10671098 }
10681099 } , TIMEOUT )
10691100
1070- assert . deepStrictEqual ( result . derivatives , {
1101+ assert . deepStrictEqual ( result . attributes , {
10711102 'server.request.body.schema' : [
10721103 {
10731104 mail : [ 8 ] ,
@@ -1098,7 +1129,7 @@ describe('limit tests', () => {
10981129 }
10991130 } , TIMEOUT )
11001131
1101- assert . deepStrictEqual ( result . derivatives , {
1132+ assert . deepStrictEqual ( result . attributes , {
11021133 'server.request.body.schema' : [
11031134 {
11041135 mail : [ 8 ] ,
@@ -1124,7 +1155,7 @@ describe('limit tests', () => {
11241155 }
11251156 } , TIMEOUT )
11261157
1127- assert . deepStrictEqual ( result . derivatives , {
1158+ assert . deepStrictEqual ( result . attributes , {
11281159 'server.request.body.schema' : [ [ [ 0 ] ] , { len : 3 } ]
11291160 } )
11301161 } )
@@ -1144,7 +1175,7 @@ describe('limit tests', () => {
11441175 }
11451176 } , TIMEOUT )
11461177
1147- assert . deepStrictEqual ( result . derivatives , {
1178+ assert . deepStrictEqual ( result . attributes , {
11481179 'server.request.body.schema' : [ [ [ { payload : [ 0 ] } ] ] , { len : 3 } ]
11491180 } )
11501181 } )
@@ -1166,7 +1197,7 @@ describe('limit tests', () => {
11661197 }
11671198 } , TIMEOUT )
11681199
1169- assert . deepStrictEqual ( result . derivatives , {
1200+ assert . deepStrictEqual ( result . attributes , {
11701201 'server.request.body.schema' : [
11711202 [ [ { mail : [ 8 ] , key : [ 8 ] } ] ] ,
11721203 { len : 4 }
@@ -1194,7 +1225,7 @@ describe('limit tests', () => {
11941225 }
11951226 } , TIMEOUT )
11961227
1197- assert . deepStrictEqual ( result . derivatives , {
1228+ assert . deepStrictEqual ( result . attributes , {
11981229 'server.request.body.schema' : [
11991230 {
12001231 prop1 : [ { mail : [ 8 ] , key : [ 8 ] } ] ,
@@ -1331,7 +1362,7 @@ describe('limit tests', () => {
13311362 }
13321363 } , TIMEOUT )
13331364
1334- assert . deepStrictEqual ( result . derivatives , {
1365+ assert . deepStrictEqual ( result . attributes , {
13351366 'server.request.body.schema' : [
13361367 [
13371368 [
@@ -1374,7 +1405,7 @@ describe('limit tests', () => {
13741405 }
13751406 } , TIMEOUT )
13761407
1377- assert . deepStrictEqual ( result . derivatives , {
1408+ assert . deepStrictEqual ( result . attributes , {
13781409 'server.request.body.schema' : [
13791410 {
13801411 c : [ 8 ] ,
@@ -1419,7 +1450,7 @@ describe('limit tests', () => {
14191450 }
14201451 } , TIMEOUT )
14211452
1422- assert . deepStrictEqual ( result . derivatives , {
1453+ assert . deepStrictEqual ( result . attributes , {
14231454 'server.request.body.schema' : [
14241455 {
14251456 a : [ 16 ] ,
@@ -1451,7 +1482,7 @@ describe('limit tests', () => {
14511482 }
14521483 } , TIMEOUT )
14531484
1454- assert . deepStrictEqual ( result . derivatives , {
1485+ assert . deepStrictEqual ( result . attributes , {
14551486 'server.request.body.schema' : [
14561487 {
14571488 a : [ 0 ] ,
0 commit comments