def test_build_flow_spec(self): res = build_flow_spec( 'tenant=a context=b sip=1.2.3.4 dip=10/24 arpOpc=req etherT=ip prot=tcp dport=10 - 20' ) self.assertEqual(res.tenant_name, 'a') self.assertEqual(res.context_name, 'b') self.assertEqual(res.sip[0], IpAddress('1.2.3.4')) self.assertEqual(res.dip[0], IpAddress('10.0.0.0/24')) self.assertEqual(res.protocol_filter[0].arpOpc, 'req') self.assertEqual(res.protocol_filter[0].etherT, 'ip') self.assertEqual(res.protocol_filter[0].prot, 'tcp') self.assertEqual(res.protocol_filter[0].dFromPort, 10) self.assertEqual(res.protocol_filter[0].dToPort, 20) res = build_flow_spec('sport=45- 49 tcpRules=syn') self.assertEqual(res.tenant_name, '*') self.assertEqual(res.context_name, '*') self.assertEqual(res.sip[0], IpAddress('0/0')) self.assertEqual(res.dip[0], IpAddress('0/0')) self.assertEqual(res.protocol_filter[0].arpOpc, 'any') self.assertEqual(res.protocol_filter[0].etherT, 'ip') self.assertEqual(res.protocol_filter[0].prot, 'tcp') self.assertEqual(res.protocol_filter[0].sFromPort, 45) self.assertEqual(res.protocol_filter[0].sToPort, 49) self.assertEqual(res.protocol_filter[0].tcpRules, 'syn') res = build_flow_spec('sport=45 tcpRules=syn') self.assertEqual(res.tenant_name, '*') self.assertEqual(res.context_name, '*') self.assertEqual(res.sip[0], IpAddress('0/0')) self.assertEqual(res.dip[0], IpAddress('0/0')) self.assertEqual(res.protocol_filter[0].arpOpc, 'any') self.assertEqual(res.protocol_filter[0].etherT, 'ip') self.assertEqual(res.protocol_filter[0].prot, 'tcp') self.assertEqual(res.protocol_filter[0].sFromPort, 45) self.assertEqual(res.protocol_filter[0].sToPort, 45) self.assertEqual(res.protocol_filter[0].tcpRules, 'syn') res = build_flow_spec('etherT=arp') self.assertEqual(res.tenant_name, '*') self.assertEqual(res.context_name, '*') self.assertEqual(res.sip[0], IpAddress('0/0')) self.assertEqual(res.dip[0], IpAddress('0/0')) self.assertEqual(res.protocol_filter[0].arpOpc, 'any') self.assertEqual(res.protocol_filter[0].etherT, 'arp') self.assertEqual(res.protocol_filter[0].prot, 'any') self.assertEqual(res.protocol_filter[0].sFromPort, 'any') self.assertEqual(res.protocol_filter[0].sToPort, 'any') self.assertEqual(res.protocol_filter[0].tcpRules, 'any')
def test_build_flow_spec(self): res = build_flow_spec('tenant=a context=b sip=1.2.3.4 dip=10/24 arpOpc=req etherT=ip prot=tcp dport=10 - 20') self.assertEqual(res.tenant_name, 'a') self.assertEqual(res.context_name, 'b') self.assertEqual(res.sip[0], IpAddress('1.2.3.4')) self.assertEqual(res.dip[0], IpAddress('10.0.0.0/24')) self.assertEqual(res.protocol_filter[0].arpOpc, 'req') self.assertEqual(res.protocol_filter[0].etherT, 'ip') self.assertEqual(res.protocol_filter[0].prot, 'tcp') self.assertEqual(res.protocol_filter[0].dFromPort, 10) self.assertEqual(res.protocol_filter[0].dToPort, 20) res = build_flow_spec('sport=45- 49 tcpRules=syn') self.assertEqual(res.tenant_name, '*') self.assertEqual(res.context_name, '*') self.assertEqual(res.sip[0], IpAddress('0/0')) self.assertEqual(res.dip[0], IpAddress('0/0')) self.assertEqual(res.protocol_filter[0].arpOpc, 'any') self.assertEqual(res.protocol_filter[0].etherT, 'ip') self.assertEqual(res.protocol_filter[0].prot, 'tcp') self.assertEqual(res.protocol_filter[0].sFromPort, 45) self.assertEqual(res.protocol_filter[0].sToPort, 49) self.assertEqual(res.protocol_filter[0].tcpRules, 'syn') res = build_flow_spec('sport=45 tcpRules=syn') self.assertEqual(res.tenant_name, '*') self.assertEqual(res.context_name, '*') self.assertEqual(res.sip[0], IpAddress('0/0')) self.assertEqual(res.dip[0], IpAddress('0/0')) self.assertEqual(res.protocol_filter[0].arpOpc, 'any') self.assertEqual(res.protocol_filter[0].etherT, 'ip') self.assertEqual(res.protocol_filter[0].prot, 'tcp') self.assertEqual(res.protocol_filter[0].sFromPort, 45) self.assertEqual(res.protocol_filter[0].sToPort, 45) self.assertEqual(res.protocol_filter[0].tcpRules, 'syn') res = build_flow_spec('etherT=arp') self.assertEqual(res.tenant_name, '*') self.assertEqual(res.context_name, '*') self.assertEqual(res.sip[0], IpAddress('0/0')) self.assertEqual(res.dip[0], IpAddress('0/0')) self.assertEqual(res.protocol_filter[0].arpOpc, 'any') self.assertEqual(res.protocol_filter[0].etherT, 'arp') self.assertEqual(res.protocol_filter[0].prot, 'any') self.assertEqual(res.protocol_filter[0].sFromPort, 'any') self.assertEqual(res.protocol_filter[0].sToPort, 'any') self.assertEqual(res.protocol_filter[0].tcpRules, 'any')
def test_infer_multiple_filters(self): res = build_flow_spec('dport=80') self.assertEqual(len(res.protocol_filter), 2) exp = [res.protocol_filter[0].prot, res.protocol_filter[1].prot] self.assertTrue('tcp' in exp) self.assertTrue('udp' in exp) self.assertEqual(res.protocol_filter[0].etherT, 'ip') self.assertEqual(res.protocol_filter[1].etherT, 'ip') res = build_flow_spec('sport=80') self.assertEqual(len(res.protocol_filter), 2) exp = [res.protocol_filter[0].prot, res.protocol_filter[1].prot] self.assertTrue('tcp' in exp) self.assertTrue('udp' in exp) self.assertEqual(res.protocol_filter[0].etherT, 'ip') self.assertEqual(res.protocol_filter[1].etherT, 'ip')