@@ -2368,6 +2368,121 @@ func TestAllowBackendToFrontendPort8000(t *testing.T) {
23682368 }
23692369}
23702370
2371+ func TestAllowBackendToFrontendWithMissingPort (t * testing.T ) {
2372+ allowBackendToFrontendMissingPortPolicy , err := readPolicyYaml ("testpolicies/allow-backend-to-frontend-with-missing-port.yaml" )
2373+ if err != nil {
2374+ t .Fatal (err )
2375+ }
2376+
2377+ sets , _ , lists , _ , _ , iptEntries := translatePolicy (allowBackendToFrontendMissingPortPolicy )
2378+
2379+ expectedSets := []string {
2380+ "app:frontend" ,
2381+ "ns-testnamespace" ,
2382+ "app:backend" ,
2383+ }
2384+ if ! reflect .DeepEqual (sets , expectedSets ) {
2385+ t .Errorf ("translatedPolicy failed @ ALLOW-app:backend-TO-app:frontend-port-8000-policy sets comparison" )
2386+ t .Errorf ("sets: %v" , sets )
2387+ t .Errorf ("expectedSets: %v" , expectedSets )
2388+ }
2389+
2390+ expectedLists := []string {}
2391+ if ! reflect .DeepEqual (lists , expectedLists ) {
2392+ t .Errorf ("translatedPolicy failed @ ALLOW-app:backend-TO-app:frontend-port-8000-policy lists comparison" )
2393+ t .Errorf ("lists: %v" , lists )
2394+ t .Errorf ("expectedLists: %v" , expectedLists )
2395+ }
2396+
2397+ expectedIptEntries := []* iptm.IptEntry {}
2398+ nonKubeSystemEntries := []* iptm.IptEntry {
2399+ & iptm.IptEntry {
2400+ Chain : util .IptablesAzureIngressPortChain ,
2401+ Specs : []string {
2402+ util .IptablesModuleFlag ,
2403+ util .IptablesSetModuleFlag ,
2404+ util .IptablesMatchSetFlag ,
2405+ util .GetHashedName ("ns-testnamespace" ),
2406+ util .IptablesDstFlag ,
2407+ util .IptablesModuleFlag ,
2408+ util .IptablesSetModuleFlag ,
2409+ util .IptablesMatchSetFlag ,
2410+ util .GetHashedName ("app:frontend" ),
2411+ util .IptablesDstFlag ,
2412+ util .IptablesModuleFlag ,
2413+ util .IptablesSetModuleFlag ,
2414+ util .IptablesMatchSetFlag ,
2415+ util .GetHashedName ("ns-testnamespace" ),
2416+ util .IptablesSrcFlag ,
2417+ util .IptablesModuleFlag ,
2418+ util .IptablesSetModuleFlag ,
2419+ util .IptablesMatchSetFlag ,
2420+ util .GetHashedName ("app:backend" ),
2421+ util .IptablesSrcFlag ,
2422+ util .IptablesJumpFlag ,
2423+ util .IptablesAccept ,
2424+ util .IptablesModuleFlag ,
2425+ util .IptablesCommentModuleFlag ,
2426+ util .IptablesCommentFlag ,
2427+ "ALLOW-app:backend-IN-ns-testnamespace-AND--TO-app:frontend-IN-ns-testnamespace" ,
2428+ },
2429+ },
2430+ & iptm.IptEntry {
2431+ Chain : util .IptablesAzureIngressPortChain ,
2432+ IsJumpEntry : true ,
2433+ Specs : []string {
2434+ util .IptablesModuleFlag ,
2435+ util .IptablesSetModuleFlag ,
2436+ util .IptablesMatchSetFlag ,
2437+ util .GetHashedName ("ns-testnamespace" ),
2438+ util .IptablesDstFlag ,
2439+ util .IptablesModuleFlag ,
2440+ util .IptablesSetModuleFlag ,
2441+ util .IptablesMatchSetFlag ,
2442+ util .GetHashedName ("app:frontend" ),
2443+ util .IptablesDstFlag ,
2444+ util .IptablesJumpFlag ,
2445+ util .IptablesAzureTargetSetsChain ,
2446+ util .IptablesModuleFlag ,
2447+ util .IptablesCommentModuleFlag ,
2448+ util .IptablesCommentFlag ,
2449+ "ALLOW-ALL-TO-app:frontend-IN-ns-testnamespace-TO-JUMP-TO-" + util .IptablesAzureTargetSetsChain ,
2450+ },
2451+ },
2452+ & iptm.IptEntry {
2453+ Chain : util .IptablesAzureTargetSetsChain ,
2454+ Specs : []string {
2455+ util .IptablesModuleFlag ,
2456+ util .IptablesSetModuleFlag ,
2457+ util .IptablesMatchSetFlag ,
2458+ util .GetHashedName ("ns-testnamespace" ),
2459+ util .IptablesDstFlag ,
2460+ util .IptablesModuleFlag ,
2461+ util .IptablesSetModuleFlag ,
2462+ util .IptablesMatchSetFlag ,
2463+ util .GetHashedName ("app:frontend" ),
2464+ util .IptablesDstFlag ,
2465+ util .IptablesJumpFlag ,
2466+ util .IptablesDrop ,
2467+ util .IptablesModuleFlag ,
2468+ util .IptablesCommentModuleFlag ,
2469+ util .IptablesCommentFlag ,
2470+ "DROP-ALL-TO-app:frontend-IN-ns-testnamespace" ,
2471+ },
2472+ },
2473+ }
2474+
2475+ expectedIptEntries = append (expectedIptEntries , nonKubeSystemEntries ... )
2476+ expectedIptEntries = append (expectedIptEntries , getDefaultDropEntries ("dangerous" , allowBackendToFrontendMissingPortPolicy .Spec .PodSelector , false , false )... )
2477+ if ! reflect .DeepEqual (iptEntries , expectedIptEntries ) {
2478+ t .Errorf ("translatedPolicy failed @ ALLOW-ALL-TO-app:backdoor-policy policy comparison" )
2479+ marshalledIptEntries , _ := json .Marshal (iptEntries )
2480+ marshalledExpectedIptEntries , _ := json .Marshal (expectedIptEntries )
2481+ t .Errorf ("iptEntries: %s" , marshalledIptEntries )
2482+ t .Errorf ("expectedIptEntries: %s" , marshalledExpectedIptEntries )
2483+ }
2484+ }
2485+
23712486func TestAllowMultipleLabelsToMultipleLabels (t * testing.T ) {
23722487 allowCniOrCnsToK8sPolicy , err := readPolicyYaml ("testpolicies/allow-multiple-labels-to-multiple-labels.yaml" )
23732488 if err != nil {
0 commit comments