package com.github.scribejava.core.extractors;
import static org.junit.Assert.assertEquals;
import org.junit.Before;
import org.junit.Test;
import com.github.scribejava.core.ObjectMother;
import com.github.scribejava.core.exceptions.OAuthParametersMissingException;
import com.github.scribejava.core.model.OAuthRequest;
import com.github.scribejava.core.model.Verb;
public class BaseStringExtractorTest {
private BaseStringExtractorImpl extractor;
private OAuthRequest request;
private OAuthRequest requestPort80;
private OAuthRequest requestPort80v2;
private OAuthRequest requestPort8080;
private OAuthRequest requestPort443;
private OAuthRequest requestPort443v2;
@Before
public void setUp() {
request = ObjectMother.createSampleOAuthRequest();
requestPort80 = ObjectMother.createSampleOAuthRequestPort80();
requestPort80v2 = ObjectMother.createSampleOAuthRequestPort80v2();
requestPort8080 = ObjectMother.createSampleOAuthRequestPort8080();
requestPort443 = ObjectMother.createSampleOAuthRequestPort443();
requestPort443v2 = ObjectMother.createSampleOAuthRequestPort443v2();
extractor = new BaseStringExtractorImpl();
}
@Test
public void shouldExtractBaseStringFromOAuthRequest() {
final String expected = "GET&http%3A%2F%2Fexample.com&oauth_callback%3Dhttp%253A%252F%252Fexample%252Fcallback"
+ "%26oauth_consumer_key%3DAS%2523%2524%255E%252A%2540%2526%26oauth_signature%3DOAuth-Signature"
+ "%26oauth_timestamp%3D123456";
final String baseString = extractor.extract(request);
assertEquals(expected, baseString);
}
@Test
public void shouldExcludePort80() {
final String expected = "GET&http%3A%2F%2Fexample.com&oauth_callback%3Dhttp%253A%252F%252Fexample%252Fcallback"
+ "%26oauth_consumer_key%3DAS%2523%2524%255E%252A%2540%2526%26oauth_signature%3DOAuth-Signature"
+ "%26oauth_timestamp%3D123456";
final String baseString = extractor.extract(requestPort80);
assertEquals(expected, baseString);
}
@Test
public void shouldExcludePort80v2() {
final String expected = "GET&http%3A%2F%2Fexample.com%2Ftest&oauth_callback%3Dhttp%253A%252F%252Fexample"
+ "%252Fcallback%26oauth_consumer_key%3DAS%2523%2524%255E%252A%2540%2526%26oauth_signature"
+ "%3DOAuth-Signature%26oauth_timestamp%3D123456";
final String baseString = extractor.extract(requestPort80v2);
assertEquals(expected, baseString);
}
@Test
public void shouldIncludePort8080() {
final String expected = "GET&http%3A%2F%2Fexample.com%3A8080&oauth_callback%3Dhttp%253A%252F%252Fexample"
+ "%252Fcallback%26oauth_consumer_key%3DAS%2523%2524%255E%252A%2540%2526%26oauth_signature"
+ "%3DOAuth-Signature%26oauth_timestamp%3D123456";
final String baseString = extractor.extract(requestPort8080);
assertEquals(expected, baseString);
}
@Test
public void shouldExcludePort443() {
final String expected = "GET&https%3A%2F%2Fexample.com&oauth_callback%3Dhttp%253A%252F%252Fexample%252Fcallback"
+ "%26oauth_consumer_key%3DAS%2523%2524%255E%252A%2540%2526%26oauth_signature%3DOAuth-Signature"
+ "%26oauth_timestamp%3D123456";
final String baseString = extractor.extract(requestPort443);
assertEquals(expected, baseString);
}
@Test
public void shouldExcludePort443v2() {
final String expected = "GET&https%3A%2F%2Fexample.com%2Ftest&oauth_callback%3Dhttp%253A%252F%252Fexample"
+ "%252Fcallback%26oauth_consumer_key%3DAS%2523%2524%255E%252A%2540%2526%26oauth_signature"
+ "%3DOAuth-Signature%26oauth_timestamp%3D123456";
final String baseString = extractor.extract(requestPort443v2);
assertEquals(expected, baseString);
}
@Test(expected = IllegalArgumentException.class)
public void shouldThrowExceptionIfRquestIsNull() {
extractor.extract(null);
}
@Test(expected = OAuthParametersMissingException.class)
public void shouldThrowExceptionIfRquestHasNoOAuthParameters() {
final OAuthRequest request = new OAuthRequest(Verb.GET, "http://example.com");
extractor.extract(request);
}
@Test
public void shouldProperlyEncodeSpaces() {
final String expected = "GET&http%3A%2F%2Fexample.com&body%3Dthis%2520param%2520has%2520whitespace"
+ "%26oauth_callback%3Dhttp%253A%252F%252Fexample%252Fcallback%26oauth_consumer_key"
+ "%3DAS%2523%2524%255E%252A%2540%2526%26oauth_signature%3DOAuth-Signature%26oauth_timestamp%3D123456";
request.addBodyParameter("body", "this param has whitespace");
assertEquals(expected, extractor.extract(request));
}
}