public async Task <int> CreateUserAccountCode(UserAccountCodeModel model) { try { if (model.Code.Length <= 50) { var storedProcedure = "dbo.UserAccountCode_Create"; DynamicParameters p = new DynamicParameters(); p.Add("Code", model.Code); p.Add("ExpirationTime", model.ExpirationTime); p.Add("UserAccountId", model.UserAccountId); p.Add("Id", DbType.Int32, direction: ParameterDirection.Output); return(await _dataGateway.Execute(storedProcedure, p, _connectionString.SqlConnectionString)); } else { return(0); } } catch (SqlCustomException e) { throw new SqlCustomException(e.Message, e.InnerException); } }
public async Task CreateUserAccountCode_UserAccountIdDoesntExist_DataIsAccurate (int expectedId, string expectedCode, string expectedExpirationTime, int expectedAccountId, string username, string password, string salt, string emailAddress, string accountType, string accountStatus, string creationDate, string updationDate) { // Arrange IUserAccountRepository userAccountRepository = new UserAccountRepository(new SQLServerGateway(), new ConnectionStringData()); IUserAccountCodeRepository userAccountCodeRepository = new UserAccountCodeRepository(new SQLServerGateway(), new ConnectionStringData()); UserAccountModel userAccountModel = new UserAccountModel(); userAccountModel.Id = expectedAccountId; userAccountModel.Username = username; userAccountModel.Password = password; userAccountModel.Salt = salt; userAccountModel.EmailAddress = emailAddress; userAccountModel.AccountType = accountType; userAccountModel.AccountStatus = accountStatus; userAccountModel.CreationDate = DateTimeOffset.Parse(creationDate); userAccountModel.UpdationDate = DateTimeOffset.Parse(updationDate); UserAccountCodeModel userAccountCodeModel = new UserAccountCodeModel(); userAccountCodeModel.Id = expectedId; userAccountCodeModel.Code = expectedCode; userAccountCodeModel.ExpirationTime = DateTimeOffset.Parse(expectedExpirationTime); userAccountCodeModel.UserAccountId = expectedAccountId; // Act await userAccountRepository.CreateAccount(userAccountModel); await userAccountCodeRepository.CreateUserAccountCode(userAccountCodeModel); var actualUserAccountCode = await userAccountCodeRepository.GetUserAccountCodeById(expectedId); // Assert Assert.IsTrue ( actualUserAccountCode.Id == expectedId && actualUserAccountCode.Code == expectedCode && actualUserAccountCode.ExpirationTime == DateTimeOffset.Parse(expectedExpirationTime) && actualUserAccountCode.UserAccountId == expectedAccountId ); }
public async Task CreateUserAccountCode_ExecutionTimeLessThan400Milliseconds (int id, string code, string expirationTime, int accountId, string username, string password, string salt, string emailAddress, string accountType, string accountStatus, string creationDate, string updationDate, long expectedMaxExecutionTime) { // Arrange IUserAccountCodeRepository userAccountCodeRepository = new UserAccountCodeRepository(new SQLServerGateway(), new ConnectionStringData()); IUserAccountRepository userAccountRepository = new UserAccountRepository(new SQLServerGateway(), new ConnectionStringData()); UserAccountModel userAccountModel = new UserAccountModel(); userAccountModel.Id = accountId; userAccountModel.Username = username; userAccountModel.Password = password; userAccountModel.Salt = salt; userAccountModel.EmailAddress = emailAddress; userAccountModel.AccountType = accountType; userAccountModel.AccountStatus = accountStatus; userAccountModel.CreationDate = DateTimeOffset.Parse(creationDate); userAccountModel.UpdationDate = DateTimeOffset.Parse(updationDate); UserAccountCodeModel userAccountCodeModel = new UserAccountCodeModel(); await userAccountRepository.CreateAccount(userAccountModel); userAccountCodeModel.Id = id; userAccountCodeModel.Code = code; userAccountCodeModel.ExpirationTime = DateTimeOffset.Parse(expirationTime); userAccountCodeModel.UserAccountId = accountId; // Act var timer = Stopwatch.StartNew(); await userAccountCodeRepository.CreateUserAccountCode(userAccountCodeModel); timer.Stop(); var actualExecutionTime = timer.ElapsedMilliseconds; Debug.WriteLine("Actual Execution Time: " + actualExecutionTime); // Assert Assert.IsTrue(actualExecutionTime <= expectedMaxExecutionTime); }
public async Task GetUserAccountCodeByAccountId_AccountIdNotFound_ReturnNull(int accountId) { // Arrange // Setting up each dependency of LoginAttemptsService as a Mock Mock <IUserAccountCodeRepository> mockUserAccountCodeRepository = new Mock <IUserAccountCodeRepository>(); UserAccountCodeModel userAccountCodeModel = null; mockUserAccountCodeRepository.Setup(x => x.GetUserAccountCodeByAccountId(accountId)).Returns (Task.FromResult(userAccountCodeModel)); IUserAccountCodeService userAccountCodeService = new UserAccountCodeService(mockUserAccountCodeRepository.Object); // Act var actualResult = await userAccountCodeService.GetUserAccountCodeByAccountId(accountId); // Assert Assert.IsNull(actualResult); }
public async Task GetUserAccountCodeByAccountId_AccountIdFound_ReturnBusinessUserAccountCodeModel(int id, string code, string expirationTime, int accountId) { // Arrange // Setting up each dependency of LoginAttemptsService as a Mock Mock <IUserAccountCodeRepository> mockUserAccountCodeRepository = new Mock <IUserAccountCodeRepository>(); var userAccountCodeModel = new UserAccountCodeModel(); userAccountCodeModel.Id = id; userAccountCodeModel.Code = code; userAccountCodeModel.ExpirationTime = DateTimeOffset.Parse(expirationTime); userAccountCodeModel.UserAccountId = accountId; var expectedResult = new BusinessUserAccountCodeModel(); expectedResult.Id = id; expectedResult.Code = code; expectedResult.ExpirationTime = DateTimeOffset.Parse(expirationTime); expectedResult.UserAccountId = accountId; mockUserAccountCodeRepository.Setup(x => x.GetUserAccountCodeByAccountId(accountId)).Returns (Task.FromResult(userAccountCodeModel)); IUserAccountCodeService userAccountCodeService = new UserAccountCodeService(mockUserAccountCodeRepository.Object); // Act var actualResult = await userAccountCodeService.GetUserAccountCodeByAccountId(accountId); // Assert Assert.IsTrue ( actualResult.Id == expectedResult.Id && actualResult.Code == expectedResult.Code && actualResult.ExpirationTime == expectedResult.ExpirationTime && actualResult.UserAccountId == expectedResult.UserAccountId ); }
public async Task Init() { await TestCleaner.CleanDatabase(); var numTestRows = 20; IDataGateway dataGateway = new SQLServerGateway(); IConnectionStringData connectionString = new ConnectionStringData(); IUserAccountRepository userAccountRepository = new UserAccountRepository(dataGateway, connectionString); IUserAccountCodeRepository userAccountCodeRepository = new UserAccountCodeRepository(dataGateway, connectionString); for (int i = 1; i <= numTestRows; ++i) { UserAccountModel userAccountModel = new UserAccountModel(); userAccountModel.Id = i; userAccountModel.Username = "******" + i; userAccountModel.Password = "******" + i; userAccountModel.Salt = "TestSalt" + i; userAccountModel.EmailAddress = "TestEmailAddress" + i; userAccountModel.AccountType = "TestAccountType" + i; userAccountModel.AccountStatus = "TestAccountStatus" + i; userAccountModel.CreationDate = DateTimeOffset.UtcNow; userAccountModel.UpdationDate = DateTimeOffset.UtcNow; await userAccountRepository.CreateAccount(userAccountModel); UserAccountCodeModel userAccountCodeModel = new UserAccountCodeModel(); userAccountCodeModel.Id = i; userAccountCodeModel.Code = "ABC" + i; userAccountCodeModel.ExpirationTime = DateTimeOffset.Parse("3/28/2007 7:13:50 PM +00:00"); userAccountCodeModel.UserAccountId = i; await userAccountCodeRepository.CreateUserAccountCode(userAccountCodeModel); } }
public async Task <bool> AddCode(string code, DateTimeOffset expirationTime, int accountId) { try { UserAccountCodeModel userAccountCodeModel = new UserAccountCodeModel(); userAccountCodeModel.Code = code; userAccountCodeModel.ExpirationTime = expirationTime; userAccountCodeModel.UserAccountId = accountId; var changesMade = await _userAccountCodeRepository.CreateUserAccountCode(userAccountCodeModel); if (changesMade == 0) { return(false); } return(true); } catch (SqlCustomException e) { throw new SqlCustomException(e.Message, e.InnerException); } }