Exemple #1
0
        public async Task CreateCustomToken()
        {
            var clock   = new MockClock();
            var factory = new FirebaseTokenFactory(new MockSigner(), clock);
            var token   = await factory.CreateCustomTokenAsync("user1");

            VerifyCustomToken(token, "user1", null);
        }
        public async Task CreateCustomToken(string tenantId)
        {
            var factory = new FirebaseTokenFactory(Signer, Clock, tenantId);

            var token = await factory.CreateCustomTokenAsync("user1");

            MockCustomTokenVerifier.WithTenant(tenantId).Verify(token, "user1");
        }
Exemple #3
0
        public async Task CreateCustomTokenWithEmptyClaims()
        {
            var clock   = new MockClock();
            var factory = new FirebaseTokenFactory(new MockSigner(), clock);
            var token   = await factory.CreateCustomTokenAsync(
                "user1", new Dictionary <string, object>());

            VerifyCustomToken(token, "user1", null);
        }
        public async Task CreateCustomTokenWithEmptyClaims(string tenantId)
        {
            var factory = new FirebaseTokenFactory(Signer, Clock, tenantId);

            var token = await factory.CreateCustomTokenAsync(
                "user1", new Dictionary <string, object>());

            MockCustomTokenVerifier.WithTenant(tenantId).Verify(token, "user1");
        }
Exemple #5
0
 private static void AssertTenantId(string expectedTenantId, FirebaseTokenFactory factory)
 {
     if (expectedTenantId == null)
     {
         Assert.Null(factory.TenantId);
     }
     else
     {
         Assert.Equal(expectedTenantId, factory.TenantId);
     }
 }
Exemple #6
0
        public async Task InvalidUid()
        {
            var factory = new FirebaseTokenFactory(new MockSigner(), new MockClock());
            await Assert.ThrowsAsync <ArgumentException>(
                async() => await factory.CreateCustomTokenAsync(null));

            await Assert.ThrowsAsync <ArgumentException>(
                async() => await factory.CreateCustomTokenAsync(string.Empty));

            await Assert.ThrowsAsync <ArgumentException>(
                async() => await factory.CreateCustomTokenAsync(new string('a', 129)));
        }
Exemple #7
0
        public void SignerOnly()
        {
            var args = new FirebaseTokenFactory.Args
            {
                Signer = Signer,
            };

            var factory = new FirebaseTokenFactory(args);

            Assert.Same(SystemClock.Default, factory.Clock);
            Assert.Null(factory.TenantId);
            Assert.False(factory.IsEmulatorMode);
        }
        public void TenantId(string tenantId)
        {
            var factory = new FirebaseTokenFactory(Signer, Clock, tenantId);

            if (tenantId == null)
            {
                Assert.Null(factory.TenantId);
            }
            else
            {
                Assert.Equal(tenantId, factory.TenantId);
            }
        }
Exemple #9
0
        public void EmulatorMode(string tenantId)
        {
            var args = new FirebaseTokenFactory.Args
            {
                IsEmulatorMode = true,
                TenantId       = tenantId,
            };
            var factory = new FirebaseTokenFactory(args);

            Assert.True(factory.IsEmulatorMode);
            Assert.Same(EmulatorSigner.Instance, factory.Signer);
            Assert.Same(SystemClock.Default, factory.Clock);
            AssertTenantId(tenantId, factory);
        }
Exemple #10
0
        public async Task ReservedClaims()
        {
            var factory = new FirebaseTokenFactory(new MockSigner(), new MockClock());

            foreach (var key in FirebaseTokenFactory.ReservedClaims)
            {
                var developerClaims = new Dictionary <string, object>()
                {
                    { key, "value" },
                };
                await Assert.ThrowsAsync <ArgumentException>(
                    async() => await factory.CreateCustomTokenAsync("user", developerClaims));
            }
        }
Exemple #11
0
        public async Task CreateCustomTokenWithClaims()
        {
            var clock           = new MockClock();
            var factory         = new FirebaseTokenFactory(new MockSigner(), clock);
            var developerClaims = new Dictionary <string, object>()
            {
                { "admin", true },
                { "package", "gold" },
                { "magicNumber", 42L },
            };
            var token = await factory.CreateCustomTokenAsync("user2", developerClaims);

            VerifyCustomToken(token, "user2", developerClaims);
        }
        public async Task CreateCustomTokenWithClaims(string tenantId)
        {
            var factory         = new FirebaseTokenFactory(Signer, Clock, tenantId);
            var developerClaims = new Dictionary <string, object>()
            {
                { "admin", true },
                { "package", "gold" },
                { "magicNumber", 42L },
            };

            var token = await factory.CreateCustomTokenAsync("user2", developerClaims);

            MockCustomTokenVerifier.WithTenant(tenantId).Verify(token, "user2", developerClaims);
        }
        internal static TenantAwareFirebaseAuth Create(FirebaseApp app, string tenantId)
        {
            var args = new Args
            {
                TenantId     = tenantId,
                TokenFactory = new Lazy <FirebaseTokenFactory>(
                    () => FirebaseTokenFactory.Create(app, tenantId), true),
                IdTokenVerifier = new Lazy <FirebaseTokenVerifier>(
                    () => FirebaseTokenVerifier.CreateIdTokenVerifier(app, tenantId), true),
                UserManager = new Lazy <FirebaseUserManager>(
                    () => FirebaseUserManager.Create(app, tenantId), true),
                ProviderConfigManager = new Lazy <ProviderConfigManager>(
                    () => Providers.ProviderConfigManager.Create(app, tenantId), true),
            };

            return(new TenantAwareFirebaseAuth(args));
        }