public async Task it_should_add_a_refresh_token(DatabaseEngine engine)
        {
            // Arrange
            await using var container = new DatabaseTestContainerBuilder().Build(engine);
            var configuration = new ConfigurationBuilder().For(container).Build(engine);
            var manager       = new DatabaseManagerBuilder().With(configuration).Build(engine);
            var runner        = new MigratorRunnerBuilder().With(configuration).Build(engine);
            var sut           = new UserRepositoryBuilder().With(configuration).Build(engine);

            await container.StartAsync();

            await manager.EnsureDatabaseCreated();

            runner.MigrateUp();

            const string username = "******";
            var          user     = new UserBuilder().WithUserName(username).Build();
            await sut.CreateAsync(user);

            // Act
            var persistedUser = await sut.FindByNameAsync(username);

            await sut.AssignRefreshToken("some_token", persistedUser !);

            // Assert
            var result = await sut.FindByNameAsync(username);

            result !.RefreshTokens.Should().ContainSingle("some_token");
        }
        public async Task it_should_create_a_user(DatabaseEngine engine)
        {
            // Arrange
            await using var container = new DatabaseTestContainerBuilder().Build(engine);
            var configuration = new ConfigurationBuilder().For(container).Build(engine);
            var manager       = new DatabaseManagerBuilder().With(configuration).Build(engine);
            var runner        = new MigratorRunnerBuilder().With(configuration).Build(engine);
            var sut           = new UserRepositoryBuilder().With(configuration).Build(engine);

            await container.StartAsync();

            await manager.EnsureDatabaseCreated();

            runner.MigrateUp();

            // Act
            const string username = "******";
            var          user     = new UserBuilder().WithUserName(username).Build();
            await sut.CreateAsync(user);

            // Assert
            var result = await sut.FindByNameAsync(username);

            result.Should().BeEquivalentTo(user, opt => opt.Excluding(x => x.Id));
        }
Exemple #3
0
        public void UseRepositoryWhenUserIsDeleted()
        {
            // arrange
            var email    = Email.Parse("*****@*****.**");
            var nickName = Nickname.Parse("nickname");
            var userId   = UserId.Parse("12345");

            var mockedUserRepository = UserRepositoryBuilder.Create();

            mockedUserRepository.Users.Add((email, nickName, userId));
            var userRepository = mockedUserRepository.Build();
            var userHandler    = new UserHandler(userRepository);

            // act
            userHandler.Handle(new UserDeleted(userId));
            // assert
            Assert.AreEqual(0, mockedUserRepository.Users.Count);
        }
Exemple #4
0
        public void UseRepositoryWhenUserIsCreated()
        {
            // arrange
            var email       = "*****@*****.**";
            var nickName    = "nickname";
            var userId      = "12345";
            var accessToken = "accessToken";

            var mockedUserRepository = UserRepositoryBuilder.Create();
            var userRepository       = mockedUserRepository.Build();
            var userHandler          = new UserHandler(userRepository);
            // act
            var identity = Identity.Parse(email, nickName, userId, accessToken);

            userHandler.Handle(new UserCreated(identity));
            // assert
            var(actualEmail, actualNickname, actualUserId) = mockedUserRepository.Users.First();
            Assert.AreEqual(Email.Parse(email), actualEmail);
            Assert.AreEqual(Nickname.Parse(nickName), actualNickname);
            Assert.AreEqual(UserId.Parse(userId), actualUserId);
        }
        public async Task it_should_update_a_user(DatabaseEngine engine)
        {
            // Arrange
            await using var container = new DatabaseTestContainerBuilder().Build(engine);
            var configuration = new ConfigurationBuilder().For(container).Build(engine);
            var manager       = new DatabaseManagerBuilder().With(configuration).Build(engine);
            var runner        = new MigratorRunnerBuilder().With(configuration).Build(engine);
            var sut           = new UserRepositoryBuilder().With(configuration).Build(engine);

            await container.StartAsync();

            await manager.EnsureDatabaseCreated();

            runner.MigrateUp();

            const string username = "******";
            var          user     = new UserBuilder().WithUserName(username).Build();
            await sut.CreateAsync(user);

            // Act
            var persistedUser = await sut.FindByNameAsync(username);

            persistedUser !.FirstName          = "NewFirstName";
            persistedUser.LastName             = "NewLastName";
            persistedUser.PhoneNumber          = "NewPhoneNumber";
            persistedUser.SecurityStamp        = Guid.NewGuid().ToString();
            persistedUser.PhoneNumberConfirmed = true;
            persistedUser.EmailConfirmed       = true;
            persistedUser.TwoFactorEnabled     = true;
            persistedUser.LockoutEnd           = new DateTimeOffset(DateTime.Today);
            persistedUser.LockoutEnabled       = true;
            persistedUser.AccessFailedCount    = 10;

            await sut.UpdateAsync(persistedUser);

            // Assert
            var result = await sut.FindByNameAsync(username);

            result.Should().BeEquivalentTo(persistedUser, opt => opt.Excluding(x => x.Id));
        }