/*
* Copyright 2011-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is distributed
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
package com.amazonaws.internal;
import com.amazonaws.AmazonWebServiceRequest;
import com.amazonaws.RequestClientOptions;
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.AWSCredentialsProvider;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.event.ProgressListener;
import com.amazonaws.metrics.RequestMetricCollector;
import org.junit.Test;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import utils.model.EmptyAmazonWebServiceRequest;
import static org.hamcrest.Matchers.containsString;
import static org.hamcrest.Matchers.empty;
import static org.hamcrest.Matchers.hasEntry;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertThat;
import static org.mockito.Mockito.mock;
public class AmazonWebServiceRequestAdapterTest {
@Test
public void timeoutsSetInBaseRequest_AreAdaptedToNonNullIntegers() {
AmazonWebServiceRequest request = new EmptyAmazonWebServiceRequest();
request.setSdkRequestTimeout(1000);
request.setSdkClientExecutionTimeout(4000);
AmazonWebServiceRequestAdapter adapter = new AmazonWebServiceRequestAdapter(request);
assertEquals(Integer.valueOf(1000), adapter.getRequestTimeout());
assertEquals(Integer.valueOf(4000), adapter.getClientExecutionTimeout());
}
@Test
public void timeoutsNotSetInBaseRequest_AreNullWhenAdapted() {
AmazonWebServiceRequestAdapter adapter = adaptEmpty();
assertNull(adapter.getRequestTimeout());
assertNull(adapter.getClientExecutionTimeout());
}
@Test
public void customHeadersSetInBaseRequest_AreAdaptedToMap() {
AmazonWebServiceRequest request = new EmptyAmazonWebServiceRequest();
request.putCustomRequestHeader("FooHeader", "FooValue");
request.putCustomRequestHeader("BarHeader", "BarValue");
AmazonWebServiceRequestAdapter adapter = new AmazonWebServiceRequestAdapter(request);
assertThat(adapter.getCustomRequestHeaders(), hasEntry("FooHeader", "FooValue"));
assertThat(adapter.getCustomRequestHeaders(), hasEntry("BarHeader", "BarValue"));
}
@Test
public void noHeadersSetInBaseRequest_AreAdaptedToEmptyMap() {
AmazonWebServiceRequestAdapter adapter = adaptEmpty();
assertThat(adapter.getCustomRequestHeaders().entrySet(), empty());
}
@Test
public void customQueryParamsSetInBaseRequest_AreAdaptedToMap() {
AmazonWebServiceRequest request = new EmptyAmazonWebServiceRequest();
request.putCustomQueryParameter("FooParam", "FooValue");
request.putCustomQueryParameter("BarParam", "BarValue");
AmazonWebServiceRequestAdapter adapter = new AmazonWebServiceRequestAdapter(request);
final Map<String, List<String>> params = adapter.getCustomQueryParameters();
assertThat(params, hasEntry("FooParam", Arrays.asList("FooValue")));
assertThat(params, hasEntry("BarParam", Arrays.asList("BarValue")));
}
@Test
public void multipleValuesForSameQueryParamSet_IsAdaptedToMap() {
AmazonWebServiceRequest request = new EmptyAmazonWebServiceRequest();
request.putCustomQueryParameter("FooParam", "valOne");
request.putCustomQueryParameter("FooParam", "valTwo");
AmazonWebServiceRequestAdapter adapter = new AmazonWebServiceRequestAdapter(request);
final Map<String, List<String>> params = adapter.getCustomQueryParameters();
assertThat(params, hasEntry("FooParam", Arrays.asList("valOne", "valTwo")));
}
@Test
public void noParamsSetInBaseRequest_AreAdaptedToEmptyMap() {
AmazonWebServiceRequestAdapter adapter = adaptEmpty();
assertThat(adapter.getCustomQueryParameters().entrySet(), empty());
}
@Test
public void originalRequestObject_IsSetOnAdapter() {
EmptyAmazonWebServiceRequest request = new EmptyAmazonWebServiceRequest();
AmazonWebServiceRequestAdapter adapter = new AmazonWebServiceRequestAdapter(request);
assertEquals(request, adapter.getOriginalRequest());
}
@Test
public void requestType_IsAdaptedToRequestClassSimpleName() {
AmazonWebServiceRequestAdapter adapter = adaptEmpty();
assertEquals("EmptyAmazonWebServiceRequest", adapter.getRequestType());
}
@Test
public void customProgressListenerSetInBaseRequest_IsSetOnAdapter() {
EmptyAmazonWebServiceRequest request = new EmptyAmazonWebServiceRequest();
ProgressListener listener = mock(ProgressListener.class);
request.setGeneralProgressListener(listener);
AmazonWebServiceRequestAdapter adapter = new AmazonWebServiceRequestAdapter(request);
assertEquals(listener, adapter.getProgressListener());
}
@Test
public void customMetricsCollectorSetInBaseRequest_IsSetOnAdapter() {
EmptyAmazonWebServiceRequest request = new EmptyAmazonWebServiceRequest();
RequestMetricCollector metricCollector = mock(RequestMetricCollector.class);
request.setRequestMetricCollector(metricCollector);
AmazonWebServiceRequestAdapter adapter = new AmazonWebServiceRequestAdapter(request);
assertEquals(metricCollector, adapter.getRequestMetricsCollector());
}
@Test
public void customCredentialsProviderSetInBaseRequest_IsSetOnAdapter() {
EmptyAmazonWebServiceRequest request = new EmptyAmazonWebServiceRequest();
AWSCredentialsProvider credentialsProvider = mock(AWSCredentialsProvider.class);
request.setRequestCredentialsProvider(credentialsProvider);
AmazonWebServiceRequestAdapter adapter = new AmazonWebServiceRequestAdapter(request);
assertEquals(credentialsProvider, adapter.getCredentialsProvider());
}
@Test
public void customCredentialsSetInBaseRequest_IsSetOnAdapter() {
EmptyAmazonWebServiceRequest request = new EmptyAmazonWebServiceRequest();
AWSCredentials credentials = new BasicAWSCredentials("akid", "skid");
request.setRequestCredentials(credentials);
AmazonWebServiceRequestAdapter adapter = new AmazonWebServiceRequestAdapter(request);
AWSCredentials adaptedCredentials = adapter.getCredentialsProvider().getCredentials();
assertEquals("akid", adaptedCredentials.getAWSAccessKeyId());
assertEquals("skid", adaptedCredentials.getAWSSecretKey());
}
@Test
public void readLimitMutatedOnClientOptions_IsReflectedInAdaptedClientOptions() {
EmptyAmazonWebServiceRequest request = new EmptyAmazonWebServiceRequest();
request.getRequestClientOptions().setReadLimit(9001);
AmazonWebServiceRequestAdapter adapter = new AmazonWebServiceRequestAdapter(request);
assertEquals(9001, adapter.getRequestClientOptions().getReadLimit());
}
@Test
public void userAgentAppendedToClientOptions_IsReflectedInAdaptedClientOptions() {
EmptyAmazonWebServiceRequest request = new EmptyAmazonWebServiceRequest();
request.getRequestClientOptions().appendUserAgent("foo-agent");
AmazonWebServiceRequestAdapter adapter = new AmazonWebServiceRequestAdapter(request);
assertThat(adapter.getRequestClientOptions().getClientMarker(
RequestClientOptions.Marker.USER_AGENT), containsString("foo-agent"));
}
private AmazonWebServiceRequestAdapter adaptEmpty() {
return new AmazonWebServiceRequestAdapter(
new EmptyAmazonWebServiceRequest());
}
}