Device-PaloAlto-Firewall

 view release on metacpan or  search on metacpan

t/04-bgp_peers.t  view on Meta::CPAN

$fw->meta->add_method('_send_request', sub { return XML::Twig->new()->safe_parse( no_bgp_configured() )->simplify( forcearray => ['entry'] )->{result} } );



### Test exceptions and warnings ###
dies_ok { $fw->bgp_peers(rtr => 'default') } 'Incorrect parameter dies';
dies_ok { $test->bgp_peers_up() } 'Not specifying \'peer_ips =>\' dies';

### Tests when the firewall is not configured with BGP ###
isa_ok( $fw->bgp_peers(), 'ARRAY' );
is_deeply( $fw->bgp_peers(), [] , "No BGP peers configured returns an empty ARRAYREF" );

ok( !$test->bgp_peers_up(peer_ips => ['192.168.122.30']), 'No configured BGP');


### Tests when the firewall has a single peer ###
$fw->meta->add_method('_send_request', sub { return XML::Twig->new()->safe_parse( static_vm_response_single_peer() )->simplify( forcearray => ['entry'] )->{result} } );

ok( $test->bgp_peers_up(peer_ips => ['192.168.122.30']), 'Single peer up' );
ok( !$test->bgp_peers_up(peer_ips => ['1.1.1.1']), 'Peer not present' );
ok( !$test->bgp_peers_up(peer_ips => ['192.168.122.30', '1.1.1.1']), 'Single peer up, single peer not present' );

### Tests when the firewall has multiple peers ###
$fw->meta->add_method('_send_request', sub { return XML::Twig->new()->safe_parse( static_vm_response_multiple_peer() )->simplify( forcearray => ['entry'] )->{result} } );

ok( $test->bgp_peers_up(peer_ips => ['192.168.122.30']), 'Single peer up' );
ok( !$test->bgp_peers_up(peer_ips => ['192.168.122.35']), 'Single peer not up' );
ok( !$test->bgp_peers_up(peer_ips => ['192.168.122.30', '192.168.122.35']), 'Single peer up, single peer not up' );
ok( !$test->bgp_peers_up(peer_ips => ['192.168.122.30', '192.168.122.35', '1.1.1.1']), 'Single peer up, single peer not up, single peer not present' );

sub no_bgp_configured {
    return <<'END'
<response status="success"><result></result></response>
END
}

sub static_vm_response_single_peer {
    return  <<'END';
<response status="success"><result>
	<entry peer="c1000v.local" vr="default">
		<peer-group>Cisco</peer-group>
		<peer-router-id>1.1.1.20</peer-router-id>
		<remote-as>65001</remote-as>
		<status>Established</status>
		<status-duration>260</status-duration>
		<password-set>no</password-set>
		<passive>no</passive>
		<multi-hop-ttl>2</multi-hop-ttl>
		<peer-address>192.168.122.30:52236</peer-address>
		<local-address>192.168.122.19:179</local-address>
		<reflector-client>not-client</reflector-client>
		<same-confederation>no</same-confederation>
		<aggregate-confed-as>yes</aggregate-confed-as>
		<peering-type>Unspecified</peering-type>
		<connect-retry-interval>120</connect-retry-interval>
		<open-delay>0</open-delay>
		<idle-hold>15</idle-hold>
		<prefix-limit>5000</prefix-limit>
		<holdtime>90</holdtime>
		<holdtime-config>90</holdtime-config>
		<keepalive>30</keepalive>
		<keepalive-config>30</keepalive-config>
		<msg-update-in>4</msg-update-in>
		<msg-update-out>2</msg-update-out>
		<msg-total-in>15</msg-total-in>
		<msg-total-out>13</msg-total-out>
		<last-update-age>3</last-update-age>
		<last-error></last-error>
		<status-flap-counts>2</status-flap-counts>
		<established-counts>1</established-counts>
		<ORF-entry-received>0</ORF-entry-received>
		<nexthop-self>no</nexthop-self>
		<nexthop-thirdparty>yes</nexthop-thirdparty>
		<nexthop-peer>no</nexthop-peer>
		<config>
	<remove-private-as>yes</remove-private-as></config>
		<peer-capability>
	<list>
		<capability>Multiprotocol Extensions(1)</capability></list>
	<list>
		<capability>Route Refresh(2)</capability></list>
	<list>
		<capability>32-Bit AS Number(65)</capability></list>
	<list>
		<capability>unknown(70)</capability></list>
	<list>
		<capability>Route Refresh (Cisco)(128)</capability></list></peer-capability>
		<prefix-counter>
	<entry afi-safi="bgpAfiIpv4-unicast">
		<incoming-total>2</incoming-total>
		<incoming-accepted>2</incoming-accepted>
		<incoming-rejected>0</incoming-rejected>
		<outgoing-total>1</outgoing-total>
		<outgoing-advertised>1</outgoing-advertised>
	</entry>
</prefix-counter></entry></result></response>
END
}


sub static_vm_response_multiple_peer {
    return  <<'END';
<response status="success"><result>
	<entry peer="c1000v.local" vr="default">
		<peer-group>Cisco</peer-group>
		<peer-router-id>1.1.1.20</peer-router-id>
		<remote-as>65001</remote-as>
		<status>Established</status>
		<status-duration>1021</status-duration>
		<password-set>no</password-set>
		<passive>no</passive>
		<multi-hop-ttl>2</multi-hop-ttl>
		<peer-address>192.168.122.30:52236</peer-address>
		<local-address>192.168.122.19:179</local-address>
		<reflector-client>not-client</reflector-client>
		<same-confederation>no</same-confederation>
		<aggregate-confed-as>yes</aggregate-confed-as>
		<peering-type>Unspecified</peering-type>
		<connect-retry-interval>120</connect-retry-interval>
		<open-delay>0</open-delay>
		<idle-hold>15</idle-hold>
		<prefix-limit>5000</prefix-limit>
		<holdtime>90</holdtime>
		<holdtime-config>90</holdtime-config>
		<keepalive>30</keepalive>
		<keepalive-config>30</keepalive-config>
		<msg-update-in>7</msg-update-in>
		<msg-update-out>5</msg-update-out>
		<msg-total-in>45</msg-total-in>
		<msg-total-out>47</msg-total-out>
		<last-update-age>16</last-update-age>
		<last-error></last-error>
		<status-flap-counts>2</status-flap-counts>
		<established-counts>1</established-counts>
		<ORF-entry-received>0</ORF-entry-received>
		<nexthop-self>no</nexthop-self>
		<nexthop-thirdparty>yes</nexthop-thirdparty>
		<nexthop-peer>no</nexthop-peer>
		<config>
	<remove-private-as>yes</remove-private-as></config>
		<peer-capability>
	<list>
		<capability>Multiprotocol Extensions(1)</capability></list>
	<list>
		<capability>Route Refresh(2)</capability></list>
	<list>
		<capability>32-Bit AS Number(65)</capability></list>
	<list>
		<capability>unknown(70)</capability></list>
	<list>
		<capability>Route Refresh (Cisco)(128)</capability></list></peer-capability>
		<prefix-counter>
	<entry afi-safi="bgpAfiIpv4-unicast">
		<incoming-total>2</incoming-total>
		<incoming-accepted>2</incoming-accepted>
		<incoming-rejected>0</incoming-rejected>
		<outgoing-total>1</outgoing-total>
		<outgoing-advertised>1</outgoing-advertised></entry></prefix-counter></entry>
	<entry peer="Down_Peer" vr="default">
		<peer-group>Down</peer-group>
		<peer-router-id>0.0.0.0</peer-router-id>
		<remote-as>65005</remote-as>
		<status>Connect</status>
		<status-duration>0</status-duration>
		<password-set>no</password-set>
		<passive>no</passive>
		<multi-hop-ttl>2</multi-hop-ttl>
		<peer-address>192.168.122.35</peer-address>
		<local-address>192.168.122.19</local-address>
		<reflector-client>not-client</reflector-client>
		<same-confederation>no</same-confederation>
		<aggregate-confed-as>yes</aggregate-confed-as>
		<peering-type>Unspecified</peering-type>
		<connect-retry-interval>120</connect-retry-interval>
		<open-delay>0</open-delay>
		<idle-hold>15</idle-hold>
		<prefix-limit>5000</prefix-limit>
		<holdtime>0</holdtime>
		<holdtime-config>90</holdtime-config>
		<keepalive>0</keepalive>
		<keepalive-config>30</keepalive-config>
		<msg-update-in>0</msg-update-in>
		<msg-update-out>0</msg-update-out>
		<msg-total-in>0</msg-total-in>
		<msg-total-out>0</msg-total-out>
		<last-update-age>16</last-update-age>
		<last-error></last-error>
		<status-flap-counts>1</status-flap-counts>
		<established-counts>0</established-counts>
		<ORF-entry-received>0</ORF-entry-received>
		<nexthop-self>no</nexthop-self>
		<nexthop-thirdparty>yes</nexthop-thirdparty>
		<nexthop-peer>no</nexthop-peer>
		<config>
	<remove-private-as>yes</remove-private-as></config>
		<peer-capability></peer-capability>
		<prefix-counter></prefix-counter></entry></result></response>
END
}



( run in 2.021 seconds using v1.01-cache-2.11-cpan-b301d465b3d )