public void generate_should_not_return_duplicate_values() { var mockRepository = new MockRepository(MockBehavior.Default); var randomNumberGeneratorMock = mockRepository.Create <IRandomNumberGenerator>(); var pinCodeValidatorMock = mockRepository.Create <IPinCodeValidator>(); // because this is an integration test, we actually use an implementation of the pincodecollection Func <IPinCodeCollection> pinCodeCollectionFactory = () => new PinCodeCollection(); Func <int, int, IRandomNumberGenerator> randomNumberGeneratorFactory = (min, max) => randomNumberGeneratorMock.Object; pinCodeValidatorMock.Setup(v => v.IsPinCodeValid(It.IsAny <PinCode>())).Returns(true); // make sure we always return "5", so a pincode will be "5555" randomNumberGeneratorMock.Setup(r => r.Next()).Returns(5); var pinCodeGenerator = new PinCodeGenerator(randomNumberGeneratorFactory, pinCodeValidatorMock.Object, pinCodeCollectionFactory); // lets generate 2 pincodes, which are guaranteed to be duplicates // TODO: This will loop forever, we need to break out of it, find a better way bool completed = false; var generateTask = new Task(() => { var pinCodeCollection = pinCodeGenerator.Generate(2); completed = true; }); generateTask.Start(); generateTask.Wait(TimeSpan.FromSeconds(5)); completed.Should().BeFalse(); }
public ActionResult Groups(IEnumerable <string> year, IEnumerable <string> grade, IEnumerable <string> counselor, IEnumerable <string> groupname) { if (AuthTokens[0] == "demo") { ViewBag.DemoNextStep = NextStep("!"); return(View()); } if (year != null && grade != null && counselor != null && groupname != null) { if (year.Count() == grade.Count() && year.Count() == counselor.Count() && year.Count() == groupname.Count()) { AdminAccountClient aac = new AdminAccountClient(); AccessCodeClient acc = new AccessCodeClient(); AdminAccount admin = aac.GetByPartitionAndRowKey("admin", AuthTokens[1].ToLower()); string school = admin.School; for (var i = 0; i < year.Count(); i++) { acc.AddNewItem(new AccessCode { RowKey = ShortGuidGenerator.NewGuid(), Code = PinCodeGenerator.NewPin(), Year = year.ElementAt(i), Grade = grade.ElementAt(i), Counselor = counselor.ElementAt(i), GroupName = groupname.ElementAt(i), School = school }); } ViewBag.CurrentYear = AccessCodeClient.CurrentGradYear(); return(View()); } } ViewBag.ErrorMessage = "error"; ViewBag.CurrentYear = AccessCodeClient.CurrentGradYear(); return(View()); }
public ActionResult Index(IEnumerable <string> year, IEnumerable <string> grade, IEnumerable <string> groupname) { if (AuthTokens[0] == "demo") { return(View()); } if (year != null && grade != null && groupname != null) { if (year.Count() == grade.Count() && year.Count() == groupname.Count()) { string counselor = AuthTokens[1].ToLower(); CounselorAccountClient cac = new CounselorAccountClient(); AccessCodeClient acc = new AccessCodeClient(); CounselorAccount account = cac.GetByPartitionAndRowKey("counselor", counselor); string school = account.School; for (var i = 0; i < year.Count(); i++) { acc.AddNewItem(new AccessCode { RowKey = ShortGuidGenerator.NewGuid(), Code = PinCodeGenerator.NewPin(), Year = year.ElementAt(i), Grade = grade.ElementAt(i), Counselor = counselor, GroupName = groupname.ElementAt(i), School = school }); } return(RedirectToAction("Index")); } } TempData["error"] = true; return(RedirectToAction("Index")); }
public async Task <string> GeneratePinCode(IUserAccount user, string cellular, string email) { IAccessToken accessToken = await GenerateToken(user); PasswordBuilder pb = new PasswordBuilder(); PinCodeGenerator gen = new PinCodeGenerator(); string pinCode = gen.GenerateNextPinCode(); await m_session_repository.ResetPinCode(accessToken.Guid, pb.MakeGuid(cellular, email, pinCode), pb.MakePasswordHash(cellular, email, pinCode)); return(pinCode); }
// private functions =============================================================================================================================================== private string getUniquePinCode(string school) { string pincode = PinCodeGenerator.NewPin(); AccessCodeClient acc = new AccessCodeClient(); AccessCode code = acc.GetBySchoolAndPinCode(school, pincode); //AssessmentGroupClient agc = new AssessmentGroupClient(); //AssessmentGroup groupEntry = agc.GetByPartitionAndRowKey(school, pincode); while (code != null) { pincode = PinCodeGenerator.NewPin(); code = acc.GetBySchoolAndPinCode(school, pincode); } return(pincode); }
public void generate_should_generate_pin_codes() { var mockRepository = new MockRepository(MockBehavior.Default); var randomNumberGeneratorMock = mockRepository.Create <IRandomNumberGenerator>(); var pinCodeValidatorMock = mockRepository.Create <IPinCodeValidator>(); var pinCodeCollectionMock = mockRepository.Create <IPinCodeCollection>(); Func <int, int, IRandomNumberGenerator> randomNumberGeneratorFactory = (min, max) => randomNumberGeneratorMock.Object; pinCodeCollectionMock.Setup(p => p.Add(It.IsAny <PinCode>())).Returns(true); pinCodeValidatorMock.Setup(v => v.IsPinCodeValid(It.IsAny <PinCode>())).Returns(true); var pinCodeGenerator = new PinCodeGenerator(randomNumberGeneratorFactory, pinCodeValidatorMock.Object, () => pinCodeCollectionMock.Object); var pinCodeCollection = pinCodeGenerator.Generate(10); pinCodeCollectionMock.Verify(p => p.Add(It.IsAny <PinCode>()), Times.Exactly(10)); }