16
16
package software .amazon .awssdk .auth .credentials .internal ;
17
17
18
18
import static org .assertj .core .api .Assertions .assertThat ;
19
+ import static org .assertj .core .api .AssertionsForClassTypes .assertThatThrownBy ;
20
+ import static org .junit .jupiter .params .provider .Arguments .arguments ;
21
+
19
22
import java .io .ByteArrayInputStream ;
20
23
import java .nio .charset .StandardCharsets ;
21
- import java .util .Arrays ;
22
- import java .util .function .Supplier ;
23
- import org .junit .After ;
24
- import org .junit .Before ;
25
- import org .junit .Rule ;
26
- import org .junit .Test ;
27
- import org .junit .rules .ExpectedException ;
28
- import org .junit .runner .RunWith ;
29
- import org .junit .runners .Parameterized ;
24
+ import java .util .stream .Stream ;
25
+ import org .junit .jupiter .api .AfterEach ;
26
+ import org .junit .jupiter .api .BeforeEach ;
27
+ import org .junit .jupiter .params .ParameterizedTest ;
28
+ import org .junit .jupiter .params .provider .Arguments ;
29
+ import org .junit .jupiter .params .provider .MethodSource ;
30
30
import software .amazon .awssdk .core .SdkSystemSetting ;
31
31
import software .amazon .awssdk .profiles .ProfileFile ;
32
32
import software .amazon .awssdk .profiles .ProfileFileSystemSetting ;
33
33
import software .amazon .awssdk .testutils .EnvironmentVariableHelper ;
34
34
35
- @ RunWith (Parameterized .class )
36
35
public class Ec2MetadataConfigProviderEndpointModeTest {
37
36
private static final String TEST_PROFILES_PATH_PREFIX = "/software/amazon/awssdk/auth/credentials/internal/ec2metadataconfigprovider/" ;
38
37
private static final EnvironmentVariableHelper ENVIRONMENT_VARIABLE_HELPER = new EnvironmentVariableHelper ();
39
38
private static final String CUSTOM_PROFILE = "myprofile" ;
40
39
41
- @ Parameterized .Parameter
42
- public TestCase testCase ;
43
-
44
- @ Rule
45
- public ExpectedException thrown = ExpectedException .none ();
46
-
47
- @ Parameterized .Parameters (name = "{0}" )
48
- public static Iterable <Object > testCases () {
49
- return Arrays .asList (
50
- new TestCase ().expectedEndpointMode (null ).expectedEndpointMode (Ec2MetadataConfigProvider .EndpointMode .IPV4 ),
51
-
52
- new TestCase ().envEndpointMode ("ipv4" ).expectedEndpointMode (Ec2MetadataConfigProvider .EndpointMode .IPV4 ),
53
- new TestCase ().envEndpointMode ("IPv4" ).expectedEndpointMode (Ec2MetadataConfigProvider .EndpointMode .IPV4 ),
54
- new TestCase ().envEndpointMode ("ipv6" ).expectedEndpointMode (Ec2MetadataConfigProvider .EndpointMode .IPV6 ),
55
- new TestCase ().envEndpointMode ("IPv6" ).expectedEndpointMode (Ec2MetadataConfigProvider .EndpointMode .IPV6 ),
56
- new TestCase ().envEndpointMode ("Ipv99" ).expectedException (IllegalArgumentException .class ),
57
-
58
- new TestCase ().systemPropertyEndpointMode ("ipv4" ).expectedEndpointMode (Ec2MetadataConfigProvider .EndpointMode .IPV4 ),
59
- new TestCase ().systemPropertyEndpointMode ("IPv4" ).expectedEndpointMode (Ec2MetadataConfigProvider .EndpointMode .IPV4 ),
60
- new TestCase ().systemPropertyEndpointMode ("ipv6" ).expectedEndpointMode (Ec2MetadataConfigProvider .EndpointMode .IPV6 ),
61
- new TestCase ().systemPropertyEndpointMode ("IPv6" ).expectedEndpointMode (Ec2MetadataConfigProvider .EndpointMode .IPV6 ),
62
- new TestCase ().systemPropertyEndpointMode ("Ipv99" ).expectedException (IllegalArgumentException .class ),
63
-
64
- new TestCase ().sharedConfigFile (TEST_PROFILES_PATH_PREFIX + "endpoint_mode_ipv6" )
65
- .expectedEndpointMode (Ec2MetadataConfigProvider .EndpointMode .IPV6 ),
66
- new TestCase ().sharedConfigFile (TEST_PROFILES_PATH_PREFIX + "endpoint_mode_invalidValue" )
67
- .expectedException (IllegalArgumentException .class ),
68
-
69
- // System property takes highest precedence
70
- new TestCase ().systemPropertyEndpointMode ("ipv6" ).envEndpointMode ("ipv4" )
71
- .expectedEndpointMode (Ec2MetadataConfigProvider .EndpointMode .IPV6 ),
72
- new TestCase ().systemPropertyEndpointMode ("ipv6" ).sharedConfigFile (TEST_PROFILES_PATH_PREFIX + "endpoint_mode_ipv4" )
73
- .expectedEndpointMode (Ec2MetadataConfigProvider .EndpointMode .IPV6 ),
74
-
75
- // env var has higher precedence than shared config
76
- new TestCase ().envEndpointMode ("ipv6" ).sharedConfigFile (TEST_PROFILES_PATH_PREFIX + "endpoint_mode_ipv4" )
77
- .expectedEndpointMode (Ec2MetadataConfigProvider .EndpointMode .IPV6 ),
78
-
79
- // Test custom profile supplier and custom profile name
80
- new TestCase ().sharedConfigFile (TEST_PROFILES_PATH_PREFIX + "endpoint_mode_ipv6_custom_profile" )
81
- .customProfileName (CUSTOM_PROFILE ).expectedEndpointMode (Ec2MetadataConfigProvider .EndpointMode .IPV6 ),
82
- new TestCase ().customProfileFile (Ec2MetadataConfigProviderEndpointModeTest ::customProfileFile )
83
- .customProfileName (CUSTOM_PROFILE ).expectedEndpointMode (Ec2MetadataConfigProvider .EndpointMode .IPV6 )
40
+ public static Stream <Arguments > testData () {
41
+ return Stream .of (
42
+ arguments (null , null , null , null , null , Ec2MetadataConfigProvider .EndpointMode .IPV4 , null ),
43
+ arguments ("ipv4" , null , null , null , null , Ec2MetadataConfigProvider .EndpointMode .IPV4 , null ),
44
+ arguments ("IPv4" , null , null , null , null , Ec2MetadataConfigProvider .EndpointMode .IPV4 , null ),
45
+ arguments ("ipv6" , null , null , null , null , Ec2MetadataConfigProvider .EndpointMode .IPV6 , null ),
46
+ arguments ("IPv6" , null , null , null , null , Ec2MetadataConfigProvider .EndpointMode .IPV6 , null ),
47
+ arguments ("Ipv99" , null , null , null , null , null , IllegalArgumentException .class ),
48
+
49
+ arguments (null , "ipv4" , null , null , null , Ec2MetadataConfigProvider .EndpointMode .IPV4 , null ),
50
+ arguments (null , "IPv4" , null , null , null , Ec2MetadataConfigProvider .EndpointMode .IPV4 , null ),
51
+ arguments (null , "ipv6" , null , null , null , Ec2MetadataConfigProvider .EndpointMode .IPV6 , null ),
52
+ arguments (null , "IPv6" , null , null , null , Ec2MetadataConfigProvider .EndpointMode .IPV6 , null ),
53
+ arguments (null , "Ipv99" , null , null , null , null , IllegalArgumentException .class ),
54
+
55
+ arguments (null , null , TEST_PROFILES_PATH_PREFIX + "endpoint_mode_ipv6" , null , null ,
56
+ Ec2MetadataConfigProvider .EndpointMode .IPV6 , null ),
57
+ arguments (null , null , TEST_PROFILES_PATH_PREFIX + "endpoint_mode_invalidValue" , null , null , null ,
58
+ IllegalArgumentException .class ),
59
+
60
+ // System property takes highest precedence
61
+ arguments ("ipv4" , "ipv6" , null , null , null , Ec2MetadataConfigProvider .EndpointMode .IPV6 , null ),
62
+ arguments (null , "ipv6" , TEST_PROFILES_PATH_PREFIX + "endpoint_mode_ipv4" , null , null ,
63
+ Ec2MetadataConfigProvider .EndpointMode .IPV6 , null ),
64
+
65
+ // env var has higher precedence than shared config
66
+ arguments ("ipv6" , null , TEST_PROFILES_PATH_PREFIX + "endpoint_mode_ipv4" , null , null ,
67
+ Ec2MetadataConfigProvider .EndpointMode .IPV6 , null ),
68
+
69
+ // Test custom profile supplier and custom profile name
70
+ arguments (null , null , TEST_PROFILES_PATH_PREFIX + "endpoint_mode_ipv6_custom_profile" , null , CUSTOM_PROFILE ,
71
+ Ec2MetadataConfigProvider .EndpointMode .IPV6 , null ),
72
+ arguments (null , null , null , customProfileFile (), CUSTOM_PROFILE , Ec2MetadataConfigProvider .EndpointMode .IPV6 , null )
84
73
);
85
74
}
86
75
87
- @ Before
88
- public void setup () {
76
+ @ BeforeEach
77
+ @ AfterEach
78
+ public void cleanup () {
89
79
ENVIRONMENT_VARIABLE_HELPER .reset ();
90
80
System .clearProperty (SdkSystemSetting .AWS_EC2_METADATA_SERVICE_ENDPOINT_MODE .property ());
81
+ }
91
82
92
- if (testCase .envEndpointMode != null ) {
83
+ @ ParameterizedTest
84
+ @ MethodSource ("testData" )
85
+ void resolvesCorrectEndpointMode (String envEndpointMode ,
86
+ String systemPropertyEndpointMode ,
87
+ String sharedConfigFile ,
88
+ ProfileFile customProfileFile ,
89
+ String customProfileName ,
90
+ Ec2MetadataConfigProvider .EndpointMode expectedEndpointMode ,
91
+ Class <? extends Throwable > expectedException ) {
92
+ if (envEndpointMode != null ) {
93
93
ENVIRONMENT_VARIABLE_HELPER .set (SdkSystemSetting .AWS_EC2_METADATA_SERVICE_ENDPOINT_MODE .environmentVariable (),
94
- testCase . envEndpointMode );
94
+ envEndpointMode );
95
95
}
96
96
97
- if (testCase . systemPropertyEndpointMode != null ) {
97
+ if (systemPropertyEndpointMode != null ) {
98
98
System .setProperty (SdkSystemSetting .AWS_EC2_METADATA_SERVICE_ENDPOINT_MODE .property (),
99
- testCase . systemPropertyEndpointMode );
99
+ systemPropertyEndpointMode );
100
100
}
101
- if (testCase . sharedConfigFile != null ) {
101
+ if (sharedConfigFile != null ) {
102
102
ENVIRONMENT_VARIABLE_HELPER .set (ProfileFileSystemSetting .AWS_CONFIG_FILE .environmentVariable (),
103
- getTestFilePath (testCase . sharedConfigFile ));
103
+ getTestFilePath (sharedConfigFile ));
104
104
}
105
105
106
- if (testCase .expectedException != null ) {
107
- thrown .expect (testCase .expectedException );
108
- }
109
- }
110
-
111
- @ After
112
- public void teardown () {
113
- ENVIRONMENT_VARIABLE_HELPER .reset ();
114
- System .clearProperty (SdkSystemSetting .AWS_EC2_METADATA_SERVICE_ENDPOINT_MODE .property ());
115
- }
116
-
117
- @ Test
118
- public void resolvesCorrectEndpointMode () {
119
106
Ec2MetadataConfigProvider configProvider = Ec2MetadataConfigProvider .builder ()
120
- .profileFile (testCase .customProfileFile )
121
- .profileName (testCase .customProfileName )
122
- .build ();
123
-
124
- assertThat (configProvider .getEndpointMode ()).isEqualTo (testCase .expectedEndpointMode );
107
+ .profileFile (customProfileFile == null ? null :
108
+ () -> customProfileFile )
109
+ .profileName (customProfileName )
110
+ .build ();
111
+
112
+ if (expectedException != null ) {
113
+ assertThatThrownBy (configProvider ::getEndpointMode ).isInstanceOf (expectedException );
114
+ } else {
115
+ assertThat (configProvider .getEndpointMode ()).isEqualTo (expectedEndpointMode );
116
+ }
125
117
}
126
118
127
119
private static String getTestFilePath (String testFile ) {
@@ -137,65 +129,4 @@ private static ProfileFile customProfileFile() {
137
129
.content (new ByteArrayInputStream (content .getBytes (StandardCharsets .UTF_8 )))
138
130
.build ();
139
131
}
140
-
141
- private static class TestCase {
142
- private String envEndpointMode ;
143
- private String systemPropertyEndpointMode ;
144
-
145
- private String sharedConfigFile ;
146
-
147
- private Supplier <ProfileFile > customProfileFile ;
148
-
149
- private String customProfileName ;
150
-
151
- private Ec2MetadataConfigProvider .EndpointMode expectedEndpointMode ;
152
- private Class <? extends Throwable > expectedException ;
153
-
154
- public TestCase envEndpointMode (String envEndpointMode ) {
155
- this .envEndpointMode = envEndpointMode ;
156
- return this ;
157
- }
158
- public TestCase systemPropertyEndpointMode (String systemPropertyEndpointMode ) {
159
- this .systemPropertyEndpointMode = systemPropertyEndpointMode ;
160
- return this ;
161
- }
162
-
163
- public TestCase sharedConfigFile (String sharedConfigFile ) {
164
- this .sharedConfigFile = sharedConfigFile ;
165
- return this ;
166
- }
167
-
168
- public TestCase customProfileFile (Supplier <ProfileFile > customProfileFile ) {
169
- this .customProfileFile = customProfileFile ;
170
- return this ;
171
- }
172
-
173
- private TestCase customProfileName (String customProfileName ) {
174
- this .customProfileName = customProfileName ;
175
- return this ;
176
- }
177
-
178
- public TestCase expectedEndpointMode (Ec2MetadataConfigProvider .EndpointMode expectedEndpointMode ) {
179
- this .expectedEndpointMode = expectedEndpointMode ;
180
- return this ;
181
- }
182
-
183
- public TestCase expectedException (Class <? extends Throwable > expectedException ) {
184
- this .expectedException = expectedException ;
185
- return this ;
186
- }
187
-
188
- @ Override
189
- public String toString () {
190
- return "TestCase{" +
191
- "envEndpointMode='" + envEndpointMode + '\'' +
192
- ", systemPropertyEndpointMode='" + systemPropertyEndpointMode + '\'' +
193
- ", sharedConfigFile='" + sharedConfigFile + '\'' +
194
- ", customProfileFile=" + customProfileFile +
195
- ", customProfileName='" + customProfileName + '\'' +
196
- ", expectedEndpointMode=" + expectedEndpointMode +
197
- ", expectedException=" + expectedException +
198
- '}' ;
199
- }
200
- }
201
132
}
0 commit comments