Skip to content

Commit 5ffad67

Browse files
rojoiiiiainmcgin
authored andcommitted
Added scope parsing to TokenResponse (#131)
1 parent 393ce14 commit 5ffad67

File tree

2 files changed

+111
-7
lines changed

2 files changed

+111
-7
lines changed

library/java/net/openid/appauth/TokenResponse.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,7 @@ public Builder fromResponseJson(@NonNull JSONObject json) throws JSONException {
216216
}
217217
setRefreshToken(JsonUtil.getStringIfDefined(json, KEY_REFRESH_TOKEN));
218218
setIdToken(JsonUtil.getStringIfDefined(json, KEY_ID_TOKEN));
219+
setScope(JsonUtil.getStringIfDefined(json, KEY_SCOPE));
219220
setAdditionalParameters(extractAdditionalParams(json, BUILT_IN_PARAMS));
220221

221222
return this;

library/javatests/net/openid/appauth/TokenResponseTest.java

Lines changed: 110 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,21 +14,73 @@
1414

1515
package net.openid.appauth;
1616

17-
import static net.openid.appauth.TestValues.TEST_APP_REDIRECT_URI;
18-
import static net.openid.appauth.TestValues.TEST_AUTH_CODE;
19-
import static net.openid.appauth.TestValues.TEST_CLIENT_ID;
20-
import static net.openid.appauth.TestValues.getTestServiceConfig;
21-
22-
import java.util.Collections;
17+
import org.json.JSONException;
2318
import org.junit.Before;
2419
import org.junit.Test;
2520
import org.junit.runner.RunWith;
2621
import org.robolectric.RobolectricTestRunner;
2722
import org.robolectric.annotation.Config;
2823

24+
import java.util.Arrays;
25+
import java.util.Collections;
26+
import java.util.HashSet;
27+
import java.util.Set;
28+
29+
import static junit.framework.Assert.assertEquals;
30+
import static junit.framework.Assert.assertNotNull;
31+
import static junit.framework.Assert.assertNull;
32+
import static net.openid.appauth.TestValues.TEST_APP_REDIRECT_URI;
33+
import static net.openid.appauth.TestValues.TEST_AUTH_CODE;
34+
import static net.openid.appauth.TestValues.TEST_CLIENT_ID;
35+
import static net.openid.appauth.TestValues.getTestServiceConfig;
36+
import static net.openid.appauth.TokenResponse.KEY_ACCESS_TOKEN;
37+
import static net.openid.appauth.TokenResponse.KEY_EXPIRES_AT;
38+
import static net.openid.appauth.TokenResponse.KEY_ID_TOKEN;
39+
import static net.openid.appauth.TokenResponse.KEY_REFRESH_TOKEN;
40+
import static net.openid.appauth.TokenResponse.KEY_SCOPE;
41+
import static net.openid.appauth.TokenResponse.KEY_TOKEN_TYPE;
42+
import static org.hamcrest.Matchers.equalTo;
43+
import static org.hamcrest.Matchers.is;
44+
import static org.hamcrest.Matchers.isEmptyOrNullString;
45+
import static org.junit.Assert.assertThat;
46+
2947
@RunWith(RobolectricTestRunner.class)
3048
@Config(constants = BuildConfig.class, sdk=16)
3149
public class TokenResponseTest {
50+
private static final String TEST_KEY_TOKEN_TYPE = "Bearer";
51+
private static final String TEST_KEY_ACCESS_TOKEN = "pAstudrU6axaw#Da355eseTu6ugufrev";
52+
private static final Long TEST_KEY_KEY_EXPIRES_AT = 1481304561609L;
53+
private static final String TEST_KEY_REFRESH_TOKEN = "T#xapeva#Rux3steh3fazuvak4seN#S?";
54+
private static final String TEST_KEY_ID_TOKEN = "5-=5eW5eGe3wE7A$WA+waph7S#FRedat";
55+
private static final String TEST_KEY_SCOPE_1 = "Scope01";
56+
private static final String TEST_KEY_SCOPE_2 = "Scope02";
57+
private static final String TEST_KEY_SCOPE_3 = "Scope03";
58+
private static final String TEST_KEY_SCOPES = TEST_KEY_SCOPE_1 + " " + TEST_KEY_SCOPE_2 + " " + TEST_KEY_SCOPE_3;
59+
60+
private static String TEST_JSON_WITH_SCOPE = "{\n" +
61+
" \"" + KEY_ACCESS_TOKEN + "\": \"" + TEST_KEY_ACCESS_TOKEN + "\",\n" +
62+
" \"" + KEY_TOKEN_TYPE + "\": \"" + TEST_KEY_TOKEN_TYPE + "\",\n" +
63+
" \"" + KEY_REFRESH_TOKEN + "\": \"" + TEST_KEY_REFRESH_TOKEN + "\",\n" +
64+
" \"" + KEY_ID_TOKEN + "\": \"" + TEST_KEY_ID_TOKEN + "\",\n" +
65+
" \"" + KEY_EXPIRES_AT + "\": " + TEST_KEY_KEY_EXPIRES_AT + ",\n" +
66+
" \"" + KEY_SCOPE + "\": \"" + TEST_KEY_SCOPES + "\"\n" +
67+
"}";
68+
69+
private static String TEST_JSON_WITHOUT_SCOPE = "{\n" +
70+
" \"" + KEY_ACCESS_TOKEN + "\": \"" + TEST_KEY_ACCESS_TOKEN + "\",\n" +
71+
" \"" + KEY_TOKEN_TYPE + "\": \"" + TEST_KEY_TOKEN_TYPE + "\",\n" +
72+
" \"" + KEY_REFRESH_TOKEN + "\": \"" + TEST_KEY_REFRESH_TOKEN + "\",\n" +
73+
" \"" + KEY_ID_TOKEN + "\": \"" + TEST_KEY_ID_TOKEN + "\",\n" +
74+
" \"" + KEY_EXPIRES_AT + "\": " + TEST_KEY_KEY_EXPIRES_AT + ",\n" +
75+
" \"" + KEY_SCOPE + "\":\"\"\n" +
76+
"}";
77+
private static String TEST_JSON_WITHOUT_SCOPE_FIELD = "{\n" +
78+
" \"" + KEY_ACCESS_TOKEN + "\": \"" + TEST_KEY_ACCESS_TOKEN + "\",\n" +
79+
" \"" + KEY_TOKEN_TYPE + "\": \"" + TEST_KEY_TOKEN_TYPE + "\",\n" +
80+
" \"" + KEY_REFRESH_TOKEN + "\": \"" + TEST_KEY_REFRESH_TOKEN + "\",\n" +
81+
" \"" + KEY_ID_TOKEN + "\": \"" + TEST_KEY_ID_TOKEN + "\",\n" +
82+
" \"" + KEY_EXPIRES_AT + "\": " + TEST_KEY_KEY_EXPIRES_AT + "\n" +
83+
"}";
3284

3385
private TokenResponse.Builder mMinimalBuilder;
3486

@@ -46,4 +98,55 @@ public void testBuilder_setAdditionalParams_withBuiltInParam() {
4698
mMinimalBuilder.setAdditionalParameters(
4799
Collections.singletonMap(TokenRequest.PARAM_SCOPE, "scope"));
48100
}
49-
}
101+
102+
@Test
103+
public void testBuilder_fromResponseJsonStringWithScope() throws JSONException{
104+
System.out.println(TEST_JSON_WITH_SCOPE);
105+
TokenResponse tokenResponse = mMinimalBuilder.fromResponseJsonString(TEST_JSON_WITH_SCOPE).build();
106+
107+
assertNotNull(tokenResponse);
108+
109+
assertEquals(TEST_KEY_ACCESS_TOKEN, tokenResponse.accessToken);
110+
assertEquals(TEST_KEY_TOKEN_TYPE, tokenResponse.tokenType);
111+
assertEquals(TEST_KEY_REFRESH_TOKEN, tokenResponse.refreshToken);
112+
assertEquals(TEST_KEY_ID_TOKEN, tokenResponse.idToken);
113+
assertEquals(TEST_KEY_KEY_EXPIRES_AT, tokenResponse.accessTokenExpirationTime);
114+
115+
assertEquals(TEST_KEY_SCOPES, tokenResponse.scope);
116+
assertThat(tokenResponse.getScopeSet(), is(equalTo((Set) new HashSet<>(Arrays.asList(TEST_KEY_SCOPE_1, TEST_KEY_SCOPE_2, TEST_KEY_SCOPE_3)))));
117+
}
118+
119+
@Test
120+
public void testBuilder_fromResponseJsonStringWithoutScope() throws JSONException{
121+
System.out.println(TEST_JSON_WITHOUT_SCOPE);
122+
TokenResponse tokenResponse = mMinimalBuilder.fromResponseJsonString(TEST_JSON_WITHOUT_SCOPE).build();
123+
124+
assertNotNull(tokenResponse);
125+
126+
assertEquals(TEST_KEY_ACCESS_TOKEN, tokenResponse.accessToken);
127+
assertEquals(TEST_KEY_TOKEN_TYPE, tokenResponse.tokenType);
128+
assertEquals(TEST_KEY_REFRESH_TOKEN, tokenResponse.refreshToken);
129+
assertEquals(TEST_KEY_ID_TOKEN, tokenResponse.idToken);
130+
assertEquals(TEST_KEY_KEY_EXPIRES_AT, tokenResponse.accessTokenExpirationTime);
131+
132+
assertThat(tokenResponse.scope, isEmptyOrNullString());
133+
assertNull(tokenResponse.getScopeSet());
134+
}
135+
136+
@Test
137+
public void testBuilder_fromResponseJsonStringWithoutScopeField() throws JSONException{
138+
System.out.println(TEST_JSON_WITHOUT_SCOPE_FIELD);
139+
TokenResponse tokenResponse = mMinimalBuilder.fromResponseJsonString(TEST_JSON_WITHOUT_SCOPE_FIELD).build();
140+
141+
assertNotNull(tokenResponse);
142+
143+
assertEquals(TEST_KEY_ACCESS_TOKEN, tokenResponse.accessToken);
144+
assertEquals(TEST_KEY_TOKEN_TYPE, tokenResponse.tokenType);
145+
assertEquals(TEST_KEY_REFRESH_TOKEN, tokenResponse.refreshToken);
146+
assertEquals(TEST_KEY_ID_TOKEN, tokenResponse.idToken);
147+
assertEquals(TEST_KEY_KEY_EXPIRES_AT, tokenResponse.accessTokenExpirationTime);
148+
149+
assertThat(tokenResponse.scope, isEmptyOrNullString());
150+
assertNull(tokenResponse.getScopeSet());
151+
}
152+
}

0 commit comments

Comments
 (0)