Skip to content

Commit 6efa9e7

Browse files
committed
Clean up provider config ID prefix assertions.
1 parent 28db833 commit 6efa9e7

File tree

6 files changed

+72
-17
lines changed

6 files changed

+72
-17
lines changed

src/main/java/com/google/firebase/auth/AbstractFirebaseAuth.java

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -939,8 +939,8 @@ protected String execute() throws FirebaseAuthException {
939939
}
940940

941941
/**
942-
* Creates a new provider OIDC Auth config with the attributes contained in the specified {@link
943-
* OidcProviderConfig.CreateRequest}.
942+
* Creates a new provider OIDC Auth provider config with the attributes contained in the specified
943+
* {@link OidcProviderConfig.CreateRequest}.
944944
*
945945
* @param request A non-null {@link OidcProviderConfig.CreateRequest} instance.
946946
* @return An {@link OidcProviderConfig} instance corresponding to the newly created provider
@@ -1042,7 +1042,8 @@ public OidcProviderConfig getOidcProviderConfig(@NonNull String providerId)
10421042
* {@link OidcProviderConfig} instance. If an error occurs while retrieving the provider
10431043
* config or if the specified provider ID does not exist, the future throws a
10441044
* {@link FirebaseAuthException}.
1045-
* @throws IllegalArgumentException If the provider ID string is null or empty.
1045+
* @throws IllegalArgumentException If the provider ID string is null or empty, or is not
1046+
* prefixed with 'oidc.'.
10461047
*/
10471048
public ApiFuture<OidcProviderConfig> getOidcProviderConfigAsync(@NonNull String providerId) {
10481049
return getOidcProviderConfigOp(providerId).callAsync(firebaseApp);
@@ -1051,7 +1052,7 @@ public ApiFuture<OidcProviderConfig> getOidcProviderConfigAsync(@NonNull String
10511052
private CallableOperation<OidcProviderConfig, FirebaseAuthException>
10521053
getOidcProviderConfigOp(final String providerId) {
10531054
checkNotDestroyed();
1054-
checkArgument(!Strings.isNullOrEmpty(providerId), "Provider ID must not be null or empty.");
1055+
OidcProviderConfig.checkOidcProviderId(providerId);
10551056
final FirebaseUserManager userManager = getUserManager();
10561057
return new CallableOperation<OidcProviderConfig, FirebaseAuthException>() {
10571058
@Override
@@ -1166,7 +1167,8 @@ public void deleteOidcProviderConfig(@NonNull String providerId) throws Firebase
11661167
* @return An {@code ApiFuture} which will complete successfully when the specified provider
11671168
* config has been deleted. If an error occurs while deleting the provider config, the future
11681169
* throws a {@link FirebaseAuthException}.
1169-
* @throws IllegalArgumentException If the provider ID string is null or empty.
1170+
* @throws IllegalArgumentException If the provider ID string is null or empty, or is not prefixed
1171+
* with "oidc.".
11701172
*/
11711173
public ApiFuture<Void> deleteOidcProviderConfigAsync(String providerId) {
11721174
return deleteOidcProviderConfigOp(providerId).callAsync(firebaseApp);
@@ -1175,7 +1177,7 @@ public ApiFuture<Void> deleteOidcProviderConfigAsync(String providerId) {
11751177
private CallableOperation<Void, FirebaseAuthException> deleteOidcProviderConfigOp(
11761178
final String providerId) {
11771179
checkNotDestroyed();
1178-
checkArgument(!Strings.isNullOrEmpty(providerId), "Provider ID must not be null or empty.");
1180+
OidcProviderConfig.checkOidcProviderId(providerId);
11791181
final FirebaseUserManager userManager = getUserManager();
11801182
return new CallableOperation<Void, FirebaseAuthException>() {
11811183
@Override
@@ -1187,8 +1189,8 @@ protected Void execute() throws FirebaseAuthException {
11871189
}
11881190

11891191
/**
1190-
* Creates a new provider SAML Auth config with the attributes contained in the specified {@link
1191-
* SamlProviderConfig.CreateRequest}.
1192+
* Creates a new provider SAML Auth provider config with the attributes contained in the specified
1193+
* {@link SamlProviderConfig.CreateRequest}.
11921194
*
11931195
* @param request A non-null {@link SamlProviderConfig.CreateRequest} instance.
11941196
* @return An {@link SamlProviderConfig} instance corresponding to the newly created provider
@@ -1246,7 +1248,8 @@ public void deleteSamlProviderConfig(@NonNull String providerId) throws Firebase
12461248
* @return An {@code ApiFuture} which will complete successfully when the specified provider
12471249
* config has been deleted. If an error occurs while deleting the provider config, the future
12481250
* throws a {@link FirebaseAuthException}.
1249-
* @throws IllegalArgumentException If the provider ID string is null or empty.
1251+
* @throws IllegalArgumentException If the provider ID string is null or empty, or is not prefixed
1252+
* with "saml.".
12501253
*/
12511254
public ApiFuture<Void> deleteSamlProviderConfigAsync(String providerId) {
12521255
return deleteSamlProviderConfigOp(providerId).callAsync(firebaseApp);
@@ -1255,7 +1258,7 @@ public ApiFuture<Void> deleteSamlProviderConfigAsync(String providerId) {
12551258
private CallableOperation<Void, FirebaseAuthException> deleteSamlProviderConfigOp(
12561259
final String providerId) {
12571260
checkNotDestroyed();
1258-
checkArgument(!Strings.isNullOrEmpty(providerId), "Provider ID must not be null or empty.");
1261+
SamlProviderConfig.checkSamlProviderId(providerId);
12591262
final FirebaseUserManager userManager = getUserManager();
12601263
return new CallableOperation<Void, FirebaseAuthException>() {
12611264
@Override

src/main/java/com/google/firebase/auth/OidcProviderConfig.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,12 @@ public UpdateRequest updateRequest() {
5454
return new UpdateRequest(getProviderId());
5555
}
5656

57+
static void checkOidcProviderId(String providerId) {
58+
checkArgument(!Strings.isNullOrEmpty(providerId), "Provider ID must not be null or empty.");
59+
checkArgument(providerId.startsWith("oidc."),
60+
"Invalid OIDC provider ID (must be prefixed with 'oidc.'): " + providerId);
61+
}
62+
5763
/**
5864
* A specification class for creating a new OIDC Auth provider.
5965
*
@@ -102,7 +108,7 @@ CreateRequest getThis() {
102108
}
103109

104110
void assertValidProviderIdFormat(String providerId) {
105-
checkArgument(providerId.startsWith("oidc."), "Invalid OIDC provider ID: " + providerId);
111+
checkOidcProviderId(providerId);
106112
}
107113
}
108114

@@ -129,7 +135,7 @@ public static final class UpdateRequest extends AbstractUpdateRequest<UpdateRequ
129135
*/
130136
public UpdateRequest(String providerId) {
131137
super(providerId);
132-
checkArgument(providerId.startsWith("oidc."), "Invalid OIDC provider ID: " + providerId);
138+
checkOidcProviderId(providerId);
133139
}
134140

135141
/**

src/main/java/com/google/firebase/auth/SamlProviderConfig.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,12 @@ public String getCallbackUrl() {
7171
return (String) spConfig.get("callbackUri");
7272
}
7373

74+
static void checkSamlProviderId(String providerId) {
75+
checkArgument(!Strings.isNullOrEmpty(providerId), "Provider ID must not be null or empty.");
76+
checkArgument(providerId.startsWith("saml."),
77+
"Invalid SAML provider ID (must be prefixed with 'saml.'): " + providerId);
78+
}
79+
7480
private static List<Object> ensureNestedList(Map<String, Object> outerMap, String id) {
7581
List<Object> list = (List<Object>) outerMap.get(id);
7682
if (list == null) {
@@ -183,7 +189,7 @@ CreateRequest getThis() {
183189
}
184190

185191
void assertValidProviderIdFormat(String providerId) {
186-
checkArgument(providerId.startsWith("saml."), "Invalid SAML provider ID: " + providerId);
192+
checkSamlProviderId(providerId);
187193
}
188194
}
189195
}

src/test/java/com/google/firebase/auth/FirebaseUserManagerTest.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1721,12 +1721,12 @@ public void testDeleteOidcProviderConfigWithNotFoundError() throws Exception {
17211721
initializeAppForUserManagementWithStatusCode(404,
17221722
"{\"error\": {\"message\": \"CONFIGURATION_NOT_FOUND\"}}");
17231723
try {
1724-
FirebaseAuth.getInstance().deleteOidcProviderConfig("UNKNOWN");
1724+
FirebaseAuth.getInstance().deleteOidcProviderConfig("oidc.UNKNOWN");
17251725
fail("No error thrown for invalid response");
17261726
} catch (FirebaseAuthException e) {
17271727
assertEquals(FirebaseUserManager.CONFIGURATION_NOT_FOUND_ERROR, e.getErrorCode());
17281728
}
1729-
checkUrl(interceptor, "DELETE", PROJECT_BASE_URL + "/oauthIdpConfigs/UNKNOWN");
1729+
checkUrl(interceptor, "DELETE", PROJECT_BASE_URL + "/oauthIdpConfigs/oidc.UNKNOWN");
17301730
}
17311731

17321732
@Test
@@ -1910,12 +1910,12 @@ public void testDeleteSamlProviderConfigWithNotFoundError() throws Exception {
19101910
initializeAppForUserManagementWithStatusCode(404,
19111911
"{\"error\": {\"message\": \"CONFIGURATION_NOT_FOUND\"}}");
19121912
try {
1913-
FirebaseAuth.getInstance().deleteSamlProviderConfig("UNKNOWN");
1913+
FirebaseAuth.getInstance().deleteSamlProviderConfig("saml.UNKNOWN");
19141914
fail("No error thrown for invalid response");
19151915
} catch (FirebaseAuthException e) {
19161916
assertEquals(FirebaseUserManager.CONFIGURATION_NOT_FOUND_ERROR, e.getErrorCode());
19171917
}
1918-
checkUrl(interceptor, "DELETE", PROJECT_BASE_URL + "/inboundSamlConfigs/UNKNOWN");
1918+
checkUrl(interceptor, "DELETE", PROJECT_BASE_URL + "/inboundSamlConfigs/saml.UNKNOWN");
19191919
}
19201920

19211921
@Test

src/test/java/com/google/firebase/auth/OidcProviderConfigTest.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,26 @@ public void testJsonDeserialization() throws IOException {
5151
assertEquals("https://oidc.com/issuer", config.getIssuer());
5252
}
5353

54+
@Test
55+
public void testCheckSamlProviderId() {
56+
SamlProviderConfig.checkSamlProviderId("saml.valid-id");
57+
}
58+
59+
@Test(expected = IllegalArgumentException.class)
60+
public void testCreateSamlProviderIdNull() {
61+
SamlProviderConfig.checkSamlProviderId(null);
62+
}
63+
64+
@Test(expected = IllegalArgumentException.class)
65+
public void testCreateSamlProviderIdEmpty() {
66+
SamlProviderConfig.checkSamlProviderId("");
67+
}
68+
69+
@Test(expected = IllegalArgumentException.class)
70+
public void testCreateSamlProviderIdInvalidPrefix() {
71+
SamlProviderConfig.checkSamlProviderId("not prefixed with saml.");
72+
}
73+
5474
@Test
5575
public void testCreateRequest() throws IOException {
5676
OidcProviderConfig.CreateRequest createRequest = new OidcProviderConfig.CreateRequest();

src/test/java/com/google/firebase/auth/SamlProviderConfigTest.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,26 @@ public void testJsonDeserialization() throws IOException {
6868
assertEquals("https://projectId.firebaseapp.com/__/auth/handler", config.getCallbackUrl());
6969
}
7070

71+
@Test
72+
public void testCheckSamlProviderId() {
73+
SamlProviderConfig.checkSamlProviderId("saml.valid-id");
74+
}
75+
76+
@Test(expected = IllegalArgumentException.class)
77+
public void testCreateSamlProviderIdNull() {
78+
SamlProviderConfig.checkSamlProviderId(null);
79+
}
80+
81+
@Test(expected = IllegalArgumentException.class)
82+
public void testCreateSamlProviderIdEmpty() {
83+
SamlProviderConfig.checkSamlProviderId("");
84+
}
85+
86+
@Test(expected = IllegalArgumentException.class)
87+
public void testCreateSamlProviderIdInvalidPrefix() {
88+
SamlProviderConfig.checkSamlProviderId("not prefixed with saml.");
89+
}
90+
7191
@Test
7292
public void testCreateRequest() throws IOException {
7393
SamlProviderConfig.CreateRequest createRequest =

0 commit comments

Comments
 (0)