public void createPublicIPAddress() throws InterruptedException {
server.enqueue(jsonResponse("/PublicIPAddressCreate.json").setStatus("HTTP/1.1 201 Created"));
final PublicIPAddressApi ipApi = api.getPublicIPAddressApi(resourcegroup);
final Map<String, String> tags = ImmutableMap.of("testkey", "testvalue");
PublicIPAddressProperties properties = PublicIPAddressProperties.create(null, null, "Static", 4, null,
DnsSettings.create("foobar", "foobar.northeurope.cloudapp.azure.com", null));
PublicIPAddress ip = ipApi.createOrUpdate(publicIpName, location, tags, SKU.create(Basic), properties);
String path = String.format("/subscriptions/%s/resourcegroups/%s/providers/Microsoft.Network/publicIPAddresses/%s?%s", subscriptionid, resourcegroup, publicIpName, apiVersion);
String json = String.format("{ \"location\": \"%s\", \"tags\": { \"testkey\": \"testvalue\" }, \"properties\": "
+ "{ \"publicIPAllocationMethod\": \"Static\", \"idleTimeoutInMinutes\": 4, \"dnsSettings\": { "
+ "\"domainNameLabel\": \"foobar\", \"fqdn\": \"foobar.northeurope.cloudapp.azure.com\" } }, \"sku\": {\"name\": \"Basic\" } }", location);
assertSent(server, "PUT", path, json);
assertNotNull(ip);
assertEquals(ip.name(), "mypublicaddress");
assertEquals(ip.location(), "northeurope");
assertEquals(ip.id(), "/subscriptions/fakeb2f5-4710-4e93-bdf4-419edbde2178/resourceGroups/myresourcegroup/providers/Microsoft.Network/publicIPAddresses/mypublicaddress");
assertEquals(ip.tags().get("testkey"), "testvalue");
assertNotNull(ip.properties());
assertEquals(ip.properties().provisioningState(), "Updating");
assertNull(ip.properties().ipAddress());
assertEquals(ip.properties().publicIPAllocationMethod(), "Static");
assertEquals(ip.properties().idleTimeoutInMinutes().intValue(), 4);
assertNotNull(ip.properties().dnsSettings());
assertEquals(ip.properties().dnsSettings().domainNameLabel(), "foobar");
assertEquals(ip.properties().dnsSettings().fqdn(), "foobar.northeurope.cloudapp.azure.com");
assertEquals(ip.sku().name(), Basic);
}