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 package software.amazon.awssdk.codegen.lite.regions; 16 17 import static org.hamcrest.MatcherAssert.assertThat; 18 import static software.amazon.awssdk.codegen.lite.PoetMatchers.generatesTo; 19 20 import java.io.File; 21 import java.nio.file.Paths; 22 import org.junit.jupiter.api.BeforeEach; 23 import org.junit.jupiter.api.Test; 24 import software.amazon.awssdk.codegen.lite.regions.model.Partition; 25 import software.amazon.awssdk.codegen.lite.regions.model.Partitions; 26 27 public class RegionGenerationTest { 28 29 private static final String ENDPOINTS = "/software/amazon/awssdk/codegen/lite/test-endpoints.json"; 30 private static final String SERVICE_METADATA_BASE = "software.amazon.awssdk.regions.servicemetadata"; 31 private static final String REGION_METADATA_BASE = "software.amazon.awssdk.regions.regionmetadata"; 32 private static final String PARTITION_METADATA_BASE = "software.amazon.awssdk.regions.partitionmetadata"; 33 private static final String REGION_BASE = "software.amazon.awssdk.regions"; 34 35 private File endpoints; 36 private Partitions partitions; 37 38 @BeforeEach before()39 public void before() throws Exception { 40 this.endpoints = Paths.get(getClass().getResource(ENDPOINTS).toURI()).toFile(); 41 this.partitions = RegionMetadataLoader.build(endpoints); 42 } 43 44 @Test regionClass()45 public void regionClass() { 46 RegionGenerator regions = new RegionGenerator(partitions, REGION_BASE); 47 assertThat(regions, generatesTo("regions.java")); 48 } 49 50 @Test regionMetadataClass()51 public void regionMetadataClass() { 52 Partition partition = partitions.getPartitions().get(0); 53 RegionMetadataGenerator metadataGenerator = new RegionMetadataGenerator(partition, 54 "us-east-1", 55 "US East (N. Virginia)", 56 REGION_METADATA_BASE, 57 REGION_BASE); 58 59 assertThat(metadataGenerator, generatesTo("us-east-1.java")); 60 } 61 62 @Test regionMetadataProviderClass()63 public void regionMetadataProviderClass() { 64 RegionMetadataProviderGenerator providerGenerator = new RegionMetadataProviderGenerator(partitions, 65 REGION_METADATA_BASE, 66 REGION_BASE); 67 assertThat(providerGenerator, generatesTo("region-metadata-provider.java")); 68 } 69 70 @Test serviceMetadataClass()71 public void serviceMetadataClass() { 72 ServiceMetadataGenerator serviceMetadataGenerator = new ServiceMetadataGenerator(partitions, 73 "s3", 74 SERVICE_METADATA_BASE, 75 REGION_BASE); 76 77 assertThat(serviceMetadataGenerator, generatesTo("s3-service-metadata.java")); 78 } 79 80 @Test serviceWithOverriddenPartitionsMetadataClass()81 public void serviceWithOverriddenPartitionsMetadataClass() { 82 ServiceMetadataGenerator serviceMetadataGenerator = new ServiceMetadataGenerator(partitions, 83 "sts", 84 SERVICE_METADATA_BASE, 85 REGION_BASE); 86 87 assertThat(serviceMetadataGenerator, generatesTo("sts-service-metadata.java")); 88 } 89 90 @Test serviceMetadataProviderClass()91 public void serviceMetadataProviderClass() { 92 ServiceMetadataProviderGenerator serviceMetadataProviderGenerator = new ServiceMetadataProviderGenerator(partitions, 93 SERVICE_METADATA_BASE, 94 REGION_BASE); 95 96 assertThat(serviceMetadataProviderGenerator, generatesTo("service-metadata-provider.java")); 97 } 98 99 @Test partitionMetadataClass()100 public void partitionMetadataClass() { 101 PartitionMetadataGenerator partitionMetadataGenerator = new PartitionMetadataGenerator(partitions.getPartitions().get(0), 102 PARTITION_METADATA_BASE, 103 REGION_BASE); 104 105 assertThat(partitionMetadataGenerator, generatesTo("partition-metadata.java")); 106 } 107 108 @Test endpointTagClass()109 public void endpointTagClass() { 110 EndpointTagGenerator partitionMetadataGenerator = new EndpointTagGenerator(partitions, REGION_BASE); 111 112 assertThat(partitionMetadataGenerator, generatesTo("endpoint-tags.java")); 113 } 114 115 @Test partitionMetadataProviderClass()116 public void partitionMetadataProviderClass() { 117 PartitionMetadataProviderGenerator partitionMetadataProviderGenerator = 118 new PartitionMetadataProviderGenerator(partitions, PARTITION_METADATA_BASE, REGION_BASE); 119 120 assertThat(partitionMetadataProviderGenerator, generatesTo("partition-metadata-provider.java")); 121 } 122 } 123