Skip to content

Commit 04cf1c2

Browse files
committed
fix: respect token_uri from json in UserCredentials creation.
1 parent 7072315 commit 04cf1c2

File tree

2 files changed

+34
-5
lines changed

2 files changed

+34
-5
lines changed

oauth2_http/java/com/google/auth/oauth2/UserCredentials.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,13 +124,15 @@ static UserCredentials fromJson(Map<String, Object> json, HttpTransportFactory t
124124
"Error reading user credential from JSON, "
125125
+ " expecting 'client_id', 'client_secret' and 'refresh_token'.");
126126
}
127+
String tokenUrl = (String) json.get("token_uri");
128+
URI tokenUri = (tokenUrl == null || tokenUrl.isEmpty()) ? null : URI.create(tokenUrl);
127129
return UserCredentials.newBuilder()
128130
.setClientId(clientId)
129131
.setClientSecret(clientSecret)
130132
.setRefreshToken(refreshToken)
131133
.setAccessToken(null)
132134
.setHttpTransportFactory(transportFactory)
133-
.setTokenServerUri(null)
135+
.setTokenServerUri(tokenUri)
134136
.setQuotaProjectId(quotaProjectId)
135137
.build();
136138
}

oauth2_http/javatests/com/google/auth/oauth2/UserCredentialsTest.java

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -131,20 +131,44 @@ public void fromJson_hasAccessToken() throws IOException {
131131
MockTokenServerTransportFactory transportFactory = new MockTokenServerTransportFactory();
132132
transportFactory.transport.addClient(CLIENT_ID, CLIENT_SECRET);
133133
transportFactory.transport.addRefreshToken(REFRESH_TOKEN, ACCESS_TOKEN);
134-
GenericJson json = writeUserJson(CLIENT_ID, CLIENT_SECRET, REFRESH_TOKEN, null);
134+
GenericJson json = writeUserJson(CLIENT_ID, CLIENT_SECRET, REFRESH_TOKEN, null, null);
135135

136136
GoogleCredentials credentials = UserCredentials.fromJson(json, transportFactory);
137137

138138
Map<String, List<String>> metadata = credentials.getRequestMetadata(CALL_URI);
139139
TestUtils.assertContainsBearerToken(metadata, ACCESS_TOKEN);
140140
}
141141

142+
@Test
143+
public void fromJson_hasTokenUri() throws IOException {
144+
String tokenUrl = "token.url.xyz";
145+
MockTokenServerTransportFactory transportFactory = new MockTokenServerTransportFactory();
146+
transportFactory.transport.addClient(CLIENT_ID, CLIENT_SECRET);
147+
transportFactory.transport.addRefreshToken(REFRESH_TOKEN, ACCESS_TOKEN);
148+
GenericJson json = writeUserJson(CLIENT_ID, CLIENT_SECRET, REFRESH_TOKEN, null, tokenUrl);
149+
150+
UserCredentials credentials = UserCredentials.fromJson(json, transportFactory);
151+
assertEquals(URI.create(tokenUrl), credentials.toBuilder().getTokenServerUri());
152+
}
153+
154+
@Test
155+
public void fromJson_emptyTokenUri() throws IOException {
156+
String tokenUrl = "";
157+
MockTokenServerTransportFactory transportFactory = new MockTokenServerTransportFactory();
158+
transportFactory.transport.addClient(CLIENT_ID, CLIENT_SECRET);
159+
transportFactory.transport.addRefreshToken(REFRESH_TOKEN, ACCESS_TOKEN);
160+
GenericJson json = writeUserJson(CLIENT_ID, CLIENT_SECRET, REFRESH_TOKEN, null, tokenUrl);
161+
162+
UserCredentials credentials = UserCredentials.fromJson(json, transportFactory);
163+
assertEquals(OAuth2Utils.TOKEN_SERVER_URI, credentials.toBuilder().getTokenServerUri());
164+
}
165+
142166
@Test
143167
public void fromJson_hasQuotaProjectId() throws IOException {
144168
MockTokenServerTransportFactory transportFactory = new MockTokenServerTransportFactory();
145169
transportFactory.transport.addClient(CLIENT_ID, CLIENT_SECRET);
146170
transportFactory.transport.addRefreshToken(REFRESH_TOKEN, ACCESS_TOKEN);
147-
GenericJson json = writeUserJson(CLIENT_ID, CLIENT_SECRET, REFRESH_TOKEN, QUOTA_PROJECT);
171+
GenericJson json = writeUserJson(CLIENT_ID, CLIENT_SECRET, REFRESH_TOKEN, QUOTA_PROJECT, null);
148172

149173
GoogleCredentials credentials = UserCredentials.fromJson(json, transportFactory);
150174

@@ -865,7 +889,7 @@ public void userCredentials_toBuilder_copyEveryAttribute() {
865889
}
866890

867891
static GenericJson writeUserJson(
868-
String clientId, String clientSecret, String refreshToken, String quotaProjectId) {
892+
String clientId, String clientSecret, String refreshToken, String quotaProjectId, String tokenUrl) {
869893
GenericJson json = new GenericJson();
870894
if (clientId != null) {
871895
json.put("client_id", clientId);
@@ -879,14 +903,17 @@ static GenericJson writeUserJson(
879903
if (quotaProjectId != null) {
880904
json.put("quota_project_id", quotaProjectId);
881905
}
906+
if (tokenUrl != null) {
907+
json.put("token_uri", tokenUrl);
908+
}
882909
json.put("type", GoogleCredentials.USER_FILE_TYPE);
883910
return json;
884911
}
885912

886913
static InputStream writeUserStream(
887914
String clientId, String clientSecret, String refreshToken, String quotaProjectId)
888915
throws IOException {
889-
GenericJson json = writeUserJson(clientId, clientSecret, refreshToken, quotaProjectId);
916+
GenericJson json = writeUserJson(clientId, clientSecret, refreshToken, quotaProjectId, null);
890917
return TestUtils.jsonToInputStream(json);
891918
}
892919

0 commit comments

Comments
 (0)