Ejemplo n.º 1
0
        public async Task DeletePersistedGrantsAsync()
        {
            using (var context = new AdminDbContext(_dbContextOptions, _storeOptions, _operationalStore))
            {
                IPersistedGrantRepository persistedGrantRepository = new PersistedGrantRepository(context);

                var localizerMock = new Mock <IPersistedGrantServiceResources>();
                var localizer     = localizerMock.Object;

                var persistedGrantService = new PersistedGrantService(persistedGrantRepository, localizer);

                const int subjectId = 1;

                for (var i = 0; i < 4; i++)
                {
                    //Generate persisted grant
                    var persistedGrantKey = Guid.NewGuid().ToString();
                    var persistedGrant    = PersistedGrantMock.GenerateRandomPersistedGrant(persistedGrantKey, subjectId);

                    //Try add new persisted grant
                    await context.PersistedGrants.AddAsync(persistedGrant);
                }

                await context.SaveChangesAsync();

                //Try delete persisted grant
                await persistedGrantService.DeletePersistedGrantsAsync($"{subjectId}");

                var grant = await persistedGrantRepository.GetPersitedGrantsByUser(subjectId.ToString());

                //Assert
                grant.TotalCount.Should().Be(0);
            }
        }
Ejemplo n.º 2
0
        public async Task DeletePersistedGrantAsync()
        {
            using (var context = new AdminDbContext(_dbContextOptions, _storeOptions, _operationalStore))
            {
                IPersistedGrantRepository persistedGrantRepository = new PersistedGrantRepository(context);

                var localizerMock = new Mock <IPersistedGrantServiceResources>();
                var localizer     = localizerMock.Object;

                var persistedGrantService = new PersistedGrantService(persistedGrantRepository, localizer);

                //Generate persisted grant
                var persistedGrantKey = Guid.NewGuid().ToString();
                var persistedGrant    = PersistedGrantMock.GenerateRandomPersistedGrant(persistedGrantKey);

                //Try add new persisted grant
                await context.PersistedGrants.AddAsync(persistedGrant);

                await context.SaveChangesAsync();

                //Try delete persisted grant
                await persistedGrantService.DeletePersistedGrantAsync(persistedGrantKey);

                var grant = await persistedGrantRepository.GetPersitedGrantAsync(persistedGrantKey);

                //Assert
                grant.Should().BeNull();
            }
        }
Ejemplo n.º 3
0
        public async Task GetPersitedGrantAsync()
        {
            using (var context = new ConfigurationDbContext(_dbConfigurationContextOptions, _storeOptions, _operationalStore))
            {
                var persistedGrantRepository = new PersistedGrantRepository(new AdminDbContext(_dbAdminContextOptions), context);

                var localizerMock = new Mock <IPersistedGrantServiceResources>();
                var localizer     = localizerMock.Object;

                var persistedGrantService = new PersistedGrantService(persistedGrantRepository, localizer);

                //Generate persisted grant
                var persistedGrantKey = Guid.NewGuid().ToString();
                var persistedGrant    = PersistedGrantMock.GenerateRandomPersistedGrant(persistedGrantKey);

                //Try add new persisted grant
                await context.PersistedGrants.AddAsync(persistedGrant);

                await context.SaveChangesAsync();

                //Try get persisted grant
                var persistedGrantAdded = await persistedGrantService.GetPersitedGrantAsync(persistedGrantKey);

                //Assert
                persistedGrant.ShouldBeEquivalentTo(persistedGrantAdded);
            }
        }
Ejemplo n.º 4
0
        private static PersistedGrantService CreateSut()
        {
            var authorizationCodeStoreMock = new Mock <IAdminStore <Entity.AuthorizationCode> >();
            var userConsentStoreMock       = new Mock <IAdminStore <Entity.UserConsent> >();
            var refreshTokenStoreMock      = new Mock <IAdminStore <Entity.RefreshToken> >();
            var referenceTokenStoreMock    = new Mock <IAdminStore <Entity.ReferenceToken> >();
            var serializer = new PersistentGrantSerializer();

            var sut = new PersistedGrantService(authorizationCodeStoreMock.Object,
                                                userConsentStoreMock.Object,
                                                refreshTokenStoreMock.Object,
                                                referenceTokenStoreMock.Object,
                                                serializer);

            authorizationCodeStoreMock.Setup(m => m.GetAsync(It.IsAny <PageRequest>(), default)).ReturnsAsync(new PageResponse <Entity.AuthorizationCode>
            {
                Items = new[] {
                    new Entity.AuthorizationCode
                    {
                        Data = serializer.Serialize(new AuthorizationCode {
                            RequestedScopes = Array.Empty <string>()
                        })
                    }
                }
            });
            userConsentStoreMock.Setup(m => m.GetAsync(It.IsAny <PageRequest>(), default)).ReturnsAsync(new PageResponse <Entity.UserConsent>
            {
                Items = new[] { new Entity.UserConsent
                                {
                                    Data = serializer.Serialize(new Consent {
                            Scopes = Array.Empty <string>()
                        })
                                } }
            });
            refreshTokenStoreMock.Setup(m => m.GetAsync(It.IsAny <PageRequest>(), default)).ReturnsAsync(new PageResponse <Entity.RefreshToken>
            {
                Items = new[] { new Entity.RefreshToken()
                                {
                                    Data = serializer.Serialize(new RefreshToken {
                            AccessToken = new Token
                            {
                                Claims = Array.Empty <Claim>()
                            }
                        })
                                } }
            });
            referenceTokenStoreMock.Setup(m => m.GetAsync(It.IsAny <PageRequest>(), default)).ReturnsAsync(new PageResponse <Entity.ReferenceToken>
            {
                Items = new[] { new Entity.ReferenceToken()
                                {
                                    Data = serializer.Serialize(new Token {
                            Claims = Array.Empty <Claim>()
                        })
                                } }
            });
            return(sut);
        }
Ejemplo n.º 5
0
        private static PersistedGrantService CreateSut(out Mock <IDataProtector> mock)
        {
            var authorizationCodeStoreMock = new Mock <IAdminStore <Entity.AuthorizationCode> >();
            var userConsentStoreMock       = new Mock <IAdminStore <Entity.UserConsent> >();
            var refreshTokenStoreMock      = new Mock <IAdminStore <Entity.RefreshToken> >();
            var referenceTokenStoreMock    = new Mock <IAdminStore <Entity.ReferenceToken> >();
            var dataProtectorProviderMock  = new Mock <IDataProtectionProvider>();
            var dataProtectorMock          = new Mock <IDataProtector>();

            dataProtectorMock.Setup(m => m.Protect(It.IsAny <byte[]>())).Returns <byte[]>(b => b);
            dataProtectorMock.Setup(m => m.Unprotect(It.IsAny <byte[]>())).Returns <byte[]>(b => b);
            dataProtectorProviderMock.Setup(m => m.CreateProtector(It.IsAny <string>())).Returns(dataProtectorMock.Object);

#if DUENDE
            var serializer = new PersistentGrantSerializer(new PersistentGrantOptions
            {
                DataProtectData = true
            }, dataProtectorProviderMock.Object);
#else
            var serializer = new PersistentGrantSerializer();
#endif
            var localizerMock = new Mock <IStringLocalizer <PersistedGrantService> >();
            var loggerMock    = new Mock <ILogger <PersistedGrantService> >();

            var sut = new PersistedGrantService(authorizationCodeStoreMock.Object,
                                                userConsentStoreMock.Object,
                                                refreshTokenStoreMock.Object,
                                                referenceTokenStoreMock.Object,
                                                serializer,
                                                localizerMock.Object,
                                                loggerMock.Object);

            authorizationCodeStoreMock.Setup(m => m.GetAsync(It.IsAny <PageRequest>(), default)).ReturnsAsync(new PageResponse <Entity.AuthorizationCode>
            {
                Items = new[] {
                    new Entity.AuthorizationCode
                    {
                        Data = serializer.Serialize(new AuthorizationCode {
                            RequestedScopes = Array.Empty <string>()
                        })
                    }
                }
            });
            userConsentStoreMock.Setup(m => m.GetAsync(It.IsAny <PageRequest>(), default)).ReturnsAsync(new PageResponse <Entity.UserConsent>
            {
                Items = new[] { new Entity.UserConsent
                                {
                                    Data = serializer.Serialize(new Consent {
                            Scopes = Array.Empty <string>()
                        })
                                } }
            });
#if DUENDE
            var refreshToken = new RefreshToken();
            refreshToken.SetAccessToken(new Token
            {
                Claims = Array.Empty <Claim>()
            });
#else
            var refreshToken = new RefreshToken
            {
                AccessToken = new Token
                {
                    Claims = Array.Empty <Claim>()
                }
            };
#endif
            refreshTokenStoreMock.Setup(m => m.GetAsync(It.IsAny <PageRequest>(), default)).ReturnsAsync(new PageResponse <Entity.RefreshToken>
            {
                Items = new[] { new Entity.RefreshToken()
                                {
                                    Data = serializer.Serialize(refreshToken)
                                } }
            });
            referenceTokenStoreMock.Setup(m => m.GetAsync(It.IsAny <PageRequest>(), default)).ReturnsAsync(new PageResponse <Entity.ReferenceToken>
            {
                Items = new[] { new Entity.ReferenceToken()
                                {
                                    Data = serializer.Serialize(new Token {
                            Claims = Array.Empty <Claim>()
                        })
                                } }
            });

            mock = dataProtectorMock;
            return(sut);
        }