package com.github.scribejava.core.extractors; import com.github.scribejava.core.model.OAuth2AccessToken; import com.github.scribejava.core.model.OAuth2AccessTokenErrorResponse; import com.github.scribejava.core.model.Response; import org.junit.Test; import java.io.IOException; import java.util.Collections; import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; public class OAuth2AccessTokenJsonExtractorTest { private static final String RESPONSE = "'{ \"access_token\":\"I0122HHJKLEM21F3WLPYHDKGKZULAUO4SGMV3ABKFTDT3T3X\"}'"; private final OAuth2AccessTokenJsonExtractor extractor = OAuth2AccessTokenJsonExtractor.instance(); @Test public void shouldParseResponse() throws IOException { final OAuth2AccessToken token = extractor.extract(ok(RESPONSE)); assertEquals(token.getAccessToken(), "I0122HHJKLEM21F3WLPYHDKGKZULAUO4SGMV3ABKFTDT3T3X"); } @Test(expected = IllegalArgumentException.class) public void shouldThrowExceptionIfForNullParameters() throws IOException { extractor.extract(ok(null)); } @Test(expected = IllegalArgumentException.class) public void shouldThrowExceptionIfForEmptyStrings() throws IOException { extractor.extract(ok("")); } @Test public void shouldThrowExceptionIfResponseIsError() throws IOException { final String body = "{" + "\"error_description\":\"unknown, invalid, or expired refresh token\"," + "\"error\":\"invalid_grant\"" + "}"; try { extractor.extract(error(body)); fail(); } catch (OAuth2AccessTokenErrorResponse oaer) { assertEquals(OAuth2AccessTokenErrorResponse.ErrorCode.invalid_grant, oaer.getErrorCode()); assertEquals("unknown, invalid, or expired refresh token", oaer.getErrorDescription()); } } private static Response ok(String body) { return new Response(200, /* message */ null, /* headers */ Collections.<String, String>emptyMap(), body); } private static Response error(String body) { return new Response(400, /* message */ null, /* headers */ Collections.<String, String>emptyMap(), body); } }