public async Task Generate_Reset_Identifier_If_The_Number_Of_Attempts_Is_Not_Exceeded()
        {
            // arrange

            var expectedResult = (identifier : ResetPasswordIdentifier, TimeSpan.Zero);

            _resetIdentifierServiceMock.Setup(o => o.GenerateAsync(It.IsAny <string>()))
            .Returns((string key) => Task.FromResult(expectedResult));

            // act

            var actualResult = await _service.GenerateResetIdentifierAsync(Guid.NewGuid().ToString());

            // assert

            Assert.Equal(expectedResult.identifier, actualResult);
        }
        public async Task <PasswordResetResponseModel> GenerateResetIdentifierAsync(
            [Required][FromQuery] string adminId)
        {
            string identifier;

            try
            {
                identifier = await _adminCredentialsService.GenerateResetIdentifierAsync(adminId);
            }
            catch (IdentifierRequestsExceededException)
            {
                return(new PasswordResetResponseModel {
                    ErrorCode = PasswordResetError.ReachedMaximumRequestForPeriod
                });
            }

            return(new PasswordResetResponseModel {
                Identifier = identifier, ErrorCode = PasswordResetError.None
            });
        }