public void testCreatePortForwardingRule() throws Exception { if (networksDisabled) return; while (portForwardingRule == null) { ip = reuseOrAssociate.apply(network); try { AsyncCreateResponse job = client.getFirewallApi() .createPortForwardingRuleForVirtualMachine(ip.getId(), PortForwardingRule.Protocol.TCP, 22, vm.getId(), 22); assertTrue(jobComplete.apply(job.getJobId())); portForwardingRule = client.getFirewallApi().getPortForwardingRule(job.getId()); } catch (IllegalStateException e) { Logger.CONSOLE.error("Failed while trying to allocate ip: " + e); // very likely an ip conflict, so retry; } } assertEquals(portForwardingRule.getIPAddressId(), ip.getId()); assertEquals(portForwardingRule.getVirtualMachineId(), vm.getId()); assertEquals(portForwardingRule.getPublicPort(), 22); assertEquals(portForwardingRule.getProtocol(), PortForwardingRule.Protocol.TCP); checkPortForwardingRule(portForwardingRule); checkSSH(HostAndPort.fromParts(ip.getIPAddress(), 22)); }
protected void checkPortForwardingRule(PortForwardingRule rule) { assertEquals(rule, client.getFirewallApi().getPortForwardingRule(rule.getId())); assert rule.getId() != null : rule; assert rule.getIPAddress() != null : rule; assert rule.getIPAddressId() != null : rule; assert rule.getPrivatePort() > 0 : rule; assert rule.getProtocol() != null : rule; assert rule.getPublicPort() > 0 : rule; assert rule.getState() != null : rule; assert rule.getVirtualMachineId() != null : rule; assert rule.getVirtualMachineName() != null : rule; } }
public void testGetPortForwardingRuleWhenResponseIs404() { FirewallApi client = requestSendsResponse( HttpRequest.builder() .method("GET") .endpoint("http://localhost:8080/client/api").addQueryParam("response", "json") .addQueryParam("command", "listPortForwardingRules") .addQueryParam("listAll", "true") .addQueryParam("id", "4") .addQueryParam("apiKey", "identity") .addQueryParam("signature", "4blbBVn2+ZfF8HwoglbmtYoDAjs=") .addHeader("Accept", "application/json") .build(), HttpResponse.builder() .statusCode(404) .build()); assertNull(client.getPortForwardingRule("4")); }
public void testGetPortForwardingRuleWhenResponseIs2xx() { FirewallApi client = requestSendsResponse( HttpRequest.builder() .method("GET") .endpoint("http://localhost:8080/client/api").addQueryParam("response", "json") .addQueryParam("command", "listPortForwardingRules") .addQueryParam("listAll", "true") .addQueryParam("id", "15") .addQueryParam("apiKey", "identity") .addQueryParam("signature", "JL63p6cJzbb9vaffeV4u60IGlWE=") .addHeader("Accept", "application/json") .build(), HttpResponse.builder() .statusCode(200) .payload(payloadFromResource("/getportforwardingrulesresponse.json")) .build()); Set<String> cidrs = ImmutableSet.of("0.0.0.0/1", "128.0.0.0/1"); assertEquals(client.getPortForwardingRule("15"), PortForwardingRule.builder().id("15").privatePort(22).protocol(PortForwardingRule.Protocol.TCP) .publicPort(2022).virtualMachineId("3").virtualMachineName("i-3-3-VM").IPAddressId("3") .IPAddress("72.52.126.32").state(PortForwardingRule.State.ACTIVE) .CIDRs(cidrs).tags(Tag.builder().account("1").domain("ROOT").domainId("1").key("some-tag").resourceId("15") .resourceType(Tag.ResourceType.PORT_FORWARDING_RULE).value("some-value").build()).build()); }