1 /* 2 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"). 5 * You may not use this file except in compliance with the License. 6 * A copy of the License is located at 7 * 8 * http://aws.amazon.com/apache2.0 9 * 10 * or in the "license" file accompanying this file. This file is distributed 11 * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 12 * express or implied. See the License for the specific language governing 13 * permissions and limitations under the License. 14 */ 15 16 package software.amazon.awssdk.services.directory; 17 18 import static org.junit.Assert.assertNotNull; 19 20 import java.util.List; 21 import junit.framework.Assert; 22 import org.junit.Test; 23 import software.amazon.awssdk.services.directory.model.CreateDirectoryRequest; 24 import software.amazon.awssdk.services.directory.model.DeleteDirectoryRequest; 25 import software.amazon.awssdk.services.directory.model.DescribeDirectoriesRequest; 26 import software.amazon.awssdk.services.directory.model.DirectorySize; 27 import software.amazon.awssdk.services.directory.model.DirectoryVpcSettings; 28 import software.amazon.awssdk.services.directory.model.InvalidNextTokenException; 29 import software.amazon.awssdk.services.ec2.model.DescribeSubnetsRequest; 30 import software.amazon.awssdk.services.ec2.model.DescribeVpcsRequest; 31 import software.amazon.awssdk.services.ec2.model.Filter; 32 import software.amazon.awssdk.services.ec2.model.Subnet; 33 import software.amazon.awssdk.services.ec2.model.Vpc; 34 35 public class ServiceIntegrationTest extends IntegrationTestBase { 36 37 private static final String US_EAST_1A = "us-east-1a"; 38 private static final String US_EAST_1B = "us-east-1b"; 39 40 @Test testDirectories()41 public void testDirectories() { 42 43 String vpcId = getVpcId(); 44 // Creating a directory requires at least two subnets located in 45 // different availability zones 46 String subnetId_0 = getSubnetIdInVpc(vpcId, US_EAST_1A); 47 String subnetId_1 = getSubnetIdInVpc(vpcId, US_EAST_1B); 48 49 String dsId = dsClient 50 .createDirectory(CreateDirectoryRequest.builder().description("This is my directory!") 51 .name("AWS.Java.SDK.Directory").shortName("md").password("My.Awesome.Password.2015") 52 .size(DirectorySize.SMALL).vpcSettings( 53 DirectoryVpcSettings.builder().vpcId(vpcId).subnetIds(subnetId_0, subnetId_1).build()).build()) 54 .directoryId(); 55 56 dsClient.deleteDirectory(DeleteDirectoryRequest.builder().directoryId(dsId).build()); 57 } 58 getVpcId()59 private String getVpcId() { 60 List<Vpc> vpcs = ec2Client.describeVpcs(DescribeVpcsRequest.builder().build()).vpcs(); 61 if (vpcs.isEmpty()) { 62 Assert.fail("No VPC found in this account."); 63 } 64 return vpcs.get(0).vpcId(); 65 } 66 getSubnetIdInVpc(String vpcId, String az)67 private String getSubnetIdInVpc(String vpcId, String az) { 68 List<Subnet> subnets = ec2Client.describeSubnets(DescribeSubnetsRequest.builder() 69 .filters( 70 Filter.builder() 71 .name("vpc-id") 72 .values(vpcId) 73 .build(), 74 Filter.builder() 75 .name("availabilityZone") 76 .values(az) 77 .build()) 78 .build()) 79 .subnets(); 80 if (subnets.isEmpty()) { 81 Assert.fail("No Subnet found in VPC " + vpcId + " AvailabilityZone: " + az); 82 } 83 return subnets.get(0).subnetId(); 84 } 85 86 /** 87 * Tests that an exception with a member in it is serialized properly. See TT0064111680 88 */ 89 @Test describeDirectories_InvalidNextToken_ThrowsExceptionWithRequestIdPresent()90 public void describeDirectories_InvalidNextToken_ThrowsExceptionWithRequestIdPresent() { 91 try { 92 dsClient.describeDirectories(DescribeDirectoriesRequest.builder().nextToken("invalid").build()); 93 } catch (InvalidNextTokenException e) { 94 assertNotNull(e.requestId()); 95 } 96 } 97 } 98