コード例 #1
0
        public async Task When_ValidPasswordProvided_Then_PasswordShouldBeUpdated(CreateCustomerUserModel model)
        {
            var client = _webbApplicationFactory.CreateClient();
            await Utils.CreateCustomer(client, model);

            await Utils.ActivateUserAsync(client, model.Email);

            //Login
            var extra = new Dictionary <string, string>
            {
                { "deviceId", "test-device1" },
            };
            var tokenResponse = await Utils.RequestPasswordTokenAsync(client, model.Email, model.Password, extra);

            tokenResponse.IsError.Should().BeFalse();

            // Change Password
            var changePasswordRequest = new ChangeCustomerPasswordModel()
            {
                CurrentPassword = model.Password,
                NewPassword     = "******",
            };

            client.SetBearerToken(tokenResponse.AccessToken);
            var response = await client.PostAsync(
                "/api/v1/users/change-password",
                changePasswordRequest.ToJsonContent());

            response.EnsureSuccessStatusCode();

            //Login Again
            tokenResponse = await Utils.RequestPasswordTokenAsync(client, model.Email, changePasswordRequest.NewPassword, extra);

            tokenResponse.IsError.Should().BeFalse();
            tokenResponse.AccessToken.Should().NotBeNullOrEmpty();
        }
コード例 #2
0
        public async Task AllUserActivitiesShouldBeLogged(
            CreateCustomerUserModel createCustomerUserModel,
            string newPassword,
            UpdateUserModel model)
        {
            createCustomerUserModel.MaxAllowedDeviceCount = 1;
            var client = _webbApplicationFactory.Server.CreateClient();

            //Create User
            await Utils.CreateCustomer(client, createCustomerUserModel);

            //Activate User
            await Utils.ActivateUserAsync(client, createCustomerUserModel.Email);

            //InvalidUserNamePassword
            var extra = new Dictionary <string, string>
            {
                { "deviceId", "test-device" },
            };
            await Utils.RequestPasswordTokenAsync(client, createCustomerUserModel.Email, "wrongpass", extra);

            //SuccessfulLogin
            await Utils.RequestPasswordTokenAsync(client, createCustomerUserModel.Email, createCustomerUserModel.Password, extra);

            //InvalidLoginDevice
            extra["deviceId"] = "new-device";
            await Utils.RequestPasswordTokenAsync(client, createCustomerUserModel.Email, createCustomerUserModel.Password, extra);

            //Change Password
            extra["deviceId"] = "test-device";
            var tokenResponse = await Utils.RequestPasswordTokenAsync(client, createCustomerUserModel.Email, createCustomerUserModel.Password, extra);

            tokenResponse.IsError.Should().BeFalse();

            var changePasswordRequest = new ChangeCustomerPasswordModel()
            {
                CurrentPassword = createCustomerUserModel.Password,
                NewPassword     = newPassword,
            };

            client.SetBearerToken(tokenResponse.AccessToken);
            var response = await client.PostAsync(
                "/api/v1/users/change-password",
                changePasswordRequest.ToJsonContent());

            response.EnsureSuccessStatusCode();

            model.UserId = createCustomerUserModel.Id;
            await Utils.SetPrivateClientBearerTokenAsync(client);

            response = await client.PostAsync("/api/v1/users/update", model.ToJsonContent());

            response.EnsureSuccessStatusCode();

            //Deactivate User
            await Utils.DeactivateUserAsync(client, model.Email);

            var dbContextFactory = _webbApplicationFactory.Services.GetService(typeof(ApplicationDbContextFactory))
                                   as ApplicationDbContextFactory;

            //Assert
            await using var dbContext = dbContextFactory.Create();
            var logs = await dbContext.ActivityLogs
                       .Where(a => a.UserId == createCustomerUserModel.Id.ToString())
                       .ToListAsync();

            logs.Should().Contain(l => l.Type == ActivityLogType.UserCreated);
            logs.Should().Contain(l => l.Type == ActivityLogType.UserActivated);
            logs.Should().Contain(l => l.Type == ActivityLogType.InvalidUsernameOrPassword);
            logs.Should().Contain(l => l.Type == ActivityLogType.SuccessfulLogin);
            logs.Should().Contain(l => l.Type == ActivityLogType.InvalidLoginDeviceId);
            logs.Should().Contain(l => l.Type == ActivityLogType.PasswordChanged);
            logs.Should().Contain(l => l.Type == ActivityLogType.UserUpdated);
            logs.Should().Contain(l => l.Type == ActivityLogType.UserDeActivated);
        }