public async Task If_user_has_confirmed_email_that_cannot_be_correlated_to_recruitment_form_then_factory_creates_ClaimsPrincipal_without_Candidate_claim() { // Arrange var clock = NodaTime.SystemClock.Instance; var user = new ApplicationUser() { Email = "*****@*****.**", EmailConfirmed = true }; var userClaimPrincipalFactory = Mock.Of <IUserClaimsPrincipalFactory <ApplicationUser> >(f => f.CreateAsync(It.IsAny <ApplicationUser>()) == Task.FromResult(new ClaimsPrincipal())); var enrollmentRepo = Mock.Of <IEnrollmentRepository>( handler => handler.Query() == Array.Empty <EnrollmentReadModel>().AsQueryable(), MockBehavior.Strict ); var campaignRepo = Mock.Of <ICampaignRepository>(MockBehavior.Strict); var editionRepo = Mock.Of <IEditionProvider>(MockBehavior.Strict); var principalFactory = new CandidateUserClaimPrincipalFactory(userClaimPrincipalFactory, enrollmentRepo, campaignRepo, editionRepo, clock); // Act var principal = await principalFactory.CreateAsync(user); //Assert Assert.DoesNotContain(principal.Claims, claim => claim.Type == SharedKernel.ClaimTypes.Candidate); }
public async Task If_user_has_confirmed_email_that_can_be_correlated_to_recruitment_form_from_current_edition_then_factory_creates_ClaimsPrincipal_with_Candidate_claim() { // Arrange var clock = NodaTime.SystemClock.Instance; var enrollmentId = EnrollmentAggregate.EnrollmentId.New; var user = new ApplicationUser() { Email = "*****@*****.**", EmailConfirmed = true }; var userClaimPrincipalFactory = Mock.Of <IUserClaimsPrincipalFactory <ApplicationUser> >(f => f.CreateAsync(It.IsAny <ApplicationUser>()) == Task.FromResult(new ClaimsPrincipal())); var enrollment = new EnrollmentReadModel() { Id = enrollmentId, Email = EmailAddress.Parse("*****@*****.**"), Campaign = new EnrollmentReadModel.CampaignSummary() { Id = 1 } }; var enrollmentRepo = Mock.Of <IEnrollmentRepository>( handler => handler.Query() == new[] { enrollment }.AsQueryable(), MockBehavior.Strict ); var campaign = new Campaign( startDateTime: clock.GetOffsetDateTime().Minus(NodaTime.Duration.FromDays(7)), endDateTime: clock.GetOffsetDateTime().Plus(NodaTime.Duration.FromDays(7)), editionId: 1); var campaignRepo = Mock.Of <ICampaignRepository>(repo => repo.GetById(1) == Task.FromResult(campaign), MockBehavior.Strict); var edition = new EditionDetails() { StartDateTime = clock.GetCurrentInstant().Minus(NodaTime.Duration.FromDays(30)), EndDateTime = clock.GetCurrentInstant().Plus(NodaTime.Duration.FromDays(30)) }; var editionRepo = Mock.Of <IEditionProvider>(provider => provider.GetEdition(1) == Task.FromResult(Maybe <EditionDetails> .From(edition)), MockBehavior.Strict); var principalFactory = new CandidateUserClaimPrincipalFactory(userClaimPrincipalFactory, enrollmentRepo, campaignRepo, editionRepo, clock); // Act var principal = await principalFactory.CreateAsync(user); //Assert var claim = Assert.Single(principal.Claims, claim => claim.Type == SharedKernel.ClaimTypes.Candidate); Assert.Equal(enrollmentId.GetGuid().ToString(), claim.Value); }
public async Task If_user_does_not_have_confirmed_email_then_factory_creates_ClaimsPrincipal_without_Candidate_claim() { // Arrange var clock = NodaTime.SystemClock.Instance; var user = new ApplicationUser() { Email = "*****@*****.**", EmailConfirmed = false }; var userClaimPrincipalFactory = Mock.Of <IUserClaimsPrincipalFactory <ApplicationUser> >(f => f.CreateAsync(It.IsAny <ApplicationUser>()) == Task.FromResult(new ClaimsPrincipal())); var enrollmentRepo = Mock.Of <IEnrollmentRepository>(MockBehavior.Strict); var campaignRepo = Mock.Of <ICampaignRepository>(MockBehavior.Strict); var editionRepo = Mock.Of <IEditionProvider>(MockBehavior.Strict); var principalFactory = new CandidateUserClaimPrincipalFactory(userClaimPrincipalFactory, enrollmentRepo, campaignRepo, editionRepo, clock); // Act var principal = await principalFactory.CreateAsync(user); //Assert Assert.DoesNotContain(principal.Claims, claim => claim.Type == SharedKernel.ClaimTypes.Candidate); }