@@ -563,6 +563,31 @@ def test_30_build_fw_rule_4(self):
563563 msg = '_build_firewall_rule_nftables raises when a rule add fails' ):
564564 self .library ._build_firewall_rule_nftables ('10.20.30.1' , '1.2.3.4' , 'tcp' , in_acl1 )
565565
566+ in_acl3 = iamvpnlibrary .iamvpnbase .ParsedACL (
567+ rule = 'rule3' , address = IPNetwork ('5.6.7.10/28' ),
568+ portstring = '22' , description = 'I HAZ COMMENT' )
569+ with mock .patch .object (self .library .nft , 'json_cmd' ) as mock_nft :
570+ mock_nft .return_value = (0 , '' , '' )
571+ self .library ._build_firewall_rule_nftables ('10.20.30.2' , '1.2.3.4' , 'tcp' , in_acl3 )
572+ mock_nft .assert_called_once_with ({'nftables' : [
573+ {'add' : {'rule' : {'family' : 'inet' ,
574+ 'table' : 'openvpn_netfilter' ,
575+ 'chain' : '10.20.30.2' ,
576+ 'comment' : 'bob:rule3 ACL I HAZ COMMENT' ,
577+ 'expr' : [{'match' : {
578+ 'op' : '==' ,
579+ 'left' : {'payload' : { 'protocol' : 'ip' , 'field' : 'saddr' }},
580+ 'right' : '1.2.3.4' }},
581+ {'match' : {
582+ 'op' : '==' ,
583+ 'left' : {'payload' : { 'protocol' : 'ip' , 'field' : 'daddr' }},
584+ 'right' : {'prefix' : {'addr' : '5.6.7.10' , 'len' : 28 }}}},
585+ {'match' : {
586+ 'op' : '==' ,
587+ 'left' : {'payload' : { 'protocol' : 'tcp' , 'field' : 'dport' }},
588+ 'right' : {'set' : [22 ]}}},
589+ {'accept' : None }]}}}]})
590+
566591 in_acl2 = iamvpnlibrary .iamvpnbase .ParsedACL (
567592 rule = 'rule2' , address = IPNetwork ('5.6.7.9' ),
568593 portstring = '80' , description = 'I HAZ COMMENT' )
0 commit comments