package com.github.scribejava.core.extractors;
import com.github.scribejava.core.model.Response;
import org.junit.Before;
import org.junit.Test;
import com.github.scribejava.core.exceptions.OAuthException;
import com.github.scribejava.core.model.OAuth2AccessToken;
import java.io.IOException;
import java.util.Collections;
import static org.junit.Assert.assertEquals;
public class OAuth2AccessTokenExtractorTest {
private OAuth2AccessTokenExtractor extractor;
@Before
public void setUp() {
extractor = OAuth2AccessTokenExtractor.instance();
}
@Test
public void shouldExtractTokenFromOAuthStandardResponse() throws IOException {
final String response = "access_token=166942940015970|2.2ltzWXYNDjCtg5ZDVVJJeg__.3600.1295816400-548517159"
+ "|RsXNdKrpxg8L6QNLWcs2TVTmcaE";
final OAuth2AccessToken extracted = extractor.extract(ok(response));
assertEquals("166942940015970|2.2ltzWXYNDjCtg5ZDVVJJeg__.3600.1295816400-548517159|RsXNdKrpxg8L6QNLWcs2TVTmcaE",
extracted.getAccessToken());
}
@Test
public void shouldExtractTokenFromResponseWithExpiresParam() throws IOException {
final String response = "access_token=166942940015970|2.2ltzWXYNDjCtg5ZDVVJJeg__.3600.1295816400-548517159"
+ "|RsXNdKrpxg8L6QNLWcs2TVTmcaE&expires_in=5108";
final OAuth2AccessToken extracted = extractor.extract(ok(response));
assertEquals("166942940015970|2.2ltzWXYNDjCtg5ZDVVJJeg__.3600.1295816400-548517159|RsXNdKrpxg8L6QNLWcs2TVTmcaE",
extracted.getAccessToken());
assertEquals(Integer.valueOf(5108), extracted.getExpiresIn());
}
@Test
public void shouldExtractTokenFromResponseWithExpiresAndRefreshParam() throws IOException {
final String response = "access_token=166942940015970|2.2ltzWXYNDjCtg5ZDVVJJeg__.3600.1295816400-548517159"
+ "|RsXNdKrpxg8L6QNLWcs2TVTmcaE&expires_in=5108&token_type=bearer&refresh_token=166942940015970";
final OAuth2AccessToken extracted = extractor.extract(ok(response));
assertEquals("166942940015970|2.2ltzWXYNDjCtg5ZDVVJJeg__.3600.1295816400-548517159|RsXNdKrpxg8L6QNLWcs2TVTmcaE",
extracted.getAccessToken());
assertEquals(Integer.valueOf(5108), extracted.getExpiresIn());
assertEquals("bearer", extracted.getTokenType());
assertEquals("166942940015970", extracted.getRefreshToken());
}
@Test
public void shouldExtractTokenFromResponseWithManyParameters() throws IOException {
final String response = "access_token=foo1234&other_stuff=yeah_we_have_this_too&number=42";
final OAuth2AccessToken extracted = extractor.extract(ok(response));
assertEquals("foo1234", extracted.getAccessToken());
}
@Test(expected = OAuthException.class)
public void shouldThrowExceptionIfTokenIsAbsent() throws IOException {
final String response = "&expires=5108";
extractor.extract(ok(response));
}
@Test(expected = IllegalArgumentException.class)
public void shouldThrowExceptionIfResponseIsNull() throws IOException {
extractor.extract(ok(null));
}
@Test(expected = IllegalArgumentException.class)
public void shouldThrowExceptionIfResponseIsEmptyString() throws IOException {
final String response = "";
extractor.extract(ok(response));
}
private static Response ok(String body) {
return new Response(200, /* message */ null, /* headers */ Collections.<String, String>emptyMap(), body);
}
}