@@ -42,6 +42,7 @@ describe('DDWAF', () => {
4242 'value_matchall' ,
4343 'key_matchall' ,
4444 'custom_action_rule' ,
45+ 'test-marshalling' ,
4546 'long_rule'
4647 ] ,
4748 skipped : [ ] ,
@@ -417,6 +418,7 @@ describe('DDWAF', () => {
417418 'value_matchall' ,
418419 'key_matchall' ,
419420 'custom_action_rule' ,
421+ 'test-marshalling' ,
420422 'long_rule'
421423 ] ,
422424 failed : [ 'invalid_1' , 'invalid_2' , 'invalid_3' ] ,
@@ -970,6 +972,32 @@ describe('DDWAF', () => {
970972 waf . dispose ( )
971973 } )
972974
975+ it ( 'should perform correct marshalling of ddwaf_object' , ( ) => {
976+ const waf = new DDWAF ( rules , 'recommended' )
977+ const context = waf . createContext ( )
978+ const result = context . run ( {
979+ persistent : {
980+ 'server.request.headers.no_cookies' : 'marshalling'
981+ }
982+ } , TIMEOUT )
983+
984+ assert . strictEqual ( result . timeout , false )
985+ assert . strictEqual ( result . status , 'match' )
986+ assert . strictEqual ( result . keep , true )
987+ assert . strictEqual ( result . attributes [ '_dd.appsec.trace.integer' ] , 662607015 )
988+ assert . strictEqual ( result . attributes [ '_dd.appsec.trace.negative_integer' ] , - 662607015 )
989+ assert . strictEqual ( result . attributes [ '_dd.appsec.trace.float' ] , 2.71828 )
990+ assert . strictEqual ( result . attributes [ '_dd.appsec.trace.negative_float' ] , - 3.14159 )
991+ assert . strictEqual ( result . attributes [ '_dd.appsec.trace.bool' ] , true )
992+ assert . strictEqual (
993+ result . attributes [ '_dd.appsec.trace.string' ] ,
994+ 'It was a bright cold day in April, and the clocks were striking thirteen.'
995+ )
996+
997+ context . dispose ( )
998+ waf . dispose ( )
999+ } )
1000+
9731001 describe ( 'Action semantics' , ( ) => {
9741002 it ( 'should support action definition in initialisation' , ( ) => {
9751003 const waf = new DDWAF ( rules , 'recommended' )
0 commit comments