mirror of https://github.com/apache/jclouds.git
adding more tests for security group async client including for security group rules, and fixing a bug found in the delete methods
This commit is contained in:
parent
40395d1723
commit
39180e0cc9
|
@ -103,7 +103,6 @@ public interface SecurityGroupAsyncClient {
|
||||||
@Path("/os-security-groups/{id}")
|
@Path("/os-security-groups/{id}")
|
||||||
@ExceptionParser(ReturnNullOnNotFoundOr404.class)
|
@ExceptionParser(ReturnNullOnNotFoundOr404.class)
|
||||||
@Consumes
|
@Consumes
|
||||||
@Produces(MediaType.APPLICATION_JSON)
|
|
||||||
ListenableFuture<Boolean> deleteSecurityGroup(@PathParam("id") String id);
|
ListenableFuture<Boolean> deleteSecurityGroup(@PathParam("id") String id);
|
||||||
|
|
||||||
|
|
||||||
|
@ -135,7 +134,6 @@ public interface SecurityGroupAsyncClient {
|
||||||
@Path("/os-security-group-rules/{security_group_rule_ID}")
|
@Path("/os-security-group-rules/{security_group_rule_ID}")
|
||||||
@ExceptionParser(ReturnFalseOnNotFoundOr404.class)
|
@ExceptionParser(ReturnFalseOnNotFoundOr404.class)
|
||||||
@Consumes
|
@Consumes
|
||||||
@Produces(MediaType.APPLICATION_JSON)
|
|
||||||
ListenableFuture<Boolean> deleteSecurityGroupRule(@PathParam("security_group_rule_ID") String security_group_rule_ID);
|
ListenableFuture<Boolean> deleteSecurityGroupRule(@PathParam("security_group_rule_ID") String security_group_rule_ID);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,9 +22,13 @@ import static org.testng.Assert.assertEquals;
|
||||||
|
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableMap;
|
||||||
|
import com.google.common.collect.Maps;
|
||||||
import org.jclouds.http.HttpRequest;
|
import org.jclouds.http.HttpRequest;
|
||||||
import org.jclouds.http.HttpResponse;
|
import org.jclouds.http.HttpResponse;
|
||||||
import org.jclouds.openstack.nova.v1_1.NovaClient;
|
import org.jclouds.openstack.nova.v1_1.NovaClient;
|
||||||
|
import org.jclouds.openstack.nova.v1_1.domain.SecurityGroup;
|
||||||
|
import org.jclouds.openstack.nova.v1_1.domain.SecurityGroupRule;
|
||||||
import org.jclouds.openstack.nova.v1_1.internal.BaseNovaClientExpectTest;
|
import org.jclouds.openstack.nova.v1_1.internal.BaseNovaClientExpectTest;
|
||||||
import org.jclouds.openstack.nova.v1_1.parse.ParseSecurityGroupListTest;
|
import org.jclouds.openstack.nova.v1_1.parse.ParseSecurityGroupListTest;
|
||||||
import org.jclouds.openstack.nova.v1_1.parse.ParseSecurityGroupTest;
|
import org.jclouds.openstack.nova.v1_1.parse.ParseSecurityGroupTest;
|
||||||
|
@ -137,4 +141,125 @@ public class SecurityGroupClientExpectTest extends BaseNovaClientExpectTest {
|
||||||
assertNull(clientWhenNoSecurityGroupsExist.getSecurityGroupClientForRegion("North").getSecurityGroup("0"));
|
assertNull(clientWhenNoSecurityGroupsExist.getSecurityGroupClientForRegion("North").getSecurityGroup("0"));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testCreateSecurityGroupWhenResponseIs2xx() throws Exception {
|
||||||
|
HttpRequest createSecurityGroup = HttpRequest
|
||||||
|
.builder()
|
||||||
|
.method("POST")
|
||||||
|
.endpoint(
|
||||||
|
URI.create("https://compute.north.host/v1.1/3456/os-security-groups"))
|
||||||
|
.headers(
|
||||||
|
ImmutableMultimap.<String, String> builder()
|
||||||
|
.put("Accept", "application/json")
|
||||||
|
.put("X-Auth-Token", authToken).build())
|
||||||
|
.payload(payloadFromStringWithContentType("{\"security_group\":{\"name\":\"name\",\"description\":\"description\"}}",
|
||||||
|
"application/json")).build();
|
||||||
|
|
||||||
|
HttpResponse createSecurityGroupResponse = HttpResponse.builder().statusCode(200)
|
||||||
|
.payload(payloadFromResource("/securitygroup_created.json")).build();
|
||||||
|
|
||||||
|
NovaClient clientWhenSecurityGroupsExist = requestsSendResponses(
|
||||||
|
keystoneAuthWithAccessKeyAndSecretKey, responseWithKeystoneAccess,
|
||||||
|
createSecurityGroup, createSecurityGroupResponse);
|
||||||
|
|
||||||
|
assertEquals(clientWhenSecurityGroupsExist.getSecurityGroupClientForRegion("North")
|
||||||
|
.createSecurityGroup("name", "description").toString(),
|
||||||
|
createSecurityGroupExpected().toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testDeleteSecurityGroupWhenResponseIs2xx() throws Exception {
|
||||||
|
HttpRequest deleteSecurityGroup = HttpRequest
|
||||||
|
.builder()
|
||||||
|
.method("DELETE")
|
||||||
|
.endpoint(
|
||||||
|
URI.create("https://compute.north.host/v1.1/3456/os-security-groups/160"))
|
||||||
|
.headers(
|
||||||
|
ImmutableMultimap.<String, String> builder()
|
||||||
|
.put("Accept", "*/*")
|
||||||
|
.put("X-Auth-Token", authToken).build()).build();
|
||||||
|
|
||||||
|
|
||||||
|
HttpResponse deleteSecurityGroupResponse = HttpResponse.builder().statusCode(202).build();
|
||||||
|
|
||||||
|
NovaClient clientWhenServersExist = requestsSendResponses(
|
||||||
|
keystoneAuthWithAccessKeyAndSecretKey, responseWithKeystoneAccess,
|
||||||
|
deleteSecurityGroup, deleteSecurityGroupResponse);
|
||||||
|
|
||||||
|
assertTrue(clientWhenServersExist.getSecurityGroupClientForRegion("North").deleteSecurityGroup("160"));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testCreateSecurityGroupRuleWhenResponseIs2xx() throws Exception {
|
||||||
|
HttpRequest createSecurityGroupRule = HttpRequest
|
||||||
|
.builder()
|
||||||
|
.method("POST")
|
||||||
|
.endpoint(
|
||||||
|
URI.create("https://compute.north.host/v1.1/3456/os-security-group-rules"))
|
||||||
|
.headers(
|
||||||
|
ImmutableMultimap.<String, String>builder()
|
||||||
|
.put("Accept", "application/json")
|
||||||
|
.put("X-Auth-Token", authToken).build())
|
||||||
|
.payload(payloadFromStringWithContentType("{\"security_group_rule\":{\"ip_protocol\":\"tcp\",\"from_port\":\"80\",\"to_port\":\"8080\",\"cidr\":\"0.0.0.0/0\",\"group_id\":\"\",\"parent_group_id\":\"161\"}}",
|
||||||
|
"application/json")).build();
|
||||||
|
|
||||||
|
|
||||||
|
HttpResponse createSecurityGroupRuleResponse = HttpResponse.builder().statusCode(200)
|
||||||
|
.payload(payloadFromResource("/securitygrouprule_created.json")).build();
|
||||||
|
|
||||||
|
NovaClient clientWhenSecurityGroupsExist = requestsSendResponses(
|
||||||
|
keystoneAuthWithAccessKeyAndSecretKey, responseWithKeystoneAccess,
|
||||||
|
createSecurityGroupRule, createSecurityGroupRuleResponse);
|
||||||
|
|
||||||
|
assertEquals(clientWhenSecurityGroupsExist.getSecurityGroupClientForRegion("North")
|
||||||
|
.createSecurityGroupRule("tcp", "80", "8080", "0.0.0.0/0", "", "161").toString(),
|
||||||
|
createSecurityGroupRuleExpected().toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testDeleteSecurityGroupRuleWhenResponseIs2xx() throws Exception {
|
||||||
|
HttpRequest deleteSecurityGroupRule = HttpRequest
|
||||||
|
.builder()
|
||||||
|
.method("DELETE")
|
||||||
|
.endpoint(
|
||||||
|
URI.create("https://compute.north.host/v1.1/3456/os-security-group-rules/161"))
|
||||||
|
.headers(
|
||||||
|
ImmutableMultimap.<String, String> builder()
|
||||||
|
.put("Accept", "*/*")
|
||||||
|
.put("X-Auth-Token", authToken).build()).build();
|
||||||
|
|
||||||
|
|
||||||
|
HttpResponse deleteSecurityGroupRuleResponse = HttpResponse.builder().statusCode(202).build();
|
||||||
|
|
||||||
|
NovaClient clientWhenSecurityGroupsExist = requestsSendResponses(
|
||||||
|
keystoneAuthWithAccessKeyAndSecretKey, responseWithKeystoneAccess,
|
||||||
|
deleteSecurityGroupRule, deleteSecurityGroupRuleResponse);
|
||||||
|
|
||||||
|
assertTrue(clientWhenSecurityGroupsExist.getSecurityGroupClientForRegion("North")
|
||||||
|
.deleteSecurityGroupRule("161"));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private SecurityGroup createSecurityGroupExpected() {
|
||||||
|
return SecurityGroup
|
||||||
|
.builder()
|
||||||
|
.description("description")
|
||||||
|
.id("160")
|
||||||
|
.name("name")
|
||||||
|
.rules(ImmutableSet.<SecurityGroupRule> of())
|
||||||
|
.tenantId("dev_16767499955063")
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
private SecurityGroupRule createSecurityGroupRuleExpected() {
|
||||||
|
return SecurityGroupRule
|
||||||
|
.builder()
|
||||||
|
.fromPort(80)
|
||||||
|
.group(ImmutableMap.<String, String> of())
|
||||||
|
.id("218")
|
||||||
|
.ipProtocol(SecurityGroupRule.IpProtocol.TCP)
|
||||||
|
.ipRange(ImmutableMap.of("cidr","0.0.0.0/0"))
|
||||||
|
.parentGroupId("161")
|
||||||
|
.toPort(8080)
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
{
|
||||||
|
"security_group": {
|
||||||
|
"rules": [ ],
|
||||||
|
"tenant_id": "dev_16767499955063",
|
||||||
|
"id": 160,
|
||||||
|
"name": "name",
|
||||||
|
"description": "description"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,12 @@
|
||||||
|
{
|
||||||
|
"security_group_rule": {
|
||||||
|
"from_port": 80,
|
||||||
|
"group": {},
|
||||||
|
"ip_protocol": "tcp",
|
||||||
|
"to_port": 8080,
|
||||||
|
"parent_group_id": 161,
|
||||||
|
"ip_range": {
|
||||||
|
"cidr": "0.0.0.0/0"
|
||||||
|
},
|
||||||
|
"id": 218 }
|
||||||
|
}
|
Loading…
Reference in New Issue