Skip to content

Commit e6a63c0

Browse files
authored
feat(auth): Tenant-aware provider config management (#234)
1 parent 41727f8 commit e6a63c0

File tree

13 files changed

+637
-586
lines changed

13 files changed

+637
-586
lines changed

FirebaseAdmin/FirebaseAdmin.Tests/Auth/AuthBuilder.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
using System;
1616
using FirebaseAdmin.Auth.Jwt;
1717
using FirebaseAdmin.Auth.Multitenancy;
18+
using FirebaseAdmin.Auth.Providers;
1819
using FirebaseAdmin.Tests;
1920
using FirebaseAdmin.Util;
2021
using Google.Apis.Util;
@@ -61,6 +62,12 @@ private void PopulateArgs(AbstractFirebaseAuth.Args args, TestOptions options)
6162
this.CreateUserManager(options));
6263
}
6364

65+
if (options.ProviderConfigRequestHandler != null)
66+
{
67+
args.ProviderConfigManager = new Lazy<ProviderConfigManager>(
68+
this.CreateProviderConfigManager(options));
69+
}
70+
6471
if (options.IdTokenVerifier)
6572
{
6673
args.IdTokenVerifier = new Lazy<FirebaseTokenVerifier>(
@@ -87,6 +94,18 @@ private FirebaseUserManager CreateUserManager(TestOptions options)
8794
return new FirebaseUserManager(args);
8895
}
8996

97+
private ProviderConfigManager CreateProviderConfigManager(TestOptions options)
98+
{
99+
var args = new ProviderConfigManager.Args
100+
{
101+
RetryOptions = RetryOptions.NoBackOff,
102+
ProjectId = this.ProjectId,
103+
ClientFactory = new MockHttpClientFactory(options.ProviderConfigRequestHandler),
104+
TenantId = this.TenantId,
105+
};
106+
return new ProviderConfigManager(args);
107+
}
108+
90109
private FirebaseTokenVerifier CreateIdTokenVerifier()
91110
{
92111
return FirebaseTokenVerifier.CreateIdTokenVerifier(

FirebaseAdmin/FirebaseAdmin.Tests/Auth/FirebaseAuthTest.cs

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ public void GetAuth()
5454
}
5555

5656
[Fact]
57-
public async Task UseAfterDelete()
57+
public void UseAfterDelete()
5858
{
5959
var app = FirebaseApp.Create(new AppOptions() { Credential = MockCredential });
6060
var auth = FirebaseAuth.DefaultInstance;
@@ -65,8 +65,7 @@ public async Task UseAfterDelete()
6565
Assert.Throws<InvalidOperationException>(() => auth.IdTokenVerifier);
6666
Assert.Throws<InvalidOperationException>(() => auth.SessionCookieVerifier);
6767
Assert.Throws<InvalidOperationException>(() => auth.UserManager);
68-
await Assert.ThrowsAsync<InvalidOperationException>(
69-
async () => await auth.GetOidcProviderConfigAsync("oidc.provider"));
68+
Assert.Throws<InvalidOperationException>(() => auth.ProviderConfigManager);
7069
Assert.Throws<InvalidOperationException>(() => auth.TenantManager);
7170
}
7271

@@ -100,6 +99,19 @@ public void UserManagerNoProjectId()
10099
ex.Message);
101100
}
102101

102+
[Fact]
103+
public void ProviderConfigManagerNoProjectId()
104+
{
105+
FirebaseApp.Create(new AppOptions() { Credential = MockCredential });
106+
107+
var ex = Assert.Throws<ArgumentException>(
108+
() => FirebaseAuth.DefaultInstance.ProviderConfigManager);
109+
110+
Assert.Equal(
111+
"Must initialize FirebaseApp with a project ID to manage provider configurations.",
112+
ex.Message);
113+
}
114+
103115
[Fact]
104116
public void TenantManagerNoProjectId()
105117
{

FirebaseAdmin/FirebaseAdmin.Tests/Auth/Multitenancy/TenantAwareFirebaseAuthTest.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ public void UseAfterDelete()
3434
Assert.Throws<InvalidOperationException>(() => auth.IdTokenVerifier);
3535
Assert.Throws<InvalidOperationException>(() => auth.SessionCookieVerifier);
3636
Assert.Throws<InvalidOperationException>(() => auth.UserManager);
37+
Assert.Throws<InvalidOperationException>(() => auth.ProviderConfigManager);
3738
}
3839

3940
[Fact]
@@ -48,6 +49,7 @@ public void TenantId()
4849
Assert.Equal(MockTenantId, auth.IdTokenVerifier.TenantId);
4950
Assert.Equal(MockTenantId, auth.SessionCookieVerifier.TenantId);
5051
Assert.Equal(MockTenantId, auth.UserManager.TenantId);
52+
Assert.Equal(MockTenantId, auth.ProviderConfigManager.TenantId);
5153
}
5254

5355
public void Dispose()

0 commit comments

Comments
 (0)