Skip to content

Commit 650b99e

Browse files
committed
provide an immutable copy of the parameters dictionary
1 parent defff6a commit 650b99e

3 files changed

Lines changed: 23 additions & 11 deletions

File tree

lib/src/main/java/com/auth0/authentication/AuthenticationAPIClient.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -49,23 +49,22 @@
4949
*/
5050
public class AuthenticationAPIClient {
5151

52+
private static final String DEFAULT_DB_CONNECTION = "Username-Password-Authentication";
53+
private static final String SMS_CONNECTION = "sms";
54+
private static final String EMAIL_CONNECTION = "email";
5255
private static final String USERNAME_KEY = "username";
5356
private static final String PASSWORD_KEY = "password";
54-
private static final String DEFAULT_DB_CONNECTION = "Username-Password-Authentication";
5557
private static final String ID_TOKEN_KEY = "id_token";
5658
private static final String EMAIL_KEY = "email";
5759
private static final String REFRESH_TOKEN_KEY = "refresh_token";
58-
5960
private static final String PHONE_NUMBER_KEY = "phone_number";
61+
private static final String USER_ID_KEY = "user_id";
62+
private static final String DELEGATION_PATH = "delegation";
6063
private static final String ACCESS_TOKEN_PATH = "access_token";
61-
private static final String SMS_CONNECTION = "sms";
62-
private static final String EMAIL_CONNECTION = "email";
6364
private static final String SIGN_UP_PATH = "signup";
6465
private static final String DB_CONNECTIONS_PATH = "dbconnections";
6566
private static final String CHANGE_PASSWORD_PATH = "change_password";
6667
private static final String UNLINK_PATH = "unlink";
67-
private static final String USER_ID_KEY = "user_id";
68-
private static final String DELEGATION_PATH = "delegation";
6968
private static final String PASSWORDLESS_PATH = "passwordless";
7069
private static final String START_PATH = "start";
7170
private static final String OAUTH_PATH = "oauth";

lib/src/main/java/com/auth0/authentication/ParameterBuilder.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626

2727
import com.auth0.util.CheckHelper;
2828

29+
import java.util.Collections;
2930
import java.util.HashMap;
3031
import java.util.Map;
3132

@@ -177,18 +178,18 @@ public ParameterBuilder addAll(Map<String, Object> parameters) {
177178
*
178179
* @return itself
179180
*/
180-
public ParameterBuilder clearAllA() {
181+
public ParameterBuilder clearAll() {
181182
parameters.clear();
182183
return this;
183184
}
184185

185186
/**
186187
* Create a {@link Map} with all the parameters
187188
*
188-
* @return a new map with the parameters
189+
* @return an unmodifiable map with the parameters
189190
*/
190191
public Map<String, Object> asDictionary() {
191-
return new HashMap<>(this.parameters);
192+
return Collections.unmodifiableMap(new HashMap<>(this.parameters));
192193
}
193194

194195
/**

lib/src/test/java/com/auth0/authentication/ParameterBuilderTest.java

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,9 @@
3535
import java.util.HashMap;
3636
import java.util.Map;
3737

38+
import static org.hamcrest.Matchers.equalTo;
3839
import static org.hamcrest.Matchers.equalToIgnoringCase;
40+
import static org.hamcrest.Matchers.instanceOf;
3941
import static org.hamcrest.Matchers.is;
4042
import static org.hamcrest.Matchers.not;
4143
import static org.hamcrest.Matchers.notNullValue;
@@ -132,8 +134,18 @@ public void shouldDoNothingWhenAddingNullParameters() throws Exception {
132134
@Test
133135
public void shouldProvideADictionaryCopy() throws Exception {
134136
Map<String, Object> parameters = builder.setClientId(CLIENT_ID).asDictionary();
135-
parameters.put("key", "value");
136-
assertThat(builder.asDictionary(), not(hasEntry("key", "value")));
137+
builder.set("key", "value");
138+
assertThat(parameters, not(hasEntry("key", "value")));
139+
}
140+
141+
@Test
142+
public void shouldProvideAnImmutableDictionary() throws Exception {
143+
Map<String, Object> parameters = builder.setClientId(CLIENT_ID).asDictionary();
144+
try {
145+
parameters.put("key", "value");
146+
} catch (Exception e) {
147+
assertThat(e.getClass().getName(), is(equalTo(UnsupportedOperationException.class.getName())));
148+
}
137149
}
138150

139151
private static Matcher<Map<? extends String, ?>> hasEntry(String key, Object value) {

0 commit comments

Comments
 (0)