package com.braintreegateway.integrationtest;
import com.braintreegateway.*;
import com.braintreegateway.exceptions.*;
import org.junit.Test;
import java.net.URLEncoder;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
public class TransparentRedirectRequestIT {
@Test
public void constructor() {
Configuration configuration = new Configuration(Environment.DEVELOPMENT, "integration_merchant_id", "integration_public_key", "integration_private_key");
new TransparentRedirectRequest(configuration, "http_status=200&id=6kdj469tw7yck32j&hash=99c9ff20cd7910a1c1e793ff9e3b2d15586dc6b9");
}
@Test(expected = ForgedQueryStringException.class)
public void constructorRaisesForgedQueryStringExceptionIfGivenInvalidQueryString() {
Configuration configuration = new Configuration(Environment.DEVELOPMENT, "integration_merchant_id", "integration_public_key", "integration_private_key");
new TransparentRedirectRequest(configuration, "http_status=200&id=6kdj469tw7yck32j&hash=99c9ff20cd7910a1c1e793ff9e3b2d15586dc6b9" + "this makes it invalid");
}
@Test(expected = ServerException.class)
public void constructorRaisesServerExceptionIfHttpStatusIs500() {
Configuration configuration = new Configuration(Environment.DEVELOPMENT, "integration_merchant_id", "integration_public_key", "integration_private_key");
new TransparentRedirectRequest(configuration, "http_status=500&id=6kdj469tw7yck32j&hash=a839a44ca69d59a3d6f639c294794989676632dc");
}
@Test(expected = AuthenticationException.class)
public void constructorRaisesAuthenticationExceptionIfHttpStatusIs401() {
Configuration configuration = new Configuration(Environment.DEVELOPMENT, "integration_merchant_id", "integration_public_key", "integration_private_key");
new TransparentRedirectRequest(configuration, "http_status=401&id=6kdj469tw7yck32j&hash=5a26e3cde5ebedb0ec1ba8d35724360334fbf419");
}
@Test(expected = AuthorizationException.class)
public void constructorRaisesAuthorizatonExecptionIfHttpStatusIs403() {
Configuration configuration = new Configuration(Environment.DEVELOPMENT, "integration_merchant_id", "integration_public_key", "integration_private_key");
new TransparentRedirectRequest(configuration, "http_status=403&id=6kdj469tw7yck32j&hash=126d5130b71a4907e460fad23876ed70dd41dcd2");
}
@Test
public void constructorRaisesAuthorizatonExecptionWithMessageIfHttpStatusIs403AndMessageIsInQueryString() {
Configuration configuration = new Configuration(Environment.DEVELOPMENT, "integration_merchant_id", "integration_public_key", "integration_private_key");
String message = "Invalid params: transaction[bad]";
try {
new TransparentRedirectRequest(configuration, String.format("bt_message=%s&http_status=403&id=6kdj469tw7yck32j&hash=126d5130b71a4907e460fad23876ed70dd41dcd2", URLEncoder.encode(message, "UTF-8")));
fail();
} catch (AuthorizationException e) {
assertEquals(message, e.getMessage());
} catch (Exception e) {
fail();
}
}
@Test(expected = DownForMaintenanceException.class)
public void constructorRaisesDownForMaintenanceExceptionIfHttpStatusIs503() {
Configuration configuration = new Configuration(Environment.DEVELOPMENT, "integration_merchant_id", "integration_public_key", "integration_private_key");
new TransparentRedirectRequest(configuration, "http_status=503&id=6kdj469tw7yck32j&hash=1b3d29199a282e63074a7823b76bccacdf732da6");
}
@Test(expected = NotFoundException.class)
public void constructorRaisesNotFoundExceptionIfHttpStatusIs404() {
Configuration configuration = new Configuration(Environment.DEVELOPMENT, "integration_merchant_id", "integration_public_key", "integration_private_key");
new TransparentRedirectRequest(configuration, "http_status=404&id=6kdj469tw7yck32j&hash=0d3724a45cf1cda5524aa68f1f28899d34d2ff3a");
}
@Test(expected = UnexpectedException.class)
public void constructorRaisesUnexpectedExceptionIfHttpStatusIsUnexpected() {
Configuration configuration = new Configuration(Environment.DEVELOPMENT, "integration_merchant_id", "integration_public_key", "integration_private_key");
new TransparentRedirectRequest(configuration, "http_status=600&id=6kdj469tw7yck32j&hash=740633356f93384167d887de0c1d9745e3de8fb6");
}
}