@@ -2569,7 +2569,7 @@ func TestEnsureNodeAccess(t *testing.T) {
25692569
25702570 assert .NoError (t , err )
25712571
2572- // Test 2 - Test When policy doesn't exists
2572+ // Test 2 - Test When policy doesn't exist
25732573
25742574 mockAPI = mockapi .NewMockOntapAPI (mockCtrl )
25752575 mockRestClient := newMockRestClient (t )
@@ -2603,6 +2603,210 @@ func TestEnsureNodeAccess(t *testing.T) {
26032603 assert .Error (t , err )
26042604}
26052605
2606+ func TestRemoveExportPolicyRules_Success (t * testing.T ) {
2607+ ctx := context .TODO ()
2608+ mockAPI := newMockOntapAPI (t )
2609+ exportPolicy := "testPolicy"
2610+ publishInfo := & tridentmodels.VolumePublishInfo {HostIP : []string {"1.1.1.1" , "1.1.1.2" }}
2611+
2612+ mockAPI .EXPECT ().ExportRuleList (ctx , exportPolicy ).Return (map [string ]int {"1.1.1.1" : 1 , "1.1.1.2" : 2 }, nil )
2613+ mockAPI .EXPECT ().ExportRuleDestroy (ctx , exportPolicy , 1 ).Return (nil )
2614+ mockAPI .EXPECT ().ExportRuleDestroy (ctx , exportPolicy , 2 ).Return (nil )
2615+
2616+ err := removeExportPolicyRules (ctx , exportPolicy , publishInfo , mockAPI )
2617+ assert .NoError (t , err )
2618+ }
2619+
2620+ func TestRemoveExportPolicyRules_ErrorInList (t * testing.T ) {
2621+ ctx := context .TODO ()
2622+ mockAPI := newMockOntapAPI (t )
2623+ exportPolicy := "testPolicy"
2624+ publishInfo := & tridentmodels.VolumePublishInfo {HostIP : []string {"1.1.1.1" }}
2625+ fakeErr := errors .New ("fake error" )
2626+
2627+ mockAPI .EXPECT ().ExportRuleList (ctx , exportPolicy ).Return (nil , fakeErr )
2628+ mockAPI .EXPECT ().ExportRuleDestroy (ctx , exportPolicy , gomock .Any ()).Times (0 )
2629+
2630+ err := removeExportPolicyRules (ctx , exportPolicy , publishInfo , mockAPI )
2631+ assert .Error (t , err )
2632+ assert .Equal (t , fakeErr , err )
2633+ }
2634+
2635+ func TestRemoveExportPolicyRules_ErrorInFirstDestroy (t * testing.T ) {
2636+ ctx := context .TODO ()
2637+ mockAPI := newMockOntapAPI (t )
2638+ exportPolicy := "testPolicy"
2639+ publishInfo := & tridentmodels.VolumePublishInfo {HostIP : []string {"1.1.1.1" , "2.2.2.2" }}
2640+ fakeErr := errors .New ("fake destroy error" )
2641+
2642+ mockAPI .EXPECT ().ExportRuleList (ctx , exportPolicy ).Return (map [string ]int {"1.1.1.1" : 1 , "2.2.2.2" : 2 }, nil )
2643+ mockAPI .EXPECT ().ExportRuleDestroy (ctx , exportPolicy , 1 ).Return (fakeErr )
2644+ mockAPI .EXPECT ().ExportRuleDestroy (ctx , exportPolicy , 2 ).Return (nil )
2645+
2646+ err := removeExportPolicyRules (ctx , exportPolicy , publishInfo , mockAPI )
2647+ assert .NoError (t , err )
2648+ }
2649+
2650+ func TestRemoveExportPolicyRules_NoMatchingRules (t * testing.T ) {
2651+ ctx := context .TODO ()
2652+ mockAPI := newMockOntapAPI (t )
2653+ exportPolicy := "testPolicy"
2654+ publishInfo := & tridentmodels.VolumePublishInfo {HostIP : []string {"1.1.1.1" }}
2655+
2656+ mockAPI .EXPECT ().ExportRuleList (ctx , exportPolicy ).Return (map [string ]int {"2.2.2.2" : 1 }, nil )
2657+ mockAPI .EXPECT ().ExportRuleDestroy (ctx , exportPolicy , gomock .Any ()).Times (0 )
2658+
2659+ err := removeExportPolicyRules (ctx , exportPolicy , publishInfo , mockAPI )
2660+ assert .NoError (t , err )
2661+ }
2662+
2663+ func TestRemoveExportPolicyRules_AllIPsMatchInZapiRule (t * testing.T ) {
2664+ ctx := context .TODO ()
2665+ mockAPI := newMockOntapAPI (t )
2666+ exportPolicy := "testPolicy"
2667+ publishInfo := & tridentmodels.VolumePublishInfo {HostIP : []string {"1.1.1.2" , "1.1.1.1" }}
2668+
2669+ mockAPI .EXPECT ().ExportRuleList (ctx , exportPolicy ).Return (map [string ]int {"1.1.1.1, 1.1.1.2" : 1 }, nil )
2670+ mockAPI .EXPECT ().ExportRuleDestroy (ctx , exportPolicy , 1 ).Return (nil )
2671+
2672+ err := removeExportPolicyRules (ctx , exportPolicy , publishInfo , mockAPI )
2673+ assert .NoError (t , err )
2674+ }
2675+
2676+ func TestRemoveExportPolicyRules_DuplicateIPsMatchInZapiRule (t * testing.T ) {
2677+ ctx := context .TODO ()
2678+ mockAPI := newMockOntapAPI (t )
2679+ exportPolicy := "testPolicy"
2680+ publishInfo := & tridentmodels.VolumePublishInfo {HostIP : []string {"1.1.1.1" , "1.1.1.2" }}
2681+
2682+ mockAPI .EXPECT ().ExportRuleList (ctx , exportPolicy ).
2683+ Return (map [string ]int {"1.1.1.1, 1.1.1.2" : 1 , "1.1.1.2, 1.1.1.1" : 2 }, nil )
2684+ mockAPI .EXPECT ().ExportRuleDestroy (ctx , exportPolicy , 1 ).Return (nil ).Times (1 )
2685+ mockAPI .EXPECT ().ExportRuleDestroy (ctx , exportPolicy , 2 ).Return (nil ).Times (1 )
2686+
2687+ err := removeExportPolicyRules (ctx , exportPolicy , publishInfo , mockAPI )
2688+ assert .NoError (t , err )
2689+ }
2690+
2691+ func TestRemoveExportPolicyRules_OneIPMatchInZapiRule (t * testing.T ) {
2692+ ctx := context .TODO ()
2693+ mockAPI := newMockOntapAPI (t )
2694+ exportPolicy := "testPolicy"
2695+ publishInfo := & tridentmodels.VolumePublishInfo {HostIP : []string {"1.1.1.2" }}
2696+
2697+ mockAPI .EXPECT ().ExportRuleList (ctx , exportPolicy ).Return (map [string ]int {"1.1.1.1, 1.1.1.2" : 1 }, nil )
2698+ mockAPI .EXPECT ().ExportRuleDestroy (ctx , exportPolicy , gomock .Any ()).Times (0 )
2699+
2700+ err := removeExportPolicyRules (ctx , exportPolicy , publishInfo , mockAPI )
2701+ assert .NoError (t , err )
2702+ }
2703+
2704+ func TestRemoveExportPolicyRules_NoIPMatchInZapiRule (t * testing.T ) {
2705+ ctx := context .TODO ()
2706+ mockAPI := newMockOntapAPI (t )
2707+ exportPolicy := "testPolicy"
2708+ publishInfo := & tridentmodels.VolumePublishInfo {HostIP : []string {"2.2.2.2" , "2.2.2.3" }}
2709+
2710+ mockAPI .EXPECT ().ExportRuleList (ctx , exportPolicy ).Return (map [string ]int {"1.1.1.1, 1.1.1.2" : 1 }, nil )
2711+ mockAPI .EXPECT ().ExportRuleDestroy (ctx , exportPolicy , gomock .Any ()).Times (0 )
2712+
2713+ err := removeExportPolicyRules (ctx , exportPolicy , publishInfo , mockAPI )
2714+ assert .NoError (t , err )
2715+ }
2716+
2717+ func TestRemoveExportPolicyRules_EmptyHostIPList (t * testing.T ) {
2718+ ctx := context .TODO ()
2719+ mockAPI := newMockOntapAPI (t )
2720+ exportPolicy := "testPolicy"
2721+ publishInfo := & tridentmodels.VolumePublishInfo {HostIP : []string {}}
2722+
2723+ mockAPI .EXPECT ().ExportRuleList (ctx , exportPolicy ).Return (map [string ]int {"1.1.1.1" : 1 }, nil )
2724+ mockAPI .EXPECT ().ExportRuleDestroy (ctx , exportPolicy , gomock .Any ()).Times (0 )
2725+
2726+ err := removeExportPolicyRules (ctx , exportPolicy , publishInfo , mockAPI )
2727+ assert .NoError (t , err )
2728+ }
2729+
2730+ func TestRemoveExportPolicyRules_EmptyExportRuleList (t * testing.T ) {
2731+ ctx := context .TODO ()
2732+ mockAPI := newMockOntapAPI (t )
2733+ exportPolicy := "testPolicy"
2734+ publishInfo := & tridentmodels.VolumePublishInfo {HostIP : []string {"1.1.1.1" }}
2735+
2736+ mockAPI .EXPECT ().ExportRuleList (ctx , exportPolicy ).Return (map [string ]int {}, nil )
2737+ mockAPI .EXPECT ().ExportRuleDestroy (ctx , exportPolicy , gomock .Any ()).Times (0 )
2738+
2739+ err := removeExportPolicyRules (ctx , exportPolicy , publishInfo , mockAPI )
2740+ assert .NoError (t , err )
2741+ }
2742+
2743+ func TestRemoveExportPolicyRules_InvalidIPFormat (t * testing.T ) {
2744+ ctx := context .TODO ()
2745+ mockAPI := newMockOntapAPI (t )
2746+ exportPolicy := "testPolicy"
2747+ publishInfo := & tridentmodels.VolumePublishInfo {HostIP : []string {"invalidIP" }}
2748+
2749+ mockAPI .EXPECT ().ExportRuleList (ctx , exportPolicy ).Return (map [string ]int {"1.1.1.1" : 1 }, nil )
2750+ mockAPI .EXPECT ().ExportRuleDestroy (ctx , exportPolicy , gomock .Any ()).Times (0 )
2751+
2752+ err := removeExportPolicyRules (ctx , exportPolicy , publishInfo , mockAPI )
2753+ assert .NoError (t , err )
2754+ }
2755+
2756+ func TestRemoveExportPolicyRules_MixedValidAndInvalidIPs (t * testing.T ) {
2757+ ctx := context .TODO ()
2758+ mockAPI := newMockOntapAPI (t )
2759+ exportPolicy := "testPolicy"
2760+ publishInfo := & tridentmodels.VolumePublishInfo {HostIP : []string {"1.1.1.1" , "invalidIP" }}
2761+
2762+ mockAPI .EXPECT ().ExportRuleList (ctx , exportPolicy ).Return (map [string ]int {"1.1.1.1" : 1 }, nil )
2763+ mockAPI .EXPECT ().ExportRuleDestroy (ctx , exportPolicy , 1 ).Return (nil )
2764+
2765+ err := removeExportPolicyRules (ctx , exportPolicy , publishInfo , mockAPI )
2766+ assert .NoError (t , err )
2767+ }
2768+
2769+ func TestRemoveExportPolicyRules_IPsWithSpaces (t * testing.T ) {
2770+ ctx := context .TODO ()
2771+ mockAPI := newMockOntapAPI (t )
2772+ exportPolicy := "testPolicy"
2773+ publishInfo := & tridentmodels.VolumePublishInfo {HostIP : []string {" 1.1.1.1 " , " 1.1.1.2 " }}
2774+
2775+ mockAPI .EXPECT ().ExportRuleList (ctx , exportPolicy ).Return (map [string ]int {"1.1.1.1" : 1 , "1.1.1.2" : 2 }, nil )
2776+ mockAPI .EXPECT ().ExportRuleDestroy (ctx , exportPolicy , 1 ).Return (nil )
2777+ mockAPI .EXPECT ().ExportRuleDestroy (ctx , exportPolicy , 2 ).Return (nil )
2778+
2779+ err := removeExportPolicyRules (ctx , exportPolicy , publishInfo , mockAPI )
2780+ assert .NoError (t , err )
2781+ }
2782+
2783+ func TestRemoveExportPolicyRules_IPsWithMixedFormats (t * testing.T ) {
2784+ ctx := context .TODO ()
2785+ mockAPI := newMockOntapAPI (t )
2786+ exportPolicy := "testPolicy"
2787+ publishInfo := & tridentmodels.VolumePublishInfo {HostIP : []string {"1.1.1.1" , "2001:db8::1" }}
2788+
2789+ mockAPI .EXPECT ().ExportRuleList (ctx , exportPolicy ).Return (map [string ]int {"1.1.1.1" : 1 , "2001:db8::1" : 2 }, nil )
2790+ mockAPI .EXPECT ().ExportRuleDestroy (ctx , exportPolicy , 1 ).Return (nil )
2791+ mockAPI .EXPECT ().ExportRuleDestroy (ctx , exportPolicy , 2 ).Return (nil )
2792+
2793+ err := removeExportPolicyRules (ctx , exportPolicy , publishInfo , mockAPI )
2794+ assert .NoError (t , err )
2795+ }
2796+
2797+ func TestRemoveExportPolicyRules_IPsMatchInMixedFormats (t * testing.T ) {
2798+ ctx := context .TODO ()
2799+ mockAPI := newMockOntapAPI (t )
2800+ exportPolicy := "testPolicy"
2801+ publishInfo := & tridentmodels.VolumePublishInfo {HostIP : []string {"1.1.1.1" }}
2802+
2803+ mockAPI .EXPECT ().ExportRuleList (ctx , exportPolicy ).Return (map [string ]int {"::ffff:1.1.1.1" : 1 }, nil )
2804+ mockAPI .EXPECT ().ExportRuleDestroy (ctx , exportPolicy , gomock .Any ()).Times (0 )
2805+
2806+ err := removeExportPolicyRules (ctx , exportPolicy , publishInfo , mockAPI )
2807+ assert .NoError (t , err )
2808+ }
2809+
26062810func TestDeleteExportPolicy (t * testing.T ) {
26072811 // Test-1: Positive flow
26082812
0 commit comments