Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
        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
            );
        }
Esempio n. 3
0
        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
            );
        }
Esempio n. 6
0
        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);
            }
        }
Esempio n. 7
0
        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);
            }
        }