1// +build integration 2 3package hcn 4 5import ( 6 "encoding/json" 7 "fmt" 8 "testing" 9) 10 11func TestCreateDeleteEndpoint(t *testing.T) { 12 network, err := HcnCreateTestNATNetwork() 13 if err != nil { 14 t.Fatal(err) 15 } 16 Endpoint, err := HcnCreateTestEndpoint(network) 17 if err != nil { 18 t.Fatal(err) 19 } 20 jsonString, err := json.Marshal(Endpoint) 21 if err != nil { 22 t.Fatal(err) 23 } 24 fmt.Printf("Endpoint JSON:\n%s \n", jsonString) 25 26 err = Endpoint.Delete() 27 if err != nil { 28 t.Fatal(err) 29 } 30 err = network.Delete() 31 if err != nil { 32 t.Fatal(err) 33 } 34} 35 36func TestGetEndpointById(t *testing.T) { 37 network, err := HcnCreateTestNATNetwork() 38 if err != nil { 39 t.Fatal(err) 40 } 41 Endpoint, err := HcnCreateTestEndpoint(network) 42 if err != nil { 43 t.Fatal(err) 44 } 45 46 foundEndpoint, err := GetEndpointByID(Endpoint.Id) 47 if err != nil { 48 t.Fatal(err) 49 } 50 if foundEndpoint == nil { 51 t.Fatal("No Endpoint found") 52 } 53 54 err = foundEndpoint.Delete() 55 if err != nil { 56 t.Fatal(err) 57 } 58 err = network.Delete() 59 if err != nil { 60 t.Fatal(err) 61 } 62} 63 64func TestGetEndpointByName(t *testing.T) { 65 network, err := HcnCreateTestNATNetwork() 66 if err != nil { 67 t.Fatal(err) 68 } 69 Endpoint, err := HcnCreateTestEndpoint(network) 70 if err != nil { 71 t.Fatal(err) 72 } 73 74 foundEndpoint, err := GetEndpointByName(Endpoint.Name) 75 if err != nil { 76 t.Fatal(err) 77 } 78 if foundEndpoint == nil { 79 t.Fatal("No Endpoint found") 80 } 81 82 err = foundEndpoint.Delete() 83 if err != nil { 84 t.Fatal(err) 85 } 86 err = network.Delete() 87 if err != nil { 88 t.Fatal(err) 89 } 90} 91 92func TestListEndpoints(t *testing.T) { 93 network, err := HcnCreateTestNATNetwork() 94 if err != nil { 95 t.Fatal(err) 96 } 97 Endpoint, err := HcnCreateTestEndpoint(network) 98 if err != nil { 99 t.Fatal(err) 100 } 101 102 foundEndpoints, err := ListEndpoints() 103 if err != nil { 104 t.Fatal(err) 105 } 106 if len(foundEndpoints) == 0 { 107 t.Fatal("No Endpoint found") 108 } 109 110 err = Endpoint.Delete() 111 if err != nil { 112 t.Fatal(err) 113 } 114 err = network.Delete() 115 if err != nil { 116 t.Fatal(err) 117 } 118} 119 120func TestListEndpointsOfNetwork(t *testing.T) { 121 network, err := HcnCreateTestNATNetwork() 122 if err != nil { 123 t.Fatal(err) 124 } 125 Endpoint, err := HcnCreateTestEndpoint(network) 126 if err != nil { 127 t.Fatal(err) 128 } 129 130 foundEndpoints, err := ListEndpointsOfNetwork(network.Id) 131 if err != nil { 132 t.Fatal(err) 133 } 134 if len(foundEndpoints) == 0 { 135 t.Fatal("No Endpoint found") 136 } 137 138 err = Endpoint.Delete() 139 if err != nil { 140 t.Fatal(err) 141 } 142 err = network.Delete() 143 if err != nil { 144 t.Fatal(err) 145 } 146} 147 148func TestEndpointNamespaceAttachDetach(t *testing.T) { 149 network, err := HcnCreateTestNATNetwork() 150 if err != nil { 151 t.Fatal(err) 152 } 153 endpoint, err := HcnCreateTestEndpoint(network) 154 if err != nil { 155 t.Fatal(err) 156 } 157 namespace, err := HcnCreateTestNamespace() 158 if err != nil { 159 t.Fatal(err) 160 } 161 162 err = endpoint.NamespaceAttach(namespace.Id) 163 if err != nil { 164 t.Fatal(err) 165 } 166 err = endpoint.NamespaceDetach(namespace.Id) 167 if err != nil { 168 t.Fatal(err) 169 } 170 171 err = namespace.Delete() 172 if err != nil { 173 t.Fatal(err) 174 } 175 err = endpoint.Delete() 176 if err != nil { 177 t.Fatal(err) 178 } 179 err = network.Delete() 180 if err != nil { 181 t.Fatal(err) 182 } 183} 184 185func TestAddL4WfpProxyPolicyOnEndpoint(t *testing.T) { 186 network, err := HcnCreateTestNATNetwork() 187 if err != nil { 188 t.Fatal(err) 189 } 190 defer func() { 191 err = network.Delete() 192 if err != nil { 193 t.Fatal(err) 194 } 195 }() 196 197 endpoint, err := HcnCreateTestEndpoint(network) 198 if err != nil { 199 t.Fatal(err) 200 } 201 defer func() { 202 err = endpoint.Delete() 203 if err != nil { 204 t.Fatal(err) 205 } 206 }() 207 208 request, err := HcnCreateWfpProxyPolicyRequest() 209 if err != nil { 210 t.Fatal(err) 211 } 212 213 jsonString, err := json.Marshal(*request) 214 if err != nil { 215 t.Fatal(err) 216 } 217 fmt.Printf("WFP Proxy JSON:\n%s \n", jsonString) 218 219 err = endpoint.ApplyPolicy(RequestTypeAdd, *request) 220 if err != nil { 221 t.Fatal(err) 222 } 223} 224 225func TestApplyPolicyOnEndpoint(t *testing.T) { 226 network, err := HcnCreateTestNATNetwork() 227 if err != nil { 228 t.Fatal(err) 229 } 230 Endpoint, err := HcnCreateTestEndpoint(network) 231 if err != nil { 232 t.Fatal(err) 233 } 234 endpointPolicyList, err := HcnCreateAcls() 235 if err != nil { 236 t.Fatal(err) 237 } 238 jsonString, err := json.Marshal(*endpointPolicyList) 239 if err != nil { 240 t.Fatal(err) 241 } 242 fmt.Printf("ACLS JSON:\n%s \n", jsonString) 243 err = Endpoint.ApplyPolicy(RequestTypeUpdate, *endpointPolicyList) 244 if err != nil { 245 t.Fatal(err) 246 } 247 248 foundEndpoint, err := GetEndpointByName(Endpoint.Name) 249 if err != nil { 250 t.Fatal(err) 251 } 252 if len(foundEndpoint.Policies) == 0 { 253 t.Fatal("No Endpoint Policies found") 254 } 255 256 err = Endpoint.Delete() 257 if err != nil { 258 t.Fatal(err) 259 } 260 err = network.Delete() 261 if err != nil { 262 t.Fatal(err) 263 } 264} 265 266func TestModifyEndpointSettings(t *testing.T) { 267 network, err := HcnCreateTestNATNetwork() 268 if err != nil { 269 t.Fatal(err) 270 } 271 endpoint, err := HcnCreateTestEndpoint(network) 272 if err != nil { 273 t.Fatal(err) 274 } 275 endpointPolicy, err := HcnCreateAcls() 276 if err != nil { 277 t.Fatal(err) 278 } 279 settingsJson, err := json.Marshal(endpointPolicy) 280 if err != nil { 281 t.Fatal(err) 282 } 283 284 requestMessage := &ModifyEndpointSettingRequest{ 285 ResourceType: EndpointResourceTypePolicy, 286 RequestType: RequestTypeUpdate, 287 Settings: settingsJson, 288 } 289 290 err = ModifyEndpointSettings(endpoint.Id, requestMessage) 291 if err != nil { 292 t.Fatal(err) 293 } 294 295 foundEndpoint, err := GetEndpointByName(endpoint.Name) 296 if err != nil { 297 t.Fatal(err) 298 } 299 if len(foundEndpoint.Policies) == 0 { 300 t.Fatal("No Endpoint Policies found") 301 } 302 303 err = endpoint.Delete() 304 if err != nil { 305 t.Fatal(err) 306 } 307 err = network.Delete() 308 if err != nil { 309 t.Fatal(err) 310 } 311} 312