public void Success_WhenCandidateHasValidToken_ReturnsTrue() { var candidate = new Candidate() { MagicLinkTokenExpiresAt = DateTime.UtcNow.AddMinutes(1) }; var result = new CandidateMagicLinkExchangeResult(candidate); result.Success.Should().BeTrue(); }
public void Status_WhenCandidateHasAlreadyExchangedToken_ReturnsAlreadyExchanged() { var candidate = new Candidate() { MagicLinkTokenStatusId = (int)Candidate.MagicLinkTokenStatus.Exchanged }; var result = new CandidateMagicLinkExchangeResult(candidate); result.Status.Should().Be(ExchangeStatus.AlreadyExchanged); }
public void Status_WhenCandidateHasExpiredToken_ReturnsExpired() { var candidate = new Candidate() { MagicLinkTokenExpiresAt = DateTime.UtcNow.AddMinutes(-1) }; var result = new CandidateMagicLinkExchangeResult(candidate); result.Status.Should().Be(ExchangeStatus.Expired); }
public void ExchangeMagicLinkTokenForMember_InvalidToken_RespondsWithUnauthorized() { var token = Guid.NewGuid().ToString(); var result = new CandidateMagicLinkExchangeResult(null); _mockMagicLinkTokenService.Setup(m => m.Exchange(token)).Returns(result); var response = _controller.ExchangeMagicLinkTokenForMember(token); var unauthorized = response.Should().BeOfType <UnauthorizedObjectResult>().Subject; unauthorized.Value.Should().BeEquivalentTo(result); }
public void ExchangeMagicLinkTokenForMember_ValidToken_RespondsWithMailingListAddMember() { var candidate = new Candidate { Id = Guid.NewGuid(), MagicLinkTokenExpiresAt = DateTime.UtcNow.AddMinutes(1) }; var result = new CandidateMagicLinkExchangeResult(candidate); _mockMagicLinkTokenService.Setup(m => m.Exchange(candidate.MagicLinkToken)).Returns(result); var response = _controller.ExchangeMagicLinkTokenForMember(candidate.MagicLinkToken); var ok = response.Should().BeOfType <OkObjectResult>().Subject; var responseModel = ok.Value as MailingListAddMember; responseModel.CandidateId.Should().Be(candidate.Id); }
public void ExchangeMagicLinkTokenForMember_ValidToken_UpdatesTokenAsExchanged() { var candidate = new Candidate { Id = Guid.NewGuid(), MagicLinkTokenExpiresAt = DateTime.UtcNow.AddMinutes(1) }; var result = new CandidateMagicLinkExchangeResult(candidate); _mockMagicLinkTokenService.Setup(m => m.Exchange(candidate.MagicLinkToken)).Returns(result); var response = _controller.ExchangeMagicLinkTokenForMember(candidate.MagicLinkToken); _mockJobClient.Verify(x => x.Create( It.Is <Job>(job => job.Type == typeof(UpsertCandidateJob) && job.Method.Name == "Run" && IsMatch(candidate, (string)job.Args[0])), It.IsAny <EnqueuedState>())); }
public CandidateMagicLinkExchangeResult Exchange(string token) { var matchingCandidates = _crm.MatchCandidates(token); // Return null if there are no matches and also in the very // unlikely case a token has been duplicated. if (matchingCandidates.Count() != 1) { return(new CandidateMagicLinkExchangeResult(null)); } var candidate = matchingCandidates.First(); var result = new CandidateMagicLinkExchangeResult(candidate); candidate.MagicLinkTokenStatusId = (int)Candidate.MagicLinkTokenStatus.Exchanged; return(result); }
public void Success_WhenCandidateHasInvalidToken_ReturnsFalse() { var result = new CandidateMagicLinkExchangeResult(null); result.Success.Should().BeFalse(); }
public void Status_WithNullCandidate_ReturnsInvalid() { var result = new CandidateMagicLinkExchangeResult(null); result.Status.Should().Be(ExchangeStatus.Invalid); }