@@ -1057,7 +1057,7 @@ func TestUnpublishNCViaCNS(t *testing.T) {
10571057 "/machine/plugins/?comp=nmagent&type=NetworkManagement/interfaces/dummyIntf/networkContainers/dummyNCURL/authenticationToke/" +
10581058 "8636c99d-7861-401f-b0d3-7e5b7dc8183c" +
10591059 "/api-version/1/method/DELETE"
1060- err = unpublishNCViaCNS ("vnet1" , "ethWebApp" , deleteNetworkContainerURL )
1060+ err = unpublishNCViaCNS ("vnet1" , "ethWebApp" , deleteNetworkContainerURL , [] byte ( `""` + " \n " ) )
10611061 if err == nil {
10621062 t .Fatal ("Expected a bad request error due to delete network url being incorrect" )
10631063 }
@@ -1068,20 +1068,72 @@ func TestUnpublishNCViaCNS(t *testing.T) {
10681068 "/machine/plugins/?comp=nmagent&NetworkManagement/interfaces/dummyIntf/networkContainers/dummyNCURL/authenticationToken/" +
10691069 "8636c99d-7861-401f-b0d3-7e5b7dc8183c8636c99d-7861-401f-b0d3-7e5b7dc8183c" +
10701070 "/api-version/1/method/DELETE"
1071- err = unpublishNCViaCNS ("vnet1" , "ethWebApp" , deleteNetworkContainerURL )
1071+ err = unpublishNCViaCNS ("vnet1" , "ethWebApp" , deleteNetworkContainerURL , [] byte ( `""` + " \n " ) )
10721072 if err == nil {
10731073 t .Fatal ("Expected a bad request error due to create network url having more characters than permitted in auth token" )
10741074 }
10751075
10761076 // now actually perform the deletion:
10771077 deleteNetworkContainerURL = "http://" + nmagentEndpoint +
10781078 "/machine/plugins/?comp=nmagent&type=NetworkManagement/interfaces/dummyIntf/networkContainers/dummyNCURL/authenticationToken/dummyT/api-version/1/method/DELETE"
1079- err = unpublishNCViaCNS ("vnet1" , "ethWebApp" , deleteNetworkContainerURL )
1079+ err = unpublishNCViaCNS ("vnet1" , "ethWebApp" , deleteNetworkContainerURL , [] byte ( `""` + " \n " ) )
10801080 if err != nil {
10811081 t .Fatal (err )
10821082 }
10831083}
10841084
1085+ func TestUnpublishViaCNSRequestBody (t * testing.T ) {
1086+ createNetworkContainerURL := "http://" + nmagentEndpoint +
1087+ "/machine/plugins/?comp=nmagent&type=NetworkManagement/interfaces/dummyIntf/networkContainers/dummyNCURL/authenticationToken/dummyT/api-version/1"
1088+ deleteNetworkContainerURL := "http://" + nmagentEndpoint +
1089+ "/machine/plugins/?comp=nmagent&type=NetworkManagement/interfaces/dummyIntf/networkContainers/dummyNCURL/authenticationToken/dummyT/api-version/1/method/DELETE"
1090+ vnet := "vnet1"
1091+ wsProxy := fakes.WireserverProxyFake {}
1092+ cleanup := setWireserverProxy (svc , & wsProxy )
1093+ defer cleanup ()
1094+
1095+ tests := []struct {
1096+ name string
1097+ ncID string
1098+ body []byte
1099+ requireError bool
1100+ }{
1101+ {
1102+ name : "Delete NC with invalid body" ,
1103+ ncID : "ncID1" ,
1104+ body : []byte (`invalid` + "\n " ),
1105+ requireError : true ,
1106+ },
1107+ {
1108+ name : "Delete NC with valid non-AZR body" ,
1109+ ncID : "ncID2" ,
1110+ body : []byte (`""` + "\n " ),
1111+ requireError : false ,
1112+ },
1113+ {
1114+ name : "Delete NC with valid AZR body" ,
1115+ ncID : "ncID3" ,
1116+ body : []byte (`{"azID":1,"azrEnabled":true}` ),
1117+ requireError : false ,
1118+ },
1119+ }
1120+
1121+ for _ , tt := range tests {
1122+ tt := tt
1123+ t .Run (tt .name , func (t * testing.T ) {
1124+ errPublish := publishNCViaCNS (vnet , tt .ncID , createNetworkContainerURL )
1125+ require .NoError (t , errPublish )
1126+ errUnpublish := unpublishNCViaCNS (vnet , tt .ncID , deleteNetworkContainerURL , tt .body )
1127+ if tt .requireError {
1128+ require .Error (t , errUnpublish )
1129+ require .Contains (t , errUnpublish .Error (), "error decoding json" )
1130+ } else {
1131+ require .NoError (t , errUnpublish )
1132+ }
1133+ })
1134+ }
1135+ }
1136+
10851137func TestUnpublishNCViaCNS401 (t * testing.T ) {
10861138 wsproxy := fakes.WireserverProxyFake {
10871139 UnpublishNCFunc : func (_ context.Context , _ cns.NetworkContainerParameters , i []byte ) (* http.Response , error ) {
@@ -1161,15 +1213,15 @@ func TestUnpublishNCViaCNS401(t *testing.T) {
11611213 }
11621214}
11631215
1164- func unpublishNCViaCNS (networkID , networkContainerID , deleteNetworkContainerURL string ) error {
1216+ func unpublishNCViaCNS (networkID , networkContainerID , deleteNetworkContainerURL string , bodyBytes [] byte ) error {
11651217 joinNetworkURL := "http://" + nmagentEndpoint + "/dummyVnetURL"
11661218
11671219 unpublishNCRequest := & cns.UnpublishNetworkContainerRequest {
11681220 NetworkID : networkID ,
11691221 NetworkContainerID : networkContainerID ,
11701222 JoinNetworkURL : joinNetworkURL ,
11711223 DeleteNetworkContainerURL : deleteNetworkContainerURL ,
1172- DeleteNetworkContainerRequestBody : [] byte ( "{}" ) ,
1224+ DeleteNetworkContainerRequestBody : bodyBytes ,
11731225 }
11741226
11751227 var body bytes.Buffer
0 commit comments